espresso_api/v1/
catchup.rs1use async_trait::async_trait;
4use serde::Serialize;
5
6#[async_trait]
7pub trait CatchupApi {
8 type FeeAccount: serde::de::DeserializeOwned + Send + Sync + 'static;
9 type RewardAccountV1: serde::de::DeserializeOwned + Send + Sync + 'static;
10 type RewardAccountV2: serde::de::DeserializeOwned + Send + Sync + 'static;
11
12 type AccountQueryData: Serialize + Send + Sync + 'static;
13 type FeeMerkleTree: Serialize + Send + Sync + 'static;
14 type BlocksFrontier: Serialize + Send + Sync + 'static;
15 type ChainConfig: Serialize + Send + Sync + 'static;
16 type LeafChain: Serialize + Send + Sync + 'static;
17 type Cert2: Serialize + Send + Sync + 'static;
18 type RewardAccountQueryDataV1: Serialize + Send + Sync + 'static;
19 type RewardMerkleTreeV1: Serialize + Send + Sync + 'static;
20 type RewardAccountQueryDataV2: Serialize + Send + Sync + 'static;
21 type RewardMerkleTreeV2Data: Serialize + Send + Sync + 'static;
22 type StateCert: Serialize + Send + Sync + 'static;
23
24 async fn get_account(
25 &self,
26 height: u64,
27 view: u64,
28 address: String,
29 ) -> anyhow::Result<Self::AccountQueryData>;
30
31 async fn get_accounts(
32 &self,
33 height: u64,
34 view: u64,
35 accounts: Vec<Self::FeeAccount>,
36 ) -> anyhow::Result<Self::FeeMerkleTree>;
37
38 async fn get_blocks_frontier(
39 &self,
40 height: u64,
41 view: u64,
42 ) -> anyhow::Result<Self::BlocksFrontier>;
43
44 async fn get_chain_config(&self, commitment: String) -> anyhow::Result<Self::ChainConfig>;
45
46 async fn get_leaf_chain(&self, height: u64) -> anyhow::Result<Self::LeafChain>;
47
48 async fn get_cert2(&self, height: u64) -> anyhow::Result<Self::Cert2>;
49
50 async fn get_reward_account_v1(
51 &self,
52 height: u64,
53 view: u64,
54 address: String,
55 ) -> anyhow::Result<Self::RewardAccountQueryDataV1>;
56
57 async fn get_reward_accounts_v1(
58 &self,
59 height: u64,
60 view: u64,
61 accounts: Vec<Self::RewardAccountV1>,
62 ) -> anyhow::Result<Self::RewardMerkleTreeV1>;
63
64 async fn get_reward_account_v2(
65 &self,
66 height: u64,
67 view: u64,
68 address: String,
69 ) -> anyhow::Result<Self::RewardAccountQueryDataV2>;
70
71 async fn get_reward_merkle_tree_v2(
72 &self,
73 height: u64,
74 view: u64,
75 ) -> anyhow::Result<Self::RewardMerkleTreeV2Data>;
76
77 async fn get_state_cert(&self, epoch: u64) -> anyhow::Result<Self::StateCert>;
78}