import { VegaSlimmer } from '../../vega-slimmer/vega-slimmer-core';
export declare type ComponentUsageRuntimeMetricsDefinition<T extends HTMLElement> = {
  payloadKey: string;
  payloadValue: (host: T) => boolean;
  payloadDescription?: string;
};
/**
 * The `VegaComponentUsageRuntimeMetricsSlimmer` class is used for sending usage
 * telemetry data to a telemetry service based on defined usage metrics for a specific component.
 * We did not use global slimmer because each component introduces all the definitions of other components during the did load
 */
export declare class VegaComponentUsageRuntimeMetricsSlimmer<T extends HTMLElement> extends VegaSlimmer {
  private readonly usageDefinitions?;
  static baseUsageKey: string;
  host: T;
  /**
   * The constructor initializes a private readonly property with an optional array of
   * ComponentUsageRuntimeMetricsDefinition.
   *
   * @param {ComponentUsageRuntimeMetricsDefinition[]} [usageDefinitions] - The `usageDefinitions`
   * parameter in the constructor is of type `ComponentUsageRuntimeMetricsDefinition<T>[]`, which is an
   * array of `ComponentUsageRuntimeMetricsDefinition` objects. This parameter is optional as it is
   * marked with a question mark `?`, meaning it can be omitted when creating an instance of
   */
  constructor(usageDefinitions?: ComponentUsageRuntimeMetricsDefinition<T>[]);
  /**
   * register the observer when the slimmer method called
   */
  sendUsagePayloadToTelemetry(): void;
  /**
   * The function `getComponentUsageMetricsPayload` generates a payload containing component usage
   * metrics data.
   *
   * @returns {Record<string, unknown>} The `getComponentUsageMetricsPayload` method returns an object with the following
   * structure:
   * {
   * 	componentName: string, // The tag name of the host component in uppercase
   * 	data: { // An object containing payload data with keys and boolean values
   * 		'COMPONENT_USED': true,
   * }
   */
  private getComponentUsageMetricsPayload;
}
