/** * Bands a VP-built payout's implicit fee before the depositor pre-signs it. * Ceiling (ours, #2105) blocks a VP deflating outputs and burning the * difference as miner fee; floor (vault-wasm `computePayoutFeeFloor`) rejects * a fee no legitimate VP model produces and that may not relay at redemption. * * Caller (`buildPayoutPsbt`) must have run `assertPayoutFeeBandDomain` first, * and `implicitFeeSats` must be `inputs − outputs` over verified prevouts. * Band non-emptiness is proven by the corner sweep in the tests, not by a * closed-form argument — slack is not monotone at small rosters. * * @module primitives/psbt/assertPayoutFeeBand */ /** Shape/rate inputs the fee band is evaluated over. */ export interface PayoutFeeBandParams { /** Vault core (tx-graph) version — selects the floor's pinned model set. */ vaultCoreVersion: number; /** Vault keeper count (N). */ numVaultKeepers: number; /** Universal challenger count (M). */ numUniversalChallengers: number; /** Security council size from the locked offchain params version. */ councilSize: number; /** Version-locked tx-graph fee rate (sat/vB); anchors both band ends. */ protocolFeeRate: bigint; } /** * Validate the fee-band inputs lie in the accepted domain. Bounds differ in * KIND per role — see each constant. * * @throws If the rate, a participant count, or `councilSize` is out of range */ export declare function assertPayoutFeeBandDomain(params: PayoutFeeBandParams): void; /** * Assert `floor <= implicitFeeSats <= ceiling`. `out1Len` is `undefined` for * the 2-output (no-commission) layouts. * * @throws If the fee is below the floor or above the ceiling */ export declare function assertPayoutFeeInBand(params: PayoutFeeBandParams, measured: { implicitFeeSats: number; out0Len: number; out1Len: number | undefined; }): Promise; //# sourceMappingURL=assertPayoutFeeBand.d.ts.map