export type AuditEventType = 'QUERY_START' | 'QUERY_SUCCESS' | 'QUERY_FAILURE' | 'CACHE_HIT' | 'CACHE_MISS' | 'RATE_LIMIT_EXCEEDED' | 'SSRF_BLOCKED' | 'PII_REDACTED'; export interface AuditEvent { id: string; timestamp: string; eventType: AuditEventType; queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; normalizedQuery?: string; success: boolean; durationMs: number; cached: boolean; serverUrl?: string; errorCode?: string; errorMessage?: string; requestHeaders?: Record; responseSize?: number; sessionId?: string; clientId?: string; tags?: Record; } export interface AuditLogAdapter { write(event: AuditEvent): Promise | void; flush?(): Promise | void; } export interface AuditLoggerOptions { enabled?: boolean; adapter?: AuditLogAdapter; includeRequestHeaders?: boolean; includeResponseSize?: boolean; sensitiveFields?: string[]; sessionId?: string; clientId?: string; tags?: Record; retentionHours?: number; } export declare class InMemoryAuditAdapter implements AuditLogAdapter { private events; private readonly maxEvents; private readonly retentionMs; constructor(options?: { maxEvents?: number; retentionHours?: number; }); write(event: AuditEvent): void; getEvents(since?: string): AuditEvent[]; getEventsByType(type: AuditEventType): AuditEvent[]; clear(): void; size(): number; private evict; } export declare class FileAuditAdapter implements AuditLogAdapter { private readonly filePath; constructor(filePath: string); write(event: AuditEvent): Promise; flush(): Promise; } export declare class AuditLogger { private readonly enabled; private readonly adapter; private readonly includeRequestHeaders; private readonly includeResponseSize; private readonly sessionId?; private readonly clientId?; private readonly tags?; private eventsLogged; constructor(options?: AuditLoggerOptions); log(event: Omit): void; logQueryStart(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; sessionId?: string; clientId?: string; }): void; logQuerySuccess(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; normalizedQuery: string; durationMs: number; cached: boolean; serverUrl?: string; responseSize?: number; }): void; logQueryFailure(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; durationMs: number; errorCode: string; errorMessage: string; }): void; logCacheHit(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; }): void; logRateLimitExceeded(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; }): void; logSSRFBlocked(params: { url: string; }): void; logPIIRedacted(params: { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; fieldsRedacted: number; }): void; flush(): Promise; isEnabled(): boolean; getStats(): { enabled: boolean; eventsLogged: number; }; private generateId; } //# sourceMappingURL=AuditLogger.d.ts.map