/// <reference types="node" />
import NodeEnvironment from 'jest-environment-node';
import { Config } from '@jest/types';
import { Driver } from '@jest-environment-browserstack/plugins';
import { Script } from 'vm';
/**
 * Browserstack environment
 */
export default class BrowserstackEnvironment<T extends Driver> extends NodeEnvironment {
    /**
     * local identifier for the Browserstack tunnel
     */
    private readonly localIdentifier;
    /**
     * Browserstack key
     */
    private readonly key;
    /**
     * Browserstack Selenium hub URL
     */
    private readonly selHubUrl;
    /**
     * default browser capabilities
     */
    private readonly btCapabilities;
    /**
     * Browserstack tunnel options
     */
    private btTunnelOpts;
    /**
     * driver module name
     */
    private pluginDriver;
    /**
     * plugin instance
     */
    private plugin;
    /**
     * driver instances
     */
    private readonly drivers;
    constructor(config: Config.ProjectConfig);
    /**
     * override the original setup environment for the Browserstack one
     */
    setup(): Promise<void>;
    /**
     * environment teardown - kill all driver instance and close the tunnel
     */
    teardown(): Promise<void>;
    runScript(script: Script): any;
    /**
     * Create the Browserstack tunnel
     * @returns {Promise} resolve if the tunnel was correctly created
     */
    private createBTTunnel;
    /**
     * Browserstack tunnel teardown
     * @returns {Promise} resolve if everything went well
     */
    private closeBTTunnel;
}
