import type { AgentSession } from "../../core/agent-session.ts";
import type { AgentSessionRuntime } from "../../core/agent-session-runtime.ts";
import type { EngineCustomUiService } from "../interactive-engine/engine-custom-ui.ts";
import type { EngineInputFormService } from "../interactive-engine/engine-input-form.ts";
import type { EngineRenderService } from "../interactive-engine/engine-render-service.ts";
import type { EngineSessionPickerService } from "../interactive-engine/engine-session-picker.ts";
import { type RpcPendingExtensionRequests } from "./rpc-extension-ui.ts";
import type { KeybindingsReloadCoordinator } from "./rpc-keybindings-reload.ts";
import type { RpcOutput } from "./rpc-responses.ts";
interface RpcSessionBindingOptions {
    runtimeHost: AgentSessionRuntime;
    output: RpcOutput;
    pendingExtensionRequests: RpcPendingExtensionRequests;
    customUi?: EngineCustomUiService;
    renderService?: EngineRenderService;
    sessionPicker?: EngineSessionPickerService;
    inputForm?: EngineInputFormService;
    requestShutdown: () => void;
    reloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;
}
export declare class RpcSessionBinding {
    private session;
    private unsubscribe?;
    private unsubscribeBackpressure?;
    private readonly runtimeHost;
    private readonly output;
    private readonly pendingExtensionRequests;
    private readonly customUi;
    private readonly renderService;
    private readonly sessionPicker;
    private readonly inputForm;
    private readonly requestShutdown;
    private readonly reloadCoordinator;
    constructor({ runtimeHost, output, pendingExtensionRequests, requestShutdown, customUi, renderService, sessionPicker, inputForm, reloadCoordinator }: RpcSessionBindingOptions);
    get currentSession(): AgentSession;
    rebindSession(): Promise<void>;
    disposeSubscriptions(): void;
}
export {};
//# sourceMappingURL=rpc-session-binding.d.ts.map