using System.Collections.Generic;
using Valg.EVA.Skanning.ServicesModel.ElectionConfig.Model;

namespace Valg.EVA.Skanning.ServicesModel.ElectionConfig.DataProvider
{
    public interface IElectionConfigDataProvider
    {
        ElectionEvent GetElectionEvent(string electionEventId);

        Election GetElection(string electionEventId, string electionId);

        Contest GetContest(string electionEventId, string contestId);

        VotingCategory GetVotingCategory(string electionEventId, string pollingDistrictId, string votingCategoryType);

        ReportingUnit GetReportingUnit(string electionEventId, string reportingUnitId);

        List<Contest> GetContestsInArea(string electionEventId, string contextAreaId);

        List<Contest> GetContestsInElection(string electionEventId);

        Election GetElectionByContestId(string electionEventId, string contestId);

        List<VotingCategory> GetVotingCategoriesInContest(string electionEventId, string contestId, string areaContextFilter = null);
        
        CountMetricsForContest GetCountMetricsForContest(string electionEventId, string contestId);

        int? GetMaxWriteInForContest(string electionEventId, string contestId);

        List<ElectionEvent> GetAllElectionEvents();

    }
}
