1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
- pragma solidity ^0.8.20;
- import {IERC20} from "./IERC20.sol";
- import {IERC165} from "./IERC165.sol";
- /**
- * @title IERC1363
- * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
- *
- * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
- * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
- */
- interface IERC1363 is IERC20, IERC165 {
- /*
- * Note: the ERC-165 identifier for this interface is 0xb0202a11.
- * 0xb0202a11 ===
- * bytes4(keccak256('transferAndCall(address,uint256)')) ^
- * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
- * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
- * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
- * bytes4(keccak256('approveAndCall(address,uint256)')) ^
- * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
- */
- /**
- * @dev Moves a `value` amount of tokens from the caller's account to `to`
- * and then calls {IERC1363Receiver-onTransferReceived} on `to`.
- * @param to The address which you want to transfer to.
- * @param value The amount of tokens to be transferred.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function transferAndCall(address to, uint256 value) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from the caller's account to `to`
- * and then calls {IERC1363Receiver-onTransferReceived} on `to`.
- * @param to The address which you want to transfer to.
- * @param value The amount of tokens to be transferred.
- * @param data Additional data with no specified format, sent in call to `to`.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
- * and then calls {IERC1363Receiver-onTransferReceived} on `to`.
- * @param from The address which you want to send tokens from.
- * @param to The address which you want to transfer to.
- * @param value The amount of tokens to be transferred.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
- * and then calls {IERC1363Receiver-onTransferReceived} on `to`.
- * @param from The address which you want to send tokens from.
- * @param to The address which you want to transfer to.
- * @param value The amount of tokens to be transferred.
- * @param data Additional data with no specified format, sent in call to `to`.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
- /**
- * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
- * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
- * @param spender The address which will spend the funds.
- * @param value The amount of tokens to be spent.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function approveAndCall(address spender, uint256 value) external returns (bool);
- /**
- * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
- * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
- * @param spender The address which will spend the funds.
- * @param value The amount of tokens to be spent.
- * @param data Additional data with no specified format, sent in call to `spender`.
- * @return A boolean value indicating whether the operation succeeded unless throwing.
- */
- function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
- }
|