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