carbon_name_service_decoder/instructions/
create.rs1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4 CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x00")]
7pub struct Create {
8 pub hashed_name: Vec<u8>,
9 pub lamports: u64,
10 pub space: u32,
11}
12
13pub struct CreateInstructionAccounts {
14 pub system_program: solana_pubkey::Pubkey,
15 pub funding_account: solana_pubkey::Pubkey,
16 pub name_record: solana_pubkey::Pubkey,
17 pub account_class: solana_pubkey::Pubkey,
18 pub parent_name_record: solana_pubkey::Pubkey,
19 pub parent_name_record_class: solana_pubkey::Pubkey,
20}
21
22impl carbon_core::deserialize::ArrangeAccounts for Create {
23 type ArrangedAccounts = CreateInstructionAccounts;
24
25 fn arrange_accounts(
26 accounts: &[solana_instruction::AccountMeta],
27 ) -> Option<Self::ArrangedAccounts> {
28 let [system_program, funding_account, name_record, account_class, parent_name_record, parent_name_record_class, _remaining @ ..] =
29 accounts
30 else {
31 return None;
32 };
33
34 Some(CreateInstructionAccounts {
35 system_program: system_program.pubkey,
36 funding_account: funding_account.pubkey,
37 name_record: name_record.pubkey,
38 account_class: account_class.pubkey,
39 parent_name_record: parent_name_record.pubkey,
40 parent_name_record_class: parent_name_record_class.pubkey,
41 })
42 }
43}