{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        }
      ],
      "name": "LogStakingNewStakeCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "oldTarget",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "newTrget",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "stakeId",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakingAmount",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRestaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "oldRewardRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "newRewardRate",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRewardRateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRewardReservesDecreased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRewardReservesIncreased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRewardsClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingRewardsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingStaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "ChainId",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "oldStakingRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "newStakingRate",
          "type": "uint256"
        }
      ],
      "name": "LogStakingStakingRateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "LogStakingUnstaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldWallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newWallet",
          "type": "address"
        }
      ],
      "name": "LogStakingWalletChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "oldRewardRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "UFixed",
          "name": "newRewardRate",
          "type": "uint256"
        }
      ],
      "name": "LogTargetRewardRateSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Version",
          "name": "version",
          "type": "uint48"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "activatedBy",
          "type": "address"
        }
      ],
      "name": "LogVersionableActivated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "activatedBy",
          "type": "address"
        }
      ],
      "name": "activate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ChainId",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "calculateCapitalSupport",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ChainId",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "calculateRequiredStaking",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "calculateRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rewardAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "NftId",
              "name": "id",
              "type": "uint96"
            },
            {
              "internalType": "NftId",
              "name": "target",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "stakeBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardBalance",
              "type": "uint256"
            },
            {
              "internalType": "Timestamp",
              "name": "createdAt",
              "type": "uint40"
            },
            {
              "internalType": "Timestamp",
              "name": "updatedAt",
              "type": "uint40"
            },
            {
              "internalType": "Version",
              "name": "version",
              "type": "uint48"
            },
            {
              "internalType": "Timestamp",
              "name": "lockedUntil",
              "type": "uint40"
            }
          ],
          "internalType": "struct IStaking.StakeInfo",
          "name": "stakeInfo",
          "type": "tuple"
        }
      ],
      "name": "calculateRewardsIncrement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rewardsAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        }
      ],
      "name": "capitalSupport",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "capitalAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "createStake",
      "outputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        },
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "signatureId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "createStakeWithSignature",
      "outputs": [
        {
          "internalType": "NftId",
          "name": "stakeId",
          "type": "uint96"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "bundle",
          "type": "uint96"
        }
      ],
      "name": "getBundleInfo",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "instanceId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bundleId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "displayName",
          "type": "string"
        },
        {
          "internalType": "enum IInstanceServiceFacade.BundleState",
          "name": "bundleState",
          "type": "uint8"
        },
        {
          "internalType": "Timestamp",
          "name": "expiryAt",
          "type": "uint40"
        },
        {
          "internalType": "bool",
          "name": "stakingSupported",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "unstakingSupported",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "stakeBalance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDip",
      "outputs": [
        {
          "internalType": "contract IERC20Metadata",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        }
      ],
      "name": "getInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "NftId",
              "name": "id",
              "type": "uint96"
            },
            {
              "internalType": "NftId",
              "name": "target",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "stakeBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rewardBalance",
              "type": "uint256"
            },
            {
              "internalType": "Timestamp",
              "name": "createdAt",
              "type": "uint40"
            },
            {
              "internalType": "Timestamp",
              "name": "updatedAt",
              "type": "uint40"
            },
            {
              "internalType": "Version",
              "name": "version",
              "type": "uint48"
            },
            {
              "internalType": "Timestamp",
              "name": "lockedUntil",
              "type": "uint40"
            }
          ],
          "internalType": "struct IStaking.StakeInfo",
          "name": "info",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMessageHelperAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "messageHelperAddress",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRegistry",
      "outputs": [
        {
          "internalType": "contract IChainRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakingWallet",
      "outputs": [
        {
          "internalType": "address",
          "name": "stakingWallet",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        }
      ],
      "name": "getTargetRewardRate",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "rewardRate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "idx",
          "type": "uint256"
        }
      ],
      "name": "getVersion",
      "outputs": [
        {
          "internalType": "Version",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Version",
          "name": "_version",
          "type": "uint48"
        }
      ],
      "name": "getVersionInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "Version",
              "name": "version",
              "type": "uint48"
            },
            {
              "internalType": "address",
              "name": "implementation",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "activatedBy",
              "type": "address"
            },
            {
              "internalType": "Blocknumber",
              "name": "activatedIn",
              "type": "uint32"
            },
            {
              "internalType": "Timestamp",
              "name": "activatedAt",
              "type": "uint40"
            }
          ],
          "internalType": "struct IVersionable.VersionInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "implementsIStaking",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Version",
          "name": "_version",
          "type": "uint48"
        }
      ],
      "name": "isActivated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        }
      ],
      "name": "isStakingSupported",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isSupported",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ObjectType",
          "name": "targetType",
          "type": "uint8"
        }
      ],
      "name": "isStakingSupportedForType",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isSupported",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "stakeId",
          "type": "uint96"
        }
      ],
      "name": "isUnstakingAvailable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isAvailable",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        }
      ],
      "name": "isUnstakingSupported",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isSupported",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxRewardRate",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rateDecimals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "refillRewardReserves",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "internalType": "NftId",
          "name": "newTarget",
          "type": "uint96"
        }
      ],
      "name": "restake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "NftId",
          "name": "stakeId",
          "type": "uint96"
        },
        {
          "internalType": "NftId",
          "name": "newTarget",
          "type": "uint96"
        },
        {
          "internalType": "bytes32",
          "name": "signatureId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "restakeWithSignature",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRate",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "UFixed",
          "name": "rewardRate",
          "type": "uint256"
        }
      ],
      "name": "setRewardRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ChainId",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "UFixed",
          "name": "stakingRate",
          "type": "uint256"
        }
      ],
      "name": "setStakingRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "stakingWalletNew",
          "type": "address"
        }
      ],
      "name": "setStakingWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "target",
          "type": "uint96"
        }
      ],
      "name": "stakes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ChainId",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "stakingRate",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "stakingRate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "toChain",
      "outputs": [
        {
          "internalType": "ChainId",
          "name": "",
          "type": "bytes5"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "int8",
          "name": "exp",
          "type": "int8"
        }
      ],
      "name": "toRate",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Version",
          "name": "_version",
          "type": "uint48"
        }
      ],
      "name": "toVersionParts",
      "outputs": [
        {
          "internalType": "VersionPart",
          "name": "major",
          "type": "uint16"
        },
        {
          "internalType": "VersionPart",
          "name": "minor",
          "type": "uint16"
        },
        {
          "internalType": "VersionPart",
          "name": "patch",
          "type": "uint16"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        },
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "unstake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "NftId",
          "name": "id",
          "type": "uint96"
        }
      ],
      "name": "unstakeAndClaimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "Version",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versionParts",
      "outputs": [
        {
          "internalType": "VersionPart",
          "name": "major",
          "type": "uint16"
        },
        {
          "internalType": "VersionPart",
          "name": "minor",
          "type": "uint16"
        },
        {
          "internalType": "VersionPart",
          "name": "patch",
          "type": "uint16"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "name": "withdrawRewardReserves",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "14": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/IERC20.sol",
    "15": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/extensions/IERC20Metadata.sol",
    "17": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/IERC721.sol",
    "20": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/extensions/IERC721Enumerable.sol",
    "29": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/introspection/IERC165.sol",
    "34": "contracts/registry/IChainNft.sol",
    "36": "contracts/registry/IChainRegistry.sol",
    "39": "contracts/registry/IInstanceServiceFacade.sol",
    "43": "contracts/shared/IBaseTypes.sol",
    "44": "contracts/shared/IVersionType.sol",
    "45": "contracts/shared/IVersionable.sol",
    "47": "contracts/shared/UFixedMath.sol",
    "50": "contracts/staking/IStaking.sol"
  },
  "ast": {
    "absolutePath": "contracts/staking/IStaking.sol",
    "exportedSymbols": {
      "ChainId": [
        4447
      ],
      "IChainRegistry": [
        4025
      ],
      "IERC20Metadata": [
        12510
      ],
      "IInstanceServiceFacade": [
        4295
      ],
      "IStaking": [
        6479
      ],
      "IVersionable": [
        4856
      ],
      "NftId": [
        3353
      ],
      "ObjectType": [
        3555
      ],
      "Timestamp": [
        4530
      ],
      "UFixed": [
        5099
      ],
      "Version": [
        12269
      ]
    },
    "id": 6480,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5967,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:24:50"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "file": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "id": 5969,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 12511,
        "src": "65:97:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5968,
              "name": "IERC20Metadata",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 12510,
              "src": "73:14:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/shared/IBaseTypes.sol",
        "file": "../shared/IBaseTypes.sol",
        "id": 5972,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 4754,
        "src": "164:60:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5970,
              "name": "ChainId",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4447,
              "src": "172:7:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 5971,
              "name": "Timestamp",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4530,
              "src": "181:9:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/shared/IVersionType.sol",
        "file": "../shared/IVersionType.sol",
        "id": 5974,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 12455,
        "src": "225:51:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5973,
              "name": "Version",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 12269,
              "src": "233:7:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/shared/IVersionable.sol",
        "file": "../shared/IVersionable.sol",
        "id": 5976,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 4857,
        "src": "277:56:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5975,
              "name": "IVersionable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4856,
              "src": "285:12:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/shared/UFixedMath.sol",
        "file": "../shared/UFixedMath.sol",
        "id": 5978,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 5592,
        "src": "335:48:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5977,
              "name": "UFixed",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 5099,
              "src": "343:6:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/registry/IChainNft.sol",
        "file": "../registry/IChainNft.sol",
        "id": 5980,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 3495,
        "src": "385:48:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5979,
              "name": "NftId",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 3353,
              "src": "393:5:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/registry/IChainRegistry.sol",
        "file": "../registry/IChainRegistry.sol",
        "id": 5983,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 4026,
        "src": "434:74:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5981,
              "name": "IChainRegistry",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4025,
              "src": "442:14:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 5982,
              "name": "ObjectType",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 3555,
              "src": "458:10:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/registry/IInstanceServiceFacade.sol",
        "file": "../registry/IInstanceServiceFacade.sol",
        "id": 5985,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6480,
        "sourceUnit": 4296,
        "src": "509:78:50",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5984,
              "name": "IInstanceServiceFacade",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4295,
              "src": "517:22:50",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 5986,
              "name": "IVersionable",
              "nameLocations": [
                "616:12:50"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4856,
              "src": "616:12:50"
            },
            "id": 5987,
            "nodeType": "InheritanceSpecifier",
            "src": "616:12:50"
          }
        ],
        "canonicalName": "IStaking",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 6479,
        "linearizedBaseContracts": [
          6479,
          4856
        ],
        "name": "IStaking",
        "nameLocation": "600:8:50",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "IStaking.StakeInfo",
            "id": 6010,
            "members": [
              {
                "constant": false,
                "id": 5990,
                "mutability": "mutable",
                "name": "id",
                "nameLocation": "669:2:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "663:8:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                  "typeString": "NftId"
                },
                "typeName": {
                  "id": 5989,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 5988,
                    "name": "NftId",
                    "nameLocations": [
                      "663:5:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3353,
                    "src": "663:5:50"
                  },
                  "referencedDeclaration": 3353,
                  "src": "663:5:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5993,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "687:6:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "681:12:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                  "typeString": "NftId"
                },
                "typeName": {
                  "id": 5992,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 5991,
                    "name": "NftId",
                    "nameLocations": [
                      "681:5:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3353,
                    "src": "681:5:50"
                  },
                  "referencedDeclaration": 3353,
                  "src": "681:5:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5995,
                "mutability": "mutable",
                "name": "stakeBalance",
                "nameLocation": "711:12:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "703:20:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5994,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "703:7:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5997,
                "mutability": "mutable",
                "name": "rewardBalance",
                "nameLocation": "741:13:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "733:21:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5996,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "733:7:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6000,
                "mutability": "mutable",
                "name": "createdAt",
                "nameLocation": "774:9:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "764:19:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                },
                "typeName": {
                  "id": 5999,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 5998,
                    "name": "Timestamp",
                    "nameLocations": [
                      "764:9:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4530,
                    "src": "764:9:50"
                  },
                  "referencedDeclaration": 4530,
                  "src": "764:9:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                    "typeString": "Timestamp"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6003,
                "mutability": "mutable",
                "name": "updatedAt",
                "nameLocation": "803:9:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "793:19:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                },
                "typeName": {
                  "id": 6002,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 6001,
                    "name": "Timestamp",
                    "nameLocations": [
                      "793:9:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4530,
                    "src": "793:9:50"
                  },
                  "referencedDeclaration": 4530,
                  "src": "793:9:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                    "typeString": "Timestamp"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6006,
                "mutability": "mutable",
                "name": "version",
                "nameLocation": "830:7:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "822:15:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Version_$12269",
                  "typeString": "Version"
                },
                "typeName": {
                  "id": 6005,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 6004,
                    "name": "Version",
                    "nameLocations": [
                      "822:7:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12269,
                    "src": "822:7:50"
                  },
                  "referencedDeclaration": 12269,
                  "src": "822:7:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Version_$12269",
                    "typeString": "Version"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6009,
                "mutability": "mutable",
                "name": "lockedUntil",
                "nameLocation": "857:11:50",
                "nodeType": "VariableDeclaration",
                "scope": 6010,
                "src": "847:21:50",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                },
                "typeName": {
                  "id": 6008,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 6007,
                    "name": "Timestamp",
                    "nameLocations": [
                      "847:9:50"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4530,
                    "src": "847:9:50"
                  },
                  "referencedDeclaration": 4530,
                  "src": "847:9:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                    "typeString": "Timestamp"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "StakeInfo",
            "nameLocation": "643:9:50",
            "nodeType": "StructDefinition",
            "scope": 6479,
            "src": "636:262:50",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "eventSelector": "359112ed49b51aa57623cda8e6aba451d41c05a0cec07c303b7d94de22ea9b20",
            "id": 6018,
            "name": "LogStakingWalletChanged",
            "nameLocation": "910:23:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6012,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "942:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6018,
                  "src": "934:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6011,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6014,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldWallet",
                  "nameLocation": "956:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6018,
                  "src": "948:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6013,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "948:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6016,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newWallet",
                  "nameLocation": "975:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6018,
                  "src": "967:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6015,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "967:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "933:52:50"
            },
            "src": "904:82:50"
          },
          {
            "anonymous": false,
            "eventSelector": "b628bf08f5b4ded4b379092b99133f74d52fc917e939ffd5e85268edc58deff5",
            "id": 6026,
            "name": "LogStakingRewardReservesIncreased",
            "nameLocation": "997:33:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6020,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1039:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6026,
                  "src": "1031:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6019,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1031:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6022,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1053:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6026,
                  "src": "1045:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1045:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6024,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "1069:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6026,
                  "src": "1061:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1030:50:50"
            },
            "src": "991:90:50"
          },
          {
            "anonymous": false,
            "eventSelector": "48cc84bb6be6c33e706b3191822b1c798e92c3be4703b854fa7d28655b6b9161",
            "id": 6034,
            "name": "LogStakingRewardReservesDecreased",
            "nameLocation": "1092:33:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6028,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1134:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6034,
                  "src": "1126:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1126:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6030,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1148:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6034,
                  "src": "1140:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6029,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6032,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "1164:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6034,
                  "src": "1156:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6031,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1156:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1125:50:50"
            },
            "src": "1086:90:50"
          },
          {
            "anonymous": false,
            "eventSelector": "b3dadab54c4cf13d74f841f035ba6d7da492144b56ca32d1d0d340aeb2323fa7",
            "id": 6047,
            "name": "LogTargetRewardRateSet",
            "nameLocation": "1188:22:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6036,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1219:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6047,
                  "src": "1211:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6039,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1231:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6047,
                  "src": "1225:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6038,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6037,
                      "name": "NftId",
                      "nameLocations": [
                        "1225:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1225:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1225:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6042,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldRewardRate",
                  "nameLocation": "1246:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6047,
                  "src": "1239:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6041,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6040,
                      "name": "UFixed",
                      "nameLocations": [
                        "1239:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1239:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1239:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6045,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newRewardRate",
                  "nameLocation": "1268:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6047,
                  "src": "1261:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6044,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6043,
                      "name": "UFixed",
                      "nameLocations": [
                        "1261:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1261:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1261:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1210:72:50"
            },
            "src": "1182:101:50"
          },
          {
            "anonymous": false,
            "eventSelector": "8fcdf74b8073f04543cf61e0a1b7b93ed00e71d8c419d743728f8f7d41ce4abd",
            "id": 6057,
            "name": "LogStakingRewardRateSet",
            "nameLocation": "1294:23:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6049,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1326:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6057,
                  "src": "1318:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6052,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldRewardRate",
                  "nameLocation": "1339:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6057,
                  "src": "1332:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6051,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6050,
                      "name": "UFixed",
                      "nameLocations": [
                        "1332:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1332:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1332:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6055,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newRewardRate",
                  "nameLocation": "1361:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6057,
                  "src": "1354:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6054,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6053,
                      "name": "UFixed",
                      "nameLocations": [
                        "1354:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1354:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1354:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1317:58:50"
            },
            "src": "1288:88:50"
          },
          {
            "anonymous": false,
            "eventSelector": "7f4ed2d4096a23693f9cf036dc7b47ed499e7cb38fa3f0398100379330eaf13a",
            "id": 6072,
            "name": "LogStakingStakingRateSet",
            "nameLocation": "1387:24:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6071,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6059,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1420:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "1412:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6058,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1412:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6062,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "1434:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "1426:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6061,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6060,
                      "name": "ChainId",
                      "nameLocations": [
                        "1426:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "1426:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "1426:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6064,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1449:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "1441:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6063,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1441:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6067,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldStakingRate",
                  "nameLocation": "1463:14:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "1456:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6066,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6065,
                      "name": "UFixed",
                      "nameLocations": [
                        "1456:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1456:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1456:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6070,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newStakingRate",
                  "nameLocation": "1486:14:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6072,
                  "src": "1479:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6069,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6068,
                      "name": "UFixed",
                      "nameLocations": [
                        "1479:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "1479:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "1479:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1411:90:50"
            },
            "src": "1381:121:50"
          },
          {
            "anonymous": false,
            "eventSelector": "0b7f33f010bdd01296afad5a65cddcba6622740b7ea55fb637e21aba38317bd1",
            "id": 6082,
            "name": "LogStakingNewStakeCreated",
            "nameLocation": "1514:25:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6075,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1546:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6082,
                  "src": "1540:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6074,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6073,
                      "name": "NftId",
                      "nameLocations": [
                        "1540:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1540:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1540:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6077,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1562:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6082,
                  "src": "1554:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6076,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1554:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6080,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1574:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6082,
                  "src": "1568:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6079,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6078,
                      "name": "NftId",
                      "nameLocations": [
                        "1568:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1568:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1568:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1539:38:50"
            },
            "src": "1508:70:50"
          },
          {
            "anonymous": false,
            "eventSelector": "3f91c6b282474fffabb2b7bbcd0c8e690e2cd55e38d29105aa76e80c6532e546",
            "id": 6096,
            "name": "LogStakingStaked",
            "nameLocation": "1589:16:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6085,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1612:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6096,
                  "src": "1606:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6084,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6083,
                      "name": "NftId",
                      "nameLocations": [
                        "1606:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1606:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1606:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6087,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1628:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6096,
                  "src": "1620:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6086,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6090,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1640:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6096,
                  "src": "1634:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6089,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6088,
                      "name": "NftId",
                      "nameLocations": [
                        "1634:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1634:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1634:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6092,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1652:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6096,
                  "src": "1644:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1644:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6094,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "1668:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6096,
                  "src": "1660:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6093,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1660:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1605:74:50"
            },
            "src": "1583:97:50"
          },
          {
            "anonymous": false,
            "eventSelector": "71c92eee6263ef73b9fab5adccc7d9b4bd936df0d06a13715bb26e1a555f98db",
            "id": 6110,
            "name": "LogStakingUnstaked",
            "nameLocation": "1691:18:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6099,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1716:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6110,
                  "src": "1710:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6098,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6097,
                      "name": "NftId",
                      "nameLocations": [
                        "1710:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1710:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1710:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6101,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1732:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6110,
                  "src": "1724:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6100,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1724:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6104,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1744:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6110,
                  "src": "1738:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6103,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6102,
                      "name": "NftId",
                      "nameLocations": [
                        "1738:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1738:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1738:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6106,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1756:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6110,
                  "src": "1748:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6105,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1748:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6108,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "1772:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6110,
                  "src": "1764:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1709:74:50"
            },
            "src": "1685:99:50"
          },
          {
            "anonymous": false,
            "eventSelector": "0a69d32b7310166eec9a561cd5e79efb658a489c0ccc45473d10465eb4c91521",
            "id": 6125,
            "name": "LogStakingRestaked",
            "nameLocation": "1795:18:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6113,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldTarget",
                  "nameLocation": "1820:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6125,
                  "src": "1814:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6112,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6111,
                      "name": "NftId",
                      "nameLocations": [
                        "1814:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1814:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1814:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6116,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newTrget",
                  "nameLocation": "1837:8:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6125,
                  "src": "1831:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6115,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6114,
                      "name": "NftId",
                      "nameLocations": [
                        "1831:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1831:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1831:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6118,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1855:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6125,
                  "src": "1847:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1847:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6121,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "stakeId",
                  "nameLocation": "1867:7:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6125,
                  "src": "1861:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6120,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6119,
                      "name": "NftId",
                      "nameLocations": [
                        "1861:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1861:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1861:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6123,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "stakingAmount",
                  "nameLocation": "1884:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6125,
                  "src": "1876:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1813:85:50"
            },
            "src": "1789:110:50"
          },
          {
            "anonymous": false,
            "eventSelector": "f2502c501e885a216c3d8cad389bd394bedcf33e89924ecb6e2cd09be1977ac2",
            "id": 6134,
            "name": "LogStakingRewardsUpdated",
            "nameLocation": "1911:24:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6128,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1942:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6134,
                  "src": "1936:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6127,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6126,
                      "name": "NftId",
                      "nameLocations": [
                        "1936:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "1936:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "1936:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6130,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1954:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6134,
                  "src": "1946:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1946:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6132,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "1970:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6134,
                  "src": "1962:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1935:46:50"
            },
            "src": "1905:77:50"
          },
          {
            "anonymous": false,
            "eventSelector": "f7d8d105f223293052b9281d8f374bd678486ab7a0bd8d61354accce2f72603e",
            "id": 6143,
            "name": "LogStakingRewardsClaimed",
            "nameLocation": "1993:24:50",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6142,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6137,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "2024:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6143,
                  "src": "2018:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6136,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6135,
                      "name": "NftId",
                      "nameLocations": [
                        "2018:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2018:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2018:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6139,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2036:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6143,
                  "src": "2028:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6138,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2028:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6141,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newBalance",
                  "nameLocation": "2052:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6143,
                  "src": "2044:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6140,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2044:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2017:46:50"
            },
            "src": "1987:77:50"
          },
          {
            "functionSelector": "1a860c3e",
            "id": 6148,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setStakingWallet",
            "nameLocation": "2136:16:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6145,
                  "mutability": "mutable",
                  "name": "stakingWalletNew",
                  "nameLocation": "2161:16:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6148,
                  "src": "2153:24:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6144,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2153:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2152:26:50"
            },
            "returnParameters": {
              "id": 6147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2187:0:50"
            },
            "scope": 6479,
            "src": "2127:61:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "ea67800a",
            "id": 6153,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "refillRewardReserves",
            "nameLocation": "2203:20:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6150,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "2232:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6153,
                  "src": "2224:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2224:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2223:19:50"
            },
            "returnParameters": {
              "id": 6152,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2251:0:50"
            },
            "scope": 6479,
            "src": "2194:58:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "8f081e2e",
            "id": 6158,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawRewardReserves",
            "nameLocation": "2266:22:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6155,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "2297:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6158,
                  "src": "2289:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6154,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2288:19:50"
            },
            "returnParameters": {
              "id": 6157,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2316:0:50"
            },
            "scope": 6479,
            "src": "2257:60:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "9e447fc6",
            "id": 6164,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRewardRate",
            "nameLocation": "2332:13:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6161,
                  "mutability": "mutable",
                  "name": "rewardRate",
                  "nameLocation": "2353:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6164,
                  "src": "2346:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6160,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6159,
                      "name": "UFixed",
                      "nameLocations": [
                        "2346:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "2346:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "2346:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2345:19:50"
            },
            "returnParameters": {
              "id": 6163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2373:0:50"
            },
            "scope": 6479,
            "src": "2323:51:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "3e1e5638",
            "id": 6175,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setStakingRate",
            "nameLocation": "2388:14:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6167,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "2411:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6175,
                  "src": "2403:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6166,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6165,
                      "name": "ChainId",
                      "nameLocations": [
                        "2403:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "2403:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "2403:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6169,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "2426:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6175,
                  "src": "2418:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6168,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6172,
                  "mutability": "mutable",
                  "name": "stakingRate",
                  "nameLocation": "2440:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6175,
                  "src": "2433:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6171,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6170,
                      "name": "UFixed",
                      "nameLocations": [
                        "2433:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "2433:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "2433:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2402:50:50"
            },
            "returnParameters": {
              "id": 6174,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2461:0:50"
            },
            "scope": 6479,
            "src": "2379:83:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b17a1072",
            "id": 6186,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "createStake",
            "nameLocation": "2481:11:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6178,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "2499:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6186,
                  "src": "2493:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6177,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6176,
                      "name": "NftId",
                      "nameLocations": [
                        "2493:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2493:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2493:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6180,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "2515:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6186,
                  "src": "2507:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6179,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2507:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2492:33:50"
            },
            "returnParameters": {
              "id": 6185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6184,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "2549:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6186,
                  "src": "2543:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6183,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6182,
                      "name": "NftId",
                      "nameLocations": [
                        "2543:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2543:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2543:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2542:10:50"
            },
            "scope": 6479,
            "src": "2472:81:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "d93c04a0",
            "id": 6194,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stake",
            "nameLocation": "2567:5:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6189,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "2579:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6194,
                  "src": "2573:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6188,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6187,
                      "name": "NftId",
                      "nameLocations": [
                        "2573:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2573:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2573:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6191,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "2591:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6194,
                  "src": "2583:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6190,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2583:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2572:29:50"
            },
            "returnParameters": {
              "id": 6193,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2610:0:50"
            },
            "scope": 6479,
            "src": "2558:53:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1621b870",
            "id": 6211,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "createStakeWithSignature",
            "nameLocation": "2625:24:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6196,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "2658:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2650:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2650:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6199,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "2671:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2665:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6198,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6197,
                      "name": "NftId",
                      "nameLocations": [
                        "2665:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2665:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2665:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6201,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "2687:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2679:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6200,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2679:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6203,
                  "mutability": "mutable",
                  "name": "signatureId",
                  "nameLocation": "2706:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2698:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6202,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2698:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6205,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "2734:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2719:24:50",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6204,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2719:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2649:95:50"
            },
            "returnParameters": {
              "id": 6210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6209,
                  "mutability": "mutable",
                  "name": "stakeId",
                  "nameLocation": "2768:7:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2762:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6208,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6207,
                      "name": "NftId",
                      "nameLocations": [
                        "2762:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2762:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2762:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2761:15:50"
            },
            "scope": 6479,
            "src": "2616:161:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "5cbb7d85",
            "id": 6220,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "restake",
            "nameLocation": "2791:7:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6218,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6214,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "2805:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6220,
                  "src": "2799:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6213,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6212,
                      "name": "NftId",
                      "nameLocations": [
                        "2799:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2799:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2799:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6217,
                  "mutability": "mutable",
                  "name": "newTarget",
                  "nameLocation": "2815:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6220,
                  "src": "2809:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6216,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6215,
                      "name": "NftId",
                      "nameLocations": [
                        "2809:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2809:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2809:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2798:27:50"
            },
            "returnParameters": {
              "id": 6219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2834:0:50"
            },
            "scope": 6479,
            "src": "2782:53:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "8b9bdd04",
            "id": 6235,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "restakeWithSignature",
            "nameLocation": "2849:20:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6222,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "2878:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6235,
                  "src": "2870:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2870:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6225,
                  "mutability": "mutable",
                  "name": "stakeId",
                  "nameLocation": "2891:7:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6235,
                  "src": "2885:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6224,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6223,
                      "name": "NftId",
                      "nameLocations": [
                        "2885:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2885:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2885:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6228,
                  "mutability": "mutable",
                  "name": "newTarget",
                  "nameLocation": "2906:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6235,
                  "src": "2900:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6227,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6226,
                      "name": "NftId",
                      "nameLocations": [
                        "2900:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2900:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2900:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6230,
                  "mutability": "mutable",
                  "name": "signatureId",
                  "nameLocation": "2925:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6235,
                  "src": "2917:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6229,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2917:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6232,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "2953:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6235,
                  "src": "2938:24:50",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6231,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2938:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2869:94:50"
            },
            "returnParameters": {
              "id": 6234,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2972:0:50"
            },
            "scope": 6479,
            "src": "2840:133:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fc58bba8",
            "id": 6243,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unstake",
            "nameLocation": "2987:7:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6241,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6238,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3001:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6243,
                  "src": "2995:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6237,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6236,
                      "name": "NftId",
                      "nameLocations": [
                        "2995:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "2995:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "2995:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6240,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "3013:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6243,
                  "src": "3005:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6239,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3005:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2994:29:50"
            },
            "returnParameters": {
              "id": 6242,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3032:0:50"
            },
            "scope": 6479,
            "src": "2978:55:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "38381e63",
            "id": 6249,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unstakeAndClaimRewards",
            "nameLocation": "3049:22:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6246,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3078:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6249,
                  "src": "3072:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6245,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6244,
                      "name": "NftId",
                      "nameLocations": [
                        "3072:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "3072:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "3072:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3071:10:50"
            },
            "returnParameters": {
              "id": 6248,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3090:0:50"
            },
            "scope": 6479,
            "src": "3040:51:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "719f761a",
            "id": 6255,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nameLocation": "3105:12:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6252,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3124:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6255,
                  "src": "3118:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6251,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6250,
                      "name": "NftId",
                      "nameLocations": [
                        "3118:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "3118:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "3118:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3117:10:50"
            },
            "returnParameters": {
              "id": 6254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3136:0:50"
            },
            "scope": 6479,
            "src": "3096:41:50",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "5ab1bd53",
            "id": 6261,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getRegistry",
            "nameLocation": "3208:11:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3219:2:50"
            },
            "returnParameters": {
              "id": 6260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6259,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6261,
                  "src": "3244:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IChainRegistry_$4025",
                    "typeString": "contract IChainRegistry"
                  },
                  "typeName": {
                    "id": 6258,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6257,
                      "name": "IChainRegistry",
                      "nameLocations": [
                        "3244:14:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4025,
                      "src": "3244:14:50"
                    },
                    "referencedDeclaration": 4025,
                    "src": "3244:14:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IChainRegistry_$4025",
                      "typeString": "contract IChainRegistry"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3243:16:50"
            },
            "scope": 6479,
            "src": "3199:61:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "cb3bbeb4",
            "id": 6266,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getMessageHelperAddress",
            "nameLocation": "3274:23:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6262,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3297:2:50"
            },
            "returnParameters": {
              "id": 6265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6264,
                  "mutability": "mutable",
                  "name": "messageHelperAddress",
                  "nameLocation": "3330:20:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6266,
                  "src": "3322:28:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6263,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3322:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3321:30:50"
            },
            "scope": 6479,
            "src": "3265:87:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0d40ffc7",
            "id": 6272,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "maxRewardRate",
            "nameLocation": "3367:13:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3380:2:50"
            },
            "returnParameters": {
              "id": 6271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6270,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "3412:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6272,
                  "src": "3405:11:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6269,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6268,
                      "name": "UFixed",
                      "nameLocations": [
                        "3405:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "3405:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "3405:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3404:13:50"
            },
            "scope": 6479,
            "src": "3358:60:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "7b0a47ee",
            "id": 6278,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardRate",
            "nameLocation": "3432:10:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3442:2:50"
            },
            "returnParameters": {
              "id": 6277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6276,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "3474:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3467:11:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6275,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6274,
                      "name": "UFixed",
                      "nameLocations": [
                        "3467:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "3467:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "3467:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3466:13:50"
            },
            "scope": 6479,
            "src": "3423:57:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "aa5c3ab4",
            "id": 6283,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardBalance",
            "nameLocation": "3494:13:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6279,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3507:2:50"
            },
            "returnParameters": {
              "id": 6282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6281,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "3540:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6283,
                  "src": "3532:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3532:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3531:19:50"
            },
            "scope": 6479,
            "src": "3485:66:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f0de8228",
            "id": 6288,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardReserves",
            "nameLocation": "3565:14:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6284,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3579:2:50"
            },
            "returnParameters": {
              "id": 6287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6286,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "3612:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6288,
                  "src": "3604:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6285,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3604:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3603:19:50"
            },
            "scope": 6479,
            "src": "3556:67:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "12b9a5c9",
            "id": 6297,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getTargetRewardRate",
            "nameLocation": "3637:19:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6291,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "3663:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6297,
                  "src": "3657:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6290,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6289,
                      "name": "NftId",
                      "nameLocations": [
                        "3657:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "3657:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "3657:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3656:14:50"
            },
            "returnParameters": {
              "id": 6296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6295,
                  "mutability": "mutable",
                  "name": "rewardRate",
                  "nameLocation": "3700:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6297,
                  "src": "3693:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6294,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6293,
                      "name": "UFixed",
                      "nameLocations": [
                        "3693:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "3693:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "3693:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3692:19:50"
            },
            "scope": 6479,
            "src": "3628:84:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "93bc9dfe",
            "id": 6302,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakeBalance",
            "nameLocation": "3727:12:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6298,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3739:2:50"
            },
            "returnParameters": {
              "id": 6301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6300,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "3772:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6302,
                  "src": "3764:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6299,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3764:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3763:19:50"
            },
            "scope": 6479,
            "src": "3718:65:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0dd4d811",
            "id": 6313,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakingRate",
            "nameLocation": "3797:11:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6305,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "3817:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6313,
                  "src": "3809:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6304,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6303,
                      "name": "ChainId",
                      "nameLocations": [
                        "3809:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "3809:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "3809:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6307,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "3832:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6313,
                  "src": "3824:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6306,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3824:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3808:30:50"
            },
            "returnParameters": {
              "id": 6312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6311,
                  "mutability": "mutable",
                  "name": "stakingRate",
                  "nameLocation": "3868:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6313,
                  "src": "3861:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6310,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6309,
                      "name": "UFixed",
                      "nameLocations": [
                        "3861:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "3861:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "3861:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3860:20:50"
            },
            "scope": 6479,
            "src": "3788:93:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b3fc986e",
            "id": 6318,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getStakingWallet",
            "nameLocation": "3895:16:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3911:2:50"
            },
            "returnParameters": {
              "id": 6317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6316,
                  "mutability": "mutable",
                  "name": "stakingWallet",
                  "nameLocation": "3944:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6318,
                  "src": "3936:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3936:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3935:23:50"
            },
            "scope": 6479,
            "src": "3886:73:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b54ded6e",
            "id": 6324,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getDip",
            "nameLocation": "3973:6:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6319,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3979:2:50"
            },
            "returnParameters": {
              "id": 6323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6322,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6324,
                  "src": "4004:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$12510",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 6321,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6320,
                      "name": "IERC20Metadata",
                      "nameLocations": [
                        "4004:14:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12510,
                      "src": "4004:14:50"
                    },
                    "referencedDeclaration": 12510,
                    "src": "4004:14:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$12510",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4003:16:50"
            },
            "scope": 6479,
            "src": "3964:56:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "4c3371cd",
            "id": 6333,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getInfo",
            "nameLocation": "4035:7:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6327,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4049:2:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6333,
                  "src": "4043:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6326,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6325,
                      "name": "NftId",
                      "nameLocations": [
                        "4043:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4043:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4043:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4042:10:50"
            },
            "returnParameters": {
              "id": 6332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6331,
                  "mutability": "mutable",
                  "name": "info",
                  "nameLocation": "4092:4:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6333,
                  "src": "4075:21:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInfo_$6010_memory_ptr",
                    "typeString": "struct IStaking.StakeInfo"
                  },
                  "typeName": {
                    "id": 6330,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6329,
                      "name": "StakeInfo",
                      "nameLocations": [
                        "4075:9:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 6010,
                      "src": "4075:9:50"
                    },
                    "referencedDeclaration": 6010,
                    "src": "4075:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInfo_$6010_storage_ptr",
                      "typeString": "struct IStaking.StakeInfo"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4074:23:50"
            },
            "scope": 6479,
            "src": "4026:72:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "85efd1b7",
            "id": 6341,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakes",
            "nameLocation": "4113:6:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6336,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4126:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6341,
                  "src": "4120:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6335,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6334,
                      "name": "NftId",
                      "nameLocations": [
                        "4120:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4120:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4120:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4119:14:50"
            },
            "returnParameters": {
              "id": 6340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6339,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "4164:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6341,
                  "src": "4156:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6338,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4156:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4155:19:50"
            },
            "scope": 6479,
            "src": "4104:71:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "33d84ec0",
            "id": 6349,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "capitalSupport",
            "nameLocation": "4189:14:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6344,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4210:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6349,
                  "src": "4204:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6343,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6342,
                      "name": "NftId",
                      "nameLocations": [
                        "4204:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4204:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4204:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4203:14:50"
            },
            "returnParameters": {
              "id": 6348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6347,
                  "mutability": "mutable",
                  "name": "capitalAmount",
                  "nameLocation": "4248:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6349,
                  "src": "4240:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4240:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4239:23:50"
            },
            "scope": 6479,
            "src": "4180:83:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "ac64bace",
            "id": 6357,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isStakingSupportedForType",
            "nameLocation": "4278:25:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6352,
                  "mutability": "mutable",
                  "name": "targetType",
                  "nameLocation": "4315:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6357,
                  "src": "4304:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ObjectType_$3555",
                    "typeString": "ObjectType"
                  },
                  "typeName": {
                    "id": 6351,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6350,
                      "name": "ObjectType",
                      "nameLocations": [
                        "4304:10:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3555,
                      "src": "4304:10:50"
                    },
                    "referencedDeclaration": 3555,
                    "src": "4304:10:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ObjectType_$3555",
                      "typeString": "ObjectType"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4303:23:50"
            },
            "returnParameters": {
              "id": 6356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6355,
                  "mutability": "mutable",
                  "name": "isSupported",
                  "nameLocation": "4354:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6357,
                  "src": "4349:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6354,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4349:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4348:18:50"
            },
            "scope": 6479,
            "src": "4269:98:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e392983c",
            "id": 6365,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isStakingSupported",
            "nameLocation": "4381:18:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6360,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4406:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6365,
                  "src": "4400:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6359,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6358,
                      "name": "NftId",
                      "nameLocations": [
                        "4400:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4400:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4400:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4399:14:50"
            },
            "returnParameters": {
              "id": 6364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6363,
                  "mutability": "mutable",
                  "name": "isSupported",
                  "nameLocation": "4441:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6365,
                  "src": "4436:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6362,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4436:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4435:18:50"
            },
            "scope": 6479,
            "src": "4372:82:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0c7785f4",
            "id": 6373,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isUnstakingSupported",
            "nameLocation": "4468:20:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6368,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4495:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6373,
                  "src": "4489:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6367,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6366,
                      "name": "NftId",
                      "nameLocations": [
                        "4489:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4489:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4489:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4488:14:50"
            },
            "returnParameters": {
              "id": 6372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6371,
                  "mutability": "mutable",
                  "name": "isSupported",
                  "nameLocation": "4530:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6373,
                  "src": "4525:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6370,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4525:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4524:18:50"
            },
            "scope": 6479,
            "src": "4459:84:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "8e417e0a",
            "id": 6381,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isUnstakingAvailable",
            "nameLocation": "4557:20:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6376,
                  "mutability": "mutable",
                  "name": "stakeId",
                  "nameLocation": "4584:7:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6381,
                  "src": "4578:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6375,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6374,
                      "name": "NftId",
                      "nameLocations": [
                        "4578:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "4578:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "4578:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4577:15:50"
            },
            "returnParameters": {
              "id": 6380,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6379,
                  "mutability": "mutable",
                  "name": "isAvailable",
                  "nameLocation": "4620:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6381,
                  "src": "4615:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6378,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4615:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4614:18:50"
            },
            "scope": 6479,
            "src": "4548:85:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e6ca17d0",
            "id": 6389,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "calculateRewardsIncrement",
            "nameLocation": "4648:25:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6384,
                  "mutability": "mutable",
                  "name": "stakeInfo",
                  "nameLocation": "4691:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6389,
                  "src": "4674:26:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StakeInfo_$6010_memory_ptr",
                    "typeString": "struct IStaking.StakeInfo"
                  },
                  "typeName": {
                    "id": 6383,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6382,
                      "name": "StakeInfo",
                      "nameLocations": [
                        "4674:9:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 6010,
                      "src": "4674:9:50"
                    },
                    "referencedDeclaration": 6010,
                    "src": "4674:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StakeInfo_$6010_storage_ptr",
                      "typeString": "struct IStaking.StakeInfo"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4673:28:50"
            },
            "returnParameters": {
              "id": 6388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6387,
                  "mutability": "mutable",
                  "name": "rewardsAmount",
                  "nameLocation": "4732:13:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6389,
                  "src": "4724:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4724:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4723:23:50"
            },
            "scope": 6479,
            "src": "4639:108:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "48a88706",
            "id": 6398,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "calculateRewards",
            "nameLocation": "4761:16:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6391,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4786:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6398,
                  "src": "4778:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6390,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4778:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6393,
                  "mutability": "mutable",
                  "name": "duration",
                  "nameLocation": "4802:8:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6398,
                  "src": "4794:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6392,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4794:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4777:34:50"
            },
            "returnParameters": {
              "id": 6397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6396,
                  "mutability": "mutable",
                  "name": "rewardAmount",
                  "nameLocation": "4842:12:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6398,
                  "src": "4834:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6395,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4834:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4833:22:50"
            },
            "scope": 6479,
            "src": "4752:104:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "efc38668",
            "id": 6410,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "calculateRequiredStaking",
            "nameLocation": "4871:24:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6401,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "4904:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "4896:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6400,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6399,
                      "name": "ChainId",
                      "nameLocations": [
                        "4896:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "4896:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "4896:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6403,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "4919:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "4911:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6402,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4911:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6405,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nameLocation": "4934:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "4926:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6404,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4926:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4895:51:50"
            },
            "returnParameters": {
              "id": 6409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6408,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "4977:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "4969:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6407,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4969:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4968:19:50"
            },
            "scope": 6479,
            "src": "4862:126:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "9b59d46e",
            "id": 6422,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "calculateCapitalSupport",
            "nameLocation": "5002:23:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6413,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "5034:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "5026:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6412,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6411,
                      "name": "ChainId",
                      "nameLocations": [
                        "5026:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "5026:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "5026:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6415,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "5049:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "5041:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6414,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5041:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6417,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "5064:9:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "5056:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5056:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5025:49:50"
            },
            "returnParameters": {
              "id": 6421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6420,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nameLocation": "5105:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "5097:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6419,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5096:21:50"
            },
            "scope": 6479,
            "src": "4993:125:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "178156ca",
            "id": 6430,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toChain",
            "nameLocation": "5133:7:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6424,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "5149:7:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6430,
                  "src": "5141:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6423,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5141:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5140:17:50"
            },
            "returnParameters": {
              "id": 6429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6428,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6430,
                  "src": "5180:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 6427,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6426,
                      "name": "ChainId",
                      "nameLocations": [
                        "5180:7:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "5180:7:50"
                    },
                    "referencedDeclaration": 4447,
                    "src": "5180:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5179:9:50"
            },
            "scope": 6479,
            "src": "5124:65:50",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fc1cd6cc",
            "id": 6440,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toRate",
            "nameLocation": "5204:6:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6432,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5219:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6440,
                  "src": "5211:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6431,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5211:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6434,
                  "mutability": "mutable",
                  "name": "exp",
                  "nameLocation": "5231:3:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6440,
                  "src": "5226:8:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 6433,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5226:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5210:25:50"
            },
            "returnParameters": {
              "id": 6439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6438,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6440,
                  "src": "5258:6:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 6437,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6436,
                      "name": "UFixed",
                      "nameLocations": [
                        "5258:6:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "5258:6:50"
                    },
                    "referencedDeclaration": 5099,
                    "src": "5258:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5257:8:50"
            },
            "scope": 6479,
            "src": "5195:71:50",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1a3480b5",
            "id": 6445,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rateDecimals",
            "nameLocation": "5280:12:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6441,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5292:2:50"
            },
            "returnParameters": {
              "id": 6444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6443,
                  "mutability": "mutable",
                  "name": "decimals",
                  "nameLocation": "5325:8:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6445,
                  "src": "5317:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6442,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5317:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5316:18:50"
            },
            "scope": 6479,
            "src": "5271:64:50",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "4793b4ab",
            "id": 6473,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getBundleInfo",
            "nameLocation": "5429:13:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6448,
                  "mutability": "mutable",
                  "name": "bundle",
                  "nameLocation": "5449:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5443:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                    "typeString": "NftId"
                  },
                  "typeName": {
                    "id": 6447,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6446,
                      "name": "NftId",
                      "nameLocations": [
                        "5443:5:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3353,
                      "src": "5443:5:50"
                    },
                    "referencedDeclaration": 3353,
                    "src": "5443:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_NftId_$3353",
                      "typeString": "NftId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5442:14:50"
            },
            "returnParameters": {
              "id": 6472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6451,
                  "mutability": "mutable",
                  "name": "instanceId",
                  "nameLocation": "5524:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5516:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5516:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6453,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "5556:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5548:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6452,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5548:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6455,
                  "mutability": "mutable",
                  "name": "bundleId",
                  "nameLocation": "5588:8:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5580:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6454,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5580:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6457,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "5618:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5610:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6456,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5610:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6459,
                  "mutability": "mutable",
                  "name": "displayName",
                  "nameLocation": "5651:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5637:25:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6458,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5637:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6462,
                  "mutability": "mutable",
                  "name": "bundleState",
                  "nameLocation": "5711:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5676:46:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BundleState_$4217",
                    "typeString": "enum IInstanceServiceFacade.BundleState"
                  },
                  "typeName": {
                    "id": 6461,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6460,
                      "name": "IInstanceServiceFacade.BundleState",
                      "nameLocations": [
                        "5676:22:50",
                        "5699:11:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4217,
                      "src": "5676:34:50"
                    },
                    "referencedDeclaration": 4217,
                    "src": "5676:34:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BundleState_$4217",
                      "typeString": "enum IInstanceServiceFacade.BundleState"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6465,
                  "mutability": "mutable",
                  "name": "expiryAt",
                  "nameLocation": "5746:8:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5736:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                    "typeString": "Timestamp"
                  },
                  "typeName": {
                    "id": 6464,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6463,
                      "name": "Timestamp",
                      "nameLocations": [
                        "5736:9:50"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4530,
                      "src": "5736:9:50"
                    },
                    "referencedDeclaration": 4530,
                    "src": "5736:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                      "typeString": "Timestamp"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6467,
                  "mutability": "mutable",
                  "name": "stakingSupported",
                  "nameLocation": "5773:16:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5768:21:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6466,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5768:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6469,
                  "mutability": "mutable",
                  "name": "unstakingSupported",
                  "nameLocation": "5808:18:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5803:23:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6468,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5803:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6471,
                  "mutability": "mutable",
                  "name": "stakeBalance",
                  "nameLocation": "5848:12:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 6473,
                  "src": "5840:20:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5840:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5502:368:50"
            },
            "scope": 6479,
            "src": "5420:451:50",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1b08829c",
            "id": 6478,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "implementsIStaking",
            "nameLocation": "5886:18:50",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5904:2:50"
            },
            "returnParameters": {
              "id": 6477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6476,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6478,
                  "src": "5929:4:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6475,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5929:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5928:6:50"
            },
            "scope": 6479,
            "src": "5877:58:50",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6480,
        "src": "590:5347:50",
        "usedErrors": []
      }
    ],
    "src": "39:5899:50"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "IStaking",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "IBaseTypes",
    "IChainNft",
    "IChainRegistry",
    "IComponent",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC165",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20Metadata",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC721",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC721Enumerable",
    "IInstanceServiceFacade",
    "IVersionable"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {
      "activate(address,address)": {
        "details": "IMPORTANT this function needs to be implemented by each new version any such activate implementation needs to call internal function call _activate()  any new version needs to inherit from previous version"
      }
    },
    "version": 1
  },
  "offset": [
    590,
    5937
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "d776847e4d0a8c5568a2eabcb70f2d6ad2556833",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.19;\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\nimport {ChainId, Timestamp} from \"../shared/IBaseTypes.sol\";\nimport {Version} from \"../shared/IVersionType.sol\";\nimport {IVersionable} from \"../shared/IVersionable.sol\";\n\nimport {UFixed} from \"../shared/UFixedMath.sol\";\n\nimport {NftId} from \"../registry/IChainNft.sol\";\nimport {IChainRegistry, ObjectType} from \"../registry/IChainRegistry.sol\";\nimport {IInstanceServiceFacade} from \"../registry/IInstanceServiceFacade.sol\";\n\n\ninterface IStaking is\n    IVersionable\n{\n\n    struct StakeInfo {\n        NftId id;\n        NftId target;\n        uint256 stakeBalance;\n        uint256 rewardBalance;\n        Timestamp createdAt;\n        Timestamp updatedAt;\n        Version version;\n        Timestamp lockedUntil; // introduced with V03\n    }\n\n    event LogStakingWalletChanged(address user, address oldWallet, address newWallet);\n    event LogStakingRewardReservesIncreased(address user, uint256 amount, uint256 newBalance);\n    event LogStakingRewardReservesDecreased(address user, uint256 amount, uint256 newBalance);\n\n    event LogTargetRewardRateSet(address user, NftId target, UFixed oldRewardRate, UFixed newRewardRate);\n    event LogStakingRewardRateSet(address user, UFixed oldRewardRate, UFixed newRewardRate);\n    event LogStakingStakingRateSet(address user, ChainId chain, address token, UFixed oldStakingRate, UFixed newStakingRate);\n\n    event LogStakingNewStakeCreated(NftId target, address user, NftId id);\n    event LogStakingStaked(NftId target, address user, NftId id, uint256 amount, uint256 newBalance);\n    event LogStakingUnstaked(NftId target, address user, NftId id, uint256 amount, uint256 newBalance);\n    event LogStakingRestaked(NftId oldTarget, NftId newTrget, address user, NftId stakeId, uint256 stakingAmount);\n\n    event LogStakingRewardsUpdated(NftId id, uint256 amount, uint256 newBalance);\n    event LogStakingRewardsClaimed(NftId id, uint256 amount, uint256 newBalance);\n\n    //--- state changing functions ------------------//\n\n    function setStakingWallet(address stakingWalletNew) external;\n\n    function refillRewardReserves(uint256 dipAmount) external;\n    function withdrawRewardReserves(uint256 dipAmount) external;\n\n    function setRewardRate(UFixed rewardRate) external;\n    function setStakingRate(ChainId chain, address token, UFixed stakingRate) external;    \n\n    function createStake(NftId target, uint256 dipAmount) external returns(NftId id);\n    function stake(NftId id, uint256 dipAmount) external;\n    function createStakeWithSignature(address owner, NftId target, uint256 dipAmount, bytes32 signatureId, bytes calldata signature) external returns(NftId stakeId);\n    function restake(NftId id, NftId newTarget) external;\n    function restakeWithSignature(address owner, NftId stakeId, NftId newTarget, bytes32 signatureId, bytes calldata signature) external;\n    function unstake(NftId id, uint256 dipAmount) external;  \n    function unstakeAndClaimRewards(NftId id) external;\n    function claimRewards(NftId id) external;\n\n    //--- view and pure functions ------------------//\n\n    function getRegistry() external view returns(IChainRegistry);\n    function getMessageHelperAddress() external view returns(address messageHelperAddress);\n\n    function maxRewardRate() external view returns(UFixed rate);\n    function rewardRate() external view returns(UFixed rate);\n    function rewardBalance() external view returns(uint256 dipAmount);\n    function rewardReserves() external view returns(uint256 dipAmount);\n    function getTargetRewardRate(NftId target) external view returns(UFixed rewardRate);\n\n    function stakeBalance() external view returns(uint256 dipAmount);\n    function stakingRate(ChainId chain, address token) external view returns(UFixed stakingRate);\n    function getStakingWallet() external view returns(address stakingWallet);\n    function getDip() external view returns(IERC20Metadata);\n\n    function getInfo(NftId id) external view returns(StakeInfo memory info);\n\n    function stakes(NftId target) external view returns(uint256 dipAmount);\n    function capitalSupport(NftId target) external view returns(uint256 capitalAmount);\n\n    function isStakingSupportedForType(ObjectType targetType) external view returns(bool isSupported);\n    function isStakingSupported(NftId target) external view returns(bool isSupported);\n    function isUnstakingSupported(NftId target) external view returns(bool isSupported);\n    function isUnstakingAvailable(NftId stakeId) external view returns(bool isAvailable);\n\n    function calculateRewardsIncrement(StakeInfo memory stakeInfo) external view returns(uint256 rewardsAmount);\n    function calculateRewards(uint256 amount, uint256 duration) external view returns(uint256 rewardAmount);\n\n    function calculateRequiredStaking(ChainId chain, address token, uint256 tokenAmount) external view returns(uint256 dipAmount);\n    function calculateCapitalSupport(ChainId chain, address token, uint256 dipAmount) external view returns(uint256 tokenAmount);\n\n    function toChain(uint256 chainId) external pure returns(ChainId);\n\n    function toRate(uint256 value, int8 exp) external pure returns(UFixed);\n    function rateDecimals() external pure returns(uint256 decimals);\n\n    //--- view and pure functions (target type specific) ------------------//\n\n    function getBundleInfo(NftId bundle)\n        external\n        view\n        returns(\n            bytes32 instanceId,\n            uint256 riskpoolId,\n            uint256 bundleId,\n            address token,\n            string memory displayName,\n            IInstanceServiceFacade.BundleState bundleState,\n            Timestamp expiryAt,\n            bool stakingSupported,\n            bool unstakingSupported,\n            uint256 stakeBalance\n        );\n\n    function implementsIStaking() external pure returns(bool);\n}\n",
  "sourceMap": "",
  "sourcePath": "contracts/staking/IStaking.sol",
  "type": "interface"
}