[
    {
        "inputs": [],
        "name": "ChallengeExpired",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "addr",
                "type": "address"
            }
        ],
        "name": "ContractNotAuthorized",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "target",
                "type": "address"
            }
        ],
        "name": "InvalidInterfaceId",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
            }
        ],
        "name": "InvalidRecipeId",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "InvalidTier",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "string",
                "name": "trait",
                "type": "string"
            },
            {
                "internalType": "uint256",
                "name": "actual",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expected",
                "type": "uint256"
            }
        ],
        "name": "InvalidTraitValue",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "actual",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expected",
                "type": "uint256"
            }
        ],
        "name": "NonSequentialId",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NotTokenOwner",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "SupplyExhausted",
        "type": "error"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "authorizer",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "nonce",
                "type": "bytes32"
            }
        ],
        "name": "AuthorizationUsed",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "index",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "targetContract",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "tokenId",
                "type": "uint256"
            }
        ],
        "name": "ChallengeCompleted",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [],
        "name": "EIP712DomainChanged",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint8",
                "name": "version",
                "type": "uint8"
            }
        ],
        "name": "Initialized",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "Paused",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
            }
        ],
        "name": "ReceiptAdded",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
            }
        ],
        "name": "ReceiptIgnored",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "id",
                "type": "uint256"
            }
        ],
        "name": "ReceiptUpdated",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "previousAdminRole",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "newAdminRole",
                "type": "bytes32"
            }
        ],
        "name": "RoleAdminChanged",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "account",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "RoleGranted",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "account",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "RoleRevoked",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "Unpaused",
        "type": "event"
    },
    {
        "inputs": [],
        "name": "ADMIN_ROLE",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "DEFAULT_ADMIN_ROLE",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "DOMAIN_SEPARATOR",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "ERC1155_INTERFACE",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "ERC20_INTERFACE",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "ERC721_INTERFACE",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "PAUSER_ROLE",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "_COMPLETE_TYPEHASH",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_addr",
                "type": "address"
            },
            {
                "internalType": "enum Challenges.CONTRACT_ROLE",
                "name": "_role",
                "type": "uint8"
            }
        ],
        "name": "addAuthorizedAddress",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "_supply",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "_expiry",
                "type": "uint64"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "uint256",
                        "name": "id",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "amount",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint8",
                        "name": "tier",
                        "type": "uint8"
                    },
                    {
                        "components": [
                            {
                                "internalType": "string",
                                "name": "key",
                                "type": "string"
                            },
                            {
                                "internalType": "uint256",
                                "name": "value",
                                "type": "uint256"
                            }
                        ],
                        "internalType": "struct Challenges.Trait[]",
                        "name": "traits",
                        "type": "tuple[]"
                    }
                ],
                "internalType": "struct Challenges.InputItem[]",
                "name": "_inputs",
                "type": "tuple[]"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "uint8",
                        "name": "tier",
                        "type": "uint8"
                    }
                ],
                "internalType": "struct Challenges.OutputItem",
                "name": "_output",
                "type": "tuple"
            }
        ],
        "name": "addRecipe",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint128",
                        "name": "index",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint64",
                        "name": "supply",
                        "type": "uint64"
                    },
                    {
                        "internalType": "uint64",
                        "name": "expiry",
                        "type": "uint64"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "id",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            },
                            {
                                "components": [
                                    {
                                        "internalType": "string",
                                        "name": "key",
                                        "type": "string"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "value",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Challenges.Trait[]",
                                "name": "traits",
                                "type": "tuple[]"
                            }
                        ],
                        "internalType": "struct Challenges.InputItem[]",
                        "name": "inputs",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            }
                        ],
                        "internalType": "struct Challenges.OutputItem",
                        "name": "output",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct Challenges.Recipe[]",
                "name": "_recipes",
                "type": "tuple[]"
            }
        ],
        "name": "addRecipeBatch",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "allRecipes",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint128",
                        "name": "index",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint64",
                        "name": "supply",
                        "type": "uint64"
                    },
                    {
                        "internalType": "uint64",
                        "name": "expiry",
                        "type": "uint64"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "id",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            },
                            {
                                "components": [
                                    {
                                        "internalType": "string",
                                        "name": "key",
                                        "type": "string"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "value",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Challenges.Trait[]",
                                "name": "traits",
                                "type": "tuple[]"
                            }
                        ],
                        "internalType": "struct Challenges.InputItem[]",
                        "name": "inputs",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            }
                        ],
                        "internalType": "struct Challenges.OutputItem",
                        "name": "output",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct Challenges.Recipe[]",
                "name": "",
                "type": "tuple[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "authorizer",
                "type": "address"
            },
            {
                "internalType": "bytes32",
                "name": "authorization",
                "type": "bytes32"
            }
        ],
        "name": "authorizationState",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint8",
                        "name": "index",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint256",
                        "name": "tokenId",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address",
                        "name": "signer",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "authorization",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "uint32",
                        "name": "deadline",
                        "type": "uint32"
                    }
                ],
                "internalType": "struct Challenges.Authorization",
                "name": "_authorization",
                "type": "tuple"
            },
            {
                "components": [
                    {
                        "internalType": "uint8",
                        "name": "v",
                        "type": "uint8"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "r",
                        "type": "bytes32"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "s",
                        "type": "bytes32"
                    }
                ],
                "internalType": "struct Challenges.Signature",
                "name": "_signature",
                "type": "tuple"
            }
        ],
        "name": "authorizedComplete",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_recipeId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_tokenId",
                "type": "uint256"
            }
        ],
        "name": "complete",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "eip712Domain",
        "outputs": [
            {
                "internalType": "bytes1",
                "name": "fields",
                "type": "bytes1"
            },
            {
                "internalType": "string",
                "name": "name",
                "type": "string"
            },
            {
                "internalType": "string",
                "name": "version",
                "type": "string"
            },
            {
                "internalType": "uint256",
                "name": "chainId",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "verifyingContract",
                "type": "address"
            },
            {
                "internalType": "bytes32",
                "name": "salt",
                "type": "bytes32"
            },
            {
                "internalType": "uint256[]",
                "name": "extensions",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_id",
                "type": "uint256"
            }
        ],
        "name": "getRecipe",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint128",
                        "name": "index",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint64",
                        "name": "supply",
                        "type": "uint64"
                    },
                    {
                        "internalType": "uint64",
                        "name": "expiry",
                        "type": "uint64"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "id",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            },
                            {
                                "components": [
                                    {
                                        "internalType": "string",
                                        "name": "key",
                                        "type": "string"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "value",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Challenges.Trait[]",
                                "name": "traits",
                                "type": "tuple[]"
                            }
                        ],
                        "internalType": "struct Challenges.InputItem[]",
                        "name": "inputs",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            }
                        ],
                        "internalType": "struct Challenges.OutputItem",
                        "name": "output",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct Challenges.Recipe",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            }
        ],
        "name": "getRoleAdmin",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "index",
                "type": "uint256"
            }
        ],
        "name": "getRoleMember",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            }
        ],
        "name": "getRoleMemberCount",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "grantRole",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "hasRole",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address[]",
                "name": "_input",
                "type": "address[]"
            },
            {
                "internalType": "address[]",
                "name": "_output",
                "type": "address[]"
            },
            {
                "internalType": "address",
                "name": "_operator",
                "type": "address"
            }
        ],
        "name": "initialize",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "name": "inputContracts",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "name": "outputContracts",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_id",
                "type": "uint256"
            },
            {
                "internalType": "uint64",
                "name": "_supply",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "_expiry",
                "type": "uint64"
            }
        ],
        "name": "partialUpdateRecipe",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "pause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "paused",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "name": "recipes",
        "outputs": [
            {
                "internalType": "uint128",
                "name": "index",
                "type": "uint128"
            },
            {
                "internalType": "uint64",
                "name": "supply",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "expiry",
                "type": "uint64"
            },
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "addr",
                        "type": "address"
                    },
                    {
                        "internalType": "uint8",
                        "name": "tier",
                        "type": "uint8"
                    }
                ],
                "internalType": "struct Challenges.OutputItem",
                "name": "output",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_addr",
                "type": "address"
            },
            {
                "internalType": "enum Challenges.CONTRACT_ROLE",
                "name": "_role",
                "type": "uint8"
            }
        ],
        "name": "removeAuthorizedAddress",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "renounceRole",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "revokeRole",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes4",
                "name": "interfaceId",
                "type": "bytes4"
            }
        ],
        "name": "supportsInterface",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "unpause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "uint128",
                        "name": "index",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint64",
                        "name": "supply",
                        "type": "uint64"
                    },
                    {
                        "internalType": "uint64",
                        "name": "expiry",
                        "type": "uint64"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "id",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            },
                            {
                                "components": [
                                    {
                                        "internalType": "string",
                                        "name": "key",
                                        "type": "string"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "value",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Challenges.Trait[]",
                                "name": "traits",
                                "type": "tuple[]"
                            }
                        ],
                        "internalType": "struct Challenges.InputItem[]",
                        "name": "inputs",
                        "type": "tuple[]"
                    },
                    {
                        "components": [
                            {
                                "internalType": "address",
                                "name": "addr",
                                "type": "address"
                            },
                            {
                                "internalType": "uint8",
                                "name": "tier",
                                "type": "uint8"
                            }
                        ],
                        "internalType": "struct Challenges.OutputItem",
                        "name": "output",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct Challenges.Recipe[]",
                "name": "_recipes",
                "type": "tuple[]"
            }
        ],
        "name": "updateRecipeBatch",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
