Skip to main content

espresso_api/v1/
catchup.rs

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