use crate::Clock;
use cid::Cid;
use serde::{Deserialize, Serialize};
use std::collections::BTreeSet;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Entry {
#[serde(rename = "i", with = "serde_bytes")]
pub id: Vec<u8>,
#[serde(rename = "p")]
pub payload: Cid,
#[serde(rename = "n")]
pub next: BTreeSet<Cid>,
#[serde(rename = "r", default, skip_serializing_if = "BTreeSet::is_empty")]
pub refs: BTreeSet<Cid>,
#[serde(rename = "c")]
pub clock: Clock,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SignedEntry {
#[serde(rename = "u")]
pub identity: String,
#[serde(rename = "k", default, with = "serde_bytes", skip_serializing_if = "Option::is_none")]
pub public_key: Option<Vec<u8>>,
#[serde(rename = "s", with = "serde_bytes")]
pub signature: Vec<u8>,
#[serde(rename = "e")]
pub entry: Entry,
}