carbon_points_store_decoder/instructions/
close_store.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 = "0x5712d5c03f8841cd")]
7pub struct CloseStore {
8    pub key_index: u16,
9}
10
11#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
12pub struct CloseStoreInstructionAccounts {
13    pub key: solana_pubkey::Pubkey,
14    pub profile: solana_pubkey::Pubkey,
15    pub store: solana_pubkey::Pubkey,
16    pub store_signer: solana_pubkey::Pubkey,
17    pub bank: solana_pubkey::Pubkey,
18    pub funds_to: solana_pubkey::Pubkey,
19    pub tokens_to: solana_pubkey::Pubkey,
20    pub token_program: solana_pubkey::Pubkey,
21    pub system_program: solana_pubkey::Pubkey,
22}
23
24impl carbon_core::deserialize::ArrangeAccounts for CloseStore {
25    type ArrangedAccounts = CloseStoreInstructionAccounts;
26
27    fn arrange_accounts(
28        accounts: &[solana_instruction::AccountMeta],
29    ) -> Option<Self::ArrangedAccounts> {
30        let mut iter = accounts.iter();
31        let key = next_account(&mut iter)?;
32        let profile = next_account(&mut iter)?;
33        let store = next_account(&mut iter)?;
34        let store_signer = next_account(&mut iter)?;
35        let bank = next_account(&mut iter)?;
36        let funds_to = next_account(&mut iter)?;
37        let tokens_to = next_account(&mut iter)?;
38        let token_program = next_account(&mut iter)?;
39        let system_program = next_account(&mut iter)?;
40
41        Some(CloseStoreInstructionAccounts {
42            key,
43            profile,
44            store,
45            store_signer,
46            bank,
47            funds_to,
48            tokens_to,
49            token_program,
50            system_program,
51        })
52    }
53}