solana_central/raydium/
get_raydium_ammv4_pool_from_accountinfo.rs1use crate::protocol_idls::raydium::AmmV4PoolInfoIdl;
2use crate::types::pool::Pool;
3use crate::types::pools::Pools;
4use crate::types::raydium_ammv4_pool::RaydiumAmmV4Pool;
5use borsh::BorshDeserialize;
6use solana_sdk::pubkey::Pubkey;
7
8impl RaydiumAmmV4Pool {
9 pub fn from_account_info(pubkey: Pubkey, account_buffer: &[u8]) -> Self {
13 let decoded_layout: AmmV4PoolInfoIdl =
14 AmmV4PoolInfoIdl::try_from_slice(account_buffer).unwrap();
15 Self {
16 info: Pool {
17 pool_address: pubkey,
18 token_a_address: decoded_layout.base_mint,
19 token_b_address: decoded_layout.quote_mint,
20 pool_type: Pools::RaydiumAmmV4,
21 token_a_vault_address: decoded_layout.base_vault,
22 token_b_vault_address: decoded_layout.quote_vault,
23 },
24 swap_fee_numerator: decoded_layout.swap_fee_numerator,
25 swap_fee_denominator: decoded_layout.swap_fee_denominator,
26 token_a_vault_amount: 0,
28 token_b_vault_amount: 0,
29 }
30 }
31}