UNPKG

fbonds-core

Version:

Banx protocol sdk

87 lines (86 loc) 4.28 kB
import { BondOfferV3, UserVault } from '../types'; import { SimpleOffer } from './offer'; import { BN } from '@coral-xyz/anchor'; import { Dictionary } from 'lodash'; type BorrowOffer = { maxCollateralToReceive: BN; ltv: BN; } & SimpleOffer; type CreateTokenBorrowOffersParams = { bondOffers: BondOfferV3[]; userVaults: UserVault[]; collateralsPerTokenLimit: BN | undefined; tokenPrice: BN; tokenDecimals: number; }; /** * * @param bondOffers BondOfferV3[] * @param userVaults UserVault[] * @param collateralsPerTokenLimit Slice offers according to collateralsPerTokenLimit * Set to undefined to disable slicing * @param tokenPrice token(SOL|USDC) price in collaterals. * F.e. 1 USDC === 6.273 BANX * tokenPrice = 6.273 * 1e9(banx token decimals) = 6273*1e6 * @param tokenDecimals token decimals number * F.e. for USDC = 6; for SOL = 9 * @returns BorrowOffer[] */ export declare function createTokenBorrowOffers({ bondOffers, userVaults, collateralsPerTokenLimit, tokenPrice, tokenDecimals, }: CreateTokenBorrowOffersParams): BorrowOffer[]; type createTokenBorrowOffersCustomLTVParams = { bondOffers: BondOfferV3[]; userVaults: UserVault[]; userCollateralsPerToken: BN | undefined; tokenPrice: BN; tokenDecimals: number; }; /** * * @param bondOffers BondOfferV3[] * @param userVaults UserVault[] * @param userCollateralsPerToken Allows to use offers with custom LTV: * Filters offers with collateralsPerToken <= userCollateralsPerToken * and sets userCollateralsPerToken in collateralsPerToken field. * Pass undefined to avoid custom LTV usage. * @param tokenPrice token(SOL|USDC) price in collaterals. * F.e. 1 USDC === 6.273 BANX * tokenPrice = 6.273 * 1e9(banx token decimals) = 6273*1e6 * @param tokenDecimals token decimals number * F.e. for USDC = 6; for SOL = 9 * @returns BorrowOffer[] */ export declare function createTokenBorrowOffersWithCustomLTV({ bondOffers, userVaults, userCollateralsPerToken, tokenPrice, tokenDecimals, }: createTokenBorrowOffersCustomLTVParams): BorrowOffer[]; export declare function createEscrowBalanceByLender(userVaults: UserVault[]): Dictionary<BN>; export declare function filterSimpleOffersByVaultBalance(offers: SimpleOffer[], userVaults: UserVault[]): SimpleOffer[]; /** * Calculates the number of tokens per collateral unit. * @param {BN} collateralsPerToken - The amount of collateral per token. (1 human token = collateral decimals) * @param {number} collateralDecimals - The number of decimal places used by the collateral token. * @param {number} lendingTokenDecimals - The number of decimal places used by the lending token. * @returns {BN} - tokensPerCollateral (1 humanCollateral = token decimals) */ export declare const calculateTokensPerCollateral: (collateralsPerToken: BN, collateralDecimals: number, lendingTokenDecimals: number) => BN; /** * @param {SimpleOffer} offer - SimpleOffer * @param {BN} maxCollateralToReceive - max amount of collateral that can be borrowed from offer * @param {number} tokenPriceInCollateral - how much collateral is 1 token worth. F.e. 1 USDC = 0.2339 JLP. tokenPriceInCollateral=0.2339 * @param {number} collateralDecimals - decimals of collateral. F.e. 9 * @param {number} tokenDecimals - decimals of token. F.e. 9 * @returns Max multiplier in percent. F.e. 50.5 === 50.5% */ export declare const calcMaxMultiplier: ({ offer, maxCollateralToReceive, tokenPriceInCollateral, collateralDecimals, tokenDecimals, }: { offer: SimpleOffer; maxCollateralToReceive: BN; tokenPriceInCollateral: number; collateralDecimals: number; tokenDecimals: number; }) => number; /** * Calculates the number of tokens per collateral unit. * @param {number} collateralsPerToken - The amount of collateral per token. (1 human token = collateral decimals) * @param {number} collateralDecimals - The number of decimal places used by the collateral token. * @param {number} lendingTokenDecimals - The number of decimal places used by the lending token. * @returns {number} - tokensPerCollateral (1 humanCollateral = token decimals) */ export declare const calculateTokensPerCollateralFloat: (collateralsPerToken: number, collateralDecimals: number, lendingTokenDecimals: number) => number; export {};