alloy_rpc_types_engine/
prague.rs1use alloy_eips::eip7685::{Requests, RequestsOrHash};
5use alloy_primitives::B256;
6
7#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
12pub struct PraguePayloadFields {
13 pub requests: RequestsOrHash,
15}
16
17impl PraguePayloadFields {
18 pub fn new(requests: impl Into<RequestsOrHash>) -> Self {
20 Self { requests: requests.into() }
21 }
22}
23
24#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
28pub struct MaybePraguePayloadFields {
29 fields: Option<PraguePayloadFields>,
30}
31
32impl MaybePraguePayloadFields {
33 pub const fn none() -> Self {
35 Self { fields: None }
36 }
37
38 pub fn into_inner(self) -> Option<PraguePayloadFields> {
40 self.fields
41 }
42
43 pub fn requests(&self) -> Option<&Requests> {
45 self.fields.as_ref().and_then(|fields| fields.requests.requests())
46 }
47
48 pub fn requests_hash(&self) -> Option<B256> {
54 self.fields.as_ref().map(|fields| fields.requests.requests_hash())
55 }
56
57 pub const fn as_ref(&self) -> Option<&PraguePayloadFields> {
59 self.fields.as_ref()
60 }
61}
62
63impl From<PraguePayloadFields> for MaybePraguePayloadFields {
64 #[inline]
65 fn from(fields: PraguePayloadFields) -> Self {
66 Self { fields: Some(fields) }
67 }
68}
69
70impl From<Option<PraguePayloadFields>> for MaybePraguePayloadFields {
71 #[inline]
72 fn from(fields: Option<PraguePayloadFields>) -> Self {
73 Self { fields }
74 }
75}