daa_economy/
lib.rs

1//! # DAA Economy
2//! 
3//! Economic modeling and decision-making framework for Decentralized Autonomous Applications.
4//! This crate provides tools for market analysis, resource allocation, risk assessment,
5//! and economic optimization within the DAA ecosystem.
6
7pub mod market;
8pub mod resources;
9pub mod risk;
10pub mod optimization;
11pub mod trading;
12pub mod error;
13
14pub use error::{EconomyError, Result};
15pub use market::{MarketAnalyzer, MarketData, PricePoint};
16pub use resources::{ResourceManager, Resource, ResourceAllocation};
17pub use risk::{RiskAssessment, RiskFactor, RiskLevel};
18pub use optimization::{EconomicOptimizer, OptimizationStrategy, OptimizationResult};
19pub use trading::{TradingEngine, TradeOrder, TradeExecution};
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn test_economic_components_integration() {
27        // Test that all major components can be instantiated
28        let market_analyzer = MarketAnalyzer::new();
29        let resource_manager = ResourceManager::new();
30        let trading_engine = TradingEngine::new();
31        
32        assert!(market_analyzer.get_market_data().is_ok());
33        assert_eq!(resource_manager.available_resources().len(), 0);
34        assert!(trading_engine.get_account_balance().is_ok());
35    }
36
37    #[test]
38    fn test_integration_workflow() {
39        // Test integration between components
40        let mut trading_engine = TradingEngine::new();
41        let mut market_analyzer = MarketAnalyzer::new();
42        
43        // Set up initial conditions
44        trading_engine.set_balance("USD".to_string(), rust_decimal_macros::dec!(10000.0));
45        trading_engine.update_market_price("BTC".to_string(), rust_decimal_macros::dec!(50000.0));
46        
47        // Create market data
48        let mut btc_data = market::MarketData::new("BTC".to_string());
49        btc_data.add_price_point(market::PricePoint::new(
50            rust_decimal_macros::dec!(50000.0), 
51            rust_decimal_macros::dec!(100.0)
52        ));
53        market_analyzer.add_market_data("BTC".to_string(), btc_data);
54        
55        // Test resource allocation
56        let mut resource_manager = ResourceManager::new();
57        let resource = resources::Resource::new(
58            resources::ResourceType::Token("BTC".to_string()),
59            rust_decimal_macros::dec!(100.0),
60            "BTC".to_string(),
61            rust_decimal_macros::dec!(50000.0),
62        );
63        resource_manager.add_resource(resource);
64        
65        assert_eq!(resource_manager.available_resources().len(), 1);
66        assert!(market_analyzer.get_market_data().is_ok());
67        assert!(trading_engine.get_account_balance().is_ok());
68    }
69}