import { BacktraceMetricsOptions } from '../../model/configuration/BacktraceConfiguration.js';
import { AttributeType } from '../../model/data/BacktraceData.js';
import { AttributeManager } from '../attribute/AttributeManager.js';
import { BacktraceModule } from '../BacktraceModule.js';
import { BacktraceSessionProvider } from './BacktraceSessionProvider.js';
import { MetricsQueue } from './MetricsQueue.js';
import { SummedEvent } from './model/SummedEvent.js';
import { UniqueEvent } from './model/UniqueEvent.js';
export declare class BacktraceMetrics implements BacktraceModule {
    private readonly _options;
    private readonly _sessionProvider;
    private readonly _attributeManager;
    private readonly _summedEventsSubmissionQueue;
    private readonly _uniqueEventsSubmissionQueue;
    /**
     * Returns current session id.
     */
    get sessionId(): string;
    /**
     * Default metrics submission interval. The variable defines how often metrics will be sent to metrics system.
     */
    readonly DEFAULT_UPDATE_INTERVAL: number;
    readonly DEFAULT_SERVER_URL = "https://events.backtrace.io";
    readonly metricsHost: string;
    private readonly _updateInterval;
    private _updateIntervalId?;
    private readonly _abortController;
    constructor(_options: BacktraceMetricsOptions, _sessionProvider: BacktraceSessionProvider, _attributeManager: AttributeManager, _summedEventsSubmissionQueue: MetricsQueue<SummedEvent>, _uniqueEventsSubmissionQueue: MetricsQueue<UniqueEvent>);
    /**
     * Starts metrics submission.
     */
    initialize(): void;
    /**
     * Returns total number of events in the submission queue.
     */
    count(): number;
    /**
     * Add summed event to next Backtrace Metrics request.
     * @param metricName Summed event name.
     * @param eventAttributes event attributes.
     */
    addSummedEvent(metricName: string, eventAttributes?: Record<string, AttributeType>): boolean;
    /**
     * Sends event to the metrics system.
     */
    send(abortSignal?: AbortSignal): Promise<boolean>;
    /**
     * Cleans up metrics interface.
     */
    dispose(): void;
    private sendUniqueEvent;
    /**
     * Event aggregators expecting to retrieve attributes in a string format. They also
     * don't expect to retrieve null/undefined as attribute values.
     */
    private convertAttributes;
    private handleAbort;
}
