Skip to main content

layer_climb_core/signing/contract/
msg.rs

1use anyhow::Result;
2use serde::Serialize;
3
4use crate::{contract_helpers::contract_msg_to_vec, prelude::*};
5
6impl SigningClient {
7    pub fn contract_upload_file_msg(
8        &self,
9        wasm_byte_code: Vec<u8>,
10    ) -> Result<layer_climb_proto::wasm::MsgStoreCode> {
11        Ok(layer_climb_proto::wasm::MsgStoreCode {
12            sender: self.addr.to_string(),
13            wasm_byte_code,
14            instantiate_permission: None,
15        })
16    }
17
18    pub fn contract_instantiate_msg(
19        &self,
20        admin: impl Into<Option<Address>>,
21        code_id: u64,
22        label: impl ToString,
23        funds: Vec<layer_climb_proto::Coin>,
24        msg: &impl Serialize,
25    ) -> Result<layer_climb_proto::wasm::MsgInstantiateContract> {
26        Ok(layer_climb_proto::wasm::MsgInstantiateContract {
27            sender: self.addr.to_string(),
28            admin: admin.into().map(|a| a.to_string()).unwrap_or_default(),
29            code_id,
30            label: label.to_string(),
31            msg: contract_msg_to_vec(msg)?,
32            funds,
33        })
34    }
35
36    #[allow(clippy::too_many_arguments)]
37    pub fn contract_instantiate2_msg(
38        &self,
39        admin: impl Into<Option<Address>>,
40        code_id: u64,
41        label: impl ToString,
42        funds: Vec<layer_climb_proto::Coin>,
43        salt: Vec<u8>,
44        fix_msg: bool,
45        msg: &impl Serialize,
46    ) -> Result<layer_climb_proto::wasm::MsgInstantiateContract2> {
47        Ok(layer_climb_proto::wasm::MsgInstantiateContract2 {
48            sender: self.addr.to_string(),
49            admin: admin.into().map(|a| a.to_string()).unwrap_or_default(),
50            code_id,
51            label: label.to_string(),
52            msg: contract_msg_to_vec(msg)?,
53            salt,
54            fix_msg,
55            funds,
56        })
57    }
58
59    pub fn contract_execute_msg(
60        &self,
61        address: &Address,
62        funds: Vec<layer_climb_proto::Coin>,
63        msg: &impl Serialize,
64    ) -> Result<layer_climb_proto::wasm::MsgExecuteContract> {
65        Ok(layer_climb_proto::wasm::MsgExecuteContract {
66            sender: self.addr.to_string(),
67            contract: address.to_string(),
68            msg: contract_msg_to_vec(msg)?,
69            funds,
70        })
71    }
72
73    pub fn contract_migrate_msg(
74        &self,
75        address: &Address,
76        code_id: u64,
77        msg: &impl Serialize,
78    ) -> Result<layer_climb_proto::wasm::MsgMigrateContract> {
79        Ok(layer_climb_proto::wasm::MsgMigrateContract {
80            sender: self.addr.to_string(),
81            contract: address.to_string(),
82            code_id,
83            msg: contract_msg_to_vec(msg)?,
84        })
85    }
86}