/**
 * 测试策略契约 — 问题三十四 (Test Strategy Contract)。
 *
 * 核心规则:
 * - enforced contract 必须有 lifecycle test
 * - safety guard 必须有 must_fail case
 * - 测试数量不得作为质量 KPI
 * - skipped 不得计入 coverage
 * - 不得以测试数量作为清理目标
 */
export type TestType = "unit" | "contract" | "lifecycle" | "integration" | "real_fixture" | "negative" | "must_fail";
export interface RequiredTestCoverage {
    contract_id: string;
    required_test_types: TestType[];
    coverage_status: "satisfied" | "missing" | "partial";
    satisfied_types: TestType[];
    missing_types: TestType[];
    test_files: string[];
    has_lifecycle_test: boolean;
    has_must_fail_case: boolean;
}
export interface TestStrategyContract {
    strategy_id: string;
    contract_id: string;
    required_tests: RequiredTestCoverage[];
    total_required: number;
    total_satisfied: number;
    all_satisfied: boolean;
}
export interface TestPruneMatrix {
    target_files: string[];
    unique_assertions: number;
    risk_coverage: string[];
    can_prune: boolean;
    prune_reason?: string;
}
/**
 * 评估契约测试覆盖。
 */
export declare function evaluateTestCoverage(contractId: string, existingTests: Array<{
    file: string;
    type: TestType;
    is_lifecycle: boolean;
    is_must_fail: boolean;
}>): RequiredTestCoverage;
/**
 * 评估测试清理候选。
 * 不得以数量作为清理目标；必须有独有断言迁移证明。
 */
export declare function evaluateTestPrune(targetFiles: string[], uniqueAssertions: number, riskCoverage: string[]): TestPruneMatrix;
/**
 * 验证测试策略规则。
 */
export declare function validateTestStrategy(contractId: string, isEnforced: boolean, coverage: RequiredTestCoverage): Array<{
    error: string;
    severity: "hard_fail" | "warning";
}>;
//# sourceMappingURL=test_strategy.d.ts.map