type IncomingMetricsKey = "incomingImageFrame" | "incomingAnnotationsFrame" | "incomingPointCloudFrame";
type RenderMetricsKey = "renderImageFrame" | "renderAnnotationsFrame" | "renderPointCloudFrame";
export type MetricsKey = IncomingMetricsKey | RenderMetricsKey;
export declare function constructKeyForTopicRenderMetrics(key: MetricsKey, topic: string): string;
declare abstract class MetricsManager<MetricsValueType> {
    abstract calculate(topic: string): number | undefined;
    protected metrics: Record<string, MetricsValueType>;
    getMetrics(): Record<string, MetricsValueType>;
}
export declare class EventMetricsManager extends MetricsManager<number[]> {
    ensureTopic(topic: string): void;
    calculate(topic: string): number | undefined;
    registerEvent(topic: string): void;
}
export declare class ThroughputMetricsManager extends MetricsManager<{
    timestamp: number;
    value: number;
}[]> {
    calculate(topic: string): number | undefined;
    registerEvent(topic: string, value: number): void;
}
declare const globalInputEventMetricsManager: EventMetricsManager, globalDecodeMetricsManager: EventMetricsManager, globalRenderMetricsManager: EventMetricsManager, globalThroughputMetricsManager: ThroughputMetricsManager;
export { globalInputEventMetricsManager, globalDecodeMetricsManager, globalRenderMetricsManager, globalThroughputMetricsManager, };
//# sourceMappingURL=metrics-manager.d.ts.map