import type { ProjectSummary } from './projects.js';
import { type WorkspaceDoc } from './docs.js';
/** One TODO checklist entry: its text and whether it is checked off. */
export interface QueueItem {
    text: string;
    done: boolean;
}
/** One project's rolled-up TODO queue. */
export interface ProjectQueue {
    projectId: string;
    projectName: string;
    /** Count of unchecked items (what is still queued). */
    open: number;
    /** Count of all parsed items (open + done). */
    total: number;
    items: QueueItem[];
}
/**
 * Parse the queue entries out of a TODO doc; headings, prose and blank lines are ignored.
 *
 * Every list item is an entry, open unless its checkbox is checked — the sweep's semantics
 * (#1296). Triage agents write the ticket-link (#1164) style (`- [Title](tickets/x.md) — ...`) with no
 * checkbox, and the old checkbox-only regex read that whole queue as empty.
 */
export declare function parseTodoItems(content: string): QueueItem[];
/**
 * Roll up the open TODO queue across the given projects, most-open first. Reads each
 * project's surfaced TODO docs (the `TODO*` half of {@link readDocs}) and parses their
 * checklist items. `read` is injectable so this is unit-testable off disk. Projects with
 * no TODO doc or no checklist items are omitted; a read failure just skips that project.
 */
export declare function collectQueue(projects: ProjectSummary[], read?: (cwd: string) => Promise<WorkspaceDoc[]>): Promise<ProjectQueue[]>;
//# sourceMappingURL=queue.d.ts.map