export type EpNameState = "claimed" | "launching" | "live" | "preserved" | "relaunching" | "draining" | "released"; export interface EpNameIncarnation { instanceId: string; processEpoch: number; } export type EpNameClaimant = { kind: "action"; goalId: string; gen: number; } | { kind: "direct"; instanceId: string; processEpoch: number; opId: string; } | { kind: "incumbent"; backfillId: string; }; export interface EpNameRow { v: 1; ts: number; state: EpNameState; claimant: EpNameClaimant | null; lifecycleUid?: string; launchAttemptId?: string; executor?: EpNameIncarnation; runtimeOwner?: EpNameIncarnation; enteredAt?: number; } /** Who is taking the edge. The actor is NOT inferable from the row — that is the whole reason it is * an argument: a sweeper and a claimant produce byte-identical writes, and the difference between * a legitimate retirement and a split-brain is which of them was entitled to make it. */ export type EpNameActor = { role: "claimant"; } | { role: "holder"; lifecycleUid: string; } | { role: "sweeper"; } | { role: "operator"; } | { role: "allocator"; } | { role: "cutover"; }; /** Parse a row from CURRENT BYTES with no knowledge of history — which is the property that makes a * sweeper able to act on a row it did not write. */ export declare function parseEpName(value: unknown): EpNameRow; /** * Validate a transition against § S2. `prev` is `null` for the two creation edges. * * `gateSatisfied` is the caller's attestation that the edge's external precondition holds — the * `goaleff` election won, the process authoritatively quiesced, the executor dead by the gate * predicate, the operator's host-level attestation. It is a REQUIRED argument for the same reason * `terminalExists` is in § S1: a precondition the caller can satisfy by not mentioning it is not a * precondition. */ export declare function assertEpNameEdge(prev: EpNameRow | null, next: EpNameRow, actor: EpNameActor, opts: { gateSatisfied: boolean; }): void; //# sourceMappingURL=endpoint-epname.d.ts.map