extern crate alloc;
use alloc::{string::String, vec::Vec};
use serde::{Deserialize, Serialize};
use zeroize::{Zeroize, ZeroizeOnDrop};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FiveDimCoord {
pub spatial: f64,
pub temporal: f64,
pub probabilistic: f64,
pub quantum: f64,
pub chaotic: f64,
}
impl FiveDimCoord {
pub fn zero() -> Self {
Self { spatial: 0.0, temporal: 0.0, probabilistic: 0.0, quantum: 0.0, chaotic: 0.0 }
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HypergraphVertex {
pub id: String,
pub coord: FiveDimCoord,
pub commitment: String,
pub expiry_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Hyperedge {
pub id: String,
pub vertices: Vec<String>,
pub kk_metric: f64,
pub chsh_value: f64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ProofScheme {
Snark,
Stark,
Hybrid,
Bulletproofs,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrivacyProof {
pub proof_bytes: String,
pub public_inputs: String,
pub scheme: ProofScheme,
pub security_bits: u32,
pub proof_size: usize,
pub chsh_value: f64,
pub lyapunov: f64,
}
impl PrivacyProof {
pub fn is_non_local(&self) -> bool {
self.chsh_value > 2.8
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChaosTelemetry {
pub lyapunov: f64,
pub h_min: f64,
pub passed: bool,
pub attractor: AttractorKind,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum AttractorKind {
Chua,
Rossler,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DpMechanism {
Laplace,
Gaussian,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DpNoiseFrame {
pub renyi_alpha: u32,
pub bound: f64,
pub mechanism: DpMechanism,
pub epsilon: f64,
pub noise_scale: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrivacyTuple {
pub subject: String,
pub predicate: String,
pub object: Vec<u8>,
pub proof: PrivacyProof,
pub expiry_ms: u64,
pub anchor: Option<String>,
}
impl PrivacyTuple {
pub fn is_expired(&self, now_ms: u64) -> bool {
self.expiry_ms > 0 && now_ms > self.expiry_ms
}
}
#[derive(Debug, Clone, Zeroize, ZeroizeOnDrop)]
pub struct EphemeralKey {
pub shared_secret: [u8; 32],
pub chain_key: [u8; 32],
pub created_ms: u64,
pub expiry_ms: u64,
}
impl EphemeralKey {
pub fn is_expired(&self, now_ms: u64) -> bool {
now_ms.saturating_sub(self.created_ms) >= self.expiry_ms
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GenomicToken {
pub commitment: String,
pub trait_proof: PrivacyProof,
pub tuple_id: String,
pub dp_epsilon: f64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum NodeKind {
Mixnet,
Query,
Stake,
Index,
Cdn,
Governance,
KeyManagement,
Micro,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MeshNode {
pub id: String,
pub kind: NodeKind,
pub endpoint: String,
pub stake: u64,
pub pubkey: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SphinxPacket {
pub payload: Vec<u8>,
pub hops: u8,
pub is_decoy: bool,
pub chaos_seed: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrivacyIcosuple {
pub manifold_tensor: Vec<u8>,
pub proof_bundle: Vec<u8>,
pub chaos_state: Vec<u8>,
pub compressed: bool,
pub signature: String,
}
impl PrivacyIcosuple {
pub const MAX_BYTES: usize = 8192;
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CapabilityDescriptor {
pub node_id: String,
pub capabilities: Vec<PrivacyCapability>,
pub nonce: String,
pub signature: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrivacyCapability {
pub kind: CapabilityKind,
pub scheme: String,
pub security_level: u32,
pub recursion: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum CapabilityKind {
Fhe,
Zk,
Dp,
Mpc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptedBallot {
pub voter_commitment: String,
pub encrypted_vote: Vec<u8>,
pub zk_proof: PrivacyProof,
pub stake_weight: u64,
pub timestamp_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VoteOutcome {
pub proposal_id: String,
pub passed: bool,
pub tally: u64,
pub total_stake: u64,
pub proof: PrivacyProof,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntropyFrame {
pub bytes: Vec<u8>,
pub hash_5dqeh: String,
pub h_min: f64,
pub source: EntropySource,
pub proof: PrivacyProof,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum EntropySource {
PhysicalQrng,
VirtualChaos,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PosetEvent {
pub id: String,
pub dependencies: Vec<String>,
pub payload_hash: String,
pub timestamp_ms: u64,
pub zk_merge: Option<PrivacyProof>,
}
#[cfg(feature = "std")]
pub fn unix_now_ms() -> u64 {
use std::time::{SystemTime, UNIX_EPOCH};
SystemTime::now()
.duration_since(UNIX_EPOCH)
.map(|d| d.as_millis() as u64)
.unwrap_or(0)
}
#[cfg(not(feature = "std"))]
pub fn unix_now_ms() -> u64 {
0 }