import { MultiPaymentElements, MultiPaymentElement } from './element-group'; export interface MultiPaymentInitter { init( apiKey: string, pubKey: string, merchantIds: MerchantIds | undefined, permitToSendFingerprint: boolean, productionMode: boolean, ): MultiPayment; } export interface MultiPayment { init( apiKey: string, merchantIds: MerchantIds | undefined, permitToSendFingerprint: boolean, productionMode: boolean, ): unknown; getToken( legacyCardObj: LegacyCardObj, callback?: | GetTokenCallback | string | number | [] | { [key: string]: never } | null, ): Promise; getTokenThroughIframe( element: MultiPaymentElement, cardholderName?: string, options?: { [key: string]: string }, ): Promise; checkAvailability(): PaymentAvailability; createPaymentRequest( params: ApplePayPaymentRequestArguments | GooglePayPaymentRequestArguments, ): | ApplePayJS.ApplePayPaymentRequest | google.payments.api.PaymentDataRequest | undefined; fetchEncryptedTokenObject( paymentDataRequest: | google.payments.api.PaymentDataRequest | ApplePayJS.ApplePayPaymentRequest, ): Promise; createElements(): MultiPaymentElements; } export type GetTokenCallback = (response: LegacyTokenResponse) => void; type BaseRequest = { apiVersion: number; apiVersionMinor: number; }; export type PaymentAvailability = { applePayAvailable?: boolean | undefined; googlePayAvailable?: boolean | undefined; }; export type DisplayItem = { amount: string; label: string; }; export type MerchantIds = { applePayMerchantId?: string; googlePayMerchantId?: string; }; export type GooglePayPaymentRequestArguments = { merchantName: string; currency: string; country: string; total: string; }; export type ApplePayPaymentRequestArguments = { currency: string; country: string; total: DisplayItem; }; export type LegacyCardObj = { cardNo?: string | bigint | null; expire?: string | number | null | { [key: string]: never }; securityCode?: string | number | null; holderName?: string | number | null; tokenNumber?: string | number | null; }; export type LegacyTokenResponse = { resultCode: number; tokenObject?: LegacyTokenObj; }; export type LegacyTokenObj = { maskedCardNo: string; toBeExpiredAt: string; isSecurityCodeSet: boolean; token: string | Array; }; export type TokenResponse = TokenObj | ErrorResponse; export type TokenObj = { result: string; maskedCardNumber: string; tokenExpiryDate: string; isSecurityCodeSet: boolean; tokenList: Array; }; export type ErrorResponse = { result: string; errorList: ErrorInfoObj[]; }; export type ErrorInfoObj = { title?: string; field?: string; detail?: string; legacyCode: string; }; export type EncryptionParameters = { type: string; apiKey: string; keySpec?: string; signature?: string; }; export type GetTokenRequest = { createCount: string | null; encryptionParameters: EncryptionParameters; encryptedData: string; };