import type { CatalogState } from './virtual-catalog.js'; import type { PendingApproval } from './virtual-contract.js'; import { AsyncValueQueue } from './virtual-contract.js'; import type { CodexClientLike, JsonRecord } from './virtual-values.js'; /** Collaborates with one CodexVirtualHarness; never creates a second session or connection state. */ export interface CodexEventCarrierContext { readonly workspaceStreams: Set; readonly refreshCatalog: (signal?: AbortSignal) => Promise; readonly selectedWorkspaceId: string | undefined; readonly controlStreams: Set; readonly host: { deviceId: string; name: string; }; readonly eventStreams: Map; readonly currentCatalog: (signal?: AbortSignal) => Promise; readonly pendingApprovals: Map; readonly client: CodexClientLike; } export declare class CodexEventCarrier { private readonly context; constructor(context: CodexEventCarrierContext); workspaceFollow(signal: AbortSignal): Promise>; sessionControl(signal: AbortSignal): Promise>; /** * Background jobs belong to the Host Harness session, not to a CodeX virtual * Workspace. The native session header mounts a job roster stream as soon as a * Session opens, so answer it with an authoritative empty roster instead of a * terminal `method-not-found` failure that tears the page down. */ emptyJobStream(endpoint: 'job/list' | 'job/follow', signal: AbortSignal): AsyncIterable; remoteEvents(signal: AbortSignal): Promise>; emitRemoteEvent(event: string, args: unknown[]): void; emitApproval(input: { eventId: string; agentId: string; request: JsonRecord; }): void; answerRemoteEvent(args: JsonRecord, signal: AbortSignal): Promise; publishProjection(sessionId: string, key: string, value: unknown, seq: number): void; } //# sourceMappingURL=virtual-event-carrier.d.ts.map