// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IGatekeeper { error NotStaking(); error SendFailed(); error WrongChainId(); error BadSignature(); error NotGatekeeper(); error AlreadyExecuted(); error InvalidCalldata(); error InvalidPublicKey(); error NonExistentAmount(); error InsufficientValue(); error ExecutionReverted(); event Recalled(address indexed receiver, uint256 indexed amount); event Rotated(bytes32 indexed aggregatedPublicKey, uint8 indexed parity); event VoluntaryVerification(address indexed sender, uint256 indexed gasSpent); function staking() external view returns (address); function deployer() external view returns (address); function ghostedSupply() external view returns (uint256); function storageHistory() external view returns (address); function latestPublicKeyInfo() external view returns (bytes32, uint8, uint64); function getRotationInfoAt(uint256 session) external view returns (bytes32, uint8, uint64); function govern(uint256 session, uint256 payload, bytes calldata call) external returns (bytes calldata); function recall(uint256 session, uint256 amount, uint256 payload) external; function rotate(uint256 session, bytes32 publicKey, uint8 parity) external; function ghost(bytes32 receiver, uint256 amount) external; function initialize(address previousAddress) external; }