pub struct VaultV1Client { /* private fields */ }Expand description
Client for querying V1 (MetaMorpho) vaults.
Implementations§
Source§impl VaultV1Client
impl VaultV1Client
Sourcepub fn with_config(config: ClientConfig) -> Self
pub fn with_config(config: ClientConfig) -> Self
Create a new V1 vault client with custom configuration.
Sourcepub async fn get_vaults(
&self,
filters: Option<VaultFiltersV1>,
) -> Result<Vec<VaultV1>>
pub async fn get_vaults( &self, filters: Option<VaultFiltersV1>, ) -> Result<Vec<VaultV1>>
Get V1 vaults with optional filters.
Sourcepub async fn get_vault(
&self,
address: &str,
chain: NamedChain,
) -> Result<VaultV1>
pub async fn get_vault( &self, address: &str, chain: NamedChain, ) -> Result<VaultV1>
Get a single V1 vault by address and chain.
Sourcepub async fn get_vaults_by_chain(
&self,
chain: NamedChain,
) -> Result<Vec<VaultV1>>
pub async fn get_vaults_by_chain( &self, chain: NamedChain, ) -> Result<Vec<VaultV1>>
Get V1 vaults on a specific chain.
Sourcepub async fn get_vaults_by_curator(
&self,
curator: &str,
chain: Option<NamedChain>,
) -> Result<Vec<VaultV1>>
pub async fn get_vaults_by_curator( &self, curator: &str, chain: Option<NamedChain>, ) -> Result<Vec<VaultV1>>
Get V1 vaults by curator address.
Sourcepub async fn get_whitelisted_vaults(
&self,
chain: Option<NamedChain>,
) -> Result<Vec<VaultV1>>
pub async fn get_whitelisted_vaults( &self, chain: Option<NamedChain>, ) -> Result<Vec<VaultV1>>
Get whitelisted (listed) V1 vaults.
Sourcepub async fn get_vaults_with_options(
&self,
options: VaultQueryOptionsV1,
) -> Result<Vec<VaultV1>>
pub async fn get_vaults_with_options( &self, options: VaultQueryOptionsV1, ) -> Result<Vec<VaultV1>>
Get V1 vaults with query options (filters, ordering, and limit).
This method provides full control over the query parameters including ordering by various fields like APY, total assets, etc.
§Example
use morpho_rs_api::{VaultV1Client, VaultQueryOptionsV1, VaultFiltersV1, VaultOrderByV1, OrderDirection, NamedChain};
#[tokio::main]
async fn main() -> Result<(), morpho_rs_api::ApiError> {
let client = VaultV1Client::new();
// Get top 10 USDC vaults by APY on Ethereum
let options = VaultQueryOptionsV1::new()
.filters(VaultFiltersV1::new()
.chain(NamedChain::Mainnet)
.asset_symbols(["USDC"]))
.order_by(VaultOrderByV1::NetApy)
.order_direction(OrderDirection::Desc)
.limit(10);
let vaults = client.get_vaults_with_options(options).await?;
Ok(())
}Sourcepub async fn get_top_vaults_by_apy(
&self,
limit: i64,
filters: Option<VaultFiltersV1>,
) -> Result<Vec<VaultV1>>
pub async fn get_top_vaults_by_apy( &self, limit: i64, filters: Option<VaultFiltersV1>, ) -> Result<Vec<VaultV1>>
Get top N V1 vaults ordered by APY (highest first).
§Example
use morpho_rs_api::{VaultV1Client, VaultFiltersV1, NamedChain};
#[tokio::main]
async fn main() -> Result<(), morpho_rs_api::ApiError> {
let client = VaultV1Client::new();
// Get top 10 vaults by APY on Ethereum
let filters = VaultFiltersV1::new().chain(NamedChain::Mainnet);
let vaults = client.get_top_vaults_by_apy(10, Some(filters)).await?;
Ok(())
}Sourcepub async fn get_vaults_by_asset(
&self,
asset_symbol: &str,
chain: Option<NamedChain>,
) -> Result<Vec<VaultV1>>
pub async fn get_vaults_by_asset( &self, asset_symbol: &str, chain: Option<NamedChain>, ) -> Result<Vec<VaultV1>>
Get V1 vaults for a specific deposit asset.
§Example
use morpho_rs_api::{VaultV1Client, NamedChain};
#[tokio::main]
async fn main() -> Result<(), morpho_rs_api::ApiError> {
let client = VaultV1Client::new();
// Get all USDC vaults
let vaults = client.get_vaults_by_asset("USDC", None).await?;
Ok(())
}Sourcepub async fn get_vault_for_simulation(
&self,
address: &str,
chain: NamedChain,
) -> Result<VaultSimulationData>
pub async fn get_vault_for_simulation( &self, address: &str, chain: NamedChain, ) -> Result<VaultSimulationData>
Get vault data needed for APY simulation.
Fetches all data required to construct a VaultSimulation from morpho-rs-sim,
including vault state, allocations with queue indices, and market state data.
§Example
use morpho_rs_api::{VaultV1Client, NamedChain};
#[tokio::main]
async fn main() -> Result<(), morpho_rs_api::ApiError> {
let client = VaultV1Client::new();
let vault_data = client.get_vault_for_simulation(
"0x...",
NamedChain::Mainnet,
).await?;
println!("Total assets: {}", vault_data.total_assets);
println!("Markets: {}", vault_data.markets.len());
Ok(())
}Sourcepub async fn get_vaults_for_simulation(
&self,
filters: Option<VaultFiltersV1>,
limit: i64,
) -> Result<Vec<VaultSimulationData>>
pub async fn get_vaults_for_simulation( &self, filters: Option<VaultFiltersV1>, limit: i64, ) -> Result<Vec<VaultSimulationData>>
Batch get simulation data for multiple vaults.
Fetches simulation data for vaults matching the specified filters.
§Example
use morpho_rs_api::{VaultV1Client, VaultFiltersV1, NamedChain};
#[tokio::main]
async fn main() -> Result<(), morpho_rs_api::ApiError> {
let client = VaultV1Client::new();
let filters = VaultFiltersV1::new()
.chain(NamedChain::Mainnet)
.listed(true);
let vaults = client.get_vaults_for_simulation(Some(filters), 50).await?;
for vault in &vaults {
println!("Vault {}: {} markets", vault.address, vault.markets.len());
}
Ok(())
}Trait Implementations§
Source§impl Clone for VaultV1Client
impl Clone for VaultV1Client
Source§fn clone(&self) -> VaultV1Client
fn clone(&self) -> VaultV1Client
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VaultV1Client
impl Debug for VaultV1Client
Auto Trait Implementations§
impl Freeze for VaultV1Client
impl !RefUnwindSafe for VaultV1Client
impl Send for VaultV1Client
impl Sync for VaultV1Client
impl Unpin for VaultV1Client
impl !UnwindSafe for VaultV1Client
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more