packages/contracts-rfq/contracts/interfaces/IZapRecipient.sol
// 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);
}