import { PreservedTranslationOutput, TranslationKeyMap, TranslationKeyType, VegaTranslationConfig } from './interface';
import { HTMLStencilElement } from '../../stencil-public-runtime';
/**
 * Vega translation controller to control the internal text translation
 */
declare class InternalTranslationController {
  private static connectedComponents;
  private resources;
  private _currentLanguage;
  constructor();
  /**
   * Get current language
   *
   * @returns {string} current language
   */
  get currentLanguage(): string;
  /**
   * Initializes the translation controller with provided resources and language.
   *
   * @param {VegaTranslationConfig} config - The configuration object containing resources and initial language.
   */
  init({ resources, language }: VegaTranslationConfig): void;
  /**
   * Changes the current language if it exists in the resources.
   *
   * @param {string} language - The language code to change to.
   */
  changeLanguage(language: string): void;
  /**
   * Retrieves the translated string for the given key based on the current language.
   *
   * @param {string} key - The key for the translation.
   * @param {unknown[]} args - A list of values to replace in the translation string.
   * @returns {string} The translated string or the key itself if not found.
   */
  t<T extends TranslationKeyType = 'static'>(key: TranslationKeyMap[T], ...args: unknown[]): string;
  /**
   * Registers a component to the `connectedComponents` map, associating it with the component's tag name.
   * If the tag already exists, it adds the component to the existing set of components.
   *
   * @param {HTMLStencilElement} host - The component instance to register.
   */
  registerComponent<T extends HTMLStencilElement>(host: T): void;
  /**
   * Unregister a component from the `connectedComponents` map.
   *
   * @param {HTMLStencilElement} host - The component instance to unregister.
   */
  unRegisterComponent<T extends HTMLStencilElement>(host: T): void;
  /**
   * Retrieves the map of connected components, where each entry associates a tag name with a set of components.
   *
   * @returns {Map<string, Set<HTMLElement>>} A map of connected components.
   */
  getConnectedComponents(): Map<string, Set<HTMLElement>>;
  /**
   * Retrieves the preserved translated message segments.
   *
   * @param {string} key - The key for the translation.
   * @param {RegExp} preservePattern - the preserved regulation pattern to apply.
   * @param {unknown[]} args - A list of values to replace in the translation string.
   * @returns {PreservedTranslationOutput[]} An array of translated segments
   */
  tWithPreservedBlocks<T extends TranslationKeyType = 'static'>(key: TranslationKeyMap[T], preservePattern?: RegExp, ...args: unknown[]): PreservedTranslationOutput[];
}
export declare const VegaInternalTranslation: InternalTranslationController;
export {};
