1pub mod error;
10pub mod mock;
11pub mod types;
12
13#[cfg(feature = "ibkr")]
14pub mod ibkr;
15
16#[cfg(feature = "binance")]
17pub mod binance;
18
19pub use error::BrokerError;
20pub use types::*;
21
22use nanobook::Symbol;
23
24pub trait Broker {
26 fn connect(&mut self) -> Result<(), BrokerError>;
28
29 fn disconnect(&mut self) -> Result<(), BrokerError>;
31
32 fn positions(&self) -> Result<Vec<Position>, BrokerError>;
34
35 fn account(&self) -> Result<Account, BrokerError>;
37
38 fn submit_order(&self, order: &BrokerOrder) -> Result<OrderId, BrokerError>;
40
41 fn order_status(&self, id: OrderId) -> Result<BrokerOrderStatus, BrokerError>;
43
44 fn cancel_order(&self, id: OrderId) -> Result<(), BrokerError>;
46
47 fn quote(&self, symbol: &Symbol) -> Result<Quote, BrokerError>;
49}