import type { TeamMemberCapabilities, WorkspacePolicy } from '@agent-tower/shared';
export interface LockRequest {
    teamRunId: string;
    memberId: string;
    workspaceId?: string | null;
    projectId?: string | null;
    capabilities: TeamMemberCapabilities;
    workspacePolicy: WorkspacePolicy;
}
export interface HeldLock {
    key: string;
    ownerId: string;
}
export declare class TeamLockService {
    private readonly locks;
    getRequiredLocks(request: LockRequest): string[];
    canAcquire(lockKeys: string[]): boolean;
    acquire(ownerId: string, lockKeys: string[]): boolean;
    isHeldBy(ownerId: string, lockKey: string): boolean;
    release(ownerId: string, lockKeys: string[]): void;
    releaseByOwner(ownerId: string): void;
    listLocks(): HeldLock[];
}
export declare const defaultTeamLockService: TeamLockService;
//# sourceMappingURL=team-lock.service.d.ts.map