import type { ExtensionUIContext } from "../../core/extensions/index.ts";
import type { IsolatedInteractiveRuntime } from "./isolated-runtime.ts";
/**
 * Host-side half of the engine session picker channel.
 *
 * Mounts a REAL `SessionSelectorComponent` in the terminal host when the engine
 * child opens a picker, so arrow-key navigation, search, and repaints are
 * zero-IPC (unlike remote-rendered `ctx.ui.custom` components, which round-trip
 * every keypress). Only semantic events cross the protocol: the child pushes
 * open/update/error/close, the host sends select/cancel/delete. Deletion is
 * child-owned — the host never removes a row locally; it waits for the child's
 * `update` (row removed) or `error` reply.
 */
export declare class SessionPickerHostController {
    private readonly mounted;
    private readonly unsubscribe;
    private readonly runtime;
    private readonly ui;
    constructor(runtime: IsolatedInteractiveRuntime, ui: ExtensionUIContext);
    dispose(): void;
    private handleMessage;
    private open;
    private disposeAll;
}
//# sourceMappingURL=session-picker-host.d.ts.map