import type { Capabilities, Services, Workers } from '@wdio/types'import type { getConfig, matchers } from 'expect-webdriverio'import type BaseReporter from './reporter.js'export type BeforeArgs = Parameters<Required<Services.HookFunctions>['before']>export type AfterArgs = Parameters<Required<Services.HookFunctions>['after']>export type BeforeSessionArgs = Parameters<Required<Services.HookFunctions>['beforeSession']>export type AfterSessionArgs = Parameters<Required<Services.HookFunctions>['afterSession']>interface Args extends Partial<WebdriverIO.Config> {ignoredWorkerServices?: string[]watch?: boolean}export type RunParams = {cid: stringargs: Argsspecs: string[]caps: Capabilities.RequestedStandaloneCapabilities | Capabilities.RequestedMultiremoteCapabilitiesconfigFile: stringretries: number}export interface TestFramework {init: (cid: string,config: WebdriverIO.Config,specs: string[],capabilities: Capabilities.RequestedStandaloneCapabilities | Capabilities.RequestedMultiremoteCapabilities,reporter: BaseReporter) => TestFrameworkrun (): Promise<number>hasTests (): booleansetupExpect?: (wdioExpect: ExpectWebdriverIO.Expect,wdioMatchers: typeof matchers,getExpectConfig: typeof getConfig) => void}export interface SessionStartedMessage {origin: 'worker'name: 'sessionStarted'content: {sessionId: stringisW3C: booleanprotocol: stringhostname: stringport: numberpath: stringheaders: Record<string, string>isMultiremote: booleaninjectGlobals: booleancapabilities: WebdriverIO.Capabilities},cid?: string}export interface SnapshotResultMessage {origin: 'worker'name: 'snapshot'content: {filepath: stringadded: numberfileDeleted: booleanmatched: numberunchecked: numberuncheckedKeys: string[]unmatched: numberupdated: number}[]}export interface SessionEndedMessage {origin: 'worker'name: 'sessionEnded',cid: string}export interface WorkerResponseMessage {origin: 'worker'name: 'workerResponse',args: {id: numbermessage: Workers.SocketMessage}}