import { VegaPublicAPIRuntimeMetricsSlimmerBase } from '../slimmers/runtime-metrics/public-api-runtime-metrics-slimmer-base';
import { VegaSkeletonLoaderConfig } from './interface';
/**
 * Vega Skeleton Loader Controller to show skeletons in the target elements
 */
declare class VegaSkeletonLoaderController {
  private static readonly LOADER_DATA_SET_KEY;
  protected vegaPublicAPIRuntimeMetricsSlimmer: VegaPublicAPIRuntimeMetricsSlimmerBase;
  private loaderMap;
  /**
   * Load the skeletons in the target elements
   *
   * @param { VegaSkeletonLoaderConfig } config - Configuration for the loading function
   * @param {string} config.target - Target elements to show the skeletons.
   * @param {VegaSkeletonLoaderConfig.type} [config.type = 'text'] - Type of the skeleton.
   * @param {VegaSkeletonLoaderConfig.width} config.width - Width of the skeleton.
   * @param {VegaSkeletonLoaderConfig.height} config.height - Height of the skeleton.
   * @param {VegaSkeletonLoaderConfig.items} config.items - Configuration for multiple skeleton items.
   * @param {VegaSkeletonLoaderConfig.layout} config.layout - Layout of the skeleton items.
   * @returns { string } - Key of the loaded skeleton items.
   * @vegaVersion 2.16.0
   */
  load({ target, type, width, height, items, layout }: VegaSkeletonLoaderConfig): string;
  /**
   * Remove the skeletons from the dom.
   *
   * @param {string} key - The key returned from {@link VegaSkeletonLoaderController.load}.
   * @vegaVersion 2.16.0
   */
  unLoad(key: string): void;
  /**
   * Remove all the skeletons from the dom.
   *
   * @vegaVersion 2.16.0
   */
  unLoadAll(): void;
  /**
   * Create a skeleton item. The skeleton animated always be true
   *
   * @param {VegaSkeletonLoaderItem} config - Configuration for the skeleton item.
   * @returns {HTMLVegaSkeletonElement} - Skeleton item.
   */
  private createSkeleton;
  /**
   * Wrap the flex layout for the skeletons.
   *
   * @param {HTMLElement[]} skeletons - Skeleton elements of the loader.
   * @param {VegaSkeletonLoaderLayout} layout - Flex properties for the layout.
   * @returns {HTMLVegaFlexElement} - Container wrapping the skeletons in the specified flex layout.
   */
  private wrapLayout;
}
export declare const VegaSkeletonLoader: VegaSkeletonLoaderController;
export {};
