import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { BaseResourceComponent } from '@memberjunction/ng-shared';
import * as i0 from "@angular/core";
interface EventRow {
    seq: number;
    timestamp: Date;
    type: string;
    eventCode?: string;
    componentName: string;
    summary: string;
    args: unknown;
    expanded: boolean;
    /** True when args is null/undefined/empty — used to render a clean empty-state on expand. */
    hasPayload: boolean;
}
type SortField = 'time' | 'type' | 'eventCode' | 'component';
type SortDir = 'asc' | 'desc';
/**
 * Event Monitor — live tail of `MJGlobal.Instance.GetEventListener()`.
 * Captures events into a ring buffer (configurable cap) with filtering,
 * pause/resume, click-to-expand-payload, copy.
 */
export declare class EventMonitorComponent extends BaseResourceComponent implements OnInit, OnDestroy {
    private cdr;
    readonly MaxEvents = 500;
    Events: EventRow[];
    Paused: boolean;
    AutoScroll: boolean;
    Filter: string;
    TypeFilter: string;
    ComponentFilter: string;
    CodeFilter: string;
    KnownTypes: string[];
    KnownComponents: string[];
    KnownCodes: string[];
    Stats: {
        captured: number;
        perSecond: number;
        kept: number;
    };
    StartedAt: Date;
    SortField: SortField;
    SortDir: SortDir;
    private sub?;
    private seq;
    private rateBucket;
    private rateTimer?;
    constructor(cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    private loadPrefs;
    private savePrefs;
    GetResourceDisplayName(): Promise<string>;
    GetResourceIconClass(): Promise<string>;
    TogglePause(): void;
    ToggleAutoScroll(): void;
    Clear(): void;
    ToggleRow(row: EventRow): void;
    OnTypeFilterClick(type: string): void;
    OnSortClick(field: SortField): void;
    /** Public so the template can call on every ngModelChange (filters, selects). */
    PersistPrefs(): void;
    OnCopyRow(row: EventRow): Promise<void>;
    get FilteredEvents(): EventRow[];
    ClearFilters(): void;
    get HasActiveFilters(): boolean;
    get UptimeLabel(): string;
    TrackBySeq: (_i: number, e: EventRow) => number;
    private subscribe;
    private handleEvent;
    private computeHasPayload;
    private tickRate;
    private summarizeArgs;
    static ɵfac: i0.ɵɵFactoryDeclaration<EventMonitorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EventMonitorComponent, "mj-event-monitor", never, {}, {}, never, never, false, never>;
}
export {};
//# sourceMappingURL=event-monitor.component.d.ts.map