[
   {
      "inputs":[
         
      ],
      "name":"AlreadyInitialized",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"activityChecker",
            "type":"address"
         }
      ],
      "name":"ContractOnly",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         }
      ],
      "name":"LowerThan",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"maxNumServices",
            "type":"uint256"
         }
      ],
      "name":"MaxNumServicesReached",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"NoRewardsAvailable",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tsProvided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tsExpected",
            "type":"uint256"
         }
      ],
      "name":"NotEnoughTimeStaked",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"owner",
            "type":"address"
         }
      ],
      "name":"OwnerOnly",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"ServiceNotUnstaked",
      "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":"TokenTransferFailed",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         }
      ],
      "name":"UnauthorizedMultisig",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         }
      ],
      "name":"ValueLowerThan",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"agentId",
            "type":"uint256"
         }
      ],
      "name":"WrongAgentId",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"WrongServiceConfiguration",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"state",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"WrongServiceState",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"expected",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"provided",
            "type":"address"
         }
      ],
      "name":"WrongStakingToken",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroAddress",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroTokenAddress",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroValue",
      "type":"error"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"availableRewards",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"serviceIds",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"rewards",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epochLength",
            "type":"uint256"
         }
      ],
      "name":"Checkpoint",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"balance",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"availableRewards",
            "type":"uint256"
         }
      ],
      "name":"Deposit",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"nonces",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         }
      ],
      "name":"RewardClaimed",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"nonces",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"availableRewards",
            "type":"uint256"
         }
      ],
      "name":"ServiceForceUnstaked",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"serviceInactivity",
            "type":"uint256"
         }
      ],
      "name":"ServiceInactivityWarning",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"nonces",
            "type":"uint256[]"
         }
      ],
      "name":"ServiceStaked",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"owner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"nonces",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"availableRewards",
            "type":"uint256"
         }
      ],
      "name":"ServiceUnstaked",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"uint256",
            "name":"epoch",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"serviceIds",
            "type":"uint256[]"
         },
         {
            "indexed":false,
            "internalType":"address[]",
            "name":"owners",
            "type":"address[]"
         },
         {
            "indexed":false,
            "internalType":"address[]",
            "name":"multisigs",
            "type":"address[]"
         },
         {
            "indexed":false,
            "internalType":"uint256[]",
            "name":"serviceInactivity",
            "type":"uint256[]"
         }
      ],
      "name":"ServicesEvicted",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"Withdraw",
      "type":"event"
   },
   {
      "inputs":[
         
      ],
      "name":"VERSION",
      "outputs":[
         {
            "internalType":"string",
            "name":"",
            "type":"string"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"activityChecker",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"agentIds",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"availableRewards",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"balance",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"calculateStakingLastReward",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"calculateStakingReward",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"checkpoint",
      "outputs":[
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         },
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         },
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         },
         {
            "internalType":"uint256[]",
            "name":"evictServiceIds",
            "type":"uint256[]"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"checkpointAndClaim",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"claim",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"configHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"deposit",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"emissionsAmount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"epochCounter",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"forcedUnstake",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getAgentIds",
      "outputs":[
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getNextRewardCheckpointTimestamp",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"tsNext",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"getServiceIds",
      "outputs":[
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"getServiceInfo",
      "outputs":[
         {
            "components":[
               {
                  "internalType":"address",
                  "name":"multisig",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"owner",
                  "type":"address"
               },
               {
                  "internalType":"uint256[]",
                  "name":"nonces",
                  "type":"uint256[]"
               },
               {
                  "internalType":"uint256",
                  "name":"tsStart",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"reward",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"inactivity",
                  "type":"uint256"
               }
            ],
            "internalType":"struct ServiceInfo",
            "name":"sInfo",
            "type":"tuple"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"getStakingState",
      "outputs":[
         {
            "internalType":"enum StakingBase.StakingState",
            "name":"stakingState",
            "type":"uint8"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "components":[
               {
                  "internalType":"bytes32",
                  "name":"metadataHash",
                  "type":"bytes32"
               },
               {
                  "internalType":"uint256",
                  "name":"maxNumServices",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"rewardsPerSecond",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"minStakingDeposit",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"minNumStakingPeriods",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"maxNumInactivityPeriods",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"livenessPeriod",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"timeForEmissions",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"numAgentInstances",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256[]",
                  "name":"agentIds",
                  "type":"uint256[]"
               },
               {
                  "internalType":"uint256",
                  "name":"threshold",
                  "type":"uint256"
               },
               {
                  "internalType":"bytes32",
                  "name":"configHash",
                  "type":"bytes32"
               },
               {
                  "internalType":"bytes32",
                  "name":"proxyHash",
                  "type":"bytes32"
               },
               {
                  "internalType":"address",
                  "name":"serviceRegistry",
                  "type":"address"
               },
               {
                  "internalType":"address",
                  "name":"activityChecker",
                  "type":"address"
               }
            ],
            "internalType":"struct StakingBase.StakingParams",
            "name":"_stakingParams",
            "type":"tuple"
         },
         {
            "internalType":"address",
            "name":"_serviceRegistryTokenUtility",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_stakingToken",
            "type":"address"
         }
      ],
      "name":"initialize",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"livenessPeriod",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"mapServiceInfo",
      "outputs":[
         {
            "internalType":"address",
            "name":"multisig",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"owner",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"tsStart",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"reward",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"inactivity",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"maxInactivityDuration",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"maxNumInactivityPeriods",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"maxNumServices",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"metadataHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"minStakingDeposit",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"minStakingDuration",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"numAgentInstances",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"onERC721Received",
      "outputs":[
         {
            "internalType":"bytes4",
            "name":"",
            "type":"bytes4"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"proxyHash",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"rewardsPerSecond",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "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":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"setServiceIds",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"stake",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"stakingToken",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"threshold",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"timeForEmissions",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"tsCheckpoint",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"unstake",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]