import type { HostContext, HttpHandler } from "@nanobpm/urban/runtime"; /** The captured in-process HTTP entrypoint plus the wrapped host. */ export interface TestHost { host: HostContext; /** The router handler the runtime mounted, or undefined until `start()` has run. Invoke it * directly to drive routes in-process — no socket is ever opened. */ handler(): HttpHandler | undefined; /** Log lines the app emitted, in order (when capture is enabled). */ logs: { level: "debug" | "info" | "warn" | "error"; msg: string; fields?: Record; }[]; } export interface CreateTestHostOptions { /** App root the wrapped host resolves files/SQLite/modules against. */ cwd: string; /** Reads the harness's virtual clock (ms since epoch). */ now: () => number; /** Extra environment overlaid on the real environment (overrides win). */ env?: Record; /** Capture logs into {@link TestHost.logs} instead of forwarding to the base sink. */ captureLogs?: boolean; } /** Wrap the runtime's real host, overriding only the seams the e2e harness needs. */ export declare function createTestHost(opts: CreateTestHostOptions): TestHost;