{
  "_format": "hh-sol-artifact-1",
  "contractName": "IHorizonStakingMain",
  "sourceName": "contracts/horizon/internal/IHorizonStakingMain.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": [
        {
          "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": "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"
        },
        {
          "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": 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": "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": [
        {
          "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": "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": [],
      "name": "getStakingExtension",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": [
        {
          "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": {}
}
