@defi-wonderland/keep3r-v2
Version:
The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs
25 lines (22 loc) • 1.23 kB
text/typescript
import { toUnit } from '@utils/bn';
import { BigNumber } from 'ethers';
export function mathUtilsFactory(rewardPeriodTime: number, inflationPeriodTime: number): MathUtils {
return {
calcPeriod: (timestamp: number) => timestamp - (timestamp % rewardPeriodTime),
calcLiquidityToAdd: (credits: BigNumber) => credits.mul(inflationPeriodTime).div(rewardPeriodTime),
calcPeriodCredits: (liquidityAdded: BigNumber) => liquidityAdded.mul(rewardPeriodTime).div(inflationPeriodTime),
calcMintedCredits: (jobPeriodCredits: BigNumber, cooldown: number) => jobPeriodCredits.mul(cooldown).div(rewardPeriodTime),
increase1Tick: (amount: BigNumber) => amount.mul(10001).div(10000),
decrease1Tick: (amount: BigNumber) => amount.mul(10000).div(10001),
blockShiftPrecision: toUnit(0.0001).toNumber(),
};
}
export interface MathUtils {
calcPeriod: (timestamp: number) => number;
calcLiquidityToAdd: (credits: BigNumber) => BigNumber;
calcPeriodCredits: (liquidityAdded: BigNumber) => BigNumber;
calcMintedCredits: (jobPeriodCredits: BigNumber, cooldown: number) => BigNumber;
increase1Tick: (amount: BigNumber) => BigNumber;
decrease1Tick: (amount: BigNumber) => BigNumber;
blockShiftPrecision: number;
}