carbon_token_2022_decoder/instructions/
initialize_multisig2.rs

1//! This code was AUTOGENERATED using the Codama library.
2//! Please DO NOT EDIT THIS FILE, instead use visitors
3//! to add features, then rerun Codama to update it.
4//!
5//! <https://github.com/codama-idl/codama>
6//!
7use carbon_core::account_utils::next_account;
8use carbon_core::borsh;
9use carbon_core::deserialize::ArrangeAccounts;
10use carbon_core::deserialize::CarbonDeserialize;
11use carbon_core::CarbonDeserialize;
12
13/// Like InitializeMultisig, but does not require the Rent sysvar to be provided.
14#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
15#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq)]
16pub struct InitializeMultisig2 {
17    /// The number of signers (M) required to validate this multisignature account.
18    pub m: u8,
19}
20
21#[derive(Debug, Clone, PartialEq)]
22#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
23pub struct InitializeMultisig2InstructionAccounts {
24    pub multisig: solana_pubkey::Pubkey,
25    pub remaining: Vec<solana_instruction::AccountMeta>,
26}
27
28impl InitializeMultisig2 {
29    pub fn decode(data: &[u8]) -> Option<Self> {
30        if data.is_empty() {
31            return None;
32        }
33        let discriminator = &data[0..1];
34        if discriminator != [19] {
35            return None;
36        }
37
38        let data_slice = data;
39
40        let data_slice = &data_slice[1..];
41
42        Self::deserialize(data_slice)
43    }
44}
45
46impl ArrangeAccounts for InitializeMultisig2 {
47    type ArrangedAccounts = InitializeMultisig2InstructionAccounts;
48
49    fn arrange_accounts(
50        accounts: &[solana_instruction::AccountMeta],
51    ) -> Option<Self::ArrangedAccounts> {
52        let mut iter = accounts.iter();
53
54        let multisig = next_account(&mut iter)?;
55
56        let remaining = iter.as_slice();
57
58        Some(InitializeMultisig2InstructionAccounts {
59            multisig,
60            remaining: remaining.to_vec(),
61        })
62    }
63}