/**
 * In-process mutex for git operations so that only one git operation runs at a time
 * across both the UI (socket handlers) and Clark (git tool). Prevents overlapping
 * commits, pulls, etc.
 */
export interface GitOperationLock {
    /**
     * Try to acquire the lock without blocking.
     * @returns If acquired: { acquired: true, release }. Call release() when done (e.g. in finally).
     *          If lock is held: { acquired: false }. Caller should fail with a "busy" message.
     */
    tryAcquire(): {
        acquired: true;
        release: () => void;
    } | {
        acquired: false;
    };
}
export declare function createGitOperationLock(): GitOperationLock;
export declare const GIT_OPERATION_BUSY_MESSAGE = "Another git operation is in progress. Please wait for it to complete and try again.";
export declare const GIT_OPERATION_BUSY_MESSAGE_FOR_CLARK = "Git is currently in use (another operation is in progress, e.g. from the Versions panel). Please wait for it to complete and try again.";
//# sourceMappingURL=git-operation-lock.d.ts.map