import type { Context, JsonValue, ServiceCall } from "@earendil-works/chord"; import type { RoutedServerServiceHost, RoutedSessionHandle, ServerHost, SessionMetadata } from "../types.ts"; export declare class Deferred { readonly promise: Promise; private resolvePromise; constructor(); resolve(value: T): void; } interface OpenGate { entered: Deferred; release: Deferred; } export declare class TestHarness { #private; readonly metadata: SessionMetadata; readonly closed: Deferred; readonly terminated: Promise; attachedClients: number; attachmentReleaseCount: number; closeCount: number; readonly serviceCalls: ServiceCall[]; failAttachmentRelease?: Error; failClose?: Error; nextServiceError?: Error; nextServiceResult: JsonValue | undefined; private nextCloseGate?; private nextServiceGate?; constructor(metadata: SessionMetadata); attachClient(_context: Context): { invokeService: TestHarness["invokeService"]; release(context: Context): void; }; invokeService(call: ServiceCall): Promise; close(_context: Context): Promise; terminate(error: Error): Promise; gateNextClose(): OpenGate; gateNextServiceCall(): OpenGate; } export declare function createTestServerServices(): RoutedServerServiceHost; export declare class TestServerHost implements ServerHost { readonly serverServices: RoutedServerServiceHost; readonly sessions: Map; readonly harnesses: Map; openSessionCount: number; nextOpenSessionError?: Error; nextHarnessCloseError?: Error; private nextOpenSessionGate?; resolveSession(sessionId: string, _context: Context): Promise; openSession(metadata: SessionMetadata, _context: Context): Promise; seed(id?: string): Promise; gateNextOpenSession(): OpenGate; latestHarness(id: string): TestHarness; } export {}; //# sourceMappingURL=host.d.ts.map