gemachain_program/nonce/state/
current.rs1use super::Versions;
2use crate::{fee_calculator::FeeCalculator, hash::Hash, pubkey::Pubkey};
3use serde_derive::{Deserialize, Serialize};
4
5#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Clone)]
6pub struct Data {
7 pub authority: Pubkey,
8 pub blockhash: Hash,
9 pub fee_calculator: FeeCalculator,
10}
11
12#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
13pub enum State {
14 Uninitialized,
15 Initialized(Data),
16}
17
18impl Default for State {
19 fn default() -> Self {
20 State::Uninitialized
21 }
22}
23
24impl State {
25 pub fn size() -> usize {
26 let data = Versions::new_current(State::Initialized(Data::default()));
27 bincode::serialized_size(&data).unwrap() as usize
28 }
29}
30
31#[cfg(test)]
32mod test {
33 use super::*;
34
35 #[test]
36 fn default_is_uninitialized() {
37 assert_eq!(State::default(), State::Uninitialized)
38 }
39}