/**
 * Copyright IBM Corp. 2021, 2025
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import type { EditorView } from '@codemirror/view';
import type { WithBoundArgs } from '@glint/template';
import type Owner from '@ember/owner';
import HdsCodeEditorDescription from './description';
import HdsCodeEditorGeneric from './generic';
import HdsCodeEditorTitle from './title';
import type { HdsCodeEditorDescriptionSignature } from './description';
import type { HdsCodeEditorSignature as HdsCodeEditorModifierSignature } from '../../../modifiers/hds-code-editor.ts';
import type { HdsCodeEditorTitleSignature } from './title';
import type { HdsCopyButtonSignature } from '../copy/button/index';
export interface HdsCodeEditorSignature {
    Args: {
        hasCopyButton?: boolean;
        hasFullScreenButton?: boolean;
        isStandalone?: boolean;
        copyButtonText?: HdsCopyButtonSignature['Args']['text'];
    } & HdsCodeEditorModifierSignature['Args']['Named'];
    Blocks: {
        default: [
            {
                Title?: WithBoundArgs<typeof HdsCodeEditorTitle, 'onInsert' | 'editorId'>;
                Description?: WithBoundArgs<typeof HdsCodeEditorDescription, 'onInsert' | 'editorId'>;
                Generic?: typeof HdsCodeEditorGeneric;
            }
        ];
    };
    Element: HTMLDivElement;
}
export default class HdsCodeEditor extends Component<HdsCodeEditorSignature> {
    private _isFullScreen;
    private _isSetupComplete;
    private _value;
    private _titleId;
    private _descriptionId;
    private _id;
    private _handleEscape;
    constructor(owner: Owner, args: HdsCodeEditorSignature['Args']);
    get ariaLabelledBy(): string | undefined;
    get ariaDescribedBy(): string | undefined;
    get hasActions(): boolean;
    get isStandalone(): boolean;
    get classNames(): string;
    get copyButtonText(): HdsCopyButtonSignature['Args']['text'];
    registerTitleElement: (element: HdsCodeEditorTitleSignature["Element"]) => void;
    registerDescriptionElement: (element: HdsCodeEditorDescriptionSignature["Element"]) => void;
    toggleFullScreen: () => void;
    onInput: (newValue: string, editorView: EditorView) => void;
    onKeyDown: (event: KeyboardEvent) => void;
    onSetup: (editorView: EditorView) => void;
}
