import { Prisma } from '@/generated/prisma/client';

/**
 * Tipo base para Categorías
 */
export interface Category {
  id: string;
  name: string;
  description: string | null;
  color: string | null;
  icon: string | null;
  expenseType: string | null;
  paymentMethod: string | null;
  createdAt: Date;
  updatedAt: Date;
  _count?: {
    documents: number;
  };
}

/**
 * Datos para crear una categoría
 */
export interface CreateCategoryInput {
  name: string;
  description?: string;
  color?: string;
  icon?: string;
  expenseType?: string;
  paymentMethod?: string;
}

/**
 * Datos para actualizar una categoría
 */
export interface UpdateCategoryInput {
  name?: string;
  description?: string;
  color?: string;
  icon?: string;
  expenseType?: string;
  paymentMethod?: string;
}

/**
 * Resultado de operación con categorías
 */
export interface CategoryOperationResult {
  success: boolean;
  error?: string;
  categoryId?: string;
}
