[
  {
    "inputs": [
      {"internalType": "address", "name": "_etCollection", "type": "address"},
      {"internalType": "address", "name": "_sfCollection", "type": "address"},
      {"internalType": "address", "name": "_token", "type": "address"},
      {"internalType": "uint256", "name": "_rewardPeriod", "type": "uint256"}
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {"inputs": [], "name": "AmountExceedsStakedAmount", "type": "error"},
  {"inputs": [], "name": "BadArguments", "type": "error"},
  {"inputs": [], "name": "CallerHasNoAccess", "type": "error"},
  {"inputs": [], "name": "CantConfigureItemValues", "type": "error"},
  {"inputs": [], "name": "ItemAlreadyStaked", "type": "error"},
  {"inputs": [], "name": "ItemNotFound", "type": "error"},
  {"inputs": [], "name": "ManagedRightNotSpecified", "type": "error"},
  {"inputs": [], "name": "RebaseWindowClosed", "type": "error"},
  {
    "inputs": [{"internalType": "uint256", "name": "index", "type": "uint256"}],
    "name": "RescueFailed",
    "type": "error"
  },
  {"inputs": [], "name": "RewardPayoutFailed", "type": "error"},
  {"inputs": [], "name": "RightNotSpecified", "type": "error"},
  {"inputs": [], "name": "WithdrawBufferNotFinished", "type": "error"},
  {"inputs": [], "name": "rebaseWindowClosed", "type": "error"},
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "Claim",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "Fund",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "manager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "managedRight",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "managerRight",
        "type": "bytes32"
      }
    ],
    "name": "ManagementUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "updater",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "updatee",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "circumstance",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "expirationTime",
        "type": "uint256"
      }
    ],
    "name": "PermitUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "power",
        "type": "uint256"
      },
      {
        "components": [
          {"internalType": "uint256", "name": "itemId", "type": "uint256"},
          {"internalType": "enum ItemOrigin", "name": "origin", "type": "uint8"}
        ],
        "indexed": false,
        "internalType": "struct ISuperVerseStaker.InputItem[]",
        "name": "items",
        "type": "tuple[]"
      }
    ],
    "name": "Stake",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "power",
        "type": "uint256"
      },
      {
        "components": [
          {"internalType": "uint256", "name": "itemId", "type": "uint256"},
          {"internalType": "enum ItemOrigin", "name": "origin", "type": "uint8"}
        ],
        "indexed": false,
        "internalType": "struct ISuperVerseStaker.InputItem[]",
        "name": "items",
        "type": "tuple[]"
      }
    ],
    "name": "Withdraw",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ET_COLLECTION",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "REWARD_PERIOD",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SF_COLLECTION",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TOKEN",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "allProduced",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "_staker", "type": "address"}
    ],
    "name": "availableReward",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claim",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum ItemOrigin",
        "name": "_assetType",
        "type": "uint8"
      },
      {"internalType": "uint256[]", "name": "_groupIds", "type": "uint256[]"},
      {"internalType": "uint128[]", "name": "_values", "type": "uint128[]"}
    ],
    "name": "configureItemValues",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "_address", "type": "address"},
      {"internalType": "bytes32", "name": "_circumstance", "type": "bytes32"},
      {"internalType": "bytes32", "name": "_right", "type": "bytes32"}
    ],
    "name": "hasRightUntil",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "enum ItemOrigin", "name": "", "type": "uint8"},
      {"internalType": "uint256", "name": "", "type": "uint256"}
    ],
    "name": "itemValues",
    "outputs": [{"internalType": "uint128", "name": "", "type": "uint128"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nextRebaseTimestamp",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "uint256[]", "name": "", "type": "uint256[]"},
      {"internalType": "uint256[]", "name": "", "type": "uint256[]"},
      {"internalType": "bytes", "name": "", "type": "bytes"}
    ],
    "name": "onERC1155BatchReceived",
    "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "uint256", "name": "", "type": "uint256"},
      {"internalType": "uint256", "name": "", "type": "uint256"},
      {"internalType": "bytes", "name": "", "type": "bytes"}
    ],
    "name": "onERC1155Received",
    "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "address", "name": "", "type": "address"},
      {"internalType": "uint256", "name": "", "type": "uint256"},
      {"internalType": "bytes", "name": "", "type": "bytes"}
    ],
    "name": "onERC721Received",
    "outputs": [{"internalType": "bytes4", "name": "", "type": "bytes4"}],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "producedReward",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "producedTimestamp",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rebase",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rebaseCooldown",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "enum EscapeHatch.AssetType",
            "name": "assetType",
            "type": "uint8"
          },
          {"internalType": "address", "name": "asset", "type": "address"},
          {"internalType": "uint256", "name": "id", "type": "uint256"},
          {"internalType": "uint256", "name": "amount", "type": "uint256"},
          {"internalType": "address", "name": "to", "type": "address"}
        ],
        "internalType": "struct EscapeHatch.Asset[]",
        "name": "_assets",
        "type": "tuple[]"
      }
    ],
    "name": "rescueAssets",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "reward",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rpp",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "bytes32", "name": "_managedRight", "type": "bytes32"},
      {"internalType": "bytes32", "name": "_managerRight", "type": "bytes32"}
    ],
    "name": "setManagerRight",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "_address", "type": "address"},
      {"internalType": "bytes32", "name": "_circumstance", "type": "bytes32"},
      {"internalType": "bytes32", "name": "_right", "type": "bytes32"},
      {"internalType": "uint256", "name": "_expirationTime", "type": "uint256"}
    ],
    "name": "setPermit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "uint256", "name": "_rebaseCooldown", "type": "uint256"}
    ],
    "name": "setRebaseCooldown",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "uint256", "name": "_amount", "type": "uint256"},
      {"internalType": "address", "name": "_user", "type": "address"},
      {
        "components": [
          {"internalType": "uint256", "name": "itemId", "type": "uint256"},
          {"internalType": "enum ItemOrigin", "name": "origin", "type": "uint8"}
        ],
        "internalType": "struct ISuperVerseStaker.InputItem[]",
        "name": "_items",
        "type": "tuple[]"
      }
    ],
    "name": "stake",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "", "type": "address"}],
    "name": "stakeTimestamps",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "_staker", "type": "address"}
    ],
    "name": "stakerInfo",
    "outputs": [
      {"internalType": "uint256", "name": "stakerPower", "type": "uint256"},
      {"internalType": "uint256", "name": "stakedTokens", "type": "uint256"},
      {"internalType": "uint256", "name": "claimedReward", "type": "uint256"},
      {"internalType": "uint256", "name": "missedReward", "type": "uint256"},
      {
        "internalType": "uint256",
        "name": "availableToClaim",
        "type": "uint256"
      },
      {"internalType": "uint256[]", "name": "idsET", "type": "uint256[]"},
      {"internalType": "uint256[]", "name": "idsSFs", "type": "uint256[]"}
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalPower",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "address", "name": "newOwner", "type": "address"}
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {"internalType": "uint256", "name": "_amount", "type": "uint256"},
      {
        "components": [
          {"internalType": "uint256", "name": "itemId", "type": "uint256"},
          {"internalType": "enum ItemOrigin", "name": "origin", "type": "uint8"}
        ],
        "internalType": "struct ISuperVerseStaker.InputItem[]",
        "name": "_items",
        "type": "tuple[]"
      }
    ],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {"stateMutability": "payable", "type": "receive"}
]
