Skip to main content

komple_framework_fee_module/
helper.rs

1use crate::msg::{CustomPaymentAddress, ExecuteMsg, QueryMsg};
2use cosmwasm_schema::cw_serde;
3use cosmwasm_std::{to_binary, Addr, Coin, Decimal, QuerierWrapper, StdResult, Uint128, WasmMsg};
4use komple_framework_types::modules::fee::Fees;
5use komple_framework_types::shared::query::ResponseWrapper;
6
7/// Helper methods for the fee module.
8///
9/// Used for constructing some of the execute messages and performing queries.
10#[cw_serde]
11pub struct KompleFeeModule(pub Addr);
12impl KompleFeeModule {
13    pub fn addr(&self) -> Addr {
14        self.0.clone()
15    }
16
17    pub fn distribute_msg(
18        &self,
19        fee_type: Fees,
20        module_name: String,
21        custom_payment_addresses: Option<Vec<CustomPaymentAddress>>,
22        funds: Vec<Coin>,
23    ) -> StdResult<WasmMsg> {
24        let msg = ExecuteMsg::Distribute {
25            fee_type,
26            module_name,
27            custom_payment_addresses,
28        };
29        Ok(WasmMsg::Execute {
30            contract_addr: self.0.to_string(),
31            msg: to_binary(&msg)?,
32            funds,
33        })
34    }
35
36    // Queries
37    pub fn query_total_percentage_fees(
38        &self,
39        querier: &QuerierWrapper,
40        module_name: &str,
41    ) -> StdResult<Decimal> {
42        let msg = QueryMsg::TotalPercentageFees {
43            module_name: module_name.to_string(),
44            start_after: None,
45            limit: None,
46        };
47        let res: ResponseWrapper<Decimal> =
48            querier.query_wasm_smart(self.addr().to_string(), &msg)?;
49        Ok(res.data)
50    }
51
52    pub fn query_total_fixed_fees(
53        &self,
54        querier: &QuerierWrapper,
55        module_name: &str,
56    ) -> StdResult<Uint128> {
57        let msg = QueryMsg::TotalFixedFees {
58            module_name: module_name.to_string(),
59            start_after: None,
60            limit: None,
61        };
62        let res: ResponseWrapper<Uint128> =
63            querier.query_wasm_smart(self.addr().to_string(), &msg)?;
64        Ok(res.data)
65    }
66}