import events from 'node:events'; import { JWProxy } from '@appium/base-driver'; import type { HTTPMethod, HTTPBody } from '@appium/types'; import type { Request, Response } from 'express'; import type { ChromedriverOpts } from './types'; type SessionCapabilities = Record; export declare class Chromedriver extends events.EventEmitter { static readonly EVENT_ERROR = "chromedriver_error"; static readonly EVENT_CHANGED = "stateChanged"; static readonly STATE_STOPPED = "stopped"; static readonly STATE_STARTING = "starting"; static readonly STATE_ONLINE = "online"; static readonly STATE_STOPPING = "stopping"; static readonly STATE_RESTARTING = "restarting"; private readonly _log; private readonly proxyHost; private readonly proxyPort; private readonly adb?; private readonly cmdArgs?; private proc; private readonly useSystemExecutable; private chromedriver?; private readonly executableDir; private readonly mappingPath?; private bundleId?; private executableVerified; state: string; private readonly _execFunc; jwproxy: JWProxy; private readonly isCustomExecutableDir; private readonly verbose?; private readonly logPath?; private readonly disableBuildCheck; private readonly storageClient; private readonly details?; private capabilities; private _desiredProtocol; private _driverVersion; private _onlineStatus; constructor(args?: ChromedriverOpts); /** * Gets the logger instance for this Chromedriver instance. * @returns The logger instance. */ get log(): any; /** * Gets the version of the currently running Chromedriver. * @returns The driver version string, or null if not yet determined. */ get driverVersion(): string | null; /** * Starts a new Chromedriver session with the given capabilities. * @param caps - The session capabilities to use. * @param emitStartingState - Whether to emit the starting state event (default: true). * @returns A promise that resolves to the session capabilities returned by Chromedriver. * @throws {Error} If Chromedriver fails to start or crashes during startup. */ start(caps: SessionCapabilities, emitStartingState?: boolean): Promise; /** * Gets the current session ID if the driver is online. * @returns The session ID string, or null if the driver is not online. */ sessionId(): string | null; /** * Restarts the Chromedriver session. * The session will be stopped and then started again with the same capabilities. * @returns A promise that resolves to the session capabilities returned by Chromedriver. * @throws {Error} If the driver is not online or if restart fails. */ restart(): Promise; /** * Stops the Chromedriver session and terminates the process. * @param emitStates - Whether to emit state change events during shutdown (default: true). * @returns A promise that resolves when the session has been stopped. */ stop(emitStates?: boolean): Promise; /** * Sends a command to the Chromedriver server. * @param url - The endpoint URL (e.g., '/url', '/session'). * @param method - The HTTP method to use ('POST', 'GET', or 'DELETE'). * @param body - Optional request body for POST requests. * @returns A promise that resolves to the response from Chromedriver. */ sendCommand(url: string, method: HTTPMethod, body?: HTTPBody): Promise; /** * Proxies an HTTP request/response to the Chromedriver server. * @param req - The incoming HTTP request object. * @param res - The outgoing HTTP response object. * @returns A promise that resolves when the proxying is complete. */ proxyReq(req: Request, res: Response): Promise; /** * Checks if Chromedriver is currently able to automate webviews. * Sometimes Chromedriver stops automating webviews; this method runs a simple * command to determine the current state. * @returns A promise that resolves to true if webviews are working, false otherwise. */ hasWorkingWebview(): Promise; private buildChromedriverArgs; private getDriversMapping; private getChromedrivers; private getChromeVersion; private updateDriversMapping; private getCompatibleChromedriver; private initChromedriverPath; private syncProtocol; private waitForOnline; private getStatus; private startSession; private changeState; private killAll; } export {}; //# sourceMappingURL=chromedriver.d.ts.map