/** * Persistence for project tasks. Keeps CodeIndexDB from owning task CRUD logic. */ /** Minimal collection interface supported by the SQLite adapter. */ interface Collection { find(query?: Record): T[]; findOne(query: Record): T | null; insert(doc: T): T; update(doc: T): void; remove(doc: T): void; } import type { CompleteProjectTaskResult, CreateProjectTaskInput, ListProjectTasksOptions, ListProjectTasksTreeNode, ProjectTaskDeleteMode, ProjectTask, ProjectTaskDocument } from '../types/projectTask.js'; export declare class ProjectTaskRepository { private readonly getTasksCollection; private readonly persist; constructor(getTasksCollection: () => Collection, persist: () => void); private static isDone; private static isClosed; private getTaskById; private getDirectChildren; private getDescendants; private sortRows; private getOpenDependencyTaskIds; private ensureDependencyCycleFree; private normalizeAndValidateBlockedBy; private assertParentReferenceValid; private assertDoneAllowed; private assertNoOpenDependencies; create(input: CreateProjectTaskInput): ProjectTask; getById(taskId: string): ProjectTask | null; /** * Find non-closed tasks matching a violation fingerprint. * Returns an empty array if fingerprint is null/undefined or no match is found. */ findOpenByFingerprint(fingerprint: string | null | undefined): ProjectTaskDocument[]; list(projectPath: string, options?: ListProjectTasksOptions): ProjectTask[]; listTree(projectPath: string, options?: Omit): ListProjectTasksTreeNode[]; listActionable(projectPath: string, options?: Omit): ProjectTask[]; complete(taskId: string): CompleteProjectTaskResult | null; update(taskId: string, patch: unknown): ProjectTask | null; private removeBlockedByReferences; delete(taskId: string, mode?: ProjectTaskDeleteMode): boolean; } export {}; //# sourceMappingURL=ProjectTaskRepository.d.ts.map