Skip to main content

tetcore_runtime/
lib.rs

1pub mod accounts;
2pub mod governance;
3pub mod inference;
4pub mod model_registry;
5pub mod revenue;
6pub mod vault;
7
8pub use accounts::AccountsModule;
9pub use governance::GovernanceModule;
10pub use inference::InferenceModule;
11pub use model_registry::ModelRegistryModule;
12pub use revenue::RevenueModule;
13pub use vault::VaultModule;
14
15use std::collections::HashMap;
16use tetcore_primitives::{Address, Hash32};
17use thiserror::Error;
18
19pub trait Module: Send + Sync {
20    fn name(&self) -> &str;
21    fn process(&mut self, tx_data: &[u8]) -> Result<(), RuntimeError>;
22}
23
24#[derive(Error, Debug, Clone)]
25pub enum RuntimeError {
26    #[error("Module not found")]
27    ModuleNotFound,
28    #[error("Invalid module call")]
29    InvalidModuleCall,
30    #[error("Insufficient permissions")]
31    InsufficientPermissions,
32    #[error("Storage error")]
33    StorageError,
34    #[error("Invalid state")]
35    InvalidState,
36}
37
38pub struct Runtime {
39    accounts: AccountsModule,
40    governance: GovernanceModule,
41    model_registry: ModelRegistryModule,
42    inference: InferenceModule,
43    vault: VaultModule,
44    revenue: RevenueModule,
45}
46
47impl Runtime {
48    pub fn new() -> Self {
49        Self {
50            accounts: AccountsModule::new(),
51            governance: GovernanceModule::new(),
52            model_registry: ModelRegistryModule::new(),
53            inference: InferenceModule::new(),
54            vault: VaultModule::new(),
55            revenue: RevenueModule::new(),
56        }
57    }
58
59    pub fn accounts(&self) -> &AccountsModule {
60        &self.accounts
61    }
62
63    pub fn accounts_mut(&mut self) -> &mut AccountsModule {
64        &mut self.accounts
65    }
66
67    pub fn governance(&self) -> &GovernanceModule {
68        &self.governance
69    }
70
71    pub fn governance_mut(&mut self) -> &mut GovernanceModule {
72        &mut self.governance
73    }
74
75    pub fn model_registry(&self) -> &ModelRegistryModule {
76        &self.model_registry
77    }
78
79    pub fn model_registry_mut(&mut self) -> &mut ModelRegistryModule {
80        &mut self.model_registry
81    }
82
83    pub fn inference(&self) -> &InferenceModule {
84        &self.inference
85    }
86
87    pub fn inference_mut(&mut self) -> &mut InferenceModule {
88        &mut self.inference
89    }
90
91    pub fn vault(&self) -> &VaultModule {
92        &self.vault
93    }
94
95    pub fn vault_mut(&mut self) -> &mut VaultModule {
96        &mut self.vault
97    }
98
99    pub fn revenue(&self) -> &RevenueModule {
100        &self.revenue
101    }
102
103    pub fn revenue_mut(&mut self) -> &mut RevenueModule {
104        &mut self.revenue
105    }
106}
107
108impl Default for Runtime {
109    fn default() -> Self {
110        Self::new()
111    }
112}