/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { EventEmitter } from 'node:events';
import type { URL } from 'node:url';
import type { Options } from '@wdio/types';
type Agents = Options.Agents;
type RequestLibOptions = Options.RequestLibOptions;
type RequestLibResponse = Options.RequestLibResponse;
type RequestOptions = Omit<Options.WebDriver, 'capabilities'>;
export declare class RequestLibError extends Error {
    statusCode?: number;
    body?: any;
    code?: string;
}
export interface WebDriverResponse {
    value: any;
    /**
     * error case
     * https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-an-error
     */
    error?: string;
    message?: string;
    stacktrace?: string;
    /**
     * JSONWP property
     */
    status?: number;
    sessionId?: string;
}
export declare const COMMANDS_WITHOUT_RETRY: string[];
export default abstract class WebDriverRequest extends EventEmitter {
    body?: Record<string, unknown>;
    method: string;
    endpoint: string;
    isHubCommand: boolean;
    requiresSessionId: boolean;
    defaultAgents?: Agents;
    defaultOptions: RequestLibOptions;
    constructor(method: string, endpoint: string, body?: Record<string, unknown>, isHubCommand?: boolean);
    makeRequest(options: RequestOptions, sessionId?: string): Promise<WebDriverResponse>;
    protected _createOptions(options: RequestOptions, sessionId?: string, isBrowser?: boolean): Promise<RequestLibOptions>;
    protected _libRequest(url: URL, options: RequestLibOptions): Promise<RequestLibResponse>;
    protected _libPerformanceNow(): number;
    private _request;
}
export {};
//# sourceMappingURL=index.d.ts.map