Skip to main content

espresso_api/v1/
catchup.rs

1//! V1 catchup API.
2
3use 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}