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