@node-dlc/core
Version:
51 lines (50 loc) • 2.29 kB
TypeScript
import BigNumber from 'bignumber.js';
import { HyperbolaPayoutCurve } from './HyperbolaPayoutCurve';
import { PolynomialPayoutCurve } from './PolynomialPayoutCurve';
export declare function zipWithIndex<T>(arr: T[]): [T, number][];
export declare function dropUntil<T>(data: T[], check: (_: T) => boolean): T[];
export declare function decompose(num: bigint, base: number, numDigits: number): number[];
export declare function separatePrefix(start: bigint, end: bigint, base: number, numDigits: number): {
prefixDigits: number[];
startDigits: number[];
endDigits: number[];
};
export declare function frontGroupings(digits: number[], base: number): number[][];
export declare function backGroupings(digits: number[], base: number): number[][];
export declare function middleGroupings(firstDigitStart: number, firstDigitEnd: number): number[][];
export declare function groupByIgnoringDigits(start: bigint, end: bigint, base: number, numDigits: number): number[][];
export interface RoundingInterval {
beginInterval: bigint;
roundingMod: bigint;
}
export type CETPayout = {
indexFrom: bigint;
indexTo: bigint;
payout: bigint;
};
/**
* Performs optimized evaluation and rounding for strictly monotonic hyperbolas on intervals (from, to)
* e.g. hyperbolas with the form b = c = 0
*
* The next start of a payout range is determined by finding the outcome at the next mid-rounding payout.
* Uses an inverse function of the hyperbola to find the outcome.
*
* Optimizes rounding from O(to - from) to O(totalCollateral / rounding)
*
*
* Evaluates and rounds a payout_function equivalent to:
*
* payout_function_v0
* num_pieces: 1
* endpoint_0: from
* endpoint_payout_0: fromPayout
* extra_precision_0: 0
* payout_curve_piece: HyperbolaPayoutCurve
* endpoint_1: to
* endpoint_payout_1: toPayout
*/
export declare function splitIntoRanges(from: bigint, to: bigint, fromPayout: bigint, // endpoint_payout
toPayout: bigint, // endpoint_payout
totalCollateral: bigint, curve: HyperbolaPayoutCurve | PolynomialPayoutCurve, roundingIntervals: RoundingInterval[]): CETPayout[];
export declare const mergePayouts: (payouts: CETPayout[]) => CETPayout[];
export declare function roundPayout(payout: BigNumber, rounding: bigint): bigint;