import type { LiveMapAnyOp, LiveMapCommit } from "../../types/livemap.types.js"; import { type PreparedLiveMapTransition } from "../livemap/livemap.authority.js"; export type LocusAuthorityMutationSource = "locus" | "action" | "document-action" | "link" | "checkpoint"; export type LocusAuthorityGateInput = Readonly<{ map: TMap; transition: PreparedLiveMapTransition; commit: LiveMapCommit; baseRevision: number; nextRevision: number; }>; export type LocusAuthorityGate = (input: LocusAuthorityGateInput) => void | Promise; export type LocusAuthorityErrorCode = "LOCUS_AUTHORITY_ALREADY_MANAGED" | "LOCUS_AUTHORITY_CLOSED" | "LOCUS_AUTHORITY_GATE_REJECTED" | "LOCUS_AUTHORITY_TERMINAL" | "LOCUS_AUTHORITY_ACCEPTED_INGESTION_FAILED"; export declare class LocusAuthorityError extends Error { readonly code: LocusAuthorityErrorCode; constructor(code: LocusAuthorityErrorCode, message: string, options?: ErrorOptions); } export type LocusAuthorityEvent = Readonly<{ phase: "enqueued" | "prepared" | "gate-started" | "gate-completed" | "gate-failed" | "accepted" | "notification-failed" | "failed" | "released"; source: LocusAuthorityMutationSource; queueDepth: number; baseRevision?: number; nextRevision?: number; changed?: boolean; errorCode?: string; }>; export type LocusExclusiveAuthority = Readonly<{ mutate: (mutation: (draft: TMap) => LiveMapCommit, source?: LocusAuthorityMutationSource, context?: TContext) => Promise>; runExclusive: (operation: () => TResult | Promise) => Promise; dispose: () => void; closed: Promise; readonly failed: boolean; }>; /** One Locus-scoped FIFO authority queue with one future durability gate. */ export declare function make_locus_exclusive_authority(map: TMap, options: Readonly<{ gate?: LocusAuthorityGate; accepted: (commit: LiveMapCommit, notificationFailureCount: number, source: LocusAuthorityMutationSource, context: TContext | undefined) => void; event?: (event: LocusAuthorityEvent) => void; afterGate?: (transition: PreparedLiveMapTransition) => void; released?: () => void; terminal?: (error: LocusAuthorityError) => void; }>): LocusExclusiveAuthority; //# sourceMappingURL=locus.authority.d.ts.map