using System;
using System.Collections.Generic;
using Minesweeper.Core;
using Minesweeper.Presentation.Factories;

namespace Minesweeper.Presentation.Views
{
    public interface IBoardView : IView
    {
        event Action CellPressStarted;
        event Action CellPressEnded;
        event Action PauseRequested;
        event Action<int, int> CellOpenRequested;
        event Action<int, int> CellFlagRequested;

        void Show();
        void Hide();
        void Rebuild(IReadOnlyList<BoardCellData> cells, int width, int height, ICellViewFactory cellViewFactory, bool revealUnflaggedMines);
        void Refresh(IReadOnlyList<BoardCellData> cells, bool revealUnflaggedMines);
        void RefreshCells(IReadOnlyList<BoardCellData> cells, bool revealUnflaggedMines);
        void SetInputEnabled(bool enabled);
    }
}
