carbon_mpl_core_decoder/instructions/
update_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 = "0x0f")]
10pub struct UpdateV1 {
11 pub update_v1_args: UpdateV1Args,
12}
13
14pub struct UpdateV1InstructionAccounts {
15 pub asset: solana_pubkey::Pubkey,
16 pub collection: solana_pubkey::Pubkey,
17 pub payer: solana_pubkey::Pubkey,
18 pub authority: solana_pubkey::Pubkey,
19 pub system_program: solana_pubkey::Pubkey,
20 pub log_wrapper: solana_pubkey::Pubkey,
21}
22
23impl carbon_core::deserialize::ArrangeAccounts for UpdateV1 {
24 type ArrangedAccounts = UpdateV1InstructionAccounts;
25
26 fn arrange_accounts(
27 accounts: &[solana_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(UpdateV1InstructionAccounts {
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}