use crate::{
group::{ProposalRef, proposals::Proposal},
tree::UpdatePath,
};
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
tls_codec::TlsSerialize,
tls_codec::TlsDeserialize,
tls_codec::TlsSize,
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u8)]
pub enum ProposalOrRefType {
Reserved = 0x00,
Proposal = 0x01,
Reference = 0x02,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
tls_codec::TlsSerialize,
tls_codec::TlsDeserialize,
tls_codec::TlsSize,
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u8)]
#[allow(clippy::large_enum_variant)]
pub enum ProposalOrRef {
#[tls_codec(discriminant = "ProposalOrRefType::Proposal")]
Proposal(Proposal),
#[tls_codec(discriminant = "ProposalOrRefType::Reference")]
Reference(ProposalRef),
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
tls_codec::TlsSerialize,
tls_codec::TlsDeserialize,
tls_codec::TlsSize,
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Commit {
pub proposals: Vec<ProposalOrRef>,
pub path: Option<UpdatePath>,
}