{
  "_format": "hh-sol-artifact-1",
  "contractName": "IHorizonStaking",
  "sourceName": "contracts/horizon/IHorizonStaking.sol",
  "abi": [
    {
      "inputs": [],
      "name": "HorizonStakingCallerIsServiceProvider",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minTokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInsufficientDelegationTokens",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minTokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInsufficientIdleStake",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minShares",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInsufficientShares",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minTokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInsufficientStakeForLegacyAllocations",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minRequired",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInsufficientTokens",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "feeCut",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingInvalidDelegationFeeCut",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "HorizonStakingInvalidDelegationPool",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "HorizonStakingInvalidDelegationPoolState",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        }
      ],
      "name": "HorizonStakingInvalidMaxVerifierCut",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "HorizonStakingInvalidProvision",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingInvalidServiceProviderZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingInvalidThawRequestType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "maxThawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "HorizonStakingInvalidThawingPeriod",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "HorizonStakingInvalidVerifier",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingInvalidVerifierZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingInvalidZeroShares",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingInvalidZeroTokens",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingLegacySlashFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingNoTokensToSlash",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "HorizonStakingNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingNothingThawing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingNothingToWithdraw",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingProvisionAlreadyExists",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minShares",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingSlippageProtection",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "until",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingStillThawing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HorizonStakingTooManyThawRequests",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxTokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakingTooManyTokens",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "HorizonStakingVerifierNotAllowed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "subgraphDeploymentID",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "epoch",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "poi",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isPublic",
          "type": "bool"
        }
      ],
      "name": "AllocationClosed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "AllowedLockedVerifierSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "DelegatedTokensWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "enum IGraphPayments.PaymentTypes",
          "name": "paymentType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "feeCut",
          "type": "uint256"
        }
      ],
      "name": "DelegationFeeCutSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "DelegationSlashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DelegationSlashingEnabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "DelegationSlashingSkipped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakeDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "until",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakeLocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "HorizonStakeWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "maxThawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "MaxThawingPeriodSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "OperatorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "ProvisionCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "ProvisionIncreased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "ProvisionParametersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "ProvisionParametersStaged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "ProvisionSlashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "ProvisionThawed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "assetHolder",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "subgraphDeploymentID",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "epoch",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "protocolTax",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "curationFees",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryFees",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryRebates",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "delegationRewards",
          "type": "uint256"
        }
      ],
      "name": "RebateCollected",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "StakeDelegatedWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        }
      ],
      "name": "StakeSlashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "requestType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "thawingUntil",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "thawRequestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "ThawRequestCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "requestType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "thawRequestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "thawingUntil",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "valid",
          "type": "bool"
        }
      ],
      "name": "ThawRequestFulfilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "requestType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "thawRequestsFulfilled",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "ThawRequestsFulfilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "ThawingPeriodCleared",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "TokensDelegated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "TokensDeprovisioned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "TokensToDelegationPoolAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "TokensUndelegated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "destination",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "VerifierTokensSent",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "__DEPRECATED_getThawingPeriod",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        }
      ],
      "name": "acceptProvisionParameters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "addToDelegationPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "addToProvision",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clearThawingPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "poi",
          "type": "bytes32"
        }
      ],
      "name": "closeAllocation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        }
      ],
      "name": "collect",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minSharesOut",
          "type": "uint256"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nThawRequests",
          "type": "uint256"
        }
      ],
      "name": "deprovision",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        }
      ],
      "name": "getAllocation",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "indexer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "subgraphDeploymentID",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "tokens",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "createdAtEpoch",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "closedAtEpoch",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collectedFees",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "__DEPRECATED_effectiveAllocation",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "accRewardsPerAllocatedToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "distributedRebates",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingExtension.Allocation",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "allocationId",
          "type": "address"
        }
      ],
      "name": "getAllocationData",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "subgraphDeploymentId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accRewardsPerAllocatedToken",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accRewardsPending",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        }
      ],
      "name": "getAllocationState",
      "outputs": [
        {
          "internalType": "enum IHorizonStakingExtension.AllocationState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "getDelegatedTokensAvailable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        }
      ],
      "name": "getDelegation",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "shares",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingTypes.Delegation",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "enum IGraphPayments.PaymentTypes",
          "name": "paymentType",
          "type": "uint8"
        }
      ],
      "name": "getDelegationFeeCut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "getDelegationPool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "tokens",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "shares",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokensThawing",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sharesThawing",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thawingNonce",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingTypes.DelegationPool",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        }
      ],
      "name": "getIdleStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        }
      ],
      "name": "getIndexerStakedTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxThawingPeriod",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "getProviderTokensAvailable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "getProvision",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "tokens",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokensThawing",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sharesThawing",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "maxVerifierCut",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "thawingPeriod",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "createdAt",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "maxVerifierCutPending",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "thawingPeriodPending",
              "type": "uint64"
            },
            {
              "internalType": "uint256",
              "name": "lastParametersStagedAt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thawingNonce",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingTypes.Provision",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        }
      ],
      "name": "getServiceProvider",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "tokensStaked",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokensProvisioned",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingTypes.ServiceProvider",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        }
      ],
      "name": "getStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakingExtension",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "subgraphDeploymentId",
          "type": "bytes32"
        }
      ],
      "name": "getSubgraphAllocatedTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSubgraphService",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "thawRequestType",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "thawRequestId",
          "type": "bytes32"
        }
      ],
      "name": "getThawRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "shares",
              "type": "uint256"
            },
            {
              "internalType": "uint64",
              "name": "thawingUntil",
              "type": "uint64"
            },
            {
              "internalType": "bytes32",
              "name": "nextRequest",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "thawingNonce",
              "type": "uint256"
            }
          ],
          "internalType": "struct IHorizonStakingTypes.ThawRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "thawRequestType",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "getThawRequestList",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "head",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "tail",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "count",
              "type": "uint256"
            }
          ],
          "internalType": "struct ILinkedList.List",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IHorizonStakingTypes.ThawRequestType",
          "name": "thawRequestType",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "getThawedTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "delegationRatio",
          "type": "uint32"
        }
      ],
      "name": "getTokensAvailable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        }
      ],
      "name": "hasStake",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "allocationID",
          "type": "address"
        }
      ],
      "name": "isAllocation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "isAllowedLockedVerifier",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isAuthorized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isDelegationSlashingEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        }
      ],
      "name": "isOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "indexer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        }
      ],
      "name": "legacySlash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "provision",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "provisionLocked",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "oldServiceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "oldVerifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newServiceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newVerifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minSharesForNewProvider",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nThawRequests",
          "type": "uint256"
        }
      ],
      "name": "redelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "oldVerifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newVerifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nThawRequests",
          "type": "uint256"
        }
      ],
      "name": "reprovision",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "setAllowedLockedVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "enum IGraphPayments.PaymentTypes",
          "name": "paymentType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "feeCut",
          "type": "uint256"
        }
      ],
      "name": "setDelegationFeeCut",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setDelegationSlashingEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "maxThawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "setMaxThawingPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "setOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "setOperatorLocked",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "maxVerifierCut",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "thawingPeriod",
          "type": "uint64"
        }
      ],
      "name": "setProvisionParameters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokensVerifier",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifierDestination",
          "type": "address"
        }
      ],
      "name": "slash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "stakeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "stakeToProvision",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "thaw",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "undelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "undelegate",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "unstake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "verifier",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nThawRequests",
          "type": "uint256"
        }
      ],
      "name": "withdrawDelegated",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "serviceProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "deprecated",
          "type": "address"
        }
      ],
      "name": "withdrawDelegated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
