import ComponentApp from '../../plugin/component';
import { ComponentSignEnum, EventPayloadContext, IappendIframeNodesParams, IcreateComponent, IoptionsParams, IPaymentSessionMetaData, Iselector, Isubmit, PaymentMethodTypeEnum, SubPaymentMethodTypeEnum, ValidationResult } from '../../types';
import CoreInstance from '../instance/index';
export declare const getComponentSign: (params: IPaymentSessionMetaData) => ComponentSignEnum;
export declare const parseSessionData: (sessionData: string) => [IPaymentSessionMetaData, string];
export declare const handleParams: (params: IcreateComponent, _this: any) => Promise<{
    iframeNodesParams: IappendIframeNodesParams;
    componentSign: ComponentSignEnum.EASY_PAY_WALLET | ComponentSignEnum.EASY_PAY_APM | ComponentSignEnum.CASHIER_PAYMENT_CARD | ComponentSignEnum.CASHIER_PAYMENT_BANK | ComponentSignEnum.CASHIER_PAYMENT_APM | ComponentSignEnum.AUTO_DEBIT_WALLET | ComponentSignEnum.AUTO_DEBIT_PAY_WALLET | ComponentSignEnum.VAULTING_CARD | ComponentSignEnum.CHECKOUT_PAYMENT | ComponentSignEnum.ELEMENT_PAYMENT | ComponentSignEnum.ELEMENT_ADDRESS | ComponentSignEnum.AUTO_DEBIT_APM;
}>;
export type IAMSComponentOptions = IoptionsParams & {
    appVersion: string;
};
export declare class AMSComponent extends CoreInstance {
    _componentApp: ComponentApp;
    channelType: ComponentSignEnum[];
    productSceneVersion: string;
    timer: any;
    private _validateResolveMap;
    constructor(options: IAMSComponentOptions);
    private parameterInitAndCheck;
    private pluginAppendIframe;
    private savePreviousChannel;
    /**
     * 初始化 Bus总线的能力
     */
    private registerBusAbility;
    /**
     * To determine whether the corresponding payment method is available,
     *  only the channel described in the document will be called, and it will be returned as available by default
     * @param paymentMethod  - described in the document
     * @param subPaymentMethod - described in the document
     * @returns
     */
    canMakePayments(paymentMethod: PaymentMethodTypeEnum, subPaymentMethod?: SubPaymentMethodTypeEnum): Promise<boolean>;
    /**
     * @description Create component application
     * @param params - The data source created by the component, necessary sessionData, optional appearance configuration, and refer to the documentation for other parameters and detailed information.
     */
    createComponent(params: IcreateComponent): Promise<void>;
    private createComponentProcess;
    preloadComponent(channelType: any, productSceneVersion: any): void;
    private clearPreloadIframe;
    /**
     * @description Create and render components in the specified element area
     * @param params - The data source created by the component, necessary sessionData, optional appearance configurations, and refer to the documentation for other parameters and detailed information.
     * @param selector - Necessary element selector ID
     */
    mountComponent(params: IcreateComponent, selector: Iselector): Promise<void>;
    private mountComponentProcess;
    /**
     * @description Execute payment submission process
     * @description - When using your own payment button, you can execute the submit payment process by actively calling this function.
     * @param data - Transfer information in the submission interface according to your requirements (optional)
     */
    submit(data?: Isubmit): Promise<unknown>;
    protected _validateFields(): Promise<ValidationResult>;
    protected _sendMessageToAPP(eventContext: EventPayloadContext): void;
}
