@@ -58,15 +58,15 @@ pub fn register_interchain_account(
5858/// * **msgs** is a list of protobuf encoded Cosmos-SDK messages you want to execute on remote chain;
5959/// * **memo** is a memo you want to attach to your interchain transaction. It behaves like a memo in usual Cosmos transaction;
6060/// * **timeout** is a timeout in seconds after which the packet times out.
61- /// * **fee** is a fee that is used for different kinds of callbacks. Unused fee types will be returned to msg sender.
61+ /// * **fee** is a fee used for different kinds of callbacks. Unused fee types will be returned to msg sender.
6262pub fn submit_tx (
6363 contract : Addr ,
6464 connection_id : String ,
6565 interchain_account_id : String ,
6666 msgs : Vec < Any > ,
6767 memo : String ,
6868 timeout : u64 ,
69- fee : Fee ,
69+ fee : Option < Fee > ,
7070) -> CosmosMsg {
7171 MsgSubmitTx {
7272 from_address : contract. to_string ( ) ,
@@ -75,7 +75,7 @@ pub fn submit_tx(
7575 msgs,
7676 memo,
7777 timeout,
78- fee : Some ( fee ) ,
78+ fee,
7979 }
8080 . into ( )
8181}
@@ -84,29 +84,37 @@ pub fn submit_tx(
8484///
8585/// * **deps** is contract `Deps`
8686/// * **denom** is a denom which can be used. Function will return Err if denom is not in a list of fee denoms.
87- pub fn query_denom_min_ibc_fee ( deps : Deps , denom : & str ) -> StdResult < Fee > {
87+ pub fn query_denom_min_ibc_fee ( deps : Deps , denom : & str ) -> StdResult < Option < Fee > > {
8888 let fee = query_min_fee ( deps) ?;
89- Ok ( Fee {
90- recv_fee : fee_with_denom ( fee. recv_fee , denom) ?,
91- ack_fee : fee_with_denom ( fee. ack_fee , denom) ?,
92- timeout_fee : fee_with_denom ( fee. timeout_fee , denom) ?,
93- } )
89+ if let Some ( fee) = fee {
90+ Ok ( Some ( Fee {
91+ recv_fee : fee_with_denom ( fee. recv_fee , denom) ?,
92+ ack_fee : fee_with_denom ( fee. ack_fee , denom) ?,
93+ timeout_fee : fee_with_denom ( fee. timeout_fee , denom) ?,
94+ } ) )
95+ } else {
96+ Ok ( None )
97+ }
9498}
9599
96100/// Queries chain for all possible minimal fee. Each fee in Vec is a different denom.
101+ /// If fees are disabled, returns None.
97102///
98103/// * **deps** is contract `Deps`
99- pub fn query_min_fee ( deps : Deps ) -> StdResult < Fee > {
104+ pub fn query_min_fee ( deps : Deps ) -> StdResult < Option < Fee > > {
100105 let querier = FeerefunderQuerier :: new ( & deps. querier ) ;
101106 let params = querier. params ( ) ?;
102107 let params_inner = params
103108 . params
104109 . ok_or_else ( || StdError :: generic_err ( "no params found for feerefunder" ) ) ?;
105- let min_fee = params_inner
106- . min_fee
107- . ok_or_else ( || StdError :: generic_err ( "no minimum fee param for feerefunder" ) ) ?;
108-
109- Ok ( min_fee)
110+ if params_inner. fee_enabled {
111+ let min_fee = params_inner
112+ . min_fee
113+ . ok_or_else ( || StdError :: generic_err ( "no minimum fee param for feerefunder" ) ) ?;
114+ Ok ( Some ( min_fee) )
115+ } else {
116+ Ok ( None )
117+ }
110118}
111119
112120fn fee_with_denom ( fee : Vec < Coin > , denom : & str ) -> StdResult < Vec < Coin > > {
0 commit comments