hyperstack/
lib.rs

1//! # HyperStack
2//!
3//! Real-time streaming data pipelines for Solana - transform on-chain events
4//! into typed state projections.
5//!
6//! ## Features
7//!
8//! - **`interpreter`** (default) - AST transformation runtime and VM
9//! - **`macros`** (default) - Proc-macros for defining stream specifications
10//! - **`server`** (default) - WebSocket server and projection handlers
11//! - **`sdk`** - Rust client for connecting to HyperStack servers
12//!
13//! ## Quick Start
14//!
15//! ```toml
16//! [dependencies]
17//! hyperstack = "0.1"
18//! ```
19//!
20//! Or with specific features:
21//!
22//! ```toml
23//! [dependencies]
24//! hyperstack = { version = "0.1", features = ["full"] }
25//! ```
26//!
27//! ## Example
28//!
29//! ```rust,ignore
30//! use hyperstack::prelude::*;
31//!
32//! #[hyperstack(idl = "idl.json")]
33//! pub mod my_stream {
34//!     #[entity(name = "MyEntity")]
35//!     #[derive(Stream)]
36//!     struct Entity {
37//!         #[map(from = "MyAccount", field = "value")]
38//!         pub value: u64,
39//!     }
40//! }
41//! ```
42
43// Re-export interpreter (AST runtime and VM)
44#[cfg(feature = "interpreter")]
45pub use hyperstack_interpreter as interpreter;
46
47// Re-export macros
48#[cfg(feature = "macros")]
49pub use hyperstack_macros as macros;
50
51// Re-export server components
52#[cfg(feature = "server")]
53pub use hyperstack_server as server;
54
55// Re-export SDK client
56#[cfg(feature = "sdk")]
57pub use hyperstack_sdk as sdk;
58
59/// Prelude module for convenient imports
60pub mod prelude {
61    // Re-export commonly used items from interpreter
62    #[cfg(feature = "interpreter")]
63    pub use hyperstack_interpreter::{
64        ast::{SerializableStreamSpec, TypedStreamSpec},
65        compiler::MultiEntityBytecode,
66        vm::VmContext,
67        Mutation, UpdateContext,
68    };
69
70    #[cfg(feature = "macros")]
71    pub use hyperstack_macros::{hyperstack, Stream};
72
73    // Re-export server components
74    #[cfg(feature = "server")]
75    pub use hyperstack_server::{bus::BusManager, config::ServerConfig, projector::Projector};
76
77    // Re-export SDK client
78    #[cfg(feature = "sdk")]
79    pub use hyperstack_sdk::HyperStack;
80}