// src/types/index.ts

export interface AgrupacionPolitica {
  id: string;
  idTelegrama: string;
  nombre: string;
  nombreCorto: string | null;
  color: string | null;
  ordenDiputados: number | null;
  ordenSenadores: number | null;
  ordenDiputadosNacionales: number | null;
  ordenSenadoresNacionales: number | null;
}

export interface UpdateAgrupacionData {
    nombreCorto: string | null;
    color: string | null;
}

export const TipoCamara = {
  Diputados: 0,
  Senadores: 1,
} as const;

export type TipoCamaraValue = typeof TipoCamara[keyof typeof TipoCamara];

export interface OcupanteBanca {
  id: number;
  bancadaId: number;
  nombreOcupante: string;
  fotoUrl: string | null;
  periodo: string | null;
}

export interface Bancada {
  id: number;
  eleccionId: number; // Clave para diferenciar provinciales de nacionales
  camara: TipoCamaraValue;
  numeroBanca: number;
  agrupacionPoliticaId: string | null;
  agrupacionPolitica: AgrupacionPolitica | null;
  ocupante: OcupanteBanca | null;
}

// Nueva interfaz para Bancas Previas
export interface BancaPrevia {
    id: number;
    eleccionId: number;
    camara: TipoCamaraValue;
    agrupacionPoliticaId: string;
    agrupacionPolitica?: AgrupacionPolitica; // Opcional para la UI
    cantidad: number;
}


export interface LogoAgrupacionCategoria {
    id: number;
    eleccionId: number; // Clave para diferenciar
    agrupacionPoliticaId: string;
    categoriaId: number | null;
    logoUrl: string | null;
    ambitoGeograficoId: number | null;
}

export interface MunicipioSimple { id: string; nombre: string; }

export interface ProvinciaSimple { id: string; nombre: string; }

export interface CandidatoOverride {
  id: number;
  eleccionId: number; // Clave para diferenciar
  agrupacionPoliticaId: string;
  categoriaId: number;
  ambitoGeograficoId: number | null;
  nombreCandidato: string | null;
}