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