solana_central/raydium/
get_launchpad_pool_from_accountinfo.rs1use crate::constants::RAYDIUM_CONSTANTS;
2use crate::protocol_idls::raydium::LaunchpadPoolIdl;
3use crate::types::pool::Pool;
4use crate::types::pools::Pools;
5use crate::types::raydium_launchpad::RaydiumLaunchpad;
6use borsh::BorshDeserialize;
7use solana_sdk::pubkey::Pubkey;
8
9impl RaydiumLaunchpad {
10 pub fn from_account_info(pubkey: Pubkey, account_buffer: &[u8]) -> Self {
14 let decoded_layout = LaunchpadPoolIdl::try_from_slice(account_buffer).unwrap();
15 let platform_config = decoded_layout.platform_config;
16 let token_b_address = decoded_layout.quote_mint;
17
18 let (platform_vault, _) = Pubkey::find_program_address(
19 &[platform_config.as_array(), token_b_address.as_array()],
20 &RAYDIUM_CONSTANTS.launchpad_program,
21 );
22 let (creator_vault, _) = Pubkey::find_program_address(
23 &[
24 decoded_layout.creator.as_array(),
25 token_b_address.as_array(),
26 ],
27 &RAYDIUM_CONSTANTS.launchpad_program,
28 );
29
30 Self {
31 info: Pool {
32 pool_address: pubkey,
33 token_a_address: decoded_layout.base_mint,
34 token_b_address,
35 pool_type: Pools::RaydiumLaunchpad,
36 token_a_vault_address: decoded_layout.base_vault,
37 token_b_vault_address: decoded_layout.quote_vault,
38 },
39 platform_config,
40 platform_vault,
41 creator_vault,
42 virtual_token_a_reserve: decoded_layout.virtual_base,
43 virtual_token_b_reserve: decoded_layout.virtual_quote,
44 real_token_a_reserve: decoded_layout.real_base,
45 real_token_b_reserve: decoded_layout.real_quote,
46 }
47 }
48}