export interface ServeOptions {
    /** Port to bind. Default: env IMHUB_OPENCODE_PORT or 14199. */
    port?: number;
    /** Host to bind. Default: 127.0.0.1. */
    hostname?: string;
    /** cwd for the spawn. Has no effect on per-session directory (sessions are
     *  created with their own directory) but determines where opencode looks
     *  for its global config. Default: process.cwd(). */
    cwd?: string;
}
export declare class OpencodeServeManager {
    private child;
    private baseUrl;
    private startPromise;
    private readonly opts;
    constructor(opts?: ServeOptions);
    /** Start the daemon if needed and return the base URL once ready. Idempotent. */
    ensureRunning(): Promise<string>;
    isRunning(): boolean;
    getBaseUrl(): string | null;
    /** Stop the daemon. Used by tests and on agim shutdown. */
    stop(): Promise<void>;
    private spawnAndWait;
}
/** Process-wide singleton. Tests can `new OpencodeServeManager()` on their own. */
export declare const opencodeServe: OpencodeServeManager;
//# sourceMappingURL=serve-manager.d.ts.map