use anchor_lang::prelude::*;
use solana_program::instruction::Instruction;
pub trait WithdrawMultiOptimizerVault {
fn authority(&self) -> Pubkey;
fn multi_deposit_vault(&self) -> Pubkey;
fn multi_deposit_vault_pda(&self) -> Pubkey;
fn withdraw_vault(&self) -> Pubkey;
fn withdraw_vault_pda(&self) -> Pubkey;
fn platform_information(&self) -> Pubkey;
fn platform_config_data(&self) -> Pubkey;
fn lending_program(&self) -> Pubkey;
fn multi_burning_shares_token_account(&self) -> Pubkey;
fn withdraw_burning_shares_token_account(&self) -> Pubkey;
fn receiving_underlying_token_account(&self) -> Pubkey;
fn multi_underlying_withdraw_queue(&self) -> Pubkey;
fn multi_shares_mint(&self) -> Pubkey;
fn withdraw_shares_mint(&self) -> Pubkey;
fn withdraw_vault_underlying_deposit_queue(&self) -> Pubkey;
fn standalone_vault_accounts(&self) -> Option<Vec<AccountMeta>>;
fn instruction(&self, amount: u64) -> Option<Instruction>;
fn ix_data(&self) -> Option<[u8; 8]>;
fn to_account_meta(&self, _is_signer: Option<bool>) -> Vec<AccountMeta>;
}