ig_client/
prelude.rs

1/******************************************************************************
2   Author: Joaquín Béjar García
3   Email: jb@taunais.com
4   Date: 20/10/25
5******************************************************************************/
6
7//! Prelude module for convenient imports
8//!
9//! This module re-exports commonly used types, traits, and functions
10//! to make it easier to use the library.
11//!
12//! # Example
13//! ```rust,ignore
14//! use ig_client::prelude::*;
15//!
16//! let client = Client::default();
17//! let markets = client.search_markets("EUR").await?;
18//! ```
19
20// Core client
21pub use crate::application::client::Client;
22
23// HTTP client
24pub use crate::model::http::HttpClient;
25
26// Authentication
27pub use crate::application::auth::{Auth, Session};
28
29// Configuration
30pub use crate::application::config::{
31    Config, Credentials, RateLimiterConfig, RestApiConfig, WebSocketConfig,
32};
33
34// Rate limiter
35pub use crate::application::rate_limiter::RateLimiter;
36
37// Service interfaces
38pub use crate::application::interfaces::account::AccountService;
39pub use crate::application::interfaces::listener::ListenerResult;
40pub use crate::application::interfaces::market::MarketService;
41pub use crate::application::interfaces::order::OrderService;
42
43// Error handling
44pub use crate::error::AppError;
45
46// Common presentation models
47pub use crate::presentation::account::*;
48pub use crate::presentation::chart::*;
49pub use crate::presentation::instrument::*;
50pub use crate::presentation::market::*;
51pub use crate::presentation::order::*;
52pub use crate::presentation::trade::*;
53pub use crate::presentation::transaction::*;
54
55// Request models
56pub use crate::model::requests::*;
57
58// Response models
59pub use crate::model::responses::*;
60
61pub use crate::utils::*;
62
63// Re-export commonly used external types
64pub use async_trait::async_trait;
65pub use serde::{Deserialize, Serialize};
66
67pub use crate::model::utils::{build_market_hierarchy, extract_markets_from_hierarchy};
68pub use crate::presentation::order::{Direction, Status};
69pub use crate::storage::market_database::MarketDatabaseService;
70
71pub use crate::storage::utils::{create_connection_pool, create_database_config_from_env};
72
73/// Result type alias for IG client operations
74///
75/// This is a convenience type alias that uses `AppError` as the error type
76pub type IgResult<T> = Result<T, AppError>;