// 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); }