use super::constants::VERIFICATION_KEY_LENGTH;
#[cfg(not(feature = "wasm"))]
use codec::alloc::vec::Vec;
use codec::{Decode, Encode};
use scale_info::TypeInfo;
#[cfg(any(feature = "std", feature = "wasm", feature = "user-native"))]
use serde::{Deserialize, Serialize};
#[cfg(feature = "std")]
use strum_macros::EnumIter;
pub type X25519PublicKey = [u8; 32];
pub type BlockNumber = u32;
#[cfg_attr(not(feature = "wasm"), derive(sp_runtime::Serialize, sp_runtime::Deserialize))]
#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
pub struct ValidatorInfo {
pub x25519_public_key: X25519PublicKey,
pub ip_address: Vec<u8>,
pub tss_account: Vec<u8>,
}
#[cfg(not(feature = "wasm"))]
#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
pub struct OcwMessageDkg {
pub block_number: BlockNumber,
pub validators_info: Vec<ValidatorInfo>,
}
#[cfg(not(feature = "wasm"))]
#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
pub struct OcwMessageReshare {
pub new_signers: Vec<Vec<u8>>,
pub block_number: BlockNumber,
}
#[cfg(not(feature = "wasm"))]
#[derive(
Clone,
Encode,
Decode,
Debug,
Eq,
PartialEq,
TypeInfo,
sp_runtime::Serialize,
sp_runtime::Deserialize,
)]
pub struct OcwMessageProactiveRefresh {
pub block_number: BlockNumber,
pub validators_info: Vec<ValidatorInfo>,
pub proactive_refresh_keys: Vec<Vec<u8>>,
}
#[cfg_attr(any(feature = "wasm", feature = "std"), derive(Serialize, Deserialize))]
#[cfg_attr(feature = "std", derive(EnumIter))]
#[derive(Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "std", serde(rename = "hash"))]
#[cfg_attr(feature = "std", serde(rename_all = "lowercase"))]
#[non_exhaustive]
pub enum HashingAlgorithm {
Sha1,
Sha2,
Sha3,
Keccak,
Blake2_256,
Identity,
Custom(u32),
}
pub type EncodedVerifyingKey = [u8; VERIFICATION_KEY_LENGTH as usize];
#[cfg(not(feature = "wasm"))]
pub type BoundedVecEncodedVerifyingKey =
sp_runtime::BoundedVec<u8, sp_runtime::traits::ConstU32<VERIFICATION_KEY_LENGTH>>;
#[cfg(feature = "wasm-no-std")]
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, Eq, PartialEq)]
pub struct TssPublicKeys {
pub ready: bool,
pub tss_account: sp_runtime::AccountId32,
pub x25519_public_key: X25519PublicKey,
pub provisioning_certification_key: BoundedVecEncodedVerifyingKey,
}