UNPKG

@mstable/protocol

Version:
71 lines (70 loc) 4.76 kB
import { Signer } from "ethers"; import { BN } from "@utils/math"; import { ExposedMassetLogic, FeederPool, Masset, SavingsManager } from "types/generated"; import { MusdEth } from "types/generated/MusdEth"; import { MusdLegacy } from "types/generated/MusdLegacy"; import { QuantityFormatter } from "./quantity-formatters"; import { Chain, Token } from "./tokens"; export interface TxSummary { count: number; total: BN; fees: BN; } export interface Balances { total: BN; save: BN; earn: BN; } export interface BlockInfo { blockNumber: number; blockTime: Date; } export interface BlockRange { fromBlock: BlockInfo; toBlock: BlockInfo; } export interface SwapRate { inputToken: Token; inputAmountRaw: BN; outputToken: Token; mOutputRaw: BN; curveOutputRaw: BN; curveInverseOutputRaw: BN; } export interface SwapQuote { outAmount: BN; exchangeRate: BN; } export declare function isFeederPool(asset: Masset | MusdEth | MusdLegacy | FeederPool): asset is FeederPool; export declare function isMusdEth(asset: Masset | MusdEth | MusdLegacy | FeederPool): asset is MusdEth; export declare function isMusdLegacy(asset: Masset | MusdEth | MusdLegacy | FeederPool): asset is MusdLegacy; export declare const getBlock: (ethers: any, _blockNumber?: number | string) => Promise<BlockInfo>; export declare const getBlockRange: (ethers: any, fromBlockNumber: number, _toBlockNumber?: number) => Promise<BlockRange>; export declare const snapConfig: (asset: Masset | MusdEth | MusdLegacy | FeederPool, toBlock: number) => Promise<void>; export declare const snapSave: (symbol: string, signer: Signer, chain: Chain, toBlock: number) => Promise<void>; export interface TvlConfig { startingCap: BN; capFactor: BN; invariantValidatorAddress: string; } export declare const getBasket: (asset: Masset | MusdEth | MusdLegacy | FeederPool, bAssetSymbols: string[], mAssetName: string, quantityFormatter: QuantityFormatter, toBlock: number, tvlConfig?: TvlConfig, exposedLogic?: ExposedMassetLogic) => Promise<void>; export declare const getBalances: (mAsset: Masset | MusdEth | MusdLegacy, accounts: { name: string; address: string; }[], quantityFormatter: QuantityFormatter, toBlock: number) => Promise<Balances>; export declare const getMints: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, fromBlock: number, toBlock: number, quantityFormatter: QuantityFormatter) => Promise<TxSummary>; export declare const getMultiMints: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, fromBlock: number, toBlock: number, quantityFormatter: QuantityFormatter) => Promise<TxSummary>; export declare const getSwaps: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, fromBlock: number, toBlock: number, quantityFormatter: QuantityFormatter) => Promise<TxSummary>; export declare const getRedemptions: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, fromBlock: number, toBlock: number, quantityFormatter: QuantityFormatter) => Promise<TxSummary>; export declare const getMultiRedemptions: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, fromBlock: number, toBlock: number, quantityFormatter: QuantityFormatter) => Promise<TxSummary>; export declare const calcApy: (startTime: Date, endTime: Date, quantity: BN, saveBalance: BN) => BN; export declare const outputFees: (mints: TxSummary, multiMints: TxSummary, swaps: TxSummary, redeems: TxSummary, multiRedeems: TxSummary, balances: Balances, startTime: Date, endTime: Date, quantityFormatter: QuantityFormatter) => void; export declare const getLiquidatorInterest: (mAsset: Masset | MusdEth | MusdLegacy | FeederPool, savingsManager: SavingsManager, fromBlock: BlockInfo, toBlock: BlockInfo, quantityFormatter: QuantityFormatter) => Promise<{ total: BN; count: number; }>; export declare const getCollectedInterest: (bAssets: Token[], mAsset: Masset | MusdEth | MusdLegacy | FeederPool, savingsManager: SavingsManager, fromBlock: BlockInfo, toBlock: BlockInfo, quantityFormatter: QuantityFormatter, savingsBalance: BN) => Promise<TxSummary>; export declare const quoteSwap: (signer: Signer, from: Token, to: Token, inAmount: BN, toBlock: BlockInfo, path?: string[], fees?: number[]) => Promise<SwapQuote>; export declare const getCompTokens: (signer: Signer, toBlock: BlockInfo, quantityFormatter?: QuantityFormatter, chain?: Chain) => Promise<void>; export declare const getAaveTokens: (signer: Signer, toBlock: BlockInfo, quantityFormatter?: QuantityFormatter, chain?: Chain) => Promise<void>; export declare const getAlcxTokens: (signer: Signer, toBlock: BlockInfo, quantityFormatter?: QuantityFormatter, chain?: Chain) => Promise<void>;