pub mod attested; pub mod session_create; pub mod session_set_pub_key; use cosmwasm_schema::cw_serde; use cosmwasm_std::StdError; use crate::msg::{ execute::{ attested::{Attested, EpidAttestation, RawAttested, RawEpidAttestation}, session_create::{RawSessionCreate, SessionCreate}, session_set_pub_key::{RawSessionSetPubKey, SessionSetPubKey}, }, HasDomainType, }; #[derive(Clone, Debug, PartialEq)] pub enum Execute { SessionCreate(Attested), SessionSetPubKey(Attested), } #[cw_serde] pub enum RawExecute { #[serde(rename = "session_create")] RawSessionCreate(RawAttested), #[serde(rename = "session_set_pub_key")] RawSessionSetPubKey(RawAttested), } impl TryFrom> for Execute where RA: HasDomainType, { type Error = StdError; fn try_from(value: RawExecute) -> Result { match value { RawExecute::RawSessionCreate(msg) => { Ok(Execute::SessionCreate(TryFrom::try_from(msg)?)) } RawExecute::RawSessionSetPubKey(msg) => { Ok(Execute::SessionSetPubKey(TryFrom::try_from(msg)?)) } } } } impl From> for RawExecute where RA: HasDomainType, { fn from(value: Execute) -> Self { match value { Execute::SessionCreate(msg) => RawExecute::RawSessionCreate(From::from(msg)), Execute::SessionSetPubKey(msg) => RawExecute::RawSessionSetPubKey(From::from(msg)), } } } impl HasDomainType for RawExecute where RA: HasDomainType, { type DomainType = Execute; }