UNPKG

@hubbleprotocol/hubble-sdk

Version:
97 lines (96 loc) 3.85 kB
import CollateralAmounts from '../models/CollateralAmounts'; import Decimal from 'decimal.js'; import StabilityPoolState from '../models/StabilityPoolState'; import StabilityProviderState from '../models/StabilityProviderState'; import UserMetadata from '../models/UserMetadata'; import BorrowingMarketState from '../models/BorrowingMarketState'; import { CollateralWithdrawalCaps, ExtraCollateralAmount, StabilityTokenMap, SupportedCollateral } from '../models'; import WithdrawalCaps from '../models/WithdrawalCaps'; /** * Divide all collateral amounts to convert from lamports to decimals */ export declare const lamportsToDecimal: (collateral: CollateralAmounts) => CollateralAmounts; /** * Divide all token map big amounts to convert from lamports to decimals */ export declare const lamportsTokenToDecimal: (collateral: TokenMapBig) => TokenMapBig; /** * Replace all big numbers ({@link BN} with {@link Decimal}) of an object * We use this because Anchor deserializes everything to BN, but it doesn't support decimals. * @param obj Object of type T */ export declare const replaceBigNumberWithDecimal: <T>(obj: T) => T; export declare const decimalToNumSupportedCollateral: (supportedCollateral: { token: Decimal; tokenCap: Decimal; }) => SupportedCollateral; export declare const decimalToNumCollateralWithdrawalCap: (cap: { token: Decimal; tokenCap: WithdrawalCaps; }) => CollateralWithdrawalCaps; export declare const decimalToNumWithdrawalCap: (cap: { configCapacity: Decimal; currentTotal: Decimal; lastIntervalStartTimestamp: Decimal; configIntervalLengthSeconds: Decimal; }) => WithdrawalCaps; /** * Calculate stability provider's actual stability provided * @param stabilityPoolState * @param stabilityProviderState */ export declare const calculateStabilityProvided: (stabilityPoolState: StabilityPoolState, stabilityProviderState: StabilityProviderState) => Decimal; /** * Add all collateral amounts to the second one * @param first * @param second */ export declare const addCollateralAmounts: (first: CollateralAmounts, second: CollateralAmounts) => CollateralAmounts; /** * Calculate the user's total USDH debt (borrowed stablecoin + pending rewards) * @param user * @param market */ export declare function calculateTotalDebt(user: UserMetadata, market: BorrowingMarketState): Decimal; /** * Calculate the user's total collateral debt (collateral + pending rewards) * @param user * @param market */ export declare function calculateTotalCollateral(user: UserMetadata, market: BorrowingMarketState): CollateralAmounts; /** * Subtract collateral amounts * @param left * @param right */ export declare function sub(left: CollateralAmounts, right: CollateralAmounts): CollateralAmounts; /** * Returns true if all collateral amounts equal zero * @param coll */ export declare function isZero(coll: CollateralAmounts): boolean; /** * Create new collateral amounts with 0 collateral */ export declare function zeroCollateral(): CollateralAmounts; export declare function zeroExtraCollateral(): ExtraCollateralAmount[]; /** Transforms collateral amounts multiplying by the fraction * @param coll * @param numerator * @param denominator */ export declare function mulFrac(coll: CollateralAmounts, numerator: Decimal, denominator: Decimal): CollateralAmounts; export type TokenMapBig = { sol: Decimal; eth: Decimal; btc: Decimal; srm: Decimal; ray: Decimal; ftt: Decimal; hbb: Decimal; msol: Decimal; }; export type EpochToScaleToSum = TokenMapBig[][]; export declare function calculatePendingGains(stabilityPoolState: StabilityPoolState, stabilityProviderState: StabilityProviderState, epochToScaleToSum: Decimal[]): StabilityTokenMap; export declare const convertTokenLamportsToDecimal: (lamports: Decimal, tokenName: string) => Decimal;