hdp_primitives/solidity_types/
traits.rs

1use alloy::primitives::B256;
2use anyhow::Result;
3
4use crate::task::datalake::datalake_type::DatalakeType;
5
6/// Define the common trait for datalake
7///
8/// Common for both BlockSampled and TransactionsInBlock
9pub trait DatalakeCodecs {
10    fn get_datalake_type(&self) -> DatalakeType;
11    fn encode(&self) -> Result<Vec<u8>>;
12    fn commit(&self) -> B256;
13    fn decode(encoded: &[u8]) -> Result<Self>
14    where
15        Self: Sized;
16}
17
18pub trait Codecs {
19    fn encode(&self) -> Result<Vec<u8>>;
20    fn decode(encoded: &[u8]) -> Result<Self>
21    where
22        Self: Sized;
23}
24
25/// Codecs for [`DatalakeCompute`]
26pub trait DatalakeComputeCodecs {
27    fn decode(encoded_datalake: &[u8], encoded_compute: &[u8]) -> Result<Self>
28    where
29        Self: std::marker::Sized;
30    fn encode(&self) -> Result<Vec<u8>>;
31    fn commit(&self) -> B256;
32}
33
34/// Codecs for [`BatchedDatalakeCompute`]
35pub trait BatchedDatalakeComputeCodecs {
36    fn decode(encoded_datalake: &[u8], encoded_compute: &[u8]) -> Result<Self>
37    where
38        Self: std::marker::Sized;
39    fn encode(&self) -> Result<(Vec<u8>, Vec<u8>)>;
40}