import { HostedFieldFieldOptions, HostedFieldsTokenizePayload, HostedFields, ThreeDSecure, ThreeDSecureVerifyPayload } from "braintree-web";
import { Configuration } from "braintree-web/modules/client";
import { HostedFieldsEvent, HostedFieldsState, HostedFieldEventType, HostedFieldsEventTypeMap } from "braintree-web/modules/hosted-fields";
export declare let hostedFieldInstance: HostedFields, threeDSecInstance: ThreeDSecure;
export declare type Token = Pick<ThreeDSecureVerifyPayload | HostedFieldsTokenizePayload, "details" | "nonce">;
declare type Options = {
    billingAddress?: {
        locality?: string;
        postalCode?: string;
        streetAddress?: string;
    };
    cardholderName?: string;
    vault?: boolean;
};
export declare type PaymentGatewayInstance = {
    configuration: Configuration;
    getFields: () => HostedFieldsState;
    offEvent: (event: HostedFieldEventType, callBack?: (e: HostedFieldsEvent) => void) => void;
    onEvent: <T extends HostedFieldEventType>(event: T, callBack: (e: HostedFieldsEventTypeMap[T]) => void) => void;
    tokenize: (amount: number, options?: Options) => Promise<Token>;
};
export declare const init: (authorization: string, { fields, styles, is3dsSecEnabled, }: {
    fields: HostedFieldFieldOptions;
    styles?: {
        [key: string]: {
            [key: string]: string;
        };
    } | undefined;
    is3dsSecEnabled: boolean;
}) => Promise<PaymentGatewayInstance>;
export {};
