terra_rust_api/messages/
distribution.rs

1use crate::core_types::MsgInternal;
2use crate::messages::Message;
3use serde::Serialize;
4
5/// withdraw commission from a validator
6#[derive(Serialize, Debug)]
7pub struct MsgWithdrawValidatorCommission {
8    pub validator_address: String,
9}
10impl MsgInternal for MsgWithdrawValidatorCommission {}
11impl MsgWithdrawValidatorCommission {
12    pub fn create(validator_address: String) -> anyhow::Result<Message> {
13        let internal = MsgWithdrawValidatorCommission { validator_address };
14        Ok(Message {
15            s_type: "distribution/MsgWithdrawValidatorCommission".into(),
16            value: serde_json::to_value(internal)?,
17        })
18    }
19}
20/// withdraw reward from a validator
21#[derive(Serialize, Debug)]
22pub struct MsgWithdrawDelegationReward {
23    pub delegator_address: String,
24    pub validator_address: String,
25}
26impl MsgInternal for MsgWithdrawDelegationReward {}
27impl MsgWithdrawDelegationReward {
28    pub fn create(delegator_address: String, validator_address: String) -> anyhow::Result<Message> {
29        let internal = MsgWithdrawDelegationReward {
30            delegator_address,
31            validator_address,
32        };
33        Ok(Message {
34            s_type: "distribution/MsgWithdrawDelegationReward".into(),
35            value: serde_json::to_value(internal)?,
36        })
37    }
38}