use crate::types::Balance;
use once_cell::sync::Lazy;
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, Default)]
pub struct Version {
pub version: String,
pub build: String,
#[serde(default)]
pub rustc_version: String,
}
use crate::upgrade_schedule::{get_protocol_version_internal, ProtocolUpgradeVotingSchedule};
pub use unc_primitives_core::checked_feature;
pub use unc_primitives_core::types::ProtocolVersion;
pub use unc_primitives_core::version::ProtocolFeature;
pub use unc_primitives_core::version::PEER_MIN_ALLOWED_PROTOCOL_VERSION;
pub use unc_primitives_core::version::PROTOCOL_VERSION;
pub const MIN_GAS_PRICE_UIP_92: Balance = 1_000_000_000;
pub const MIN_PROTOCOL_VERSION_UIP_92: ProtocolVersion = 31;
pub const MIN_GAS_PRICE_UIP_92_FIX: Balance = 100_000_000;
pub const MIN_PROTOCOL_VERSION_UIP_92_FIX: ProtocolVersion = 32;
pub const CORRECT_RANDOM_VALUE_PROTOCOL_VERSION: ProtocolVersion = 33;
pub const ENABLE_INFLATION_PROTOCOL_VERSION: ProtocolVersion = 36;
pub const UPGRADABILITY_FIX_PROTOCOL_VERSION: ProtocolVersion = 37;
pub const CREATE_HASH_PROTOCOL_VERSION: ProtocolVersion = 38;
pub const DELETE_KEY_STORAGE_USAGE_PROTOCOL_VERSION: ProtocolVersion = 40;
pub const SHARD_CHUNK_HEADER_UPGRADE_VERSION: ProtocolVersion = 41;
pub const CREATE_RECEIPT_ID_SWITCH_TO_CURRENT_BLOCK_VERSION: ProtocolVersion = 42;
pub const PROTOCOL_UPGRADE_SCHEDULE: Lazy<ProtocolUpgradeVotingSchedule> = Lazy::new(|| {
ProtocolUpgradeVotingSchedule::default()
});
pub fn get_protocol_version(next_epoch_protocol_version: ProtocolVersion) -> ProtocolVersion {
get_protocol_version_internal(
next_epoch_protocol_version,
PROTOCOL_VERSION,
*PROTOCOL_UPGRADE_SCHEDULE,
)
}