127 lines
5.3 KiB
Solidity
127 lines
5.3 KiB
Solidity
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
pragma solidity >=0.8.9;
|
||
|
|
||
|
import "../message/libraries/MsgDataTypes.sol";
|
||
|
|
||
|
interface IMessageBus {
|
||
|
function liquidityBridge() external view returns (address);
|
||
|
|
||
|
function pegBridge() external view returns (address);
|
||
|
|
||
|
function pegBridgeV2() external view returns (address);
|
||
|
|
||
|
function pegVault() external view returns (address);
|
||
|
|
||
|
function pegVaultV2() external view returns (address);
|
||
|
|
||
|
/**
|
||
|
* @notice Calculates the required fee for the message.
|
||
|
* @param _message Arbitrary message bytes to be decoded by the destination app contract.
|
||
|
@ @return The required fee.
|
||
|
*/
|
||
|
function calcFee(bytes calldata _message) external view returns (uint256);
|
||
|
|
||
|
/**
|
||
|
* @notice Sends a message to a contract on another chain.
|
||
|
* Sender needs to make sure the uniqueness of the message Id, which is computed as
|
||
|
* hash(type.MessageOnly, sender, receiver, srcChainId, srcTxHash, dstChainId, message).
|
||
|
* If messages with the same Id are sent, only one of them will succeed at dst chain..
|
||
|
* A fee is charged in the native gas token.
|
||
|
* @param _receiver The address of the destination app contract.
|
||
|
* @param _dstChainId The destination chain ID.
|
||
|
* @param _message Arbitrary message bytes to be decoded by the destination app contract.
|
||
|
*/
|
||
|
function sendMessage(
|
||
|
address _receiver,
|
||
|
uint256 _dstChainId,
|
||
|
bytes calldata _message
|
||
|
) external payable;
|
||
|
|
||
|
/**
|
||
|
* @notice Sends a message associated with a transfer to a contract on another chain.
|
||
|
* If messages with the same srcTransferId are sent, only one of them will succeed at dst chain..
|
||
|
* A fee is charged in the native token.
|
||
|
* @param _receiver The address of the destination app contract.
|
||
|
* @param _dstChainId The destination chain ID.
|
||
|
* @param _srcBridge The bridge contract to send the transfer with.
|
||
|
* @param _srcTransferId The transfer ID.
|
||
|
* @param _dstChainId The destination chain ID.
|
||
|
* @param _message Arbitrary message bytes to be decoded by the destination app contract.
|
||
|
*/
|
||
|
function sendMessageWithTransfer(
|
||
|
address _receiver,
|
||
|
uint256 _dstChainId,
|
||
|
address _srcBridge,
|
||
|
bytes32 _srcTransferId,
|
||
|
bytes calldata _message
|
||
|
) external payable;
|
||
|
|
||
|
/**
|
||
|
* @notice Withdraws message fee in the form of native gas token.
|
||
|
* @param _account The address receiving the fee.
|
||
|
* @param _cumulativeFee The cumulative fee credited to the account. Tracked by SGN.
|
||
|
* @param _sigs The list of signatures sorted by signing addresses in ascending order. A withdrawal must be
|
||
|
* signed-off by +2/3 of the sigsVerifier's current signing power to be delivered.
|
||
|
* @param _signers The sorted list of signers.
|
||
|
* @param _powers The signing powers of the signers.
|
||
|
*/
|
||
|
function withdrawFee(
|
||
|
address _account,
|
||
|
uint256 _cumulativeFee,
|
||
|
bytes[] calldata _sigs,
|
||
|
address[] calldata _signers,
|
||
|
uint256[] calldata _powers
|
||
|
) external;
|
||
|
|
||
|
/**
|
||
|
* @notice Execute a message with a successful transfer.
|
||
|
* @param _message Arbitrary message bytes originated from and encoded by the source app contract
|
||
|
* @param _transfer The transfer info.
|
||
|
* @param _sigs The list of signatures sorted by signing addresses in ascending order. A relay must be signed-off by
|
||
|
* +2/3 of the sigsVerifier's current signing power to be delivered.
|
||
|
* @param _signers The sorted list of signers.
|
||
|
* @param _powers The signing powers of the signers.
|
||
|
*/
|
||
|
function executeMessageWithTransfer(
|
||
|
bytes calldata _message,
|
||
|
MsgDataTypes.TransferInfo calldata _transfer,
|
||
|
bytes[] calldata _sigs,
|
||
|
address[] calldata _signers,
|
||
|
uint256[] calldata _powers
|
||
|
) external payable;
|
||
|
|
||
|
/**
|
||
|
* @notice Execute a message with a refunded transfer.
|
||
|
* @param _message Arbitrary message bytes originated from and encoded by the source app contract
|
||
|
* @param _transfer The transfer info.
|
||
|
* @param _sigs The list of signatures sorted by signing addresses in ascending order. A relay must be signed-off by
|
||
|
* +2/3 of the sigsVerifier's current signing power to be delivered.
|
||
|
* @param _signers The sorted list of signers.
|
||
|
* @param _powers The signing powers of the signers.
|
||
|
*/
|
||
|
function executeMessageWithTransferRefund(
|
||
|
bytes calldata _message, // the same message associated with the original transfer
|
||
|
MsgDataTypes.TransferInfo calldata _transfer,
|
||
|
bytes[] calldata _sigs,
|
||
|
address[] calldata _signers,
|
||
|
uint256[] calldata _powers
|
||
|
) external payable;
|
||
|
|
||
|
/**
|
||
|
* @notice Execute a message not associated with a transfer.
|
||
|
* @param _message Arbitrary message bytes originated from and encoded by the source app contract
|
||
|
* @param _sigs The list of signatures sorted by signing addresses in ascending order. A relay must be signed-off by
|
||
|
* +2/3 of the sigsVerifier's current signing power to be delivered.
|
||
|
* @param _signers The sorted list of signers.
|
||
|
* @param _powers The signing powers of the signers.
|
||
|
*/
|
||
|
function executeMessage(
|
||
|
bytes calldata _message,
|
||
|
MsgDataTypes.RouteInfo calldata _route,
|
||
|
bytes[] calldata _sigs,
|
||
|
address[] calldata _signers,
|
||
|
uint256[] calldata _powers
|
||
|
) external payable;
|
||
|
}
|