import {AuditEventDetails, AuditEventName} from 'app/common/AuditEvent'; import {RequestOrSession} from 'app/server/lib/requestUtils'; export interface IAuditLogger { /** * Logs an audit event. */ logEvent( requestOrSession: RequestOrSession, props: AuditEventProperties ): void; /** * Asynchronous variant of `logEvent`. * * Throws on failure to log an event. */ logEventAsync( requestOrSession: RequestOrSession, props: AuditEventProperties ): Promise; } export interface AuditEventProperties { event: { /** * The event name. */ name: Name; /** * Additional event details. */ details?: AuditEventDetails[Name]; }; /** * ISO 8601 timestamp (e.g. `2024-09-04T14:54:50Z`) of when the event occured. * * Defaults to now. */ timestamp?: string; }