import type { DB, DBTransaction, LevelPath } from '@matrixai/db'; import type { TopicSubPath, TopicPath, TopicSubPathToAuditEvent, MetricPath, MetricPathToAuditMetric } from './types.js'; import type { AuditEventId } from '../ids/types.js'; import type NodeConnectionManager from '../nodes/NodeConnectionManager.js'; import type Discovery from '../discovery/Discovery.js'; import type { AbstractEvent } from '@matrixai/events'; import type { AgentClientManifest } from '../nodes/agent/callers/index.js'; import Logger from '@matrixai/logger'; import { createDestroyStartStop } from '@matrixai/async-init'; import { PromiseCancellable } from '@matrixai/async-cancellable'; interface Audit extends createDestroyStartStop.CreateDestroyStartStop { } declare class Audit { static createAudit({ db, nodeConnectionManager, discovery, logger, fresh, }: { db: DB; nodeConnectionManager: NodeConnectionManager; discovery: Discovery; logger?: Logger; fresh?: boolean; }): Promise; protected logger: Logger; protected db: DB; protected nodeConnectionManager: NodeConnectionManager; protected discovery: Discovery; protected eventHandlerMap: Map) => Promise; }>; protected taskPromises: Set>; protected auditDbPath: LevelPath; protected dbLastAuditEventIdPath: LevelPath; protected auditEventDbPath: LevelPath; protected auditTopicDbPath: LevelPath; protected generateAuditEventId: () => AuditEventId; constructor({ db, nodeConnectionManager, discovery, logger, }: { db: DB; nodeConnectionManager: NodeConnectionManager; discovery: Discovery; logger: Logger; }); start({ fresh, }?: { fresh?: boolean; }): Promise; stop({ force }?: { force?: boolean; }): Promise; destroy(): Promise; getLastAuditEventId(tran?: DBTransaction): Promise; protected setEventHandler(target: EventTarget, event: T, topicPath: P, toAuditEvent: (evt: InstanceType) => Promise['data']> | TopicSubPathToAuditEvent

['data']): void; protected setAuditEvent(topicPath: TopicPath, auditEvent: TopicSubPathToAuditEvent, tran?: DBTransaction): any; getAuditEventsLongRunning(topicPath: T, { seek, seekEnd, limit, }?: { seek?: AuditEventId | Date | number; seekEnd?: AuditEventId | Date | number; limit?: number; }): AsyncGenerator>; getAuditEvents(topicPath: T, { seek, seekEnd, order, limit, }?: { seek?: AuditEventId | Date | number; seekEnd?: AuditEventId | Date | number; order?: 'asc' | 'desc'; limit?: number; }, tran?: DBTransaction): AsyncGenerator>; getAuditMetric(metricPath: T, options?: { seek?: AuditEventId | Date | number; seekEnd?: AuditEventId | Date | number; }, tran?: DBTransaction): Promise>; } export default Audit;