/**
 * Issue claim lock — one active lane/session per in-progress issue.
 */
import type { EngineContext } from './engine-context.js';
import type { VcsOp } from './types.js';
export interface IssueClaim {
    issueId: string;
    laneId: string;
    sessionId?: string;
    claimedAt?: string;
}
/** Read claim from materialized store; ignores stale claims when lane is gone. */
export declare function getIssueClaim(ctx: EngineContext, issueId: string, rootPath?: string): IssueClaim | null;
export interface ClaimIssueParams {
    issueId: string;
    laneId: string;
    sessionId?: string;
    /** When true, reclaim if same lane/session. */
    allowSame?: boolean;
}
/**
 * Claim an issue for a lane. Throws when another active lane/session holds it.
 */
export declare function claimIssue(ctx: EngineContext, params: ClaimIssueParams, rootPath?: string): Promise<{
    op?: VcsOp;
    alreadyClaimed: boolean;
}>;
/** Release issue claim (pause, close, lane drop). */
export declare function releaseIssueClaim(ctx: EngineContext, issueId: string): Promise<VcsOp | undefined>;
//# sourceMappingURL=issue-claim.d.ts.map