From c9c03a96a9d25bac231020ac305ccb2a34260f42 Mon Sep 17 00:00:00 2001 From: man0s <95379755+losman0s@users.noreply.github.com> Date: Fri, 6 Sep 2024 21:06:04 +0800 Subject: [PATCH] fix: ignore bankrupt --- src/liquidator.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/liquidator.rs b/src/liquidator.rs index 3ef9307..305194f 100644 --- a/src/liquidator.rs +++ b/src/liquidator.rs @@ -19,7 +19,7 @@ use fixed::types::I80F48; use fixed_macro::types::I80F48; use log::{debug, error, info}; use marginfi::{ - constants::EXP_10_I80F48, + constants::{BANKRUPT_THRESHOLD, EXP_10_I80F48}, state::{ marginfi_account::{BalanceSide, MarginfiAccount, RequirementType}, marginfi_group::{Bank, BankOperationalState, RiskTier}, @@ -277,6 +277,25 @@ impl Liquidator { return None; } + let (deposit_shares, liabs_shares) = account.get_deposits_and_liabilities_shares(); + + let deposit_values = self + .get_value_of_shares( + deposit_shares, + &BalanceSide::Assets, + RequirementType::Maintenance, + ) + .unwrap(); + + if deposit_values + .iter() + .map(|(v, _)| v.to_num::()) + .sum::() + < BANKRUPT_THRESHOLD + { + return None; + } + let (asset_bank_pk, liab_bank_pk) = match self.find_liquidation_bank_candidates(account) { Ok(Some((asset_bank_pk, liab_bank_pk))) => (asset_bank_pk, liab_bank_pk),