import type Database from 'better-sqlite3'; import type { Review, ReviewDetail, ReviewAddOptions, TestReport, TestReportAddOptions, Lesson, LessonAddOptions, LessonResult, LessonUpdateFields } from '../models/review'; /** * Add a review with explicit caller-provided 4-digit ID. * Wrapped with review: advisory lock (AD-0006) for multi-process coordination. * Content must be provided (from --content-file). * * SAD-0031 Part A: caller provides explicit ID. * Duplicate validation via EXISTS on composite index (sprint_id, review_num). */ export declare function addReview(db: Database.Database, sprintId: string, reviewId: string, reviewType: string, verdict: string, content: string, opts?: ReviewAddOptions): Review; /** * List reviews for a sprint. */ export declare function listReviews(db: Database.Database, sprintId: string, filters?: { type?: string; verdict?: string; }): Review[]; /** * Get a review by review number within a sprint (SAD-0010 Part C). * Both reviewNum and sprintId are required. * * @param db - Database connection * @param reviewNum - Review number (1-based, displayed to user) * @param sprintId - Sprint ID (required) * @returns Review detail * @throws ReviewNotInSprintError if review not found in the specified sprint */ export declare function getReview(db: Database.Database, reviewNum: number, sprintId: string): ReviewDetail; /** * Update an existing review. * Wrapped with review: advisory lock (AD-0006). * * @param db - Database connection * @param reviewNum - Review number (1-based) * @param sprintId - Sprint ID (required) * @param updates - Fields to update (content, verdict, review_type, counts, etc.) * @returns Updated Review detail * @throws ReviewNotInSprintError if review not found * @throws ReviewNoUpdateFieldsError if no update fields provided */ export declare function updateReview(db: Database.Database, reviewNum: number, sprintId: string, updates: { content?: string; verdict?: string; reviewType?: string; assetName?: string; assetRef?: string; critical?: number; major?: number; minor?: number; suggestion?: number; }): ReviewDetail; /** * Remove a review (permanent delete) — AD-0054. * * Lookup (fail fast) → advisory lock review: → * re-validate existence (TOCTOU) → DELETE → return { id, removed: true }. */ export declare function removeReview(db: Database.Database, reviewId: string, sprintId?: string): { id: string; removed: boolean; }; /** * Add a test report with explicit caller-provided 4-digit ID. * Wrapped with review:global advisory lock (AD-0006) for multi-process coordination. * SAD-0031 Part A: no task association. * Duplicate validation via EXISTS on composite index (sprint_id, id). */ export declare function addTestReport(db: Database.Database, sprintId: string, testReportId: string, total: number, passed: number, failed: number, opts?: TestReportAddOptions): TestReport; /** * Update an existing test report. * Wrapped with review:global advisory lock (AD-0006). * * @param db - Database connection * @param testReportId - Test report ID (4-digit zero-padded) * @param sprintId - Sprint ID * @param updates - Fields to update * @returns Updated TestReport * @throws error with ERR-TESTREPORT-004 if not found */ export declare function updateTestReport(db: Database.Database, testReportId: string, sprintId: string, updates: { total?: number; passed?: number; failed?: number; skipped?: number; command?: string; duration?: number; content?: string; }): TestReport; /** * List test reports. Task filter removed per SAD-0031 Part B. */ export declare function listTestReports(db: Database.Database, sprintId?: string): TestReport[]; /** * Get a single test report by caller-provided ID and sprint. * SAD-0031 Part A: sprint-scoped lookup by explicit ID string. * * @param db - Database connection * @param testReportId - Caller-provided test report ID (e.g., "0001") * @param sprintId - Sprint ID (required per URD-026) * @returns Test report * @throws error with ERR-TESTREPORT-004 if not found */ export declare function getTestReport(db: Database.Database, testReportId: string, sprintId: string): TestReport; /** * Remove a test report (permanent delete) — AD-0054. * * Lookup (fail fast) → advisory lock review:global → * re-validate existence (TOCTOU) → DELETE → return { id, removed: true }. */ export declare function removeTestReport(db: Database.Database, testReportId: string, sprintId?: string): { id: string; removed: boolean; }; /** * Add a lesson (retained for internal use, e.g., sprint lessons-data export). * Not CLI-facing — the CLI exposes only show and update. * Post-URD-026: metadata removed, content-only. */ export declare function addLesson(db: Database.Database, _sprintId: string, _title: string, description: string, _category: string, _opts?: LessonAddOptions): Lesson; /** * List lessons (retained for internal use; post-URD-026 no longer sprint-scoped). * Not CLI-facing. */ export declare function listLessons(db: Database.Database, _sprintId?: string): Lesson[]; /** * Get the project's single lesson (singleton pattern, SAD-0010 Part B). * No ID argument — exactly one lesson per project. * * @param db - Database connection * @returns LessonResult * @throws LessonNotFoundError (ERR-LESSON-001) if no lesson exists */ export declare function getLesson(db: Database.Database): LessonResult; /** * Update the project's single lesson (singleton pattern, post-URD-026). * Upsert semantics per AD-0029: creates if absent, updates if exists. * Content-only — all metadata fields removed (URD-026 Part B). * * @param db - Database connection * @param updates - Fields to update; content required * @returns Updated LessonResult * @throws LessonNoUpdateFieldsError if content is empty/missing */ export declare function updateLesson(db: Database.Database, updates: LessonUpdateFields): LessonResult; //# sourceMappingURL=review-service.d.ts.map