import type { Spec } from './spec/core.js';
import type { Estimation } from './estimation.js';
import type { SpecStatus } from './common/index.js';
import type { CriterionGroundingRecord, TechnicalReferenceGroundingRecord } from './spec-grounding.js';
/** A criterion in the lean spec frontmatter. */
export interface LeanCriterion {
    text: string;
    done: boolean;
}
/** A history entry in the lean spec frontmatter. */
export interface LeanHistoryEntry {
    date: string;
    event: string;
}
/** A single step in a BDD scenario (SPEC-481). */
export interface BddStep {
    keyword: 'given' | 'when' | 'then' | 'and';
    text: string;
}
/** A BDD Gherkin scenario in a lean spec (SPEC-481). */
export interface BddScenario {
    title: string;
    steps: BddStep[];
    done: boolean;
    tests?: {
        path: string;
        line?: number;
    }[];
}
/** Input for lean spec generation. */
export interface LeanSpecInput {
    spec: Spec;
    description: string;
    estimation: Estimation;
    /** SPEC-461 Phase 3: Extra criteria from autopilot pattern detection. */
    extraCriteria?: string[];
    /** SPEC-1074: Explicit criteria after grounding filters are applied. */
    criteriaOverride?: LeanCriterion[];
    /** SPEC-1074: Criterion-level grounding records for new specs. */
    groundingCriteria?: CriterionGroundingRecord[];
    /** SPEC-1074: Technical reference grounding records for new specs. */
    groundingTechnicalReferences?: TechnicalReferenceGroundingRecord[];
    /** SPEC-481: Acceptance criteria format. Defaults to 'checkbox'. */
    acFormat?: 'checkbox' | 'bdd';
    /** SPEC-1082: Test links to attach to generated BDD scenarios when available. */
    scenarioTestPaths?: string[];
}
/** A file entry in the unified spec.md Technical section. */
export interface LeanFileEntry {
    path: string;
    status: 'pending' | 'done';
}
/** Result of a planu/ cleanup operation (SPEC-466). */
export interface CleanupResult {
    deletedRootFiles: string[];
    deletedSpecFiles: string[];
    totalDeleted: number;
}
export interface PlanuCanonicalPathPolicy {
    readonly canonicalRootFiles: readonly string[];
    readonly canonicalRootDirs: readonly string[];
    readonly canonicalSpecFiles: readonly string[];
    readonly canonicalSpecDirs: readonly string[];
    readonly forbiddenHostAssetRootDirs: readonly string[];
    readonly generatedRuntimePatterns: readonly string[];
    readonly legacyMergeBeforeDeleteFiles: readonly string[];
}
export interface StrictPlanuCleanupResult {
    deleted: string[];
    merged: string[];
    gitignoreUpdated: boolean;
}
export interface StrictPlanuValidationResult {
    ok: boolean;
    offenders: string[];
    contract: string;
}
export interface StrictPlanuValidationOptions {
    specPath?: string;
    includeRoot?: boolean;
}
export interface UpdateStatusBatchInput {
    specIds: string[];
    status: SpecStatus;
    projectId?: string;
    projectPath?: string;
    dryRun?: boolean;
    reviewNotes?: string;
}
/** Report of detected migration drift (SPEC-715). Read-only — no FS mutations. */
export interface MigrationDriftReport {
    /** Count of specs that still have a stray technical.md (need unified migration). */
    unifiedMigrations: number;
    /** Count of specs in old verbose format (need lean migration). */
    leanMigrations: number;
    /** Count of non-canonical files in planu/ root (need cleanPlanuRoot). */
    planuRootCleanup: number;
    details: {
        /** SPEC IDs that have technical.md and need unification. */
        unifiedSpecs: readonly string[];
        /** SPEC IDs in old verbose format. */
        leanSpecs: readonly string[];
        /** Non-canonical file paths in planu/ root or per-spec dirs. */
        rootFiles: readonly string[];
    };
}
/** Branch info for the current project (SPEC-467). */
export interface BranchInfo {
    current: string;
    all: string[];
    count: number;
}
/** Unified result of parsing both checkbox and BDD criteria (SPEC-481). */
export interface ParsedSpecCriteria {
    checkboxes: LeanCriterion[];
    scenarios: BddScenario[];
}
/** Result returned by replaceSectionInSpec (SPEC-1010 PR-C). */
export interface ReplaceSectionResult {
    replaced: boolean;
    appended: boolean;
}
/** Input for lean spec.md Technical section generation. */
export interface LeanTechnicalInput {
    specId: string;
    filesToCreate?: LeanFileEntry[];
    filesToModify?: LeanFileEntry[];
    filesToTest?: LeanFileEntry[];
}
export interface ImplementationContractInput {
    description: string;
    criteria: LeanCriterion[];
    files: {
        create: LeanFileEntry[];
        modify: LeanFileEntry[];
        test: LeanFileEntry[];
    };
    outOfScope: string[];
    verificationCommands: string[];
}
export interface ImplementationContractIssue {
    code: 'contract_missing' | 'contract_subsection_missing' | 'contract_subsection_empty' | 'contract_filler' | 'contract_needs_decision' | 'contract_unmapped_criterion' | 'contract_manual_verification_vague';
    message: string;
}
//# sourceMappingURL=spec-format.d.ts.map