using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using ReactiveUI;
using Valg.EVA.Skanning.JobManagement.Startup.Data.Transfer;

namespace Valg.EVA.Skanning.JobManagement.Startup.Data
{
    public interface IDataModel : INotifyPropertyChanged
    {
        List<ServicesModel.ElectionConfig.Model.VotingCategory> GetValidVotingCategories();

        ObservableCollection<CountingModel> Countings { get; }
        ObservableCollection<TransferModel> Transfers { get; }
        ObservableCollection<PollingDistrictModel> PollingDistricts { get; } 

        IReactiveDerivedList<CountingCompleteModel> CompletedCountings { get; }
        bool IsLoading { get; }

        void LoadData();
        void LoadTransfers();
        IReactiveDerivedList<BoxCountingDetailsModel> GetBoxCountings(int countingId);
    }
}
