carbon-heaven-decoder 0.11.0

Heaven program decoder
Documentation
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};

#[derive(
    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
)]
#[carbon(discriminator = "0x208f535e17223bef")]
pub struct RemainingAccountsStub {}

#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
pub struct RemainingAccountsStubInstructionAccounts {
    pub create_protocol_config_remaining_accounts: solana_pubkey::Pubkey,
    pub kamino_lending_user_metadata: solana_pubkey::Pubkey,
    pub kamino_lending_init_obligation: solana_pubkey::Pubkey,
    pub kamino_lending_refresh_reserve: solana_pubkey::Pubkey,
    pub kamino_lending_refresh_obligation: solana_pubkey::Pubkey,
    pub refresh_msol_price_list: solana_pubkey::Pubkey,
    pub msol_liquid_staking: solana_pubkey::Pubkey,
    pub msol_liquid_staking_cpi: solana_pubkey::Pubkey,
    pub kamino_deposit_with_farm: solana_pubkey::Pubkey,
    pub kamino_deposit_with_farm_cpi: solana_pubkey::Pubkey,
    pub kamino_deposit_with_farm_client: solana_pubkey::Pubkey,
    pub kamino_borrow_with_farm: solana_pubkey::Pubkey,
    pub kamino_borrow_with_farm_cpi: solana_pubkey::Pubkey,
    pub kamino_borrow_with_farm_client: solana_pubkey::Pubkey,
    pub kamino_repay_with_farm: solana_pubkey::Pubkey,
    pub kamino_repay_with_farm_cpi: solana_pubkey::Pubkey,
    pub kamino_repay_with_farm_client: solana_pubkey::Pubkey,
    pub order_unstake_msol_client: solana_pubkey::Pubkey,
    pub order_unstake_msol_cpi: solana_pubkey::Pubkey,
    pub claim_msol_cpi: solana_pubkey::Pubkey,
    pub kamino_withdraw_with_farm: solana_pubkey::Pubkey,
    pub kamino_withdraw_with_farm_cpi: solana_pubkey::Pubkey,
    pub kamino_withdraw_with_farm_client: solana_pubkey::Pubkey,
}

impl carbon_core::deserialize::ArrangeAccounts for RemainingAccountsStub {
    type ArrangedAccounts = RemainingAccountsStubInstructionAccounts;

    fn arrange_accounts(
        accounts: &[solana_instruction::AccountMeta],
    ) -> Option<Self::ArrangedAccounts> {
        let mut iter = accounts.iter();
        let create_protocol_config_remaining_accounts = next_account(&mut iter)?;
        let kamino_lending_user_metadata = next_account(&mut iter)?;
        let kamino_lending_init_obligation = next_account(&mut iter)?;
        let kamino_lending_refresh_reserve = next_account(&mut iter)?;
        let kamino_lending_refresh_obligation = next_account(&mut iter)?;
        let refresh_msol_price_list = next_account(&mut iter)?;
        let msol_liquid_staking = next_account(&mut iter)?;
        let msol_liquid_staking_cpi = next_account(&mut iter)?;
        let kamino_deposit_with_farm = next_account(&mut iter)?;
        let kamino_deposit_with_farm_cpi = next_account(&mut iter)?;
        let kamino_deposit_with_farm_client = next_account(&mut iter)?;
        let kamino_borrow_with_farm = next_account(&mut iter)?;
        let kamino_borrow_with_farm_cpi = next_account(&mut iter)?;
        let kamino_borrow_with_farm_client = next_account(&mut iter)?;
        let kamino_repay_with_farm = next_account(&mut iter)?;
        let kamino_repay_with_farm_cpi = next_account(&mut iter)?;
        let kamino_repay_with_farm_client = next_account(&mut iter)?;
        let order_unstake_msol_client = next_account(&mut iter)?;
        let order_unstake_msol_cpi = next_account(&mut iter)?;
        let claim_msol_cpi = next_account(&mut iter)?;
        let kamino_withdraw_with_farm = next_account(&mut iter)?;
        let kamino_withdraw_with_farm_cpi = next_account(&mut iter)?;
        let kamino_withdraw_with_farm_client = next_account(&mut iter)?;

        Some(RemainingAccountsStubInstructionAccounts {
            create_protocol_config_remaining_accounts,
            kamino_lending_user_metadata,
            kamino_lending_init_obligation,
            kamino_lending_refresh_reserve,
            kamino_lending_refresh_obligation,
            refresh_msol_price_list,
            msol_liquid_staking,
            msol_liquid_staking_cpi,
            kamino_deposit_with_farm,
            kamino_deposit_with_farm_cpi,
            kamino_deposit_with_farm_client,
            kamino_borrow_with_farm,
            kamino_borrow_with_farm_cpi,
            kamino_borrow_with_farm_client,
            kamino_repay_with_farm,
            kamino_repay_with_farm_cpi,
            kamino_repay_with_farm_client,
            order_unstake_msol_client,
            order_unstake_msol_cpi,
            claim_msol_cpi,
            kamino_withdraw_with_farm,
            kamino_withdraw_with_farm_cpi,
            kamino_withdraw_with_farm_client,
        })
    }
}