import type { AgentConfig, ToolApprovalRequest, ToolApprovalResult } from "@clinebot/agents";
import type { ITelemetryService } from "@clinebot/shared";
import type { ToolExecutors } from "../tools";
import { FileSessionService } from "./file-session-service";
import { RpcCoreSessionService } from "./rpc-session-service";
import type { SessionManager } from "./session-manager";
import { CoreSessionService } from "./session-service";
export type SessionBackend = RpcCoreSessionService | CoreSessionService | FileSessionService;
export interface CreateSessionHostOptions {
    distinctId?: string;
    sessionService?: SessionBackend;
    backendMode?: "auto" | "rpc" | "local";
    rpcAddress?: string;
    autoStartRpcServer?: boolean;
    rpcConnectAttempts?: number;
    rpcConnectDelayMs?: number;
    defaultToolExecutors?: Partial<ToolExecutors>;
    telemetry?: ITelemetryService;
    toolPolicies?: AgentConfig["toolPolicies"];
    requestToolApproval?: (request: ToolApprovalRequest) => Promise<ToolApprovalResult>;
}
export type SessionHost = SessionManager;
export declare function resolveSessionBackend(options: CreateSessionHostOptions): Promise<SessionBackend>;
export declare function createSessionHost(options: CreateSessionHostOptions): Promise<SessionHost>;
