use crate::{tx::Msg, AccountId, ErrorReport, Result};
use secret_sdk_proto as proto;
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub struct MsgStoreCode {
pub sender: AccountId,
pub wasm_byte_code: Vec<u8>,
pub source: Option<String>,
pub builder: Option<String>,
}
impl Msg for MsgStoreCode {
type Proto = proto::secret::compute::v1beta1::MsgStoreCode;
}
impl TryFrom<proto::secret::compute::v1beta1::MsgStoreCode> for MsgStoreCode {
type Error = ErrorReport;
fn try_from(proto: proto::secret::compute::v1beta1::MsgStoreCode) -> Result<MsgStoreCode> {
Ok(MsgStoreCode {
sender: AccountId::new("secret", &proto.sender)?,
wasm_byte_code: proto.wasm_byte_code,
source: if proto.source.is_empty() {
None
} else {
Some(proto.source)
},
builder: if proto.builder.is_empty() {
None
} else {
Some(proto.builder)
},
})
}
}
impl From<MsgStoreCode> for proto::secret::compute::v1beta1::MsgStoreCode {
fn from(msg: MsgStoreCode) -> proto::secret::compute::v1beta1::MsgStoreCode {
proto::secret::compute::v1beta1::MsgStoreCode {
sender: msg.sender.to_bytes(),
wasm_byte_code: msg.wasm_byte_code,
source: msg.source.unwrap_or_default(),
builder: msg.builder.unwrap_or_default(),
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub struct MsgStoreCodeResponse {
pub code_id: u64,
}
impl Msg for MsgStoreCodeResponse {
type Proto = proto::secret::compute::v1beta1::MsgStoreCodeResponse;
}
impl TryFrom<proto::secret::compute::v1beta1::MsgStoreCodeResponse> for MsgStoreCodeResponse {
type Error = ErrorReport;
fn try_from(
proto: proto::secret::compute::v1beta1::MsgStoreCodeResponse,
) -> Result<MsgStoreCodeResponse> {
Ok(MsgStoreCodeResponse {
code_id: proto.code_id,
})
}
}
impl From<MsgStoreCodeResponse> for proto::secret::compute::v1beta1::MsgStoreCodeResponse {
fn from(msg: MsgStoreCodeResponse) -> proto::secret::compute::v1beta1::MsgStoreCodeResponse {
proto::secret::compute::v1beta1::MsgStoreCodeResponse {
code_id: msg.code_id,
}
}
}