Skip to main content

carbon_wavebreak_decoder/instructions/
permission_config_initialize.rs

1//! This code was AUTOGENERATED using the Codama library.
2use {
3    crate::types::PermissionSigner,
4    carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts},
5    solana_pubkey::Pubkey,
6};
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
9pub struct PermissionConfigInitialize {
10    pub permission_authority: PermissionSigner,
11    pub consumer_program: Pubkey,
12}
13
14#[derive(Debug, Clone, PartialEq)]
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16pub struct PermissionConfigInitializeInstructionAccounts {
17    pub authority: solana_pubkey::Pubkey,
18    pub permission_config: solana_pubkey::Pubkey,
19    pub authority_config: solana_pubkey::Pubkey,
20    pub system_program: solana_pubkey::Pubkey,
21    pub remaining: Vec<solana_instruction::AccountMeta>,
22}
23
24impl PermissionConfigInitialize {
25    pub fn decode(data: &[u8]) -> Option<Self> {
26        if data.is_empty() {
27            return None;
28        }
29        let discriminator = &data[0..1];
30        if discriminator != [2] {
31            return None;
32        }
33
34        let mut data_slice = data;
35
36        data_slice = &data_slice[1..];
37
38        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
39    }
40}
41
42impl ArrangeAccounts for PermissionConfigInitialize {
43    type ArrangedAccounts = PermissionConfigInitializeInstructionAccounts;
44
45    fn arrange_accounts(
46        accounts: &[solana_instruction::AccountMeta],
47    ) -> Option<Self::ArrangedAccounts> {
48        let mut iter = accounts.iter();
49
50        let authority = next_account(&mut iter)?;
51        let permission_config = next_account(&mut iter)?;
52        let authority_config = next_account(&mut iter)?;
53        let system_program = next_account(&mut iter)?;
54
55        let remaining = iter.as_slice();
56
57        Some(PermissionConfigInitializeInstructionAccounts {
58            authority,
59            permission_config,
60            authority_config,
61            system_program,
62            remaining: remaining.to_vec(),
63        })
64    }
65}