import { OnInit, OnDestroy, AfterViewInit, 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, AfterViewInit {
    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;
    ngAfterViewInit(): 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>;
    /** Empty-state presentation for the event list — varies by capture state. */
    get EmptyVariant(): 'empty' | 'warning' | 'no-results';
    get EmptyIcon(): string;
    get EmptyTitle(): string;
    get EmptyMessage(): string;
    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;
    /** Publish the current Event Monitor capture state to the AI agent. */
    private publishAgentContext;
    /**
     * Register the client tools the AI agent can invoke against the Event Monitor.
     * All operate on the inspector's own capture state — no application mutation.
     * Tools: PauseEventMonitor / ResumeEventMonitor, ClearEventLog,
     * FilterEventsByType, FilterEventsByComponent, ClearEventFilters,
     * SetEventMonitorSort.
     */
    private registerAgentClientTools;
    /** Apply (or clear, on empty string) the event-type filter. */
    private toolFilterByType;
    /** Apply (or clear, on empty string) the component-name filter. */
    private toolFilterByComponent;
    /** Set the sort field + direction from validated enum params. */
    private toolSetSort;
    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