/** * Threshold Ratchet — selects the DKG signing threshold `t` for a given * number of online operators `n`. * * MUST stay in lock-step with `agent-node/src/threshold.rs::select_threshold`. * If you change one without changing the other, agent and SDK will disagree * on whether a /dkg/initiate request is valid. * * ## Why a ratchet? * * The original whitepaper assumed a 16-of-24 steady-state. Phase 2 onboards * only ~10 operators, so a hard-coded 16 default would be unsignable. The * ratchet adapts `t` to the live cohort size while never dropping below * the Byzantine bound `⌈2n/3⌉`. * * | Operators online (`n`) | Threshold (`t`) | * |------------------------|-----------------| * | < 3 | reject | * | 3 .. 5 | ⌈2n/3⌉ (2..4) | * | 6 .. 8 | 6 | * | 9 .. 10 | 7 | * | 11 .. 12 | 8 | * | 13 .. 15 | 10 | * | 16 .. 18 | 12 | * | 19 .. 21 | 14 | * | ≥ 22 | 16 | * * The ratchet is **monotonic**: as `n` grows, `t` only grows. Resharing * from a smaller cohort to a larger one is always a security upgrade, * never a downgrade. * * See `validation-reports/prod/B5-threshold-decision.md` for the full * decision rationale and security analysis. */ /** * Returns the recommended signing threshold `t` for a network of `n` * operators, or `null` for `n < 3` (no useful threshold below 3). * * Monotonic in `n` and always yields `t >= ⌈2n/3⌉`. */ export declare function selectThreshold(nOperators: number): number | null; /** * Validates a user-supplied `(n, t)` pair against the ratchet floor. * Returns `null` when accepted, or the minimum required threshold when * `t` is below the floor. * * Named `validateRatchet` (not `validateThreshold`) to avoid collision * with the existing struct-shape validator in `./validation.ts`. */ export declare function validateRatchet(nOperators: number, t: number): number | null; //# sourceMappingURL=threshold.d.ts.map