injective_test_tube/module/
gov.rs

1use injective_std::types::cosmos::gov::v1::{
2    MsgSubmitProposal, MsgSubmitProposalResponse, MsgVote, MsgVoteResponse, QueryProposalRequest,
3    QueryProposalResponse,
4};
5use injective_std::types::cosmos::gov::v1beta1;
6use test_tube_inj::module::Module;
7use test_tube_inj::runner::Runner;
8use test_tube_inj::{fn_execute, fn_query};
9
10pub struct Gov<'a, R: Runner<'a>> {
11    runner: &'a R,
12}
13
14impl<'a, R: Runner<'a>> Module<'a, R> for Gov<'a, R> {
15    fn new(runner: &'a R) -> Self {
16        Self { runner }
17    }
18}
19
20impl<'a, R> Gov<'a, R>
21where
22    R: Runner<'a>,
23{
24    fn_execute! {
25        pub submit_proposal: MsgSubmitProposal => MsgSubmitProposalResponse
26    }
27
28    fn_execute! {
29        pub submit_proposal_v1beta1: v1beta1::MsgSubmitProposal => v1beta1::MsgSubmitProposalResponse
30
31    }
32
33    fn_execute! {
34        pub vote: MsgVote => MsgVoteResponse
35    }
36
37    fn_query! {
38        pub query_proposal ["/cosmos.gov.v1beta1.Query/Proposal"]: QueryProposalRequest => QueryProposalResponse
39    }
40}