54 lines
2.0 KiB
Solidity
54 lines
2.0 KiB
Solidity
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
pragma solidity >=0.8.9;
|
||
|
|
||
|
import "../libraries/MsgDataTypes.sol";
|
||
|
import "../libraries/MessageSenderLib.sol";
|
||
|
|
||
|
import "./MessageReceiverApp.sol";
|
||
|
|
||
|
abstract contract MessageSenderApp is MessageReceiverApp {
|
||
|
// ============== Utility functions called by apps ==============
|
||
|
|
||
|
/**
|
||
|
* @notice Sends a message associated with a transfer to a contract on another chain.
|
||
|
* @param _receiver The address of the destination app contract.
|
||
|
* @param _token The address of the token to be sent.
|
||
|
* @param _amount The amount of tokens to be sent.
|
||
|
* @param _dstChainId The destination chain ID.
|
||
|
* @param _nonce A number input to guarantee uniqueness of transferId. Can be timestamp in practice.
|
||
|
* @param _maxSlippage The max slippage accepted, given as percentage in point (pip). Eg. 5000 means 0.5%.
|
||
|
* Must be greater than minimalMaxSlippage. Receiver is guaranteed to receive at least
|
||
|
* (100% - max slippage percentage) * amount or the transfer can be refunded.
|
||
|
* Only applicable to the {MsgDataTypes.BridgeSendType.Liquidity}.
|
||
|
* @param _message Arbitrary message bytes to be decoded by the destination app contract.
|
||
|
* If message is empty, only the token transfer will be sent
|
||
|
* param _bridgeSendType One of the {BridgeSendType} enum.
|
||
|
* @param _fee The fee amount to pay to MessageBus.
|
||
|
* @return The transfer ID.
|
||
|
*/
|
||
|
function sendMessageWithTransfer(
|
||
|
address _receiver,
|
||
|
address _token,
|
||
|
uint256 _amount,
|
||
|
uint64 _dstChainId,
|
||
|
uint64 _nonce,
|
||
|
uint32 _maxSlippage,
|
||
|
bytes memory _message,
|
||
|
uint256 _fee
|
||
|
) internal returns (bytes32) {
|
||
|
return
|
||
|
MessageSenderLib.sendMessageWithTransfer(
|
||
|
_receiver,
|
||
|
_token,
|
||
|
_amount,
|
||
|
_dstChainId,
|
||
|
_nonce,
|
||
|
_maxSlippage,
|
||
|
_message,
|
||
|
messageBus,
|
||
|
_fee
|
||
|
);
|
||
|
}
|
||
|
}
|