Skip to main content

espresso_api/v1/
catchup.rs

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