export type AccountKeyType = 'Msisdn' | 'Email' | 'CardNumber'; export interface AccountAccessRequest { accountKey: string; accountKeyType: AccountKeyType; userId: string; } export interface ValidationError { field: string; message: string; code: string; } interface ExceptionResponse { level: string; code: string; message: string; validationErrors: ValidationError[] | null; details: any[] | null; vposErrorCode: string | null; vposErrorMessage: string | null; retrievalReferenceNumber: string | null; thirdPartyApiResponse: any | null; acquirerIcaNumber: string | null; } export interface CardModel { cardAlias: string; cardState: 'Draft' | 'Activated' | 'Blocked' | 'Removed' | ''; maskedCardNumber: string; uniqueCardNumber: string; cardType: 'Credit' | 'Debit' | 'Unknown' | ''; productName: string; cardBin: string; cardIssuerIcaNumber: string; cardValidationType: 'OTP' | 'RTA' | '_3D' | 'Unknown' | ''; isDefaultCard: boolean; expireSoon: boolean; isExpired: boolean; isMasterpassMember: boolean; isCardCreditOrSupportedDebit?: boolean; isIssuerOtpSupported?: boolean; eftCode?: string | null; sourceMerchantId?: number; sourceMerchantName?: string | null; expireDate?: string | null; systemEntryDatetime?: string | null; } export interface CardResponse { accountKey: string; accountState: string; cards: CardModel[]; recipientCards?: any[] | null; } export interface LinkToMerchantResponse { retrievalReferenceNumber: string; responseCode: string; description: string; token: string; cardIssuerName: string; maskedPan: string; url3D?: string; } export interface AccountAccessErrorResponse { version: string | null; buildId: string; statusCode: number; message: string; correlationId: string | null; requestId: string | null; result: null; exception: ExceptionResponse; } export interface AccountAccessSuccessResponse { version: string | null; buildId: string; statusCode: number; message: string; correlationId: string | null; requestId: string | null; result: CardResponse; exception: null; } export interface LinkToMerchantSuccessResponse { version: string | null; buildId: string; statusCode: number; message: string; correlationId: string | null; requestId: string | null; result: LinkToMerchantResponse; exception: null; } export type AccountAccessResponse = | AccountAccessErrorResponse | AccountAccessSuccessResponse; export type LinkToMerchantResponseType = | AccountAccessErrorResponse | LinkToMerchantSuccessResponse; export interface RemoveCardRequest { accountKey: string; cardAlias: string; } export interface RemoveCardResponse { clientId: number; refNo: string; } export interface RemoveCardServiceResponse { version: string; buildId: string; statusCode: number; message: string; correlationId: string; requestId: string; result: RemoveCardResponse | null; exception: ExceptionResponse | null; } export interface AddCardRequest { requestReferenceNumber: string; accountKey: string; accountKeyType: AccountKeyType; cardNumber: string; cardHolderName: string; expiryDate: string; cvv: string; accountAliasName: string; userId: string; isMsisdnValidatedByMerchant: boolean; } export interface AddCard3DSecureResult { retrievalReferenceNumber: string; responseCode: string; description: string; token: string; url3d: string; url3dSuccess: string; url3dFail: string; } export interface AddCardSuccessResponse { version: string | null; buildId: string; statusCode: number; message: string; correlationId: string | null; requestId: string | null; result: CardResponse; exception: null; } export interface AddCard3DSecureResponse { version: string | null; buildId: string; statusCode: number; message: string; correlationId: string | null; requestId: string | null; result: AddCard3DSecureResult; exception: null; } export type AddCardResponse = | AccountAccessErrorResponse | AddCardSuccessResponse | AddCard3DSecureResponse;