morpho_rs_api/lib.rs
1//! Morpho Vaults Rust API Library
2//!
3//! This crate provides a Rust client for querying Morpho V1 (MetaMorpho) and V2 vaults
4//! via their GraphQL API.
5//!
6//! # Example
7//!
8//! ```no_run
9//! use morpho_rs_api::{VaultClient, VaultV1Client, VaultV2Client, Chain, VaultFiltersV1};
10//!
11//! #[tokio::main]
12//! async fn main() -> Result<(), morpho_rs_api::ApiError> {
13//! // Use separate clients for V1 and V2
14//! let v1_client = VaultV1Client::new();
15//! let v2_client = VaultV2Client::new();
16//!
17//! // Get whitelisted V1 vaults on Ethereum
18//! let v1_vaults = v1_client.get_whitelisted_vaults(Some(Chain::EthMainnet)).await?;
19//!
20//! // Get V2 vaults on Base
21//! let v2_vaults = v2_client.get_vaults_by_chain(Chain::BaseMainnet).await?;
22//!
23//! // Or use the combined client for unified queries
24//! let client = VaultClient::new();
25//! let all_vaults = client.get_whitelisted_vaults(Some(Chain::EthMainnet)).await?;
26//!
27//! Ok(())
28//! }
29//! ```
30
31pub mod client;
32pub mod error;
33pub mod filters;
34pub mod queries;
35pub mod types;
36
37// Re-export main types at crate root
38pub use client::{ClientConfig, VaultClient, VaultV1Client, VaultV2Client, DEFAULT_API_URL};
39pub use error::{ApiError, Result};
40pub use filters::{VaultFiltersV1, VaultFiltersV2};
41pub use morpho_rs_contracts::{VaultV1TransactionClient, VaultV2TransactionClient};
42pub use types::{
43 Asset, Chain, MarketInfo, UserAccountOverview, UserMarketPosition, UserState,
44 UserVaultPositions, UserVaultV1Position, UserVaultV2Position, Vault, VaultAdapter,
45 VaultAllocation, VaultAllocator, VaultInfo, VaultPositionState, VaultReward, VaultStateV1,
46 VaultV1, VaultV2, VaultV2Warning, VaultVersion, VaultWarning,
47};