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

interface IGhostWarmup {
    struct Claim {
        uint256 deposit;
        uint256 payout;
        uint48 expiry;
    }

    error NotStakingContract();
    error ExternalDepositsLocked();
    error LockedInWarmupPeriod();

    function addToWarmup(uint256 payout, address who, uint48 expiry) external;
    function claim(address who, uint256 epochNumber) external returns (uint256);
    function claimByAmount(
        address who,
        uint256 amount,
        uint256 epochNumber
    ) external returns (uint256);
    function breakout(address who, uint256 amount) external returns (uint256);
    function forfeit(address who) external returns (uint256);
    function ghstInWarmup() external view returns (uint256);
    function warmupInfo(address who) external view returns (uint256, uint256, uint48);
}
