carbon_wavebreak_decoder/instructions/
permission_refund.rs

1use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x06")]
7pub struct PermissionRefund {}
8
9#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
10pub struct PermissionRefundInstructionAccounts {
11    pub consumed_permission: solana_pubkey::Pubkey,
12    pub refund_destination: solana_pubkey::Pubkey,
13}
14
15impl carbon_core::deserialize::ArrangeAccounts for PermissionRefund {
16    type ArrangedAccounts = PermissionRefundInstructionAccounts;
17
18    fn arrange_accounts(
19        accounts: &[solana_instruction::AccountMeta],
20    ) -> Option<Self::ArrangedAccounts> {
21        let mut iter = accounts.iter();
22        let consumed_permission = next_account(&mut iter)?;
23        let refund_destination = next_account(&mut iter)?;
24
25        Some(PermissionRefundInstructionAccounts {
26            consumed_permission,
27            refund_destination,
28        })
29    }
30}