// ADM-009 — Tipos TS para feature fiscal/iva
// Alineados con TipoDeIvaDto / FiscalContracts.cs del backend

export interface TipoDeIva {
  id: number
  codigo: string
  descripcion: string
  porcentaje: number
  vigenciaDesde: string     // ISO date "yyyy-MM-dd"
  vigenciaHasta: string | null
  activo: boolean
  aplicaIVA: boolean
  predecesorId: number | null
}

export interface CreateTipoDeIvaRequest {
  codigo: string
  descripcion: string
  porcentaje: number
  vigenciaDesde: string
  aplicaIVA: boolean
}

// UpdateTipoDeIvaRequest — SIN porcentaje (inmutable, usar NuevaVersion para cambiar)
export interface UpdateTipoDeIvaRequest {
  codigo: string
  descripcion: string
  aplicaIVA: boolean
  activo: boolean
}

export interface NuevaVersionTipoDeIvaRequest {
  porcentaje: number
  vigenciaDesde: string   // "yyyy-MM-dd"
}

export interface NuevaVersionResponse {
  predecesorId: number
  nuevaId: number
  nuevoPorcentaje: number
  vigenciaDesde: string
  predecesorVigenciaHasta: string
}

export interface HistorialCadenaEntry {
  id: number
  codigo: string
  porcentaje: number
  vigenciaDesde: string
  vigenciaHasta: string | null
  activo: boolean
  predecesorId: number | null
  depth: number
}

export interface TipoDeIvaFilter {
  page?: number
  pageSize?: number
  codigo?: string
  activo?: boolean
}

export interface PagedResponse<T> {
  items: T[]
  page: number
  pageSize: number
  total: number
}

// ApiError — contrato unificado { error, message } de ADM-008/ADM-009
export interface ApiError {
  error: string
  message: string
}
