kona_engine/lib.rs
1#![doc = include_str!("../README.md")]
2#![doc(
3 html_logo_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/square.png",
4 html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico",
5 issue_tracker_base_url = "https://github.com/op-rs/kona/issues/"
6)]
7#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
8
9//! ## Architecture
10//!
11//! The engine operates as a task-driven system where operations are queued and executed atomically:
12//!
13//! ```text
14//! ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
15//! │ Engine │◄───┤ Task Queue │◄───┤ Engine │
16//! │ Client │ │ (Priority) │ │ Tasks │
17//! └─────────────┘ └──────────────┘ └─────────────┘
18//! │ │ │
19//! ▼ ▼ ▼
20//! ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
21//! │ Engine API │ │ Engine State │ │ Rollup │
22//! │ (HTTP/JWT) │ │ Updates │ │ Config │
23//! └─────────────┘ └──────────────┘ └─────────────┘
24//! ```
25//!
26//! ## Module Organization
27//!
28//! - **Task Queue** - Core engine task queue and execution logic via [`Engine`]
29//! - **Client** - HTTP client for Engine API communication via [`EngineClient`]
30//! - **State** - Engine state management and synchronization via [`EngineState`]
31//! - **Versions** - Engine API version selection via [`EngineForkchoiceVersion`],
32//! [`EngineNewPayloadVersion`], [`EngineGetPayloadVersion`]
33//! - **Attributes** - Payload attribute validation via [`AttributesMatch`]
34//! - **Kinds** - Engine client type identification via [`EngineKind`]
35//! - **Query** - Engine query interface via [`EngineQueries`]
36//! - **Metrics** - Optional Prometheus metrics collection via [`Metrics`]
37
38#[macro_use]
39extern crate tracing;
40
41mod task_queue;
42pub use task_queue::{
43 BuildTask, BuildTaskError, ConsolidateTask, ConsolidateTaskError, Engine, EngineBuildError,
44 EngineResetError, EngineTask, EngineTaskError, EngineTaskErrorSeverity, EngineTaskErrors,
45 EngineTaskExt, FinalizeTask, FinalizeTaskError, InsertTask, InsertTaskError, SynchronizeTask,
46 SynchronizeTaskError,
47};
48
49mod attributes;
50pub use attributes::{AttributesMatch, AttributesMismatch};
51
52mod client;
53pub use client::{EngineClient, EngineClientError};
54
55mod versions;
56pub use versions::{EngineForkchoiceVersion, EngineGetPayloadVersion, EngineNewPayloadVersion};
57
58mod state;
59pub use state::{EngineState, EngineSyncState, EngineSyncStateUpdate};
60
61mod kinds;
62pub use kinds::EngineKind;
63
64mod query;
65pub use query::{EngineQueries, EngineQueriesError, EngineQuerySender};
66
67mod metrics;
68pub use metrics::Metrics;