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?)
}