contract IERC1155 is IERC165 {
    event TransferSingle(address indexed _operator,address indexed _from,address indexed _to,uint256 _id,uint256 _value);
    
    event TransferBatch(address indexed _operator,address indexed _from,address indexed _to,uint256[] _ids,uint256[] _values);
    
    // Must emot when approval for a second party/operator address to manager all tokens for an owner address is enabled or disabled
    event ApprovalForAll(address indexed _owner,address indexed _operator,bool _approved);
    
    function safeTransferFrom(address _from,address _to,uint256 _id,uint256 _value,bytes calldata _data) external;
    
    function safeBatchTransferFrom(address _from,address _to,uint256[] calldata _ids,uint256[] calldata _values,bytes calldata _data) external;
    
    // Get the balance of an account's Tokens
    function balanceOf(address _owner,uint256 _id) external view returns (uint256);
    
    function balanceOfBatch(address[] calldata _owners,uint256[] calldata _ids) external view returns (uint256[] memory);

    // Enable or disable approval for a third party to manage all of the caller's tokens.
    function setApprovalForAll(address _operator,bool _approved) external;
    
    // Queries the approval status of an operator for a given owner.
    function isApprovedForAll(address _owner,address _operator) external view returns (bool);
}
// Multi Token Standard
function setApprovalForAll(address _operator,bool _approved) external;
// Enable or disable approval for a third party to manage all of the caller's tokens.