/**
 * Process-scoped promote mutex — one lane promotion at a time per repo.
 */
export interface PromoteLockRecord {
    pid: number;
    laneId: string;
    acquiredAt: string;
    hostname?: string;
}
/**
 * Acquire the repo-wide promote lock. Throws if another live promote holds it.
 */
export declare function acquirePromoteLock(trellisDir: string, laneId: string, opts?: {
    staleMs?: number;
    force?: boolean;
}): void;
/** Release the promote lock when owned by this process and lane. */
export declare function releasePromoteLock(trellisDir: string, laneId: string): void;
/** Best-effort lock status for CLI / hooks. */
export declare function getPromoteLockStatus(trellisDir: string, staleMs?: number): {
    locked: boolean;
    record?: PromoteLockRecord;
    stale?: boolean;
};
/** Remove a stale or abandoned promote lock file. */
export declare function clearPromoteLock(trellisDir: string): boolean;
//# sourceMappingURL=promote-lock.d.ts.map