// Tipos compartidos para las respuestas del API

export interface User {
  id: string
  email: string
  name: string
  rol: "admin" | "editor" | "lector"
}

export interface AuthResponse {
  user: User
  token: string
}

export interface Tramite {
  id: string
  nombre: string
  forma_juridica: string
  organismo: string
  jurisdiccion: string
  jurisdiccion_detalle?: string
  ultima_interaccion: string
  estado: string
  fecha_realizacion?: string
  documentacion?: string
  requiere_certificaciones?: boolean
  certificaciones_detalle?: string
  paso_a_paso?: string
  link_guia?: string
  donde_se_realiza?: "virtual" | "presencial" | "mixto"
  comentarios_internos?: string
  costos?: Costo[]
  adjuntos?: Adjunto[]
  deleted_at?: string | null
  created_at?: string
  updated_at?: string
}

export interface Costo {
  id: string
  descripcion: string
  monto: number
  moneda: string
  observacion?: string
}

export interface Adjunto {
  id: string
  titulo: string
  tipo: "modelo" | "normativa" | "bibliografía" | "jurisprudencia" | "interno"
  url: string
  tamaño: number
  fecha: string
}

export interface Version {
  id: string
  version_nro: string
  tipo_cambio: "confirmación" | "edición menor" | "renovación mayor"
  fecha: string
  autor: string
  cambios?: string
}

export interface Comentario {
  id: string
  texto: string
  autor: string
  fecha: string
}

export interface Catalogo {
  id: string
  nombre: string
  tipo: string
  items: CatalogoItem[]
}

export interface CatalogoItem {
  id: string
  nombre: string
  [key: string]: any
}

export interface EstadisticasResumen {
  total_tramites: number
  por_estado: Record<string, number>
  por_forma_juridica: Record<string, number>
  ultima_actualizacion: string
}

export interface ApiError {
  message: string
  status: number
  details?: any
}

export interface PaginatedResponse<T> {
  data: T[]
  total: number
  page: number
  per_page: number
  total_pages: number
}
