type ButtonCustomization = Partial<{ color: string; background: string; icon: Partial<{ color: string; }>; border: Border; }>; type Border = Partial<{ radius: string; color: string; width: string; style: string; }>; type Button = Partial<{ default: ButtonCustomization; hover: ButtonCustomization; active: ButtonCustomization; focus: ButtonCustomization; disabled: ButtonCustomization; }>; type ListItem = Button & Partial<{ selected: ButtonCustomization; }>; type InputCustomization = Partial<{ placeholder: { color: string; }; label: { color: string; }; icon: { color: string; }; border: Border; color: string; background: string; }>; type Input = Partial<{ default: InputCustomization; error: InputCustomization; disabled: InputCustomization; focus: InputCustomization; hover: InputCustomization; }>; type ThemeCustom = { default_color: string; button: Button; list_item: ListItem; input: Input; spinner: { color: string; }; illustration: { color: string; }; font: string; }; type Customization = Partial<{ appearance: Partial; merchant_logo_uri: string; }>; type Resource = { start: (override?: Partial) => void; unmount: () => void; }; type PaymentBaseConfig = { payment_id: string; resource_token: string; return_uri: string; }; type MandateBaseConfig = Omit & { mandate_id: string; }; type SDKExtraConfig = Partial<{ production: boolean; target: HTMLElement; language: string; signup: boolean; open_bank_in_new_tab: boolean; hide_navigation: boolean; max_wait_for_result: string; }>; type CallbacksAllowed = Partial<{ onLoad: () => void; onError: (error: unknown) => void; onAbort: (target?: HTMLElement) => void; onDone: (target?: HTMLElement) => void; onHandoffStart: () => void; onOpenBankInNewTab: () => void; onErrorDismiss: (target?: HTMLElement) => void; }>; type DebugMode = { debug_mode?: boolean; }; type SDKOptions = SDKExtraConfig & CallbacksAllowed & DebugMode & Customization; type PaymentConfig = PaymentBaseConfig & SDKOptions; type PaymentConfigWithType = PaymentConfig & { type: 'payment'; }; type MandateConfig = MandateBaseConfig & SDKOptions; type MandateConfigWithType = MandateConfig & { type: 'mandate'; }; type Configuration = PaymentConfigWithType | MandateConfigWithType; declare function Payment(configuration: PaymentConfig): Resource; declare function Mandate(configuration: MandateConfig): Resource; export { Configuration, Customization, Mandate, Payment };