type WonderPaymentConfiguration = {
    payfacData: string;
    environment: "development" | "staging" | "production";
    onPaymentCompleted?: () => void;
    onPaymentFailed?: () => void;
    placeholders?: Placeholders;
};
type PlaceholderKeys = "cardNumber" | "expiryDate" | "expiryMonth" | "expiryYear" | "securityCodeThreeDigits" | "securityCodeFourDigits";
type Placeholders = Partial<Record<PlaceholderKeys, string>>;
type SuccessResponse = {
    resultCode: "Success";
    message?: string;
} & Required<WonderPaymentPaymentMethods>;
type ErrorResponse = {
    resultCode: "Error";
    message: string;
} & Partial<WonderPaymentPaymentMethods>;
type WonderPaymentPaymentMethodsResponse = SuccessResponse | ErrorResponse;
type WonderPaymentPaymentMethods = {
    amount: number;
    clientKey: string;
    currency: string;
    enableStoreDetails: string;
    formattedAmount: string;
    locale: string;
    minorUnitsAmount: number;
    merchantName: string;
    paymentMethods: PaymentMethodsResponse;
};
interface PaymentMethodsResponse {
    paymentMethods?: PaymentMethod[];
    storedPaymentMethods?: StoredPaymentMethod[];
}
type Issuer = {
    disabled?: boolean;
    id: string;
    name: string;
};
type PaymentMethod = {
    brand?: string;
    brands?: string[];
    configuration?: object;
    fundingSource?: "debit" | "credit";
    group?: PaymentMethodGroup;
    issuers?: Issuer[];
    name: string;
    type: string;
};
type StoredPaymentMethod = PaymentMethod & {
    bankAccountNumber: string;
    bankLocationId: string;
    expiryMonth?: string;
    expiryYear?: string;
    holderName?: string;
    iban?: string;
    id: string;
    label?: string;
    lastFour?: string;
    networkTxReference?: string;
    ownerName?: string;
    shopperEmail?: string;
    supportedRecurringProcessingModels: string[];
    supportedShopperInteractions: string[];
};
type PaymentMethodGroup = {
    name: string;
    paymentMethodData: string;
    type: string;
};

declare class WonderPayment {
    private configuration;
    private element;
    constructor(config: WonderPaymentConfiguration);
    mount(selector: HTMLElement | string): Promise<void>;
    handleError(message: string): void;
    handleSuccess(message: string): void;
    setupPaymentMethods(environment: string, payfacData: string): Promise<WonderPaymentPaymentMethodsResponse>;
}

export { WonderPayment as default };
