import { type PlanParityComparison, type PlanParityComparisonOptions, type PlanParityDriver, type PlanParityDriverResult, type PlanParityMeasurement, type PlanParityRenderConfig } from "./plan-parity-contract.js";
export type PlanParityTarget = "lambda-local" | `aws:${string}`;
export interface RunPlanProtocolParityOptions {
    fixtureDir: string;
    artifactsDir: string;
    v1Driver: PlanParityDriver;
    v2Driver: PlanParityDriver;
    renderConfig: PlanParityRenderConfig;
    v1PlanSizeCapBytes?: number;
    comparison?: PlanParityComparisonOptions;
}
export interface PlanParityCliOptions {
    fixtureDir: string;
    artifactsDir: string;
    v1Target: PlanParityTarget;
    v2Target: PlanParityTarget;
    renderConfig: PlanParityRenderConfig;
    v1PlanSizeCapBytes?: number;
    expectV1PlanTooLarge: boolean;
    comparison: PlanParityComparisonOptions;
}
export interface RunPlanV2SizePressureOptions {
    fixtureDir: string;
    artifactsDir: string;
    driver: PlanParityDriver;
    renderConfig: PlanParityRenderConfig;
    v1PlanSizeCapBytes: number;
    /**
     * Test seam for the post-render media analyzer. Production callers use
     * the canonical ffmpeg/ffprobe analyzer.
     */
    analyzeDriverResult?: (driverName: string, result: PlanParityDriverResult) => Promise<PlanParityMeasurement>;
}
export type PlanTooLargeProbeOutcome = {
    status: "expected-failure";
    code: "PLAN_TOO_LARGE";
    message: string;
    sizeBytes: number | null;
    limitBytes: number | null;
} | {
    status: "unexpected-success";
    message: string;
} | {
    status: "unexpected-failure";
    code: string | null;
    message: string;
};
export type PlanV2PressureOutcome = {
    status: "success";
    measurement: PlanParityMeasurement;
} | {
    status: "failure";
    message: string;
};
export interface PlanV2SizePressureReport {
    passed: boolean;
    checks: Array<{
        name: "v1-plan-too-large" | "v2-render-success";
        passed: boolean;
        detail: string;
    }>;
    v1: PlanTooLargeProbeOutcome;
    v2: PlanV2PressureOutcome;
}
export declare function parsePlanParityArgs(argv: string[]): PlanParityCliOptions;
export declare function classifyPlanTooLargeProbeFailure(error: unknown): PlanTooLargeProbeOutcome;
/**
 * Prove the migration boundary directly:
 *
 * 1. explicit v1 with a deliberately low cap must fail PLAN_TOO_LARGE;
 * 2. explicit v2 must still run to completion for the same prepared fixture.
 *
 * Unlike semantic parity mode, this API does not compare v1/v2 output because
 * the expected v1 run never produces output. Its durable report records both
 * the typed failure and the fully analyzed v2 success.
 */
export declare function runPlanV2SizePressure(options: RunPlanV2SizePressureOptions): Promise<PlanV2SizePressureReport>;
/**
 * Run the same prepared project through explicit v1 and v2 drivers, analyze
 * their artifacts, and persist a machine-readable comparison report.
 */
export declare function runPlanProtocolParity(options: RunPlanProtocolParityOptions): Promise<PlanParityComparison>;
//# sourceMappingURL=plan-parity-harness.d.ts.map