export * from './address' ; export * from './amount' ; export * from './bankAccount' ; export * from './card' ; export * from './disableRequest' ; export * from './disableResult' ; export * from './name' ; export * from './notifyShopperRequest' ; export * from './notifyShopperResult' ; export * from './recurring' ; export * from './recurringDetail' ; export * from './recurringDetailsRequest' ; export * from './recurringDetailsResult' ; export * from './scheduleAccountUpdaterRequest' ; export * from './scheduleAccountUpdaterResult' ; export * from './serviceError' ; import * as fs from 'fs' ; import { Address } from './address' ; import { Amount } from './amount' ; import { BankAccount } from './bankAccount' ; import { Card } from './card' ; import { DisableRequest } from './disableRequest' ; import { DisableResult } from './disableResult' ; import { Name } from './name' ; import { NotifyShopperRequest } from './notifyShopperRequest' ; import { NotifyShopperResult } from './notifyShopperResult' ; import { Recurring } from './recurring' ; import { RecurringDetail } from './recurringDetail' ; import { RecurringDetailsRequest } from './recurringDetailsRequest' ; import { RecurringDetailsResult } from './recurringDetailsResult' ; import { ScheduleAccountUpdaterRequest } from './scheduleAccountUpdaterRequest' ; import { ScheduleAccountUpdaterResult } from './scheduleAccountUpdaterResult' ; import { ServiceError } from './serviceError' ; export interface RequestDetailedFile { value : Buffer ; options ? : { filename ? : string ; contentType ? : string ; } ; } export type RequestFile = string | Buffer | fs . ReadStream | RequestDetailedFile ; let primitives = [ "string" , "boolean" , "double" , "integer" , "long" , "float" , "number" , "any" ] ; let enumsMap = { "Recurring.ContractEnum" : Recurring . ContractEnum , "Recurring.TokenServiceEnum" : Recurring . TokenServiceEnum , } ; let typeMap = { "Address" : Address , "Amount" : Amount , "BankAccount" : BankAccount , "Card" : Card , "DisableRequest" : DisableRequest , "DisableResult" : DisableResult , "Name" : Name , "NotifyShopperRequest" : NotifyShopperRequest , "NotifyShopperResult" : NotifyShopperResult , "Recurring" : Recurring , "RecurringDetail" : RecurringDetail , "RecurringDetailsRequest" : RecurringDetailsRequest , "RecurringDetailsResult" : RecurringDetailsResult , "ScheduleAccountUpdaterRequest" : ScheduleAccountUpdaterRequest , "ScheduleAccountUpdaterResult" : ScheduleAccountUpdaterResult , "ServiceError" : ServiceError , } ; export class ObjectSerializer { public static findCorrectType ( data , expectedType ) { if ( data == undefined ) { return expectedType ; } else if ( primitives . indexOf ( expectedType . toLowerCase ( ) ) !== - 1 ) { return expectedType ; } else if ( expectedType === "Date" ) { return expectedType ; } else { if ( enumsMap [ expectedType ] ) { return expectedType ; } if ( ! typeMap [ expectedType ] ) { return expectedType ; } let discriminatorProperty = typeMap [ expectedType ] . discriminator ; if ( discriminatorProperty == null ) { return expectedType ; } else { if ( data [ discriminatorProperty ] ) { var discriminatorType = data [ discriminatorProperty ] ; if ( typeMap [ discriminatorType ] ) { return discriminatorType ; } else { return expectedType ; } } else { return expectedType ; } } } } public static serialize ( data , type ) { if ( data == undefined ) { return data ; } else if ( primitives . indexOf ( type . toLowerCase ( ) ) !== - 1 ) { return data ; } else if ( type . lastIndexOf ( "Array<" , 0 ) === 0 ) { let subType = type . replace ( "Array<" , "" ) ; subType = subType . substring ( 0 , subType . length - 1 ) ; let transformedData = [ ] ; for ( let index = 0 ; index < data . length ; index ++ ) { let datum = data [ index ] ; transformedData . push ( ObjectSerializer . serialize ( datum , subType ) ) ; } return transformedData ; } else if ( type === "Date" ) { return data . toISOString ( ) ; } else { if ( enumsMap [ type ] ) { return data ; } if ( ! typeMap [ type ] ) { return data ; } type = this . findCorrectType ( data , type ) ; let attributeTypes = typeMap [ type ] . getAttributeTypeMap ( ) ; let instance = { } ; for ( let index = 0 ; index < attributeTypes . length ; index ++ ) { let attributeType = attributeTypes [ index ] ; instance [ attributeType . baseName ] = ObjectSerializer . serialize ( data [ attributeType . name ] , attributeType . type ) ; } return instance ; } } public static deserialize ( data , type ) { type = ObjectSerializer . findCorrectType ( data , type ) ; if ( data == undefined ) { return data ; } else if ( primitives . indexOf ( type . toLowerCase ( ) ) !== - 1 ) { return data ; } else if ( type . lastIndexOf ( "Array<" , 0 ) === 0 ) { let subType = type . replace ( "Array<" , "" ) ; subType = subType . substring ( 0 , subType . length - 1 ) ; let transformedData = [ ] ; for ( let index = 0 ; index < data . length ; index ++ ) { let datum = data [ index ] ; transformedData . push ( ObjectSerializer . deserialize ( datum , subType ) ) ; } return transformedData ; } else if ( type === "Date" ) { return new Date ( data ) ; } else { if ( enumsMap [ type ] ) { return data ; } if ( ! typeMap [ type ] ) { return data ; } let instance = new typeMap [ type ] ( ) ; let attributeTypes = typeMap [ type ] . getAttributeTypeMap ( ) ; for ( let index = 0 ; index < attributeTypes . length ; index ++ ) { let attributeType = attributeTypes [ index ] ; instance [ attributeType . name ] = ObjectSerializer . deserialize ( data [ attributeType . baseName ] , attributeType . type ) ; } return instance ; } } }