import type { PendingSessionForkAttempt, PendingSessionVisibilityAttempt, SessionTenancyTarget } from "./session-tenancy.js"; import type { SessionVisibility } from "@opengeni/sdk"; export type SessionTenancyOperationScope = SessionTenancyTarget & { principalId: string; workspaceTransitionRevision: number; }; export type SessionTenancyOperationSnapshot = { visibility: PendingSessionVisibilityAttempt | null; fork: PendingSessionForkAttempt | null; }; /** * App-lifetime retention for one exact principal/workspace/session target. * Component unmounts are deliberately inert; a principal/workspace/session * transition synchronously replaces the scope and retires every older key. */ export declare class SessionTenancyOperationController { private scope; private visibility; private fork; snapshot(scope: SessionTenancyOperationScope): SessionTenancyOperationSnapshot; prepareVisibility(scope: SessionTenancyOperationScope, input: { visibility: SessionVisibility; expectedAuthorityEpoch: number; }, createIdempotencyKey: () => string): PendingSessionVisibilityAttempt; prepareFork(scope: SessionTenancyOperationScope, input: { visibility: SessionVisibility; workspaceSharedAcknowledged: boolean; sourceEventId?: string | undefined; }, createIdempotencyKey: () => string): PendingSessionForkAttempt; settleVisibility(scope: SessionTenancyOperationScope, attempt: PendingSessionVisibilityAttempt): void; settleFork(scope: SessionTenancyOperationScope, attempt: PendingSessionForkAttempt): void; invalidate(): void; private bind; } /** One retained controller for the activation-gated web module's app lifetime. */ export declare const sessionTenancyOperationController: SessionTenancyOperationController;