import { PageSchema, NodeSchema, LifeCycles, JSFunction, Interceptors } from 'vitis-lowcode-types';
import Node from '../node';
import type Project from './index';
export default class DocumentModel {
    rootNode: Node<PageSchema>;
    private nodeMap;
    selectedNodeId?: string;
    hoveredNodeId?: string;
    readonly project: Project;
    lifeCycles: LifeCycles;
    interceptors: PageSchema['interceptors'];
    constructor(project: Project, schema: PageSchema);
    get schema(): {
        lifeCycles: LifeCycles;
        interceptors: Interceptors;
        id?: string;
        componentName: string;
        packageName: string;
        props: {
            [key: string]: import("vitis-lowcode-types").PropValue;
        };
        extraProps: import("vitis-lowcode-types").ExtraProps;
        isContainer: boolean;
        children: NodeSchema[];
        isFormControl?: boolean;
        containerType?: "Page" | "Layout" | "Data";
    };
    get currentNode(): Node<NodeSchema>;
    createNode<S extends NodeSchema>(schema: S, pNode: Node<S> | undefined): Node<S>;
    delNode(nodeId: string): void;
    copyNode(node: Node<NodeSchema>): Node<NodeSchema>;
    open(schema: PageSchema): void;
    getNode(id: string): Node<NodeSchema>;
    selectNode(id?: string): void;
    hoverNode(id?: string): void;
    updateLifeCycles(name: keyof LifeCycles, value: JSFunction): void;
    updateInterceptors(name: keyof Interceptors, value: JSFunction): void;
}
