quartz-contract-core 0.5.0

A CosmWasm framework for securely interacting with Intel SGX enclaves.
Documentation
use cosmwasm_schema::cw_serde;
use cosmwasm_std::StdError;
use serde::Serialize;

use crate::msg::HasDomainType;

#[derive(Clone, Debug, PartialEq)]
pub struct Sequenced<D>(pub D);

#[cw_serde]
pub struct RawSequenced<R>(pub R);

impl<R: Serialize + HasDomainType> HasDomainType for RawSequenced<R> {
    type DomainType = Sequenced<R::DomainType>;
}

impl<R: HasDomainType> TryFrom<RawSequenced<R>> for Sequenced<R::DomainType> {
    type Error = StdError;

    fn try_from(value: RawSequenced<R>) -> Result<Self, Self::Error> {
        Ok(Self(value.0.try_into()?))
    }
}

impl<R: HasDomainType> From<Sequenced<R::DomainType>> for RawSequenced<R> {
    fn from(value: Sequenced<R::DomainType>) -> Self {
        Self(value.0.into())
    }
}