kabu_types_events/
node.rs

1use crate::Message;
2use alloy_consensus::BlockHeader;
3use alloy_primitives::TxHash;
4use kabu_types_blockchain::{GethStateUpdateVec, MempoolTx};
5use reth_ethereum_primitives::EthPrimitives;
6use reth_node_types::NodePrimitives;
7
8#[derive(Clone, Debug)]
9pub struct NodeMempoolDataUpdate<N: NodePrimitives> {
10    pub tx_hash: TxHash,
11    pub mempool_tx: MempoolTx<N>,
12}
13
14#[derive(Clone, Debug)]
15pub struct BlockUpdate<N: NodePrimitives = EthPrimitives> {
16    pub block: N::Block,
17}
18
19#[derive(Clone, Debug)]
20pub struct BlockStateUpdate<N: NodePrimitives = EthPrimitives> {
21    pub block_header: N::BlockHeader,
22    pub state_update: GethStateUpdateVec,
23}
24
25#[derive(Clone, Debug)]
26pub struct BlockHeaderEventData<N: NodePrimitives = EthPrimitives> {
27    pub header: N::BlockHeader,
28    pub next_block_number: u64,
29    pub next_block_timestamp: u64,
30}
31
32pub type MessageMempoolDataUpdate<N> = Message<NodeMempoolDataUpdate<N>>;
33
34pub type MessageBlockHeader<N = EthPrimitives> = Message<BlockHeaderEventData<N>>;
35pub type MessageBlock<N = EthPrimitives> = Message<BlockUpdate<N>>;
36pub type MessageBlockStateUpdate<N = EthPrimitives> = Message<BlockStateUpdate<N>>;
37
38impl<N: NodePrimitives> BlockHeaderEventData<N>
39where
40    N::BlockHeader: BlockHeader,
41{
42    pub fn new(header: N::BlockHeader) -> Self {
43        let next_block_number = header.number() + 1;
44        let next_block_timestamp = header.timestamp() + 12;
45        Self { header, next_block_number, next_block_timestamp }
46    }
47}