import 'reflect-metadata';
import { Type, Expose, Transform } from 'class-transformer';
import { PayInCreateOrderResponseData } from './PayInCreateOrderResponseData';
import { QueryBankListResponse } from './QueryBankListResponse';
import { QueryBankAccountResponse } from './QueryBankAccountResponse';
import { PayOutResponse } from './PayOutResponse';
import { BankDetailsList } from './BankDetailsList';
import { TransactionResultsResponse } from './TransactionResultsResponse';
import { MerchantBalanceResponse } from './MerchantBalanceResponse';
import { CreateVirtualAccountResponse } from './CreateVirtualAccountResponse';
import { QueryPayInResponse } from './QueryPayInResponse';
import { BulkQueryPayInResponse } from './BulkQueryPayInResponse';





type Datatypes = PayInCreateOrderResponseData | QueryBankAccountResponse | PayOutResponse | BankDetailsList | TransactionResultsResponse
 | MerchantBalanceResponse | CreateVirtualAccountResponse | QueryPayInResponse | BulkQueryPayInResponse;

export class PayInCreateOrderResponse {


@Expose()
  @Type(() => {return PayInCreateOrderResponseData || QueryBankAccountResponse || PayOutResponse || TransactionResultsResponse || MerchantBalanceResponse || CreateVirtualAccountResponse || QueryPayInResponse || BulkQueryPayInResponse} )
  @Type(() => {return TransactionResultsResponse || QueryBankAccountResponse || BankDetailsList} )
  data?: Datatypes;
  
  @Expose()
  @Transform(({ value }) => value ?? null)
  respMsg!: string | null;

  @Expose()
  @Transform(({ value }) => value ?? null)
  respCode!: string | null;

  @Expose()
  @Transform(({ value }) => value ?? null)
  status!: string | null;
  
}




    
