/** Framework used to generate property-based tests. */
export type PropertyTestFrameworkTarget = 'fast-check' | 'hypothesis' | 'jqwik' | 'generic';
/**
 * A single property-based test derived from an acceptance criterion.
 * Contains the invariant description, input domain, generated code, and target framework.
 */
export interface PropertyTest {
    /** Human-readable description of the invariant being tested. */
    invariant: string;
    /** Description of the input domain (e.g., "positive floats", "non-empty strings"). */
    inputDomain: string;
    /** Generated code snippet for the property test. */
    generatorCode: string;
    /** Target property-based testing framework. */
    framework: PropertyTestFrameworkTarget;
    /** Shrink strategy hint for the framework. */
    shrinkStrategy: string;
}
/** Result of extracting property tests from acceptance criteria. */
export interface PropertyTestExtractionResult {
    /** All extracted property tests. */
    tests: PropertyTest[];
    /** Detected framework for this project. */
    detectedFramework: PropertyTestFrameworkTarget;
    /** Raw acceptance criteria that were analyzed. */
    analyzedCriteria: string[];
}
/** Input for the property-based test generator. */
export interface PropertyBasedGeneratorInput {
    /** Acceptance criteria strings to analyze. */
    criteria: string[];
    /** Project language for framework detection. */
    language: string;
    /** Project stack for framework detection (optional). */
    stack?: string[];
}
/**
 * Internal pattern entry for matching acceptance criteria to invariants.
 * Defined in types to satisfy the "types only in src/types/" ESLint rule.
 */
export interface InvariantPatternEntry {
    /** Regex to match the criterion text. */
    pattern: RegExp;
    /** Function that returns the invariant description and input domain. */
    extract: (match: RegExpMatchArray, raw: string) => {
        invariant: string;
        inputDomain: string;
    };
}
//# sourceMappingURL=property-testing.d.ts.map