import { type InteractiveSessionRecord, type ProcessOutcome, type SessionState, type SessionSummary, type TerminationReason } from "./types.js"; export declare function canTransition(from: SessionState, to: SessionState): boolean; export declare class SessionRegistry { private readonly records; private readonly byOwner; private readonly issuedIds; private readonly ownerLocks; private readonly fencedOwners; withOwnerLock(ownerId: string, fn: () => Promise | T): Promise; mintId(): string; liveCount(ownerId: string): number; insert(record: InteractiveSessionRecord): void; get(ownerId: string, id: string): InteractiveSessionRecord | undefined; getUnscoped(id: string): InteractiveSessionRecord | undefined; liveRecords(ownerId: string): InteractiveSessionRecord[]; allLiveRecords(): InteractiveSessionRecord[]; owners(): string[]; list(ownerId: string): SessionSummary[]; transition(record: InteractiveSessionRecord, to: SessionState, patch?: { terminationReason?: TerminationReason | undefined; processOutcome?: ProcessOutcome | undefined; cleanupVerified?: boolean | undefined; now?: number | undefined; }): boolean; enrich(record: InteractiveSessionRecord, patch: { terminationReason?: TerminationReason | undefined; processOutcome?: ProcessOutcome | undefined; cleanupVerified?: boolean | undefined; }): void; fenceOwner(ownerId: string): void; unfenceOwner(ownerId: string): void; isFenced(ownerId: string): boolean; private pruneTerminal; }