1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1363.sol)
- pragma solidity ^0.8.20;
- import {IERC20} from "./IERC20.sol";
- import {IERC165} from "./IERC165.sol";
- /**
- * @dev Interface of an ERC-1363 compliant contract, as defined in the
- * https://eips.ethereum.org/EIPS/eip-1363[ERC].
- *
- * Defines a interface for ERC-20 tokens that supports executing recipient
- * code after `transfer` or `transferFrom`, or spender code after `approve`.
- */
- interface IERC1363 is IERC165, IERC20 {
- /*
- * 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 Transfer tokens from `msg.sender` to another address and then call `onTransferReceived` on receiver
- * @param to address The address which you want to transfer to
- * @param amount uint256 The amount of tokens to be transferred
- * @return true unless throwing
- */
- function transferAndCall(address to, uint256 amount) external returns (bool);
- /**
- * @dev Transfer tokens from `msg.sender` to another address and then call `onTransferReceived` on receiver
- * @param to address The address which you want to transfer to
- * @param amount uint256 The amount of tokens to be transferred
- * @param data bytes Additional data with no specified format, sent in call to `to`
- * @return true unless throwing
- */
- function transferAndCall(address to, uint256 amount, bytes memory data) external returns (bool);
- /**
- * @dev Transfer tokens from one address to another and then call `onTransferReceived` on receiver
- * @param from address The address which you want to send tokens from
- * @param to address The address which you want to transfer to
- * @param amount uint256 The amount of tokens to be transferred
- * @return true unless throwing
- */
- function transferFromAndCall(address from, address to, uint256 amount) external returns (bool);
- /**
- * @dev Transfer tokens from one address to another and then call `onTransferReceived` on receiver
- * @param from address The address which you want to send tokens from
- * @param to address The address which you want to transfer to
- * @param amount uint256 The amount of tokens to be transferred
- * @param data bytes Additional data with no specified format, sent in call to `to`
- * @return true unless throwing
- */
- function transferFromAndCall(address from, address to, uint256 amount, bytes memory data) external returns (bool);
- /**
- * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender
- * and then call `onApprovalReceived` on spender.
- * @param spender address The address which will spend the funds
- * @param amount uint256 The amount of tokens to be spent
- */
- function approveAndCall(address spender, uint256 amount) external returns (bool);
- /**
- * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender
- * and then call `onApprovalReceived` on spender.
- * @param spender address The address which will spend the funds
- * @param amount uint256 The amount of tokens to be spent
- * @param data bytes Additional data with no specified format, sent in call to `spender`
- */
- function approveAndCall(address spender, uint256 amount, bytes memory data) external returns (bool);
- }
|