import type { AuditEvent } from './audit.types'; export interface AuditEventOptions { action: string; resource: { type: string; id: string; name?: string; }; result?: 'success' | 'failure' | 'error'; changes?: { before?: Record; after?: Record; }; metadata?: Record; tags?: string[]; } export interface AuditEventQuery { filters?: EventFilters; sort?: EventSort; pagination?: EventPagination; projection?: string[]; } export interface EventFilters { startDate?: Date; endDate?: Date; actors?: string[]; actorTypes?: string[]; actions?: string[]; resources?: string[]; resourceTypes?: string[]; results?: string[]; tags?: string[]; metadata?: Record; search?: string; } export interface EventSort { field: string; order: 'asc' | 'desc'; } export interface EventPagination { page?: number; limit?: number; cursor?: string; } export interface AuditEventResult { events: AuditEvent[]; total: number; page?: number; pageSize?: number; hasMore?: boolean; nextCursor?: string; } export interface AuditEventStats { total: number; byAction: Record; byActor: Record; byResource: Record; byResult: Record; byHour?: Record; byDay?: Record; } export interface AuditEventExport { format: 'csv' | 'json' | 'xlsx'; filters?: EventFilters; fields?: string[]; filename?: string; } export interface EventTemplate { id: string; name: string; description?: string; action: string; resourceType: string; requiredFields?: string[]; metadata?: Record; }