/** * Base Interfaces * Interfaces compartidas para todo el proyecto */ import { Request } from 'express'; /** * Entidad base con campos de auditoria */ export interface BaseEntity { id: string; createdAt: Date; updatedAt: Date; createdBy?: string; } /** * Entidad con tenant */ export interface TenantEntity extends BaseEntity { tenantId: string; } /** * Request con contexto de tenant y usuario */ export interface AuthenticatedRequest extends Request { user?: { sub: string; id: string; email: string; tenantId: string; roles: string[]; type: 'access' | 'refresh'; }; tenantId?: string; } /** * Respuesta paginada */ export interface PaginatedResponse { data: T[]; meta: { total: number; page: number; limit: number; totalPages: number; hasNext: boolean; hasPrev: boolean; }; } /** * Query params para paginacion */ export interface PaginationQuery { page?: number; limit?: number; sortBy?: string; sortOrder?: 'ASC' | 'DESC'; search?: string; } /** * Respuesta API estandar */ export interface ApiResponse { success: boolean; data?: T; message?: string; errors?: Array<{ field?: string; message: string; code?: string; }>; meta?: Record; } //# sourceMappingURL=base.interface.d.ts.map