import { CardBrand, ICheckoutPaymentMethod } from '../../api';
export type { CheckoutState } from '../../store/checkout.store';
export declare enum PAYMENT_MODE {
    ECOM = "ecom",
    BNPL = "bnpl",
    APPLE_PAY = "apple_pay",
    GOOGLE_PAY = "google_pay"
}
export declare enum PAYMENT_METHOD_TYPES {
    CARD = "card",
    BANK_ACCOUNT = "bank_account",
    APPLE_PAY = "apple_pay",
    GOOGLE_PAY = "google_pay",
    SEZZLE = "sezzle",
    PLAID = "plaid"
}
export declare enum PAYMENT_METHODS {
    SAVED_CARD = "saved_card",
    NEW_CARD = "new_card",
    SAVED_BANK_ACCOUNT = "saved_bank_account",
    NEW_BANK_ACCOUNT = "new_bank_account",
    APPLE_PAY = "apple_pay",
    GOOGLE_PAY = "google_pay",
    SEZZLE = "sezzle",
    PLAID = "plaid"
}
export type SelectedPaymentMethod = {
    id?: string;
    type: PAYMENT_METHODS;
};
export type SavedPaymentMethod = {
    id: string;
    type: PAYMENT_METHODS;
    status: string;
    invalid_reason: null;
    name: string;
    brand: CardBrand;
    acct_last_four: string;
    account_type: string;
    month: string;
    year: string;
    address_line1_check: string;
    address_postal_code_check: string;
    bin_details: null;
};
export type Hook<T = any> = (data: T, resolve: (data: T) => void, reject: () => void) => void;
export declare class PaymentMethod implements SavedPaymentMethod {
    id: string;
    type: PAYMENT_METHODS;
    status: string;
    invalid_reason: null;
    name: string;
    brand: CardBrand;
    acct_last_four: string;
    account_type: string;
    month: string;
    year: string;
    address_line1_check: string;
    address_postal_code_check: string;
    bin_details: null;
    constructor(paymentMethod: ICheckoutPaymentMethod);
}
export interface CheckoutChangedEventDetail {
    availablePaymentMethodTypes: PAYMENT_METHODS[];
    selectedPaymentMethod: SelectedPaymentMethod | undefined;
    savedPaymentMethods: SavedPaymentMethod[];
}
