use alloc::vec::Vec;
use codec::{Decode, Encode};
pub use sp_core::crypto::KeyTypeId;
use sp_runtime::traits::GeneratedSessionKeys;
#[derive(Debug, Default, Decode, Encode, scale_info::TypeInfo)]
pub struct OpaqueGeneratedSessionKeys {
pub keys: Vec<u8>,
pub proof: Vec<u8>,
}
impl<K: Encode, P: Encode> From<GeneratedSessionKeys<K, P>> for OpaqueGeneratedSessionKeys {
fn from(value: GeneratedSessionKeys<K, P>) -> Self {
Self { keys: value.keys.encode(), proof: value.proof.encode() }
}
}
sp_api::decl_runtime_apis! {
#[api_version(2)]
pub trait SessionKeys {
fn generate_session_keys(owner: Vec<u8>, seed: Option<Vec<u8>>) -> OpaqueGeneratedSessionKeys;
#[changed_in(2)]
fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8>;
fn decode_session_keys(encoded: Vec<u8>) -> Option<Vec<(Vec<u8>, KeyTypeId)>>;
}
}