using Elecciones.Core.DTOs;
using System.Collections.Generic;
using System.Threading.Tasks;
using static Elecciones.Core.DTOs.BancaDto;

namespace Elecciones.Infrastructure.Services;

public interface IElectoralApiService
{
    Task<TokenResponse?> GetAuthTokenAsync();
    // Métodos para catálogos
    Task<CatalogoDto?> GetCatalogoAmbitosAsync(string authToken, int categoriaId);
    Task<List<AgrupacionDto>?> GetAgrupacionesAsync(string authToken, string distritoId, int categoriaId);
    Task<ResultadosDto?> GetResultadosAsync(string authToken, string distritoId, string? seccionId, string? municipioId, int categoriaId);
    Task<RepartoBancasDto?> GetBancasAsync(string authToken, string distritoId, string? seccionProvincialId, int categoriaId);
    Task<List<string>?> GetTelegramasTotalizadosAsync(string authToken, string distritoId, string seccionId, int? categoriaId = null);
    Task<TelegramaFileDto?> GetTelegramaFileAsync(string authToken, string mesaId);
    Task<EstadoRecuentoGeneralDto?> GetEstadoRecuentoGeneralAsync(string authToken, string distritoId, int categoriaId);
    Task<List<CategoriaDto>?> GetCategoriasAsync(string authToken);
}