Skip to main content

hyper_agent_ai/
bootstrap.rs

1use crate::tool_registry::ToolRegistry;
2use crate::tools::*;
3use hyper_agent_core::position_manager::PositionManager;
4use hyper_risk::risk::{get_risk_config_sync, AccountState, RiskGuard};
5use std::sync::Arc;
6
7pub async fn register_trading_tools(
8    registry: &ToolRegistry,
9    pm: Arc<PositionManager>,
10    is_mainnet: bool,
11) {
12    registry.register(Arc::new(GetPositionsTool::new(pm))).await;
13    registry.register(Arc::new(DoNothingTool)).await;
14    registry.register(Arc::new(SetStopLossTool)).await;
15    registry.register(Arc::new(SetTakeProfitTool)).await;
16    registry
17        .register(Arc::new(GetOpenOrdersTool::new(is_mainnet)))
18        .await;
19    registry
20        .register(Arc::new(GetTradeHistoryTool::new(is_mainnet)))
21        .await;
22    registry
23        .register(Arc::new(GetFundingRateTool::new(is_mainnet)))
24        .await;
25    registry
26        .register(Arc::new(GetMarketDataTool::new(is_mainnet)))
27        .await;
28    registry.register(Arc::new(CloseAllPositionsTool)).await;
29
30    let risk_config = get_risk_config_sync();
31    let account_state = AccountState::default();
32    registry
33        .register(Arc::new(PlaceOrderTool::new(
34            RiskGuard::new(risk_config.clone()),
35            account_state.clone(),
36        )))
37        .await;
38    registry
39        .register(Arc::new(CancelOrderTool::new(
40            RiskGuard::new(risk_config),
41            account_state,
42        )))
43        .await;
44}