import { BigDecimalish, BigDecimal } from '@nadohq/utils'; import { SpotProduct } from '../common/types/productTypes.cjs'; /** * Calculate amount total borrowed for a product */ declare function calcTotalBorrowed(totalBorrowsNormalized: BigDecimalish, cumulativeBorrowsMultiplierX18: BigDecimalish): BigDecimal; /** * Calculate amount total deposited for a product. */ declare function calcTotalDeposited(totalDepositsNormalized: BigDecimalish, cumulativeDepositsMultiplierX18: BigDecimalish): BigDecimal; /** * Calculates utilization ratio = abs(total borrowed / total deposited) * * @param product Spot product */ declare function calcUtilizationRatio(product: SpotProduct): BigDecimal; /** * Calculates per-second borrow interest rate for a product. For example, a returned rate of 0.1 indicates 10% borrower * interest. The calculation for interest rate is as follows: * * If utilization ratio > inflection: * annual rate = (1 - utilization ratio) / (1 - inflection) * interestLargeCap + interestFloor + interestSmallCap * * If utilization ratio < inflection: * annual rate = utilization * interestSmallCap / inflection + utilization * * The returned rate is annual rate / 31536000 seconds per year. * * @param product Spot product */ declare function calcBorrowRatePerSecond(product: SpotProduct): BigDecimal; /** * Calculates borrower interest rate compounded for a period of time. * * @param product Spot product * @param seconds Number of seconds for the time period */ declare function calcBorrowRateForTimeRange(product: SpotProduct, seconds: BigDecimalish, minDepositRate: BigDecimalish): BigDecimal; /** * Calculate depositor interest rate compounded for a period of time. * * @param product Spot product * @param seconds Number of seconds for the time period * @param interestFeeFrac Fraction of paid borrower interest that is paid as a fee (0.2 = 20% fee) */ declare function calcRealizedDepositRateForTimeRange(product: SpotProduct, seconds: BigDecimalish, interestFeeFrac: BigDecimalish, minDepositRate: BigDecimalish): BigDecimal; export { calcBorrowRateForTimeRange, calcBorrowRatePerSecond, calcRealizedDepositRateForTimeRange, calcTotalBorrowed, calcTotalDeposited, calcUtilizationRatio };