import Component from '@glimmer/component';
import type { EuiCodeSharedProps } from '../utils/code/utils';
import type { RefractorNode } from 'refractor';
interface LineNumbersConfig {
    start?: number;
    highlight?: string;
    show?: boolean;
}
export type PaddingSize = 'none' | 's' | 'm' | 'l';
export type FontSize = 's' | 'm' | 'l';
export type EuiCodeBlockArgs = EuiCodeSharedProps & {
    paddingSize?: PaddingSize;
    fontSize?: FontSize;
    /**
     * Specify how `white-space` inside the element is handled.
     * `pre` respects line breaks/white space but doesn't force them to wrap the line
     * `pre-wrap` respects line breaks/white space but does force them to wrap the line when necessary.
     */
    whiteSpace?: 'pre' | 'pre-wrap';
    /**
     * Displays an icon button to copy the code snippet to the clipboard.
     */
    isCopyable?: boolean;
    /**
     * Displays line numbers.
     * Optionally accepts a configuration object for setting the starting number and visual highlighting ranges:
     * `{ start: 100, highlight: '1, 5-10, 20-30, 40' }`
     */
    lineNumbers?: boolean | LineNumbersConfig;
    /**
     * Sets the maximum container height.
     * Accepts a pixel value (`300`) or a percentage (`'100%'`)
     * Ensure the container has calcuable height when using a percentage
     */
    overflowHeight?: number | string;
    /**
     * Renders code block lines virtually.
     * Useful for improving load times of large code blocks.
     *
     * When using this configuration, `overflowHeight` is required and
     * `whiteSpace` can only be `pre`.
     */
    isVirtualized?: boolean;
};
export interface EuiCodeBlockSignature {
    Element: HTMLElement;
    Args: EuiCodeBlockArgs;
    Blocks: {
        default: [];
    };
}
export default class EuiCodeBlockComponent extends Component<EuiCodeBlockSignature> {
    codeTarget?: HTMLElement;
    code?: HTMLElement;
    codeFullScreen?: HTMLElement;
    wrapperRef?: HTMLElement;
    tabIndex: number;
    isFullScreen: boolean;
    data?: {
        data: RefractorNode[];
        element: HTMLElement;
    };
    get language(): string;
    get transparentBackground(): boolean;
    get paddingSize(): PaddingSize;
    get fontSize(): FontSize;
    get isCopyable(): boolean;
    get whiteSpace(): "pre" | "pre-wrap";
    get isVirtualized(): boolean;
    get lineNumbers(): boolean | LineNumbersConfig;
    get lineNumbersConfig(): {
        start: number;
        highlight?: string | undefined;
        show: boolean;
    };
    get optionalStyles(): {
        [x: string]: string;
    };
    get showCopyButton(): boolean;
    get rowHeight(): number;
    get showFullScreenButton(): boolean;
    constructor(owner: unknown, args: EuiCodeBlockArgs);
    toggleFullScreen(): void;
    closeFullScreen(e: KeyboardEvent): void;
    doesOverflow(): void;
    updateCode(resp: {
        data: RefractorNode[];
        element: HTMLElement;
    }): void;
}
export {};
//# sourceMappingURL=eui-code-block.d.ts.map