1use super::constants::VERIFICATION_KEY_LENGTH;
16#[cfg(not(feature = "wasm"))]
17use codec::alloc::vec::Vec;
18use codec::{Decode, Encode};
19use scale_info::TypeInfo;
20#[cfg(any(feature = "std", feature = "wasm", feature = "user-native"))]
21use serde::{Deserialize, Serialize};
22#[cfg(feature = "std")]
23use strum_macros::EnumIter;
24
25pub type X25519PublicKey = [u8; 32];
28
29pub type BlockNumber = u32;
32
33#[cfg_attr(not(feature = "wasm"), derive(sp_runtime::Serialize, sp_runtime::Deserialize))]
35#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
36pub struct ValidatorInfo {
37 pub x25519_public_key: X25519PublicKey,
38 pub ip_address: Vec<u8>,
39 pub tss_account: Vec<u8>,
40}
41
42#[cfg(not(feature = "wasm"))]
44#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
45#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
46pub struct OcwMessageDkg {
47 pub block_number: BlockNumber,
48 pub validators_info: Vec<ValidatorInfo>,
49}
50
51#[cfg(not(feature = "wasm"))]
53#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
54#[derive(Clone, Encode, Decode, Debug, Eq, PartialEq, TypeInfo)]
55pub struct OcwMessageReshare {
56 pub new_signers: Vec<Vec<u8>>,
58 pub block_number: BlockNumber,
59}
60
61#[cfg(not(feature = "wasm"))]
63#[derive(
64 Clone,
65 Encode,
66 Decode,
67 Debug,
68 Eq,
69 PartialEq,
70 TypeInfo,
71 sp_runtime::Serialize,
72 sp_runtime::Deserialize,
73)]
74pub struct OcwMessageProactiveRefresh {
75 pub block_number: BlockNumber,
76 pub validators_info: Vec<ValidatorInfo>,
78 pub proactive_refresh_keys: Vec<Vec<u8>>,
80}
81
82#[cfg_attr(any(feature = "wasm", feature = "std"), derive(Serialize, Deserialize))]
84#[cfg_attr(feature = "std", derive(EnumIter))]
85#[derive(Clone, Debug, Eq, PartialEq)]
86#[cfg_attr(feature = "std", serde(rename = "hash"))]
87#[cfg_attr(feature = "std", serde(rename_all = "lowercase"))]
88#[non_exhaustive]
89pub enum HashingAlgorithm {
90 Sha1,
91 Sha2,
92 Sha3,
93 Keccak,
94 Blake2_256,
95 Identity,
97 Custom(u32),
98}
99
100pub type EncodedVerifyingKey = [u8; VERIFICATION_KEY_LENGTH as usize];
102
103#[cfg(not(feature = "wasm"))]
104pub type BoundedVecEncodedVerifyingKey =
105 sp_runtime::BoundedVec<u8, sp_runtime::traits::ConstU32<VERIFICATION_KEY_LENGTH>>;
106
107#[cfg(feature = "wasm-no-std")]
110#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, Eq, PartialEq)]
111pub struct TssPublicKeys {
112 pub ready: bool,
114 pub tss_account: sp_runtime::AccountId32,
116 pub x25519_public_key: X25519PublicKey,
118 pub provisioning_certification_key: BoundedVecEncodedVerifyingKey,
120}