// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IGatekeeper {
    error NotStaking();
    error WrongSignature();
    error AlreadyExecuted();

    event Ghosted(bytes32 indexed receiver, uint256 indexed amount);
    event Materialized(address indexed receiver, uint256 indexed amount);
    event Rotated(uint256 indexed aggregatedPublicKey);

    function ghostedSupply() external view returns (uint256);
    function ghost(bytes32 receiver, uint256 amount) external;
    function materialize(address receiver, uint256 amount, uint256 rx, uint256 s) external;
    function rotate(uint256 aggregatedPublicKey, uint256 rx, uint256 s) external;
}
