import { Repository } from 'typeorm'; import { AuditLog, AuditAction } from '../entities/audit-log.entity'; import { ActivityLog, ActivityType } from '../entities/activity-log.entity'; import { QueryAuditLogsDto } from '../dto/query-audit.dto'; import { QueryActivityLogsDto } from '../dto/query-activity.dto'; import { CreateActivityLogDto } from '../dto/create-activity.dto'; export interface CreateAuditLogParams { tenant_id: string; user_id?: string; action: AuditAction; entity_type: string; entity_id?: string; old_values?: Record; new_values?: Record; ip_address?: string; user_agent?: string; endpoint?: string; http_method?: string; response_status?: number; duration_ms?: number; description?: string; metadata?: Record; } export interface PaginatedResult { data: T[]; total: number; page: number; limit: number; totalPages: number; } export declare class AuditService { private readonly auditLogRepository; private readonly activityLogRepository; constructor(auditLogRepository: Repository, activityLogRepository: Repository); createAuditLog(params: CreateAuditLogParams): Promise; queryAuditLogs(tenantId: string, query: QueryAuditLogsDto): Promise>; getAuditLogById(tenantId: string, id: string): Promise; getEntityAuditHistory(tenantId: string, entityType: string, entityId: string): Promise; createActivityLog(tenantId: string, userId: string, dto: CreateActivityLogDto, context?: { ip_address?: string; user_agent?: string; session_id?: string; }): Promise; queryActivityLogs(tenantId: string, query: QueryActivityLogsDto): Promise>; getUserActivitySummary(tenantId: string, userId: string, days?: number): Promise<{ activity_type: ActivityType; count: number; }[]>; getAuditStats(tenantId: string, days?: number): Promise<{ total_actions: number; actions_by_type: { action: AuditAction; count: number; }[]; top_users: { user_id: string; count: number; }[]; }>; private detectChangedFields; }