pub trait ChainFeeMethodsExt<Chain> {
// Required methods
fn ibc_token_transfer_with_fee<Counterparty>(
&self,
port_id: &TaggedPortIdRef<'_, Chain, Counterparty>,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
sender: &MonoTagged<Chain, &Wallet>,
recipient: &MonoTagged<Counterparty, &WalletAddress>,
send_amount: &TaggedTokenRef<'_, Chain>,
receive_fee: &TaggedTokenRef<'_, Chain>,
ack_fee: &TaggedTokenRef<'_, Chain>,
timeout_fee: &TaggedTokenRef<'_, Chain>,
timeout: Duration
) -> Result<Vec<IbcEventWithHeight>, Error>;
fn pay_packet_fee<Counterparty>(
&self,
port_id: &TaggedPortIdRef<'_, Chain, Counterparty>,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
sequence: &DualTagged<Chain, Counterparty, Sequence>,
payer: &MonoTagged<Chain, &Wallet>,
receive_fee: &TaggedTokenRef<'_, Chain>,
ack_fee: &TaggedTokenRef<'_, Chain>,
timeout_fee: &TaggedTokenRef<'_, Chain>
) -> Result<Vec<IbcEventWithHeight>, Error>;
fn register_counterparty_payee<Counterparty>(
&self,
wallet: &MonoTagged<Chain, &Wallet>,
counterparty_payee: &MonoTagged<Counterparty, &WalletAddress>,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
port_id: &TaggedPortIdRef<'_, Chain, Counterparty>
) -> Result<(), Error>;
fn register_payee<Counterparty>(
&self,
wallet: &MonoTagged<Chain, &Wallet>,
payee: &MonoTagged<Chain, &WalletAddress>,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
port_id: &TaggedPortIdRef<'_, Chain, Counterparty>
) -> Result<(), Error>;
fn query_counterparty_payee<Counterparty>(
&self,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
address: &MonoTagged<Chain, &WalletAddress>
) -> Result<Option<MonoTagged<Counterparty, WalletAddress>>, Error>;
fn query_incentivized_packets<Counterparty>(
&self,
channel_id: &TaggedChannelIdRef<'_, Chain, Counterparty>,
port_id: &TaggedPortIdRef<'_, Chain, Counterparty>
) -> Result<Vec<IdentifiedPacketFees>, Error>;
}