alloy_rpc_types_engine/
bogota.rs1use alloc::vec::Vec;
5use alloy_primitives::Bytes;
6
7pub const MAX_BYTES_PER_INCLUSION_LIST: u64 = 8192;
12
13#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
21pub struct BogotaPayloadFields {
22 pub inclusion_list_transactions: Vec<Bytes>,
24}
25
26impl BogotaPayloadFields {
27 pub const fn new(inclusion_list_transactions: Vec<Bytes>) -> Self {
29 Self { inclusion_list_transactions }
30 }
31}
32
33impl From<Vec<Bytes>> for BogotaPayloadFields {
34 fn from(inclusion_list_transactions: Vec<Bytes>) -> Self {
35 Self::new(inclusion_list_transactions)
36 }
37}
38
39#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
41#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
42#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
43pub struct MaybeBogotaPayloadFields {
44 fields: Option<BogotaPayloadFields>,
45}
46
47impl MaybeBogotaPayloadFields {
48 pub const fn none() -> Self {
50 Self { fields: None }
51 }
52
53 pub const fn is_none(&self) -> bool {
55 self.fields.is_none()
56 }
57
58 pub fn into_inner(self) -> Option<BogotaPayloadFields> {
60 self.fields
61 }
62
63 pub fn inclusion_list_transactions(&self) -> Option<&Vec<Bytes>> {
65 self.fields.as_ref().map(|fields| &fields.inclusion_list_transactions)
66 }
67
68 pub const fn as_ref(&self) -> Option<&BogotaPayloadFields> {
70 self.fields.as_ref()
71 }
72}
73
74impl From<BogotaPayloadFields> for MaybeBogotaPayloadFields {
75 fn from(fields: BogotaPayloadFields) -> Self {
76 Self { fields: Some(fields) }
77 }
78}
79
80impl From<Option<BogotaPayloadFields>> for MaybeBogotaPayloadFields {
81 fn from(fields: Option<BogotaPayloadFields>) -> Self {
82 Self { fields }
83 }
84}
85
86#[cfg(test)]
87mod tests {
88 use super::*;
89
90 #[test]
91 fn bogota_payload_fields_conversions() {
92 let transactions = vec![Bytes::from_static(&[0x01, 0x02])];
93 let fields: BogotaPayloadFields = transactions.clone().into();
94 assert_eq!(fields.inclusion_list_transactions, transactions);
95
96 let maybe_fields: MaybeBogotaPayloadFields = fields.into();
97 assert_eq!(maybe_fields.inclusion_list_transactions(), Some(&transactions));
98 }
99}