import type { ScanObservation, ScanQuery } from '../public/scan-query.js'; import type { BackendScanPlanner, ScanPlanningContext } from '../backend-contract/scan-planning.js'; import type { NormalizedScanObservation, NormalizedScanQuery } from '../backend-contract/scan-query.js'; export declare const MAX_PLANNER_DIFFERENTIAL_SCENARIOS = 32; export interface PlannerDifferentialScenario { readonly id: string; readonly query: ScanQuery; readonly observation: ScanObservation; readonly expectedMatch: boolean; } export interface PlannerDifferentialNativeMatcher { (filter: NativeFilter, observation: NormalizedScanObservation): boolean; } export interface PlannerDifferentialTckOptions { readonly planner: BackendScanPlanner; readonly context: ScanPlanningContext; readonly scenarios: readonly PlannerDifferentialScenario[]; readonly normalizeQuery?: (query: ScanQuery) => NormalizedScanQuery; readonly normalizeObservation?: (observation: ScanObservation) => NormalizedScanObservation; readonly nativeAccepts: PlannerDifferentialNativeMatcher; } export type PlannerDifferentialFactId = 'planner-native-projection-is-safe-superset' | 'planner-residual-matcher-is-differentially-equivalent' | 'planner-diagnostics-are-bounded-and-payload-free'; export interface PlannerDifferentialFact { readonly id: PlannerDifferentialFactId; readonly holds: boolean; readonly detail: Readonly>; } export interface PlannerDifferentialObservation { readonly id: string; readonly expectedMatch: boolean; readonly referenceMatch: boolean; readonly nativeAccepted: boolean; readonly residualMatch: boolean; readonly optimizedMatch: boolean; } export interface PlannerDifferentialTckReport { readonly scenarioCount: number; readonly observations: readonly PlannerDifferentialObservation[]; readonly facts: readonly PlannerDifferentialFact[]; } /** * Runs a bounded, deterministic planner differential against the canonical * residual matcher. The native matcher is supplied by the host test because * this helper never invents platform filter semantics. */ export declare function runPlannerDifferentialTck(options: PlannerDifferentialTckOptions): PlannerDifferentialTckReport; //# sourceMappingURL=planner-differential.d.ts.map