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, MarketStateV1, MarketStateV2,
53 MetaMorphoAllocation, MorphoMarketPosition, NamedChain, OrderDirection, UserAccountOverview,
54 UserMarketPosition, UserState, UserVaultPositions, UserVaultV1Position, UserVaultV2Position,
55 Vault, VaultAdapter, VaultAdapterData, VaultAllocation, VaultAllocator, VaultInfo,
56 VaultOrderByV1, VaultOrderByV2, VaultPositionState, VaultReward, VaultStateV1, VaultV1,
57 VaultV2, VaultV2Warning, VaultVersion, VaultWarning, SUPPORTED_CHAINS,
58};