/** A claim older than this with no refresh is reclaimable (owner presumed dead). */
export declare const CLAIM_STALE_MS: number;
/**
 * Derive the per-session owner token, keyed ONLY on the stable instanceId
 * (== the session registry sessionId == the read path's targetSessionId). Both
 * the dispatcher (read side) and the provider instance (claim/release side) pass
 * this same id, so their tokens always agree and the claim isolation holds.
 *
 * Returns '' when no instanceId is available — the caller then skips claiming
 * (the exclusion checks still run against existing claims). This is the SSOT
 * rule: there is exactly ONE token form. The removed legacy fallback derived a
 * `spawn:<workspace>:<sessionStartedAtMs>` token from the spawn timestamp when
 * the instanceId was missing; because one session's spawn time is sampled
 * independently at three sites (instance startedAt, adapter spawnedAtMs, registry
 * spawnedAtMs) those never matched, so the SAME session's instance-side and
 * read-side tokens silently diverged and the claim mutual-exclusion collapsed
 * (the antigravity conversation crosswire). An empty token (skip-claim) is
 * strictly safer than a token that disagrees with the same session's other
 * token. workspace/sessionStartedAtMs are kept in the signature for call-site
 * compatibility but no longer affect the token.
 */
export declare function antigravityOwnerToken(workspace: string, sessionStartedAtMs: number, instanceId?: string): string;
/**
 * Claim `uuid` for `owner`. Succeeds (and refreshes) when the conversation is
 * unclaimed, already owned by this owner, or held by a stale (abandoned) owner.
 * Fails when a DIFFERENT live owner holds it. Returns whether `owner` holds the
 * claim after the call.
 */
export declare function claimAntigravityConversation(uuid: string, owner: string, now?: number): boolean;
/** True when `uuid` is held by a live owner OTHER than `owner`. */
export declare function isAntigravityConversationClaimedByOther(uuid: string, owner: string, now?: number): boolean;
/** The live owner of `uuid`, or undefined when unclaimed or stale. */
export declare function antigravityConversationOwner(uuid: string, now?: number): string | undefined;
/** Release a single conversation, only if held by `owner` (or `owner` empty). */
export declare function releaseAntigravityConversation(uuid: string, owner?: string): void;
/** Release every conversation held by `owner` (called on session shutdown). */
export declare function releaseAntigravityOwner(owner: string): void;
/** Test-only: wipe all claims so each test starts from a clean registry. */
export declare function __resetAntigravityClaimRegistry(): void;
