carbon_pumpfun_decoder/instructions/
set_params.rs

1use carbon_core::{account_utils::next_account, 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_basis_points: u64,
17    pub set_creator_authority: solana_pubkey::Pubkey,
18    pub admin_set_creator_authority: solana_pubkey::Pubkey,
19}
20
21#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
22pub struct SetParamsInstructionAccounts {
23    pub global: solana_pubkey::Pubkey,
24    pub authority: solana_pubkey::Pubkey,
25    pub event_authority: solana_pubkey::Pubkey,
26    pub program: solana_pubkey::Pubkey,
27}
28
29impl carbon_core::deserialize::ArrangeAccounts for SetParams {
30    type ArrangedAccounts = SetParamsInstructionAccounts;
31
32    fn arrange_accounts(
33        accounts: &[solana_instruction::AccountMeta],
34    ) -> Option<Self::ArrangedAccounts> {
35        let mut iter = accounts.iter();
36        let global = next_account(&mut iter)?;
37        let authority = next_account(&mut iter)?;
38        let event_authority = next_account(&mut iter)?;
39        let program = next_account(&mut iter)?;
40
41        Some(SetParamsInstructionAccounts {
42            global,
43            authority,
44            event_authority,
45            program,
46        })
47    }
48}