espresso_api/axum/
routes.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub struct Route {
3 pub http: &'static str,
5 pub grpc: &'static str,
7 pub description: &'static str,
9 pub tag: &'static str,
11}
12
13pub mod v1 {
14 pub const REWARD_CLAIM_INPUT_ROUTE: &str =
15 "/v1/reward-state-v2/reward-claim-input/{height}/{address}";
16 pub const REWARD_BALANCE_ROUTE: &str = "/v1/reward-state-v2/reward-balance/{height}/{address}";
17 pub const LATEST_REWARD_BALANCE_ROUTE: &str =
18 "/v1/reward-state-v2/reward-balance/latest/{address}";
19 pub const REWARD_ACCOUNT_PROOF_ROUTE: &str = "/v1/reward-state-v2/proof/{height}/{address}";
20 pub const LATEST_REWARD_ACCOUNT_PROOF_ROUTE: &str =
21 "/v1/reward-state-v2/proof/latest/{address}";
22 pub const REWARD_AMOUNTS_ROUTE: &str =
23 "/v1/reward-state-v2/reward-amounts/{height}/{offset}/{limit}";
24 pub const REWARD_MERKLE_TREE_V2_ROUTE: &str =
25 "/v1/reward-state-v2/reward-merkle-tree-v2/{height}";
26
27 pub const NAMESPACE_PROOF_BY_HEIGHT_ROUTE: &str =
28 "/v1/availability/block/{height}/namespace/{namespace}";
29 pub const NAMESPACE_PROOF_BY_HASH_ROUTE: &str =
30 "/v1/availability/block/hash/{hash}/namespace/{namespace}";
31 pub const NAMESPACE_PROOF_BY_PAYLOAD_HASH_ROUTE: &str =
32 "/v1/availability/block/payload-hash/{payload-hash}/namespace/{namespace}";
33 pub const NAMESPACE_PROOF_RANGE_ROUTE: &str =
34 "/v1/availability/block/{from}/{until}/namespace/{namespace}";
35 pub const INCORRECT_ENCODING_PROOF_ROUTE: &str =
36 "/v1/availability/incorrect-encoding-proof/{block_number}/{namespace}";
37
38 pub const STATE_CERT_V1_ROUTE: &str = "/v1/availability/state-cert/{epoch}";
39 pub const STATE_CERT_V2_ROUTE: &str = "/v1/availability/state-cert-v2/{epoch}";
40
41 pub const LEAF_BY_HEIGHT_ROUTE: &str = "/v1/availability/leaf/{height}";
42 pub const LEAF_BY_HASH_ROUTE: &str = "/v1/availability/leaf/hash/{hash}";
43 pub const LEAF_RANGE_ROUTE: &str = "/v1/availability/leaf/{from}/{until}";
44
45 pub const HEADER_BY_HEIGHT_ROUTE: &str = "/v1/availability/header/{height}";
46 pub const HEADER_BY_HASH_ROUTE: &str = "/v1/availability/header/hash/{hash}";
47 pub const HEADER_BY_PAYLOAD_HASH_ROUTE: &str =
48 "/v1/availability/header/payload-hash/{payload_hash}";
49 pub const HEADER_RANGE_ROUTE: &str = "/v1/availability/header/{from}/{until}";
50
51 pub const BLOCK_BY_HEIGHT_ROUTE: &str = "/v1/availability/block/{height}";
52 pub const BLOCK_BY_HASH_ROUTE: &str = "/v1/availability/block/hash/{hash}";
53 pub const BLOCK_BY_PAYLOAD_HASH_ROUTE: &str =
54 "/v1/availability/block/payload-hash/{payload_hash}";
55 pub const BLOCK_RANGE_ROUTE: &str = "/v1/availability/block/{from}/{until}";
56
57 pub const PAYLOAD_BY_HEIGHT_ROUTE: &str = "/v1/availability/payload/{height}";
58 pub const PAYLOAD_BY_HASH_ROUTE: &str = "/v1/availability/payload/hash/{hash}";
59 pub const PAYLOAD_BY_BLOCK_HASH_ROUTE: &str =
60 "/v1/availability/payload/block-hash/{block_hash}";
61 pub const PAYLOAD_RANGE_ROUTE: &str = "/v1/availability/payload/{from}/{until}";
62
63 pub const VID_COMMON_BY_HEIGHT_ROUTE: &str = "/v1/availability/vid/common/{height}";
64 pub const VID_COMMON_BY_HASH_ROUTE: &str = "/v1/availability/vid/common/hash/{hash}";
65 pub const VID_COMMON_BY_PAYLOAD_HASH_ROUTE: &str =
66 "/v1/availability/vid/common/payload-hash/{payload_hash}";
67 pub const VID_COMMON_RANGE_ROUTE: &str = "/v1/availability/vid/common/{from}/{until}";
68
69 pub const TRANSACTION_BY_POSITION_NOPROOF_ROUTE: &str =
70 "/v1/availability/transaction/{height}/{index}/noproof";
71 pub const TRANSACTION_BY_HASH_NOPROOF_ROUTE: &str =
72 "/v1/availability/transaction/hash/{hash}/noproof";
73 pub const TRANSACTION_PROOF_BY_POSITION_ROUTE: &str =
74 "/v1/availability/transaction/{height}/{index}/proof";
75 pub const TRANSACTION_PROOF_BY_HASH_ROUTE: &str =
76 "/v1/availability/transaction/hash/{hash}/proof";
77 pub const TRANSACTION_BY_POSITION_ROUTE: &str = "/v1/availability/transaction/{height}/{index}";
78 pub const TRANSACTION_BY_HASH_ROUTE: &str = "/v1/availability/transaction/hash/{hash}";
79
80 pub const BLOCK_SUMMARY_BY_HEIGHT_ROUTE: &str = "/v1/availability/block/summary/{height}";
81 pub const BLOCK_SUMMARY_RANGE_ROUTE: &str = "/v1/availability/block/summaries/{from}/{until}";
82
83 pub const LIMITS_ROUTE: &str = "/v1/availability/limits";
84 pub const CERT2_BY_HEIGHT_ROUTE: &str = "/v1/availability/cert2/{height}";
85
86 pub const STREAM_LEAVES_ROUTE: &str = "/v1/availability/stream/leaves/{height}";
87 pub const STREAM_HEADERS_ROUTE: &str = "/v1/availability/stream/headers/{height}";
88 pub const STREAM_BLOCKS_ROUTE: &str = "/v1/availability/stream/blocks/{height}";
89 pub const STREAM_PAYLOADS_ROUTE: &str = "/v1/availability/stream/payloads/{height}";
90 pub const STREAM_VID_COMMON_ROUTE: &str = "/v1/availability/stream/vid/common/{height}";
91 pub const STREAM_TRANSACTIONS_ROUTE: &str = "/v1/availability/stream/transactions/{height}";
92 pub const STREAM_TRANSACTIONS_NS_ROUTE: &str =
93 "/v1/availability/stream/transactions/{height}/namespace/{namespace}";
94
95 pub const STREAM_NAMESPACE_PROOFS_ROUTE: &str =
96 "/v1/availability/stream/blocks/{height}/namespace/{namespace}";
97
98 pub const BLOCK_STATE_PATH_BY_HEIGHT_ROUTE: &str = "/v1/block-state/{height}/{key}";
99 pub const BLOCK_STATE_PATH_BY_COMMIT_ROUTE: &str = "/v1/block-state/commit/{commit}/{key}";
100 pub const BLOCK_STATE_HEIGHT_ROUTE: &str = "/v1/block-state/block-height";
101
102 pub const FEE_STATE_PATH_BY_HEIGHT_ROUTE: &str = "/v1/fee-state/{height}/{key}";
103 pub const FEE_STATE_PATH_BY_COMMIT_ROUTE: &str = "/v1/fee-state/commit/{commit}/{key}";
104 pub const FEE_STATE_HEIGHT_ROUTE: &str = "/v1/fee-state/block-height";
105 pub const FEE_STATE_BALANCE_LATEST_ROUTE: &str = "/v1/fee-state/fee-balance/latest/{address}";
106
107 pub const STATUS_BLOCK_HEIGHT_ROUTE: &str = "/v1/status/block-height";
108 pub const STATUS_SUCCESS_RATE_ROUTE: &str = "/v1/status/success-rate";
109 pub const STATUS_TIME_SINCE_LAST_DECIDE_ROUTE: &str = "/v1/status/time-since-last-decide";
110 pub const STATUS_METRICS_ROUTE: &str = "/v1/status/metrics";
111
112 pub const CONFIG_HOTSHOT_ROUTE: &str = "/v1/config/hotshot";
113 pub const CONFIG_ENV_ROUTE: &str = "/v1/config/env";
114 pub const CONFIG_RUNTIME_ROUTE: &str = "/v1/config/runtime";
115
116 pub const NODE_BLOCK_HEIGHT_ROUTE: &str = "/v1/node/block-height";
117
118 pub const NODE_TRANSACTIONS_COUNT_ROUTE: &str = "/v1/node/transactions/count";
119 pub const NODE_TRANSACTIONS_COUNT_TO_ROUTE: &str = "/v1/node/transactions/count/{to}";
120 pub const NODE_TRANSACTIONS_COUNT_FROM_TO_ROUTE: &str =
121 "/v1/node/transactions/count/{from}/{to}";
122 pub const NODE_TRANSACTIONS_COUNT_NS_ROUTE: &str =
123 "/v1/node/transactions/count/namespace/{namespace}";
124 pub const NODE_TRANSACTIONS_COUNT_NS_TO_ROUTE: &str =
125 "/v1/node/transactions/count/namespace/{namespace}/{to}";
126 pub const NODE_TRANSACTIONS_COUNT_NS_FROM_TO_ROUTE: &str =
127 "/v1/node/transactions/count/namespace/{namespace}/{from}/{to}";
128
129 pub const NODE_PAYLOADS_SIZE_ROUTE: &str = "/v1/node/payloads/size";
130 pub const NODE_PAYLOADS_SIZE_TO_ROUTE: &str = "/v1/node/payloads/size/{to}";
131 pub const NODE_PAYLOADS_SIZE_FROM_TO_ROUTE: &str = "/v1/node/payloads/size/{from}/{to}";
132 pub const NODE_PAYLOADS_TOTAL_SIZE_ROUTE: &str = "/v1/node/payloads/total-size";
133 pub const NODE_PAYLOADS_SIZE_NS_ROUTE: &str = "/v1/node/payloads/size/namespace/{namespace}";
134 pub const NODE_PAYLOADS_SIZE_NS_TO_ROUTE: &str =
135 "/v1/node/payloads/size/namespace/{namespace}/{to}";
136 pub const NODE_PAYLOADS_SIZE_NS_FROM_TO_ROUTE: &str =
137 "/v1/node/payloads/size/namespace/{namespace}/{from}/{to}";
138
139 pub const NODE_VID_SHARE_BY_HEIGHT_ROUTE: &str = "/v1/node/vid/share/{height}";
140 pub const NODE_VID_SHARE_BY_HASH_ROUTE: &str = "/v1/node/vid/share/hash/{hash}";
141 pub const NODE_VID_SHARE_BY_PAYLOAD_HASH_ROUTE: &str =
142 "/v1/node/vid/share/payload-hash/{payload_hash}";
143
144 pub const NODE_SYNC_STATUS_ROUTE: &str = "/v1/node/sync-status";
145
146 pub const NODE_HEADER_WINDOW_TIME_ROUTE: &str = "/v1/node/header/window/{start}/{end}";
147 pub const NODE_HEADER_WINDOW_HEIGHT_ROUTE: &str = "/v1/node/header/window/from/{height}/{end}";
148 pub const NODE_HEADER_WINDOW_HASH_ROUTE: &str = "/v1/node/header/window/from/hash/{hash}/{end}";
149
150 pub const NODE_LIMITS_ROUTE: &str = "/v1/node/limits";
151
152 pub const NODE_STAKE_TABLE_CURRENT_ROUTE: &str = "/v1/node/stake-table/current";
153 pub const NODE_STAKE_TABLE_ROUTE: &str = "/v1/node/stake-table/{epoch_number}";
154 pub const NODE_DA_STAKE_TABLE_CURRENT_ROUTE: &str = "/v1/node/da-stake-table/current";
155 pub const NODE_DA_STAKE_TABLE_ROUTE: &str = "/v1/node/da-stake-table/{epoch_number}";
156
157 pub const NODE_VALIDATORS_ROUTE: &str = "/v1/node/validators/{epoch_number}";
158 pub const NODE_ALL_VALIDATORS_ROUTE: &str =
159 "/v1/node/all-validators/{epoch_number}/{offset}/{limit}";
160
161 pub const NODE_PROPOSAL_PARTICIPATION_CURRENT_ROUTE: &str =
162 "/v1/node/participation/proposal/current";
163 pub const NODE_PROPOSAL_PARTICIPATION_ROUTE: &str = "/v1/node/participation/proposal/{epoch}";
164 pub const NODE_VOTE_PARTICIPATION_CURRENT_ROUTE: &str = "/v1/node/participation/vote/current";
165 pub const NODE_VOTE_PARTICIPATION_ROUTE: &str = "/v1/node/participation/vote/{epoch}";
166
167 pub const NODE_BLOCK_REWARD_ROUTE: &str = "/v1/node/block-reward";
168 pub const NODE_BLOCK_REWARD_EPOCH_ROUTE: &str = "/v1/node/block-reward/epoch/{epoch_number}";
169
170 pub const NODE_OLDEST_BLOCK_ROUTE: &str = "/v1/node/oldest-block";
171 pub const NODE_OLDEST_LEAF_ROUTE: &str = "/v1/node/oldest-leaf";
172
173 pub const CATCHUP_ACCOUNT_ROUTE: &str = "/v1/catchup/{height}/{view}/account/{address}";
175 pub const CATCHUP_ACCOUNTS_ROUTE: &str = "/v1/catchup/{height}/{view}/accounts";
176 pub const CATCHUP_BLOCKS_ROUTE: &str = "/v1/catchup/{height}/{view}/blocks";
177 pub const CATCHUP_CHAINCONFIG_ROUTE: &str = "/v1/catchup/chain-config/{commitment}";
178 pub const CATCHUP_LEAFCHAIN_ROUTE: &str = "/v1/catchup/{height}/leafchain";
179 pub const CATCHUP_CERT2_ROUTE: &str = "/v1/catchup/{height}/cert2";
180 pub const CATCHUP_REWARD_ACCOUNT_ROUTE: &str =
181 "/v1/catchup/{height}/{view}/reward-account/{address}";
182 pub const CATCHUP_REWARD_ACCOUNTS_ROUTE: &str = "/v1/catchup/{height}/{view}/reward-accounts";
183 pub const CATCHUP_REWARD_ACCOUNT_V2_ROUTE: &str =
184 "/v1/catchup/{height}/{view}/reward-account-v2/{address}";
185 pub const CATCHUP_REWARD_ACCOUNTS_V2_ROUTE: &str =
186 "/v1/catchup/{height}/{view}/reward-accounts-v2";
187 pub const CATCHUP_REWARD_AMOUNTS_ROUTE: &str =
188 "/v1/catchup/{height}/reward-amounts/{limit}/{offset}";
189 pub const CATCHUP_REWARD_MERKLE_TREE_V2_ROUTE: &str =
190 "/v1/catchup/reward-merkle-tree-v2/{height}/{view}";
191 pub const CATCHUP_STATE_CERT_ROUTE: &str = "/v1/catchup/{epoch}/state-cert";
192
193 pub const SUBMIT_ROUTE: &str = "/v1/submit/submit";
195
196 pub const STATE_SIGNATURE_BLOCK_ROUTE: &str = "/v1/state-signature/block/{height}";
198
199 pub const HOTSHOT_EVENTS_STREAM_ROUTE: &str = "/v1/hotshot-events/events";
201 pub const HOTSHOT_EVENTS_STARTUP_ROUTE: &str = "/v1/hotshot-events/startup_info";
202
203 pub const LC_LEAF_BY_HEIGHT_ROUTE: &str = "/v1/light-client/leaf/{height}";
205 pub const LC_LEAF_BY_HEIGHT_FINALIZED_ROUTE: &str =
206 "/v1/light-client/leaf/{height}/{finalized}";
207 pub const LC_LEAF_BY_HASH_ROUTE: &str = "/v1/light-client/leaf/hash/{hash}";
208 pub const LC_LEAF_BY_HASH_FINALIZED_ROUTE: &str =
209 "/v1/light-client/leaf/hash/{hash}/{finalized}";
210 pub const LC_LEAF_BY_BLOCK_HASH_ROUTE: &str = "/v1/light-client/leaf/block-hash/{block_hash}";
211 pub const LC_LEAF_BY_BLOCK_HASH_FINALIZED_ROUTE: &str =
212 "/v1/light-client/leaf/block-hash/{block_hash}/{finalized}";
213 pub const LC_LEAF_BY_PAYLOAD_HASH_ROUTE: &str =
214 "/v1/light-client/leaf/payload-hash/{payload_hash}";
215 pub const LC_LEAF_BY_PAYLOAD_HASH_FINALIZED_ROUTE: &str =
216 "/v1/light-client/leaf/payload-hash/{payload_hash}/{finalized}";
217
218 pub const LC_HEADER_BY_HEIGHT_ROUTE: &str = "/v1/light-client/header/{root}/{height}";
219 pub const LC_HEADER_BY_HASH_ROUTE: &str = "/v1/light-client/header/{root}/hash/{hash}";
220 pub const LC_HEADER_BY_PAYLOAD_HASH_ROUTE: &str =
221 "/v1/light-client/header/{root}/payload-hash/{payload_hash}";
222
223 pub const LC_STAKE_TABLE_ROUTE: &str = "/v1/light-client/stake-table/{epoch}";
224
225 pub const LC_PAYLOAD_ROUTE: &str = "/v1/light-client/payload/{height}";
226 pub const LC_PAYLOAD_RANGE_ROUTE: &str = "/v1/light-client/payload/{start}/{end}";
227
228 pub const LC_NAMESPACE_ROUTE: &str = "/v1/light-client/namespace/{height}/{namespace}";
229 pub const LC_NAMESPACE_RANGE_ROUTE: &str =
230 "/v1/light-client/namespace/{start}/{end}/{namespace}";
231
232 pub const EXPLORER_BLOCK_DETAIL_BY_HEIGHT_ROUTE: &str = "/v1/explorer/block/{height}";
234 pub const EXPLORER_BLOCK_DETAIL_BY_HASH_ROUTE: &str = "/v1/explorer/block/hash/{hash}";
235 pub const EXPLORER_BLOCK_SUMMARIES_LATEST_ROUTE: &str = "/v1/explorer/blocks/latest/{limit}";
236 pub const EXPLORER_BLOCK_SUMMARIES_FROM_ROUTE: &str = "/v1/explorer/blocks/{from}/{limit}";
237 pub const EXPLORER_TX_DETAIL_BY_POSITION_ROUTE: &str =
238 "/v1/explorer/transaction/{height}/{offset}";
239 pub const EXPLORER_TX_DETAIL_BY_HASH_ROUTE: &str = "/v1/explorer/transaction/hash/{hash}";
240
241 pub const EXPLORER_TX_SUMMARIES_LATEST_ROUTE: &str = "/v1/explorer/transactions/latest/{limit}";
242 pub const EXPLORER_TX_SUMMARIES_FROM_ROUTE: &str =
243 "/v1/explorer/transactions/from/{height}/{offset}/{limit}";
244 pub const EXPLORER_TX_SUMMARIES_BY_HASH_ROUTE: &str =
245 "/v1/explorer/transactions/hash/{hash}/{limit}";
246
247 pub const EXPLORER_TX_SUMMARIES_LATEST_BLOCK_ROUTE: &str =
248 "/v1/explorer/transactions/latest/{limit}/block/{block}";
249 pub const EXPLORER_TX_SUMMARIES_FROM_BLOCK_ROUTE: &str =
250 "/v1/explorer/transactions/from/{height}/{offset}/{limit}/block/{block}";
251 pub const EXPLORER_TX_SUMMARIES_BY_HASH_BLOCK_ROUTE: &str =
252 "/v1/explorer/transactions/hash/{hash}/{limit}/block/{block}";
253
254 pub const EXPLORER_TX_SUMMARIES_LATEST_NS_ROUTE: &str =
255 "/v1/explorer/transactions/latest/{limit}/namespace/{namespace}";
256 pub const EXPLORER_TX_SUMMARIES_FROM_NS_ROUTE: &str =
257 "/v1/explorer/transactions/from/{height}/{offset}/{limit}/namespace/{namespace}";
258 pub const EXPLORER_TX_SUMMARIES_BY_HASH_NS_ROUTE: &str =
259 "/v1/explorer/transactions/hash/{hash}/{limit}/namespace/{namespace}";
260
261 pub const EXPLORER_SUMMARY_ROUTE: &str = "/v1/explorer/explorer-summary";
262 pub const EXPLORER_SEARCH_ROUTE: &str = "/v1/explorer/search/{query}";
263
264 pub const TOKEN_TOTAL_MINTED_SUPPLY_ROUTE: &str = "/v1/token/total-minted-supply";
266 pub const TOKEN_CIRCULATING_SUPPLY_ROUTE: &str = "/v1/token/circulating-supply";
267 pub const TOKEN_CIRCULATING_SUPPLY_ETHEREUM_ROUTE: &str =
268 "/v1/token/circulating-supply-ethereum";
269 pub const TOKEN_TOTAL_ISSUED_SUPPLY_ROUTE: &str = "/v1/token/total-issued-supply";
270 pub const TOKEN_TOTAL_REWARD_DISTRIBUTED_ROUTE: &str = "/v1/token/total-reward-distributed";
271
272 pub const DATABASE_TABLE_SIZES_ROUTE: &str = "/v1/database/table-sizes";
274}
275
276pub mod v2 {
277 use super::Route;
278
279 pub const REWARD_CLAIM_INPUT_ROUTE: Route = Route {
280 http: "/v2/rewards/claim-input",
281 grpc: "/espresso.api.v2.RewardService/GetRewardClaimInput",
282 description: "Get reward claim input for L1 contract submission. Returns lifetime rewards \
283 and Merkle proof needed to call claimRewards() on the L1 contract.",
284 tag: "Rewards",
285 };
286
287 pub const REWARD_BALANCE_ROUTE: Route = Route {
288 http: "/v2/rewards/balance",
289 grpc: "/espresso.api.v2.RewardService/GetRewardBalance",
290 description: "Get reward balance for an address at the latest finalized height",
291 tag: "Rewards",
292 };
293
294 pub const REWARD_ACCOUNT_PROOF_ROUTE: Route = Route {
295 http: "/v2/rewards/proof",
296 grpc: "/espresso.api.v2.RewardService/GetRewardAccountProof",
297 description: "Get Merkle proof for a reward account at the latest finalized height. \
298 Returns V2 proof with Keccak256 hashing",
299 tag: "Rewards",
300 };
301
302 pub const REWARD_BALANCES_ROUTE: Route = Route {
303 http: "/v2/rewards/balances",
304 grpc: "/espresso.api.v2.RewardService/GetRewardBalances",
305 description: "Get paginated list of all reward balances at a specific height. Limit must \
306 be ≤ 10000",
307 tag: "Rewards",
308 };
309
310 pub const REWARD_MERKLE_TREE_V2_ROUTE: Route = Route {
311 http: "/v2/rewards/tree",
312 grpc: "/espresso.api.v2.RewardService/GetRewardMerkleTreeV2",
313 description: "Get raw RewardMerkleTreeV2 snapshot at a given height. Returns serialized \
314 merkle tree data",
315 tag: "Rewards",
316 };
317
318 pub const OPENAPI_SPEC_ROUTE: &str = "/v2/docs/openapi.json";
319 pub const SWAGGER_ROUTE: &str = "/v2";
320 pub const SCALAR_ROUTE: &str = "/v2/scalar";
321 pub const REDOC_ROUTE: &str = "/v2/redoc";
322
323 pub const NAMESPACE_PROOF_ROUTE: Route = Route {
324 http: "/v2/data/finalized/namespace-proof",
325 grpc: "/espresso.api.v2.DataService/GetNamespaceProof",
326 description: "Get namespace proof(s) for the specified namespace. Use '?block={height}' \
327 for a single block, or '?from={start}&to={end}' for a range. Returns \
328 transactions for the namespace along with cryptographic proof(s) of \
329 completeness.",
330 tag: "Data",
331 };
332
333 pub const INCORRECT_ENCODING_PROOF_ROUTE: Route = Route {
334 http: "/v2/data/finalized/incorrect-encoding-proof",
335 grpc: "/espresso.api.v2.DataService/GetIncorrectEncodingProof",
336 description: "Generate a fraud proof showing incorrect namespace encoding for a specific \
337 block. Query param 'block' specifies the block height. Used to challenge \
338 invalid block proposals.",
339 tag: "Data",
340 };
341
342 pub const STATE_CERTIFICATE_ROUTE: Route = Route {
343 http: "/v2/consensus/state-certificate",
344 grpc: "/espresso.api.v2.ConsensusService/GetStateCertificate",
345 description: "Get light client state update certificate for an epoch. Used to update L1 \
346 contracts with new stake table information.",
347 tag: "Consensus",
348 };
349
350 pub const STAKE_TABLE_ROUTE: Route = Route {
351 http: "/v2/consensus/stake-table",
352 grpc: "/espresso.api.v2.ConsensusService/GetStakeTable",
353 description: "Get stake table for an epoch.",
354 tag: "Consensus",
355 };
356}