MockRelayerV2
Inherits: BaseAdapter
Title: MockRelayerV2
Lightweight mock relayer for testing atomic token transfers and fulfillments
Simulates real-world relayer behavior by atomically transferring funds to receiver and calling fulfill(). Used in MetaIntentV2 tests to replace non-atomic test patterns. Demonstrates proper BaseAdapter extension pattern.
Functions
constructor
constructor(address payable _receiver) BaseAdapter(_receiver);
Parameters
| Name | Type | Description |
|---|---|---|
_receiver | address payable | The address of the MetaIntentReceiver contract |
relayAndFulfill
Atomically transfer funds to receiver and call fulfill
The relayer must already hold the tokens being transferred. Uses BaseAdapter._fulfillToReceiver() for the actual transfer and fulfill call.
function relayAndFulfill(RelayedOrderOutput calldata output) public payable returns (bytes32 payloadHash);
Parameters
| Name | Type | Description |
|---|---|---|
output | RelayedOrderOutput | The relayed order output to fulfill |
Returns
| Name | Type | Description |
|---|---|---|
payloadHash | bytes32 | The payload hash returned by the receiver |
relayAndFulfillERC20
Convenience function for tests: fund relayer with ERC20, then relay and fulfill
Pulls ERC20 from caller, transfers to receiver, and fulfills
function relayAndFulfillERC20(RelayedOrderOutput calldata output) external returns (bytes32 payloadHash);
Parameters
| Name | Type | Description |
|---|---|---|
output | RelayedOrderOutput | The relayed order output to fulfill |
relayAndFulfillNative
Convenience function for tests: fund relayer with native token, then relay and fulfill
Must be called with sufficient msg.value
function relayAndFulfillNative(RelayedOrderOutput calldata output) external payable returns (bytes32 payloadHash);
Parameters
| Name | Type | Description |
|---|---|---|
output | RelayedOrderOutput | The relayed order output to fulfill |
_decodeMessage
Decode a message into RelayedOrderOutput (mock implementation)
For the mock relayer, this simply returns the passed output directly. Real protocol adapters would decode their specific message format here.
function _decodeMessage(
bytes calldata /*message*/
)
internal
pure
override
returns (RelayedOrderOutput memory output);
Returns
| Name | Type | Description |
|---|---|---|
output | RelayedOrderOutput | Empty output for mock - real implementations override properly |
Events
RelayAndFulfillCompleted
Emitted when a relay and fulfillment is completed
event RelayAndFulfillCompleted(bytes32 indexed orderId, bytes32 indexed outputHash, address token, uint256 amount);
Errors
InsufficientNativeToken
Revert when insufficient native token provided
error InsufficientNativeToken(uint256 provided, uint256 required);