carbon_fluxbeam_decoder/instructions/
initialize.rs1use super::super::types::*;
2
3use carbon_core::{borsh, CarbonDeserialize};
4
5#[derive(
6 CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
7)]
8#[carbon(discriminator = "0x00")]
9pub struct Initialize {
10 pub fees: Fees,
11 pub swap_curve: SwapCurve,
12}
13
14#[derive(Debug, PartialEq)]
15pub struct InitializeInstructionAccounts {
16 pub swap: solana_pubkey::Pubkey,
17 pub authority: solana_pubkey::Pubkey,
18 pub token_a: solana_pubkey::Pubkey,
19 pub token_b: solana_pubkey::Pubkey,
20 pub pool: solana_pubkey::Pubkey,
21 pub fee: solana_pubkey::Pubkey,
22 pub destination: solana_pubkey::Pubkey,
23 pub token_program: solana_pubkey::Pubkey,
24}
25
26impl carbon_core::deserialize::ArrangeAccounts for Initialize {
27 type ArrangedAccounts = InitializeInstructionAccounts;
28
29 fn arrange_accounts(
30 accounts: &[solana_instruction::AccountMeta],
31 ) -> Option<Self::ArrangedAccounts> {
32 let [swap, authority, token_a, token_b, pool, fee, destination, token_program, _remaining @ ..] =
33 accounts
34 else {
35 return None;
36 };
37
38 Some(InitializeInstructionAccounts {
39 swap: swap.pubkey,
40 authority: authority.pubkey,
41 token_a: token_a.pubkey,
42 token_b: token_b.pubkey,
43 pool: pool.pubkey,
44 fee: fee.pubkey,
45 destination: destination.pubkey,
46 token_program: token_program.pubkey,
47 })
48 }
49}