export type WorkspaceTransitionIdentity = { workspaceId: string | null; revision: number; }; export type PrincipalTransitionIdentity = { revision: number; }; export declare function invalidatePrincipalTransition(current: PrincipalTransitionIdentity): PrincipalTransitionIdentity; export declare function ownsPrincipalTransition(current: PrincipalTransitionIdentity, accepted: PrincipalTransitionIdentity): boolean; export type WorkspaceOperationIdentity = { id: number; transition: WorkspaceTransitionIdentity; }; export declare function beginWorkspaceTransition(current: WorkspaceTransitionIdentity, workspaceId: string): { identity: WorkspaceTransitionIdentity; changed: boolean; }; export declare function invalidateWorkspaceTransition(current: WorkspaceTransitionIdentity): WorkspaceTransitionIdentity; export declare function ownsWorkspaceTransition(current: WorkspaceTransitionIdentity, accepted: WorkspaceTransitionIdentity, workspaceId: string): boolean; export declare function ownsTransitionInvocation(current: WorkspaceTransitionIdentity, accepted: WorkspaceTransitionIdentity): boolean; export declare function beginWorkspaceOperation(previousSequence: number, transition: WorkspaceTransitionIdentity): { sequence: number; operation: WorkspaceOperationIdentity; }; export declare function beginWorkspaceOperationUnlessBlocked(previousSequence: number, transition: WorkspaceTransitionIdentity, blocked: boolean): { sequence: number; operation: WorkspaceOperationIdentity; } | null; export declare function ownsWorkspaceOperation(active: WorkspaceOperationIdentity | null, currentTransition: WorkspaceTransitionIdentity, operation: WorkspaceOperationIdentity, workspaceId: string): boolean; export declare function settleWorkspaceOperation(active: WorkspaceOperationIdentity | null, operation: WorkspaceOperationIdentity): { active: WorkspaceOperationIdentity | null; settledCurrent: boolean; }; export type CurrentTransitionInvocationResult = { status: "current"; value: T; } | { status: "stale"; }; /** * Let an already-admitted server request settle, but expose its result only * while the exact browser-side principal/route generation that admitted it is * still current. This never cancels or rolls back the server mutation. */ export declare function runCurrentTransitionInvocation(input: { isCurrent: () => boolean; request: () => Promise; }): Promise>; /** * Run a request owned by one exact workspace operation. Both fulfillment and * rejection become inert once a newer operation, workspace, or principal owns * the destination UI. */ export declare function runCurrentWorkspaceOperation(input: { activeOperation: () => WorkspaceOperationIdentity | null; currentTransition: () => WorkspaceTransitionIdentity; operation: WorkspaceOperationIdentity; workspaceId: string; request: () => Promise; }): Promise>; /** * Resolve or reject one non-abortable request only while its route-owned * generation is current. A stale rejection becomes an inert null result so a * caller cannot surface the previous workspace's failure after transition. */ export declare function runCurrentWorkspaceRequest(input: { signal?: AbortSignal | undefined; requestId: number; currentRequestId: () => number; request: () => Promise; }): Promise;