Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MockRelayerV2

Git Source

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

NameTypeDescription
_receiveraddress payableThe 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

NameTypeDescription
outputRelayedOrderOutputThe relayed order output to fulfill

Returns

NameTypeDescription
payloadHashbytes32The 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

NameTypeDescription
outputRelayedOrderOutputThe 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

NameTypeDescription
outputRelayedOrderOutputThe 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

NameTypeDescription
outputRelayedOrderOutputEmpty 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);