import { EventEmitter } from '../../stencil-public-runtime';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaCodeBlockRenderer } from './slimmers/renderers/vega-code-block-renderer';
import { VegaCodeBlockContentRenderer } from './slimmers/renderers/vega-code-block-content-renderer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaCodeBlockValue } from './types';
import { VegaCodeBlockValueController } from './slimmers/controllers/vega-code-block-value-controller';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { CodeContentParseController } from './slimmers/controllers/vega-code-block-content-parse-controller';
import { VegaCodeBlockSelectionController } from './slimmers/controllers/vega-code-block-selection-controller';
import { CodeBlockInputController } from './slimmers/controllers/vega-code-block-input-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaCodeBlockFocusController } from './slimmers/controllers/vega-code-block-focus-controller';
import { VegaCodeBlockCopyButtonRenderer } from './slimmers/renderers/vega-code-block-copy-button-renderer';
import { PrismCodeHighlightParseController } from './slimmers/controllers/prism-code-highlight-parse-controller';
import { DefaultCodeHighlightParseController } from './slimmers/controllers/default-code-highlight-parse-controller';
import { ComponentGlobalStyleSlimmer } from '../../helpers/slimmers/component-global-style-slimmer';
import { InsertCompositionTextController } from './slimmers/controllers/insert-composition-text-controller';
import { VegaCodeBlockHistoryController } from './slimmers/controllers/vega-code-block-history-controller';
import { CodeBlockPasteController } from './slimmers/controllers/vega-code-block-input-paste-controller';
/**
 * A component for capturing and displaying syntax-highlighted code blocks with copy-to-clipboard functionality.
 *
 * @vegaVersion 2.50.0
 */
export declare class VegaCodeBlock {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly componentGlobalStyleSlimmer: ComponentGlobalStyleSlimmer<HTMLVegaCodeBlockElement>;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaFileUploaderElement>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaCodeBlockElement>;
  protected codeBlockRenderer: VegaCodeBlockRenderer;
  protected contentRenderer: VegaCodeBlockContentRenderer;
  protected copyButtonRenderer: VegaCodeBlockCopyButtonRenderer;
  protected valueController: VegaCodeBlockValueController;
  protected contentParseController: CodeContentParseController;
  protected prismCodeHighlightParser: PrismCodeHighlightParseController;
  protected defaultCodeHighlightParser: DefaultCodeHighlightParseController;
  protected selectionController: VegaCodeBlockSelectionController;
  protected inputController: CodeBlockInputController;
  protected insertCompositionTextController: InsertCompositionTextController;
  protected focusController: VegaCodeBlockFocusController;
  protected historyController: VegaCodeBlockHistoryController;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected removeEventEmitter: EventEmitSlimmerBase;
  protected codeBlockPasteController: CodeBlockPasteController;
  protected eventPreventSlimmer: ChildNodesEventPreventSlimmer;
  host: HTMLVegaCodeBlockElement;
  /**
   * Specifies whether the code block editor is in read-only mode.
   *
   * @vegaVersion 2.50.0
   */
  readOnly: boolean;
  /**
   * Specifies whether the code block editor is disabled.
   *
   * @vegaVersion 2.50.0
   */
  disabled: boolean;
  watchEditableChange(): void;
  /**
   * Specifies whether to display the copy button in the code block.
   *
   * @vegaVersion 2.50.0
   */
  showCopyButton: boolean;
  /**
   * Specifies whether to display the code line number in the code block.
   *
   * @vegaVersion 2.50.0
   */
  showLineNumber: boolean;
  /**
   * Specifies the content or value to be displayed in the code block.
   *
   * @vegaVersion 2.50.0
   */
  value: VegaCodeBlockValue;
  /**
   * An event emitter notifying a value change.
   *
   * @vegaVersion 2.50.0
   */
  vegaChange: EventEmitter<VegaCodeBlockValue>;
  /**
   * An event emitter notifying a value change.
   *
   * @vegaVersion 2.50.0
   * @eventSemantics namespace:native
   */
  change: EventEmitter<VegaCodeBlockValue>;
  /**
   * An event emitter notifying the deletion of the code block. By default, the element is removed from the page, but this behavior can be prevented.
   *
   * @vegaVersion 2.50.0
   */
  vegaRemove: EventEmitter;
  /**
   * An event emitter notifying the deletion of the code block. By default, the element is removed from the page, but this behavior can be prevented.
   *
   * @vegaVersion 2.50.0
   * @eventSemantics namespace:native
   */
  remove: EventEmitter;
  /**
   * Check the props value to avoid unnecessary updates.
   *
   * @param {unknown} newValue - The new props value.
   * @param {unknown} oldValue - The old props value.
   * @param {string} name - The property name.
   * @returns {boolean} Return false to skip the current update flow.
   */
  componentShouldUpdate(newValue: unknown, oldValue: unknown, name: string): boolean;
  /**
   * Invoke this method to focus the current code block.
   *
   * @vegaVersion 2.50.0
   */
  doFocus(): Promise<void>;
  render(): VegaCodeBlock;
}
