carbon_tcomp_decoder/instructions/
edit.rs

1use carbon_core::{CarbonDeserialize, account_utils::next_account, borsh};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x0fb72156571c9791")]
7pub struct Edit {
8    pub amount: u64,
9    pub expire_in_sec: Option<u64>,
10    pub currency: Option<solana_pubkey::Pubkey>,
11    pub private_taker: Option<solana_pubkey::Pubkey>,
12    pub maker_broker: Option<solana_pubkey::Pubkey>,
13}
14
15#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
16pub struct EditInstructionAccounts {
17    pub list_state: solana_pubkey::Pubkey,
18    pub owner: solana_pubkey::Pubkey,
19    pub tcomp_program: solana_pubkey::Pubkey,
20}
21
22impl carbon_core::deserialize::ArrangeAccounts for Edit {
23    type ArrangedAccounts = EditInstructionAccounts;
24
25    fn arrange_accounts(
26        accounts: &[solana_instruction::AccountMeta],
27    ) -> Option<Self::ArrangedAccounts> {
28        let mut iter = accounts.iter();
29        let list_state = next_account(&mut iter)?;
30        let owner = next_account(&mut iter)?;
31        let tcomp_program = next_account(&mut iter)?;
32
33        Some(EditInstructionAccounts {
34            list_state,
35            owner,
36            tcomp_program,
37        })
38    }
39}