Skip to main content

goldrush_sdk/
lib.rs

1//! # GoldRush SDK
2//!
3//! A Rust client library for the GoldRush blockchain data APIs.
4//!
5//! ## Usage
6//!
7//! ```rust,no_run
8//! use goldrush_sdk::{GoldRushClient, ClientConfig, chains};
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//!     let client = GoldRushClient::new("your-api-key", ClientConfig::default())?;
13//!     
14//!     let balances = client
15//!         .get_token_balances_for_wallet_address(chains::ethereum::MAINNET, "0x123...", None)
16//!         .await?;
17//!     
18//!     println!("{:?}", balances);
19//!     Ok(())
20//! }
21//! ```
22
23mod client;
24mod error;
25mod http;
26mod models;
27mod balances;
28mod transactions;
29mod nfts;
30
31/// Chain constants for commonly used networks
32pub mod chains;
33
34// Production readiness modules
35mod tracing;
36mod rate_limit;
37mod cache;
38mod validation;
39mod metrics;
40mod circuit_breaker;
41mod security;
42
43pub use client::{GoldRushClient, ClientConfig};
44pub use error::{Error, Result};
45pub use balances::BalancesOptions;
46pub use transactions::{TxOptions, TransactionsPageIter};
47pub use nfts::{NftOptions, NftsPageIter};
48
49// Production readiness exports
50pub use tracing::{RequestId, TracingContext};
51pub use rate_limit::{RateLimitConfig, RateLimiter};
52pub use cache::{CacheConfig, CacheStats, MemoryCache};
53pub use validation::{Validator, Sanitizer};
54pub use metrics::{MetricsCollector, MetricsSummary, EndpointStats, Timer};
55pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitBreakerStats, CircuitBreakerExecutor, CircuitState};
56pub use security::{SecurityConfig, SecurityManager, SecurityContext};
57
58pub use models::{
59    balances::{BalanceItem, BalancesData, BalancesResponse},
60    transactions::{TransactionItem, TransactionsData, TransactionsResponse, TransactionResponse},
61    nfts::{NftItem, NftsData, NftsResponse, NftMetadataItem, NftMetadataResponse},
62};