1pub mod agent;
45pub mod amp;
46pub mod authority;
47pub mod authorization;
48pub mod availability; pub mod biometric;
50pub mod bloom;
51pub mod capability;
52pub mod choreographic; pub mod console;
54pub mod crypto;
55pub mod fact; pub mod flood; pub mod flow; pub mod guard; pub mod guardian; pub mod indexed; pub mod intent; pub mod journal;
63pub mod leakage; pub mod ledger; pub mod network;
66pub mod noise;
67pub mod query; pub mod random;
69pub mod reactive; pub mod registry; pub mod relay; pub mod reliability;
73pub mod route_crypto;
74pub mod runtime_capability; pub mod secure;
76pub mod storage;
77pub mod supertraits;
78pub mod sync; pub mod system;
80pub mod task;
81pub mod terminal; pub mod threshold; pub mod time;
84pub mod trace;
85pub mod transport;
86pub mod tree; pub mod vm_bridge; cfg_if::cfg_if! {
91 if #[cfg(feature = "simulation")] {
92 pub mod chaos;
93 pub mod quint;
94 pub mod simulation;
95 pub mod testing;
96 }
97}
98
99pub use agent::{
101 AgentEffects, AgentHealthStatus, AuthMethod, AuthenticationEffects, AuthenticationResult,
102 ConfigError, ConfigValidationError, ConfigurationEffects, CredentialBackup, DeviceConfig,
103 DeviceInfo, DeviceStorageEffects, HealthStatus, SessionHandle, SessionInfo,
104 SessionManagementEffects, SessionMessage, SessionRole, SessionStatus, SessionType,
105};
106pub use amp::{
107 AmpChannelEffects, AmpChannelError, AmpCiphertext, AmpHeader, ChannelCloseParams,
108 ChannelCreateParams, ChannelJoinParams, ChannelLeaveParams, ChannelSendParams,
109};
110pub use authority::{AuthorityEffects, AuthorityRelationalEffects, RelationalEffects};
111pub use authorization::{
112 AuthorizationDecision, AuthorizationEffects, AuthorizationError, BiscuitAuthorizationEffects,
113};
114pub use availability::{AvailabilityError, DataAvailability};
115pub use biometric::{
116 BiometricCapability, BiometricConfig, BiometricEffects, BiometricEnrollmentResult,
117 BiometricError, BiometricSecurityLevel, BiometricStatistics, BiometricType,
118 BiometricVerificationResult,
119};
120pub use bloom::{BloomConfig, BloomError, BloomFilter};
121pub use capability::{
122 CapabilityConfig, CapabilityEffects, CapabilityError, CapabilityStatistics,
123 CapabilityTokenFormat, CapabilityTokenInfo, CapabilityTokenRequest,
124 CapabilityVerificationResult, TokenStatus, VerificationLevel,
125};
126#[cfg(feature = "simulation")]
127pub use chaos::{ByzantineType, ChaosEffects, ChaosError, CorruptionType, ResourceType};
128pub use console::ConsoleEffects;
129pub use crypto::{CryptoCoreEffects, CryptoEffects, CryptoError, CryptoExtendedEffects};
130pub use fact::{CheckpointInfo, FactEffects, FactError, TemporalFact};
131pub use flood::{
132 FloodAction, FloodBudget, FloodError, LayeredBudget, RendezvousFlooder, RendezvousPacket,
133};
134pub use flow::{FlowBudgetEffects, FlowHint};
135pub use guardian::{GuardianAcceptInput, GuardianEffects, GuardianRequestInput};
136pub use indexed::{FactId, IndexStats, IndexedFact, IndexedJournalEffects};
137pub use intent::{
138 AuthorizationLevel, IntentDispatchError, IntentEffects, IntentMetadata, SimpleIntentEffects,
139};
140pub use journal::JournalEffects;
141pub use leakage::{
142 LeakageBudget, LeakageChoreographyExt, LeakageEffects, LeakageEvent, ObserverClass,
143};
144#[allow(deprecated)]
145pub use network::{
147 NetworkAddress, NetworkChange, NetworkChangeEffects, NetworkChangeStream, NetworkCoreEffects,
148 NetworkEffects, NetworkError, NetworkExtendedEffects, NetworkUsability, PeerEvent,
149 PeerEventStream, UdpEffects, UdpEndpoint, UdpEndpointEffects,
150};
151pub use noise::{HandshakeState, NoiseEffects, NoiseError, NoiseParams, TransportState};
152pub use query::{QueryEffects, QueryError, QuerySubscription};
153#[cfg(feature = "simulation")]
154pub use quint::{
155 ActionDescriptor,
157 ActionEffect,
158 ActionResult,
159 Counterexample,
161 EvaluationResult,
162 EvaluationStatistics,
163 Property,
164 PropertyEvaluator,
165 PropertyId,
166 PropertyKind,
167 PropertySpec,
168 QuintEvaluationEffects,
169 QuintMappable,
170 QuintSimulationEffects,
171 QuintStateExtractable,
172 QuintVerificationEffects,
173 VerificationId,
174 VerificationResult,
175};
176pub use random::{RandomCoreEffects, RandomEffects, RandomExtendedEffects};
177pub use reactive::{
178 ReactiveDeriveEffects, ReactiveEffects, ReactiveError, Signal, SignalId, SignalStream,
179};
180pub use relay::{RelayCandidate, RelayContext, RelayError, RelayRelationship, RelaySelector};
181pub use reliability::{
182 AdaptiveMode,
184 BackoffStrategy,
185 JitterMode,
186 RateLimit,
187 RateLimitConfig,
189 RateLimitResult,
190 RateLimiter,
191 RateLimiterStatistics,
192 ReliabilityEffects,
193 ReliabilityError,
194 RetryContext,
195 RetryPolicy,
196 RetryResult,
197};
198pub use route_crypto::{RouteCryptoEffects, RouteCryptoError, RouteHopKeyMaterial};
199pub use runtime_capability::{AdmissionError, CapabilityKey, RuntimeCapabilityEffects};
200pub use secure::{
201 SecureStorageCapability, SecureStorageEffects, SecureStorageError, SecureStorageLocation,
202};
203#[cfg(feature = "simulation")]
204pub use simulation::{
205 ByzantineFault, CheckpointId, ComputationFault, ExportFormat, FaultInjectionConfig,
206 FaultInjectionEffects, FaultType, NetworkFault, OperationStats, RuntimeEffectsBundle,
207 ScenarioId, ScenarioState, SimulationCheckpoint, SimulationControlEffects, SimulationEffects,
208 SimulationEnvironmentConfig, SimulationEnvironmentError, SimulationEnvironmentFactory,
209 SimulationMetrics, SimulationObservationEffects, SimulationScenario, SimulationTime,
210 StorageFault, TimeFault,
211};
212pub use storage::{
213 StorageCoreEffects, StorageEffects, StorageError, StorageExtendedEffects, StorageLocation,
214 StorageStats,
215};
216pub use supertraits::{
217 AntiEntropyEffects, ChoreographyEffects, CrdtEffects, MinimalEffects, SigningEffects,
218 SnapshotEffects, TreeEffects,
219};
220pub use system::{SystemEffects, SystemError};
221pub use terminal::{
222 Cell, Color, CursorPosition, CursorShape, KeyCode, KeyEvent, KeyEventKind, Modifiers,
223 MouseButton, MouseEvent, MouseEventKind, Style, TerminalEffects, TerminalError, TerminalEvent,
224 TerminalFrame, TerminalInputEffects, TerminalOutputEffects,
225};
226#[cfg(feature = "simulation")]
227pub use testing::{TestingEffects, TestingError};
228pub use time::{
229 LogicalClockEffects, OrderClockEffects, PhysicalTimeEffects, TimeComparison, TimeEffects,
230 TimeError, TimeoutHandle, WakeCondition,
231};
232pub use trace::{TraceEffects, TraceEvent, TraceSpanId};
233pub use transport::{
234 TransportEffects, TransportEnvelope, TransportError, TransportReceipt, TransportStats,
235};
236pub use vm_bridge::{
237 VmBridgeBlockedEdge, VmBridgeEffects, VmBridgeLeaseMetadataSnapshot, VmBridgePendingSend,
238 VmBridgeSchedulerSignals, VmBridgeTransferMetadataSnapshot,
239};
240
241pub use choreographic::{
243 ChoreographicEffects, ChoreographicRole, ChoreographyError, ChoreographyEvent,
244 ChoreographyMetrics,
245};
246pub use guard::{
247 Decision, EffectCommand, EffectInterpreter, FlowBudgetView, GuardOutcome, GuardSnapshot,
248 JournalEntry, MetadataView, SimulationEvent,
249};
250pub use ledger::{EffectApiEffects, EffectApiError, EffectApiEvent, EffectApiEventStream};
251pub use sync::SyncMetrics;
252pub use threshold::{PublicKeyPackage, ThresholdSigningEffects, ThresholdSigningError};
253pub use tree::{Cut, Partial, ProposalId, Snapshot, TreeOperationEffects};
254
255pub use crate::AuraError;
257
258#[derive(
263 Debug, Clone, Copy, PartialEq, Eq, Hash, Default, serde::Serialize, serde::Deserialize,
264)]
265pub enum ExecutionMode {
266 #[default]
268 Testing,
269 Production,
271 Simulation {
273 seed: u64,
275 },
276}
277
278impl ExecutionMode {
279 pub fn is_deterministic(&self) -> bool {
281 matches!(self, Self::Testing | Self::Simulation { .. })
282 }
283
284 pub fn is_production(&self) -> bool {
286 matches!(self, Self::Production)
287 }
288
289 pub fn seed(&self) -> Option<u64> {
291 match self {
292 Self::Simulation { seed } => Some(*seed),
293 _ => None,
294 }
295 }
296}
297
298#[derive(
303 Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, serde::Serialize, serde::Deserialize,
304)]
305pub enum EffectType {
306 Crypto,
308 Network,
310 Storage,
312 Time,
314 Console,
316 Random,
318 Reactive,
320 Intent,
322 EffectApi,
324 Journal,
326 Fact,
328 Tree,
330 Choreographic,
332 System,
334 Trace,
336 DeviceStorage,
338 Authentication,
340 Configuration,
342 SessionManagement,
344 FaultInjection,
346 TimeControl,
348 StateInspection,
350 PropertyChecking,
352 ChaosCoordination,
354 Query,
356 Terminal,
358}
359
360impl std::fmt::Display for EffectType {
361 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
362 match self {
363 Self::Crypto => write!(f, "crypto"),
364 Self::Network => write!(f, "network"),
365 Self::Storage => write!(f, "storage"),
366 Self::Time => write!(f, "time"),
367 Self::Console => write!(f, "console"),
368 Self::Random => write!(f, "random"),
369 Self::Reactive => write!(f, "reactive"),
370 Self::Intent => write!(f, "intent"),
371 Self::EffectApi => write!(f, "effect_api"),
372 Self::Journal => write!(f, "journal"),
373 Self::Fact => write!(f, "fact"),
374 Self::Tree => write!(f, "tree"),
375 Self::Choreographic => write!(f, "choreographic"),
376 Self::System => write!(f, "system"),
377 Self::Trace => write!(f, "trace"),
378 Self::DeviceStorage => write!(f, "device_storage"),
379 Self::Authentication => write!(f, "authentication"),
380 Self::Configuration => write!(f, "configuration"),
381 Self::SessionManagement => write!(f, "session_management"),
382 Self::FaultInjection => write!(f, "fault_injection"),
383 Self::TimeControl => write!(f, "time_control"),
384 Self::StateInspection => write!(f, "state_inspection"),
385 Self::PropertyChecking => write!(f, "property_checking"),
386 Self::ChaosCoordination => write!(f, "chaos_coordination"),
387 Self::Query => write!(f, "query"),
388 Self::Terminal => write!(f, "terminal"),
389 }
390 }
391}
392
393impl EffectType {
394 pub fn all() -> Vec<Self> {
396 vec![
397 Self::Crypto,
398 Self::Network,
399 Self::Storage,
400 Self::Time,
401 Self::Console,
402 Self::Random,
403 Self::Reactive,
404 Self::Intent,
405 Self::EffectApi,
406 Self::Journal,
407 Self::Fact,
408 Self::Tree,
409 Self::Choreographic,
410 Self::System,
411 Self::Trace,
412 Self::DeviceStorage,
413 Self::Authentication,
414 Self::Configuration,
415 Self::SessionManagement,
416 Self::FaultInjection,
417 Self::TimeControl,
418 Self::StateInspection,
419 Self::PropertyChecking,
420 Self::ChaosCoordination,
421 Self::Query,
422 Self::Terminal,
423 ]
424 }
425}