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