import React from 'react';
import { HeadingTagType } from '@lexical/rich-text';
import { type ListItemNode } from '@lexical/list';
import { ElementFormatType, LexicalEditor, type RangeSelection } from 'lexical';
export declare const DEFAULT_HEADING_FONT_SIZES: Record<HeadingTagType, string>;
type ListItemBlockType = HeadingTagType | 'paragraph';
type PreservedListBlock = {
    fontSize: string;
    headingTag: HeadingTagType | null;
};
/**
 * Stores block metadata for a list item during the current editor session.
 * @param listItemKey List item node key.
 * @param headingTag Heading type to store, or null to mark the list item as normal text.
 */
export declare function setListItemHeadingTag(listItemKey: string, headingTag: HeadingTagType | null): void;
/**
 * Gets every list item touched by a range selection.
 * @param selection Current range selection.
 * @returns Unique selected list items.
 */
export declare function getSelectedListItems(selection: RangeSelection): Set<ListItemNode>;
/**
 * Gets the heading tag stored on a list item style.
 * @param style List item text style.
 * @returns Matching heading tag, or null when the style is normal text.
 */
export declare function getListItemHeadingTagFromStyle(style: string): HeadingTagType | null;
/**
 * Gets the block type stored for a list item.
 * @param listItemNode List item whose block metadata should be read.
 * @returns Matching block type, or null when no metadata can be inferred.
 */
export declare function getListItemBlockType(listItemNode: ListItemNode): ListItemBlockType | null;
/**
 * Gets the heading type stored for a list item.
 * @param listItemNode List item whose heading metadata should be read.
 * @returns Matching heading tag, or null when the list item is normal text.
 */
export declare function getListItemHeadingTag(listItemNode: ListItemNode): HeadingTagType | null;
/**
 * Gets the heading tag represented by the current selected list item font size.
 * @param editor Active Lexical editor.
 * @returns Matching heading tag, or null when the selected list item is normal text.
 */
export declare function getSelectedListHeadingTag(editor: LexicalEditor): HeadingTagType | null;
/**
 * Gets the element alignment format stored on the selected list item.
 * @param editor Active Lexical editor.
 * @returns Selected list item format, or null when the selection is not in a list item.
 */
export declare function getSelectedListElementFormat(editor: LexicalEditor): ElementFormatType | null;
/**
 * Converts the current selected blocks to a heading tag while preserving heading font size.
 * @param headingTag Heading tag to apply.
 */
export declare function applyHeadingTypeToSelection(headingTag: HeadingTagType): void;
/**
 * Preserves block metadata before converting selected content to a list item.
 * If the selection is already inside list items, it preserves list heading metadata.
 * @param editor Active Lexical editor.
 * @returns Preserved font size and heading tag, or paragraph metadata when no heading is selected.
 */
export declare function preserveHeadingFontSizeForList(editor: LexicalEditor): PreservedListBlock | null;
/**
 * Applies font size and optional heading metadata to selected list items.
 * @param defaultFontSize Font size to apply to the list item content.
 * @param headingTag Heading type to preserve on the list item, or null to reset to normal text.
 * @returns True when at least one list item was updated.
 */
export declare function applyListItemFontSize(defaultFontSize: string, headingTag?: HeadingTagType | null): boolean;
export default function HeaderDropdown({ editor, value }: {
    editor: LexicalEditor;
    value: string;
}): React.JSX.Element;
export {};
