github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/src/universal/IOptimismMintableERC721.sol (about)

     1  // SPDX-License-Identifier: MIT
     2  pragma solidity ^0.8.0;
     3  
     4  import { IERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
     5  
     6  /// @title IOptimismMintableERC721
     7  /// @notice Interface for contracts that are compatible with the OptimismMintableERC721 standard.
     8  ///         Tokens that follow this standard can be easily transferred across the ERC721 bridge.
     9  interface IOptimismMintableERC721 is IERC721Enumerable {
    10      /// @notice Emitted when a token is minted.
    11      /// @param account Address of the account the token was minted to.
    12      /// @param tokenId Token ID of the minted token.
    13      event Mint(address indexed account, uint256 tokenId);
    14  
    15      /// @notice Emitted when a token is burned.
    16      /// @param account Address of the account the token was burned from.
    17      /// @param tokenId Token ID of the burned token.
    18      event Burn(address indexed account, uint256 tokenId);
    19  
    20      /// @notice Mints some token ID for a user, checking first that contract recipients
    21      ///         are aware of the ERC721 protocol to prevent tokens from being forever locked.
    22      /// @param _to      Address of the user to mint the token for.
    23      /// @param _tokenId Token ID to mint.
    24      function safeMint(address _to, uint256 _tokenId) external;
    25  
    26      /// @notice Burns a token ID from a user.
    27      /// @param _from    Address of the user to burn the token from.
    28      /// @param _tokenId Token ID to burn.
    29      function burn(address _from, uint256 _tokenId) external;
    30  
    31      /// @notice Chain ID of the chain where the remote token is deployed.
    32      function REMOTE_CHAIN_ID() external view returns (uint256);
    33  
    34      /// @notice Address of the token on the remote domain.
    35      function REMOTE_TOKEN() external view returns (address);
    36  
    37      /// @notice Address of the ERC721 bridge on this network.
    38      function BRIDGE() external view returns (address);
    39  
    40      /// @notice Chain ID of the chain where the remote token is deployed.
    41      function remoteChainId() external view returns (uint256);
    42  
    43      /// @notice Address of the token on the remote domain.
    44      function remoteToken() external view returns (address);
    45  
    46      /// @notice Address of the ERC721 bridge on this network.
    47      function bridge() external view returns (address);
    48  }