harb/kraiken-lib/src/staking.ts
johba 09c36f2c87 lint/lib (#49)
resolves #42

Co-authored-by: johba <johba@harb.eth>
Reviewed-on: https://codeberg.org/johba/harb/pulls/49
2025-10-03 11:57:01 +02:00

31 lines
909 B
TypeScript

const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;
export function calculateSnatchShortfall(
outstandingStake: bigint,
desiredStakeShares: bigint,
stakeTotalSupply: bigint,
capNumerator: bigint = 2n,
capDenominator: bigint = 10n
): bigint {
if (capDenominator === 0n) {
throw new Error('capDenominator must be greater than zero');
}
const cap = (stakeTotalSupply * capNumerator) / capDenominator;
const required = outstandingStake + desiredStakeShares;
const delta = required - cap;
return delta > 0n ? delta : 0n;
}
export function isPositionDelinquent(
lastTaxTimestamp: number,
taxRate: number,
referenceTimestamp: number = Math.floor(Date.now() / 1000),
secondsInYear: number = SECONDS_IN_YEAR
): boolean {
const rate = Number(taxRate);
if (rate <= 0) return false;
const allowance = secondsInYear / rate;
return referenceTimestamp - lastTaxTimestamp > allowance;
}