komple_framework_fee_module/
helper.rs1use 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#[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 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}