import type { SessionVisibility, SessionVisibilityWork } from "@opengeni/sdk"; export type SessionTenancyTarget = { workspaceId: string; sessionId: string; }; export type PendingSessionVisibilityAttempt = SessionTenancyTarget & { visibility: SessionVisibility; expectedAuthorityEpoch: number; idempotencyKey: string; }; export type PendingSessionForkAttempt = SessionTenancyTarget & { sourceEventId?: string | undefined; visibility: SessionVisibility; workspaceSharedAcknowledged: boolean; idempotencyKey: string; }; export type SessionTenancyFailure = { kind: "blocker" | "active_work" | "stopping_work" | "epoch_conflict" | "idempotency_conflict" | "outcome_unknown" | "fork_point" | "other"; message: string; retainAttempt: boolean; reconcile: boolean; /** For `active_work`: what a confirmed change would stop. */ work?: SessionVisibilityWork | undefined; }; export declare function sessionTenancyBlockerMessage(blocker: unknown): string | null; export declare function sessionVisibilityWorkIsEmpty(work: SessionVisibilityWork): boolean; /** One line per consequence of "make private anyway", in the order they happen. */ export declare function sessionVisibilityWorkSummary(work: SessionVisibilityWork): string[]; /** True when confirming stops something running, not only drops other people's access. */ export declare function sessionVisibilityWorkStopsWork(work: SessionVisibilityWork): boolean; /** A preview from any server release, with fields an older one omits filled in. */ export declare function normalizeSessionVisibilityWork(work: unknown): SessionVisibilityWork | null; /** The consented stop is still settling; the same request finishes it. */ export declare function isStoppingSessionWorkError(error: unknown): boolean; /** * Making a session private hides its conversation, not its sandbox. Files on a * shared sandbox or Connected Machine stay as available as the box itself. */ export declare function privateSessionSandboxNote(sandboxBackend: string | null | undefined): string; export declare function prepareSessionVisibilityAttempt(current: PendingSessionVisibilityAttempt | null, target: SessionTenancyTarget & { visibility: SessionVisibility; expectedAuthorityEpoch: number; }, createIdempotencyKey: () => string): PendingSessionVisibilityAttempt; export declare function isCurrentSessionTenancyTarget(current: SessionTenancyTarget, accepted: SessionTenancyTarget): boolean; export declare function classifySessionTenancyFailure(error: unknown): SessionTenancyFailure; export declare function retryableSessionTenancyReconciliationFailure(error: unknown): boolean; export declare function visibilityAttemptReachedAuthoritativeState(attempt: PendingSessionVisibilityAttempt, tenancy: { visibility: SessionVisibility; authorityEpoch: number; } | undefined): boolean;