use kernel::{Address, B3Hash, Locator, RunId};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum PrefixSlot {
City,
Building,
Resident,
Run,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct PrefixSource {
pub addr: Address,
pub kept: u64,
pub dropped: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct PrefixSegment {
pub slot: PrefixSlot,
pub hash: B3Hash,
pub bytes: u64,
pub text: String,
pub stored: bool,
pub sources: Vec<PrefixSource>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct PrefixAnswer {
pub run: RunId,
pub segments: Vec<PrefixSegment>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct ContentAnswer {
pub locator: Locator,
pub text: String,
pub bytes: u64,
pub truncated: bool,
pub binary: bool,
}