sui_jsonrpc/msgs/
sui_checkpoint.rsuse af_sui_types::{CheckpointDigest, EpochId, GasCostSummary, TransactionDigest};
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
use sui_sdk_types::{
CheckpointCommitment,
CheckpointSequenceNumber,
CheckpointTimestamp,
EndOfEpochData,
};
use super::Page;
use crate::serde::{BigInt, GasCostSummaryJson};
pub type CheckpointPage = Page<Checkpoint, BigInt<u64>>;
#[serde_as]
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Checkpoint {
#[serde_as(as = "BigInt<u64>")]
pub epoch: EpochId,
#[serde_as(as = "BigInt<u64>")]
pub sequence_number: CheckpointSequenceNumber,
pub digest: CheckpointDigest,
#[serde_as(as = "BigInt<u64>")]
pub network_total_transactions: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub previous_digest: Option<CheckpointDigest>,
#[serde_as(as = "serde_with::FromInto<GasCostSummaryJson>")]
pub epoch_rolling_gas_cost_summary: GasCostSummary,
#[serde_as(as = "BigInt<u64>")]
pub timestamp_ms: CheckpointTimestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_of_epoch_data: Option<EndOfEpochData>,
pub transactions: Vec<TransactionDigest>,
pub checkpoint_commitments: Vec<CheckpointCommitment>,
pub validator_signature: sui_sdk_types::Bls12381Signature,
}
#[serde_as]
#[derive(Clone, Copy, Debug, Serialize, Deserialize, derive_more::From)]
#[serde(untagged)]
pub enum CheckpointId {
SequenceNumber(#[serde_as(as = "BigInt<u64>")] CheckpointSequenceNumber),
Digest(CheckpointDigest),
}