You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.8 KiB
80 lines
3.8 KiB
// 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 ERC1363 compliant contract, as defined in the
|
|
* https://eips.ethereum.org/EIPS/eip-1363[EIP].
|
|
*
|
|
* Defines a interface for ERC20 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);
|
|
}
|
|
|