import { apiClient } from './client';

export interface DeclaracionLink {
  id: number;
  año: number;
  mes: number;
  tipo: 'normal' | 'complementaria';
  pdfFilename: string | null;
}

export interface ObligacionPeriodo {
  id: string;
  nombre: string;
  frecuencia: string | null;
  fechaLimite: string | null;
  categoria: string | null;
  activa: boolean;
  esRecomendada: boolean;
  completada: boolean;
  completadaAt: string | null;
  completadaPor: string | null;
  periodoCompletado: string | null;
  periodStatus: 'pendiente' | 'completada' | 'atrasada';
  periodoAplica: string;
  declaracion: DeclaracionLink | null;
  declaracionPresentada: boolean;
  pagoPresentado: boolean;
  requierePago: boolean;
}

export interface ObligacionesPorPeriodoResponse {
  data: ObligacionPeriodo[];
  periodo: string;
}

export function getObligacionesPorPeriodo(
  contribuyenteId: string,
  periodo: string,
  atrasados = false,
): Promise<ObligacionesPorPeriodoResponse> {
  const params = new URLSearchParams();
  params.set('periodo', periodo);
  params.set('atrasados', String(atrasados));
  return apiClient
    .get<ObligacionesPorPeriodoResponse>(`/contribuyentes/${contribuyenteId}/obligaciones/periodo?${params}`)
    .then((r) => r.data);
}
