use alloy_eips::eip7685::{Requests, RequestsOrHash};
use alloy_primitives::B256;
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
pub struct PraguePayloadFields {
pub requests: RequestsOrHash,
}
impl PraguePayloadFields {
pub fn new(requests: impl Into<RequestsOrHash>) -> Self {
Self { requests: requests.into() }
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
pub struct MaybePraguePayloadFields {
fields: Option<PraguePayloadFields>,
}
impl MaybePraguePayloadFields {
pub const fn none() -> Self {
Self { fields: None }
}
pub fn into_inner(self) -> Option<PraguePayloadFields> {
self.fields
}
pub fn requests(&self) -> Option<&Requests> {
self.fields.as_ref().and_then(|fields| fields.requests.requests())
}
pub fn requests_hash(&self) -> Option<B256> {
self.fields.as_ref().map(|fields| fields.requests.requests_hash())
}
pub const fn as_ref(&self) -> Option<&PraguePayloadFields> {
self.fields.as_ref()
}
}
impl From<PraguePayloadFields> for MaybePraguePayloadFields {
#[inline]
fn from(fields: PraguePayloadFields) -> Self {
Self { fields: Some(fields) }
}
}
impl From<Option<PraguePayloadFields>> for MaybePraguePayloadFields {
#[inline]
fn from(fields: Option<PraguePayloadFields>) -> Self {
Self { fields }
}
}