import { SuiGrpcClient } from "@mysten/sui/grpc"; import BigNumber from "bignumber.js"; import { ObligationOwnerCap } from "../_generated/suilend/lending-market/structs"; import { Obligation } from "../_generated/suilend/obligation/structs"; import { Reserve } from "../_generated/suilend/reserve/structs"; import { SuilendClient } from "../client"; import { ParsedReserve } from "../parsers"; import * as simulate from "../utils/simulate"; import { type HermesClientConfig } from "./pyth"; import { LendingMarketMetadata, StrategyOwnerCap } from "./types"; export declare const LENDING_MARKETS_CUSTOM_ORDER: string[]; export declare const RESERVES_CUSTOM_ORDER: Record; export declare const NORMALIZED_MAYA_COINTYPE: string; export declare const NORMALIZED_mPOINTS_COINTYPE: string; export declare const NORMALIZED_TREATS_COINTYPE: string; export declare const resolveReserveOrder: (lendingMarketId: string, lendingMarketMetadata?: LendingMarketMetadata) => string[] | undefined; export declare const sortReservesByOrder: (reserves: T[], order: string[]) => T[]; export declare const resolveCoinMetadataForInitializeAll: (markets: { miscCoinTypes: string[]; reserveCoinTypes: string[]; rewardCoinTypes: string[]; }[]) => Promise<{ coinMetadataMap: Record; reserveCoinMetadataMap: Record; rewardCoinMetadataMap: Record; }[]>; export declare const resolveCoinMetadataForInitialize: (miscCoinTypes: string[], reserveCoinTypes: string[], rewardCoinTypes: string[]) => Promise<{ coinMetadataMap: Record; reserveCoinMetadataMap: Record; rewardCoinMetadataMap: Record; }>; export declare const refreshReservesForInitializeAll: (reservesByMarket: Reserve[][], pythConnection: simulate.PriceFeedSource, tolerateMissingPriceFeeds?: boolean) => Promise<{ reserves: Reserve[]; unpricedCoinTypes: string[]; }[]>; /** * Price reserves for `initializeSuilend`, honouring the opt-in tolerance flag. * * Extracted so both branches are directly testable — the difference between * them is a throw, which is the whole reason the flag exists and is exactly * what a regression here would silently change. */ export declare const refreshReservesForInitialize: (reserves: Reserve[], pythConnection: simulate.PriceFeedSource, tolerateMissingPriceFeeds?: boolean) => Promise<{ reserves: Reserve[]; unpricedCoinTypes: string[]; }>; /** * Price the temporary-Pyth-feed reserves from the cached-price service, in * place, and report which ones ended up with a FABRICATED price. * * These reserves never reach the Pyth refresh at all, so nothing else can * report them. When the cached lookup fails the price falls back to a * hardcoded 0.0001 — a placeholder chosen to be non-zero, not a market price — * and previously that was indistinguishable from a real quote: the reserve * carried a plausible-looking number and appeared in no gap report. * * Extracted for the same reason as `refreshReservesForInitialize`: * `initializeSuilend` needs a gRPC client and a SuilendClient, so logic left * inline in it cannot be tested, and "is this price real" is not something to * leave unverified. */ export declare const priceTemporaryPythFeedReserves: (reserves: Reserve[], fetchPrices?: FetchPrices) => Promise; export declare const priceTemporaryPythFeedReservesAll: (reservesByMarket: Reserve[][], fetchPrices?: FetchPrices) => Promise; export type InitializeSuilendOptions = { /** * Price connection to use instead of the one this function would build. * * Without this, the connection is constructed here and never exposed, so a * caller cannot authenticate it, point it at a different Hermes deployment, * or give it failover — it is unreachable from outside. * * SUPERSEDES `fallbackPythEndpoint`, which is ignored when this is set. * That parameter is a hint for building a connection, and there is nothing * left to build; it engages only when a `/live` probe fails, which tests * whether Hermes is UP, not whether it still serves your feeds (a 401 or a * per-feed 404 never trips it). Supply failover on the connection you * inject — a multi-endpoint connection covers strictly more than the probe * did. * * YOU ALSO OWN THE TIMEOUT. The connection this function builds for itself * uses `DEFAULT_HERMES_TIMEOUT_MS` (30s); hermes-client defaults to 5s, so * an injected connection constructed with default options gets a 6x tighter * deadline than initializeSuilend guarantees. Nothing here can impose a * timeout on an object it did not construct — set it when you build the * connection. If a timeout (or an access token) is the ONLY reason you were * going to inject, use `pythConnectionConfig` instead and let this function * keep building the connection. * * Any `PriceFeedSource` — `createHermesPriceFeedSource` builds the default * one, and an injected source is also how you add * `getLatestPriceFeedsPartial`. Must satisfy `PriceFeedSource`, not the * `PartialPriceFeedSource` shape alone: with `tolerateMissingPriceFeeds` off * this connection goes to `refreshReservePrice`, which needs * `getLatestPriceFeeds`. The lower-level `refreshReservePriceTolerant` does * accept the partial-only shape, since it never needs the other method. */ pythConnection?: simulate.PriceFeedSource; /** * Config for the connection this function builds — the seam for an access * token, which public Hermes is expected to require. * * The narrow alternative to `pythConnection`, and the one to reach for * first: authenticating or re-timing the default connection should not cost * a caller a hand-rolled `PriceFeedSource`, and hand-rolling one is how the * feed-id normalisation and the requested-minus-returned `missing` contract * get reimplemented slightly wrong. * * IGNORED when `pythConnection` is set, on the same grounds as * `fallbackPythEndpoint`: it configures a connection this function no longer * builds. */ pythConnectionConfig?: HermesClientConfig; /** * Let a reserve whose feed no endpoint can serve keep the price already in * its on-chain state, instead of failing the whole market. Off by default. * * OPT-IN because it trades a loud failure for a quiet one, and only the * caller knows which it wants. A UI is usually better off failing visibly * than rendering a stale price with no indication; a liquidator watching 45 * reserves is better off pricing the 41 it can than going blind over the 4 * it cannot. * * USABLE ON ITS OWN as of the move to hermes-client. The connection this * function builds now reports per-feed gaps — Hermes' `ignoreInvalidPriceIds` * returns the feeds it can and omits the rest — so this flag no longer needs * a `pythConnection` alongside it. Under pyth-sui-js v2 it did: the stock * `SuiPriceServiceConnection` was all-or-nothing and the flag threw unless * you injected a subclass. * * Still REQUIRES gap reporting from whatever connection is in use, so an * INJECTED `pythConnection` must implement `getLatestPriceFeedsPartial` — * throws otherwise, rather than degrading to the identical hard failure this * flag exists to avoid. `createHermesPriceFeedSource` gives you one; the * check is on capability, not on origin. * * Callers that enable this MUST read `unpricedCoinTypes` and decide per * reserve what a kept price is allowed to mean — nothing here makes that * judgement for them. An unpriced reserve stays in `refreshedRawReserves` * carrying its on-chain price, which may be zero, so folding that array * into collateral or borrow-limit math without excluding those coin types * prices them at literal zero. */ tolerateMissingPriceFeeds?: boolean; fetchPrices?: FetchPrices; }; export type FetchPrices = (coinTypes: string[]) => Promise>; type InitializeSuilendMarket = { suilendClient: SuilendClient; lendingMarketMetadata?: LendingMarketMetadata; }; export type InitializePriceInputs = { priceFeedIds: string[]; temporaryPythFeedCoinTypes: string[]; rewardCoinTypes: string[]; }; export declare const getInitializePriceInputs: (lendingMarkets: { reserves: Reserve[]; }[], nowMs: number) => InitializePriceInputs; type ConfidenceByCoinType = simulate.ConfidenceByCoinType; export declare const initializeSuilendAll: (suiGrpcClient: SuiGrpcClient, markets: InitializeSuilendMarket[], fallbackPythEndpoint?: string, options?: InitializeSuilendOptions) => Promise<{ lendingMarket: { version: bigint; reserves: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }[]; obligations: import("../_generated/_dependencies/sui/object-table/structs").ObjectTable<"0x2::object::ID", `${string}::obligation::Obligation<${string}>`>; rateLimiter: { config: { windowDuration: bigint; maxOutflow: bigint; }; $typeName: `${string}::rate_limiter::RateLimiter`; prevQty: bigint; windowStart: bigint; curQty: bigint; remainingOutflow: BigNumber; }; feeReceiver: string; badDebtUsd: BigNumber; badDebtLimitUsd: BigNumber; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; tvlUsd: BigNumber; id: string; type: string; ownerCapId: string | undefined; name: string; isHidden: boolean; iconUrl: string | null; description: string | null; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; }; coinMetadataMap: Record; refreshedRawReserves: Reserve[]; unpricedCoinTypes: string[]; reserveMap: Record; confidenceByCoinType: Map; reserveCoinTypes: string[]; reserveCoinMetadataMap: Record; rewardCoinTypes: string[]; activeRewardCoinTypes: string[]; rewardCoinMetadataMap: Record; }[]>; export declare const initializeSuilendWithRewardsAll: (suiGrpcClient: SuiGrpcClient, markets: InitializeSuilendMarket[], fallbackPythEndpoint?: string, options?: InitializeSuilendOptions) => Promise<{ rewardPriceMap: Record; lendingMarket: { version: bigint; reserves: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }[]; obligations: import("../_generated/_dependencies/sui/object-table/structs").ObjectTable<"0x2::object::ID", `${string}::obligation::Obligation<${string}>`>; rateLimiter: { config: { windowDuration: bigint; maxOutflow: bigint; }; $typeName: `${string}::rate_limiter::RateLimiter`; prevQty: bigint; windowStart: bigint; curQty: bigint; remainingOutflow: BigNumber; }; feeReceiver: string; badDebtUsd: BigNumber; badDebtLimitUsd: BigNumber; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; tvlUsd: BigNumber; id: string; type: string; ownerCapId: string | undefined; name: string; isHidden: boolean; iconUrl: string | null; description: string | null; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; }; coinMetadataMap: Record; refreshedRawReserves: Reserve[]; unpricedCoinTypes: string[]; reserveMap: Record; confidenceByCoinType: Map; reserveCoinTypes: string[]; reserveCoinMetadataMap: Record; rewardCoinTypes: string[]; activeRewardCoinTypes: string[]; rewardCoinMetadataMap: Record; }[]>; export declare const initializeSuilend: (suiGrpcClient: SuiGrpcClient, suilendClient: SuilendClient, lendingMarketMetadata?: LendingMarketMetadata, fallbackPythEndpoint?: string, options?: InitializeSuilendOptions) => Promise<{ lendingMarket: { version: bigint; reserves: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }[]; obligations: import("../_generated/_dependencies/sui/object-table/structs").ObjectTable<"0x2::object::ID", `${string}::obligation::Obligation<${string}>`>; rateLimiter: { config: { windowDuration: bigint; maxOutflow: bigint; }; $typeName: `${string}::rate_limiter::RateLimiter`; prevQty: bigint; windowStart: bigint; curQty: bigint; remainingOutflow: BigNumber; }; feeReceiver: string; badDebtUsd: BigNumber; badDebtLimitUsd: BigNumber; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; tvlUsd: BigNumber; id: string; type: string; ownerCapId: string | undefined; name: string; isHidden: boolean; iconUrl: string | null; description: string | null; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; }; coinMetadataMap: Record; refreshedRawReserves: Reserve[]; unpricedCoinTypes: string[]; reserveMap: Record; confidenceByCoinType: Map; reserveCoinTypes: string[]; reserveCoinMetadataMap: Record; rewardCoinTypes: string[]; activeRewardCoinTypes: string[]; rewardCoinMetadataMap: Record; }>; export declare const initializeSuilendRewardsAll: (markets: { reserveMap: Record; activeRewardCoinTypes: string[]; }[], fetchPrices?: FetchPrices) => Promise<{ rewardPriceMap: Record; }[]>; export declare const initializeSuilendRewards: (reserveMap: Record, activeRewardCoinTypes: string[], fetchPrices?: FetchPrices) => Promise<{ rewardPriceMap: Record; }>; export type OwnedStrategyOwnerCap = StrategyOwnerCap & { lendingMarketType: string; }; export type OwnedObligations = { strategyOwnerCaps: OwnedStrategyOwnerCap[]; obligationOwnerCaps: ObligationOwnerCap[]; obligations: Obligation[]; obligationErrors: Record; }; export declare const fetchOwnedObligations: (suiGrpcClient: SuiGrpcClient, address: string) => Promise; export declare const parseOwnedObligations: (owned: OwnedObligations, suilendClient: SuilendClient, refreshedRawReserves: Reserve[], reserveMap: Record, confidenceByCoinType?: ConfidenceByCoinType) => { strategyOwnerCaps: StrategyOwnerCap[]; strategyObligations: { id: string; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; netValueUsd: BigNumber; weightedBorrowsUsd: BigNumber; maxPriceWeightedBorrowsUsd: BigNumber; borrowLimitUsd: BigNumber; minPriceBorrowLimitUsd: BigNumber; unhealthyBorrowValueUsd: BigNumber; depositPositionCount: number; borrowPositionCount: number; positionCount: number; deposits: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; depositedCtokenAmount: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; borrows: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; borrowedAmount: BigNumber; borrowedAmountUsd: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; weightedConservativeBorrowUtilizationPercent: BigNumber; original: Obligation; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; totalWeightedBorrowUsd: BigNumber; maxPriceTotalWeightedBorrowUsd: BigNumber; borrowLimit: BigNumber; minPriceBorrowLimit: BigNumber; }[]; obligationOwnerCaps: ObligationOwnerCap[]; obligations: { id: string; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; netValueUsd: BigNumber; weightedBorrowsUsd: BigNumber; maxPriceWeightedBorrowsUsd: BigNumber; borrowLimitUsd: BigNumber; minPriceBorrowLimitUsd: BigNumber; unhealthyBorrowValueUsd: BigNumber; depositPositionCount: number; borrowPositionCount: number; positionCount: number; deposits: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; depositedCtokenAmount: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; borrows: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; borrowedAmount: BigNumber; borrowedAmountUsd: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; weightedConservativeBorrowUtilizationPercent: BigNumber; original: Obligation; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; totalWeightedBorrowUsd: BigNumber; maxPriceTotalWeightedBorrowUsd: BigNumber; borrowLimit: BigNumber; minPriceBorrowLimit: BigNumber; }[]; }; export declare const initializeObligations: (suiGrpcClient: SuiGrpcClient, suilendClient: SuilendClient, refreshedRawReserves: Reserve[], reserveMap: Record, address?: string, confidenceByCoinType?: ConfidenceByCoinType) => Promise<{ strategyOwnerCaps: StrategyOwnerCap[]; strategyObligations: { id: string; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; netValueUsd: BigNumber; weightedBorrowsUsd: BigNumber; maxPriceWeightedBorrowsUsd: BigNumber; borrowLimitUsd: BigNumber; minPriceBorrowLimitUsd: BigNumber; unhealthyBorrowValueUsd: BigNumber; depositPositionCount: number; borrowPositionCount: number; positionCount: number; deposits: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; depositedCtokenAmount: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; borrows: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; borrowedAmount: BigNumber; borrowedAmountUsd: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; weightedConservativeBorrowUtilizationPercent: BigNumber; original: Obligation; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; totalWeightedBorrowUsd: BigNumber; maxPriceTotalWeightedBorrowUsd: BigNumber; borrowLimit: BigNumber; minPriceBorrowLimit: BigNumber; }[]; obligationOwnerCaps: ObligationOwnerCap[]; obligations: { id: string; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; netValueUsd: BigNumber; weightedBorrowsUsd: BigNumber; maxPriceWeightedBorrowsUsd: BigNumber; borrowLimitUsd: BigNumber; minPriceBorrowLimitUsd: BigNumber; unhealthyBorrowValueUsd: BigNumber; depositPositionCount: number; borrowPositionCount: number; positionCount: number; deposits: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; depositedCtokenAmount: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; borrows: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("../_generated/suilend/liquidity-mining/structs").UserRewardManager; borrowedAmount: BigNumber; borrowedAmountUsd: BigNumber; reserve: { config: { $typeName: `${string}::reserve_config::ReserveConfig`; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: BigNumber; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; additionalFields: import("../_generated/_dependencies/sui/bag/structs").Bag; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: `${string}::reserve::Reserve`; id: string; arrayIndex: bigint; coinType: string; mintDecimals: number; priceIdentifier: string; price: BigNumber; smoothedPrice: BigNumber; minPrice: BigNumber; maxPrice: BigNumber; priceLastUpdateTimestampS: bigint; availableAmount: BigNumber; ctokenSupply: BigNumber; borrowedAmount: BigNumber; cumulativeBorrowRate: BigNumber; interestLastUpdateTimestampS: bigint; unclaimedSpreadFees: BigNumber; attributedBorrowValue: BigNumber; depositsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; borrowsPoolRewardManager: { $typeName: `${string}::liquidity_mining::PoolRewardManager`; id: string; totalShares: bigint; poolRewards: { $typeName: `${string}::liquidity_mining::PoolReward`; id: string; poolRewardManagerId: string; coinType: string; startTimeMs: number; endTimeMs: number; totalRewards: BigNumber; allocatedRewards: BigNumber; cumulativeRewardsPerShare: BigNumber; numUserRewardManagers: bigint; rewardIndex: number; symbol: string; mintDecimals: number; }[]; lastUpdateTimeMs: bigint; }; availableAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; cTokenExchangeRate: BigNumber; borrowAprPercent: BigNumber; depositAprPercent: BigNumber; utilizationPercent: BigNumber; token: { id: string | null; decimals: number; name: string; symbol: string; description: string; iconUrl: string | null; coinType: string; }; symbol: string; name: string; iconUrl: string | null; description: string; totalDeposits: BigNumber; }; original: Obligation; }[]; weightedConservativeBorrowUtilizationPercent: BigNumber; original: Obligation; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; totalWeightedBorrowUsd: BigNumber; maxPriceTotalWeightedBorrowUsd: BigNumber; borrowLimit: BigNumber; minPriceBorrowLimit: BigNumber; }[]; }>; export {};