carbon_vertigo_decoder/instructions/
create.rs1use super::super::types::*;
2
3use carbon_core::{borsh, CarbonDeserialize};
4
5#[derive(CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Clone)]
6#[carbon(discriminator = "0x181ec828051c0777")]
7pub struct Create {
8 pub params: CreateParams,
9}
10
11#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
12pub struct CreateInstructionAccounts {
13 pub payer: solana_pubkey::Pubkey,
14 pub owner: solana_pubkey::Pubkey,
15 pub token_wallet_authority: solana_pubkey::Pubkey,
16 pub mint_a: solana_pubkey::Pubkey,
17 pub mint_b: solana_pubkey::Pubkey,
18 pub token_wallet_b: solana_pubkey::Pubkey,
19 pub pool: solana_pubkey::Pubkey,
20 pub vault_a: solana_pubkey::Pubkey,
21 pub vault_b: solana_pubkey::Pubkey,
22 pub token_program_a: solana_pubkey::Pubkey,
23 pub token_program_b: solana_pubkey::Pubkey,
24 pub system_program: solana_pubkey::Pubkey,
25 pub rent: solana_pubkey::Pubkey,
26}
27
28impl carbon_core::deserialize::ArrangeAccounts for Create {
29 type ArrangedAccounts = CreateInstructionAccounts;
30
31 fn arrange_accounts(
32 accounts: &[solana_instruction::AccountMeta],
33 ) -> Option<Self::ArrangedAccounts> {
34 let [payer, owner, token_wallet_authority, mint_a, mint_b, token_wallet_b, pool, vault_a, vault_b, token_program_a, token_program_b, system_program, rent, _remaining @ ..] =
35 accounts
36 else {
37 return None;
38 };
39
40 Some(CreateInstructionAccounts {
41 payer: payer.pubkey,
42 owner: owner.pubkey,
43 token_wallet_authority: token_wallet_authority.pubkey,
44 mint_a: mint_a.pubkey,
45 mint_b: mint_b.pubkey,
46 token_wallet_b: token_wallet_b.pubkey,
47 pool: pool.pubkey,
48 vault_a: vault_a.pubkey,
49 vault_b: vault_b.pubkey,
50 token_program_a: token_program_a.pubkey,
51 token_program_b: token_program_b.pubkey,
52 system_program: system_program.pubkey,
53 rent: rent.pubkey,
54 })
55 }
56}