use rustc_hash::FxHashMap;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct BlockTrace {
pub block_hash: String,
pub parent_hash: String,
pub tracing_targets: String,
pub storage_keys: String,
pub methods: String,
pub spans: Vec<Span>,
pub events: Vec<Event>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Event {
pub target: String,
pub data: Data,
pub parent_id: Option<u64>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Span {
pub id: u64,
pub parent_id: Option<u64>,
pub name: String,
pub target: String,
pub wasm: bool,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Data {
pub string_values: FxHashMap<String, String>,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TraceError {
pub error: String,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub enum TraceBlockResponse {
TraceError(TraceError),
BlockTrace(BlockTrace),
}