// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { IERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; /// @title IOptimismMintableERC721 /// @notice Interface for contracts that are compatible with the OptimismMintableERC721 standard. /// Tokens that follow this standard can be easily transferred across the ERC721 bridge. interface IOptimismMintableERC721 is IERC721Enumerable { /// @notice Emitted when a token is minted. /// @param account Address of the account the token was minted to. /// @param tokenId Token ID of the minted token. event Mint(address indexed account, uint256 tokenId); /// @notice Emitted when a token is burned. /// @param account Address of the account the token was burned from. /// @param tokenId Token ID of the burned token. event Burn(address indexed account, uint256 tokenId); /// @notice Mints some token ID for a user, checking first that contract recipients /// are aware of the ERC721 protocol to prevent tokens from being forever locked. /// @param _to Address of the user to mint the token for. /// @param _tokenId Token ID to mint. function safeMint(address _to, uint256 _tokenId) external; /// @notice Burns a token ID from a user. /// @param _from Address of the user to burn the token from. /// @param _tokenId Token ID to burn. function burn(address _from, uint256 _tokenId) external; /// @notice Chain ID of the chain where the remote token is deployed. function REMOTE_CHAIN_ID() external view returns (uint256); /// @notice Address of the token on the remote domain. function REMOTE_TOKEN() external view returns (address); /// @notice Address of the ERC721 bridge on this network. function BRIDGE() external view returns (address); /// @notice Chain ID of the chain where the remote token is deployed. function remoteChainId() external view returns (uint256); /// @notice Address of the token on the remote domain. function remoteToken() external view returns (address); /// @notice Address of the ERC721 bridge on this network. function bridge() external view returns (address); }