namespace FlappyBird.Core
{
    /// <summary>
    /// Contract for the central game-state service.
    /// Matches the interface defined in AI_RULES.md.
    /// </summary>
    public interface IGameStateManager
    {
        /// <summary>The currently active game state.</summary>
        GameState CurrentState { get; }
        /// <summary>
        /// Transitions to <paramref name="newState"/>.
        /// Fires <see cref="OnStateChanged"/> after the transition completes.
        /// </summary>
        void ChangeState(GameState newState);
        /// <summary>
        /// Fired every time the game state changes.
        /// Passes the new <see cref="GameState"/> value.
        /// </summary>
        event System.Action<GameState> OnStateChanged;
    }
}