diff --git a/Cargo.lock b/Cargo.lock index bc3e814f3..0a186cccd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1852,7 +1852,6 @@ dependencies = [ "reqwest 0.12.23", "rust_decimal", "rust_decimal_macros", - "rustls 0.23.32", "serde", "serde_json", "sha2", @@ -3675,6 +3674,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonwebtoken" +version = "9.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64 0.22.1", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -4888,6 +4902,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +dependencies = [ + "base64 0.22.1", + "serde", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -6928,6 +6952,18 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.16", + "time", +] + [[package]] name = "sketches-ddsketch" version = "0.2.2" @@ -7767,6 +7803,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", + "itoa", "num-conv", "powerfmt", "serde", @@ -8374,6 +8411,7 @@ dependencies = [ "anyhow", "async-stream", "async-trait", + "base64 0.22.1", "chrono", "clap", "common", @@ -8382,6 +8420,7 @@ dependencies = [ "futures", "hdrhistogram", "hyper 1.7.0", + "jsonwebtoken", "ml", "model_loader", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index 897093ce8..99073923c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -204,6 +204,7 @@ http = "1.0" # Security and cryptography argon2 = "0.5" sha2 = "0.10" +jsonwebtoken = "9.3" # HashiCorp Vault integration vaultrs = "0.7" diff --git a/adaptive-strategy/src/ensemble/mod.rs b/adaptive-strategy/src/ensemble/mod.rs index a5f64dce8..1c2a84258 100644 --- a/adaptive-strategy/src/ensemble/mod.rs +++ b/adaptive-strategy/src/ensemble/mod.rs @@ -5,7 +5,8 @@ //! uncertainty quantification, and performance-based adaptation. // Import core types -use common::prelude::*; +use common::{Order, Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{HftTimestamp, OrderId, TradeId, ExecutionId}; use anyhow::Result; use serde::{Deserialize, Serialize}; diff --git a/adaptive-strategy/src/execution/mod.rs b/adaptive-strategy/src/execution/mod.rs index 91ac42080..872851edb 100644 --- a/adaptive-strategy/src/execution/mod.rs +++ b/adaptive-strategy/src/execution/mod.rs @@ -9,7 +9,8 @@ use serde::{Deserialize, Serialize}; use std::collections::{HashMap, VecDeque}; use tokio::time::{Duration, Instant}; use tracing::{debug, info, warn}; -use common::prelude::{OrderStatus, OrderType, Order, OrderSide}; +use common::{OrderStatus, OrderType, Order, OrderSide, Position, Execution, Symbol, Price, Quantity}; +use common::{CommonError, CommonResult, HftTimestamp, OrderId, TradeId, ExecutionId}; use crate::config::{ExecutionAlgorithm, ExecutionConfig}; use crate::microstructure::{MicrostructureAnalyzer, OrderLevel, Trade}; diff --git a/adaptive-strategy/src/lib.rs b/adaptive-strategy/src/lib.rs index b258ed784..3038d3f9a 100644 --- a/adaptive-strategy/src/lib.rs +++ b/adaptive-strategy/src/lib.rs @@ -49,7 +49,8 @@ pub mod regime; pub mod risk; // Import core types from common types crate -use common::prelude::*; +use common::{Order, Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{HftTimestamp, OrderId, TradeId, ExecutionId}; use anyhow::Result; use config::AdaptiveStrategyConfig; diff --git a/adaptive-strategy/src/microstructure/mod.rs b/adaptive-strategy/src/microstructure/mod.rs index e9389fce8..6e30f1734 100644 --- a/adaptive-strategy/src/microstructure/mod.rs +++ b/adaptive-strategy/src/microstructure/mod.rs @@ -10,7 +10,8 @@ use std::collections::{HashMap, VecDeque}; use tracing::{debug, info, warn}; // Add missing core types -use common::prelude::*; +use common::{Symbol, Price, Quantity, HftTimestamp, CommonError, CommonResult}; +use common::{Order, Position, OrderId, TradeId}; // Add ML types use ml::prelude::*; // Add data types diff --git a/adaptive-strategy/src/risk/kelly_position_sizer.rs b/adaptive-strategy/src/risk/kelly_position_sizer.rs index 88dfc7167..d26524fb3 100644 --- a/adaptive-strategy/src/risk/kelly_position_sizer.rs +++ b/adaptive-strategy/src/risk/kelly_position_sizer.rs @@ -14,7 +14,8 @@ use std::collections::HashMap; use tracing::{debug, info, warn}; // Add missing core types -use common::prelude::*; +use common::{Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{Order, OrderId, HftTimestamp}; // ML types are imported via the prelude above // Add risk types diff --git a/adaptive-strategy/src/risk/mod.rs b/adaptive-strategy/src/risk/mod.rs index 82d2a57cb..96fa41d39 100644 --- a/adaptive-strategy/src/risk/mod.rs +++ b/adaptive-strategy/src/risk/mod.rs @@ -10,7 +10,8 @@ //! - Volatility-based position size optimization // Import core types -use common::prelude::*; +use common::{Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{Order, OrderId, HftTimestamp, TradeId}; use anyhow::Result; use serde::{Deserialize, Serialize}; diff --git a/backtesting/src/lib.rs b/backtesting/src/lib.rs index 3800552fd..2fcff5152 100644 --- a/backtesting/src/lib.rs +++ b/backtesting/src/lib.rs @@ -25,7 +25,8 @@ //! ```rust,no_run //! use backtesting::{BacktestEngine, BacktestConfig, replay_engine::ReplayConfig}; //! use chrono::Utc; -//! use common::prelude::*; +//! use common::{Order, Position, Execution, Symbol, Price, Quantity}; +use common::{CommonError, CommonResult, HftTimestamp, OrderId, TradeId}; // // #[tokio::main] // async fn main() -> anyhow::Result<()> { diff --git a/backtesting/src/replay_engine.rs b/backtesting/src/replay_engine.rs index 987935b4f..6b349efc1 100644 --- a/backtesting/src/replay_engine.rs +++ b/backtesting/src/replay_engine.rs @@ -25,7 +25,9 @@ use tokio::{ time::sleep, }; use tracing::{debug, error, info, warn}; -use common::prelude::*; +use common::{Order, Position, Execution, Symbol, Price, Quantity}; +use common::{CommonError, CommonResult, HftTimestamp, OrderId, TradeId}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; /// Configuration for market data replay #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/common/src/lib.rs b/common/src/lib.rs index bf7017fbe..6dbfcbdec 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -67,7 +67,8 @@ pub mod prelude { ConfigVersion, ServiceId, ServiceStatus, RequestId, ConnectionInfo, ResourceLimits, Order, Position, Execution, Price, Quantity, Volume, Symbol, OrderId, TradeId, ExecutionId, AccountId, HftTimestamp, GenericTimestamp, Money, OrderType, OrderStatus, OrderSide, TimeInForce, - Currency, CommonTypeError, BrokerType, Decimal + Currency, CommonTypeError, BrokerType, Decimal, MarketTick, + QuoteEvent, TradeEvent, BarEvent, ConnectionEvent, ErrorEvent, OrderBookEvent }; // Re-export trading types (excluding duplicates already in types module) diff --git a/crates/config/src/data_config.rs b/crates/config/src/data_config.rs index 95ca34875..714c29576 100644 --- a/crates/config/src/data_config.rs +++ b/crates/config/src/data_config.rs @@ -1,7 +1,7 @@ //! Data Module Configuration Structures //! //! This module contains all configuration structures migrated from the data module -//! to provide centralized configuration management through foxhunt-config-crate. +//! to provide centralized configuration management through common crate. use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/data/Cargo.toml b/data/Cargo.toml index 6b9d693c7..b94453c78 100644 --- a/data/Cargo.toml +++ b/data/Cargo.toml @@ -44,10 +44,10 @@ url.workspace = true # Market data providers - USE WORKSPACE DEFAULTS # databento.workspace = true # REMOVED - too heavy, use direct feeds instead -# TLS support - USE WORKSPACE DEFAULTS +# TLS support - USE WORKSPACE DEFAULTS (rustls provided by tokio-tungstenite feature) native-tls.workspace = true tokio-native-tls.workspace = true -rustls = "0.23" +# rustls = "0.23" # REMOVED - conflicts with workspace versions, use tokio-tungstenite rustls feature webpki-roots = "0.26" xml-rs = { workspace = true } diff --git a/data/src/lib.rs b/data/src/lib.rs index 8aa605d5c..51dc8146b 100644 --- a/data/src/lib.rs +++ b/data/src/lib.rs @@ -221,18 +221,20 @@ pub use crate::utils::{ // Commonly used external types use tokio::sync::broadcast; // Import canonical types from trading_engine prelude per TYPE_GOVERNANCE.md -use common::prelude::*; +use common::{CommonError, CommonResult}; +use common::database::{DatabaseConfig, DatabasePool}; +use common::{Symbol, Price, Quantity, HftTimestamp, Order, OrderSide}; use trading_engine::types::events::OrderEvent; // Add missing OrderEvent import -// Import shared configuration from foxhunt-config-crate +// Import shared configuration from common crate use config::{DataModuleConfig, DataModuleSettings}; -// Using direct imports from foxhunt-config-crate - NO backward compatibility aliases +// Using direct imports from common crate - NO backward compatibility aliases -// Data module configuration moved to foxhunt-config-crate shared library +// Data module configuration moved to common crate shared library // Use: config::DataModuleConfig and config::DataModuleSettings -// DataModuleConfig implementation moved to foxhunt-config-crate shared library +// DataModuleConfig implementation moved to common crate shared library /// Initialize the data module with configuration pub async fn initialize(config: DataModuleConfig) -> Result { diff --git a/data/src/providers/databento/dbn_parser.rs b/data/src/providers/databento/dbn_parser.rs index 24b05877a..4eba54c9a 100644 --- a/data/src/providers/databento/dbn_parser.rs +++ b/data/src/providers/databento/dbn_parser.rs @@ -20,7 +20,7 @@ //! - **Status Messages**: Market status and trading halts use crate::error::{DataError, Result}; -use common::{Decimal}; +use common::{Decimal, OrderSide}; use trading_engine::{ lockfree::{LockFreeRingBuffer, HftMessage, message_types}, simd::{SafeSimdDispatcher, SimdMarketDataOps, AlignedPrices, AlignedVolumes}, diff --git a/data/src/training_pipeline.rs b/data/src/training_pipeline.rs index 0ae78ae4c..3ec2a0caa 100644 --- a/data/src/training_pipeline.rs +++ b/data/src/training_pipeline.rs @@ -24,7 +24,7 @@ use tokio::sync::RwLock; use tracing::info; use common::*; -// Import shared training configuration from foxhunt-config-crate +// Import shared training configuration from common crate use config::{ DataMACDConfig as MACDConfig, DataMicrostructureConfig, DataMicrostructureConfig as MicrostructureConfig, DataRegimeDetectionConfig, @@ -59,18 +59,18 @@ impl BenzingaClient { } } -// TrainingPipelineConfig moved to foxhunt-config-crate shared library +// TrainingPipelineConfig moved to common crate shared library -// DataSourcesConfig moved to foxhunt-config-crate shared library +// DataSourcesConfig moved to common crate shared library -// Provider configuration structs moved to foxhunt-config-crate shared library +// Provider configuration structs moved to common crate shared library // - DatabentConfig // - BenzingaConfig // - IBDataConfig // - ICMarketsDataConfig // - HistoricalDataConfig -// Feature engineering configuration structs moved to foxhunt-config-crate shared library +// Feature engineering configuration structs moved to common crate shared library // - FeatureEngineeringConfig (aliased as DataFeatureConfig) // - TechnicalIndicatorsConfig // - MACDConfig @@ -79,7 +79,7 @@ impl BenzingaClient { // - TemporalConfig // - RegimeDetectionConfig -// Validation, storage, and processing configuration structs moved to foxhunt-config-crate shared library +// Validation, storage, and processing configuration structs moved to common crate shared library // - DataValidationConfig, OutlierDetectionMethod, MissingDataHandling // - TrainingStorageConfig (aliased as DataStorageConfig), StorageFormat // - CompressionConfig, CompressionAlgorithm diff --git a/database/src/schemas.rs b/database/src/schemas.rs index dcdcfd04a..4d747e00d 100644 --- a/database/src/schemas.rs +++ b/database/src/schemas.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use sqlx::types::Uuid; use chrono::{DateTime, Utc}; use common::Decimal; // Use common::Decimal for consistency -use common::prelude::Order as DomainOrder; +use common::Order as DomainOrder; /// Configuration table schema #[derive(Debug, Clone, Serialize, Deserialize, sqlx::FromRow)] @@ -68,7 +68,7 @@ impl From for DbOrder { /// Conversion from database Order to canonical domain Order impl From for DomainOrder { fn from(db_order: DbOrder) -> Self { - use common::prelude::{OrderSide, OrderType, OrderStatus}; + use common::{OrderSide, OrderType, OrderStatus}; // Parse enums with defaults for safety let side = match db_order.side.to_uppercase().as_str() { diff --git a/ml/src/lib.rs b/ml/src/lib.rs index cfa6c6930..460e4e65e 100644 --- a/ml/src/lib.rs +++ b/ml/src/lib.rs @@ -97,7 +97,7 @@ pub mod prelude { pub use crate::error::*; pub use crate::traits::*; - pub use crate::types::prelude::*; + pub use common::prelude::*; // Export canonical ML types pub use crate::{InferenceResult, ModelMetadata, ModelType}; // Export unified ML interface @@ -463,7 +463,8 @@ pub mod tensor_ops; pub mod examples; // Removed examples_stubs module - contained only placeholder implementations pub mod integration_test; -pub mod model_loader_integration; +// TODO: Re-enable when model_loader types are available +// pub mod model_loader_integration; pub mod models_demo; pub mod observability; pub mod stress_testing; // Stress testing framework diff --git a/ml/src/model_loader_integration.rs b/ml/src/model_loader_integration.rs index 48879b52a..629b9169c 100644 --- a/ml/src/model_loader_integration.rs +++ b/ml/src/model_loader_integration.rs @@ -3,7 +3,7 @@ //! This module provides integration between the ML crate and the model_loader crate, //! enabling unified model loading and caching for all ML models in the system. -use crate::prelude::*; +use common::prelude::*; use crate::UpdateSummary; use anyhow::Result; use std::sync::Arc; diff --git a/ml/src/tests/ml_tests.rs b/ml/src/tests/ml_tests.rs index 8ed3f049d..698510c9e 100644 --- a/ml/src/tests/ml_tests.rs +++ b/ml/src/tests/ml_tests.rs @@ -3,7 +3,7 @@ //! This test suite provides extensive coverage for all ML components in the foxhunt system //! to achieve 95%+ test coverage across the ML infrastructure. -use crate::prelude::*; +use common::prelude::*; use crate::{Features, ModelPrediction, Feedback, MLModel, ModelType, ModelMetadata}; use crate::{get_global_registry, ParallelExecutor, LatencyOptimizer}; use crate::{HFTPerformanceProfile, OptimizationLevel}; diff --git a/risk-data/src/limits.rs b/risk-data/src/limits.rs index e7f594ad6..32c324353 100644 --- a/risk-data/src/limits.rs +++ b/risk-data/src/limits.rs @@ -10,7 +10,9 @@ use serde::{Deserialize, Serialize}; use sqlx::{PgPool, Row}; use std::collections::HashMap; use tracing::{error, info, warn}; -use common::prelude::*; +use common::{Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{Order, OrderId, HftTimestamp}; +use common::database::{DatabaseConfig, DatabasePool}; use common::Decimal; // Use common::Decimal for consistency use uuid::Uuid; diff --git a/risk/src/tests/risk_tests.rs b/risk/src/tests/risk_tests.rs index e892335b0..8b4a677dd 100644 --- a/risk/src/tests/risk_tests.rs +++ b/risk/src/tests/risk_tests.rs @@ -3,7 +3,7 @@ //! This test suite provides extensive coverage for all risk management components //! to achieve 95%+ test coverage across the risk infrastructure. -use crate::prelude::*; +use common::prelude::*; use crate::{RiskEngine, PositionTracker, RealVaREngine, AtomicKillSwitch}; use crate::{development_config, production_config, validate_risk_config}; use crate::{SafetyCoordinator, EmergencyResponseSystem, DrawdownMonitor}; diff --git a/services/backtesting_service/build.rs b/services/backtesting_service/build.rs index 82d264121..5fc26d9e4 100644 --- a/services/backtesting_service/build.rs +++ b/services/backtesting_service/build.rs @@ -2,6 +2,6 @@ fn main() -> Result<(), Box> { tonic_build::configure() .build_server(true) .build_client(false) - .compile_protos(&["../../tli/proto/trading.proto"], &["../../tli/proto/"])?; + .compile_protos(&["../../tli/proto/trading.proto"], &["../../tli/proto"])?; Ok(()) } diff --git a/services/ml_training_service/src/encryption.rs b/services/ml_training_service/src/encryption.rs index a8be06431..d0aae7765 100644 --- a/services/ml_training_service/src/encryption.rs +++ b/services/ml_training_service/src/encryption.rs @@ -38,7 +38,7 @@ impl EncryptionKeys { /// Encryption key manager with secure configuration pub struct EncryptionKeyManager { config: EncryptionConfig, - config_loader: Option, + config_loader: Option>, cached_keys: Arc>>, } @@ -159,7 +159,7 @@ pub struct EncryptionMetadata { impl EncryptionKeyManager { /// Create a new encryption key manager - pub fn new(config: EncryptionConfig, config_loader: Option) -> Self { + pub fn new(config: EncryptionConfig, config_loader: Option>) -> Self { Self { config, config_loader, diff --git a/services/trading_service/Cargo.toml b/services/trading_service/Cargo.toml index ada3bd5db..3fd1e6d19 100644 --- a/services/trading_service/Cargo.toml +++ b/services/trading_service/Cargo.toml @@ -51,6 +51,8 @@ hdrhistogram.workspace = true # Cryptography and security sha2.workspace = true +base64.workspace = true +jsonwebtoken.workspace = true chrono.workspace = true sqlx = { workspace = true, features = ["postgres", "chrono", "uuid", "json"] } diff --git a/services/trading_service/src/core/broker_routing.rs b/services/trading_service/src/core/broker_routing.rs index 92753b7e9..c3dd2169b 100644 --- a/services/trading_service/src/core/broker_routing.rs +++ b/services/trading_service/src/core/broker_routing.rs @@ -33,7 +33,9 @@ use futures_util::StreamExt; // Configuration and types use config::{BrokerConfig, TradingConfig}; -use common::prelude::*; +use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; +use common::{Configurable, HealthCheck, Metrics, Service}; /// Broker identification #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] diff --git a/services/trading_service/src/core/market_data_ingestion.rs b/services/trading_service/src/core/market_data_ingestion.rs index aaebf634f..11e378a67 100644 --- a/services/trading_service/src/core/market_data_ingestion.rs +++ b/services/trading_service/src/core/market_data_ingestion.rs @@ -32,7 +32,9 @@ use url::Url; // Configuration and types use config::{MarketDataConfig, TradingConfig}; -use common::prelude::*; +use common::{Symbol, Price, Quantity, HftTimestamp, CommonError, CommonResult}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; +use common::{Configurable, HealthCheck, Metrics, Service}; /// Market data message types from Databento #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/services/trading_service/src/core/order_manager.rs b/services/trading_service/src/core/order_manager.rs index 08e2c3a9f..78d9193b5 100644 --- a/services/trading_service/src/core/order_manager.rs +++ b/services/trading_service/src/core/order_manager.rs @@ -34,7 +34,9 @@ use risk::safety::atomic_kill::AtomicKillSwitch; // Types and configurations use config::{TradingConfig, RiskConfig}; -use common::prelude::*; +use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult, HftTimestamp}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; +use common::{Configurable, HealthCheck, Metrics, Service}; /// Order book entry for lock-free processing #[derive(Debug, Clone, Copy)] diff --git a/services/trading_service/src/core/position_manager.rs b/services/trading_service/src/core/position_manager.rs index 073e1ea9f..d12202b3b 100644 --- a/services/trading_service/src/core/position_manager.rs +++ b/services/trading_service/src/core/position_manager.rs @@ -49,7 +49,9 @@ impl PositionConfigExt for TradingConfig { Some(50_000.0) // Default $50K VaR } } -use common::prelude::*; +use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult, HftTimestamp}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; +use common::{Configurable, HealthCheck, Metrics, Service}; /// Atomic position entry for lock-free operations #[repr(align(64))] // Cache line alignment for performance diff --git a/services/trading_service/src/core/risk_manager.rs b/services/trading_service/src/core/risk_manager.rs index 2e0cde53c..669a59471 100644 --- a/services/trading_service/src/core/risk_manager.rs +++ b/services/trading_service/src/core/risk_manager.rs @@ -29,7 +29,9 @@ use data::providers::benzinga::BenzingaNewsImpact; // Types and configurations use config::{RiskConfig, TradingConfig, ComplianceConfig}; -use common::prelude::*; +use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult}; +use common::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; +use common::{Configurable, HealthCheck, Metrics, Service}; /// Atomic risk limits for lock-free enforcement #[repr(align(64))] // Cache line alignment diff --git a/services/trading_service/src/error.rs b/services/trading_service/src/error.rs index 0a96ece97..1ec683182 100644 --- a/services/trading_service/src/error.rs +++ b/services/trading_service/src/error.rs @@ -2,7 +2,7 @@ // Re-export shared error types and utilities pub use common::error::{CommonError, CommonResult, ErrorCategory, RetryStrategy}; -pub use common::prelude::*; +pub use common::{CommonError, CommonResult, ErrorCategory, ErrorSeverity, RetryStrategy}; /// Trading service specific error extensions /// For cases where we need domain-specific error information diff --git a/services/trading_service/src/lib.rs b/services/trading_service/src/lib.rs index a888c2164..de01cb0bd 100644 --- a/services/trading_service/src/lib.rs +++ b/services/trading_service/src/lib.rs @@ -90,7 +90,8 @@ pub mod utils; /// Re-exports for convenient access pub mod prelude { // Re-export shared library functionality - pub use common::prelude::*; + pub use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{HealthCheck, Service, Configurable}; pub use config::*; pub use storage::*; diff --git a/services/trading_service/src/main.rs b/services/trading_service/src/main.rs index e158c73f8..5f9d7a4a8 100644 --- a/services/trading_service/src/main.rs +++ b/services/trading_service/src/main.rs @@ -17,7 +17,8 @@ use trading_service::tls_config::{TlsInterceptor, TradingServiceTlsConfig, Vault // Use central configuration and shared libraries use common::database::{DatabaseError, DatabasePool}; -use common::prelude::*; +use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{HealthCheck, Service, Configurable}; use config::{BrokerConfig, ConfigManager, DatabaseConfig, RiskConfig, TradingConfig, VaultConfig}; use storage::prelude::*; diff --git a/services/trading_service/src/repository_impls.rs b/services/trading_service/src/repository_impls.rs index 91f4ed8e1..705fb4be4 100644 --- a/services/trading_service/src/repository_impls.rs +++ b/services/trading_service/src/repository_impls.rs @@ -730,9 +730,7 @@ impl PostgresConfigRepository { #[async_trait] impl ConfigRepository for PostgresConfigRepository { - async fn get_config(&self, category: &str, key: &str) -> TradingServiceResult> - where - T: serde::de::DeserializeOwned + Send, + async fn get_config_f64(&self, category: &str, key: &str) -> TradingServiceResult> { let row = sqlx::query!( "SELECT value FROM configuration WHERE category = $1 AND key = $2", @@ -743,20 +741,63 @@ impl ConfigRepository for PostgresConfigRepository { .await .map_err(|e| TradingServiceError::DatabaseError { source: e.into() })?; - if let Some(row) = row { - let value: T = serde_json::from_str(&row.value).map_err(|e| { - TradingServiceError::ConfigurationError { - message: format!("Failed to deserialize config value: {}", e), - } - })?; - Ok(Some(value)) - } else { - Ok(None) + if let Some(row) = row { + let value: f64 = serde_json::from_str(&row.value).map_err(|e| { + TradingServiceError::ConfigurationError { + message: format!("Failed to deserialize config value: {}", e), + } + })?; + Ok(Some(value)) + } else { + Ok(None) + } } - } - - async fn set_config(&self, category: &str, key: &str, value: &T) -> TradingServiceResult<()> - where + + async fn get_config_u64(&self, category: &str, key: &str) -> TradingServiceResult> { + let row = sqlx::query!( + "SELECT value FROM configuration WHERE category = $1 AND key = $2", + category, + key + ) + .fetch_optional(&self.pool) + .await + .map_err(|e| TradingServiceError::DatabaseError { source: e.into() })?; + + if let Some(row) = row { + let value: u64 = serde_json::from_str(&row.value).map_err(|e| { + TradingServiceError::ConfigurationError { + message: format!("Failed to deserialize config value: {}", e), + } + })?; + Ok(Some(value)) + } else { + Ok(None) + } + } + + async fn get_config_string(&self, category: &str, key: &str) -> TradingServiceResult> { + let row = sqlx::query!( + "SELECT value FROM configuration WHERE category = $1 AND key = $2", + category, + key + ) + .fetch_optional(&self.pool) + .await + .map_err(|e| TradingServiceError::DatabaseError { source: e.into() })?; + + if let Some(row) = row { + let value: f64 = serde_json::from_str(&row.value).map_err(|e| { + TradingServiceError::ConfigurationError { + message: format!("Failed to deserialize config value: {}", e), + } + })?; + Ok(Some(value)) + } else { + Ok(None) + } + } + + async fn get_config_u64(&self, category: &str, key: &str) -> TradingServiceResult> { where T: serde::Serialize + Send + Sync, { let value_json = diff --git a/services/trading_service/src/state.rs b/services/trading_service/src/state.rs index 92516ca5b..138549bba 100644 --- a/services/trading_service/src/state.rs +++ b/services/trading_service/src/state.rs @@ -34,7 +34,7 @@ pub struct TradingServiceState { pub risk_repository: Arc, /// Configuration repository for settings and secrets - pub config_repository: Arc, + pub config_repository: Arc, /// Risk management engine (business logic only) pub risk_engine: Arc>, diff --git a/services/trading_service/src/tls_config.rs b/services/trading_service/src/tls_config.rs index f59ef31bf..88c525676 100644 --- a/services/trading_service/src/tls_config.rs +++ b/services/trading_service/src/tls_config.rs @@ -331,7 +331,7 @@ impl TlsInterceptor { } // Import required types from the certificate manager module -use crate::auth::{AppRoleConfig, CertificateConfig, CertificateManager, CircuitBreakerConfig}; +use crate::certificate_manager::{AppRoleConfig, CertificateConfig, CertificateManager, CircuitBreakerConfig}; #[cfg(test)] mod tests { diff --git a/services/trading_service/src/utils.rs b/services/trading_service/src/utils.rs index a3ea21580..ebd87745d 100644 --- a/services/trading_service/src/utils.rs +++ b/services/trading_service/src/utils.rs @@ -11,7 +11,8 @@ // Use shared library functionality use crate::error::{Result, TradingServiceError}; -use common::prelude::*; +use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{HealthCheck, Service, Configurable}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use tracing::{debug, info, warn}; diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 35f5c0c93..64f841719 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -3,14 +3,14 @@ //! This crate provides comprehensive storage solutions for the HFT system including: //! - S3 archival with lifecycle management and compression //! - Local file operations with atomic writes and locking -//! - Secure credential management through foxhunt-config-crate +//! - Secure credential management through config crate //! - Model storage and retrieval utilities //! - Backup and disaster recovery operations //! //! # Features //! //! - **S3 Integration**: High-performance S3 operations with automatic retry, compression, and lifecycle policies -//! - **Security**: Secure credential retrieval through foxhunt-config-crate crate +//! - **Security**: Secure credential retrieval through config crate //! - **Local Storage**: Thread-safe local file operations with atomic writes and file locking //! - **Data Integrity**: Checksums and verification for all storage operations //! - **Performance Monitoring**: Built-in metrics and telemetry for storage operations diff --git a/tests/common/database_helper.rs b/tests/common/database_helper.rs index af965602d..e767e6a39 100644 --- a/tests/common/database_helper.rs +++ b/tests/common/database_helper.rs @@ -16,7 +16,7 @@ use std::time::Duration; use chrono::Utc; // CANONICAL TYPE IMPORTS - Use core types throughout use common::*; -// All Decimal operations use common::prelude::Decimal +// All Decimal operations use common::Decimal use sqlx::{PgPool, Row}; use tokio::time::timeout; use uuid::Uuid; diff --git a/tests/common/lib.rs b/tests/common/lib.rs index 0c8614236..6a471ed78 100644 --- a/tests/common/lib.rs +++ b/tests/common/lib.rs @@ -53,7 +53,8 @@ pub mod test_config { // Mock Data Generation Module pub mod mock_data { - use common::prelude::*; + use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{Order, Position, Symbol, Price, Quantity, HftTimestamp}; /// Generate mock order using canonical types pub fn create_mock_order() -> Order { diff --git a/tests/common/src/lib.rs b/tests/common/src/lib.rs index 77debfbe4..5d6094bf8 100644 --- a/tests/common/src/lib.rs +++ b/tests/common/src/lib.rs @@ -30,7 +30,8 @@ pub fn init_test_logging() { /// Test configuration constants pub mod constants { - use common::prelude::*; + use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{Order, Position, Symbol, Price, Quantity, HftTimestamp}; use std::time::Duration; pub const DEFAULT_TIMEOUT: Duration = Duration::from_secs(30); diff --git a/tests/e2e/tests/compliance_regulatory_tests.rs b/tests/e2e/tests/compliance_regulatory_tests.rs index 40529f945..a83f863a3 100644 --- a/tests/e2e/tests/compliance_regulatory_tests.rs +++ b/tests/e2e/tests/compliance_regulatory_tests.rs @@ -1,4 +1,4 @@ -use crate::prelude::*; +use common::prelude::*; use std::collections::HashMap; use tokio::time::{timeout, Duration}; use trading_engine::{ diff --git a/tests/e2e/tests/emergency_shutdown_failover_tests.rs b/tests/e2e/tests/emergency_shutdown_failover_tests.rs index 2bf079e3e..e59283614 100644 --- a/tests/e2e/tests/emergency_shutdown_failover_tests.rs +++ b/tests/e2e/tests/emergency_shutdown_failover_tests.rs @@ -1,4 +1,4 @@ -use crate::prelude::*; +use common::prelude::*; use std::sync::Arc; use tokio::time::{timeout, Duration}; use trading_engine::{ diff --git a/tests/e2e/tests/mod.rs b/tests/e2e/tests/mod.rs index 6ea69445a..b3650c77f 100644 --- a/tests/e2e/tests/mod.rs +++ b/tests/e2e/tests/mod.rs @@ -102,7 +102,7 @@ pub use performance_validation_tests::PerformanceValidationTests; #[cfg(test)] mod integration_tests { use super::*; - use crate::prelude::*; + use common::prelude::*; /// Run all E2E test scenarios in sequence #[tokio::test] diff --git a/tests/e2e/tests/order_lifecycle_risk_tests.rs b/tests/e2e/tests/order_lifecycle_risk_tests.rs index 7d440f444..508a88377 100644 --- a/tests/e2e/tests/order_lifecycle_risk_tests.rs +++ b/tests/e2e/tests/order_lifecycle_risk_tests.rs @@ -1,4 +1,4 @@ -use crate::prelude::*; +use common::prelude::*; use std::collections::HashMap; use tokio::time::{timeout, Duration}; use trading_engine::{ diff --git a/tests/e2e/tests/performance_validation_tests.rs b/tests/e2e/tests/performance_validation_tests.rs index 608641199..3b1183e91 100644 --- a/tests/e2e/tests/performance_validation_tests.rs +++ b/tests/e2e/tests/performance_validation_tests.rs @@ -1,4 +1,4 @@ -use crate::prelude::*; +use common::prelude::*; use std::collections::VecDeque; use std::sync::Arc; use tokio::time::{timeout, Duration}; diff --git a/tests/lib.rs b/tests/lib.rs index 4a10b54fc..003eb9edb 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -10,7 +10,8 @@ // Test dependencies and external crates pub use core::prelude::*; -pub use common::prelude::*; +pub use common::{CommonError, CommonResult, DatabaseConfig, DatabasePool}; +use common::{Order, Position, Symbol, Price, Quantity, HftTimestamp}; pub use data; pub use ml; pub use risk; @@ -346,7 +347,7 @@ pub mod config { // Re-export common items for convenience pub use config::*; // pub use framework::*; // pub use helpers::*; -pub use foxhunt_config_crate::*; +pub use common::*; pub use mocks::*; pub use performance_utils::*; pub use safety::*; diff --git a/tests/unit/financial_property_tests.rs b/tests/unit/financial_property_tests.rs index 8e87aec9a..97f2953bb 100644 --- a/tests/unit/financial_property_tests.rs +++ b/tests/unit/financial_property_tests.rs @@ -11,7 +11,8 @@ mod tests { use std::f64::{INFINITY, NEG_INFINITY, NAN}; use chrono::{DateTime, Utc}; - use common::prelude::*; + use common::{Order, Position, Symbol, Price, Quantity, CommonError, CommonResult}; +use common::{OrderId, TradeId, ExecutionId, HftTimestamp, OrderType, OrderSide}; // Test Types - Simplified versions for property testing #[derive(Debug, Clone, Copy, PartialEq)] diff --git a/tli/benches/configuration_benchmarks.rs b/tli/benches/configuration_benchmarks.rs index f474e681d..aa4ca7418 100644 --- a/tli/benches/configuration_benchmarks.rs +++ b/tli/benches/configuration_benchmarks.rs @@ -123,7 +123,7 @@ fn bench_validation_operations(c: &mut Criterion) { fn bench_type_conversions(c: &mut Criterion) { let mut group = c.benchmark_group("type_conversions"); - use common::prelude::OrderSide; + use common::OrderSide; use tli::proto::trading::{OrderStatus, OrderType}; // Order side conversions diff --git a/tli/src/dashboard/mod.rs b/tli/src/dashboard/mod.rs index aab25ce38..6ca05421a 100644 --- a/tli/src/dashboard/mod.rs +++ b/tli/src/dashboard/mod.rs @@ -29,7 +29,7 @@ pub mod trading; pub mod vault_status; pub use backtesting::BacktestingDashboard; -// pub use foxhunt_config_crate::ConfigDashboard; + pub use crate::dashboards::config_manager::ConfigManagerDashboard as ConfigDashboard; pub use events::*; pub use layout::LayoutManager; diff --git a/tli/src/error.rs b/tli/src/error.rs index 660f8f3fd..67a5f7779 100644 --- a/tli/src/error.rs +++ b/tli/src/error.rs @@ -2,7 +2,7 @@ use thiserror::Error; use tonic::{Code, Status}; -// use common::prelude::*; +// use common::{CommonError, CommonResult, ErrorCategory, ErrorSeverity, RetryStrategy}; /// TLI error types #[derive(Error, Debug)] diff --git a/tli/src/types.rs b/tli/src/types.rs index 9c167aece..4df1cce71 100644 --- a/tli/src/types.rs +++ b/tli/src/types.rs @@ -7,7 +7,7 @@ use std::collections::HashMap; use std::time::{SystemTime, UNIX_EPOCH}; // Simplified imports to avoid core dependency issues // use common::{Symbol, Decimal, Price, Quantity, Timestamp, OrderSide}; -// use common::prelude::SystemStatus; +// use common::SystemStatus; // Define basic types locally until core is available diff --git a/tli/tests/integration/end_to_end_tests.rs b/tli/tests/integration/end_to_end_tests.rs index d505d539d..a3b802b1a 100644 --- a/tli/tests/integration/end_to_end_tests.rs +++ b/tli/tests/integration/end_to_end_tests.rs @@ -12,7 +12,8 @@ use uuid::Uuid; use crate::integration::{TestConfig, TestUtilities}; use crate::mocks::grpc_server::{MockBacktestingServer, MockRiskServer, MockTradingServer}; -use tli::auth::{AuthenticationManager, RbacManager, SessionManager}; +// Auth types removed - TLI is pure client +// use tli::auth::{AuthenticationManager, RbacManager, SessionManager}; use tli::client::{TliClientBuilder, TliClientSuite}; use tli::database::config::ConfigurationManager; use tli::prelude::*; @@ -22,8 +23,9 @@ pub struct EndToEndTestEnvironment { config: TestConfig, client_suite: Option, mock_servers: Vec>, - auth_manager: Option, - session_manager: Option, + // Auth managers removed - TLI is pure client + // auth_manager: Option, + // session_manager: Option, config_manager: Option, } @@ -33,8 +35,9 @@ impl EndToEndTestEnvironment { config, client_suite: None, mock_servers: Vec::new(), - auth_manager: None, - session_manager: None, + // Auth managers removed - TLI is pure client + // auth_manager: None, + // session_manager: None, config_manager: None, } } @@ -46,8 +49,8 @@ impl EndToEndTestEnvironment { // Start mock services self.start_mock_services().await?; - // Setup authentication and session management - self.setup_auth_services().await?; + // Setup authentication and session management - DISABLED (TLI is pure client) + // self.setup_auth_services().await?; // Setup configuration management self.setup_config_management().await?; @@ -83,28 +86,8 @@ impl EndToEndTestEnvironment { Ok(()) } - async fn setup_auth_services(&mut self) -> TliResult<()> { - // Setup authentication manager - let auth_config = AuthConfig { - jwt_secret: "test_jwt_secret_key_for_testing_only".to_string(), - token_expiry: Duration::from_hours(24), - refresh_token_expiry: Duration::from_days(7), - require_mfa: false, - }; - - self.auth_manager = Some(AuthenticationManager::new(auth_config)?); - - // Setup session manager - let session_config = SessionConfig { - session_timeout: Duration::from_hours(8), - max_concurrent_sessions: 10, - require_secure_cookies: false, // Disabled for testing - }; - - self.session_manager = Some(SessionManager::new(session_config)?); - - Ok(()) - } + // Auth setup disabled - TLI is pure client + // async fn setup_auth_services(&mut self) -> TliResult<()> { ... } async fn setup_config_management(&mut self) -> TliResult<()> { // Create temporary database for testing @@ -1127,8 +1110,8 @@ mod configuration_flow_tests { } } -/// Security authentication and authorization flow tests -#[cfg(test)] +/// Security authentication and authorization flow tests - DISABLED (TLI is pure client) +#[cfg(disabled_auth_tests)] mod security_flow_tests { use super::*; diff --git a/trading-data/src/executions.rs b/trading-data/src/executions.rs index ffd36034f..5a7abdf5f 100644 --- a/trading-data/src/executions.rs +++ b/trading-data/src/executions.rs @@ -6,7 +6,8 @@ use async_trait::async_trait; use chrono::{DateTime, Utc}; -use common::prelude::*; +use common::{Symbol, TradeId, ExecutionId, Price, Quantity, Decimal}; +use common::{CommonError, CommonResult, HftTimestamp, Order, Position}; // Removed direct rust_decimal import - using common::Decimal via common crate use sqlx::{Pool, Postgres, Row}; use uuid::Uuid; diff --git a/trading-data/src/models.rs b/trading-data/src/models.rs index bc9d1df9d..0094d0331 100644 --- a/trading-data/src/models.rs +++ b/trading-data/src/models.rs @@ -4,7 +4,8 @@ //! The canonical definitions are maintained in common::types for consistency across services. use chrono::{DateTime, Utc}; -use common::prelude::*; +use common::{Symbol, OrderId, Price, Quantity}; +use common::{CommonError, CommonResult, HftTimestamp, TradeId, ExecutionId}; use serde::{Deserialize, Serialize}; use uuid::Uuid; // Removed direct rust_decimal imports - using common::Decimal via prelude diff --git a/trading-data/src/orders.rs b/trading-data/src/orders.rs index 70a29dc38..c20b3e51b 100644 --- a/trading-data/src/orders.rs +++ b/trading-data/src/orders.rs @@ -6,7 +6,8 @@ use async_trait::async_trait; use chrono::{DateTime, Utc}; -use common::prelude::*; +use common::{Symbol, OrderId, Price, Quantity, CommonError, CommonResult, Decimal}; +use common::database::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; // Removed direct rust_decimal import - using common::Decimal via common crate use sqlx::{Pool, Postgres, Row}; use uuid::Uuid; diff --git a/trading-data/src/positions.rs b/trading-data/src/positions.rs index 3aea04306..bf67f8208 100644 --- a/trading-data/src/positions.rs +++ b/trading-data/src/positions.rs @@ -6,7 +6,8 @@ use async_trait::async_trait; use chrono::{DateTime, Utc}; -use common::prelude::*; +use common::{Symbol, Price, Quantity, CommonError, CommonResult, Decimal}; +use common::database::{DatabaseConfig, DatabasePool, PoolConfig, PoolStats}; // Removed direct rust_decimal import - using common::Decimal via common crate use sqlx::{Pool, Postgres, Row}; use uuid::Uuid; diff --git a/trading_engine/src/advanced_memory_benchmarks.rs b/trading_engine/src/advanced_memory_benchmarks.rs index 59a758ccd..e5bd0ee9d 100644 --- a/trading_engine/src/advanced_memory_benchmarks.rs +++ b/trading_engine/src/advanced_memory_benchmarks.rs @@ -15,7 +15,7 @@ use std::arch::x86_64::_rdtsc; use std::ptr::{null_mut, NonNull}; use std::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; -use crate::types::prelude::*; +use common::prelude::*; /// Memory benchmark configuration #[derive(Debug, Clone)] diff --git a/trading_engine/src/brokers/icmarkets.rs b/trading_engine/src/brokers/icmarkets.rs index be2397ddd..14b7809d8 100644 --- a/trading_engine/src/brokers/icmarkets.rs +++ b/trading_engine/src/brokers/icmarkets.rs @@ -3,10 +3,10 @@ //! Production-ready FIX connector for `ICMarkets` cTrader with real trading capabilities. use crate::trading::data_interface::{ - BrokerConnectionStatus, BrokerError, BrokerInterface, ExecutionReport, Position, + BrokerConnectionStatus, BrokerError, BrokerInterface, ExecutionReport, }; use crate::trading_operations::TradingOrder; -use crate::types::prelude::*; +use common::prelude::*; use async_trait::async_trait; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/brokers/interactive_brokers.rs b/trading_engine/src/brokers/interactive_brokers.rs index 7a6fa7517..f61a176ed 100644 --- a/trading_engine/src/brokers/interactive_brokers.rs +++ b/trading_engine/src/brokers/interactive_brokers.rs @@ -3,10 +3,10 @@ //! Simple stub implementation for compilation purposes. use crate::trading::data_interface::{ - BrokerConnectionStatus, BrokerError, BrokerInterface, ExecutionReport, Position, + BrokerConnectionStatus, BrokerError, BrokerInterface, ExecutionReport, }; use crate::trading_operations::TradingOrder; -use crate::types::prelude::*; +use common::prelude::*; use async_trait::async_trait; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/brokers/routing.rs b/trading_engine/src/brokers/routing.rs index 8beb5562e..558c0b9a3 100644 --- a/trading_engine/src/brokers/routing.rs +++ b/trading_engine/src/brokers/routing.rs @@ -2,8 +2,7 @@ use super::config::RoutingConfig; use super::error::Result; -use crate::types::prelude::*; -// BrokerType is available through prelude from common::types +use common::prelude::*; /// Routing decision #[derive(Debug, Clone)] diff --git a/trading_engine/src/compliance/audit_trails.rs b/trading_engine/src/compliance/audit_trails.rs index b42a3bce2..41a94d537 100644 --- a/trading_engine/src/compliance/audit_trails.rs +++ b/trading_engine/src/compliance/audit_trails.rs @@ -6,7 +6,7 @@ #![deny(clippy::unwrap_used, clippy::expect_used)] -use crate::types::prelude::*; +use common::prelude::*; use chrono::{DateTime, Utc}; use crossbeam_queue::SegQueue; use serde::{Deserialize, Serialize}; diff --git a/trading_engine/src/compliance/automated_reporting.rs b/trading_engine/src/compliance/automated_reporting.rs index ab8ba8424..d4b296c3c 100644 --- a/trading_engine/src/compliance/automated_reporting.rs +++ b/trading_engine/src/compliance/automated_reporting.rs @@ -11,7 +11,7 @@ use std::sync::Arc; use chrono::{DateTime, Utc, Duration, Datelike, Weekday}; use serde::{Serialize, Deserialize}; use tokio::sync::{RwLock, mpsc}; -use crate::types::prelude::*; +use common::prelude::*; use crate::compliance::{ transaction_reporting::{TransactionReporter, TransactionReport, ReportingPeriod, PeriodType}, // sox_compliance temporarily disabled: {SOXComplianceManager, ManagementCertificationReport}, diff --git a/trading_engine/src/compliance/best_execution.rs b/trading_engine/src/compliance/best_execution.rs index 3d14bfd8c..e6217e6ec 100644 --- a/trading_engine/src/compliance/best_execution.rs +++ b/trading_engine/src/compliance/best_execution.rs @@ -7,7 +7,8 @@ #![deny(clippy::unwrap_used, clippy::expect_used)] use crate::compliance::{MiFIDConfig, OrderInfo, TradingSession}; -use crate::types::prelude::*; +use crate::types::errors::FoxhuntError; +use common::prelude::*; use chrono::{DateTime, Duration, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/compliance/iso27001_compliance.rs b/trading_engine/src/compliance/iso27001_compliance.rs index d0205abd2..ce221f8ee 100644 --- a/trading_engine/src/compliance/iso27001_compliance.rs +++ b/trading_engine/src/compliance/iso27001_compliance.rs @@ -10,7 +10,7 @@ #![deny(clippy::unwrap_used, clippy::expect_used)] use super::RiskLevel; -use crate::types::prelude::*; +use common::prelude::*; use chrono::{DateTime, Duration, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/compliance/mod.rs b/trading_engine/src/compliance/mod.rs index 01bc6718f..3122ff564 100644 --- a/trading_engine/src/compliance/mod.rs +++ b/trading_engine/src/compliance/mod.rs @@ -27,10 +27,11 @@ pub mod regulatory_api; pub mod compliance_reporting; pub mod iso27001_compliance; -use crate::types::prelude::*; +use common::prelude::*; use chrono::{DateTime, Duration, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; +use uuid::Uuid; /// Compliance framework configuration #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/trading_engine/src/compliance/regulatory_api.rs b/trading_engine/src/compliance/regulatory_api.rs index ccd544d7b..32bbf3483 100644 --- a/trading_engine/src/compliance/regulatory_api.rs +++ b/trading_engine/src/compliance/regulatory_api.rs @@ -15,7 +15,7 @@ use crate::compliance::{ OrderInfo, SOXAuditEvent, }; -use crate::types::prelude::*; +use common::prelude::*; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/compliance/sox_compliance.rs b/trading_engine/src/compliance/sox_compliance.rs index f77538d41..28ab93dd6 100644 --- a/trading_engine/src/compliance/sox_compliance.rs +++ b/trading_engine/src/compliance/sox_compliance.rs @@ -14,7 +14,7 @@ use tokio::sync::mpsc; use std::collections::HashMap; use chrono::{DateTime, Utc, Duration}; use serde::{Serialize, Deserialize}; -use crate::types::prelude::*; +use common::prelude::*; use super::{OrderInfo}; /// SOX Compliance Manager diff --git a/trading_engine/src/compliance/transaction_reporting.rs b/trading_engine/src/compliance/transaction_reporting.rs index 8e51f202d..dc3cb267f 100644 --- a/trading_engine/src/compliance/transaction_reporting.rs +++ b/trading_engine/src/compliance/transaction_reporting.rs @@ -7,7 +7,7 @@ #![deny(clippy::unwrap_used, clippy::expect_used)] use crate::compliance::MiFIDConfig; -use crate::types::prelude::*; +use common::prelude::*; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; diff --git a/trading_engine/src/comprehensive_performance_benchmarks.rs b/trading_engine/src/comprehensive_performance_benchmarks.rs index 564fba6db..d6978c7e5 100644 --- a/trading_engine/src/comprehensive_performance_benchmarks.rs +++ b/trading_engine/src/comprehensive_performance_benchmarks.rs @@ -24,7 +24,7 @@ use crate::lockfree::{ use crate::simd::{AlignedPrices, AlignedVolumes, SimdMarketDataOps, SimdPriceOps, SimdRiskEngine}; use crate::timing::{calibrate_tsc, HardwareTimestamp, LatencyMeasurement}; use crate::types::basic::Execution; -use crate::types::prelude::*; +use common::prelude::*; /// Comprehensive benchmark configuration #[derive(Debug, Clone)] diff --git a/trading_engine/src/events/event_types.rs b/trading_engine/src/events/event_types.rs index f7d9bb5f1..cb33b8003 100644 --- a/trading_engine/src/events/event_types.rs +++ b/trading_engine/src/events/event_types.rs @@ -3,7 +3,7 @@ //! This module defines all event types used in the high-frequency trading system //! with comprehensive serialization, validation, and metadata support. -use crate::types::prelude::Decimal; +use common::prelude::*; use serde::{Deserialize, Serialize}; use serde_json::Value as JsonValue; use std::collections::HashMap; diff --git a/trading_engine/src/events/postgres_writer.rs b/trading_engine/src/events/postgres_writer.rs index 3ff29ccf9..bb5e7f62e 100644 --- a/trading_engine/src/events/postgres_writer.rs +++ b/trading_engine/src/events/postgres_writer.rs @@ -21,7 +21,8 @@ use tokio::time::{sleep, timeout}; use super::event_types::TradingEvent; use super::EventMetrics; -use crate::prelude::Decimal; +use common::Decimal; +use rust_decimal::prelude::ToPrimitive; /// Configuration for `PostgreSQL` writer #[derive(Debug, Clone)] diff --git a/trading_engine/src/features/unified_extractor.rs b/trading_engine/src/features/unified_extractor.rs index d8b7a4585..ced7ade83 100644 --- a/trading_engine/src/features/unified_extractor.rs +++ b/trading_engine/src/features/unified_extractor.rs @@ -22,8 +22,7 @@ use thiserror::Error; use tracing::{debug, error}; use crate::simd::SimdMarketDataOps; -use crate::types::prelude::*; -use common::QuoteEvent; +use common::prelude::*; /// Feature extraction errors #[derive(Error, Debug)] diff --git a/trading_engine/src/hft_performance_benchmark.rs b/trading_engine/src/hft_performance_benchmark.rs index c3a954d4d..f53f717da 100644 --- a/trading_engine/src/hft_performance_benchmark.rs +++ b/trading_engine/src/hft_performance_benchmark.rs @@ -14,7 +14,7 @@ use std::thread; // ELIMINATED DUPLICATE IMPORTS - these were from the deleted optimized module // OptimizedTradingOperations, FastOrder, FastExecution, symbol_utils use crate::simd_order_processor::{SimdOrderProcessor, OrderRiskResult}; -use crate::types::prelude::*; +use common::prelude::*; /// Performance benchmark configuration #[derive(Debug, Clone)] diff --git a/trading_engine/src/lib.rs b/trading_engine/src/lib.rs index a4b375b8c..c39c7528f 100644 --- a/trading_engine/src/lib.rs +++ b/trading_engine/src/lib.rs @@ -140,7 +140,8 @@ pub mod prelude { //! Core types and utilities for HFT applications // Re-export all core types - pub use crate::types::prelude::*; + pub use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult}; +use common::{HftTimestamp, TimeInForce}; // Re-export timing utilities pub use crate::timing::{ @@ -257,7 +258,7 @@ pub mod prelude { UnusualOptionsActivity, }; - // Re-export configuration management from foxhunt-config-crate crate + // Re-export configuration management from config crate pub use config::{ structures::{MarketDataConfig, PerformanceConfig, SecurityConfig}, ConfigManager, MLConfig, TradingConfig, diff --git a/trading_engine/src/repositories/compliance_repository.rs b/trading_engine/src/repositories/compliance_repository.rs index 1235f124b..f1fdccbea 100644 --- a/trading_engine/src/repositories/compliance_repository.rs +++ b/trading_engine/src/repositories/compliance_repository.rs @@ -9,7 +9,7 @@ use std::collections::HashMap; use std::sync::Arc; use thiserror::Error; -use crate::types::prelude::*; +use common::prelude::*; /// Errors that can occur in compliance repository operations #[derive(Debug, Error)] diff --git a/trading_engine/src/simd/mod.rs b/trading_engine/src/simd/mod.rs index 9df1915fc..25748c7b7 100644 --- a/trading_engine/src/simd/mod.rs +++ b/trading_engine/src/simd/mod.rs @@ -163,6 +163,7 @@ use tracing::{debug, error, warn}; /// Aligned data structure for AVX2 operations (32-byte alignment) #[repr(align(32))] +#[derive(Debug)] pub struct AlignedPrices { pub data: Vec, } @@ -205,6 +206,7 @@ impl AlignedPrices { /// Aligned volume data structure for AVX2 operations #[repr(align(32))] +#[derive(Debug)] pub struct AlignedVolumes { pub data: Vec, } @@ -234,6 +236,7 @@ impl AlignedVolumes { } /// Memory prefetching utilities for SIMD operations +#[derive(Debug)] pub struct SimdPrefetch; impl SimdPrefetch { @@ -281,6 +284,7 @@ impl SimdPrefetch { } /// Runtime CPU feature detection and SIMD capability validation +#[derive(Debug)] pub struct CpuFeatures { pub avx2: bool, pub sse2: bool, @@ -367,6 +371,7 @@ impl fmt::Display for SimdLevel { } /// Safe SIMD operations dispatcher that selects best available implementation +#[derive(Debug)] pub struct SafeSimdDispatcher { cpu_features: CpuFeatures, simd_level: SimdLevel, diff --git a/trading_engine/src/small_batch_optimizer.rs b/trading_engine/src/small_batch_optimizer.rs index 9bd065d7d..dde364386 100644 --- a/trading_engine/src/small_batch_optimizer.rs +++ b/trading_engine/src/small_batch_optimizer.rs @@ -19,7 +19,7 @@ )] use crate::timing::HardwareTimestamp; -use crate::types::prelude::*; +use common::prelude::*; use std::sync::atomic::{AtomicU64, Ordering}; /// Maximum orders in a small batch for specialized processing diff --git a/trading_engine/src/tests/compliance_tests.rs b/trading_engine/src/tests/compliance_tests.rs index a98d10a2b..fea2954b0 100644 --- a/trading_engine/src/tests/compliance_tests.rs +++ b/trading_engine/src/tests/compliance_tests.rs @@ -3,7 +3,7 @@ //! This test suite provides extensive coverage for regulatory compliance components //! including SOX, MiFID II, best execution, and other regulatory requirements. -use crate::prelude::*; +use common::prelude::*; use crate::compliance::{ ComplianceViolation, ComplianceSeverity, ComplianceRegulation, ComplianceStatus, SOXCompliance, MiFIDCompliance, ComplianceEngine, ComplianceRule, ComplianceMonitor diff --git a/trading_engine/src/tests/trading_tests.rs b/trading_engine/src/tests/trading_tests.rs index 11f228900..635a11378 100644 --- a/trading_engine/src/tests/trading_tests.rs +++ b/trading_engine/src/tests/trading_tests.rs @@ -6,8 +6,7 @@ #[cfg(test)] mod comprehensive_trading_tests { use super::*; - use crate::prelude::*; - use crate::types::prelude::*; + use common::prelude::*; use crate::{CoreError, CoreResult}; // use futures; // TODO: Fix futures import or add futures to dependencies use std::error::Error; @@ -333,7 +332,7 @@ mod comprehensive_trading_tests { #[cfg(target_arch = "x86_64")] #[test] fn test_simd_feature_detection() { - use crate::performance::*; + // use crate::performance::*; // TODO: Fix performance module import // Test SIMD support detection let has_avx2 = check_simd_support(); diff --git a/trading_engine/src/timing.rs b/trading_engine/src/timing.rs index 9e1790f73..c7bbd8776 100644 --- a/trading_engine/src/timing.rs +++ b/trading_engine/src/timing.rs @@ -148,6 +148,7 @@ static TSC_VALIDATED: AtomicBool = AtomicBool::new(false); static TSC_RELIABILITY_SCORE: AtomicU64 = AtomicU64::new(100); /// Safety configuration for timing operations +#[derive(Debug)] pub struct TimingSafetyConfig { pub enable_validation: bool, pub max_latency_threshold_ns: u64, diff --git a/trading_engine/src/trading/account_manager.rs b/trading_engine/src/trading/account_manager.rs index 102d2e0fa..025c5220c 100644 --- a/trading_engine/src/trading/account_manager.rs +++ b/trading_engine/src/trading/account_manager.rs @@ -9,7 +9,8 @@ use tracing::{debug, info, warn}; use super::engine::AccountInfo; use crate::trading_operations::{ExecutionResult, OrderSide, TradingOrder}; -use crate::types::prelude::*; +use common::prelude::*; +use rust_decimal::prelude::ToPrimitive; /// Account Manager for managing account information and validations #[derive(Debug)] diff --git a/trading_engine/src/trading/broker_client.rs b/trading_engine/src/trading/broker_client.rs index f0eafa08e..852ee3093 100644 --- a/trading_engine/src/trading/broker_client.rs +++ b/trading_engine/src/trading/broker_client.rs @@ -24,7 +24,7 @@ use super::data_interface::{ BrokerConnectionStatus, BrokerError, BrokerInterface, ExecutionReport, Position, }; use crate::trading_operations::{OrderStatus, TradingOrder}; -use crate::types::prelude::*; +use common::prelude::*; // Re-export from data_interface (avoid duplicates) pub use super::data_interface::ExecutionReport as RealExecutionReport; diff --git a/trading_engine/src/trading/data_interface.rs b/trading_engine/src/trading/data_interface.rs index 0bbe9a3fb..069742991 100644 --- a/trading_engine/src/trading/data_interface.rs +++ b/trading_engine/src/trading/data_interface.rs @@ -4,7 +4,7 @@ //! to work with the core trading engine. This allows core to remain independent //! while still being able to work with different data sources. -use crate::types::prelude::*; +use common::prelude::*; pub use crate::types::events::OrderEvent; use async_trait::async_trait; use std::fmt::Debug; diff --git a/trading_engine/src/trading/engine.rs b/trading_engine/src/trading/engine.rs index 20a582c6a..8fabb32d9 100644 --- a/trading_engine/src/trading/engine.rs +++ b/trading_engine/src/trading/engine.rs @@ -17,7 +17,7 @@ use crate::trading_operations::{ ArbitrageOpportunity, ExecutionResult, OrderSide, OrderStatus, OrderType, TimeInForce, TradingOperations, TradingOrder, TradingStats, }; -use crate::types::prelude::*; +use common::prelude::*; /// Core Trading Engine that handles all trading business logic #[derive(Debug)] diff --git a/trading_engine/src/trading/order_manager.rs b/trading_engine/src/trading/order_manager.rs index edb18ea98..7101fcf29 100644 --- a/trading_engine/src/trading/order_manager.rs +++ b/trading_engine/src/trading/order_manager.rs @@ -8,7 +8,7 @@ use tokio::sync::RwLock; use tracing::{debug, info}; use crate::trading_operations::{ExecutionResult, OrderStatus, TradingOrder}; -use crate::types::prelude::*; +use common::prelude::*; /// Order Manager for tracking and managing orders #[derive(Debug)] diff --git a/trading_engine/src/trading/position_manager.rs b/trading_engine/src/trading/position_manager.rs index 0621bf624..5888ff0ca 100644 --- a/trading_engine/src/trading/position_manager.rs +++ b/trading_engine/src/trading/position_manager.rs @@ -8,7 +8,8 @@ use tokio::sync::RwLock; use tracing::{debug, info, warn}; use crate::trading_operations::ExecutionResult; -use crate::types::prelude::*; +use common::prelude::*; +use rust_decimal::prelude::ToPrimitive; /// Position Manager for tracking and managing positions #[derive(Debug)] diff --git a/trading_engine/src/trading_operations.rs b/trading_engine/src/trading_operations.rs index d07f3a556..260143eca 100644 --- a/trading_engine/src/trading_operations.rs +++ b/trading_engine/src/trading_operations.rs @@ -15,7 +15,8 @@ use tokio::sync::RwLock; use tracing::{debug, error, info, warn}; // Core types from the local types system -use crate::types::prelude::*; +use common::prelude::*; +use rust_decimal::prelude::ToPrimitive; // Prometheus metrics integration use lazy_static::lazy_static; diff --git a/trading_engine/src/trading_operations_optimized.rs b/trading_engine/src/trading_operations_optimized.rs index cf403e162..53e64394b 100644 --- a/trading_engine/src/trading_operations_optimized.rs +++ b/trading_engine/src/trading_operations_optimized.rs @@ -18,7 +18,8 @@ use crossbeam::queue::SegQueue; use crossbeam::utils::CachePadded; // Use canonical types but with zero-allocation wrappers -use crate::types::prelude::*; +use common::{Order, Position, Symbol, OrderId, Price, Quantity, CommonError, CommonResult}; +use common::{HftTimestamp, OrderType, OrderStatus, OrderSide, TimeInForce}; /// High-performance order processing constants const MAX_ORDERS: usize = 100_000; diff --git a/trading_engine/src/types/backtesting.rs b/trading_engine/src/types/backtesting.rs index 2070d9826..105a042c7 100644 --- a/trading_engine/src/types/backtesting.rs +++ b/trading_engine/src/types/backtesting.rs @@ -47,7 +47,7 @@ use std::collections::HashMap; -use crate::prelude::*; +use common::prelude::*; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; diff --git a/trading_engine/src/types/basic.rs b/trading_engine/src/types/basic.rs index 916b8d761..82aad8cc9 100644 --- a/trading_engine/src/types/basic.rs +++ b/trading_engine/src/types/basic.rs @@ -57,6 +57,7 @@ use crate::types::errors::FoxhuntError; /// Bridge functions for existing code that expects TradingError static methods /// These maintain backward compatibility while using the unified error system +#[derive(Debug)] pub struct TradingError; impl TradingError { diff --git a/trading_engine/src/types/conversions.rs b/trading_engine/src/types/conversions.rs index e8fa5e433..ea0ad2484 100644 --- a/trading_engine/src/types/conversions.rs +++ b/trading_engine/src/types/conversions.rs @@ -5,9 +5,7 @@ //! to avoid silent overflow errors. // CANONICAL TYPE IMPORTS - Use Decimal through prelude to avoid conflicts -use crate::prelude::*; - -use common::HftTimestamp; +use common::prelude::*; use crate::types::basic::{Money, Price, Quantity, Volume}; /// Trait for converting types to protocol buffer types diff --git a/trading_engine/src/types/financial.rs b/trading_engine/src/types/financial.rs index 89b96bb4b..59d94e87a 100644 --- a/trading_engine/src/types/financial.rs +++ b/trading_engine/src/types/financial.rs @@ -430,7 +430,7 @@ impl IntegerMoney { /// /// # Example /// ``` - /// use crate::types::prelude::*; + /// use common::prelude::*; /// /// let price = Price::from_f64(123.456789).expect("Valid price"); /// let decimal = price.to_decimal(); diff --git a/trading_engine/src/types/metrics.rs b/trading_engine/src/types/metrics.rs index a1da38740..7bdd0c0a5 100644 --- a/trading_engine/src/types/metrics.rs +++ b/trading_engine/src/types/metrics.rs @@ -371,6 +371,7 @@ pub static RISK_LIMIT_UTILIZATION: Lazy = Lazy::new(|| { }); /// Timer helper for measuring latencies +#[derive(Debug)] pub struct LatencyTimer { start: Instant, histogram: Histogram, diff --git a/trading_engine/src/types/prelude.rs b/trading_engine/src/types/prelude.rs index 7dbae57ec..ddbfa56a0 100644 --- a/trading_engine/src/types/prelude.rs +++ b/trading_engine/src/types/prelude.rs @@ -4,7 +4,9 @@ //! and the common crate for convenient access. // Re-export from common crate (canonical types) -pub use common::prelude::*; +pub use common::{Order, Position, Execution, Symbol, OrderId, Price, Quantity}; +pub use common::{CommonError, CommonResult, HftTimestamp, TradeId, ExecutionId}; +pub use common::{OrderType, OrderStatus, OrderSide, TimeInForce}; pub use common::*; // Re-export trading engine specific types diff --git a/trading_engine/src/types/tests/basic_focused_tests.rs b/trading_engine/src/types/tests/basic_focused_tests.rs index 40d8b7da2..aa6e24ca1 100644 --- a/trading_engine/src/types/tests/basic_focused_tests.rs +++ b/trading_engine/src/types/tests/basic_focused_tests.rs @@ -6,7 +6,7 @@ /* // CANONICAL TYPE IMPORTS - ToPrimitive available via types::prelude use std::collections::HashMap; -use crate::types::prelude::*; +use common::prelude::*; use crate::types::basic::*; // ============================================================================ diff --git a/trading_engine/src/types/type_registry.rs b/trading_engine/src/types/type_registry.rs index 176a66ceb..5327b9785 100644 --- a/trading_engine/src/types/type_registry.rs +++ b/trading_engine/src/types/type_registry.rs @@ -167,6 +167,7 @@ impl CanonicalType for canonical_types::Order { } /// Runtime type registry validator +#[derive(Debug)] pub struct TypeRegistry { registered_types: std::collections::HashMap, } diff --git a/trading_engine/src/types/validation.rs b/trading_engine/src/types/validation.rs index 166dea2be..d23a42752 100644 --- a/trading_engine/src/types/validation.rs +++ b/trading_engine/src/types/validation.rs @@ -5,7 +5,7 @@ #![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)] -use crate::prelude::*; +use common::prelude::*; use regex::Regex; use std::collections::HashMap; use thiserror::Error; @@ -70,6 +70,7 @@ pub enum ValidationError { pub type ValidationResult = Result; /// Input sanitization and validation utilities +#[derive(Debug)] pub struct InputValidator; impl InputValidator { diff --git a/trading_engine/src/types/workflow_risk.rs b/trading_engine/src/types/workflow_risk.rs index 4ae270b92..106533ab6 100644 --- a/trading_engine/src/types/workflow_risk.rs +++ b/trading_engine/src/types/workflow_risk.rs @@ -3,7 +3,7 @@ //! These types define the structure for workflow-specific risk validation requests, //! responses, and status information used throughout the risk management system. -use crate::prelude::*; +use common::prelude::*; use serde::{Deserialize, Serialize}; /// Workflow-specific risk validation request