import type { ClientSharedAgentActivityStatus, ClientSharedRecentEditDiff, ClientSharedSessionPlan } from '../../client-shared/services/session-activities/index.js';
import type { ControlPlaneProxyClient } from '../../client-shared/api/proxy.js';
import type { ControlPlaneApprovalDecision, ControlPlaneModelOptions, ControlPlanePendingApproval, ControlPlaneSessionDirectShellPreflight, ControlPlaneSessionDetail, ControlPlaneSessionRuntimeContext, ControlPlaneSessionView, ControlPlaneSlashCommandCatalog, ControlPlaneSlashCommandResult } from '../../client-shared/api/types.js';
import type { ControlPlaneSessionLatestUpdate } from '../services/activities/session-activity-service.js';
export type ControlPlaneSessionStoreOptions = {
    client: ControlPlaneProxyClient;
    defaultModel?: string;
    maxSteps?: number;
    searchIgnoreDirs?: string[];
    systemContext?: string;
    apiKey?: string;
    preferApiKey?: boolean;
};
export type ControlPlaneSessionStoreStartInput = {
    workspaceId?: string;
    sessionId?: string;
};
export type ControlPlaneSessionStoreSnapshot = {
    workspaceId?: string;
    sessions: ControlPlaneSessionView[];
    activeSessionId?: string;
    activeSession: ControlPlaneSessionDetail;
    runtimeContext?: ControlPlaneSessionRuntimeContext;
    modelOptions?: ControlPlaneModelOptions;
    pendingApproval: ControlPlanePendingApproval;
    pendingDirectShellConfirmation?: ControlPlaneSessionDirectShellPreflight;
    loading: boolean;
    submitting: boolean;
    approvalResolving: boolean;
    running: boolean;
    cancelling: boolean;
    streamConnected: boolean;
    liveStatus?: string;
    currentActivity?: ClientSharedAgentActivityStatus;
    activePlan?: ClientSharedSessionPlan;
    recentEditDiffs: ClientSharedRecentEditDiff[];
    latestUpdate?: ControlPlaneSessionLatestUpdate;
    slashCommandCatalog?: ControlPlaneSlashCommandCatalog;
    commandResults: ControlPlaneSlashCommandResult[];
    commandResultExpanded: boolean;
    error?: string;
};
export type ControlPlaneSessionSnapshotPatch = Partial<ControlPlaneSessionStoreSnapshot> | ((current: ControlPlaneSessionStoreSnapshot) => Partial<ControlPlaneSessionStoreSnapshot>);
export declare const INITIAL_CONTROL_PLANE_SESSION_SNAPSHOT: ControlPlaneSessionStoreSnapshot;
/**
 * Owns the cli-v2 render snapshot and subscription mechanics.
 *
 * This class must stay generic: no API calls, no domain policy, no event
 * interpretation. Workflow controllers produce patches; this state object is
 * the single mutable source of truth consumed by Ink components.
 */
export declare class ControlPlaneSessionState {
    private readonly onChanged?;
    private readonly listeners;
    private snapshotValue;
    constructor(onChanged?: (() => void) | undefined);
    getSnapshot: () => ControlPlaneSessionStoreSnapshot;
    subscribe: (listener: () => void) => (() => void);
    patch(next: ControlPlaneSessionSnapshotPatch): void;
    requireWorkspaceId(): string;
    requireActiveSessionId(): string;
    isActiveSessionAddress(workspaceId: string, sessionId: string): boolean;
}
export type { ControlPlaneApprovalDecision };
//# sourceMappingURL=control-plane-session-state.d.ts.map