use super::{AccessConfig, ContractCodeId};
use crate::{proto, AccountId, ErrorReport, Result};
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub struct CodeInfoResponse {
pub code_id: ContractCodeId,
pub creator: AccountId,
pub data_hash: Vec<u8>,
pub instantiate_permission: Option<AccessConfig>,
}
impl TryFrom<proto::cosmwasm::wasm::v1::CodeInfoResponse> for CodeInfoResponse {
type Error = ErrorReport;
fn try_from(proto: proto::cosmwasm::wasm::v1::CodeInfoResponse) -> Result<CodeInfoResponse> {
Ok(CodeInfoResponse {
code_id: proto.code_id,
creator: proto.creator.parse()?,
data_hash: proto.data_hash,
instantiate_permission: proto
.instantiate_permission
.map(TryInto::try_into)
.transpose()?,
})
}
}
impl From<CodeInfoResponse> for proto::cosmwasm::wasm::v1::CodeInfoResponse {
fn from(code_info: CodeInfoResponse) -> Self {
proto::cosmwasm::wasm::v1::CodeInfoResponse {
code_id: code_info.code_id,
creator: code_info.creator.to_string(),
data_hash: code_info.data_hash,
instantiate_permission: code_info.instantiate_permission.map(Into::into),
}
}
}