import type { SessionRecord } from '../../storage/domains/harness/index.js'; import { EventEmitter } from './events.js'; import type { HarnessEventListener, HarnessEventUnsubscribe } from './events.js'; import type { HarnessConfig } from './harness.types.js'; import type { HarnessMode } from './mode.js'; import { Session } from './session.js'; import type { CloneSessionOptions } from './session.types.js'; type SessionByIdOptions = { sessionId: string; resourceId?: string; }; type SessionByThreadOptions = { sessionId?: undefined; threadId: string; resourceId: string; modeId?: string; modelId?: string; }; type SessionOptions = SessionByIdOptions | SessionByThreadOptions; export declare class Harness { #private; constructor(config: HarnessConfig); get ownerId(): string; subscribe(listener: HarnessEventListener): HarnessEventUnsubscribe; emit(event: Parameters[0]): ReturnType; listModes(): HarnessMode[]; /** * Look up a single mode by id. Returns `undefined` if no mode with that id * is registered. For the throwing variant used during request resolution, * see the internal `_getMode` helper. */ getMode(modeId: string): HarnessMode | undefined; listSessions(): Promise; session(opts: SessionOptions): Promise; cloneSession(session: Session, opts?: CloneSessionOptions): Promise; } export {}; //# sourceMappingURL=harness.d.ts.map