carbon_pumpfun_decoder/instructions/
set_params.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x1beab2349302bb8d")]
7pub struct SetParams {
8    pub initial_virtual_token_reserves: u64,
9    pub initial_virtual_sol_reserves: u64,
10    pub initial_real_token_reserves: u64,
11    pub token_total_supply: u64,
12    pub fee_basis_points: u64,
13    pub withdraw_authority: solana_pubkey::Pubkey,
14    pub enable_migrate: bool,
15    pub pool_migration_fee: u64,
16    pub creator_fee: u64,
17}
18
19#[derive(Debug, PartialEq)]
20pub struct SetParamsInstructionAccounts {
21    pub global: solana_pubkey::Pubkey,
22    pub authority: solana_pubkey::Pubkey,
23    pub event_authority: solana_pubkey::Pubkey,
24    pub program: solana_pubkey::Pubkey,
25}
26
27impl carbon_core::deserialize::ArrangeAccounts for SetParams {
28    type ArrangedAccounts = SetParamsInstructionAccounts;
29
30    fn arrange_accounts(
31        accounts: &[solana_instruction::AccountMeta],
32    ) -> Option<Self::ArrangedAccounts> {
33        let [global, authority, event_authority, program, _remaining @ ..] = accounts else {
34            return None;
35        };
36
37        Some(SetParamsInstructionAccounts {
38            global: global.pubkey,
39            authority: authority.pubkey,
40            event_authority: event_authority.pubkey,
41            program: program.pubkey,
42        })
43    }
44}