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 fee_recipient: solana_sdk::pubkey::Pubkey,
9    pub initial_virtual_token_reserves: u64,
10    pub initial_virtual_sol_reserves: u64,
11    pub initial_real_token_reserves: u64,
12    pub token_total_supply: u64,
13    pub fee_basis_points: u64,
14    pub withdraw_authority: solana_sdk::pubkey::Pubkey,
15}
16
17pub struct SetParamsInstructionAccounts {
18    pub global: solana_sdk::pubkey::Pubkey,
19    pub user: solana_sdk::pubkey::Pubkey,
20    pub system_program: solana_sdk::pubkey::Pubkey,
21    pub event_authority: solana_sdk::pubkey::Pubkey,
22    pub program: solana_sdk::pubkey::Pubkey,
23}
24
25impl carbon_core::deserialize::ArrangeAccounts for SetParams {
26    type ArrangedAccounts = SetParamsInstructionAccounts;
27
28    fn arrange_accounts(
29        accounts: &[solana_sdk::instruction::AccountMeta],
30    ) -> Option<Self::ArrangedAccounts> {
31        let [global, user, system_program, event_authority, program, _remaining @ ..] = accounts
32        else {
33            return None;
34        };
35
36        Some(SetParamsInstructionAccounts {
37            global: global.pubkey,
38            user: user.pubkey,
39            system_program: system_program.pubkey,
40            event_authority: event_authority.pubkey,
41            program: program.pubkey,
42        })
43    }
44}