import { type RunRecord } from '../run-record';
import { type PairedBootstrapResult } from '../statistics';
export type WorkflowDriverPromotionDecisionVersion = 'workflow-driver-promotion-v1';
export type WorkflowDriverPromotionRejectionCode = 'missing_baseline_records' | 'missing_candidate_records' | 'missing_holdout_pairs' | 'few_pairs' | 'insufficient_lift' | 'cost_ceiling';
export interface WorkflowDriverPromotionPair {
    key: string;
    scenarioId: string;
    seed: number;
    baselineRunId: string;
    candidateRunId: string;
    baselineScore: number;
    candidateScore: number;
    delta: number;
}
export interface WorkflowDriverPromotionEvidence {
    pairedRuns: number;
    expectedScenarioIds: string[];
    pairedScenarioIds: string[];
    missingScenarioIds: string[];
    baselineMean: number;
    candidateMean: number;
    lift: number;
    liftCi: {
        low: number;
        high: number;
    };
    bootstrap: PairedBootstrapResult;
    confidence: number;
    resamples: number;
    statistic: 'mean' | 'median';
    deltaThreshold: number;
    baselineMedianCostUsd: number;
    candidateMedianCostUsd: number;
    pairs: WorkflowDriverPromotionPair[];
}
export interface WorkflowDriverPromotionDecision {
    schemaVersion: WorkflowDriverPromotionDecisionVersion;
    generatedAt: string;
    baselineStrategyId: string;
    candidateStrategyId: string;
    promote: boolean;
    rejectionCode: WorkflowDriverPromotionRejectionCode | null;
    reason: string;
    evidence: WorkflowDriverPromotionEvidence;
}
export interface DecideWorkflowDriverPromotionOptions {
    records: readonly RunRecord[] | readonly unknown[];
    baselineStrategyId?: string;
    candidateStrategyId?: string;
    expectedScenarioIds?: readonly string[];
    minPairedHoldoutRuns?: number;
    deltaThreshold?: number;
    confidence?: number;
    resamples?: number;
    seed?: number;
    statistic?: 'mean' | 'median';
    costPerRunCeiling?: number;
    generatedAt?: string;
}
export declare function decideWorkflowDriverPromotion(options: DecideWorkflowDriverPromotionOptions): WorkflowDriverPromotionDecision;
//# sourceMappingURL=promotion-gate.d.ts.map