/**
 * TestCaseGenerator - Generate test cases from use case scenarios
 *
 * Transforms parsed use case scenarios into structured test case specifications
 * following TC-XXX format with test steps, expected results, and data requirements.
 *
 * @module src/testing/generators/test-case-generator
 * @implements @.aiwg/requirements/use-cases/UC-009-generate-test-artifacts.md
 * @architecture @.aiwg/architecture/software-architecture-doc.md - Section 5.3 TestGenerator
 * @nfr @.aiwg/requirements/nfr-modules/performance.md - NFR-TEST-01 (<10min for 100 reqs)
 * @tests @test/unit/testing/test-case-generator.test.ts
 * @depends @src/testing/generators/use-case-parser.ts
 * @agent @agentic/code/frameworks/sdlc-complete/agents/test-engineer.md
 */
import { UseCaseDocument } from './use-case-parser.js';
export interface TestStep {
    number: number;
    action: string;
    expectedResult: string;
    testData?: string;
}
export interface TestCase {
    id: string;
    name: string;
    description: string;
    priority: 'critical' | 'high' | 'medium' | 'low';
    type: 'positive' | 'negative' | 'boundary' | 'error';
    level: 'unit' | 'integration' | 'e2e';
    preconditions: string[];
    steps: TestStep[];
    postconditions: string[];
    testData: TestDataRequirement[];
    traceability: {
        useCaseId: string;
        scenarioId: string;
        nfrs: string[];
    };
    tags: string[];
    estimatedDuration?: number;
}
export interface TestDataRequirement {
    name: string;
    type: string;
    constraints: string[];
    examples: string[];
}
export interface TestSuite {
    id: string;
    name: string;
    description: string;
    useCaseId: string;
    testCases: TestCase[];
    coverage: {
        mainScenario: boolean;
        extensionsCovered: number;
        exceptionsCovered: number;
        total: number;
    };
    generatedAt: string;
}
export interface GenerationOptions {
    includeNegativeTests?: boolean;
    includeBoundaryTests?: boolean;
    includeErrorTests?: boolean;
    testLevels?: Array<'unit' | 'integration' | 'e2e'>;
    maxTestsPerScenario?: number;
    generateDataRequirements?: boolean;
}
export interface GenerationResult {
    success: boolean;
    suite?: TestSuite;
    errors: string[];
    warnings: string[];
    stats: {
        totalTestCases: number;
        positiveTests: number;
        negativeTests: number;
        boundaryTests: number;
        errorTests: number;
        generationTimeMs: number;
    };
}
export declare class TestCaseGenerator {
    private options;
    private testCounter;
    constructor(options?: GenerationOptions);
    /**
     * Generate test suite from a use case document
     *
     * @param document - Parsed use case document
     * @returns Generation result with test suite
     */
    generate(document: UseCaseDocument): GenerationResult;
    /**
     * Generate test cases from multiple use case documents
     *
     * @param documents - Array of parsed use case documents
     * @returns Map of use case ID to generation result
     */
    generateBatch(documents: UseCaseDocument[]): Map<string, GenerationResult>;
    private generateScenarioTests;
    private createPositiveTest;
    private createErrorTest;
    private generateNegativeTests;
    private generateBoundaryTests;
    private nextTestId;
    private determineTestLevel;
    private actionToTestAction;
    private inferExpectedResult;
    private inferTestData;
    private extractDataRequirements;
    private estimateDuration;
}
//# sourceMappingURL=test-case-generator.d.ts.map