carbon_mpl_core_decoder/instructions/
transfer_v1.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 = "0x0e")]
10pub struct TransferV1 {
11 pub transfer_v1_args: TransferV1Args,
12}
13
14pub struct TransferV1InstructionAccounts {
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 new_owner: solana_sdk::pubkey::Pubkey,
20 pub system_program: solana_sdk::pubkey::Pubkey,
21 pub log_wrapper: solana_sdk::pubkey::Pubkey,
22}
23
24impl carbon_core::deserialize::ArrangeAccounts for TransferV1 {
25 type ArrangedAccounts = TransferV1InstructionAccounts;
26
27 fn arrange_accounts(
28 accounts: &[solana_sdk::instruction::AccountMeta],
29 ) -> Option<Self::ArrangedAccounts> {
30 let [asset, collection, payer, authority, new_owner, system_program, log_wrapper, _remaining @ ..] =
31 accounts
32 else {
33 return None;
34 };
35
36 Some(TransferV1InstructionAccounts {
37 asset: asset.pubkey,
38 collection: collection.pubkey,
39 payer: payer.pubkey,
40 authority: authority.pubkey,
41 new_owner: new_owner.pubkey,
42 system_program: system_program.pubkey,
43 log_wrapper: log_wrapper.pubkey,
44 })
45 }
46}