/** * Audit Logger — Core audit logging for HoloScript * * Provides append-only audit event logging with query, export, * and retention management capabilities. * * @version 3.3.0 * @Sprint Sprint 9: Audit Logging & Compliance */ /** * Represents a single audit event. */ export interface AuditEvent { id: string; timestamp: Date; tenantId: string; actorId: string; actorType: 'user' | 'agent' | 'system'; action: string; resource: string; resourceId?: string; outcome: 'success' | 'failure' | 'denied'; metadata: Record; clientIp?: string; userAgent?: string; } /** * Input type for creating a new audit event (ID and timestamp are auto-generated). */ export type AuditEventInput = Omit; /** * Filter criteria for querying audit events. */ export interface AuditQueryFilter { tenantId?: string; actorId?: string; actorType?: 'user' | 'agent' | 'system'; action?: string; resource?: string; resourceId?: string; outcome?: 'success' | 'failure' | 'denied'; since?: Date; until?: Date; limit?: number; offset?: number; } /** * Storage backend interface for pluggable persistence. */ export interface AuditStorageBackend { append(event: AuditEvent): void; getAll(): AuditEvent[]; getCount(): number; removeWhere(predicate: (event: AuditEvent) => boolean): number; } /** * Default in-memory storage backend using an append-only array. */ export declare class InMemoryAuditStorage implements AuditStorageBackend { private events; append(event: AuditEvent): void; getAll(): AuditEvent[]; getCount(): number; removeWhere(predicate: (event: AuditEvent) => boolean): number; } /** * Core audit logger that provides append-only event logging, * querying, export, and retention management. */ export declare class AuditLogger { private storage; private retentionPolicies; constructor(storage?: AuditStorageBackend); /** * Log a new audit event. Generates ID and timestamp automatically. * Events are immutable once logged (append-only). */ log(input: AuditEventInput): AuditEvent; /** * Query audit events matching the given filter criteria. */ query(filter: AuditQueryFilter): AuditEvent[]; /** * Export filtered events in the specified format. */ export(filter: AuditQueryFilter, format: 'json' | 'csv'): string; /** * Set retention policy for a specific tenant (in days). */ setRetentionPolicy(tenantId: string, days: number): void; /** * Get retention policy for a tenant, or undefined if none set. */ getRetentionPolicy(tenantId: string): number | undefined; /** * Purge events that have exceeded their tenant's retention period. * Returns the number of events purged. */ purgeExpired(): number; /** * Get count of events matching the optional filter. */ getEventCount(filter?: AuditQueryFilter): number; private applyFilter; } //# sourceMappingURL=AuditLogger.d.ts.map