Honey Locker
What is it?
This allows teams and users to lock their liquidity, forever or not, without having to renounce the benefits they yield through staking them into various protocols. A new locker is deployed for each user. Lockers accept multiple LP deposits, or users can choose to create multiple lockers to segregate deposits.
Interface
interface IHoneyLocker {
function honeyQueen() external view returns (address);
function adapterOfProtocol(string calldata protocol) external view returns (address);
function totalLPStaked(address LPToken) external view returns (uint256);
function vaultLPStaked(address vault) external view returns (uint256);
function expirations(address LPToken) external view returns (uint256);
function unlocked() external view returns (bool);
function referrer() external view returns (address);
function treasury() external view returns (address);
function operator() external view returns (address);
/*--------------------------------------------------------------
INITIALIZER
---------------------------------------------------------------*/
function initialize(
address _honeyQueen,
address _owner,
address _referrer,
bool _unlocked
) external;
/*--------------------------------------------------------------
OWNER FUNCTIONS
---------------------------------------------------------------*/
function setOperator(address _operator) external;
function setTreasury(address _treasury) external;
function registerAdapter(string calldata protocol) external;
/*--------------------------------------------------------------
VAULT MANAGEMENT
---------------------------------------------------------------*/
function stake(address vault, uint256 amount) external;
function unstake(address vault, uint256 amount) external;
function claim(address vault) external returns (address[] memory rewardTokens, uint256[] memory amounts);
function wildcard(address vault, uint8 func, bytes calldata args) external;
/*--------------------------------------------------------------
BGT MANAGEMENT
---------------------------------------------------------------*/
function claimBGTRewards() external;
function burnBGTForBERA(uint256 _amount) external;
function queueBoost(uint128 amount, bytes calldata validator) external;
function activateBoost(bytes calldata validator) external;
function cancelQueuedBoost(uint128 amount, bytes calldata validator) external;
function queueDropBoost(uint128 amount, bytes calldata validator) external;
function cancelDropBoost(uint128 amount, bytes calldata validator) external;
function dropBoost(uint128 amount, bytes calldata validator) external;
function delegate(address delegatee) external;
/*--------------------------------------------------------------
LP MANAGEMENT
---------------------------------------------------------------*/
function depositAndLock(
address _LPToken,
uint256 _amountOrId,
uint256 _expiration
) external;
function withdrawLPToken(address _LPToken, uint256 _amountOrId) external;
function claimFeesOfLP(address _LPToken, uint256 _tokenId) external;
/*--------------------------------------------------------------
TOKENS WITHDRAWALS
---------------------------------------------------------------*/
function withdrawBERA(uint256 _amount) external;
function withdrawERC20(address _token, uint256 _amount) external;
function withdrawERC721(address _token, uint256 _id) external;
function withdrawERC1155(
address _token,
uint256 _id,
uint256 _amount,
bytes calldata _data
) external;
/*--------------------------------------------------------------
VIEW FUNCTIONS
---------------------------------------------------------------*/
/// @notice Returns the recipient address (treasury if set, otherwise owner).
function recipient() external view returns (address);
}
ABI
Show
[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"activateBoost","inputs":[{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adapterOfProtocol","inputs":[{"name":"protocol","type":"string","internalType":"string"}],"outputs":[{"name":"adapter","type":"address","internalType":"contract BaseVaultAdapter"}],"stateMutability":"view"},{"type":"function","name":"burnBGTForBERA","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelDropBoost","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelQueuedBoost","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claim","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBGTRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimFeesOfLP","inputs":[{"name":"_LPToken","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegate","inputs":[{"name":"delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAndLock","inputs":[{"name":"_LPToken","type":"address","internalType":"address"},{"name":"_amountOrId","type":"uint256","internalType":"uint256"},{"name":"_expiration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dropBoost","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expirations","inputs":[{"name":"LPToken","type":"address","internalType":"address"}],"outputs":[{"name":"expiration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"honeyQueen","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HoneyQueen"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_honeyQueen","type":"address","internalType":"address"},{"name":"_owner","type":"address","internalType":"address"},{"name":"_referrer","type":"address","internalType":"address"},{"name":"_unlocked","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queueBoost","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"queueDropBoost","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"validator","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"referrer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"protocol","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"_treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalLPStaked","inputs":[{"name":"LPToken","type":"address","internalType":"address"}],"outputs":[{"name":"staked","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"unlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultLPStaked","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[{"name":"staked","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"wildcard","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"func","type":"uint8","internalType":"uint8"},{"name":"args","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawBERA","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawERC1155","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawERC20","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawERC721","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawLPToken","inputs":[{"name":"_LPToken","type":"address","internalType":"address"},{"name":"_amountOrId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HoneyLocker__AdapterRegistered","inputs":[{"name":"protocol","type":"string","indexed":true,"internalType":"string"},{"name":"adapter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Claimed","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"rewardToken","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__ClaimedFeesOfLP","inputs":[{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Deposited","inputs":[{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"amountOrId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__LockedUntil","inputs":[{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"expiration","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__OperatorSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Staked","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"amountOrId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__TreasurySet","inputs":[{"name":"treasury","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Unstaked","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"amountOrId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Wildcard","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"func","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"args","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"HoneyLocker__Withdrawn","inputs":[{"name":"LPToken","type":"address","indexed":true,"internalType":"address"},{"name":"amountOrId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"HoneyLocker__AdapterAlreadyRegistered","inputs":[]},{"type":"error","name":"HoneyLocker__AdapterNotFound","inputs":[]},{"type":"error","name":"HoneyLocker__CannotBeLPToken","inputs":[]},{"type":"error","name":"HoneyLocker__ExpirationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"HoneyLocker__ExpirationNotMatching","inputs":[]},{"type":"error","name":"HoneyLocker__HasToBeLPToken","inputs":[]},{"type":"error","name":"HoneyLocker__NotAuthorized","inputs":[]},{"type":"error","name":"HoneyLocker__NotAuthorizedUpgrade","inputs":[]},{"type":"error","name":"HoneyLocker__NotExpiredYet","inputs":[]},{"type":"error","name":"HoneyLocker__TokenBlocked","inputs":[]},{"type":"error","name":"HoneyLocker__WithdrawalFailed","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}]