export declare const TEAM_ATTACH_CLAIM_FILE = ".attach-claim.json";
export declare const TEAM_ATTACH_CLAIM_STALE_MS = 30000;
export interface TeamAttachClaim {
    holderSessionId: string;
    claimedAt: string;
    heartbeatAt: string;
    pid: number;
}
export declare function assessAttachClaimFreshness(claim: TeamAttachClaim, nowMs?: number, staleMs?: number): {
    isStale: boolean;
    ageMs: number;
};
export declare function readTeamAttachClaim(teamDir: string): Promise<TeamAttachClaim | null>;
export type AcquireTeamAttachClaimResult = {
    ok: true;
    claim: TeamAttachClaim;
    replacedClaim?: TeamAttachClaim;
} | {
    ok: false;
    reason: "claimed_by_other";
    claim: TeamAttachClaim;
};
export declare function acquireTeamAttachClaim(teamDir: string, holderSessionId: string, opts?: {
    force?: boolean;
    staleMs?: number;
    nowMs?: number;
}): Promise<AcquireTeamAttachClaimResult>;
export type TeamAttachClaimHeartbeatResult = "updated" | "not_owner" | "missing";
export declare function heartbeatTeamAttachClaim(teamDir: string, holderSessionId: string, opts?: {
    nowMs?: number;
}): Promise<TeamAttachClaimHeartbeatResult>;
export type TeamAttachClaimReleaseResult = "released" | "not_owner" | "none";
export declare function releaseTeamAttachClaim(teamDir: string, holderSessionId: string, opts?: {
    force?: boolean;
}): Promise<TeamAttachClaimReleaseResult>;
