[
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "facetAddress",
            "type": "address"
          },
          {
            "internalType": "enum IDiamondCut.FacetCutAction",
            "name": "action",
            "type": "uint8"
          },
          {
            "internalType": "bytes4[]",
            "name": "functionSelectors",
            "type": "bytes4[]"
          }
        ],
        "indexed": false,
        "internalType": "struct IDiamondCut.FacetCut[]",
        "name": "_diamondCut",
        "type": "tuple[]"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "_init",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_calldata",
        "type": "bytes"
      }
    ],
    "name": "DiamondCut",
    "type": "event"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "facetAddress",
            "type": "address"
          },
          {
            "internalType": "enum IDiamondCut.FacetCutAction",
            "name": "action",
            "type": "uint8"
          },
          {
            "internalType": "bytes4[]",
            "name": "functionSelectors",
            "type": "bytes4[]"
          }
        ],
        "internalType": "struct IDiamondCut.FacetCut[]",
        "name": "_diamondCut",
        "type": "tuple[]"
      },
      {
        "internalType": "address",
        "name": "_init",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_calldata",
        "type": "bytes"
      }
    ],
    "name": "diamondCut",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "_functionSelector",
        "type": "bytes4"
      }
    ],
    "name": "facetAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "facetAddress_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "facetAddresses",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "facetAddresses_",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_facet",
        "type": "address"
      }
    ],
    "name": "facetFunctionSelectors",
    "outputs": [
      {
        "internalType": "bytes4[]",
        "name": "facetFunctionSelectors_",
        "type": "bytes4[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "facets",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "facetAddress",
            "type": "address"
          },
          {
            "internalType": "bytes4[]",
            "name": "functionSelectors",
            "type": "bytes4[]"
          }
        ],
        "internalType": "struct IDiamondLoupe.Facet[]",
        "name": "facets_",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "_interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "owner_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      }
    ],
    "name": "Canceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      }
    ],
    "name": "Deactivated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      }
    ],
    "name": "Expired",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "heroId",
        "type": "uint256"
      }
    ],
    "name": "HeroAssigned",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "heroId",
        "type": "uint256"
      }
    ],
    "name": "HeroRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "enum PowerUpHook",
        "name": "hook",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "hookAddress",
        "type": "address"
      }
    ],
    "name": "HookRegistered",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "enum PowerUpHook",
        "name": "hook",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "hookAddress",
        "type": "address"
      }
    ],
    "name": "HookUnregistered",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "emergencyWithdrawHappened",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "tier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "openHeroSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancellationHeldSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heldSlotExpiration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokenHoldExpiration",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "indexed": false,
        "internalType": "struct PowerUpUserData",
        "name": "userData",
        "type": "tuple"
      }
    ],
    "name": "IncreasedTier",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "powerUpType",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tiers",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heroesPerTier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockTimeRequiredToAcquire",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancelDelay",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "govTokenPerTier",
            "type": "uint256[]"
          }
        ],
        "indexed": false,
        "internalType": "struct PowerUp",
        "name": "powerup",
        "type": "tuple"
      }
    ],
    "name": "PowerUpAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "powerUpType",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tiers",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heroesPerTier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockTimeRequiredToAcquire",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancelDelay",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "govTokenPerTier",
            "type": "uint256[]"
          }
        ],
        "indexed": false,
        "internalType": "struct PowerUp",
        "name": "powerup",
        "type": "tuple"
      }
    ],
    "name": "PowerUpRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "powerUpType",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tiers",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heroesPerTier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockTimeRequiredToAcquire",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancelDelay",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "govTokenPerTier",
            "type": "uint256[]"
          }
        ],
        "indexed": false,
        "internalType": "struct PowerUp",
        "name": "powerup",
        "type": "tuple"
      }
    ],
    "name": "PowerUpUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "emergencyWithdrawHappened",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "tier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "openHeroSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancellationHeldSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heldSlotExpiration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokenHoldExpiration",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "indexed": false,
        "internalType": "struct PowerUpUserData",
        "name": "userData",
        "type": "tuple"
      }
    ],
    "name": "Subscribed",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "CANCELER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MODERATOR_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "activePowerUps",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "assignHero",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "_powerUpIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_heroIds",
        "type": "uint256[]"
      }
    ],
    "name": "assignHeroes",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum PowerUpHook",
        "name": "",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "hooks",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_tier",
        "type": "uint256"
      }
    ],
    "name": "increaseTier",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "powerUpHeroData",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "heroId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "assignedSlot",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "powerUpHeroesAssigned",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "powerUps",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "powerUpType",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "tiers",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "heroesPerTier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "lockTimeRequiredToAcquire",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cancelDelay",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_tier",
        "type": "uint256"
      }
    ],
    "name": "subscribe",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "userPowerUpData",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isActivated",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "emergencyWithdrawHappened",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "openHeroSlots",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "cancellationHeldSlots",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "heldSlotExpiration",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "govTokenHoldExpiration",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "verifyAllPowerUps",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "verifyPowerUp",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "verifyPowerUpForUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "_powerUpIds",
        "type": "uint256[]"
      }
    ],
    "name": "verifyPowerUpsForUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_id",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_type",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_tiers",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroesPerTier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_lockTimeRequiredToAcquire",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_cancelHoldDelay",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "_govTokenPerTier",
        "type": "uint256[]"
      }
    ],
    "name": "addPowerUp",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "deletePowerUpUserData",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum PowerUpHook",
        "name": "_hook",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_address",
        "type": "address"
      }
    ],
    "name": "registerHook",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum PowerUpHook[]",
        "name": "_hooks",
        "type": "uint8[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_powerUpIds",
        "type": "uint256[]"
      },
      {
        "internalType": "address[]",
        "name": "_addresses",
        "type": "address[]"
      }
    ],
    "name": "registerHooks",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_id",
        "type": "uint256"
      }
    ],
    "name": "removePowerUp",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "repairType3HeroAllowance",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_questCoreAddress",
        "type": "address"
      }
    ],
    "name": "setQuestCoreAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum PowerUpHook",
        "name": "_hook",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_address",
        "type": "address"
      }
    ],
    "name": "unregisterHook",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_id",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_type",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_tiers",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroesPerTier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_lockTimeRequiredToAcquire",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_cancelHoldDelay",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "_govTokenPerTier",
        "type": "uint256[]"
      }
    ],
    "name": "updatePowerUp",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "adminRemoveHero",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "cancel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      }
    ],
    "name": "deactivatePowerUps",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      }
    ],
    "name": "emergencyCancelAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "_heroIds",
        "type": "uint256[]"
      }
    ],
    "name": "multiRemoveHeroFromAllType3ForSender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "_heroIds",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "_recipient",
        "type": "address"
      }
    ],
    "name": "multiSendAndRemove",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "removeHero",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "removeHeroFromAllType3",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "removeHeroFromAllType3ForSender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "_powerUpIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_heroIds",
        "type": "uint256[]"
      }
    ],
    "name": "removeHeroes",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getActivePowerUps",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "powerUpType",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tiers",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heroesPerTier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockTimeRequiredToAcquire",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancelDelay",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "govTokenPerTier",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct PowerUp[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "getAssignedHeroIds",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "getAssignedHeroes",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "summonedTime",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "nextSummonTime",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "summonerId",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "assistantId",
                "type": "uint256"
              },
              {
                "internalType": "uint32",
                "name": "summons",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "maxSummons",
                "type": "uint32"
              }
            ],
            "internalType": "struct SummoningInfo",
            "name": "summoningInfo",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "statGenes",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "visualGenes",
                "type": "uint256"
              },
              {
                "internalType": "enum Rarity",
                "name": "rarity",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "shiny",
                "type": "bool"
              },
              {
                "internalType": "uint16",
                "name": "generation",
                "type": "uint16"
              },
              {
                "internalType": "uint32",
                "name": "firstName",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "lastName",
                "type": "uint32"
              },
              {
                "internalType": "uint8",
                "name": "shinyStyle",
                "type": "uint8"
              },
              {
                "internalType": "uint8",
                "name": "class",
                "type": "uint8"
              },
              {
                "internalType": "uint8",
                "name": "subClass",
                "type": "uint8"
              }
            ],
            "internalType": "struct HeroInfo",
            "name": "info",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "staminaFullAt",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "hpFullAt",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "mpFullAt",
                "type": "uint256"
              },
              {
                "internalType": "uint16",
                "name": "level",
                "type": "uint16"
              },
              {
                "internalType": "uint64",
                "name": "xp",
                "type": "uint64"
              },
              {
                "internalType": "address",
                "name": "currentQuest",
                "type": "address"
              },
              {
                "internalType": "uint8",
                "name": "sp",
                "type": "uint8"
              },
              {
                "internalType": "enum HeroStatus",
                "name": "status",
                "type": "uint8"
              }
            ],
            "internalType": "struct HeroState",
            "name": "state",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "strength",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "intelligence",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "wisdom",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "luck",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "agility",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "vitality",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "endurance",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "dexterity",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hp",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mp",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "stamina",
                "type": "uint16"
              }
            ],
            "internalType": "struct HeroStats",
            "name": "stats",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "strength",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "intelligence",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "wisdom",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "luck",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "agility",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "vitality",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "endurance",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "dexterity",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpSm",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpRg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpLg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpSm",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpRg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpLg",
                "type": "uint16"
              }
            ],
            "internalType": "struct HeroStatGrowth",
            "name": "primaryStatGrowth",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "strength",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "intelligence",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "wisdom",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "luck",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "agility",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "vitality",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "endurance",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "dexterity",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpSm",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpRg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "hpLg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpSm",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpRg",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "mpLg",
                "type": "uint16"
              }
            ],
            "internalType": "struct HeroStatGrowth",
            "name": "secondaryStatGrowth",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "mining",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "gardening",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "foraging",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "fishing",
                "type": "uint16"
              }
            ],
            "internalType": "struct HeroProfessions",
            "name": "professions",
            "type": "tuple"
          }
        ],
        "internalType": "struct Hero[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "getPowerUpHeroData",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "powerUpId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heroId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "assignedSlot",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "internalType": "struct PowerUpHeroData",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "_powerUpIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_heroIds",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      }
    ],
    "name": "getPowerUpStatusesAndTiers",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "powerUpId",
            "type": "uint64"
          },
          {
            "internalType": "uint8",
            "name": "tier",
            "type": "uint8"
          },
          {
            "internalType": "bool",
            "name": "isActive",
            "type": "bool"
          },
          {
            "internalType": "bool[6]",
            "name": "heroStates",
            "type": "bool[6]"
          }
        ],
        "internalType": "struct PowerUpStatus[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_address",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "getUserPowerUpData",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "emergencyWithdrawHappened",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "tier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "openHeroSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancellationHeldSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heldSlotExpiration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokenHoldExpiration",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "internalType": "struct PowerUpUserData",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_address",
        "type": "address"
      }
    ],
    "name": "getUserPowerUpDataForActivePowerUps",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "emergencyWithdrawHappened",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "tier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "openHeroSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cancellationHeldSlots",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "heldSlotExpiration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokenHoldExpiration",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "internalType": "struct PowerUpUserData[]",
        "name": "",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "powerUpId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "govTokenHoldExpiration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "usedBalance",
            "type": "uint256"
          }
        ],
        "internalType": "struct PowerUpLock[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_heroId",
        "type": "uint256"
      }
    ],
    "name": "isHeroPowerUpActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_powerUpId",
        "type": "uint256"
      }
    ],
    "name": "isUserPowerUpActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]
