[
  {
    "type": "function",
    "name": "acceptOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "activateWorkflow",
    "inputs": [
      {
        "name": "workflowKey",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "computeHashKey",
    "inputs": [
      {
        "name": "owner",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "field",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "deleteWorkflow",
    "inputs": [
      {
        "name": "workflowKey",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getAllAllowedDONs",
    "inputs": [],
    "outputs": [
      {
        "name": "allowedDONs",
        "type": "uint32[]",
        "internalType": "uint32[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getAllAuthorizedAddresses",
    "inputs": [],
    "outputs": [
      {
        "name": "authorizedAddresses",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getWorkflowMetadata",
    "inputs": [
      {
        "name": "workflowOwner",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "workflowName",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct WorkflowRegistry.WorkflowMetadata",
        "components": [
          {
            "name": "workflowID",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "donID",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "status",
            "type": "uint8",
            "internalType": "enum WorkflowRegistry.WorkflowStatus"
          },
          {
            "name": "workflowName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "binaryURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "configURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "secretsURL",
            "type": "string",
            "internalType": "string"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getWorkflowMetadataListByDON",
    "inputs": [
      {
        "name": "donID",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "start",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "limit",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "workflowMetadataList",
        "type": "tuple[]",
        "internalType": "struct WorkflowRegistry.WorkflowMetadata[]",
        "components": [
          {
            "name": "workflowID",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "donID",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "status",
            "type": "uint8",
            "internalType": "enum WorkflowRegistry.WorkflowStatus"
          },
          {
            "name": "workflowName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "binaryURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "configURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "secretsURL",
            "type": "string",
            "internalType": "string"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getWorkflowMetadataListByOwner",
    "inputs": [
      {
        "name": "workflowOwner",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "start",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "limit",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "workflowMetadataList",
        "type": "tuple[]",
        "internalType": "struct WorkflowRegistry.WorkflowMetadata[]",
        "components": [
          {
            "name": "workflowID",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "donID",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "status",
            "type": "uint8",
            "internalType": "enum WorkflowRegistry.WorkflowStatus"
          },
          {
            "name": "workflowName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "binaryURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "configURL",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "secretsURL",
            "type": "string",
            "internalType": "string"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isRegistryLocked",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "lockRegistry",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pauseWorkflow",
    "inputs": [
      {
        "name": "workflowKey",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "registerWorkflow",
    "inputs": [
      {
        "name": "workflowName",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "workflowID",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "donID",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "status",
        "type": "uint8",
        "internalType": "enum WorkflowRegistry.WorkflowStatus"
      },
      {
        "name": "binaryURL",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "configURL",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "secretsURL",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "requestForceUpdateSecrets",
    "inputs": [
      {
        "name": "secretsURL",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      {
        "name": "to",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "typeAndVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string",
        "internalType": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "unlockRegistry",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "updateAllowedDONs",
    "inputs": [
      {
        "name": "donIDs",
        "type": "uint32[]",
        "internalType": "uint32[]"
      },
      {
        "name": "allowed",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "updateAuthorizedAddresses",
    "inputs": [
      {
        "name": "addresses",
        "type": "address[]",
        "internalType": "address[]"
      },
      {
        "name": "allowed",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "updateWorkflow",
    "inputs": [
      {
        "name": "workflowKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "newWorkflowID",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "binaryURL",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "configURL",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "secretsURL",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "AllowedDONsUpdatedV1",
    "inputs": [
      {
        "name": "donIDs",
        "type": "uint32[]",
        "indexed": false,
        "internalType": "uint32[]"
      },
      {
        "name": "allowed",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "AuthorizedAddressesUpdatedV1",
    "inputs": [
      {
        "name": "addresses",
        "type": "address[]",
        "indexed": false,
        "internalType": "address[]"
      },
      {
        "name": "allowed",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferRequested",
    "inputs": [
      {
        "name": "from",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "to",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "from",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "to",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RegistryLockedV1",
    "inputs": [
      {
        "name": "lockedBy",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RegistryUnlockedV1",
    "inputs": [
      {
        "name": "unlockedBy",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowActivatedV1",
    "inputs": [
      {
        "name": "workflowID",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "workflowOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "donID",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowDeletedV1",
    "inputs": [
      {
        "name": "workflowID",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "workflowOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "donID",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowForceUpdateSecretsRequestedV1",
    "inputs": [
      {
        "name": "owner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "secretsURLHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowPausedV1",
    "inputs": [
      {
        "name": "workflowID",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "workflowOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "donID",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowRegisteredV1",
    "inputs": [
      {
        "name": "workflowID",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "workflowOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "donID",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "status",
        "type": "uint8",
        "indexed": false,
        "internalType": "enum WorkflowRegistry.WorkflowStatus"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "binaryURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "configURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "secretsURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "WorkflowUpdatedV1",
    "inputs": [
      {
        "name": "oldWorkflowID",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "workflowOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "donID",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "newWorkflowID",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "workflowName",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "binaryURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "configURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "secretsURL",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AddressNotAuthorized",
    "inputs": [
      {
        "name": "caller",
        "type": "address",
        "internalType": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "BinaryURLRequired",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CallerIsNotWorkflowOwner",
    "inputs": [
      {
        "name": "caller",
        "type": "address",
        "internalType": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "CannotTransferToSelf",
    "inputs": []
  },
  {
    "type": "error",
    "name": "DONNotAllowed",
    "inputs": [
      {
        "name": "donID",
        "type": "uint32",
        "internalType": "uint32"
      }
    ]
  },
  {
    "type": "error",
    "name": "InvalidWorkflowID",
    "inputs": []
  },
  {
    "type": "error",
    "name": "MustBeProposedOwner",
    "inputs": []
  },
  {
    "type": "error",
    "name": "OnlyCallableByOwner",
    "inputs": []
  },
  {
    "type": "error",
    "name": "OwnerCannotBeZero",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RegistryLocked",
    "inputs": []
  },
  {
    "type": "error",
    "name": "URLTooLong",
    "inputs": [
      {
        "name": "providedLength",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxAllowedLength",
        "type": "uint8",
        "internalType": "uint8"
      }
    ]
  },
  {
    "type": "error",
    "name": "WorkflowAlreadyInDesiredStatus",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowAlreadyRegistered",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowContentNotUpdated",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowDoesNotExist",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowIDAlreadyExists",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowNameRequired",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkflowNameTooLong",
    "inputs": [
      {
        "name": "providedLength",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxAllowedLength",
        "type": "uint8",
        "internalType": "uint8"
      }
    ]
  }
]