defituna-client 3.6.23

Rust client to interact with DefiTuna's on-chain program.
Documentation
use crate::accounts::fetch_market;
use crate::instructions::CloseMarket;
use crate::{get_market_address, get_tuna_config_address};
use anyhow::Result;
use solana_client::rpc_client::RpcClient;
use solana_instruction::Instruction;
use solana_pubkey::Pubkey;
use spl_token::solana_program::address_lookup_table::instruction::close_lookup_table;

pub fn close_market_instruction(rpc: &RpcClient, authority: &Pubkey, pool: &Pubkey, close_address_lookup_table: bool) -> Result<Vec<Instruction>> {
    let tuna_config_address = get_tuna_config_address().0;
    let market_address = get_market_address(pool).0;
    let market = fetch_market(&rpc, &market_address)?;

    let mut instructions = vec![];

    if close_address_lookup_table {
        instructions.push(close_lookup_table(market.data.address_lookup_table, *authority, *authority));
    }

    let ix_builder = CloseMarket {
        authority: *authority,
        tuna_config: tuna_config_address,
        market: market_address,
        vault_a: market.data.vault_a,
        vault_b: market.data.vault_b,
    };

    instructions.push(ix_builder.instruction());

    Ok(instructions)
}