/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import type { ComponentLike } from '@glint/template';
import type { HdsCodeBlockTitleSignature } from './title';
import type { HdsCodeBlockDescriptionSignature } from './description';
import type { HdsCodeBlockLanguages } from './types.ts';
import type { HdsCopyButtonSignature } from '../copy/button/index.ts';
import 'prismjs/plugins/line-numbers/prism-line-numbers';
import 'prismjs/plugins/line-highlight/prism-line-highlight';
import 'prismjs/components/prism-bash';
import 'prismjs/components/prism-go';
import 'prismjs/components/prism-hcl';
import 'prismjs/components/prism-json';
import 'prismjs/components/prism-log';
import 'prismjs/components/prism-ruby';
import 'prismjs/components/prism-shell-session';
import 'prismjs/components/prism-yaml';
import 'prismjs/components/prism-markup-templating';
import 'prismjs/components/prism-handlebars';
export declare const LANGUAGES: string[];
export interface HdsCodeBlockSignature {
    Args: {
        hasCopyButton?: boolean;
        hasLineNumbers?: boolean;
        hasLineWrapping?: boolean;
        highlightLines?: string;
        lineNumberStart?: number;
        isStandalone?: boolean;
        language?: HdsCodeBlockLanguages;
        maxHeight?: string;
        value: string;
        copyButtonText?: HdsCopyButtonSignature['Args']['text'];
        onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];
    };
    Blocks: {
        default: [
            {
                Title?: ComponentLike<HdsCodeBlockTitleSignature>;
                Description?: ComponentLike<HdsCodeBlockDescriptionSignature>;
            }
        ];
    };
    Element: HTMLDivElement;
}
export default class HdsCodeBlock extends Component<HdsCodeBlockSignature> {
    private _prismCode;
    /**
     * Generates a unique ID for the code content
     *
     * @param _preCodeId
     */
    private _preCodeId;
    /**
     * @param code
     * @type {string}
     * @description code text content for the CodeBlock
     */
    get code(): string;
    /**
     * @param language
     * @type {string}
     * @default undefined
     * @description name of coding language used within CodeBlock for syntax highlighting
     */
    get language(): HdsCodeBlockLanguages | undefined;
    /**
     * @param hasLineNumbers
     * @type {boolean}
     * @default true
     * @description Displays line numbers if true
     */
    get hasLineNumbers(): boolean;
    /**
     * @param isStandalone
     * @type {boolean}
     * @default true
     * @description Make CodeBlock container corners appear rounded
     */
    get isStandalone(): boolean;
    /**
     * @param hasLineWrapping
     * @type {boolean}
     * @default false
     * @description Make text content wrap on multiple lines
     */
    get hasLineWrapping(): boolean;
    get copyButtonText(): HdsCopyButtonSignature['Args']['text'];
    setPrismCode(element: HTMLElement): void;
    /**
     * Get the class names to apply to the component.
     * @method classNames
     * @return {string} The "class" attribute to apply to the component.
     */
    get classNames(): string;
}
