import type { NumericFact, NumericVerification, NumericVerificationOutcome } from "./types.js"; /** * Bounded research calculation verifier. * * This is not a general theorem prover. It validates arithmetic and units used * in research synthesis: * - flat additions versus percentage additions * - additive versus multiplicative bonuses * - per-shot versus per-cycle versus per-second terminology * - percentages and deltas * - upgrade-level application * - caps and set thresholds * * When the verifier cannot resolve units or order of operations it marks the * calculation `unsupported` rather than silently choosing a formula. */ export interface FlatPercentAdd { kind: "flat" | "percent"; } /** * Decide whether a "+N" additive delta should be treated as flat (+N) or * percent (× (1 + N/100)). */ export declare function classifyFlatVsPercent(delta: number, sourceSaysPercent: boolean, deltaOption?: FlatPercentAdd): { additive: boolean; multiplier: number; }; /** * Validate a base + flat bonus computation. * Rejects interpreting a flat `+15` as `× 1.15`. */ export declare function validateFlatBonus(id: string, description: string, base: number, delta: number, sourceSaysPercent: boolean): NumericVerification; /** * Validate additive + multiplicative composition. * Default order: multiplier applies to base, then flat proc is added. */ export declare function validateTargetMultiplierPlusProc(id: string, description: string, base: number, multiplier: number, flatProc: number, multiplierAppliesToProc: boolean): NumericVerification; /** * Compute a per-cycle average and label it correctly. * Refuses to label it DPS unless attacks-per-second is sourced. */ export declare function validateCycleAverage(id: string, description: string, attacks: number[], attacksPerSecond?: number): NumericVerification; /** Percentage difference between two values. */ export declare function percentDifference(left: number, right: number): number; /** * Apply an upgrade-level bonus. Default supported model: cumulative percent * bonus per level, capped. */ export declare function validateUpgradeLevels(id: string, description: string, base: number, levels: number, percentPerLevel: number, capPercent?: number): NumericVerification; export type { NumericFact, NumericVerificationOutcome }; //# sourceMappingURL=numeric.d.ts.map