import { Container } from '../components/container';
import { CHECKOUT_MODE, GATEWAY_TYPE } from './checkout-button.interface';
import { Background } from '../components/background';
import { EventEmitter } from '../helper/event-emitter';
import { IPayPalMeta, IAfterpayMeta, IZipmoneyMeta } from '../components/param';
import { AdditionalParams, IContextualRunner, IRedirectRunner } from './runner';
import { CheckoutContextualHandler } from './checkout-contextual-handler';
/**
 * Class CheckoutButton transform usual button into checkout
 *
 * @constructor
 *
 * @param {string} selector - Selector of html element.
 * @param {string} aceessToken - PayDock access token or users public key
 * @param {string} [gatewayId=default] - PayDock's gatewayId. By default or if put 'default', it will use the selected default gateway
 * @param {string} [type=PaypalClassic] - Type of gateway (PaypalClassic, Zipmoney)
 * @example
 * var widget = new CheckoutButton('#button', 'accessToken','gatewayId');
 */
declare class CheckoutButton {
    protected accessToken: string;
    protected gatewayId: string;
    protected gatewayType: GATEWAY_TYPE;
    protected mode: CHECKOUT_MODE;
    protected window: Window;
    protected eventEmitter: EventEmitter;
    protected container: Container;
    protected meta: IPayPalMeta;
    protected runner: IContextualRunner | IRedirectRunner;
    protected background?: Background;
    protected checkoutHandler?: CheckoutContextualHandler;
    protected env: string;
    protected alias?: string;
    /** @constructs */ constructor(selector: string, accessToken: string, gatewayId?: string, gatewayType?: GATEWAY_TYPE, mode?: CHECKOUT_MODE);
    protected chooseRunner(gatewayType: GATEWAY_TYPE, mode: CHECKOUT_MODE): void;
    protected buildAdditionalParams(): AdditionalParams;
    protected initCheckout(container: Container): void;
    /**
     * This callback will be called for each event in payment source widget
     *
     * @callback listener
     */
    /**
     * Listen to events of widget
     *
     * @example
     *
     * widget.on('click', function () {
     *
     * });
     * @param {string} eventName - Available event names [CHECKOUT_BUTTON_EVENT]{@link CHECKOUT_BUTTON_EVENT}
     * @param {listener} cb
     */
    on<T = object>(name: string, handler: (data: T) => void): void;
    /**
     * Close popup window forcibly.
     * Only for 'contextual' mode.
     *
     */
    close(): void;
    /**
     * After finish event of checkout button, data (dataType) will be insert to input (selector)
     *
     * @param {string} selector - css selector . [] #
     * @param {string} dataType - data type of IEventCheckoutFinishData [IEventCheckoutFinishData]{@link #IEventCheckoutFinishData}.
     */
    onFinishInsert(selector: string, dataType: string): void;
    /**
     * Method for setting meta information for checkout page
     *
     * @example
     * button.setMeta({
            brand_name: 'paydock',
            reference: '15',
            email: 'wault@paydock.com'
        });
     *
     * @param {(IPayPalMeta|IAfterpayMeta|IZipmoneyMeta)} meta - Data which can be shown on checkout page [IPayPalMeta]{@link IPayPalMeta} [IZipmoneyMeta]{@link IZipmoneyMeta} [IAfterpayMeta]{@link IAfterpayMeta}
     */
    setMeta(meta: IPayPalMeta | IAfterpayMeta | IZipmoneyMeta): void;
    /**
     * Method for setting backdrop description.
     * Only for 'contextual' mode.
     *
     * @example
     * button.setBackdropDescription('Custom description');
     *
     * @param {string} text - description which can be shown in overlay of back side checkout page
     */
    setBackdropDescription(text: string): void;
    /**
     * Method for setting backdrop title.
     * Only for 'contextual' mode.
     *
     * @example
     * button.setBackdropTitle('Custom title');
     *
     * @param {text} string - title which can be shown in overlay of back side checkout page
     */
    setBackdropTitle(text: string): void;
    /**
     * Method for setting suspended redirect uri. Redirect after referred checkout.
     * Only for 'contextual' mode.
     *
     * @param {uri} string - uri for redirect (by default)
     */
    setSuspendedRedirectUri(uri: string): void;
    /**
     * Method for setting the merchant redirect URL.
     * Merchant's customers redirect after successfull checkout.
     * Only for 'redirect' mode.
     *
     * @param {url} string - redirect url
     */
    setRedirectUrl(url: string): void;
    getSuccessRedirectUri(): string;
    /**
     * Method for disable backdrop on the page.
     * Only for 'contextual' mode.
     *
     * @example
     * button.turnOffBackdrop();
     *
     */
    turnOffBackdrop(): void;
    protected turnOffControlBackdrop(): void;
    protected turnOffLoaderBackdrop(): void;
    setEnv(env: string, alias?: string): void;
    getEnv(): string;
    private getRunnerByMode;
    private assertMethodSupport;
}
/**
 * @interface IEventCheckoutFinishData
 *
 * @param {string} [payment_source_token]
 */
export { CheckoutButton };
//# sourceMappingURL=checkout-button.d.ts.map