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, and executing on-chain transactions.
5//!
6//! # Example
7//!
8//! ```no_run
9//! use morpho_rs_api::{MorphoClient, MorphoClientConfig, NamedChain};
10//! use alloy::primitives::{Address, U256};
11//!
12//! #[tokio::main]
13//! async fn main() -> Result<(), morpho_rs_api::ApiError> {
14//!     // API-only client (no transactions)
15//!     let client = MorphoClient::new();
16//!     let vaults = client.get_vaults_by_chain(NamedChain::Mainnet).await?;
17//!
18//!     // Full client with transaction support
19//!     let config = MorphoClientConfig::new()
20//!         .with_rpc_url("https://eth.llamarpc.com")
21//!         .with_private_key("0x...");
22//!     let client = MorphoClient::with_config(config)?;
23//!
24//!     // V1 vault operations using bound signer address
25//!     let vault: Address = "0x...".parse().unwrap();
26//!     let balance = client.vault_v1()?.balance(vault).await?;
27//!
28//!     // Approve and deposit
29//!     let amount = U256::from(1000000);
30//!     client.vault_v1()?.approve(vault, amount).await?;
31//!     client.vault_v1()?.deposit(vault, amount).await?;
32//!
33//!     Ok(())
34//! }
35//! ```
36
37pub mod client;
38pub mod error;
39pub mod filters;
40pub mod queries;
41pub mod types;
42
43// Re-export main types at crate root
44pub use client::{
45    ClientConfig, MorphoApiClient, MorphoClient, MorphoClientConfig, VaultV1Client,
46    VaultV1Operations, VaultV2Client, VaultV2Operations, DEFAULT_API_URL,
47};
48pub use error::{ApiError, Result};
49pub use filters::{VaultFiltersV1, VaultFiltersV2, VaultQueryOptionsV1, VaultQueryOptionsV2};
50pub use morpho_rs_contracts::{VaultV1TransactionClient, VaultV2TransactionClient};
51pub use types::{
52    chain_from_id, chain_serde, Asset, MarketInfo, NamedChain, OrderDirection, UserAccountOverview,
53    UserMarketPosition, UserState, UserVaultPositions, UserVaultV1Position, UserVaultV2Position,
54    Vault, VaultAdapter, VaultAllocation, VaultAllocator, VaultInfo, VaultOrderByV1,
55    VaultOrderByV2, VaultPositionState, VaultReward, VaultStateV1, VaultV1, VaultV2,
56    VaultV2Warning, VaultVersion, VaultWarning, SUPPORTED_CHAINS,
57};