export class Chromedriver extends events<[never]> {
    /**
     *
     * @param {import('./types').ChromedriverOpts} args
     */
    constructor(args?: import("./types").ChromedriverOpts);
    _log: import("@appium/types").AppiumLogger;
    proxyHost: string;
    proxyPort: string | number;
    adb: import("appium-adb").default | undefined;
    cmdArgs: string[] | undefined;
    proc: SubProcess | null;
    useSystemExecutable: boolean;
    chromedriver: string | undefined;
    executableDir: string;
    mappingPath: string | undefined;
    bundleId: string | undefined;
    executableVerified: boolean;
    state: string;
    jwproxy: JWProxy;
    isCustomExecutableDir: boolean;
    verbose: boolean | undefined;
    logPath: string | undefined;
    disableBuildCheck: boolean;
    storageClient: ChromedriverStorageClient | null;
    details: {
        info?: {
            Browser: string;
        };
    } | undefined;
    /** @type {any} */
    capabilities: any;
    /** @type {keyof PROTOCOLS | null} */
    _desiredProtocol: ("W3C" | "MJSONWP") | null;
    /** @type {string|null} */
    _driverVersion: string | null;
    /** @type {Record<string, any> | null} */
    _onlineStatus: Record<string, any> | null;
    get log(): import("@appium/types").AppiumLogger;
    /**
     * @returns {string | null}
     */
    get driverVersion(): string | null;
    getDriversMapping(): Promise<any>;
    /**
     * @param {ChromedriverVersionMapping} mapping
     */
    getChromedrivers(mapping: ChromedriverVersionMapping): Promise<any[]>;
    getChromeVersion(): Promise<semver.SemVer | null>;
    /**
     *
     * @param {ChromedriverVersionMapping} newMapping
     * @returns {Promise<void>}
     */
    updateDriversMapping(newMapping: ChromedriverVersionMapping): Promise<void>;
    /**
     * When executableDir is given explicitly for non-adb environment,
     * this method will respect the executableDir rather than the system installed binary.
     * @returns {Promise<string>}
     */
    getCompatibleChromedriver(): Promise<string>;
    initChromedriverPath(): Promise<string>;
    /**
     * Determines the driver communication protocol
     * based on various validation rules.
     *
     * @returns {keyof PROTOCOLS}
     */
    syncProtocol(): "W3C" | "MJSONWP";
    /**
     *
     * @param {object} caps
     * @param {boolean} emitStartingState
     */
    start(caps: object, emitStartingState?: boolean): Promise<Record<string, any> | NewSessionResponse>;
    sessionId(): string | null;
    restart(): Promise<void>;
    waitForOnline(): Promise<void>;
    getStatus(): Promise<any>;
    startSession(): Promise<Record<string, any> | NewSessionResponse>;
    stop(emitStates?: boolean): Promise<void>;
    /**
     *
     * @param {string} state
     */
    changeState(state: string): void;
    /**
     *
     * @param {string} url
     * @param {'POST'|'GET'|'DELETE'} method
     * @param {any} body
     * @returns
     */
    sendCommand(url: string, method: "POST" | "GET" | "DELETE", body: any): Promise<any>;
    /**
     *
     * @param {any} req
     * @param {any} res
     * @privateRemarks req / res probably from Express
     */
    proxyReq(req: any, res: any): Promise<void>;
    killAll(): Promise<void>;
    hasWorkingWebview(): Promise<boolean>;
}
export namespace Chromedriver {
    let EVENT_ERROR: string;
    let EVENT_CHANGED: string;
    let STATE_STOPPED: string;
    let STATE_STARTING: string;
    let STATE_ONLINE: string;
    let STATE_STOPPING: string;
    let STATE_RESTARTING: string;
}
export type ChromedriverVersionMapping = import("./types").ChromedriverVersionMapping;
export type NewSessionResponse = {
    capabilities: Record<string, any>;
};
import events from 'events';
import { SubProcess } from 'teen_process';
import { JWProxy } from '@appium/base-driver';
import { ChromedriverStorageClient } from './storage-client/storage-client';
import * as semver from 'semver';
//# sourceMappingURL=chromedriver.d.ts.map