espresso_api/v1/
catchup.rs1use async_trait::async_trait;
4use espresso_types::{
5 AccountQueryData, BlockMerkleTree, FeeAccount, FeeMerkleTree, Leaf2, SeqTypes,
6 v0_3::{ChainConfig, RewardAccountQueryDataV1, RewardAccountV1, RewardMerkleTreeV1},
7 v0_4::RewardAccountQueryDataV2,
8};
9use hotshot_types::simple_certificate::{Certificate2, LightClientStateUpdateCertificateV2};
10use jf_merkle_tree_compat::MerkleTreeScheme;
11
12#[async_trait]
13pub trait CatchupApi {
14 async fn get_account(
15 &self,
16 height: u64,
17 view: u64,
18 address: String,
19 ) -> anyhow::Result<AccountQueryData>;
20
21 async fn get_accounts(
22 &self,
23 height: u64,
24 view: u64,
25 accounts: Vec<FeeAccount>,
26 ) -> anyhow::Result<FeeMerkleTree>;
27
28 async fn get_blocks_frontier(
29 &self,
30 height: u64,
31 view: u64,
32 ) -> anyhow::Result<<BlockMerkleTree as MerkleTreeScheme>::MembershipProof>;
33
34 async fn get_chain_config(&self, commitment: String) -> anyhow::Result<ChainConfig>;
35
36 async fn get_leaf_chain(&self, height: u64) -> anyhow::Result<Vec<Leaf2>>;
37
38 async fn get_cert2(&self, height: u64) -> anyhow::Result<Certificate2<SeqTypes>>;
39
40 async fn get_reward_account_v1(
41 &self,
42 height: u64,
43 view: u64,
44 address: String,
45 ) -> anyhow::Result<RewardAccountQueryDataV1>;
46
47 async fn get_reward_accounts_v1(
48 &self,
49 height: u64,
50 view: u64,
51 accounts: Vec<RewardAccountV1>,
52 ) -> anyhow::Result<RewardMerkleTreeV1>;
53
54 async fn get_reward_account_v2(
55 &self,
56 height: u64,
57 view: u64,
58 address: String,
59 ) -> anyhow::Result<RewardAccountQueryDataV2>;
60
61 async fn get_reward_merkle_tree_v2(
62 &self,
63 height: u64,
64 view: u64,
65 ) -> anyhow::Result<serde_json::Value>;
66
67 async fn get_state_cert(
68 &self,
69 epoch: u64,
70 ) -> anyhow::Result<LightClientStateUpdateCertificateV2<SeqTypes>>;
71}