/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import type { CSSProperties } from 'react';
import type { PrismTheme } from 'prism-react-renderer';
export type MagicCommentConfig = {
    className: string;
    line?: string;
    block?: {
        start: string;
        end: string;
    };
};
export declare function parseCodeBlockTitle(metastring?: string): string;
export declare function containsLineNumbers(metastring?: string): boolean;
/**
 * Gets the language name from the class name (set by MDX).
 * e.g. `"language-javascript"` => `"javascript"`.
 * Returns undefined if there is no language class name.
 */
export declare function parseLanguage(className: string): string | undefined;
/**
 * Parses the code content, strips away any magic comments, and returns the
 * clean content and the highlighted lines marked by the comments or metastring.
 *
 * If the metastring contains a range, the `content` will be returned as-is
 * without any parsing. The returned `lineClassNames` will be a map from that
 * number range to the first magic comment config entry (which _should_ be for
 * line highlight directives.)
 *
 * @param content The raw code with magic comments. Trailing newline will be
 * trimmed upfront.
 * @param options Options for parsing behavior.
 */
export declare function parseLines(content: string, options: {
    /**
     * The full metastring, as received from MDX. Line ranges declared here
     * start at 1.
     */
    metastring: string | undefined;
    /**
     * Language of the code block, used to determine which kinds of magic
     * comment styles to enable.
     */
    language: string | undefined;
    /**
     * Magic comment types that we should try to parse. Each entry would
     * correspond to one class name to apply to each line.
     */
    magicComments: MagicCommentConfig[];
}): {
    /**
     * The highlighted lines, 0-indexed. e.g. `{ 0: ["highlight", "sample"] }`
     * means the 1st line should have `highlight` and `sample` as class names.
     */
    lineClassNames: {
        [lineIndex: number]: string[];
    };
    /**
     * If there's number range declared in the metastring, the code block is
     * returned as-is (no parsing); otherwise, this is the clean code with all
     * magic comments stripped away.
     */
    code: string;
};
export declare function getPrismCssVariables(prismTheme: PrismTheme): CSSProperties;
//# sourceMappingURL=codeBlockUtils.d.ts.map