123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // SPDX-License-Identifier: MIT
- pragma solidity >=0.8.4;
- /**
- * @dev Interface for ERC-7786 source gateways.
- *
- * See ERC-7786 for more details
- */
- interface IERC7786GatewaySource {
- /**
- * @dev Event emitted when a message is created. If `outboxId` is zero, no further processing is necessary. If
- * `outboxId` is not zero, then further (gateway specific, and non-standardized) action is required.
- */
- event MessageSent(
- bytes32 indexed sendId,
- bytes sender, // Binary Interoperable Address
- bytes receiver, // Binary Interoperable Address
- bytes payload,
- uint256 value,
- bytes[] attributes
- );
- /// @dev This error is thrown when a message creation fails because of an unsupported attribute being specified.
- error UnsupportedAttribute(bytes4 selector);
- /// @dev Getter to check whether an attribute is supported or not.
- function supportsAttribute(bytes4 selector) external view returns (bool);
- /**
- * @dev Endpoint for creating a new message. If the message requires further (gateway specific) processing before
- * it can be sent to the destination chain, then a non-zero `outboxId` must be returned. Otherwise, the
- * message MUST be sent and this function must return 0.
- *
- * * MUST emit a {MessageSent} event.
- *
- * If any of the `attributes` is not supported, this function SHOULD revert with an {UnsupportedAttribute} error.
- * Other errors SHOULD revert with errors not specified in ERC-7786.
- */
- function sendMessage(
- bytes calldata recipient, // Binary Interoperable Address
- bytes calldata payload,
- bytes[] calldata attributes
- ) external payable returns (bytes32 sendId);
- }
- /**
- * @dev Interface for the ERC-7786 client contract (receiver).
- *
- * See ERC-7786 for more details
- */
- interface IERC7786Receiver {
- /**
- * @dev Endpoint for receiving cross-chain message.
- *
- * This function may be called directly by the gateway.
- */
- function receiveMessage(
- bytes32 receiveId,
- bytes calldata sender, // Binary Interoperable Address
- bytes calldata payload
- ) external payable returns (bytes4);
- }
|