import { LexicalNode, RootNode, TextFormatType } from 'lexical';
import { Root } from 'mdast';
import { DummyRootNode } from '../extensions/collapsible/dummyRoot/node.js';
import { Node } from '../types.js';
export type Handler<TNodeType extends Node = Node> = (node: TNodeType, parser: Parser) => TNodeType extends Root ? RootNode | DummyRootNode : void;
export declare class Parser {
    stack: (LexicalNode | DummyRootNode)[];
    formatting: TextFormatType[];
    handlers: Record<string, Handler>;
    constructor(handlers?: Record<string, Handler>);
    parse<TNodeType extends Node = Node>(tree: TNodeType): TNodeType extends Root ? RootNode : void;
    pop(node?: LexicalNode | DummyRootNode | ((l: LexicalNode) => boolean) | string): LexicalNode | DummyRootNode | undefined;
    push(node: LexicalNode | DummyRootNode): void;
    append(node: LexicalNode): void;
}
