import { BorrowLendRate } from '@sonarwatch/portfolio-core'; import { ParsedData } from '../../utils/sui/types'; import { ID } from '../../utils/sui/types/id'; export type ObligationCapFields = { id: ID; obligation_id: string; }; export type Obligation = { id: ID; lending_market_id: string; deposits: ParsedData[]; borrows: ParsedData[]; deposited_value_usd: ParsedData; allowed_borrow_value_usd: ParsedData; unhealthy_borrow_value_usd: ParsedData; super_unhealthy_borrow_value_usd: ParsedData; unweighted_borrowed_value_usd: ParsedData; weighted_borrowed_value_usd: ParsedData; weighted_borrowed_value_upper_bound_usd: ParsedData; borrowing_isolated_asset: boolean; user_reward_managers: ParsedData[]; bad_debt_usd: ParsedData; closable: boolean; }; export type Deposit = { attributed_borrow_value: ParsedData; coin_type: ParsedData; deposited_ctoken_amount: string; market_value: ParsedData; user_reward_manager_index: string; reserve_array_index: string; }; export type Borrow = { coin_type: ParsedData; borrowed_amount: ParsedData; cumulative_borrow_rate: ParsedData; market_value: ParsedData; user_reward_manager_index: string; reserve_array_index: string; }; export type UserRewardManager = { last_update_time_ms: string; pool_reward_manager_id: string; rewards: ParsedData[]; share: string; }; export type Reward = { cumulative_rewards_per_share: ParsedData; earned_rewards: ParsedData; pool_reward_id: string; }; export type MarketsInfo = { lendingMarkets: LendingMarket[]; rates: BorrowLendRate[]; }; export type LendingMarket = { id: ID; version: string; fee_receiver: string; reserves: ParsedData[]; }; export type Reserve = { id: ID; array_index: string; attributed_borrow_value: ParsedData; available_amount: string; borrowed_amount: ParsedData; borrows_pool_reward_manager: ParsedData; coin_type: ParsedData; config: ParsedData; ctoken_supply: string; cumulative_borrow_rate: ParsedData; deposits_pool_reward_manager: ParsedData; interest_last_update_timestamp_s: string; lending_market_id: string; mint_decimals: number; price: ParsedData; price_identifier: ParsedData; price_last_update_timestamp_s: string; smoothed_price: ParsedData; unclaimed_spread_fees: ParsedData; }; export type PoolRewardManager = { id: ID; last_update_time_ms: string; pool_rewards: ParsedData[]; total_shares: string; }; export type PoolReward = null | { id: ID; additional_fields: ParsedData; allocated_rewards: ParsedData; coin_type: ParsedData; cumulative_rewards_per_share: ParsedData; end_time_ms: string; num_user_reward_managers: string; pool_reward_manager_id: string; start_time_ms: string; total_rewards: string; }; export type AdditionalFields = { id: ID; size: string; }; export type Config = { element: ParsedData; }; export type Element = { additional_fields: ParsedData; borrow_fee_bps: string; borrow_limit: string; borrow_limit_usd: string; borrow_weight_bps: string; close_attributed_borrow_limit_usd: string; close_ltv_pct: number; deposit_limit: string; deposit_limit_usd: string; interest_rate_aprs: string[]; interest_rate_utils: number[]; isolated: boolean; liquidation_bonus_bps: string; max_close_ltv_pct: number; max_liquidation_bonus_bps: string; open_attributed_borrow_limit_usd: string; open_ltv_pct: number; protocol_liquidation_fee_bps: string; spread_fee_bps: string; }; export type PriceIdentifier = { bytes: number[]; }; export type Value = { value: string; }; export type Name = { name: string; }; export type RewardInfo = { poolId: string; rewardMint: string; }; export type SuilendCapsule = { id: ID; rarity: 'rare' | 'common' | 'uncommon'; }; export type BurnEvents = { pointsRecord: Record; capsuleRecord: Record; }; export type BurnEvent = { id: EventId; packageId: string; transactionModule: string; sender: string; type: string; parsedJson: BurnEventJSON; bcs: string; }; export type EventId = { txDigest: string; eventSeq: string; }; export type BurnEventJSON = { claim_amount: string; manager_id: string; points_burned?: string; rarity?: string; };