sui_jsonrpc/msgs/
sui_checkpoint.rs1use af_sui_types::{CheckpointDigest, EpochId, GasCostSummary, TransactionDigest};
5use serde::{Deserialize, Serialize};
6use serde_with::serde_as;
7use sui_sdk_types::{
8 CheckpointCommitment,
9 CheckpointSequenceNumber,
10 CheckpointTimestamp,
11 EndOfEpochData,
12};
13
14use super::Page;
15use crate::serde::{BigInt, GasCostSummaryJson};
16
17pub type CheckpointPage = Page<Checkpoint, BigInt<u64>>;
18
19#[serde_as]
20#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
21#[serde(rename_all = "camelCase")]
22pub struct Checkpoint {
23 #[serde_as(as = "BigInt<u64>")]
25 pub epoch: EpochId,
26 #[serde_as(as = "BigInt<u64>")]
28 pub sequence_number: CheckpointSequenceNumber,
29 pub digest: CheckpointDigest,
31 #[serde_as(as = "BigInt<u64>")]
34 pub network_total_transactions: u64,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub previous_digest: Option<CheckpointDigest>,
38 #[serde_as(as = "serde_with::FromInto<GasCostSummaryJson>")]
41 pub epoch_rolling_gas_cost_summary: GasCostSummary,
42 #[serde_as(as = "BigInt<u64>")]
46 pub timestamp_ms: CheckpointTimestamp,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub end_of_epoch_data: Option<EndOfEpochData>,
50 pub transactions: Vec<TransactionDigest>,
52
53 pub checkpoint_commitments: Vec<CheckpointCommitment>,
55 pub validator_signature: sui_sdk_types::Bls12381Signature,
57}
58
59#[serde_as]
60#[derive(Clone, Copy, Debug, Serialize, Deserialize, derive_more::From)]
61#[serde(untagged)]
62pub enum CheckpointId {
63 SequenceNumber(#[serde_as(as = "BigInt<u64>")] CheckpointSequenceNumber),
64 Digest(CheckpointDigest),
65}