carbon_points_decoder/instructions/
register_point_modifier.rs

1use carbon_core::{CarbonDeserialize, account_utils::next_account, borsh};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x52a34eeda53b36b2")]
7pub struct RegisterPointModifier {
8    pub can_increment: bool,
9    pub can_decrement: bool,
10    pub key_index: u16,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
14pub struct RegisterPointModifierInstructionAccounts {
15    pub key: solana_pubkey::Pubkey,
16    pub profile: solana_pubkey::Pubkey,
17    pub funder: solana_pubkey::Pubkey,
18    pub category: solana_pubkey::Pubkey,
19    pub points_modifier_account: solana_pubkey::Pubkey,
20    pub system_program: solana_pubkey::Pubkey,
21}
22
23impl carbon_core::deserialize::ArrangeAccounts for RegisterPointModifier {
24    type ArrangedAccounts = RegisterPointModifierInstructionAccounts;
25
26    fn arrange_accounts(
27        accounts: &[solana_instruction::AccountMeta],
28    ) -> Option<Self::ArrangedAccounts> {
29        let mut iter = accounts.iter();
30        let key = next_account(&mut iter)?;
31        let profile = next_account(&mut iter)?;
32        let funder = next_account(&mut iter)?;
33        let category = next_account(&mut iter)?;
34        let points_modifier_account = next_account(&mut iter)?;
35        let system_program = next_account(&mut iter)?;
36
37        Some(RegisterPointModifierInstructionAccounts {
38            key,
39            profile,
40            funder,
41            category,
42            points_modifier_account,
43            system_program,
44        })
45    }
46}