// SPDX-License-Identifier: MIT pragma solidity 0.8.0; import "./IERC1155.sol"; import "./IERC1155Receiver.sol"; import "./IERC1155Views.sol"; import "./IEthItemInteroperableInterface.sol"; import "./IBaseTokenData.sol"; interface IEthItemMainInterface is IERC1155, IERC1155Views, IBaseTokenData { function init( address interfaceModel, string calldata name, string calldata symbol ) external; function mainInterfaceVersion() external pure returns(uint256 ethItemInteroperableVersion); function toInteroperableInterfaceAmount(uint256 objectId, uint256 ethItemAmount) external view returns (uint256 interoperableInterfaceAmount); function toMainInterfaceAmount(uint256 objectId, uint256 erc20WrapperAmount) external view returns (uint256 mainInterfaceAmount); function interoperableInterfaceModel() external view returns (address, uint256); function asInteroperable(uint256 objectId) external view returns (IEthItemInteroperableInterface); function emitTransferSingleEvent(address sender, address from, address to, uint256 objectId, uint256 amount) external; function mint(uint256 amount, string calldata partialUri) external returns (uint256, address); function burn( uint256 objectId, uint256 amount ) external; function burnBatch( uint256[] calldata objectIds, uint256[] calldata amounts ) external; event NewItem(uint256 indexed objectId, address indexed tokenAddress); event Mint(uint256 objectId, address tokenAddress, uint256 amount); }