mls_spec/group/
commits.rs1use crate::{
2 group::{ProposalRef, proposals::Proposal},
3 tree::UpdatePath,
4};
5
6#[derive(
19 Debug,
20 Clone,
21 Copy,
22 PartialEq,
23 Eq,
24 tls_codec::TlsSerialize,
25 tls_codec::TlsDeserialize,
26 tls_codec::TlsSize,
27)]
28#[cfg_attr(
29 feature = "serde",
30 derive(serde_repr::Serialize_repr, serde_repr::Deserialize_repr)
31)]
32#[repr(u8)]
33pub enum ProposalOrRefType {
34 Reserved = 0x00,
35 Proposal = 0x01,
36 Reference = 0x02,
37}
38
39#[derive(
53 Debug,
54 Clone,
55 PartialEq,
56 Eq,
57 tls_codec::TlsSerialize,
58 tls_codec::TlsDeserialize,
59 tls_codec::TlsSize,
60)]
61#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
62#[repr(u8)]
63#[allow(clippy::large_enum_variant)]
64pub enum ProposalOrRef {
65 #[tls_codec(discriminant = "ProposalOrRefType::Proposal")]
66 Proposal(Proposal),
67 #[tls_codec(discriminant = "ProposalOrRefType::Reference")]
68 Reference(ProposalRef),
69}
70
71#[derive(
85 Debug,
86 Clone,
87 PartialEq,
88 Eq,
89 tls_codec::TlsSerialize,
90 tls_codec::TlsDeserialize,
91 tls_codec::TlsSize,
92)]
93#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
94pub struct Commit {
95 pub proposals: Vec<ProposalOrRef>,
96 pub path: Option<UpdatePath>,
97}