carbon_mpl_core_decoder/instructions/
burn_v1.rs

1use {
2    super::super::types::*,
3    carbon_core::{borsh, CarbonDeserialize},
4};
5
6#[derive(
7    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
8)]
9#[carbon(discriminator = "0x0c")]
10pub struct BurnV1 {
11    pub burn_v1_args: BurnV1Args,
12}
13
14pub struct BurnV1InstructionAccounts {
15    pub asset: solana_sdk::pubkey::Pubkey,
16    pub collection: solana_sdk::pubkey::Pubkey,
17    pub payer: solana_sdk::pubkey::Pubkey,
18    pub authority: solana_sdk::pubkey::Pubkey,
19    pub system_program: solana_sdk::pubkey::Pubkey,
20    pub log_wrapper: solana_sdk::pubkey::Pubkey,
21}
22
23impl carbon_core::deserialize::ArrangeAccounts for BurnV1 {
24    type ArrangedAccounts = BurnV1InstructionAccounts;
25
26    fn arrange_accounts(
27        accounts: &[solana_sdk::instruction::AccountMeta],
28    ) -> Option<Self::ArrangedAccounts> {
29        let [asset, collection, payer, authority, system_program, log_wrapper, _remaining @ ..] =
30            accounts
31        else {
32            return None;
33        };
34
35        Some(BurnV1InstructionAccounts {
36            asset: asset.pubkey,
37            collection: collection.pubkey,
38            payer: payer.pubkey,
39            authority: authority.pubkey,
40            system_program: system_program.pubkey,
41            log_wrapper: log_wrapper.pubkey,
42        })
43    }
44}