/**
 * Workforce module entry point.
 *
 * Exposes a singleton WorkforceRuntime initialized lazily per workspace root.
 * All MCP tools go through getWorkforce(root).
 */
import { registerWorker, getWorker, listWorkers, listCompanies, heartbeat, retireWorker, markStaleWorkers, recordSpend, adjustScore } from './workers.js';
import { enqueueJob, getJob, listJobs, claimNextReady, advanceToWip, advanceToReview, recordTokens, completeJob, failJob, blockJob, cancelJob } from './jobs.js';
import { claimJob, renewClaim, releaseClaim, reclaimExpiredLocks } from './claim-lock.js';
import { getKanbanBoard, getLaneJobs } from './kanban-view.js';
import { reconcileDag } from './dag.js';
import type { WorkforceDb, Worker, Job, Claim, KanbanBoard, KanbanCard, JobStatus, RegisterWorkerInput, EnqueueJobInput } from './types.js';
export type { Worker, Job, Claim, KanbanBoard, KanbanCard, JobStatus, WorkforceDb };
export { registerWorker, getWorker, listWorkers, listCompanies, heartbeat, retireWorker, markStaleWorkers, recordSpend, adjustScore };
export { enqueueJob, getJob, listJobs, claimNextReady, advanceToWip, advanceToReview, recordTokens, completeJob, failJob, blockJob, cancelJob };
export { claimJob, renewClaim, releaseClaim, reclaimExpiredLocks };
export { getKanbanBoard, getLaneJobs };
export { reconcileDag };
export declare class WorkforceRuntime {
    readonly db: WorkforceDb;
    readonly root: string;
    readonly storageRoot: string;
    readonly degraded: boolean;
    constructor(root: string);
    registerWorker(input: RegisterWorkerInput): Worker;
    getWorker(id: string): Worker | null;
    listWorkers(status?: import('./types.js').WorkerStatus, companyId?: string): Worker[];
    listCompanies(): string[];
    heartbeat(workerId: string): void;
    retireWorker(workerId: string): void;
    markStaleWorkers(staleSecs?: number): string[];
    enqueueJob(input: EnqueueJobInput): Job;
    getJob(id: string): Job | null;
    listJobs(status?: JobStatus, limit?: number, companyId?: string): Job[];
    claimNextReady(workerId: string, leaseMs?: number): Claim | null;
    claimJob(jobId: string, workerId: string, leaseMs?: number): Claim | null;
    advanceToWip(jobId: string, workerId: string): void;
    advanceToReview(jobId: string, workerId: string): void;
    recordTokens(jobId: string, workerId: string, tokens: number): void;
    completeJob(jobId: string, workerId: string): Job | null;
    failJob(jobId: string, workerId: string): Job | null;
    blockJob(jobId: string, workerId: string): Job | null;
    cancelJob(jobId: string): void;
    renewClaim(jobId: string, workerId: string, leaseMs?: number): Claim | null;
    releaseClaim(jobId: string, workerId: string): void;
    reclaimExpiredLocks(): number;
    getKanbanBoard(client?: string): KanbanBoard;
    getLaneJobs(lane: JobStatus): KanbanCard[];
    reconcileDag(): {
        promoted: number;
        blocked: number;
    };
}
export declare function getWorkforce(root?: string): WorkforceRuntime;
