import { EventEmitter } from '../../stencil-public-runtime';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaRichTextEditorRenderer } from './slimmers/renderers/vega-rich-text-editor-renderer';
import { VegaRTEContentBlock, VegaRichTextEditorImage, VegaRTESourceEditConfig, VegaRTETextStyleItem } from './interface';
import { ToolbarRenderer } from './slimmers/renderers/toolbar-renderer';
import { BoldToolbarButtonSlimmer } from './slimmers/renderers/tools/bold-toolbar-button-slimmer';
import { ItalicToolbarButtonSlimmer } from './slimmers/renderers/tools/italic-toolbar-button-slimmer';
import { UnderlineToolbarButtonSlimmer } from './slimmers/renderers/tools/underline-toolbar-button-slimmer';
import { TextStylesToolbarButtonSlimmer } from './slimmers/renderers/tools/text-styles-toolbar-button-slimmer';
import { VegaRTEToolbarItem } from './interface';
import { ClearStyleToolbarButtonSlimmer } from './slimmers/renderers/tools/clear-style-toolbar-button-slimmer';
import { CodeToolbarButtonSlimmer } from './slimmers/renderers/tools/code-toolbar-button-slimmer';
import { StrikethroughToolbarButtonSlimmer } from './slimmers/renderers/tools/strikethrough-toolbar-button-slimmer';
import { LinkToolbarButtonSlimmer } from './slimmers/renderers/tools/link-toolbar-button-slimmer';
import { MoreIndentToolbarButtonSlimmer } from './slimmers/renderers/tools/more-indent-toolbar-button-slimmer';
import { LessIndentToolbarButtonSlimmer } from './slimmers/renderers/tools/less-indent-toolbar-button-slimmer';
import { ImageToolbarButtonSlimmer } from './slimmers/renderers/tools/image-toolbar-button-slimmer';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { FormFieldValidationRule } from '../../helpers/validator/rules/form-field-validation-rule';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { TextColorToolbarButtonSlimmer } from './slimmers/renderers/tools/text-color-toolbar-button-slimmer';
import { SubStateNotifySlimmerBase } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer-base';
import { BulletsNumbersToolbarButtonSlimmer } from './slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer';
import { HorizontalAlignmentToolbarButtonSlimmer } from './slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer';
import { SelectionController } from './slimmers/controllers/selection-controller';
import { ValueController } from './slimmers/controllers/value-controller';
import { RTEBlock } from './dto/blocks/block.abstract';
import { RTENode } from './dto/nodes/node.abstract';
import { VegaRTEContent } from './dto/content-state';
import { DarkModeStateControllerSlimmer } from '../../helpers/slimmers/dark-mode-state-controller-slimmer';
import { RichTextContentController } from './slimmers/controllers/rich-text-content-controller';
import { UserInputController } from './slimmers/controllers/user-input-controller';
import { InsertImageController } from './slimmers/controllers/insert-image-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { FocusController } from './slimmers/controllers/focus-controller';
import { InsertCompositionTextController } from './slimmers/controllers/insert-composition-text-controller';
import { DeleteSelectedNodesController } from './slimmers/controllers/delete-selected-nodes-controller';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { HistoryController } from './slimmers/controllers/history-controller';
import { CodeBlockToolbarButtonSlimmer } from './slimmers/renderers/tools/code-block-toolbar-button-slimmer';
import { InternalCodeBlockSelectionController } from './slimmers/controllers/internal-code-block-selection-controller';
import { SourceEditToolbarButtonSlimmer } from './slimmers/renderers/tools/source-edit-toolbar-button-slimmer';
import { VegaRTEExtension } from './extensions/extension.abstract';
import { RTEExtensionController } from './slimmers/controllers/extension-controller';
import { VegaRichTextEditorSourceViewRenderer } from './slimmers/renderers/vega-rich-text-editor-source-view-renderer';
/**
 * @vegaVersion 2.34.0
 */
export declare class VegaRichTextEditor {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaRichTextEditorElement>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaRichTextEditorElement>;
  protected formFieldController: FormFieldControllerSlimmer<VegaRTEContentBlock[]>;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected readonly vegaRichTextEditorRenderer: VegaRichTextEditorRenderer;
  protected readonly valueController: ValueController;
  protected readonly selectionController: SelectionController;
  protected readonly focusController: FocusController;
  protected readonly darkModeStateControllerSlimmer: DarkModeStateControllerSlimmer;
  protected readonly toolbarRenderer: ToolbarRenderer;
  protected readonly clearStyleToolbarButtonSlimmer: ClearStyleToolbarButtonSlimmer;
  protected readonly boldToolbarButtonSlimmer: BoldToolbarButtonSlimmer;
  protected readonly italicToolbarButtonSlimmer: ItalicToolbarButtonSlimmer;
  protected readonly underlineToolbarButtonSlimmer: UnderlineToolbarButtonSlimmer;
  protected readonly textColorToolbarButtonSlimmer: TextColorToolbarButtonSlimmer;
  protected readonly textStylesToolbarButtonSlimmer: TextStylesToolbarButtonSlimmer;
  protected readonly codeToolbarButtonSlimmer: CodeToolbarButtonSlimmer;
  protected readonly strikethroughToolbarButtonSlimmer: StrikethroughToolbarButtonSlimmer;
  protected readonly imageToolbarButtonSlimmer: ImageToolbarButtonSlimmer;
  protected readonly linkToolbarButtonSlimmer: LinkToolbarButtonSlimmer;
  protected readonly moreIndentToolbarButtonSlimmer: MoreIndentToolbarButtonSlimmer;
  protected readonly lessIndentToolbarButtonSlimmer: LessIndentToolbarButtonSlimmer;
  protected readonly bulletsNumbersToolbarButtonSlimmer: BulletsNumbersToolbarButtonSlimmer;
  protected readonly horizontalAlignmentToolbarButtonSlimmer: HorizontalAlignmentToolbarButtonSlimmer;
  protected readonly codeBlockToolbarButtonSlimmer: CodeBlockToolbarButtonSlimmer;
  protected readonly sourceEditToolbarButtonSlimmer: SourceEditToolbarButtonSlimmer;
  protected readonly placeholderNotifySlimmer: SubStateNotifySlimmerBase;
  protected readonly disabledNotifySlimmer: SubStateNotifySlimmerBase;
  protected readonly richTextContentController: RichTextContentController;
  protected readonly userInputController: UserInputController;
  protected readonly insertImageController: InsertImageController;
  protected readonly insertCompositionTextController: InsertCompositionTextController;
  protected imageInsertedEventEmitter: EventEmitSlimmerBase;
  protected changeEventPreventSlimmer: ChildNodesEventPreventSlimmer;
  protected readonly deleteSelectedNodesController: DeleteSelectedNodesController;
  protected readonly historyController: HistoryController;
  protected readonly internalCodeBlockSelectionController: InternalCodeBlockSelectionController;
  protected readonly rteExtensionController: RTEExtensionController;
  protected readonly sourceCodeChangeEventEmitter: EventEmitSlimmerBase;
  protected readonly richTextEditorSourceViewRenderer: VegaRichTextEditorSourceViewRenderer;
  host: HTMLVegaRichTextEditorElement;
  richTextContentEditable: boolean;
  watchRichTextContentEditable(): void;
  selectionMap: Map<RTEBlock, RTENode[]>;
  isInDarkMode: boolean;
  sourceView: boolean;
  /**
   * Specifies the label for the rich text editor.
   *
   * It provides descriptive text that helps identify the
   *    purpose or content expected in the rich text editor.
   *
   * @vegaVersion 2.34.0
   */
  label: string;
  /**
   * Determines whether the rich text editor field is required.
   *
   * @vegaVersion 2.34.0
   */
  required: boolean;
  /**
   * Specifies a placeholder string that displays as a
   *    temporary hint or example within the rich text editor.
   *
   * It indicates the expected format or pattern of
   *    the input within the rich text editor.
   *
   * @vegaVersion 2.34.0
   */
  placeholder: string;
  watchPlaceholder(): void;
  /**
   * Specifies whether the rich text editor is disabled.
   *
   * @vegaVersion 2.34.0
   */
  disabled: boolean;
  watchDisabled(): void;
  /**
   * Provides a supplementary prompt message that assists users in
   *    understanding the expected value within the rich text editor.
   *
   * @vegaVersion 2.34.0
   */
  hint: string;
  /**
   * Specifies editable section rows for the rich text editor
   *
   * @vegaVersion 2.34.0
   */
  rows: number;
  /**
   * Specifies the value of the rich text editor, which can be either VegaRTEContent or VegaRTEContentBlock.
   * It is recommended to use the VegaRTEContent type.
   * Only in exceptional cases should the original data in the VegaRTEContentBlock type be used.
   *
   * @vegaVersion 2.34.0
   * @defaultValue [{id:'UUID', type:'paragraph', nodes:[{id: 'UUID',type: 'text',text:''}]}]
   */
  value: VegaRTEContent;
  watchValueUpdate(): void;
  /**
   * Specifies the built-in toolbar items available in the rich-text editor.
   *
   * @vegaVersion 2.34.0
   */
  toolbarItems: VegaRTEToolbarItem[][];
  /**
   * Determines whether to allow source edit mode in the rich text editor.
   *
   * @vegaVersion 2.59.0
   */
  allowSourceEdit: boolean;
  /**
   * Specifies the configuration options for source edit mode.
   * It includes settings such as autoMatchFormat, which controls whether the editor automatically matches formatting when switching to source edit mode.
   *
   * @vegaVersion 2.59.0
   */
  sourceEditConfig: VegaRTESourceEditConfig;
  /**
   * Specifies the validation status of the rich text editor component.
   *
   * @vegaVersion 2.34.0
   */
  isValid: boolean | null;
  /**
   * Determines whether automatic validation should be implemented for
   * the rich text editor.
   *
   * @vegaVersion 2.34.0
   */
  autoValidation: boolean;
  /**
   * Defines custom validation rules for the rich text editor.
   *
   * @vegaVersion 2.34.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * Specifies which text style items appear in the Text Styles toolbar dropdown.
   *
   * Use this to control which heading levels and text styles are available to users.
   * For example, omit `{ key: 'heading-1' }` to prevent users from applying H1
   * (which is typically reserved for the page title).
   *
   * Items are displayed in a fixed internal order regardless of the order in this array.
   *
   * @vegaVersion __VEGA_VERSION__
   * @defaultValue [{ key: 'title' }, { key: 'subtitle' }, { key: 'heading-1' }, { key: 'heading-2' }, { key: 'heading-3' }, { key: 'paragraph' }]
   */
  textStyleItems: VegaRTETextStyleItem[];
  /**
   * Specifies the configuration for the rich text editor extensions.
   *
   * @vegaVersion 2.62.0
   */
  extensions: VegaRTEExtension[];
  watchExtensions(): void;
  /**
   * An event emitter notifying a value change.
   *
   * @vegaVersion 2.34.0
   */
  vegaChange: EventEmitter<VegaRTEContent>;
  /**
   * An event emitter notifying a value change.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.34.0
   */
  change: EventEmitter<VegaRTEContent>;
  /**
   * An event emitter notifying an image insertion event.
   *
   * @vegaVersion 2.34.0
   */
  vegaImageInserted: EventEmitter<VegaRichTextEditorImage>;
  /**
   * An event emitter notifying an image insertion event.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.34.0
   */
  imageInserted: EventEmitter<VegaRichTextEditorImage>;
  /**
   * An event emitter notifying a source code change event. It triggers when the editor loses focus in source edit mode.
   *
   * @vegaVersion 2.78.0
   */
  vegaSourceCodeChange: EventEmitter<string>;
  /**
   * An event emitter notifying a source code change event. It triggers when the editor loses focus in source edit mode.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.78.0
   */
  sourceCodeChange: EventEmitter<string>;
  componentWillLoad(): void;
  render(): VegaRichTextEditor;
}
