import type { ControlPlaneRecentEvent, SharedApprovalRecord, SharedSessionInputRecord, SharedSessionMessage, SharedSessionRecord, SharedSessionSubmission, SteerSharedSessionMessageInput, SubmitSharedSessionMessageInput } from '../control-plane/index.js';
import type { RequestSharedApprovalInput } from '../control-plane/index.js';
import type { PermissionPromptDecision } from '../permissions/prompt.js';
import { type AuthInspectionSnapshot } from './auth/inspection.js';
import { type ProviderAccountSnapshot } from './provider-accounts/registry.js';
import type { ProviderRuntimeSnapshot, ProviderUsageSnapshot } from '../providers/runtime-snapshot.js';
import type { OperatorClientServices } from './foundation-services.js';
import type { RuntimeTask } from './store/domains/tasks.js';
import type { UiControlPlaneSnapshot, UiSessionSnapshot, UiTasksSnapshot } from './ui-read-models.js';
import type { UiRuntimeEvents } from './ui-events.js';
import type { ShellPathService } from './shell-paths.js';
export interface OperatorControlPlaneSnapshot extends UiControlPlaneSnapshot {
}
export interface OperatorProvidersSnapshot {
    readonly providerIds: readonly string[];
    readonly runtimeSnapshots: readonly ProviderRuntimeSnapshot[];
    readonly accountSnapshot: ProviderAccountSnapshot;
    readonly authInspection: AuthInspectionSnapshot;
}
export interface OperatorSessionsClient {
    current(): UiSessionSnapshot;
    list(limit?: number): readonly SharedSessionRecord[];
    get(sessionId: string): SharedSessionRecord | null;
    messages(sessionId: string, limit?: number): readonly SharedSessionMessage[];
    inputs(sessionId: string, limit?: number): readonly SharedSessionInputRecord[];
    ensureSession(input?: OperatorSessionEnsureInput): Promise<SharedSessionRecord>;
    close(sessionId: string): Promise<SharedSessionRecord | null>;
    reopen(sessionId: string): Promise<SharedSessionRecord | null>;
    bindAgent(sessionId: string, agentId: string): Promise<SharedSessionRecord | null>;
    submitMessage(input: SubmitSharedSessionMessageInput): Promise<SharedSessionSubmission>;
    steerMessage(input: SteerSharedSessionMessageInput): Promise<SharedSessionSubmission>;
    followUpMessage(input: SubmitSharedSessionMessageInput): Promise<SharedSessionSubmission>;
    cancelInput(sessionId: string, inputId: string): Promise<SharedSessionInputRecord | null>;
}
export interface OperatorTasksClient {
    snapshot(): UiTasksSnapshot;
    list(limit?: number): readonly RuntimeTask[];
    get(taskId: string): RuntimeTask | null;
    running(): readonly RuntimeTask[];
}
export interface OperatorApprovalsClient {
    list(limit?: number): readonly SharedApprovalRecord[];
    get(approvalId: string): SharedApprovalRecord | null;
    request(input: RequestSharedApprovalInput): Promise<PermissionPromptDecision>;
    claim(approvalId: string, actor: string, actorSurface?: string, note?: string): Promise<SharedApprovalRecord | null>;
    resolve(approvalId: string, input: {
        readonly approved: boolean;
        readonly remember?: boolean | undefined;
        readonly actor: string;
        readonly actorSurface?: string | undefined;
        readonly note?: string | undefined;
    }): Promise<SharedApprovalRecord | null>;
    approve(approvalId: string, actor: string, actorSurface?: string, note?: string): Promise<SharedApprovalRecord | null>;
    deny(approvalId: string, actor: string, actorSurface?: string, note?: string): Promise<SharedApprovalRecord | null>;
    cancel(approvalId: string, actor: string, actorSurface?: string, note?: string): Promise<SharedApprovalRecord | null>;
    update(approvalId: string, input: {
        readonly actor: string;
        readonly actorSurface?: string | undefined;
        readonly note?: string | undefined;
        readonly metadata?: Record<string, unknown> | undefined;
    }): Promise<SharedApprovalRecord | null>;
}
export type OperatorSessionEnsureInput = NonNullable<Parameters<OperatorClientServices['sessionBroker']['ensureSession']>[0]>;
export interface OperatorProvidersClient {
    listIds(): readonly string[];
    runtimeSnapshots(): Promise<readonly ProviderRuntimeSnapshot[]>;
    runtimeSnapshot(providerId: string): Promise<ProviderRuntimeSnapshot | null>;
    usageSnapshot(providerId: string): Promise<ProviderUsageSnapshot | null>;
    snapshot(): Promise<OperatorProvidersSnapshot>;
    accountSnapshot(): Promise<ProviderAccountSnapshot>;
    authInspection(): Promise<AuthInspectionSnapshot>;
}
export interface OperatorControlPlaneClient {
    snapshot(): OperatorControlPlaneSnapshot;
    recentEvents(limit?: number): readonly ControlPlaneRecentEvent[];
}
export interface OperatorClient {
    readonly sessions: OperatorSessionsClient;
    readonly tasks: OperatorTasksClient;
    readonly approvals: OperatorApprovalsClient;
    readonly providers: OperatorProvidersClient;
    readonly controlPlane: OperatorControlPlaneClient;
    readonly events: UiRuntimeEvents;
    readonly shellPaths: ShellPathService;
}
export declare function createOperatorClient(services: OperatorClientServices): OperatorClient;
//# sourceMappingURL=operator-client.d.ts.map