[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_serviceRegistry",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_serviceRegistryTokenUtility",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_operatorWhitelist",
            "type":"address"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"constructor"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         }
      ],
      "name":"AgentInstanceRegistered",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"AgentInstancesSlotsFilled",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"agentId",
            "type":"uint256"
         }
      ],
      "name":"AgentNotFound",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"agentId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"AgentNotInService",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"componentId",
            "type":"uint256"
         }
      ],
      "name":"ComponentNotFound",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"HashExists",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"msgHash",
            "type":"bytes32"
         },
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         }
      ],
      "name":"HashNotApproved",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"msgHash",
            "type":"bytes32"
         },
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         }
      ],
      "name":"HashNotValidated",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"sent",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"IncorrectAgentBondingValue",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"sent",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"IncorrectRegistrationDepositValue",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         },
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         }
      ],
      "name":"IncorrectSignatureLength",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"manager",
            "type":"address"
         }
      ],
      "name":"ManagerOnly",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"provided",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"expected",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"OnlyOwnServiceMultisig",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"OperatorHasNoInstances",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"max",
            "type":"uint256"
         }
      ],
      "name":"Overflow",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"owner",
            "type":"address"
         }
      ],
      "name":"OwnerOnly",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"Paused",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ReentrancyGuard",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"ServiceMustBeInactive",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"from",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"value",
            "type":"uint256"
         }
      ],
      "name":"TransferFailed",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         }
      ],
      "name":"UnauthorizedMultisig",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"agentId",
            "type":"uint256"
         }
      ],
      "name":"WrongAgentId",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"numValues1",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"numValues2",
            "type":"uint256"
         }
      ],
      "name":"WrongArrayLength",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"WrongOperator",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"provided",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"expected",
            "type":"address"
         }
      ],
      "name":"WrongOperatorAddress",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"state",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"WrongServiceState",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"currentThreshold",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"minThreshold",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"maxThreshold",
            "type":"uint256"
         }
      ],
      "name":"WrongThreshold",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroAddress",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroOperatorAddress",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroValue",
      "type":"error"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         }
      ],
      "name":"CreateMultisig",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"bytes32",
            "name":"hash",
            "type":"bytes32"
         }
      ],
      "name":"OperatorHashApproved",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"operatorWhitelist",
            "type":"address"
         }
      ],
      "name":"OperatorWhitelistUpdated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         }
      ],
      "name":"OwnerUpdated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         }
      ],
      "name":"Pause",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         }
      ],
      "name":"Unpause",
      "type":"event"
   },
   {
      "inputs":[
         
      ],
      "name":"BOND_WRAPPER",
      "outputs":[
         {
            "internalType":"uint96",
            "name":"",
            "type":"uint96"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"DOMAIN_SEPARATOR_TYPE_HASH",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"ETH_TOKEN_ADDRESS",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"REGISTER_AGENTS_TYPE_HASH",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"UNBOND_TYPE_HASH",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"activateRegistration",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         }
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"chainId",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"changeOwner",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"serviceOwner",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"configHash",
            "type":"bytes32"
         },
         {
            "internalType":"uint32[]",
            "name":"agentIds",
            "type":"uint32[]"
         },
         {
            "components":[
               {
                  "internalType":"uint32",
                  "name":"slots",
                  "type":"uint32"
               },
               {
                  "internalType":"uint96",
                  "name":"bond",
                  "type":"uint96"
               }
            ],
            "internalType":"struct IService.AgentParams[]",
            "name":"agentParams",
            "type":"tuple[]"
         },
         {
            "internalType":"uint32",
            "name":"threshold",
            "type":"uint32"
         }
      ],
      "name":"create",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"address",
            "name":"multisigImplementation",
            "type":"address"
         },
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"deploy",
      "outputs":[
         {
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"domainSeparator",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getDomainSeparator",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"getOperatorRegisterAgentsNonce",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"nonce",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"getOperatorUnbondNonce",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"nonce",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"serviceOwner",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"address[]",
            "name":"agentInstances",
            "type":"address[]"
         },
         {
            "internalType":"uint32[]",
            "name":"agentIds",
            "type":"uint32[]"
         },
         {
            "internalType":"uint256",
            "name":"nonce",
            "type":"uint256"
         }
      ],
      "name":"getRegisterAgentsHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"serviceOwner",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"nonce",
            "type":"uint256"
         }
      ],
      "name":"getUnbondHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"hash",
            "type":"bytes32"
         }
      ],
      "name":"isOperatorHashApproved",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "name":"mapOperatorApprovedHashes",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"mapOperatorRegisterAgentsNonces",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"mapOperatorUnbondNonces",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"name",
      "outputs":[
         {
            "internalType":"string",
            "name":"",
            "type":"string"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"nameHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes32",
            "name":"hash",
            "type":"bytes32"
         }
      ],
      "name":"operatorApproveHash",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"operatorWhitelist",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "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":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"address[]",
            "name":"agentInstances",
            "type":"address[]"
         },
         {
            "internalType":"uint32[]",
            "name":"agentIds",
            "type":"uint32[]"
         }
      ],
      "name":"registerAgents",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         }
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"address[]",
            "name":"agentInstances",
            "type":"address[]"
         },
         {
            "internalType":"uint32[]",
            "name":"agentIds",
            "type":"uint32[]"
         },
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         }
      ],
      "name":"registerAgentsWithSignature",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         }
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"serviceRegistry",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"serviceRegistryTokenUtility",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"newOperatorWhitelist",
            "type":"address"
         }
      ],
      "name":"setOperatorWhitelist",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"terminate",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         },
         {
            "internalType":"uint256",
            "name":"refund",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"unbond",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         },
         {
            "internalType":"uint256",
            "name":"refund",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"operator",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         }
      ],
      "name":"unbondWithSignature",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         },
         {
            "internalType":"uint256",
            "name":"refund",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"unpause",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"bytes32",
            "name":"configHash",
            "type":"bytes32"
         },
         {
            "internalType":"uint32[]",
            "name":"agentIds",
            "type":"uint32[]"
         },
         {
            "components":[
               {
                  "internalType":"uint32",
                  "name":"slots",
                  "type":"uint32"
               },
               {
                  "internalType":"uint96",
                  "name":"bond",
                  "type":"uint96"
               }
            ],
            "internalType":"struct IService.AgentParams[]",
            "name":"agentParams",
            "type":"tuple[]"
         },
         {
            "internalType":"uint32",
            "name":"threshold",
            "type":"uint32"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"update",
      "outputs":[
         {
            "internalType":"bool",
            "name":"success",
            "type":"bool"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"version",
      "outputs":[
         {
            "internalType":"string",
            "name":"",
            "type":"string"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"versionHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   }
]