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}