import type Database from 'better-sqlite3'; import type { Task, TaskResult, TaskDetail, TaskAddOptions, TaskMoveContext, TaskUpdateFields } from '../models/task'; import type { TaskStatus } from '../models/common'; import { validateOwnerRole } from '../validators/owner-validator'; /** * Add a new task to a sprint. * * v2: No captain-only owner validation. Any valid role can own a task in any stage. * * @param db - Database connection * @param sprintId - Sprint ID * @param content - Task content (nullable; can be populated via --content-file) * @param owner - Owner role (must be valid) * @param opts - Optional task properties * @returns The created task result * @throws TaskBadSprintError if sprint doesn't exist or is closed * @throws TaskOwnerRequiredError if owner is empty * @throws various validation errors */ export declare function addTask(db: Database.Database, sprintId: string, content: string | null, owner: string, opts?: TaskAddOptions): TaskResult; /** * Move a task: status transition, stage transition, owner change, or combined. * * v2 per AD-0039 / AD-0031: * - Case-insensitive validation for status, stage, owner * - Closest-match suggestions via Levenshtein distance * - Free stage transitions (forward, backward, same-stage all allowed) * - Non-terminal Dropped (can recover to Backlog/To Do) * - Dry-run mode: validate without persisting * - Compulsory parameters: at least one of --to, --stage, --owner * - No --sprint override; move always operates on active sprint * * @param db - Database connection * @param taskId - Task ID (4-digit NNNN) * @param opts - Move options: targetStatus, targetStage, context, dryRun, sprintId * @returns Updated task result */ export declare function moveTask(db: Database.Database, taskId: string, opts: { targetStatus?: string; targetStage?: string; context?: TaskMoveContext; sprintId?: string; dryRun?: boolean; }): TaskResult; /** * Update task metadata (content/type/priority/points/scope/acceptance). * Does NOT change task status, stage, owner, or sprint — use moveTask for those. * * Per AD-0038: rejects stage, owner, sprint fields at the service layer. */ export declare function updateTask(db: Database.Database, taskId: string, fields: TaskUpdateFields, sprintId?: string): TaskResult; /** * Remove a task (permanent delete). */ export declare function removeTask(db: Database.Database, taskId: string, sprintId?: string): void; /** * Show detailed task information including sprint name and parent content. */ export declare function showTask(db: Database.Database, taskId: string, sprintId?: string): TaskDetail; /** * List tasks for a sprint with optional filters. */ export declare function listTasks(db: Database.Database, sprintId: string, filters?: { status?: TaskStatus; owner?: string; }): Task[]; /** * Get task status counts for a sprint. */ export declare function getTaskStatusCounts(db: Database.Database, sprintId: string): Record; export { validateOwnerRole }; //# sourceMappingURL=task.d.ts.map