Files
ore/api/src/state/market/vaults.rs
Hardhat Chad 8f6a40ea17 market
2025-06-05 16:56:03 -07:00

44 lines
1.6 KiB
Rust

use solana_program::log::sol_log;
use steel::*;
use crate::error::OreError;
use super::Market;
/// Vault reserve checks.
impl Market {
/// Sanity check that vaults have reserves for all market debts.
/// Assumes the token accounts have already been validated as the market's base and quote vaults.
pub fn check_vaults(
&self,
base_vault: &TokenAccount,
quote_vault: &TokenAccount,
) -> Result<(), OreError> {
self.check_base_vault(base_vault)?;
self.check_quote_vault(quote_vault)?;
Ok(())
}
/// Sanity check that base vault has reserves for all market debts.
/// Assumes the token account has already been validated as the market's base vault.
pub fn check_base_vault(&self, base_vault: &TokenAccount) -> Result<(), OreError> {
if base_vault.amount() < self.base.balance {
sol_log(&format!("A base_vault.amount: {}", base_vault.amount()));
sol_log(&format!("A self.base.balance: {}", self.base.balance));
sol_log("Insufficient base vault reserves");
return Err(OreError::InsufficientVaultReserves.into());
}
Ok(())
}
/// Sanity check that quote vault has reserves for all market debts.
/// Assumes the token account has already been validated as the market's quote vault.
pub fn check_quote_vault(&self, quote_vault: &TokenAccount) -> Result<(), OreError> {
if quote_vault.amount() < self.quote.balance + self.fee.uncollected {
sol_log("Insufficient quote vault reserves");
return Err(OreError::InsufficientVaultReserves.into());
}
Ok(())
}
}