Skip to content

Honey Queen

What is it?

A master registry that maintains the whitelisting of protocols, their associated gauges, and their actions.

Interface

interface IHoneyQueen {
    /// @notice Returns the address of the treasury
    /// @return The treasury address
    function treasury() external view returns (address);
 
    /// @notice Returns the address responsible for executing automated calls
    /// @return The automaton address
    function automaton() external view returns (address);
 
    /// @notice Returns the address of the validator
    /// @return The validator address
    function validator() external view returns (address);
 
    /// @notice Returns the current fee in basis points (bps)
    /// @return The fee in bps
    function fees() external view returns (uint256);
 
    /// @notice Checks if a target contract is allowed
    /// @param _target The address of the target contract to check
    /// @return allowed True if the target contract is allowed, false otherwise
    function isTargetContractAllowed(address _target) external view returns (bool allowed);
 
    /// @notice Checks if a selector is allowed for a specific target and action
    /// @param _selector The function selector to check
    /// @param _action The action associated with the selector
    /// @param _target The address of the target contract
    /// @return True if the selector is allowed for the given target and action, false otherwise
    function isSelectorAllowedForTarget(
        bytes4 _selector,
        string calldata _action,
        address _target
    ) external view returns (bool);
}

ABI

Show
[
  {
    "type": "constructor",
    "inputs": [
      { "name": "_treasury", "type": "address", "internalType": "address" },
      { "name": "_BGT", "type": "address", "internalType": "address" },
      { "name": "_beekeeper", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "BGT",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "address", "internalType": "contract IBGT" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "automaton",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "beekeeper",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "address", "internalType": "contract Beekeeper" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "cancelOwnershipHandover",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "completeOwnershipHandover",
    "inputs": [
      { "name": "pendingOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "computeFees",
    "inputs": [
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "fees",
    "inputs": [],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isMigrationEnabled",
    "inputs": [
      {
        "name": "fromCodeHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      { "name": "toCodeHash", "type": "bytes32", "internalType": "bytes32" }
    ],
    "outputs": [
      { "name": "isEnabled", "type": "bool", "internalType": "bool" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isSelectorAllowedForProtocol",
    "inputs": [
      { "name": "selector", "type": "bytes4", "internalType": "bytes4" },
      { "name": "action", "type": "string", "internalType": "string" },
      { "name": "protocol", "type": "string", "internalType": "string" }
    ],
    "outputs": [{ "name": "allowed", "type": "bool", "internalType": "bool" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isSelectorAllowedForTarget",
    "inputs": [
      { "name": "_selector", "type": "bytes4", "internalType": "bytes4" },
      { "name": "_action", "type": "string", "internalType": "string" },
      { "name": "_target", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isTargetContractAllowed",
    "inputs": [
      { "name": "_target", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "allowed", "type": "bool", "internalType": "bool" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isTokenBlocked",
    "inputs": [
      { "name": "token", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "blocked", "type": "bool", "internalType": "bool" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      { "name": "result", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ownershipHandoverExpiresAt",
    "inputs": [
      { "name": "pendingOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [
      { "name": "result", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "protocolOfTarget",
    "inputs": [
      {
        "name": "targetContract",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      { "name": "protocol", "type": "string", "internalType": "string" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "renounceOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "requestOwnershipHandover",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setAutomaton",
    "inputs": [
      { "name": "_automaton", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setFees",
    "inputs": [
      { "name": "_fees", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setIsSelectorAllowedForProtocol",
    "inputs": [
      { "name": "_selector", "type": "bytes4", "internalType": "bytes4" },
      { "name": "_action", "type": "string", "internalType": "string" },
      { "name": "_protocol", "type": "string", "internalType": "string" },
      { "name": "_isAllowed", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setIsTokenBlocked",
    "inputs": [
      { "name": "_token", "type": "address", "internalType": "address" },
      { "name": "_isBlocked", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setMigrationFlag",
    "inputs": [
      {
        "name": "_isMigrationEnabled",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "_fromCodeHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      { "name": "_toCodeHash", "type": "bytes32", "internalType": "bytes32" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setProtocolOfTarget",
    "inputs": [
      {
        "name": "_targetContract",
        "type": "address",
        "internalType": "address"
      },
      { "name": "_protocol", "type": "string", "internalType": "string" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setTreasury",
    "inputs": [
      { "name": "_treasury", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setValidator",
    "inputs": [
      { "name": "_validator", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      { "name": "newOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "treasury",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "validator",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "AutomatonSet",
    "inputs": [
      {
        "name": "oldAutomaton",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "newAutomaton",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "FeesSet",
    "inputs": [
      {
        "name": "oldFees",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "newFees",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MigrationFlagSet",
    "inputs": [
      {
        "name": "fromCodeHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "toCodeHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "isEnabled",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipHandoverCanceled",
    "inputs": [
      {
        "name": "pendingOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipHandoverRequested",
    "inputs": [
      {
        "name": "pendingOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "oldOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "newOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ProtocolOfTargetSet",
    "inputs": [
      {
        "name": "targetContract",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "protocol",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "SelectorAllowedForProtocol",
    "inputs": [
      {
        "name": "selector",
        "type": "bytes4",
        "indexed": false,
        "internalType": "bytes4"
      },
      {
        "name": "action",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "protocol",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "allowed",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TokenBlocked",
    "inputs": [
      {
        "name": "token",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "blocked",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TreasurySet",
    "inputs": [
      {
        "name": "oldTreasury",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "newTreasury",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ValidatorSet",
    "inputs": [
      {
        "name": "oldValidator",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "newValidator",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  { "type": "error", "name": "AlreadyInitialized", "inputs": [] },
  { "type": "error", "name": "NewOwnerIsZeroAddress", "inputs": [] },
  { "type": "error", "name": "NoHandoverRequest", "inputs": [] },
  { "type": "error", "name": "Unauthorized", "inputs": [] }
]