1mod combo;
4mod market;
5mod reference;
6mod reference_corporate_short_brokers;
7mod reference_f10;
8mod reference_price_reminder;
9mod reference_screen_unusual;
10mod reference_shareholders_insider;
11mod subscription;
12mod system;
13mod trade_read;
14mod trade_unlock;
15mod trade_write;
16
17use crate::state::ServerState;
18
19#[derive(Clone)]
22pub struct FutuServer {
23 pub state: ServerState,
24}
25
26impl FutuServer {
27 pub fn new(state: ServerState) -> Self {
28 Self { state }
29 }
30}
31
32impl FutuServer {
33 pub(crate) fn tool_router() -> rmcp::handler::server::router::tool::ToolRouter<Self> {
34 Self::system_tool_router()
35 + Self::market_tool_router()
36 + Self::combo_tool_router()
37 + Self::reference_tool_router()
38 + Self::reference_corporate_short_brokers_tool_router()
39 + Self::reference_f10_tool_router()
40 + Self::reference_price_reminder_tool_router()
41 + Self::reference_screen_unusual_tool_router()
42 + Self::reference_shareholders_insider_tool_router()
43 + Self::subscription_tool_router()
44 + Self::trade_read_tool_router()
45 + Self::trade_unlock_tool_router()
46 + Self::trade_write_tool_router()
47 }
48}
49
50#[rmcp::tool_handler(router = Self::tool_router())]
51impl rmcp::ServerHandler for FutuServer {}
52
53#[cfg(test)]
54mod tests;