synapsecns/sanguine

View on GitHub
packages/contracts-rfq/contracts/interfaces/IZapRecipient.sol

Summary

Maintainability
Test Coverage
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/// @notice Interface for contracts that can perform Zap operations. Such contracts could be used as Recipients
/// in a FastBridge transaction that includes a Zap operation. The Zap Data should include instructions on how
/// exactly the Zap operation should be executed, which would typically include the target address and calldata
/// to use. The exact implementation of the Zap Data encoding is up to the Recipient contract.
interface IZapRecipient {
    /// @notice Performs a Zap operation with the given token and amount according to the provided Zap data.
    /// @param token    The address of the token being used for the Zap operation.
    /// @param amount   The amount of tokens to be used.
    /// @param zapData  The encoded data specifying how the Zap operation should be executed.
    /// @return         The function selector to indicate successful execution.
    function zap(address token, uint256 amount, bytes memory zapData) external payable returns (bytes4);
}