/**
 * Franklin agent server (local WebSocket — drives the desktop app & browser UI).
 *
 * Serves the local React WebUI (franklin-webui / the desktop app) over a single
 * WebSocket using the envelope wire protocol the UI already speaks:
 *
 *   client → { id, kind, payload }      (agent.send / session.* / wallet.info / …)
 *   server → { id, kind, payload }      (agent.text / agent.step / agent.done / …)
 *
 * Unlike `franklin panel` (a read-only dashboard), this actually runs agent
 * turns: it drives the real `interactiveSession` loop from src/agent/loop.ts —
 * same tools, wallet, routing and signing as the CLI. The browser/desktop is
 * just a different head on the same agent.
 *
 * Single-window assumption: one long-lived agent session per server process,
 * fed by a getUserInput queue. Good enough for the desktop app; multi-session
 * fan-out can come later.
 */
interface ServerOptions {
    port: number;
    workDir: string;
    debug?: boolean;
}
export declare function startServer(opts: ServerOptions): Promise<void>;
export {};
