aere-contracts/contracts/stablecoins/IHypMailbox.sol
Aere Network a13a649b77
Some checks are pending
contracts-ci / Install (lockfile) → compile → full test suite (push) Waiting to run
contracts-ci / PQC known-answer tests (NIST vectors) (push) Waiting to run
contracts-ci / Coverage (scoped, with artifacts) (push) Waiting to run
Initial public release
Aere Network public source. Everything here can be checked against the live
chain (chain id 2800, https://rpc.aere.network).

Scope note, stated up front rather than buried: consensus on chain 2800 is
classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at
the signature, precompile, account and transport layers. Nothing here makes the
consensus post-quantum, and no document in it should be read as claiming so.
2026-07-20 01:02:37 +03:00

61 lines
2.5 KiB
Solidity

// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity 0.8.23;
/**
* @title IHypMailbox — minimal Hyperlane Mailbox interface used by AERE
* Warp Routes. Subset of the at-hyperlane-xyz/core canonical interface.
*
* @dev We vendor the minimal surface here instead of pulling the full
* at-hyperlane-xyz/core dependency tree to keep the AERE contracts
* compilation isolated. When Hyperlane registry merge lands, the
* deployed Mailbox address gets plugged into our Warp Route
* constructors and we conform to this same interface.
*/
interface IHypMailbox {
/// @notice Dispatch a message to a remote chain.
/// @param destinationDomain Hyperlane "domain" (e.g. 1 for Ethereum mainnet, 2800 for AERE).
/// @param recipientAddress The address (bytes32-padded) of the recipient on the remote chain.
/// @param messageBody Arbitrary application payload.
/// @return messageId Hash of the dispatched message.
function dispatch(
uint32 destinationDomain,
bytes32 recipientAddress,
bytes calldata messageBody
) external payable returns (bytes32 messageId);
/// @notice Quote the IGP (Interchain Gas Paymaster) fee for a dispatch.
function quoteDispatch(
uint32 destinationDomain,
bytes32 recipientAddress,
bytes calldata messageBody
) external view returns (uint256 fee);
/// @notice The configured local domain id.
function localDomain() external view returns (uint32);
}
/**
* @title IHypMessageRecipient — application contract surface invoked by the
* Mailbox when a verified message arrives.
*/
interface IHypMessageRecipient {
/// @notice Called by the Mailbox after the configured ISM has verified
/// the message.
/// @param origin Hyperlane domain id of the source chain.
/// @param sender The bytes32-padded address of the dispatcher on the
/// source chain (must match a trusted-router enrolment).
/// @param body Arbitrary payload set by the sender.
function handle(uint32 origin, bytes32 sender, bytes calldata body) external payable;
}
/// @dev bytes32 ↔ address conversion helpers used throughout Warp Route enrollment.
library TypeCasts {
function addressToBytes32(address a) internal pure returns (bytes32) {
return bytes32(uint256(uint160(a)));
}
function bytes32ToAddress(bytes32 b) internal pure returns (address) {
return address(uint160(uint256(b)));
}
}