2023-02-10 05:22:07 -08:00
|
|
|
use mango_v4::accounts_zerocopy::*;
|
|
|
|
use mango_v4::state::{Bank, MintInfo, PerpMarket};
|
2022-06-18 07:31:28 -07:00
|
|
|
|
2023-02-10 05:22:07 -08:00
|
|
|
use solana_sdk::account::AccountSharedData;
|
2022-06-18 07:31:28 -07:00
|
|
|
use solana_sdk::pubkey::Pubkey;
|
|
|
|
|
2023-02-20 05:08:38 -08:00
|
|
|
pub use mango_v4_client::snapshot_source::is_mango_account;
|
2022-06-18 07:31:28 -07:00
|
|
|
|
2023-02-10 05:22:07 -08:00
|
|
|
pub fn is_mango_bank<'a>(account: &'a AccountSharedData, group_id: &Pubkey) -> Option<&'a Bank> {
|
|
|
|
let bank = account.load::<Bank>().ok()?;
|
2022-06-18 07:31:28 -07:00
|
|
|
if bank.group != *group_id {
|
|
|
|
return None;
|
|
|
|
}
|
|
|
|
Some(bank)
|
|
|
|
}
|
|
|
|
|
2023-02-10 05:22:07 -08:00
|
|
|
pub fn is_mint_info<'a>(account: &'a AccountSharedData, group_id: &Pubkey) -> Option<&'a MintInfo> {
|
|
|
|
let mint_info = account.load::<MintInfo>().ok()?;
|
2022-06-18 07:31:28 -07:00
|
|
|
if mint_info.group != *group_id {
|
|
|
|
return None;
|
|
|
|
}
|
|
|
|
Some(mint_info)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn is_perp_market<'a>(
|
|
|
|
account: &'a AccountSharedData,
|
|
|
|
group_id: &Pubkey,
|
|
|
|
) -> Option<&'a PerpMarket> {
|
2023-02-10 05:22:07 -08:00
|
|
|
let perp_market = account.load::<PerpMarket>().ok()?;
|
2022-06-18 07:31:28 -07:00
|
|
|
if perp_market.group != *group_id {
|
|
|
|
return None;
|
|
|
|
}
|
|
|
|
Some(perp_market)
|
|
|
|
}
|