import { MetricEvents, PluginTable } from "../Metrics/types.cjs"; import { Metric } from "../Metrics/Metric.cjs"; import { ProcessingQueue } from "../Plugins/Reporter/ProcessingQueue.cjs"; import { InteractionMetric } from "../Interactions/InteractionMetric.cjs"; import { IExperience } from "../Experiences/types.cjs"; import { ExperienceMetric } from "../Experiences/ExperienceMetric.cjs"; import { PluginFactoryTable, ToPluginTable } from "./types.cjs"; //#region src/Factories/MetricFactory.d.ts /** * Metric Factory * * A factory for creating Metrics with a standardized plugin * configuration. * * ```typescript * const { ProcessingQueue, MetricFactory, LoggerPlugin } from "@ui-perf/metrics"; * * const Queue = new ProcessingQueue("/analytics"); * * const Factory = new MetricFactory(Queue, { * logger: LoggerPlugin, * }); * * // Construct Metrics with default plugins (Logger and Reporter) * const MyMetric = Factory.createMetric("My Metric"); * ``` */ declare class MetricFactory { readonly createMetric: >, P extends PluginTable = PluginTable>(name: string, plugins?: P | undefined) => Metric>, ToPluginTable & P>; readonly createExperience: >, M extends Metric[] = Metric[], P extends PluginTable = PluginTable>(params_0: IExperience) => ExperienceMetric>, M, ToPluginTable & P>; readonly createInteraction: = Record, F extends Record = Record, P extends PluginTable = PluginTable>(name: string, plugins?: P | undefined) => InteractionMetric, Record, ToPluginTable & P>; constructor(factories: U, Queue?: ProcessingQueue); private metricFactory; private interactionFactory; private experienceFactory; private initializePlugins; } //#endregion export { MetricFactory };