1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::collections::HashMap;
4
5#[non_exhaustive]
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub enum StreamEvent {
9 GraphStart { graph_name: Option<String> },
11 GraphEnd { graph_name: Option<String> },
13 NodeStart { node: String },
15 NodeEnd { node: String },
17 StateUpdate {
19 node: String,
20 updates: HashMap<String, Value>,
21 },
22 SuperstepStart { step: usize, nodes: Vec<String> },
24 SuperstepEnd { step: usize },
26 Interrupt { node: String, value: Option<Value> },
28 Custom(Value),
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
34pub enum StreamMode {
35 Values,
37 Updates,
39 #[default]
41 Events,
42}