import type { LocusConnectionEpoch, LocusConnectionContext, LocusDisposer, LocusResult, LocusSessionCredential, LocusSessionDiagnostics, LocusSessionId, LocusSessionLifecycleEvent, LocusSessionOptions } from "../../types/locus.types.js"; type SessionAttachment = Readonly<{ fence: (sessionId: LocusSessionId, epoch: LocusConnectionEpoch) => void; }>; type SessionSuccess = Readonly<{ sessionId: LocusSessionId; epoch: LocusConnectionEpoch; resumable: boolean; credential?: LocusSessionCredential; }>; export type LocusSessionManager = Readonly<{ create: (sessionId: LocusSessionId, resumable: boolean, attachment: SessionAttachment, disposeResources: LocusDisposer, subscriptionCount: () => number, context?: LocusConnectionContext) => LocusResult; reattach: (credential: unknown, attachment: SessionAttachment, context?: LocusConnectionContext) => LocusResult; detach: (sessionId: LocusSessionId, epoch: LocusConnectionEpoch) => boolean; goodbye: (sessionId: LocusSessionId, epoch: LocusConnectionEpoch) => LocusResult; /** Permanently release one attached non-resumable operation session. */ release_ephemeral: (sessionId: LocusSessionId, epoch: LocusConnectionEpoch) => boolean; is_active: (sessionId: LocusSessionId, epoch: LocusConnectionEpoch) => boolean; debug: () => LocusSessionDiagnostics; onChange: (listener: (event: LocusSessionLifecycleEvent) => void) => LocusDisposer; dispose: LocusDisposer; }>; export declare function make_locus_session_manager(options?: LocusSessionOptions): LocusSessionManager; export {}; //# sourceMappingURL=locus.session.d.ts.map