import type { EventEmitter } from 'node:events'; import type { Options, Capabilities, ThenArg } from '@rpai/wdio-types'; import type { WebDriverBidiProtocol, ProtocolCommands } from '@rpai/wdio-protocols'; import type { BidiHandler } from './bidi/handler.js'; import type { EventData } from './bidi/localTypes.js'; export interface JSONWPCommandError extends Error { code?: string; statusCode?: string; statusMessage?: string; } export interface SessionFlags { isW3C: boolean; isChromium: boolean; isFirefox: boolean; isAndroid: boolean; isMobile: boolean; isIOS: boolean; isSauce: boolean; isSeleniumStandalone: boolean; isDevTools: boolean; isBidi: boolean; } type Fn = (...args: any) => any; type ValueOf = T[keyof T]; type ObtainMethods = { [Prop in keyof T]: T[Prop] extends Fn ? ThenArg> : never; }; type WebDriverBidiCommands = typeof WebDriverBidiProtocol; export type BidiCommands = WebDriverBidiCommands[keyof WebDriverBidiCommands]['socket']['command']; export type BidiResponses = ValueOf>>; type BidiInterface = ObtainMethods>; type WebDriverClassicEvents = { command: { method: string; endpoint: string; body: any; }; result: { method: string; endpoint: string; body: any; result: any; }; 'request.performance': { durationMillisecond: number; error: string; request: any; retryCount: number; success: boolean; }; }; export type BidiEventMap = { [Event in keyof Omit]: BidiInterface[WebDriverBidiCommands[Event]['socket']['command']]; }; type GetParam = T extends { method: U; } ? T['params'] : never; type EventMap = { [Event in EventData['method']]: GetParam; } & WebDriverClassicEvents; export interface BidiEventHandler { on(event: K, listener: (this: Client, param: EventMap[K]) => void): this; once(event: K, listener: (this: Client, param: EventMap[K]) => void): this; } export interface BaseClient extends EventEmitter, SessionFlags { sessionId: string; capabilities: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities; requestedCapabilities: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities; options: Options.WebDriver; } export interface Client extends Omit, ProtocolCommands, BidiHandler, BidiEventHandler { } export interface AttachOptions extends Partial, Partial { sessionId: string; capabilities?: Capabilities.DesiredCapabilities | Capabilities.W3CCapabilities; isW3C?: boolean; } export {}; //# sourceMappingURL=types.d.ts.map