import { VegaLoaderOptions } from './vega-loader';
import { Nullable } from '../../types/general';
import { VegaPublicAPIRuntimeMetricsSlimmerBase } from '../slimmers/runtime-metrics/public-api-runtime-metrics-slimmer-base';
/**
 * Vega loader controller to control the loading indicator
 */
declare class VegaLoaderController {
  private static readonly SPECIAL_ELEMENT_TO_WRAP_FULL_BODY;
  protected vegaPublicAPIRuntimeMetricsSlimmer: VegaPublicAPIRuntimeMetricsSlimmerBase;
  /**
   * Create a loading indicator and append it to the container
   *
   * @param {VegaLoaderIndicatorOptions} options - VegaLoaderOptions = {} options of the method
   * @returns {Nullable<string>} The uuid of the loader.
   * @vegaVersion 1.16.0
   */
  load(options?: VegaLoaderOptions): Nullable<string>;
  /**
   * Close the loader by id
   *
   * @param {string} id - The id of the loader.
   * @vegaVersion 1.16.0
   */
  close(id: string): void;
  /**
   * Find loader by id, if the id include '>>>' it will find inside shadowRoot
   *
   * @param {string} id - The id of the loader.
   * @returns {Nullable<HTMLElement>} The loader found by id.
   */
  private findLoader;
  /**
   * Create a loader for loading indicator
   *
   * @param {string} containerSelector The container which you want to append
   * @returns {HTMLElement} a wrapper for loader
   */
  private createLoader;
  /**
   * Create a loading indicator
   *
   * @param {VegaLoaderIndicatorOptions} indicatorOptions the props of vega loading indicator
   * @returns {HTMLVegaLoadingIndicatorElement} vega-loading-indicator component template
   */
  private createLoadingIndicator;
  /**
   * Append the loader to the container
   *
   * @param {HTMLElement} loader A loader with loading indicator
   * @param {string} containerElement The container which you want to append the loader to
   * @returns {string} The uuid of the loader.
   */
  private appendLoader;
}
export declare const VegaLoader: VegaLoaderController;
export {};
