pub trait ReceiptProvider {
type Receipt: Receipt;
// Required methods
fn receipt(&self, id: u64) -> Result<Option<Self::Receipt>, ProviderError>;
fn receipt_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<Self::Receipt>, ProviderError>;
fn receipts_by_block(
&self,
block: HashOrNumber,
) -> Result<Option<Vec<Self::Receipt>>, ProviderError>;
fn receipts_by_tx_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<Self::Receipt>, ProviderError>;
fn receipts_by_block_range(
&self,
block_range: RangeInclusive<u64>,
) -> Result<Vec<Vec<Self::Receipt>>, ProviderError>;
}Expand description
Client trait for fetching receipt data.
Required Associated Types§
Required Methods§
Sourcefn receipt(&self, id: u64) -> Result<Option<Self::Receipt>, ProviderError>
fn receipt(&self, id: u64) -> Result<Option<Self::Receipt>, ProviderError>
Get receipt by transaction number
Returns None if the transaction is not found.
Sourcefn receipt_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<Self::Receipt>, ProviderError>
fn receipt_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<Self::Receipt>, ProviderError>
Get receipt by transaction hash.
Returns None if the transaction is not found.
Sourcefn receipts_by_block(
&self,
block: HashOrNumber,
) -> Result<Option<Vec<Self::Receipt>>, ProviderError>
fn receipts_by_block( &self, block: HashOrNumber, ) -> Result<Option<Vec<Self::Receipt>>, ProviderError>
Get receipts by block num or hash.
Returns None if the block is not found.
Sourcefn receipts_by_tx_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<Self::Receipt>, ProviderError>
fn receipts_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<Self::Receipt>, ProviderError>
Get receipts by tx range.
Sourcefn receipts_by_block_range(
&self,
block_range: RangeInclusive<u64>,
) -> Result<Vec<Vec<Self::Receipt>>, ProviderError>
fn receipts_by_block_range( &self, block_range: RangeInclusive<u64>, ) -> Result<Vec<Vec<Self::Receipt>>, ProviderError>
Get receipts by block range.
Returns a vector where each element contains all receipts for a block in the range.
The outer vector index corresponds to blocks in the range (block_range.start() + index).
Empty blocks will have empty inner vectors.
This is more efficient than calling receipts_by_block multiple times for contiguous ranges
because it can leverage the underlying receipts_by_tx_range for the entire transaction
span.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<'a, T> ReceiptProvider for &'a Twhere
T: 'a + ReceiptProvider + ?Sized,
impl<'a, T> ReceiptProvider for &'a Twhere
T: 'a + ReceiptProvider + ?Sized,
type Receipt = <T as ReceiptProvider>::Receipt
fn receipt( &self, id: u64, ) -> Result<Option<<&'a T as ReceiptProvider>::Receipt>, ProviderError>
fn receipt_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<<&'a T as ReceiptProvider>::Receipt>, ProviderError>
fn receipts_by_block( &self, block: HashOrNumber, ) -> Result<Option<Vec<<&'a T as ReceiptProvider>::Receipt>>, ProviderError>
fn receipts_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<<&'a T as ReceiptProvider>::Receipt>, ProviderError>
fn receipts_by_block_range( &self, block_range: RangeInclusive<u64>, ) -> Result<Vec<Vec<<&'a T as ReceiptProvider>::Receipt>>, ProviderError>
Source§impl<T> ReceiptProvider for Arc<T>where
T: ReceiptProvider + ?Sized,
impl<T> ReceiptProvider for Arc<T>where
T: ReceiptProvider + ?Sized,
type Receipt = <T as ReceiptProvider>::Receipt
fn receipt( &self, id: u64, ) -> Result<Option<<Arc<T> as ReceiptProvider>::Receipt>, ProviderError>
fn receipt_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<<Arc<T> as ReceiptProvider>::Receipt>, ProviderError>
fn receipts_by_block( &self, block: HashOrNumber, ) -> Result<Option<Vec<<Arc<T> as ReceiptProvider>::Receipt>>, ProviderError>
fn receipts_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<<Arc<T> as ReceiptProvider>::Receipt>, ProviderError>
fn receipts_by_block_range( &self, block_range: RangeInclusive<u64>, ) -> Result<Vec<Vec<<Arc<T> as ReceiptProvider>::Receipt>>, ProviderError>
Implementors§
Source§impl<C, N> ReceiptProvider for NoopProvider<C, N>
impl<C, N> ReceiptProvider for NoopProvider<C, N>
Source§impl<N: NodePrimitives<SignedTx: Decompress + SignedTransaction, Receipt: Decompress>> ReceiptProvider for StaticFileJarProvider<'_, N>
impl<N: NodePrimitives<SignedTx: Decompress + SignedTransaction, Receipt: Decompress>> ReceiptProvider for StaticFileJarProvider<'_, N>
Source§impl<N: NodePrimitives<SignedTx: Value + SignedTransaction, Receipt: Value>> ReceiptProvider for StaticFileProvider<N>
impl<N: NodePrimitives<SignedTx: Value + SignedTransaction, Receipt: Value>> ReceiptProvider for StaticFileProvider<N>
Source§impl<N: ProviderNodeTypes> ReceiptProvider for BlockchainProvider<N>
impl<N: ProviderNodeTypes> ReceiptProvider for BlockchainProvider<N>
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
Source§impl<N: ProviderNodeTypes> ReceiptProvider for ProviderFactory<N>
impl<N: ProviderNodeTypes> ReceiptProvider for ProviderFactory<N>
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
Source§impl<T, ChainSpec> ReceiptProvider for MockEthProvider<T, ChainSpec>
Available on crate features test-utils only.
impl<T, ChainSpec> ReceiptProvider for MockEthProvider<T, ChainSpec>
test-utils only.