carbon_mpl_core_decoder/instructions/
create_v2.rs1use {
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}