import { Task, RequestEntry, TaskStatus } from './interfaces.js';
export declare class TaskRepository {
    private db;
    constructor();
    /**
     * Converts a database row to a Task object
     */
    private rowToTask;
    /**
     * Converts a Task object to database row format
     */
    private taskToRow;
    /**
     * Converts a database row to a RequestEntry object
     */
    private rowToRequest;
    /**
     * Gets metadata value by key
     */
    getMetadata(key: string): string | null;
    /**
     * Sets metadata value by key
     */
    setMetadata(key: string, value: string): void;
    /**
     * Gets the next request ID and increments the counter
     */
    getNextRequestId(): string;
    /**
     * Gets the next task ID and increments the counter
     */
    getNextTaskId(): string;
    /**
     * Creates a new request
     */
    createRequest(originalRequest: string, splitDetails?: string): string;
    /**
     * Finds request by ID
     */
    findRequestById(requestId: string): RequestEntry | null;
    /**
     * Gets all requests
     */
    findAllRequests(): RequestEntry[];
    /**
     * Updates request completion status
     */
    updateRequestCompletion(requestId: string, completed: boolean): number;
    /**
     * Deletes a request and all its tasks
     */
    deleteRequest(requestId: string): number;
    /**
     * Creates a new task
     */
    createTask(task: Task, requestId: string): void;
    /**
     * Finds task by ID
     */
    findTaskById(taskId: string): Task | null;
    /**
     * Finds all tasks for a request
     */
    findTasksByRequestId(requestId: string): Task[];
    /**
     * Finds tasks by parent ID
     */
    findTasksByParentId(parentId: string): Task[];
    /**
     * Finds tasks by status
     */
    findTasksByStatus(status: TaskStatus): Task[];
    /**
     * Updates task status
     */
    updateTaskStatus(taskId: string, status: TaskStatus, completedDetails?: string): number;
    /**
     * Updates task failure information
     */
    updateTaskFailure(taskId: string, failureReason: string, suggestedRetryStrategy?: string): number;
    /**
     * Updates task details
     */
    updateTask(taskId: string, updates: Partial<Task>): number;
    /**
     * Deletes a task
     */
    deleteTask(taskId: string): number;
    /**
     * Deletes all tasks for a request
     */
    deleteTasksByRequestId(requestId: string): number;
    /**
     * Adds a dependency to a task
     */
    addDependency(taskId: string, dependencyId: string): number;
    /**
     * Removes a dependency from a task
     */
    removeDependency(taskId: string, dependencyId: string): number;
    /**
     * Adds a subtask to a parent task
     */
    addSubtask(parentId: string, subtaskId: string): number;
    /**
     * Removes a subtask from a parent task
     */
    removeSubtask(parentId: string, subtaskId: string): number;
    /**
     * Archives a task tree (moves tasks to archived_tasks table)
     */
    archiveTaskTree(taskIds: string[], originalRequestId: string, originalRequestText: string): number;
    /**
     * Gets archived tasks by original request ID
     */
    findArchivedTasksByRequestId(originalRequestId: string): Task[];
    /**
     * Merges multiple tasks into one (transactional)
     */
    mergeTasks(taskIds: string[], mergedTask: Task, requestId: string): void;
    /**
     * Executes multiple operations in a transaction
     */
    transaction<T>(operations: () => T): T;
}
