import type { BlockItem } from "../../block";
import type { Notation } from "../../notation";
import type { GridLayoutGroup, LayoutChangeEvent } from "../../grids";
export type { LayoutChangeEvent };
export interface CellState {
    id: string;
    type: string;
    depth: number;
    isExpanded: boolean;
    isEditing: boolean;
    hasError: boolean;
    errorMessage?: string;
}
export interface CellModel {
    blockItem: BlockItem;
    state: CellState;
    source: string;
    sourceRange?: {
        start: number;
        end: number;
    };
    children: CellModel[];
    parent: CellModel | null;
}
export interface NotebookConfig {
    maxDepth: number;
    sharedGridLayoutGroup?: GridLayoutGroup;
    enableReordering?: boolean;
    enableAddCell?: boolean;
    enableDeleteCell?: boolean;
    onNotationChange?: (source: string, notation: Notation | null) => void;
    onCellError?: (cellId: string, error: Error) => void;
    onLayoutChange?: (event: LayoutChangeEvent) => void;
    markdownParser?: (content: string) => string;
    cssClasses?: NotebookCssClasses;
}
export interface NotebookCssClasses {
    root?: string;
    cell?: string;
    cellHeader?: string;
    cellContent?: string;
    cellControls?: string;
    addCellButton?: string;
    editTextarea?: string;
    errorMessage?: string;
}
export interface CellOperations {
    startEdit(cellId: string): void;
    applyEdit(cellId: string, newSource: string): void;
    cancelEdit(cellId: string): void;
    deleteCell(cellId: string): void;
    moveCell(cellId: string, targetIndex: number): void;
    insertCell(index: number, source: string): CellModel;
    toggleExpanded(cellId: string): void;
}
export interface CellTypeBadge {
    label: string;
    cssClass: string;
    icon?: string;
}
export declare const CELL_TYPE_BADGES: Record<string, CellTypeBadge>;
export declare function getCellTypeBadge(blockType: string): CellTypeBadge;
export declare function generateCellId(): string;
export declare function createDefaultCellState(blockItem: BlockItem, depth: number): CellState;
