type MalgaCreditCardFields = 'card-number' | 'card-holder-name' | 'card-expiration-date' | 'card-cvv'; interface MalgaInputFieldConfiguration { container: MalgaCreditCardFields; placeholder?: string; type?: string; needMask?: boolean; defaultValidation?: boolean; } interface MalgaInputFieldConfigurations { fields: { cardNumber: MalgaInputFieldConfiguration; cardHolderName: MalgaInputFieldConfiguration; cardCvv: MalgaInputFieldConfiguration; cardExpirationDate: MalgaInputFieldConfiguration; }; styles?: any; preventAutofill?: boolean; } interface MalgaOptions { config: MalgaInputFieldConfigurations; sandbox?: boolean; debug?: boolean; } interface MalgaConfigurations { apiKey: string; clientId: string; options: MalgaOptions; } type MalgaErrorType = 'api_error' | 'bad_request' | 'invalid_request_error' | 'card_declined'; type MalgaErrorDeclinedCode = 'card_not_supported' | 'expired_card' | 'fraud_confirmed' | 'fraud_suspect' | 'generic' | 'insufficient_funds' | 'invalid_amount' | 'invalid_cvv' | 'invalid_data' | 'invalid_installment' | 'invalid_merchant' | 'invalid_number' | 'invalid_pin' | 'issuer_not_available' | 'lost_card' | 'not_permitted' | 'pickup_card' | 'pin_try_exceeded' | 'restricted_card' | 'security_violation' | 'service_not_allowed' | 'stolen_card' | 'transaction_not_allowed' | 'try_again'; interface MalgaErrorResponse { error: { type: MalgaErrorType; code: number; message: string; details?: string | string[]; declinedCode?: MalgaErrorDeclinedCode; }; } interface MalgaPayloadResponse { tokenId: string; error: MalgaErrorResponse; } type EventTypeReturn = 'validity' | 'cardTypeChanged' | 'focus' | 'blur' | 'updateCardValues'; interface CreditCardReturn { niceType: string; type: string; patterns: (number | number[])[]; gaps: number[]; lengths: number[]; code: { name: string; size: number; }; } interface MalgaEventDataValidityErrorReturn { field: MalgaCreditCardFields; message: string; code: string; } interface MalgaEventDataValidityReturn { field: MalgaCreditCardFields; valid: boolean; error: MalgaEventDataValidityErrorReturn; empty: boolean; potentialValid: boolean; parentNode: Element | null; } interface MalgaEventDataCardTypeChangePayloadReturn { field: MalgaCreditCardFields; parentNode: Element; card?: CreditCardReturn; } interface MalgaEventDataFocusBlurReturn { field: MalgaCreditCardFields; parentNode: Element; } interface MalgaEventDataUpdateCardValuesReturn { field: MalgaCreditCardFields; value: string; debug?: boolean; sandbox?: boolean; } interface EventPayloadReturnObject { cardTypeChanged: MalgaEventDataCardTypeChangePayloadReturn; validity: MalgaEventDataValidityReturn; focus: MalgaEventDataFocusBlurReturn; blur: MalgaEventDataFocusBlurReturn; updateCardValues: MalgaEventDataUpdateCardValuesReturn; } declare class MalgaTokenization { private readonly configurations; constructor(configurations: MalgaConfigurations); tokenize(): Promise; /** * Configures the event provider and registers an event handler for the specified event type. * * This method allows you to react the specifics events emitted by the MalgaTokenization component. * * @param eventType - The type of event to be watched. Possible values are: * - 'validity': Triggered when the validity of the field data is changed (valid/invalid). * - 'cardTypeChanged': Triggered when the card type is detected or changed. * - 'focus': Triggered when a input field receives focus. * - 'blur': Triggered when a input field loses focus. * @param eventHandler - The event handler function. * @returns {void} */ on(eventType: T, eventHandler: (data: EventPayloadReturnObject[T]) => void): void; } export { MalgaTokenization };