jup-lend-sdk 0.2.2

SDK for Jupiter lending protocol
Documentation
use std::sync::Arc;

use anchor_client::{
    solana_sdk::{commitment_config::CommitmentConfig, signature::Keypair},
    Cluster,
};

use crate::programs::vaults::accounts::{VaultConfig, VaultState};

use super::{get_vault_program, pda};

pub async fn get_all_vault_config(cluster: Cluster) -> anyhow::Result<Vec<VaultConfig>> {
    let program = get_vault_program(
        cluster,
        Arc::new(Keypair::new()),
        CommitmentConfig::confirmed(),
    )?;

    Ok(program
        .accounts::<VaultConfig>(vec![])
        .await?
        .into_iter()
        .map(|(_, config)| config)
        .collect::<Vec<_>>())
}

pub async fn get_vault_config(vault_id: u16, cluster: Cluster) -> anyhow::Result<VaultConfig> {
    let program = get_vault_program(
        cluster,
        Arc::new(Keypair::new()),
        CommitmentConfig::confirmed(),
    )?;

    Ok(program.account(pda::get_vault_config(vault_id)).await?)
}

pub async fn get_vault_state(vault_id: u16, cluster: Cluster) -> anyhow::Result<VaultState> {
    let program = get_vault_program(
        cluster,
        Arc::new(Keypair::new()),
        CommitmentConfig::confirmed(),
    )?;

    Ok(program.account(pda::get_vault_state(vault_id)).await?)
}

pub async fn get_vault_metadata(vault_id: u16, cluster: Cluster) -> anyhow::Result<VaultState> {
    let program = get_vault_program(
        cluster,
        Arc::new(Keypair::new()),
        CommitmentConfig::confirmed(),
    )?;

    Ok(program.account(pda::get_vault_state(vault_id)).await?)
}