1pub mod audit;
10pub mod key;
11pub mod limits;
12pub mod machine;
13pub mod metrics;
14pub mod scope;
15pub mod secret_store;
16pub mod store;
17pub mod websocket;
18
19pub const KEYRING_SERVICE: &str = "futu-opend-rs";
22pub const KEYRING_USERNAME_TRADE_PWD: &str = "trade-password";
28pub const KEYRING_USERNAME_TRADE_PWD_PREFIX: &str = "trade-password.";
31
32pub const KEYRING_USERNAME_LOGIN_PWD_PREFIX: &str = "login-password.";
35
36pub fn keyring_username_for_trade_pwd(account: &str) -> String {
38 format!("{KEYRING_USERNAME_TRADE_PWD_PREFIX}{account}")
39}
40
41pub fn keyring_username_for_login_pwd(account: &str) -> String {
43 format!("{KEYRING_USERNAME_LOGIN_PWD_PREFIX}{account}")
44}
45
46#[cfg(test)]
47mod tests;
48
49pub use key::{KeyRecord, hash_plaintext};
50pub use limits::{
51 CheckCtx, LimitGuard, LimitOutcome, LimitPolicy, Limits, RuntimeCounters, ValueRejectReason,
52 market_to_currency, validate_order_value,
53};
54pub use machine::{MachineError, fingerprint_for, fingerprint_from_raw, raw_machine_id};
55pub use metrics::Registry as MetricsRegistry;
56pub use scope::{
57 COVERAGE_EXCEPTIONS, CoverageException, EXPLICIT_NO_BODY_AWARE_PROTOS, SCOPED_ACC_READ_PROTOS,
58 SCOPED_TRADE_REAL_PROTOS, SCOPED_TRADE_UNLOCK_PROTOS, Scope, ScopeParseError,
59 is_internal_proto_id, scope_for_proto_id, trade_scope_for_env_is_real,
60};
61pub use store::{KeyStore, KeyStoreError};