Skip to main content

carbon_sage_starbased_decoder/instructions/
add_connection.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::CarbonDeserialize;
3use carbon_core::account_utils::next_account;
4use carbon_core::borsh;
5use carbon_core::deserialize::ArrangeAccounts;
6use carbon_core::deserialize::CarbonDeserialize;
7
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
10pub struct AddConnection {
11    pub sub_coordinates1: [i64; 2],
12    pub flags1: u8,
13    pub sub_coordinates2: [i64; 2],
14    pub flags2: u8,
15    pub key_index: u16,
16}
17
18#[derive(Debug, Clone, PartialEq)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20pub struct AddConnectionInstructionAccounts {
21    pub key: solana_pubkey::Pubkey,
22    pub profile: solana_pubkey::Pubkey,
23    pub game_id: solana_pubkey::Pubkey,
24    pub funder: solana_pubkey::Pubkey,
25    pub sector1: solana_pubkey::Pubkey,
26    pub sector2: solana_pubkey::Pubkey,
27    pub system_program: solana_pubkey::Pubkey,
28    pub remaining: Vec<solana_instruction::AccountMeta>,
29}
30
31impl AddConnection {
32    pub fn decode(data: &[u8]) -> Option<Self> {
33        if data.len() < 8 {
34            return None;
35        }
36        let discriminator = &data[0..8];
37        if discriminator != &[40, 6, 69, 0, 230, 150, 215, 41] {
38            return None;
39        }
40
41        let data_slice = data;
42
43        let data_slice = &data_slice[8..];
44
45        Self::deserialize(data_slice)
46    }
47}
48
49impl ArrangeAccounts for AddConnection {
50    type ArrangedAccounts = AddConnectionInstructionAccounts;
51
52    fn arrange_accounts(
53        accounts: &[solana_instruction::AccountMeta],
54    ) -> Option<Self::ArrangedAccounts> {
55        let mut iter = accounts.iter();
56
57        let key = next_account(&mut iter)?;
58        let profile = next_account(&mut iter)?;
59        let game_id = next_account(&mut iter)?;
60        let funder = next_account(&mut iter)?;
61        let sector1 = next_account(&mut iter)?;
62        let sector2 = next_account(&mut iter)?;
63        let system_program = next_account(&mut iter)?;
64
65        let remaining = iter.as_slice();
66
67        Some(AddConnectionInstructionAccounts {
68            key,
69            profile,
70            game_id,
71            funder,
72            sector1,
73            sector2,
74            system_program,
75            remaining: remaining.to_vec(),
76        })
77    }
78}