pub fn withdraw_deposit_tracking(ctx: Context<WithdrawDepositTrackingAccount>, amount: u64) -> Result<()> {
        let farm_key = {
            let loader: AccountLoader<tulipv2_sdk_vaults::accounts::multi_optimizer::MultiDepositOptimizerV1> = AccountLoader::try_from_unchecked(
                &ctx.accounts.vault_program.key(),
                &ctx.accounts.vault,
            )?;
            {
                let vault = loader.load()?;
                vault.base.farm 
            }
        };
        let ix = new_withdraw_deposit_tracking_ix(
            ctx.accounts.authority.key(),
            ctx.accounts.deposit_tracking_account.key(),
            ctx.accounts.deposit_tracking_pda.key(),
            ctx.accounts.deposit_tracking_hold_account.key(),
            ctx.accounts.receiving_shares_account.key(),
            ctx.accounts.shares_mint.key(),
            ctx.accounts.vault.key(),
            farm_key.into(),
            amount,
        );
        anchor_lang::solana_program::program::invoke(
             &ix,
             &[
                 ctx.accounts.authority.clone(),
                 ctx.accounts.clock.to_account_info(),
                 ctx.accounts.deposit_tracking_account.clone(),
                 ctx.accounts.deposit_tracking_pda.clone(),
                 ctx.accounts.deposit_tracking_hold_account.to_account_info(),
                 ctx.accounts.receiving_shares_account.to_account_info(),
                 ctx.accounts.shares_mint.to_account_info(),
                 ctx.accounts.vault.clone(),
             ],
        )?;
        Ok(())
    }
/// withdraws `amount` of shares from the deposit tracking account into the `receiving_shares_account`.
/// these withdrawn shares still accrue rewards, the rewards accrued are no longer tracked by the deposit
/// tracking account
withdraws `amount` of shares from the deposit tracking account into the `receiving_shares_account`.
these withdrawn shares still accrue rewards, the rewards accrued are no longer tracked by the deposit
tracking account
withdraws ` amount ` of shares from the deposit tracking account into the ` receiving_shares_account ` . these withdrawn shares still accrue rewards the rewards accrued are no longer tracked by the deposit tracking account
pub fn withdraw_deposit_tracking(ctx: Context<WithdrawDepositTrackingAccount>, amount: u64) -> Result<()> {
        let farm_key = {
            let loader: AccountLoader<tulipv2_sdk_vaults::accounts::multi_optimizer::MultiDepositOptimizerV1> = AccountLoader::try_from_unchecked(
                &ctx.accounts.vault_program.key(),
                &ctx.accounts.vault,
            )?;
            {
                let vault = loader.load()?;
                vault.base.farm 
            }
        };
        let ix = new_withdraw_deposit_tracking_ix(
            ctx.accounts.authority.key(),
            ctx.accounts.deposit_tracking_account.key(),
            ctx.accounts.deposit_tracking_pda.key(),
            ctx.accounts.deposit_tracking_hold_account.key(),
            ctx.accounts.receiving_shares_account.key(),
            ctx.accounts.shares_mint.key(),
            ctx.accounts.vault.key(),
            farm_key.into(),
            amount,
        );
        anchor_lang::solana_program::program::invoke(
             &ix,
             &[
                 ctx.accounts.authority.clone(),
                 ctx.accounts.clock.to_account_info(),
                 ctx.accounts.deposit_tracking_account.clone(),
                 ctx.accounts.deposit_tracking_pda.clone(),
                 ctx.accounts.deposit_tracking_hold_account.to_account_info(),
                 ctx.accounts.receiving_shares_account.to_account_info(),
                 ctx.accounts.shares_mint.to_account_info(),
                 ctx.accounts.vault.clone(),
             ],
        )?;
        Ok(())
    }
pub fn withdraw_deposit_tracking ( ctx : Context < WithdrawDepositTrackingAccount > , amount : u64 ) -> Result < ( ) > { let farm_key = { let loader : AccountLoader < tulipv2_sdk_vaults :: accounts :: multi_optimizer :: MultiDepositOptimizerV1 > = AccountLoader :: try_from_unchecked ( & ctx . accounts . vault_program . key ( ) , & ctx . accounts . vault , ) ? ; { let vault = loader . load ( ) ? ; vault . base . farm } } ; let ix = new_withdraw_deposit_tracking_ix ( ctx . accounts . authority . key ( ) , ctx . accounts . deposit_tracking_account . key ( ) , ctx . accounts . deposit_tracking_pda . key ( ) , ctx . accounts . deposit_tracking_hold_account . key ( ) , ctx . accounts . receiving_shares_account . key ( ) , ctx . accounts . shares_mint . key ( ) , ctx . accounts . vault . key ( ) , farm_key . into ( ) , amount , ) ; anchor_lang :: solana_program :: program :: invoke ( & ix , & [ ctx . accounts . authority . clone ( ) , ctx . accounts . clock . to_account_info ( ) , ctx . accounts . deposit_tracking_account . clone ( ) , ctx . accounts . deposit_tracking_pda . clone ( ) , ctx . accounts . deposit_tracking_hold_account . to_account_info ( ) , ctx . accounts . receiving_shares_account . to_account_info ( ) , ctx . accounts . shares_mint . to_account_info ( ) , ctx . accounts . vault . clone ( ) , ] , ) ? ; Ok ( ( ) ) }
withdraws `amount` of shares from the deposit tracking account into the `receiving_shares_account`.
withdraws ` amount ` of shares from the deposit tracking account into the ` receiving_shares_account ` .
ctx
Context<WithdrawDepositTrackingAccount>
amount
u64
ctx
Context<WithdrawDepositTrackingAccount>
amount
u64