import BigNumberJs from 'bignumber.js'; import { BigNumber, BigNumberish } from 'ethers'; export interface ReservesData { 0: Array<{ underlyingAsset: string; name: string; symbol: string; decimals: BigNumber; baseLTVasCollateral: BigNumber; reserveLiquidationThreshold: BigNumber; reserveLiquidationBonus: BigNumber; reserveFactor: BigNumber; usageAsCollateralEnabled: boolean; borrowingEnabled: boolean; auctionEnabled: boolean; isActive: boolean; isFrozen: boolean; isPaused: boolean; isAtomicPricing: boolean; liquidityIndex: BigNumber; variableBorrowIndex: BigNumber; liquidityRate: BigNumber; variableBorrowRate: BigNumber; lastUpdateTimestamp: number; xTokenAddress: string; variableDebtTokenAddress: string; interestRateStrategyAddress: string; auctionStrategyAddress: string; availableLiquidity: BigNumber; totalScaledVariableDebt: BigNumber; priceInMarketReferenceCurrency: BigNumber; priceOracle: string; variableRateSlope1: BigNumber; variableRateSlope2: BigNumber; baseVariableBorrowRate: BigNumber; optimalUsageRatio: BigNumber; accruedToTreasury: BigNumber; borrowCap: BigNumber; supplyCap: BigNumber; assetType: number; }>; 1: { marketReferenceCurrencyUnit: BigNumber; marketReferenceCurrencyPriceInUsd: BigNumber; networkBaseTokenPriceInUsd: BigNumber; networkBaseTokenPriceDecimals: number; }; } export type UserReserveData = Array<{ underlyingAsset: string; currentXTokenBalance: BigNumber; scaledXTokenBalance: BigNumber; collateralizedBalance: BigNumber; usageAsCollateralEnabledOnUser: boolean; scaledVariableDebt: BigNumber; avgMultiplier: BigNumber; }>; export type UserReservesHumanizedHelperInput = { user: string; lendingPoolAddressProvider: string; reservesDataHumanized: ReservesDataHumanized; }; export interface PoolBaseCurrencyHumanized { marketReferenceCurrencyDecimals: number; marketReferenceCurrencyPriceInUsd: string; networkBaseTokenPriceInUsd: string; networkBaseTokenPriceDecimals: number; } export interface ReserveDataHumanized { id: string; underlyingAsset: string; name: string; assetType: number; symbol: string; decimals: number; baseLTVasCollateral: string; reserveLiquidationThreshold: string; reserveLiquidationBonus: string; reserveFactor: string; usageAsCollateralEnabled: boolean; borrowingEnabled: boolean; isActive: boolean; isFrozen: boolean; liquidityIndex: string; variableBorrowIndex: string; liquidityRate: string; variableBorrowRate: string; lastUpdateTimestamp: number; aTokenAddress: string; variableDebtTokenAddress: string; interestRateStrategyAddress: string; availableLiquidity: string; totalScaledVariableDebt: string; priceInMarketReferenceCurrency: string; priceOracle: string; variableRateSlope1: string; variableRateSlope2: string; baseVariableBorrowRate: string; optimalUsageRatio: string; // v3 only isPaused: boolean; accruedToTreasury: string; unbacked: string; isolationModeTotalDebt: string; debtCeiling: string; debtCeilingDecimals: number; eModeCategoryId: number; borrowCap: string; supplyCap: string; eModeLtv: number; eModeLiquidationThreshold: number; eModeLiquidationBonus: number; eModePriceSource: string; eModeLabel: string; borrowableInIsolation: boolean; isAtomic: boolean; auctionEnabled: boolean; auctionStrategyAddress: string; dynamicConfigsEnabled: boolean; timeLockStrategyData: { minThreshold: BigNumberJs; midThreshold: BigNumberJs; minWaitTime: number; midWaitTime: number; maxWaitTime: number; poolPeriodWaitTime: number; poolPeriodLimit: BigNumberJs; period: number; totalAmountInCurrentPeriod: BigNumberJs; lastResetTimestamp: number; }; } export interface ReservesDataHumanized { reservesData: ReserveDataHumanized[]; baseCurrencyData: PoolBaseCurrencyHumanized; } export interface AtomicTokenInfo { tokenId: string; tokenPriceInMarketCurrency: string; baseLTVasCollateral: string; reserveLiquidationThreshold: string; } export interface UserReserveDataHumanized { id: string; underlyingAsset: string; scaledXTokenBalance: string; collaterizedBalance: string; usageAsCollateralEnabledOnUser: boolean; scaledVariableDebt: string; avgMultiplier: string; ownedTokens: number[]; suppliedTokens: number[]; collaterizedTokens: number[]; isAtomic: boolean; atomicTokens: Map; tokenTraitMultipliers: Map; } export interface UserNtokenDataReq { lendingPoolAddressProvider: string; nTokenAddresses: string[]; tokenIds: BigNumberish[][]; } export interface UserNtokenHumanizedDataReq { lendingPoolAddressProvider: string; user: string; nTokenAddresses: string[]; } export interface UserNtokenData { tokenId: BigNumber; multiplier: BigNumber; useAsCollateral: boolean; isAuctioned: boolean; } export interface UserNtokenHumanizedData { nTokenAddress: string; suppliedTokens: number[] | undefined; collaterizedTokens: number[] | undefined; }