import type { SuiClient } from '@mysten/sui/client'; import { Transaction } from '@mysten/sui/transactions'; import { type ClaimRewardsReward } from '@suilend/sdk'; import type { Reserve } from '@suilend/sdk/_generated/suilend/reserve/structs'; import BigNumber from 'bignumber.js'; import type { CoinMetadataMap } from '../../types'; export declare class Suilend { private suilendClient?; private readonly suiClient; constructor(client: SuiClient); deposit(coinType: string, amount: string, address: string, obligationOwnerCapId?: string): Promise; borrow(coinType: string, amount: string, address: string, obligationOwnerCapId: string, obligationId: string): Promise; withdraw(coinType: string, amount: string, address: string, obligationOwnerCapId: string, obligationId: string): Promise; repay(coinType: string, amount: string, address: string, obligationId: string): Promise; claimRewards(address: string, obligationOwnerCapId: string, rewards: (ClaimRewardsReward & { coinInAmount: bigint; })[], coinTypeToReceive?: string): Promise; getUserAndAppData(metadata: CoinMetadataMap, address: string): Promise<{ lendingMarket: { id: string; version: bigint; reserves: { config: { $typeName: string; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: number; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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: { decimals: number; description: string; iconUrl?: string | null; id?: string | null; name: string; symbol: string; coinType: string; }; symbol: string; name: string; iconUrl: string | null | undefined; description: string; totalDeposits: BigNumber; }[]; obligations: import("@suilend/sdk/_generated/_dependencies/source/0x2/object-table/structs").ObjectTable<"0x2::object::ID", `0x1f54a9a2d71799553197e9ea24557797c6398d6a65f2d4d3818c9304b75d5e21::obligation::Obligation<${string}>` | `0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::obligation::Obligation<${string}>`>; rateLimiter: { config: { windowDuration: bigint; maxOutflow: bigint; }; $typeName: string; prevQty: bigint; windowStart: bigint; curQty: bigint; remainingOutflow: BigNumber; }; feeReceiver: string; badDebtUsd: BigNumber; badDebtLimitUsd: BigNumber; depositedAmountUsd: BigNumber; borrowedAmountUsd: BigNumber; tvlUsd: BigNumber; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; }; lendingMarketOwnerCapId: string | null; obligationOwnerCaps: import("@suilend/sdk/_generated/suilend/lending-market/structs").ObligationOwnerCap[] | { timestampMs: number; __StructClass: true; $typeName: string; $fullTypeName: `${string}::lending_market::ObligationOwnerCap<${string}>`; $typeArgs: [string]; $isPhantom: readonly [true]; id: import("@suilend/sdk/_generated/_framework/reified").ToField; obligationId: import("@suilend/sdk/_generated/_framework/reified").ToField; }[]; 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("@suilend/sdk/_generated/suilend/liquidity-mining/structs").UserRewardManager; depositedAmount: BigNumber; depositedAmountUsd: BigNumber; depositedCtokenAmount: BigNumber; reserve: { config: { $typeName: string; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: number; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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: { decimals: number; description: string; iconUrl?: string | null; id?: string | null; name: string; symbol: string; coinType: string; }; symbol: string; name: string; iconUrl: string | null | undefined; description: string; totalDeposits: BigNumber; }; original: import("@suilend/sdk/_generated/suilend/obligation/structs").Obligation; }[]; borrows: { coinType: string; reserveArrayIndex: bigint; userRewardManagerIndex: number; userRewardManager: import("@suilend/sdk/_generated/suilend/liquidity-mining/structs").UserRewardManager; borrowedAmount: BigNumber; borrowedAmountUsd: BigNumber; reserve: { config: { $typeName: string; openLtvPct: number; closeLtvPct: number; maxCloseLtvPct: number; borrowWeightBps: number; depositLimit: BigNumber; borrowLimit: BigNumber; liquidationBonusBps: number; maxLiquidationBonusBps: number; depositLimitUsd: BigNumber; borrowLimitUsd: BigNumber; borrowFeeBps: number; spreadFeeBps: number; protocolLiquidationFeeBps: number; isolated: boolean; openAttributedBorrowLimitUsd: number; closeAttributedBorrowLimitUsd: number; interestRate: { id: string; utilPercent: BigNumber; aprPercent: BigNumber; }[]; }; $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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; id: string; totalShares: bigint; poolRewards: { $typeName: string; 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: { decimals: number; description: string; iconUrl?: string | null; id?: string | null; name: string; symbol: string; coinType: string; }; symbol: string; name: string; iconUrl: string | null | undefined; description: string; totalDeposits: BigNumber; }; original: import("@suilend/sdk/_generated/suilend/obligation/structs").Obligation; }[]; weightedConservativeBorrowUtilizationPercent: BigNumber; original: import("@suilend/sdk/_generated/suilend/obligation/structs").Obligation; totalSupplyUsd: BigNumber; totalBorrowUsd: BigNumber; totalWeightedBorrowUsd: BigNumber; maxPriceTotalWeightedBorrowUsd: BigNumber; borrowLimit: BigNumber; minPriceBorrowLimit: BigNumber; }[]; reserveMap: Record; rewardMap: import("./liquidityMining").RewardMap; rewardsPriceMap: Record; }>; getRawReserves(now: number): Promise[]>; getReserveCoinTypes(): Promise; getRewardsCoinTypes(): Promise; getReservesAndRewardsCoinTypes(): Promise; private getParsedLendingMarket; private initialize; }