import Component from '@glimmer/component';
import unified from 'unified';
import MarkdownActions from '../utils/markdown/markdown-actions';
import { defaultParsingPlugins, defaultProcessingPlugins } from '../utils/markdown/plugins/markdown-default-plugins';
import type { EuiMarkdownAstNode, EuiMarkdownAstNodePosition, EuiMarkdownEditorUiPlugin } from '../utils/markdown/markdown-types';
import type { EuiMarkdownEditorTextAreaSignature } from './eui-markdown-editor-text-area';
import type { EuiMarkdownEditorToolbarSignature } from './eui-markdown-editor-toolbar';
import type { EuiMarkdownFormatSignature } from './eui-markdown-format.gts';
export interface EuiMarkdownEditorArgs {
    initialViewMode?: string;
    editorId?: string;
    uiPlugins: EuiMarkdownEditorUiPlugin[];
    parsingPluginList?: typeof defaultParsingPlugins;
    processingPluginList?: typeof defaultProcessingPlugins;
    value: string;
    onChange: (str: string) => void;
    onParse?: (parseError: unknown | null, parsed: {
        messages: any[];
        ast: any;
    }) => void;
    height?: number | string;
    maxHeight?: number | string;
    autoExpandPreview?: boolean;
    disabled?: boolean;
    isInvalid?: boolean;
    ariaLabel?: string;
    ariaLabelledBy?: string;
    ariaDescribedBy?: string;
    formatRootClasses?: EuiMarkdownFormatSignature['Args']['rootClasses'];
    formatTextSize?: EuiMarkdownFormatSignature['Args']['textSize'];
    formatShouldIncludeDefaultRootClasses?: EuiMarkdownFormatSignature['Args']['shouldIncludeDefaultRootClasses'];
}
export interface EuiMarkdownEditorSignature {
    Element: EuiMarkdownEditorTextAreaSignature['Element'];
    Args: EuiMarkdownEditorArgs;
    Blocks: {
        default: [];
    };
}
export declare const getCursorNode: (textareaRef: HTMLInputElement, parsed: any) => EuiMarkdownAstNode;
export declare const getCursorNodeModifier: import("ember-modifier").FunctionBasedModifier<{
    Args: {
        Positional: [any, (node: Node) => void];
        Named: import("ember-modifier/-private/signature.js").EmptyObject;
    };
    Element: HTMLTextAreaElement;
}>;
export default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEditorSignature> {
    pluginEditorPlugin?: EuiMarkdownEditorUiPlugin;
    parsingPluginList: typeof defaultParsingPlugins;
    height: number | string;
    maxHeight: number | string;
    autoExpandPreview: boolean;
    processingPluginList: typeof defaultProcessingPlugins;
    selectedNode: Node | null;
    editorId: string;
    viewMode: string;
    textareaRef: HTMLTextAreaElement | null;
    previewRef: HTMLDivElement | null;
    editorToolbarRef: HTMLDivElement | null;
    currentHeight: number | string;
    editorFooterHeight: number;
    editorToolbarHeight: number;
    markdownActions: MarkdownActions;
    get toolbarPlugins(): (EuiMarkdownEditorUiPlugin | {
        name: string;
        button: {
            label: string;
            iconType: string;
        };
        formatting: {
            prefix: string;
            suffix: string;
            trimFirst: boolean;
        };
        helpText: string;
    })[];
    constructor(owner: unknown, args: EuiMarkdownEditorArgs);
    get previewHeight(): string;
    get textAreaHeight(): string;
    get textAreaMaxHeight(): string;
    get editorToggleContainerHeight(): string;
    onResize(): void;
    updateCurrentHeight(): void;
    getCursorNode: () => void;
    setTextAreaRef(ref: HTMLTextAreaElement): void;
    setEditorToolbarRef(ref: EuiMarkdownEditorToolbarSignature['Element']): void;
    replaceNode(position: EuiMarkdownAstNodePosition, next: string): void;
    get isEditing(): boolean;
    get isPreviewing(): boolean;
    setViewMode(): void;
    get parser(): unified.Processor<unified.Settings>;
    get parsed(): [
        ReturnType<typeof this.parser.processSync> | null,
        null | unknown
    ];
    get vFile(): import("vfile").VFile | null;
    onParse(): void;
    setSelectedNode(node: Node): void;
    openPluginEditor: (plugin: EuiMarkdownEditorUiPlugin) => void;
    onEditorPluginSave: (markdown: any, config: any) => void;
    willDestroy(): void;
}
//# sourceMappingURL=eui-markdown-editor.d.ts.map