export interface ApiContract {
    type: 'openapi' | 'graphql' | 'trpc' | 'grpc' | 'rest-informal';
    path?: string;
    endpoints: string[];
    sharedTypes?: string;
}
export interface ContractEndpoint {
    method: string;
    path: string;
    requestSchema: Record<string, unknown>;
    responseSchema: Record<string, unknown>;
    errorSchemas: Record<string, unknown>[];
    examples: {
        request: unknown;
        response: unknown;
    }[];
}
export interface MockDefinition {
    type: 'api-endpoint' | 'service' | 'repository' | 'external-api';
    name: string;
    inputSchema: Record<string, unknown>;
    outputSchema: Record<string, unknown>;
    sampleData: unknown[];
    delayMs?: number;
}
export interface TestDefinition {
    name: string;
    type: 'unit' | 'integration' | 'e2e' | 'load';
    file: string;
    description: string;
    priority: 'critical' | 'high' | 'medium' | 'low';
    automatable: boolean;
}
export interface TestFile {
    path: string;
    framework: string;
    content: string;
    ready: boolean;
}
export interface GenerateTestPlanResult {
    unitTests: TestDefinition[];
    integrationTests: TestDefinition[];
    e2eTests: TestDefinition[];
    loadTests?: TestDefinition[];
    manualTests: string[];
    coverageTarget: number;
    testFiles: TestFile[];
    commands: string[];
}
export interface GenerateTestPlanInput {
    specId: string;
    projectId: string;
    autoGenerate?: boolean;
}
export type TestingFramework = 'jest' | 'vitest' | 'mocha' | 'pytest' | 'junit' | 'xunit' | 'rspec' | 'go-test';
export type BDDFramework = 'cucumber' | 'behave' | 'specflow' | 'godog' | 'gauge' | 'jbehave';
export type PropertyTestFramework = 'fast-check' | 'hypothesis' | 'quickcheck' | 'proptest' | 'jqwik' | 'gopter' | 'scalacheck';
export type MutationFramework = 'stryker' | 'mutmut' | 'pitest' | 'cargo-mutants' | 'cosmic-ray';
export type LoadTestFramework = 'k6' | 'locust' | 'gatling' | 'jmeter' | 'artillery' | 'autocannon' | 'wrk' | 'hey' | 'bombardier';
export type ChaosFramework = 'litmuschaos' | 'chaos-monkey' | 'gremlin' | 'toxiproxy' | 'aws-fis';
export type VisualRegFramework = 'percy' | 'chromatic' | 'backstopjs' | 'applitools' | 'argos' | 'playwright-snapshot';
export type ContractFormat = 'pact' | 'openapi' | 'graphql-schema' | 'trpc-router';
export type TestingStrategy = 'testing-trophy' | 'testing-pyramid' | 'honeycomb';
export type TestDoublePattern = 'jest-mock' | 'vitest-mock' | 'sinon-stub' | 'sinon-spy' | 'fake' | 'in-memory';
export interface TestScaffold {
    filepath: string;
    content: string;
    framework: TestingFramework | BDDFramework;
    testType: 'unit' | 'integration' | 'e2e' | 'property' | 'load' | 'visual' | 'contract';
    runCommand: string;
}
export interface ContractSpec {
    format: ContractFormat;
    content: string;
    endpoints: ContractSpecEndpoint[];
}
export interface ContractSpecEndpoint {
    path: string;
    method: string;
    requestSchema?: Record<string, unknown>;
    responseSchema?: Record<string, unknown>;
    statusCodes: number[];
}
export interface ApiMockDefinition {
    endpoint: string;
    method: string;
    sampleData: Record<string, unknown>;
    delayMs: number;
    errorResponses: ErrorResponse[];
}
export interface ErrorResponse {
    status: number;
    body: Record<string, unknown>;
}
export interface ContractValidation {
    endpoint: string;
    compliant: boolean;
    issues: string[];
}
export type MockServerTool = 'msw' | 'json-server' | 'wiremock';
/** Function signature for a per-framework mock code template. */
export type MockTemplateFunction = (targets: string[], title: string) => string;
export interface DetectedTestingEcosystem {
    framework: TestingFramework | null;
    bddFramework: BDDFramework | null;
    propertyFramework: PropertyTestFramework | null;
    loadFramework: LoadTestFramework | null;
    chaosFramework: ChaosFramework | null;
    visualRegFramework: VisualRegFramework | null;
    mutationFramework: MutationFramework | null;
    testDoublePattern: TestDoublePattern | null;
    testStrategy: TestingStrategy;
}
export type HypermediaTestFramework = 'pytest-httpx' | 'net-http-httptest' | 'spring-mvc-test' | 'rack-test' | 'laravel-http' | 'playwright-ssr';
export type MutationTool = 'stryker' | 'mutmut' | 'cosmic-ray' | 'pitest' | 'cargo-mutants' | 'gremlins' | 'stryker4s' | 'stryker-dotnet';
export type ChaosTool = 'litmus-chaos' | 'chaos-monkey' | 'gremlin' | 'aws-fis' | 'azure-chaos-studio';
export type A11yFramework = 'axe-core' | 'pa11y' | 'lighthouse-ci' | 'jest-axe';
export interface MutationConfig {
    tool: MutationTool;
    thresholdScore: number;
    excludePatterns: string[];
    includeReporters: string[];
    /** Full content of the generated mutation config file. */
    configFile: string;
}
export interface A11yGap {
    element: string;
    violation: string;
    wcagLevel: 'A' | 'AA' | 'AAA';
    fix: string;
}
export interface PropertyScaffold {
    name: string;
    invariant: string;
    scaffold: string;
}
export interface ChaosExperiment {
    name: string;
    type: 'pod-delete' | 'network-latency' | 'node-failure' | 'cpu-stress';
    namespace: string;
    verificationSteps: string[];
}
export interface A11yTestScaffold {
    framework: A11yFramework;
    testFile: string;
}
export interface AdvancedTestingDetectionResult {
    hasPropertyBased: boolean;
    hasMutation: boolean;
    hasChaos: boolean;
    hasA11y: boolean;
}
export interface TestPlanLayer {
    type: 'unit' | 'integration' | 'e2e' | 'contract' | 'visual' | 'load' | 'security' | 'a11y';
    needed: boolean;
    reason: string;
    priority: 'critical' | 'high' | 'medium' | 'low';
    estimatedHours: number;
    tools: string[];
    frameworks: string[];
}
export interface TestPlan {
    projectId: string;
    generatedAt: string;
    layers: TestPlanLayer[];
    totalEstimatedHours: number;
    mcpRecommendations: string[];
    starterKit: boolean;
}
export interface TestScenarioStep {
    type: 'happy-path' | 'error' | 'edge-case';
    given: string;
    when: string;
    then: string;
    testData?: string;
}
export interface TestScenario {
    criterionId: string;
    criterion: string;
    scenarios: TestScenarioStep[];
}
export interface TestSpec {
    specId: string;
    specTitle: string;
    locale: string;
    scenarios: TestScenario[];
    totalScenarios: number;
}
export interface ScenarioLabels {
    happyPath: string;
    error: string;
    edgeCase: string;
    givenSetup: string;
    whenExecuted: string;
    thenCorrect: string;
    thenFails: string;
    thenEdge: string;
    negatePrefix: string;
    defaultSetup: string;
}
export interface ScenarioLabelsWithLocale extends ScenarioLabels {
    locale: string;
}
export interface LocaleTriple {
    es: string;
    pt: string;
    en: string;
}
export interface EdgeTriplet {
    given: string;
    when: string;
    then: string;
}
//# sourceMappingURL=testing.d.ts.map