pragma solidity ^0.4.24; contract IInterstellarEncoderV3 { uint256 constant CLEAR_HIGH = 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff; uint256 public constant MAGIC_NUMBER = 42; // Interstellar Encoding Magic Number. uint256 public constant CHAIN_ID = 1; // Ethereum mainet. uint256 public constant CURRENT_LAND = 1; // 1 is Atlantis, 0 is NaN. enum ObjectClass { NaN, LAND, APOSTLE, OBJECT_CLASS_COUNT } function registerNewObjectClass(address _objectContract, uint8 objectClass) public; function encodeTokenId(address _tokenAddress, uint8 _objectClass, uint128 _objectIndex) public view returns (uint256 _tokenId); function encodeTokenIdForObjectContract( address _tokenAddress, address _objectContract, uint128 _objectId) public view returns (uint256 _tokenId); function encodeTokenIdForOuterObjectContract( address _objectContract, address nftAddress, address _originNftAddress, uint128 _objectId, uint16 _producerId, uint8 _convertType) public view returns (uint256); function getContractAddress(uint256 _tokenId) public view returns (address); function getObjectId(uint256 _tokenId) public view returns (uint128 _objectId); function getObjectClass(uint256 _tokenId) public view returns (uint8); function getObjectAddress(uint256 _tokenId) public view returns (address); function getProducerId(uint256 _tokenId) public view returns (uint16); function getOriginAddress(uint256 _tokenId) public view returns (address); }