33 lines
1.4 KiB
Solidity
33 lines
1.4 KiB
Solidity
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "./IERC4671.sol";
|
|
|
|
interface IERC4671Delegate is IERC4671 {
|
|
/// @notice Grant one-time minting right to `operator` for `owner`
|
|
/// An allowed operator can call the function to transfer rights.
|
|
/// @param operator Address allowed to mint a token
|
|
/// @param owner Address for whom `operator` is allowed to mint a token
|
|
function delegate(address operator, address owner) external;
|
|
|
|
/// @notice Grant one-time minting right to a list of `operators` for a corresponding list of `owners`
|
|
/// An allowed operator can call the function to transfer rights.
|
|
/// @param operators Addresses allowed to mint
|
|
/// @param owners Addresses for whom `operators` are allowed to mint a token
|
|
function delegateBatch(address[] memory operators, address[] memory owners) external;
|
|
|
|
/// @notice Mint a token. Caller must have the right to mint for the owner.
|
|
/// @param owner Address for whom the token is minted
|
|
function mint(address owner) external;
|
|
|
|
/// @notice Mint tokens to multiple addresses. Caller must have the right to mint for all owners.
|
|
/// @param owners Addresses for whom the tokens are minted
|
|
function mintBatch(address[] memory owners) external;
|
|
|
|
/// @notice Get the issuer of a token
|
|
/// @param tokenId Identifier of the token
|
|
/// @return Address who minted `tokenId`
|
|
function issuerOf(uint256 tokenId) external view returns (address);
|
|
}
|