import type { ReviewDecision } from "../../../schema/src/decisions/decision.js";
import type { Finding } from "../../../schema/src/records/finding.js";
import { type DraftContract } from "../../../core/src/contracts/promotion.js";
import type { CoupledNumericMeasurement, CoupledNumericObservation } from "./types.js";
export type Layer2Band = "advisory";
export type CoupledNumericOracle = {
    kind: "coupled-numeric-display";
    band: Layer2Band;
};
export type IndependentCoupledNumericObservation = CoupledNumericObservation & {
    cellId: string;
    role: string;
    runId: string;
};
export type CoupledNumericCandidate = {
    oracle: CoupledNumericOracle;
    controlIdentity: string;
    displayIdentity: string;
    before: number;
    after: number;
    observations: IndependentCoupledNumericObservation[];
};
export type CoupledNumericRejectionReason = "spurious-baseline-movement" | "unstable-activation-effect" | "stable-non-movement" | "insufficient-independent-observations" | "unstable-independent-observations";
export type CoupledNumericDerivation = {
    kind: "candidate";
    candidate: CoupledNumericCandidate;
} | {
    kind: "rejected";
    controlIdentity: string;
    displayIdentity: string;
    reason: CoupledNumericRejectionReason;
    observations: IndependentCoupledNumericObservation[];
};
export declare function isMeasuredCoupledNumericMeasurement(measurement: CoupledNumericMeasurement): measurement is Extract<CoupledNumericMeasurement, {
    kind: "measured";
}>;
export declare function assertCoupledNumericOracle(value: {
    kind: string;
    band: string;
}): CoupledNumericOracle;
export declare function deriveCoupledNumericCandidates(observations: readonly IndependentCoupledNumericObservation[]): CoupledNumericDerivation[];
export declare function stableCoupledNumericCandidates(observations: readonly IndependentCoupledNumericObservation[]): CoupledNumericCandidate[];
export declare function promoteCoupledNumericCandidate(decision: ReviewDecision, finding: Finding): DraftContract;
//# sourceMappingURL=numeric.d.ts.map