terra_rust_api/messages/
market.rs

1//use crate::client::client_types::terra_u64_format;
2use crate::core_types::{Coin, MsgInternal};
3
4use crate::messages::Message;
5use serde::Serialize;
6
7#[derive(Serialize, Debug)]
8/// swap a coin, and send it to someone
9
10pub struct MsgSwap {
11    pub ask_denom: String,
12    pub offer_coin: Coin,
13    /// to account
14    pub trader: String,
15}
16
17impl MsgInternal for MsgSwap {}
18impl MsgSwap {
19    /// swap a coin, and send it to someone
20    pub fn create(offer_coin: Coin, ask_denom: String, trader: String) -> anyhow::Result<Message> {
21        let internal = MsgSwap {
22            ask_denom,
23            offer_coin,
24            trader,
25        };
26        Ok(Message {
27            s_type: "market/MsgSwap".into(),
28            value: serde_json::to_value(internal)?,
29        })
30    }
31}