//#region src/constants.d.ts type Environment = 'sandbox' | 'production'; type ElementType = 'paymentMethod' | 'currencySelect'; //#endregion //#region src/element.d.ts declare class ClinkElement { readonly type: ElementType; private environment; private wrapper; private iframe; private mounted; constructor(type: ElementType, environment: string); mount(target: HTMLElement | string): void; unmount(): void; getIframe(): HTMLIFrameElement | null; } //#endregion //#region src/bridge-types.d.ts interface Product { name?: string; type: 'ONETIME' | 'SUBSCRIPTION'; imageUrl?: string; } interface Subscription { units?: number; recurring?: 'DAY' | 'WEEK' | 'MONTH' | 'QUARTER' | 'HALF_YEAR' | 'YEAR' | 'CUSTOM'; customDays?: number; isFreeTrial?: boolean; freeTrialDays?: number; freeTrialEndDate?: string; } interface MultiProduct { name: string; quantity: number; unitAmount: number; currency: string; imageUrl?: string; } interface PromotionCodeInfo { name: string; terms: string; discountAmount: number; currency: string; durationType: 'ONCE' | 'REPEATING' | 'FOREVER' | null; durationPeriods?: number; } interface TaxInfo { name?: string; rate?: string; amount: number | null; currency: string; } interface DueTodayAmountInfo { currency: string; subtotalAmount: number; dueTodayAmount: number; product: Product; multiProducts?: MultiProduct[]; subscription: Subscription; enablePromotionCode?: boolean; promotionCodeInfo?: PromotionCodeInfo; requiresTaxCalculation?: boolean; taxInfo?: TaxInfo; } //#endregion //#region src/types.d.ts type PublicEventType = 'submit-enabled' | 'submit-visible' | 'session-init-success' | 'session-success' | 'session-pending' | 'amount-change' | 'promo-code-error' | 'error'; type EventType = PublicEventType; interface EventDataMap { 'submit-enabled': boolean; 'submit-visible': boolean; 'session-init-success': undefined; 'session-success': undefined; 'session-pending': undefined; 'amount-change': { amount: DueTodayAmountInfo; }; 'promo-code-error': { message: string; }; error: { error: Error; }; } interface PresetOptions { locale?: 'de-DE' | 'en-US' | 'es-ES' | 'fr-FR' | 'ja-JP' | 'ko-KR' | 'pt-PT' | 'zh-CN'; theme?: 'light' | 'dark'; primaryColor?: string; radius?: { components?: number; card?: number; }; currencySelect?: { hideIfOneCurrency?: boolean; oneCurrencyStyle?: never; } | { oneCurrencyStyle?: Record; hideIfOneCurrency?: never; }; section?: { hideExpire?: boolean; hideError?: boolean; hideSkeleton?: boolean; hideSuccess?: boolean; hidePending?: boolean; }; } interface LoadClinkElementsOptions { publishKey: string; environment: Environment; sessionId: string; presetOptions?: PresetOptions; } type EventCallback = (data: EventDataMap[K]) => void; //#endregion //#region src/clink-elements.d.ts declare class ClinkElements { private sessionId; private environment; private presetOptions?; private locale; private hostedOrigin; private targetOrigin; private origin; private elements; private initializedElements; private eventEmitter; private controlEmitter; private dispatcher; private threeDsHandler; private qrcodeHandler; private destroyed; constructor(options: LoadClinkElementsOptions); on(event: K, callback: EventCallback): void; off(event: K, callback: EventCallback): void; submit(): void; setLocale(locale: 'de-DE' | 'en-US' | 'es-ES' | 'fr-FR' | 'ja-JP' | 'ko-KR' | 'pt-PT' | 'zh-CN'): void; setTheme(theme: 'light' | 'dark'): void; promoCodeChange(data: { type: 'apply'; code: string; } | { type: 'clear'; }): void; createElement(type: ElementType): ClinkElement; destroy(): void; private setupControlListeners; private sendSessionInitTo; private sendToAll; private sendToPaymentMethod; private build3dsFinishedData; private assertNotDestroyed; } //#endregion //#region src/exceptions.d.ts declare class SessionCompleteError extends Error { constructor(message: string); } declare class SessionExpiredError extends Error { constructor(message: string); } declare class SessionLoadError extends Error { constructor(message: string); } declare class PromoCodeError extends Error { constructor(message: string); } declare class SessionNotSupportedError extends Error { constructor(message: string); } declare class ClinkApiError extends Error { constructor(message: string); } //#endregion //#region src/index.d.ts declare function loadClinkElements(options: LoadClinkElementsOptions): Promise; //#endregion export { ClinkApiError, ClinkElement, ClinkElements, type DueTodayAmountInfo, type ElementType, type Environment, type EventCallback, type EventDataMap, type EventType, type LoadClinkElementsOptions, type MultiProduct, type PresetOptions, type Product, PromoCodeError, type PromotionCodeInfo, SessionCompleteError, SessionExpiredError, SessionLoadError, SessionNotSupportedError, type Subscription, type TaxInfo, loadClinkElements };