import { Browser, BrowserOptions, Driver, Frame, Framework, Page, Wallet } from '../types';
/**
 *
 *
 * @export
 * @class DappDriver
 */
export declare class DappDriver {
    private static instance;
    private domain;
    private extension;
    private isDisposed;
    private driver;
    private page;
    private frame;
    private framework;
    private wallet;
    /**
     * Creates an instance of DappDriver.
     * @param {string} domain
     * @param {Framework} framework
     * @param {Driver} driver
     * @memberof DappDriver
     */
    constructor(domain: string, framework: Framework, driver: Driver);
    static get Instance(): DappDriver | null;
    static set Instance(value: DappDriver);
    get Framework(): Framework;
    get Disposed(): boolean;
    set Disposed(value: boolean);
    get Driver(): Driver;
    get Domain(): string;
    get Extension(): string;
    set Extension(value: string);
    get Page(): Page;
    set Page(value: Page);
    get Frame(): Frame;
    set Frame(value: Frame);
    get Wallet(): Wallet;
    set Wallet(value: Wallet);
    /**
     *
     * Creates a new DappDriver session based on this current configuration
     * @static
     * @template TPage
     * @param {string} domain
     * @param {Framework} framework
     * @param {Browser} browser
     * @param {new () => TPage} tPage
     * @param {BrowserOptions} options
     * @return {*}  {Promise<TPage>}
     * @memberof DappDriver
     */
    static create(domain: string, framework: Framework, browser: Browser): Promise<void>;
    static create(domain: string, framework: Framework, browser: Browser, options: BrowserOptions): Promise<void>;
    static create<TPage>(domain: string, framework: Framework, browser: Browser, tPage: new () => TPage): Promise<TPage>;
    static create<TPage>(domain: string, framework: Framework, browser: Browser, tPage: new () => TPage, options: BrowserOptions): Promise<TPage>;
    /**
     *
     *
     * @private
     * @static
     * @param {Framework} framework
     * @param {Browser} browser
     * @param {BrowserOptions} options
     * @return {*}  {Promise<Driver>}
     * @memberof DappDriver
     */
    private static build;
    /**
     *
     *
     * @private
     * @static
     * @param {BrowserOptions} options
     * @return {*}  {Promise<void>}
     * @memberof DappDriver
     */
    private static enableAutomation;
    /**
     *
     * Schedules a command to navigate to a new URL
     * @private
     * @static
     * @param {string} url
     * @return {*}  {Promise<void>}
     * @memberof DappDriver
     */
    private static open;
    /**
     *
     *
     * @private
     * @static
     * @param {BrowserOptions} options
     * @return {*}  {Promise<void>}
     * @memberof DappDriver
     */
    private static setupWallet;
    /**
     *
     *
     * @static
     * @template TPage
     * @param {new () => TPage} page
     * @return {*}  {Promise<TPage>}
     * @memberof DappDriver
     */
    static getPage<TPage>(page: new () => TPage): Promise<TPage>;
    /**
     *
     * Schedules a command to quit the current session
     * @static
     * @return {*}  {Promise<void>}
     * @memberof DappDriver
     */
    static dispose(): Promise<void>;
    /**
     *
     * Schedules a command to make the driver sleep for the given amount of time
     * @static
     * @param {number} duration
     * @return {*}  {Promise<void>}
     * @memberof DappDriver
     */
    static sleep(duration: number): Promise<void>;
    /**
     *
     * Schedule a command to take a screenshot
     * @static
     * @return {*}  {Promise<string>}
     * @memberof DappDriver
     */
    static takeScreenshot(): Promise<string>;
}
