// UDT-008 — shared types for users feature

export interface UserListItem {
  id: number
  username: string
  nombre: string
  apellido: string
  email: string | null
  rol: string
  activo: boolean
  ultimoLogin: string | null // ISO datetime or null
}

export interface UserDetail {
  id: number
  username: string
  nombre: string
  apellido: string
  email: string | null
  rol: string
  activo: boolean
  mustChangePassword: boolean
  ultimoLogin: string | null
  fechaModificacion: string | null
}

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

export interface UsuariosQuery {
  page?: number
  pageSize?: number
  rol?: string
  activo?: boolean
  search?: string
}

export interface UpdateUserPayload {
  nombre: string
  apellido: string
  email: string | null
  rol: string
  activo: boolean
}

// UDT-009 — Permisos overrides per-user types

export interface UsuarioPermisos {
  rolPermisos: string[]
  overrides: {
    grant: string[]
    deny: string[]
  }
  effective: string[]
}

export interface UpdatePermisosOverridesPayload {
  grant: string[]
  deny: string[]
}

export type PermisoOverrideState = 'heredado' | 'concedido' | 'denegado'
