carbon_system_program_decoder/instructions/
transfer_sol_with_seed.rs1use carbon_core::{borsh, deserialize::U64PrefixString, CarbonDeserialize};
2
3#[derive(CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone)]
4#[carbon(discriminator = "0x0b000000")]
5pub struct TransferSolWithSeed {
6 pub amount: u64,
7 pub from_seed: U64PrefixString,
8 pub from_owner: solana_pubkey::Pubkey,
9}
10
11pub struct TransferSolWithSeedInstructionAccounts {
12 pub source: solana_pubkey::Pubkey,
13 pub base_account: solana_pubkey::Pubkey,
14 pub destination: solana_pubkey::Pubkey,
15}
16
17impl carbon_core::deserialize::ArrangeAccounts for TransferSolWithSeed {
18 type ArrangedAccounts = TransferSolWithSeedInstructionAccounts;
19
20 fn arrange_accounts(
21 accounts: &[solana_instruction::AccountMeta],
22 ) -> Option<Self::ArrangedAccounts> {
23 let [source, base_account, destination, _remaining @ ..] = accounts else {
24 return None;
25 };
26
27 Some(TransferSolWithSeedInstructionAccounts {
28 source: source.pubkey,
29 base_account: base_account.pubkey,
30 destination: destination.pubkey,
31 })
32 }
33}