carbon_sage_starbased_decoder/instructions/
add_connection.rs1use 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}