reth_storage_api/ommers.rs
1use crate::HeaderProvider;
2use alloy_eips::BlockHashOrNumber;
3use reth_storage_errors::provider::ProviderResult;
4
5/// Client trait for fetching ommers.
6pub trait OmmersProvider: HeaderProvider + Send + Sync {
7 /// Returns the ommers/uncle headers of the given block from the database.
8 ///
9 /// Returns `None` if block is not found.
10 fn ommers(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Vec<Self::Header>>>;
11}
12
13impl<T: OmmersProvider> OmmersProvider for std::sync::Arc<T> {
14 fn ommers(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Vec<Self::Header>>> {
15 T::ommers(self, id)
16 }
17}
18
19impl<T: OmmersProvider> OmmersProvider for &T {
20 fn ommers(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Vec<Self::Header>>> {
21 T::ommers(self, id)
22 }
23}