import type { PaymentMethod } from './types.js'; export type DefaultSimpleConfig = { debug: boolean; defaultPaymentMethod?: PaymentMethod; elementId: string; fields: { form: { id: string; }; cardCVV?: { required?: boolean; }; cardHolderName?: { pattern?: string; placeholder?: string; maxLength?: number; value?: string; }; postalCode?: { inputmode?: InputMode; maxLength?: number; pattern?: string; placeholder?: string; size?: number; value?: string; }; email?: { required?: boolean; }; }; initRequestOrigin?: string; paymentMethods: PaymentMethod[]; redirectURL: URL | string; submitMode: ACHSubmitMode; sandbox: boolean; strictMode: boolean; }; export type InputMode = 'text' | 'numeric' | (string & NonNullable); type BaseConfig = { elementId: string; sandbox?: boolean; /** * It's only accepted in `sandbox` mode. Usually you don't need this. */ initRequestOrigin?: string; debug?: boolean; strictMode?: boolean; }; export type CardFieldsConfig = { /** * Configuration for the card CVV field. * @default undefined */ cardCVV?: { /** * Indicates if the CVV field is required. * @default true */ required?: boolean; }; /** * Configuration for the card holder name field. * @default undefined */ cardHolderName?: { /** * Placeholder text for the card holder name field. * @default undefined */ placeholder?: string; /** * Default value for the card holder name field. * @default undefined */ value?: string; }; /** * Configuration for the postal code field. * @default undefined */ postalCode?: { /** * Placeholder text for the postal code field. * @default undefined */ placeholder?: string; /** * Default value for the postal code field. * @default undefined */ value?: string; }; /** * Configuration for the email field. * @default undefined */ email?: { /** * Placeholder text for the email field. * @default undefined */ placeholder?: string; /** * Default value for the email field. * @default undefined */ value?: string; /** * Indicates if the email field is required. * @default true */ required?: boolean; }; }; export type ACHFieldsConfig = { /** * Configuration for the email field. * @default undefined */ email?: { /** * Placeholder text for the email field. * @default undefined */ placeholder?: string; /** * Default value for the email field. * @default undefined */ value?: string; /** * Indicates if the email field is required. * @default true */ required?: boolean; }; }; export type ACHSubmitMode = 'inner' | 'outer'; type CardConfig = { paymentMethods: ['card']; fields?: CardFieldsConfig; redirectURL?: never; defaultPaymentMethod?: never; submitMode?: never; }; type ACHConfig = { paymentMethods: ['ach']; redirectURL: URL | string; submitMode?: ACHSubmitMode; fields?: ACHFieldsConfig; defaultPaymentMethod?: never; }; type CardAndACHConfig = { paymentMethods: ['card', 'ach'] | ['ach', 'card']; redirectURL: URL | string; fields?: CardFieldsConfig & ACHFieldsConfig; defaultPaymentMethod?: PaymentMethod; submitMode?: ACHSubmitMode; }; export type SimpleConfig = BaseConfig & (CardConfig | ACHConfig | CardAndACHConfig); export {};