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}