Skip to main content

carbon_sage_starbased_decoder/instructions/
create_fleet.rs

1//! This code was AUTOGENERATED using the Codama library.
2use crate::types::CreateFleetInput;
3use carbon_core::CarbonDeserialize;
4use carbon_core::account_utils::next_account;
5use carbon_core::borsh;
6use carbon_core::deserialize::ArrangeAccounts;
7use carbon_core::deserialize::CarbonDeserialize;
8
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Debug, Clone, borsh::BorshSerialize, CarbonDeserialize, PartialEq, Eq, Hash)]
11pub struct CreateFleet {
12    pub input: CreateFleetInput,
13}
14
15#[derive(Debug, Clone, PartialEq)]
16#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17pub struct CreateFleetInstructionAccounts {
18    pub key: solana_pubkey::Pubkey,
19    pub profile: solana_pubkey::Pubkey,
20    pub profile_faction: solana_pubkey::Pubkey,
21    pub game_id: solana_pubkey::Pubkey,
22    pub game_state: solana_pubkey::Pubkey,
23    pub funder: solana_pubkey::Pubkey,
24    pub fleet: solana_pubkey::Pubkey,
25    pub fleet_ships: solana_pubkey::Pubkey,
26    pub cargo_hold: solana_pubkey::Pubkey,
27    pub fuel_tank: solana_pubkey::Pubkey,
28    pub ammo_bank: solana_pubkey::Pubkey,
29    pub ship: solana_pubkey::Pubkey,
30    pub starbase: solana_pubkey::Pubkey,
31    pub starbase_player: solana_pubkey::Pubkey,
32    pub cargo_stats_definition: solana_pubkey::Pubkey,
33    pub cargo_program: solana_pubkey::Pubkey,
34    pub system_program: solana_pubkey::Pubkey,
35    pub remaining: Vec<solana_instruction::AccountMeta>,
36}
37
38impl CreateFleet {
39    pub fn decode(data: &[u8]) -> Option<Self> {
40        if data.len() < 8 {
41            return None;
42        }
43        let discriminator = &data[0..8];
44        if discriminator != &[76, 123, 81, 82, 235, 228, 156, 203] {
45            return None;
46        }
47
48        let data_slice = data;
49
50        let data_slice = &data_slice[8..];
51
52        Self::deserialize(data_slice)
53    }
54}
55
56impl ArrangeAccounts for CreateFleet {
57    type ArrangedAccounts = CreateFleetInstructionAccounts;
58
59    fn arrange_accounts(
60        accounts: &[solana_instruction::AccountMeta],
61    ) -> Option<Self::ArrangedAccounts> {
62        let mut iter = accounts.iter();
63
64        let key = next_account(&mut iter)?;
65        let profile = next_account(&mut iter)?;
66        let profile_faction = next_account(&mut iter)?;
67        let game_id = next_account(&mut iter)?;
68        let game_state = next_account(&mut iter)?;
69        let funder = next_account(&mut iter)?;
70        let fleet = next_account(&mut iter)?;
71        let fleet_ships = next_account(&mut iter)?;
72        let cargo_hold = next_account(&mut iter)?;
73        let fuel_tank = next_account(&mut iter)?;
74        let ammo_bank = next_account(&mut iter)?;
75        let ship = next_account(&mut iter)?;
76        let starbase = next_account(&mut iter)?;
77        let starbase_player = next_account(&mut iter)?;
78        let cargo_stats_definition = next_account(&mut iter)?;
79        let cargo_program = next_account(&mut iter)?;
80        let system_program = next_account(&mut iter)?;
81
82        let remaining = iter.as_slice();
83
84        Some(CreateFleetInstructionAccounts {
85            key,
86            profile,
87            profile_faction,
88            game_id,
89            game_state,
90            funder,
91            fleet,
92            fleet_ships,
93            cargo_hold,
94            fuel_tank,
95            ammo_bank,
96            ship,
97            starbase,
98            starbase_player,
99            cargo_stats_definition,
100            cargo_program,
101            system_program,
102            remaining: remaining.to_vec(),
103        })
104    }
105}