import { h } from 'preact';
import { UIElement } from '../UIElement';
import { BinLookupResponse, CardElementData, CardElementProps } from './types';
import { CbObjOnBinLookup } from '../internal/SecuredFields/lib/types';
import { UIElementStatus } from '../types';
export declare class CardElement extends UIElement<CardElementProps> {
    static type: string;
    private readonly clickToPayService;
    /**
     * Reference to the 'ClickToPayComponent'
     */
    private clickToPayRef;
    constructor(props: any);
    protected static defaultProps: {
        onBinLookup: () => void;
        showBrandsUnderCardNumber: boolean;
        showFormInstruction: boolean;
        _disableClickToPay: boolean;
    };
    setStatus(status: UIElementStatus, props?: any): this;
    private setClickToPayRef;
    formatProps(props: CardElementProps): {
        holderNameRequired: boolean;
        hasCVC: boolean;
        billingAddressRequired: any;
        type: string;
        countryCode: any;
        configuration: {
            socialSecurityNumberMode: import("./types").SocialSecurityMode;
            visaSrciDpaId?: string;
            visaSrcInitiatorId?: string;
            mcSrcClientId?: string;
            mcDpaId?: string;
            merchantIdentifier?: string;
            merchantOrigin?: string;
            gatewayMerchantId?: string;
            publicKeyId?: string;
            region?: string;
            merchantName?: string;
            merchantId?: string;
            intent?: string;
            koreanAuthenticationRequired?: boolean;
            icon?: string;
            brandsConfiguration?: import("./types").CardBrandsConfiguration;
        };
        brandsConfiguration: import("./types").CardBrandsConfiguration;
        icon: string;
        installmentOptions: any;
        enableStoreDetails: boolean;
        /**
         * Click to Pay configuration
         * - If email is set explicitly in the configuration, then it can override the one used in the session creation
         */
        clickToPayConfiguration: {
            disableOtpAutoFocus: boolean;
            shopperEmail: any;
            telephoneNumber: any;
            locale: string;
            merchantDisplayName?: string;
            onReady?(): void;
            onTimeout?(error: import("../internal/ClickToPay/errors/TimeoutError").default): void;
        };
        brand?: string;
        _disableClickToPay?: boolean;
        fundingSource?: "debit" | "credit";
        brands?: string[];
        showBrandsUnderCardNumber?: boolean;
        showBrandIcon?: boolean;
        showFormInstruction?: boolean;
        hideCVC?: boolean;
        hasHolderName?: boolean;
        onLoad?: (event: import("../internal/SecuredFields/lib/types").CbObjOnLoad) => void;
        onConfigSuccess?: (event: import("../internal/SecuredFields/lib/types").CbObjOnConfigSuccess) => void;
        onFieldValid?: (event: import("../internal/SecuredFields/lib/types").CbObjOnFieldValid) => void;
        onBrand?: (event: import("../internal/SecuredFields/lib/types").CbObjOnBrand) => void;
        onError?: (event: import("../internal/SecuredFields/lib/types").CbObjOnError) => void;
        onFocus?: (event: import("../internal/SecuredFields/lib/types").CbObjOnFocus) => void;
        onBinValue?: (event: import("../internal/SecuredFields/lib/types").CbObjOnBinValue) => void; /**
         * Click to Pay configuration
         * - If email is set explicitly in the configuration, then it can override the one used in the session creation
         */
        onBinLookup?: (event: CbObjOnBinLookup) => void;
        environment?: string;
        session?: import("../../core/CheckoutSession/CheckoutSession").default;
        onChange?: (state: any, element: UIElement<any>) => void;
        onValid?: (state: any, element: UIElement<any>) => void;
        beforeSubmit?: (state: any, element: UIElement<any>, actions: any) => Promise<void>;
        onSubmit?: (state: any, element: UIElement<any>) => void;
        onComplete?: (state: any, element: UIElement<any>) => void;
        onActionHandled?: (rtnObj: import("../types").ActionHandledReturnObject) => void;
        onAdditionalDetails?: (state: any, element: UIElement<any>) => void;
        onPaymentCompleted?: (result: any, element: UIElement<any>) => void;
        beforeRedirect?: (resolve: any, reject: any, redirectData: any, element: UIElement<any>) => void;
        /**
         * Click to Pay configuration
         * - If email is set explicitly in the configuration, then it can override the one used in the session creation
         */
        isInstantPayment?: boolean;
        name?: string;
        amount?: import("../../types").PaymentAmount;
        secondaryAmount?: import("../../types").PaymentAmountExtended;
        showPayButton?: boolean;
        setStatusAutomatically?: boolean;
        payButton?: (options: import("../types").PayButtonFunctionProps) => h.JSX.Element;
        loadingContext?: string;
        createFromAction?: (action: import("../../types").PaymentAction, props: object) => UIElement<any>;
        clientKey?: string;
        elementRef?: any;
        i18n?: import("../../language").default;
        _parentInstance?: import("../../core/core").default;
        order?: import("../../types").Order;
        modules?: {
            srPanel?: import("../../core/Errors/SRPanel").SRPanel;
            analytics?: import("../../core/Analytics/Analytics").default;
            resources?: import("../../core/Context/Resources").Resources;
            risk?: import("../../core/RiskModule").default;
        };
        isDropin?: boolean;
    };
    /**
     * Formats the component data output
     */
    formatData(): CardElementData;
    updateStyles(stylesObj: any): this;
    setFocusOn(fieldName: any): this;
    onBrand: (event: any) => void;
    processBinLookupResponse(binLookupResponse: BinLookupResponse, isReset?: boolean): this;
    handleUnsupportedCard(errObj: any): this;
    private handleClickToPaySubmit;
    onBinLookup(obj: CbObjOnBinLookup): void;
    onBinValue: (callbackObj: import("../internal/SecuredFields/lib/types").CbObjOnBinValue) => void;
    get isValid(): boolean;
    get icon(): string;
    get brands(): {
        icon: any;
        name: string;
    }[];
    get brand(): string;
    get displayName(): string;
    get accessibleName(): string;
    get browserInfo(): import("../../types").BrowserInfo;
    private renderCardInput;
    render(): h.JSX.Element;
}
export default CardElement;
