@hubbleprotocol/hubble-sdk
Version:
Hubble Protocol client SDK
97 lines (96 loc) • 3.85 kB
TypeScript
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;