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 }