carbon_vertigo_decoder/instructions/
create.rs

1use 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}