reth_provider/traits/
full.rs

1//! Helper provider traits to encapsulate all provider traits for simplicity.
2
3use crate::{
4    AccountReader, BlockReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader,
5    DatabaseProviderFactory, HashedPostStateProvider, PruneCheckpointReader,
6    RocksDBProviderFactory, StageCheckpointReader, StateProviderFactory, StateReader,
7    StaticFileProviderFactory,
8};
9use reth_chain_state::{
10    CanonStateSubscriptions, ForkChoiceSubscriptions, PersistedBlockSubscriptions,
11};
12use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
13use reth_storage_api::{NodePrimitivesProvider, StorageChangeSetReader};
14use std::fmt::Debug;
15
16/// Helper trait to unify all provider traits for simplicity.
17pub trait FullProvider<N: NodeTypesWithDB>:
18    DatabaseProviderFactory<
19        DB = N::DB,
20        Provider: BlockReader
21                      + StageCheckpointReader
22                      + PruneCheckpointReader
23                      + ChangeSetReader
24                      + StorageChangeSetReader,
25    > + NodePrimitivesProvider<Primitives = N::Primitives>
26    + StaticFileProviderFactory<Primitives = N::Primitives>
27    + RocksDBProviderFactory
28    + BlockReaderIdExt<
29        Transaction = TxTy<N>,
30        Block = BlockTy<N>,
31        Receipt = ReceiptTy<N>,
32        Header = HeaderTy<N>,
33    > + AccountReader
34    + StateProviderFactory
35    + StateReader
36    + HashedPostStateProvider
37    + ChainSpecProvider<ChainSpec = N::ChainSpec>
38    + ChangeSetReader
39    + StorageChangeSetReader
40    + CanonStateSubscriptions
41    + ForkChoiceSubscriptions<Header = HeaderTy<N>>
42    + PersistedBlockSubscriptions
43    + StageCheckpointReader
44    + Clone
45    + Debug
46    + Unpin
47    + 'static
48{
49}
50
51impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
52    T: DatabaseProviderFactory<
53            DB = N::DB,
54            Provider: BlockReader
55                          + StageCheckpointReader
56                          + PruneCheckpointReader
57                          + ChangeSetReader
58                          + StorageChangeSetReader,
59        > + NodePrimitivesProvider<Primitives = N::Primitives>
60        + StaticFileProviderFactory<Primitives = N::Primitives>
61        + RocksDBProviderFactory
62        + BlockReaderIdExt<
63            Transaction = TxTy<N>,
64            Block = BlockTy<N>,
65            Receipt = ReceiptTy<N>,
66            Header = HeaderTy<N>,
67        > + AccountReader
68        + StateProviderFactory
69        + StateReader
70        + HashedPostStateProvider
71        + ChainSpecProvider<ChainSpec = N::ChainSpec>
72        + ChangeSetReader
73        + StorageChangeSetReader
74        + CanonStateSubscriptions
75        + ForkChoiceSubscriptions<Header = HeaderTy<N>>
76        + PersistedBlockSubscriptions
77        + StageCheckpointReader
78        + Clone
79        + Debug
80        + Unpin
81        + 'static
82{
83}