{
    "schemaVersion": "2.0.0",
    "contractName": "ERC1155Mintable",
    "compilerOutput": {
        "abi": [
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "internalType": "address", "name": "owner", "type": "address" },
                    { "indexed": true, "internalType": "address", "name": "operator", "type": "address" },
                    { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" }
                ],
                "name": "ApprovalForAll",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "internalType": "address", "name": "operator", "type": "address" },
                    { "indexed": true, "internalType": "address", "name": "from", "type": "address" },
                    { "indexed": true, "internalType": "address", "name": "to", "type": "address" },
                    { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" },
                    { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }
                ],
                "name": "TransferBatch",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "internalType": "address", "name": "operator", "type": "address" },
                    { "indexed": true, "internalType": "address", "name": "from", "type": "address" },
                    { "indexed": true, "internalType": "address", "name": "to", "type": "address" },
                    { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" },
                    { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }
                ],
                "name": "TransferSingle",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": false, "internalType": "string", "name": "value", "type": "string" },
                    { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" }
                ],
                "name": "URI",
                "type": "event"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "ERC1155_BATCH_RECEIVED",
                "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "ERC1155_RECEIVED",
                "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [
                    { "internalType": "address", "name": "owner", "type": "address" },
                    { "internalType": "uint256", "name": "id", "type": "uint256" }
                ],
                "name": "balanceOf",
                "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [
                    { "internalType": "address[]", "name": "owners", "type": "address[]" },
                    { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
                ],
                "name": "balanceOfBatch",
                "outputs": [{ "internalType": "uint256[]", "name": "balances_", "type": "uint256[]" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "string", "name": "uri", "type": "string" },
                    { "internalType": "bool", "name": "isNF", "type": "bool" }
                ],
                "name": "create",
                "outputs": [{ "internalType": "uint256", "name": "type_", "type": "uint256" }],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "uint256", "name": "type_", "type": "uint256" },
                    { "internalType": "string", "name": "uri", "type": "string" }
                ],
                "name": "createWithType",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "name": "creators",
                "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "getNonFungibleBaseType",
                "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "getNonFungibleIndex",
                "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [
                    { "internalType": "address", "name": "owner", "type": "address" },
                    { "internalType": "address", "name": "operator", "type": "address" }
                ],
                "name": "isApprovedForAll",
                "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "isFungible",
                "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "isNonFungible",
                "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "isNonFungibleBaseType",
                "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "isNonFungibleItem",
                "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "pure",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "name": "maxIndex",
                "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "uint256", "name": "id", "type": "uint256" },
                    { "internalType": "address[]", "name": "to", "type": "address[]" },
                    { "internalType": "uint256[]", "name": "quantities", "type": "uint256[]" }
                ],
                "name": "mintFungible",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "uint256", "name": "type_", "type": "uint256" },
                    { "internalType": "address[]", "name": "to", "type": "address[]" }
                ],
                "name": "mintNonFungible",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "internalType": "uint256", "name": "id", "type": "uint256" }],
                "name": "ownerOf",
                "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "address", "name": "from", "type": "address" },
                    { "internalType": "address", "name": "to", "type": "address" },
                    { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" },
                    { "internalType": "uint256[]", "name": "values", "type": "uint256[]" },
                    { "internalType": "bytes", "name": "data", "type": "bytes" }
                ],
                "name": "safeBatchTransferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "address", "name": "from", "type": "address" },
                    { "internalType": "address", "name": "to", "type": "address" },
                    { "internalType": "uint256", "name": "id", "type": "uint256" },
                    { "internalType": "uint256", "name": "value", "type": "uint256" },
                    { "internalType": "bytes", "name": "data", "type": "bytes" }
                ],
                "name": "safeTransferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "internalType": "address", "name": "operator", "type": "address" },
                    { "internalType": "bool", "name": "approved", "type": "bool" }
                ],
                "name": "setApprovalForAll",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            }
        ],
        "devdoc": {
            "details": "Mintable form of ERC1155 Shows how easy it is to mint new items",
            "methods": {
                "balanceOf(address,uint256)": {
                    "params": { "id": "ID of the Token", "owner": "The address of the token holder" },
                    "return": "The _owner's balance of the Token type requested"
                },
                "balanceOfBatch(address[],uint256[])": {
                    "params": { "ids": "ID of the Tokens", "owners": "The addresses of the token holders" },
                    "return": "The _owner's balance of the Token types requested"
                },
                "create(string,bool)": {
                    "details": "creates a new token",
                    "params": { "isNF": "is non-fungible token", "uri": "URI of token" },
                    "return": "type_ of token (a unique identifier)"
                },
                "createWithType(uint256,string)": {
                    "details": "creates a new token",
                    "params": { "type_": "of token", "uri": "URI of token" }
                },
                "getNonFungibleBaseType(uint256)": { "details": "Returns base type of non-fungible token" },
                "getNonFungibleIndex(uint256)": { "details": "Returns index of non-fungible token" },
                "isApprovedForAll(address,address)": {
                    "params": { "operator": "Address of authorized operator", "owner": "The owner of the Tokens" },
                    "return": "True if the operator is approved, false if not"
                },
                "isFungible(uint256)": { "details": "Returns true if token is fungible" },
                "isNonFungible(uint256)": { "details": "Returns true if token is non-fungible" },
                "isNonFungibleBaseType(uint256)": {
                    "details": "Returns true if input is base-type of a non-fungible token"
                },
                "isNonFungibleItem(uint256)": { "details": "Returns true if input is a non-fungible token" },
                "mintFungible(uint256,address[],uint256[])": {
                    "details": "mints fungible tokens",
                    "params": {
                        "id": "token type",
                        "quantities": "amounts of minted tokens",
                        "to": "beneficiaries of minted tokens"
                    }
                },
                "mintNonFungible(uint256,address[])": {
                    "details": "mints a non-fungible token",
                    "params": { "to": "beneficiaries of minted tokens", "type_": "token type" }
                },
                "ownerOf(uint256)": { "details": "returns owner of a non-fungible token" },
                "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
                    "details": "MUST emit TransferBatch event on success. Caller must be approved to manage the _from account's tokens (see isApprovedForAll). MUST throw if `_to` is the zero address. MUST throw if length of `_ids` is not the same as length of `_values`.  MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_values` sent. MUST throw on any other error. When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return value is not `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`.",
                    "params": {
                        "data": "Additional data with no specified format, sent in call to `_to`",
                        "from": "Source addresses",
                        "ids": "IDs of each token type",
                        "to": "Target addresses",
                        "values": "Transfer amounts per token type"
                    }
                },
                "safeTransferFrom(address,address,uint256,uint256,bytes)": {
                    "details": "MUST emit TransferSingle event on success. Caller must be approved to manage the _from account's tokens (see isApprovedForAll). MUST throw if `_to` is the zero address. MUST throw if balance of sender for token `_id` is lower than the `_value` sent. MUST throw on any other error. When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return value is not `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`.",
                    "params": {
                        "data": "Additional data with no specified format, sent in call to `_to`",
                        "from": "Source address",
                        "id": "ID of the token type",
                        "to": "Target address",
                        "value": "Transfer amount"
                    }
                },
                "setApprovalForAll(address,bool)": {
                    "details": "MUST emit the ApprovalForAll event on success.",
                    "params": {
                        "approved": "True if the operator is approved, false to revoke approval",
                        "operator": "Address to add to the set of authorized operators"
                    }
                }
            }
        },
        "evm": {
            "bytecode": {
                "object": "[encoded data, 18642 characters]"
            },
            "deployedBytecode": {
                "object": "[encoded data, 18578 characters]"
            }
        }
    },
    "compiler": {
        "name": "solc",
        "version": "soljson-v0.5.17+commit.d19bba13.js",
        "settings": {
            "optimizer": {
                "enabled": true,
                "runs": 1000000,
                "details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true }
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "devdoc",
                        "evm.bytecode.object",
                        "evm.bytecode.sourceMap",
                        "evm.deployedBytecode.object",
                        "evm.deployedBytecode.sourceMap"
                    ]
                }
            },
            "evmVersion": "istanbul"
        }
    },
    "chains": {}
}
