tempo_alloy/rpc/
header.rs1use alloy_consensus::BlockHeader;
2use alloy_network::primitives::HeaderResponse;
3use alloy_primitives::{Address, B64, B256, BlockHash, Bloom, Bytes, U256};
4use alloy_rpc_types_eth::Header;
5use serde::{Deserialize, Serialize};
6use tempo_primitives::TempoHeader;
7
8#[derive(Debug, Clone, Serialize, Deserialize, derive_more::Deref, derive_more::DerefMut)]
10#[serde(rename_all = "camelCase")]
11pub struct TempoHeaderResponse {
12 #[serde(flatten)]
14 #[deref]
15 #[deref_mut]
16 pub inner: Header<TempoHeader>,
17
18 #[serde(with = "alloy_serde::quantity")]
20 pub timestamp_millis: u64,
21}
22
23impl BlockHeader for TempoHeaderResponse {
24 fn parent_hash(&self) -> B256 {
25 self.inner.parent_hash()
26 }
27
28 fn ommers_hash(&self) -> B256 {
29 self.inner.ommers_hash()
30 }
31
32 fn beneficiary(&self) -> Address {
33 self.inner.beneficiary()
34 }
35
36 fn state_root(&self) -> B256 {
37 self.inner.state_root()
38 }
39
40 fn transactions_root(&self) -> B256 {
41 self.inner.transactions_root()
42 }
43
44 fn receipts_root(&self) -> B256 {
45 self.inner.receipts_root()
46 }
47
48 fn withdrawals_root(&self) -> Option<B256> {
49 self.inner.withdrawals_root()
50 }
51
52 fn logs_bloom(&self) -> Bloom {
53 self.inner.logs_bloom()
54 }
55
56 fn difficulty(&self) -> U256 {
57 self.inner.difficulty()
58 }
59
60 fn number(&self) -> u64 {
61 self.inner.number()
62 }
63
64 fn gas_limit(&self) -> u64 {
65 self.inner.gas_limit()
66 }
67
68 fn gas_used(&self) -> u64 {
69 self.inner.gas_used()
70 }
71
72 fn timestamp(&self) -> u64 {
73 self.inner.timestamp()
74 }
75
76 fn mix_hash(&self) -> Option<B256> {
77 self.inner.mix_hash()
78 }
79
80 fn nonce(&self) -> Option<B64> {
81 self.inner.nonce()
82 }
83
84 fn base_fee_per_gas(&self) -> Option<u64> {
85 self.inner.base_fee_per_gas()
86 }
87
88 fn blob_gas_used(&self) -> Option<u64> {
89 self.inner.blob_gas_used()
90 }
91
92 fn excess_blob_gas(&self) -> Option<u64> {
93 self.inner.excess_blob_gas()
94 }
95
96 fn parent_beacon_block_root(&self) -> Option<B256> {
97 self.inner.parent_beacon_block_root()
98 }
99
100 fn requests_hash(&self) -> Option<B256> {
101 self.inner.requests_hash()
102 }
103
104 fn extra_data(&self) -> &Bytes {
105 self.inner.extra_data()
106 }
107}
108
109impl HeaderResponse for TempoHeaderResponse {
110 fn hash(&self) -> BlockHash {
111 self.inner.hash()
112 }
113}
114
115impl AsRef<TempoHeader> for TempoHeaderResponse {
116 fn as_ref(&self) -> &TempoHeader {
117 &self.inner
118 }
119}