import { type StudioCurrentWorkspaceResponse, type StudioProjectId, type StudioWorkspaceAgentSummary, type StudioWorkspaceSelection } from "@sapiom/agent-map"; interface PrivateAgentBinding extends StudioWorkspaceAgentSummary { projectId: StudioProjectId; /** Private reconciliation evidence. Never returned by this store. */ path: string; /** Successful scaffold ownership, independent of physical root containment. */ createdBySessionId?: string; updatedAt: string; } export interface SelectableWorkflow { name: string; path: string; definitionId: number | null; } export declare class StudioWorkspacePreferenceStoreError extends Error { readonly code: "malformed_state" | "unsupported_schema" | "storage_unavailable"; constructor(code: "malformed_state" | "unsupported_schema" | "storage_unavailable"); } /** Atomic owner of per-project selection and private path-to-opaque-id bindings. */ export declare class StudioWorkspacePreferenceStore { private readonly filePath; private readonly now; private state; private queue; constructor(filePath: string, now?: () => Date); private enqueue; private load; private persist; private reconcile; current(userId: string, projectId: StudioProjectId, roots: readonly string[], workflows: readonly SelectableWorkflow[], scanComplete: boolean): Promise; /** Server-only: called after authenticated, successful scaffold evidence. */ registerCreatedAgent(projectId: StudioProjectId, sessionId: string, workflow: SelectableWorkflow): Promise; /** Private exact paths to observe on restart; never added as project roots. */ createdAgents(): Promise>; put(userId: string, projectId: StudioProjectId, requested: StudioWorkspaceSelection, roots: readonly string[], workflows: readonly SelectableWorkflow[], scanComplete: boolean): Promise; /** Server-only join used to annotate the already-pathful workflow list. */ agentIds(projectId: StudioProjectId, roots: readonly string[], workflows: readonly SelectableWorkflow[], scanComplete: boolean): Promise>; /** * Moves private reconciliation evidence inside the authenticated disk-move * transaction. The public move request never supplies an identity: the * route resolves both paths from its registry and allow-listed target first. */ moveAgentBindings(from: string, to: string): Promise; } export {}; //# sourceMappingURL=studio-workspace-preferences.d.ts.map