carbon_pump_swap_decoder/events/
create_pool_event.rs1use solana_pubkey::Pubkey;
3
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
6pub struct CreatePoolEventEvent {
7 pub timestamp: i64,
8 pub index: u16,
9 pub creator: Pubkey,
10 pub base_mint: Pubkey,
11 pub quote_mint: Pubkey,
12 pub base_mint_decimals: u8,
13 pub quote_mint_decimals: u8,
14 pub base_amount_in: u64,
15 pub quote_amount_in: u64,
16 pub pool_base_amount: u64,
17 pub pool_quote_amount: u64,
18 pub minimum_liquidity: u64,
19 pub initial_liquidity: u64,
20 pub lp_token_amount_out: u64,
21 pub pool_bump: u8,
22 pub pool: Pubkey,
23 pub lp_mint: Pubkey,
24 pub user_base_token_account: Pubkey,
25 pub user_quote_token_account: Pubkey,
26 pub coin_creator: Pubkey,
27 pub is_mayhem_mode: bool,
28}
29
30impl CreatePoolEventEvent {
31 pub fn decode(data: &[u8]) -> Option<Self> {
32 if data.len() < 8 {
33 return None;
34 }
35 let discriminator = &data[0..8];
36 if discriminator != [177, 49, 12, 210, 160, 118, 167, 116] {
37 return None;
38 }
39
40 let mut data_slice = data;
41
42 data_slice = &data_slice[8..];
43
44 borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
45 }
46}