import { Subject, Observable } from 'rxjs'; import { MemoryEvent } from './events'; import { IMemoryMonitor, MonitorConfig, MonitorMetrics } from './monitors'; /** * Abstract base class for memory monitors * Monitors are invoked by the TransitionManager based on system signals * and produce events by reading their associated memory */ export declare abstract class AbstractMemoryMonitor implements IMemoryMonitor { readonly id: string; readonly config: MonitorConfig; protected eventsSubject$: Subject; protected isActive: boolean; private _metrics; protected logger: import("..").Logger; constructor(id: string, config: MonitorConfig); /** * Get current monitor metrics */ get metrics(): MonitorMetrics; /** * Start accepting invocations from TransitionManager */ start(): void; /** * Stop accepting invocations from TransitionManager */ stop(): void; /** * Reset monitor state */ reset(): void; /** * Called by TransitionManager when signals match this monitor's config. * Implementations should read their associated memory and emit events. */ abstract monitor(): Observable; /** * Helper method for implementations to emit events */ protected emitEvent(event: MemoryEvent): void; }