import { default as React } from 'react';
import { DecoratorNode, NodeKey, SerializedLexicalNode, Spread } from 'lexical';
export type SerializedCodeBlockNode = Spread<{
    code: string;
    language: string;
    fileName?: string;
    hideToolbar?: boolean;
    collapsible?: boolean;
}, SerializedLexicalNode>;
declare class CodeBlockNode extends DecoratorNode<React.ReactNode> {
    __code: string;
    __language: string;
    __fileName?: string;
    __hideToolbar?: boolean;
    __collapsible?: boolean;
    static getType(): string;
    static clone(node: CodeBlockNode): CodeBlockNode;
    constructor(code?: string, language?: string, fileName?: string, hideToolbar?: boolean, collapsible?: boolean, key?: NodeKey);
    static importJSON(serializedNode: SerializedCodeBlockNode): CodeBlockNode;
    exportJSON(): SerializedCodeBlockNode;
    createDOM(): HTMLElement;
    updateDOM(): boolean;
    getCode(): string;
    setCode(code: string): void;
    getLanguage(): string;
    setLanguage(language: string): void;
    decorate(editor: any): React.ReactNode;
}
export declare function $createCodeBlockNode(code?: string, language?: string, fileName?: string, hideToolbar?: boolean, collapsible?: boolean): CodeBlockNode;
export declare function $isCodeBlockNode(node: any): node is CodeBlockNode;
declare let ExportedCodeBlockNode: typeof CodeBlockNode;
export { ExportedCodeBlockNode as CodeBlockNode };
