carbon_token_2022_decoder/instructions/
initialize_pausable_config.rs1use carbon_core::account_utils::next_account;
8use carbon_core::borsh;
9use carbon_core::deserialize::ArrangeAccounts;
10use carbon_core::deserialize::CarbonDeserialize;
11use carbon_core::CarbonDeserialize;
12use solana_pubkey::Pubkey;
13
14#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
18#[derive(Debug, Clone, PartialEq)]
19pub struct InitializePausableConfig {
20 pub pausable_discriminator: u8,
21 pub authority: Option<Pubkey>,
23}
24
25#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
26pub struct InitializePausableConfigDeser {
27 pub pausable_discriminator: u8,
28 pub authority: spl_pod::optional_keys::OptionalNonZeroPubkey,
29}
30
31#[derive(Debug, Clone, PartialEq)]
32#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
33pub struct InitializePausableConfigInstructionAccounts {
34 pub mint: solana_pubkey::Pubkey,
35 pub remaining: Vec<solana_instruction::AccountMeta>,
36}
37
38impl InitializePausableConfig {
39 pub fn decode(data: &[u8]) -> Option<Self> {
40 if data.len() < 2 {
41 return None;
42 }
43 let discriminator = &data[0..1];
44 if discriminator != [44] {
45 return None;
46 }
47 let pausable_discriminator = data[1];
48 if pausable_discriminator != 0 {
49 return None;
50 }
51
52 let data_slice = data;
53
54 let data_slice = &data_slice[1..];
55
56 let pausable_config = InitializePausableConfigDeser::deserialize(data_slice)?;
57
58 Some(InitializePausableConfig {
59 pausable_discriminator: pausable_config.pausable_discriminator,
60 authority: pausable_config.authority.into(),
61 })
62 }
63}
64
65impl ArrangeAccounts for InitializePausableConfig {
66 type ArrangedAccounts = InitializePausableConfigInstructionAccounts;
67
68 fn arrange_accounts(
69 accounts: &[solana_instruction::AccountMeta],
70 ) -> Option<Self::ArrangedAccounts> {
71 let mut iter = accounts.iter();
72
73 let mint = next_account(&mut iter)?;
74
75 let remaining = iter.as_slice();
76
77 Some(InitializePausableConfigInstructionAccounts {
78 mint,
79 remaining: remaining.to_vec(),
80 })
81 }
82}