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": [] }
]