Skip to main content

carbon_meteora_dbc_decoder/instructions/
create_locker.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts};
3/// PERMISSIONLESS FUNCTIONS ///
4/// create locker
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
7pub struct CreateLocker {}
8
9#[derive(Debug, Clone, PartialEq)]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11pub struct CreateLockerInstructionAccounts {
12    pub virtual_pool: solana_pubkey::Pubkey,
13    pub config: solana_pubkey::Pubkey,
14    pub pool_authority: solana_pubkey::Pubkey,
15    pub base_vault: solana_pubkey::Pubkey,
16    pub base_mint: solana_pubkey::Pubkey,
17    pub base: solana_pubkey::Pubkey,
18    pub creator: solana_pubkey::Pubkey,
19    pub escrow: solana_pubkey::Pubkey,
20    pub escrow_token: solana_pubkey::Pubkey,
21    pub payer: solana_pubkey::Pubkey,
22    pub token_program: solana_pubkey::Pubkey,
23    pub locker_program: solana_pubkey::Pubkey,
24    pub locker_event_authority: solana_pubkey::Pubkey,
25    pub system_program: solana_pubkey::Pubkey,
26    pub remaining: Vec<solana_instruction::AccountMeta>,
27}
28
29impl CreateLocker {
30    pub fn decode(data: &[u8]) -> Option<Self> {
31        if data.len() < 8 {
32            return None;
33        }
34        let discriminator = &data[0..8];
35        if discriminator != [167, 90, 137, 154, 75, 47, 17, 84] {
36            return None;
37        }
38
39        let mut data_slice = data;
40
41        data_slice = &data_slice[8..];
42
43        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
44    }
45}
46
47impl ArrangeAccounts for CreateLocker {
48    type ArrangedAccounts = CreateLockerInstructionAccounts;
49
50    fn arrange_accounts(
51        accounts: &[solana_instruction::AccountMeta],
52    ) -> Option<Self::ArrangedAccounts> {
53        let mut iter = accounts.iter();
54
55        let virtual_pool = next_account(&mut iter)?;
56        let config = next_account(&mut iter)?;
57        let pool_authority = next_account(&mut iter)?;
58        let base_vault = next_account(&mut iter)?;
59        let base_mint = next_account(&mut iter)?;
60        let base = next_account(&mut iter)?;
61        let creator = next_account(&mut iter)?;
62        let escrow = next_account(&mut iter)?;
63        let escrow_token = next_account(&mut iter)?;
64        let payer = next_account(&mut iter)?;
65        let token_program = next_account(&mut iter)?;
66        let locker_program = next_account(&mut iter)?;
67        let locker_event_authority = next_account(&mut iter)?;
68        let system_program = next_account(&mut iter)?;
69
70        let remaining = iter.as_slice();
71
72        Some(CreateLockerInstructionAccounts {
73            virtual_pool,
74            config,
75            pool_authority,
76            base_vault,
77            base_mint,
78            base,
79            creator,
80            escrow,
81            escrow_token,
82            payer,
83            token_program,
84            locker_program,
85            locker_event_authority,
86            system_program,
87            remaining: remaining.to_vec(),
88        })
89    }
90}