kabu_node_reth_api/
traits.rs

1use reth_chain_state::CanonStateSubscriptions;
2use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
3use reth_provider::{
4    BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, ChainSpecProvider, DatabaseProviderFactory, HeaderProvider,
5    NodePrimitivesProvider, ReceiptProvider, StateProviderFactory, TransactionsProvider,
6};
7use reth_storage_api::{BlockBodyIndicesProvider, BlockReaderIdExt, CanonChainTracker, ReceiptProviderIdExt};
8use std::fmt::Debug;
9
10/// A trait that matches exactly what `reth_storage_rpc_provider::RpcBlockchainProvider` implements as minimum requirements.
11/// This provides all the necessary blockchain access methods for Kabu components.
12pub trait KabuRethFullProvider<N: NodeTypesWithDB>:
13    // Block and header reading
14    BlockHashReader
15    + BlockNumReader
16    + BlockIdReader
17    + HeaderProvider
18    + BlockBodyIndicesProvider
19    + BlockReader
20    + BlockReaderIdExt<
21        Transaction = TxTy<N>,
22        Block = BlockTy<N>,
23        Receipt = ReceiptTy<N>,
24        Header = HeaderTy<N>,
25    >
26    // Receipt and transaction access
27    + ReceiptProvider
28    + ReceiptProviderIdExt
29    + TransactionsProvider
30    // State access
31    + StateProviderFactory
32    + DatabaseProviderFactory<DB = N::DB>
33    // Chain tracking and subscriptions
34    + CanonChainTracker
35    + CanonStateSubscriptions
36    // Node configuration
37    + NodePrimitivesProvider<Primitives = N::Primitives>
38    + ChainSpecProvider<ChainSpec = N::ChainSpec>
39    // Base requirements
40    + Clone
41    + Debug
42    + Send
43    + Sync
44    + 'static
45{
46}
47
48/// Blanket implementation for any type that implements all the required traits
49impl<T, N> KabuRethFullProvider<N> for T
50where
51    N: NodeTypesWithDB,
52    T: BlockHashReader
53        + BlockNumReader
54        + BlockIdReader
55        + HeaderProvider
56        + BlockBodyIndicesProvider
57        + BlockReader
58        + BlockReaderIdExt<Transaction = TxTy<N>, Block = BlockTy<N>, Receipt = ReceiptTy<N>, Header = HeaderTy<N>>
59        + ReceiptProvider
60        + ReceiptProviderIdExt
61        + TransactionsProvider
62        + StateProviderFactory
63        + DatabaseProviderFactory<DB = N::DB>
64        + CanonChainTracker
65        + CanonStateSubscriptions
66        + NodePrimitivesProvider<Primitives = N::Primitives>
67        + ChainSpecProvider<ChainSpec = N::ChainSpec>
68        + Clone
69        + Debug
70        + Send
71        + Sync
72        + 'static,
73{
74}