1use iota_sdk_types::{CheckpointDigest, checkpoint::CheckpointSummary};
6
7use crate::{base_types::EpochId, messages_checkpoint::CheckpointTimestamp};
8
9#[derive(Default)]
11pub struct EpochData {
12 epoch_id: EpochId,
13 epoch_start_timestamp: CheckpointTimestamp,
14 epoch_digest: CheckpointDigest,
15}
16
17impl EpochData {
18 pub fn new(
19 epoch_id: EpochId,
20 epoch_start_timestamp: CheckpointTimestamp,
21 epoch_digest: CheckpointDigest,
22 ) -> Self {
23 Self {
24 epoch_id,
25 epoch_start_timestamp,
26 epoch_digest,
27 }
28 }
29
30 pub fn new_genesis(epoch_start_timestamp: CheckpointTimestamp) -> Self {
31 Self {
32 epoch_id: 0,
33 epoch_start_timestamp,
34 epoch_digest: Default::default(),
35 }
36 }
37
38 pub fn new_from_epoch_checkpoint(
39 epoch_id: EpochId,
40 epoch_checkpoint: &CheckpointSummary,
41 ) -> Self {
42 Self {
43 epoch_id,
44 epoch_start_timestamp: epoch_checkpoint.timestamp_ms,
45 epoch_digest: epoch_checkpoint.digest(),
46 }
47 }
48
49 pub fn new_test() -> Self {
50 Default::default()
51 }
52
53 pub fn epoch_id(&self) -> EpochId {
54 self.epoch_id
55 }
56
57 pub fn epoch_start_timestamp(&self) -> CheckpointTimestamp {
58 self.epoch_start_timestamp
59 }
60
61 pub fn epoch_digest(&self) -> CheckpointDigest {
62 self.epoch_digest
63 }
64}