carbon_mpl_core_decoder/instructions/
execute_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 = "0x1f")]
10pub struct ExecuteV1 {
11    pub execute_v1_args: ExecuteV1Args,
12}
13
14pub struct ExecuteV1InstructionAccounts {
15    pub asset: solana_pubkey::Pubkey,
16    pub collection: solana_pubkey::Pubkey,
17    pub asset_signer: solana_pubkey::Pubkey,
18    pub payer: solana_pubkey::Pubkey,
19    pub authority: solana_pubkey::Pubkey,
20    pub system_program: solana_pubkey::Pubkey,
21    pub program_id: solana_pubkey::Pubkey,
22}
23
24impl carbon_core::deserialize::ArrangeAccounts for ExecuteV1 {
25    type ArrangedAccounts = ExecuteV1InstructionAccounts;
26
27    fn arrange_accounts(
28        accounts: &[solana_instruction::AccountMeta],
29    ) -> Option<Self::ArrangedAccounts> {
30        let [asset, collection, asset_signer, payer, authority, system_program, program_id, _remaining @ ..] =
31            accounts
32        else {
33            return None;
34        };
35
36        Some(ExecuteV1InstructionAccounts {
37            asset: asset.pubkey,
38            collection: collection.pubkey,
39            asset_signer: asset_signer.pubkey,
40            payer: payer.pubkey,
41            authority: authority.pubkey,
42            system_program: system_program.pubkey,
43            program_id: program_id.pubkey,
44        })
45    }
46}