[
  {
    "type": "constructor",
    "inputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "MODULE_ID",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes4",
        "internalType": "bytes4"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "applyForTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "applicationHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "approveApplication",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "applicant",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "assignTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "assignee",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "bootstrapProjectsAndTasks",
    "inputs": [
      {
        "name": "projects",
        "type": "tuple[]",
        "internalType": "struct TaskManager.BootstrapProjectConfig[]",
        "components": [
          {
            "name": "title",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "cap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "managers",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "createHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "claimHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "reviewHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "assignHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "bountyTokens",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "bountyCaps",
            "type": "uint256[]",
            "internalType": "uint256[]"
          }
        ]
      },
      {
        "name": "tasks",
        "type": "tuple[]",
        "internalType": "struct TaskManager.BootstrapTaskConfig[]",
        "components": [
          {
            "name": "projectIndex",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "payout",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "title",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "bountyToken",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "bountyPayout",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "requiresApplication",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "projectIds",
        "type": "bytes32[]",
        "internalType": "bytes32[]"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "cancelTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "claimTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clearDeployer",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "completeTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createAndAssignTask",
    "inputs": [
      {
        "name": "payout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "title",
        "type": "bytes",
        "internalType": "bytes"
      },
      {
        "name": "metadataHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "pid",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "assignee",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "bountyToken",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "bountyPayout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "requiresApplication",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "absoluteDeadline",
        "type": "uint48",
        "internalType": "uint48"
      },
      {
        "name": "completionWindow",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "taskId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createProject",
    "inputs": [
      {
        "name": "p",
        "type": "tuple",
        "internalType": "struct TaskManager.BootstrapProjectConfig",
        "components": [
          {
            "name": "title",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "cap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "managers",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "createHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "claimHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "reviewHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "assignHats",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "bountyTokens",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "bountyCaps",
            "type": "uint256[]",
            "internalType": "uint256[]"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "projectId",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createTask",
    "inputs": [
      {
        "name": "payout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "title",
        "type": "bytes",
        "internalType": "bytes"
      },
      {
        "name": "metadataHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "pid",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "bountyToken",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "bountyPayout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "requiresApplication",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "absoluteDeadline",
        "type": "uint48",
        "internalType": "uint48"
      },
      {
        "name": "completionWindow",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createTasksBatch",
    "inputs": [
      {
        "name": "pid",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "tasks",
        "type": "tuple[]",
        "internalType": "struct TaskManager.CreateTaskInput[]",
        "components": [
          {
            "name": "payout",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "title",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "bountyToken",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "bountyPayout",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "requiresApplication",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "absoluteDeadline",
            "type": "uint48",
            "internalType": "uint48"
          },
          {
            "name": "completionWindow",
            "type": "uint32",
            "internalType": "uint32"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "taskIds",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "deleteProject",
    "inputs": [
      {
        "name": "pid",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getLensData",
    "inputs": [
      {
        "name": "t",
        "type": "uint8",
        "internalType": "uint8"
      },
      {
        "name": "d",
        "type": "bytes",
        "internalType": "bytes"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes",
        "internalType": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "tokenAddress",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "creatorHats",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "executorAddress",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "deployerAddress",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "rejectTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "rejectionHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setConfig",
    "inputs": [
      {
        "name": "key",
        "type": "uint8",
        "internalType": "enum TaskManager.ConfigKey"
      },
      {
        "name": "value",
        "type": "bytes",
        "internalType": "bytes"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setFolders",
    "inputs": [
      {
        "name": "expectedCurrentRoot",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "newRoot",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setMembershipAuthority",
    "inputs": [
      {
        "name": "authority",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "submitTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "submissionHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "unclaimTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "updateTask",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "newPayout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "newTitle",
        "type": "bytes",
        "internalType": "bytes"
      },
      {
        "name": "newMetadataHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "newBountyToken",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "newBountyPayout",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "newAbsoluteDeadline",
        "type": "uint48",
        "internalType": "uint48"
      },
      {
        "name": "newCompletionWindow",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "updateTaskMetadata",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "newTitle",
        "type": "bytes",
        "internalType": "bytes"
      },
      {
        "name": "newMetadataHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "BountyCapSet",
    "inputs": [
      {
        "name": "projectId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "oldCap",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "newCap",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ConfigAdminSet",
    "inputs": [
      {
        "name": "admin",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ExecutorUpdated",
    "inputs": [
      {
        "name": "newExecutor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "FoldersUpdated",
    "inputs": [
      {
        "name": "newRoot",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "oldRoot",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "sender",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "HatSet",
    "inputs": [
      {
        "name": "hatType",
        "type": "uint8",
        "indexed": false,
        "internalType": "enum TaskManager.HatType"
      },
      {
        "name": "hat",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "allowed",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Initialized",
    "inputs": [
      {
        "name": "version",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MembershipAuthoritySet",
    "inputs": [
      {
        "name": "authority",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OrganizerHatAllowed",
    "inputs": [
      {
        "name": "hatId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "allowed",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProjectCapUpdated",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "oldCap",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "newCap",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProjectCreated",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "title",
        "type": "bytes",
        "indexed": false,
        "internalType": "bytes"
      },
      {
        "name": "metadataHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "cap",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProjectDeleted",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProjectManagerUpdated",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "manager",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "isManager",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProjectRolePermSet",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "hatId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "mask",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RolePermSet",
    "inputs": [
      {
        "name": "hatId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "mask",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskApplicationApproved",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "applicant",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "approver",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskApplicationSubmitted",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "applicant",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "applicationHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskAssigned",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "assignee",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "assigner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskCancelled",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "canceller",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskClaimDeadlineSet",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "claimDeadline",
        "type": "uint48",
        "indexed": false,
        "internalType": "uint48"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskClaimExpired",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "previousClaimer",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "newClaimer",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskClaimed",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "claimer",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskCompleted",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "completer",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskCreated",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "project",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "payout",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "bountyToken",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "bountyPayout",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "requiresApplication",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      },
      {
        "name": "title",
        "type": "bytes",
        "indexed": false,
        "internalType": "bytes"
      },
      {
        "name": "metadataHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskDeadlinesSet",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "absoluteDeadline",
        "type": "uint48",
        "indexed": false,
        "internalType": "uint48"
      },
      {
        "name": "completionWindow",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskRejected",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "rejector",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "rejectionHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskSubmitted",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "submissionHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskUnclaimed",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "previousClaimer",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "caller",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TaskUpdated",
    "inputs": [
      {
        "name": "id",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "payout",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "bountyToken",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "bountyPayout",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "title",
        "type": "bytes",
        "indexed": false,
        "internalType": "bytes"
      },
      {
        "name": "metadataHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AlreadyApplied",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ArrayLengthMismatch",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BadStatus",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BudgetExceeded",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CapBelowCommitted",
    "inputs": []
  },
  {
    "type": "error",
    "name": "EmptyBatch",
    "inputs": []
  },
  {
    "type": "error",
    "name": "EmptyTitle",
    "inputs": []
  },
  {
    "type": "error",
    "name": "FoldersRootStale",
    "inputs": [
      {
        "name": "expected",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "actual",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ]
  },
  {
    "type": "error",
    "name": "InvalidDeadline",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidIndex",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidInitialization",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidPayout",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidString",
    "inputs": []
  },
  {
    "type": "error",
    "name": "LegacyConfigRemoved",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NoApplicationRequired",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotApplicant",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotClaimer",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotCreator",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotDeployer",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotExecutor",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotFound",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotInitializing",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotOrganizer",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RequiresApplication",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SafeERC20FailedOperation",
    "inputs": [
      {
        "name": "token",
        "type": "address",
        "internalType": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "SelfReviewNotAllowed",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SpentUnderflow",
    "inputs": []
  },
  {
    "type": "error",
    "name": "TitleTooLong",
    "inputs": []
  },
  {
    "type": "error",
    "name": "Unauthorized",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroAddress",
    "inputs": []
  }
]
