import { NodeSchema, ContainerSchema } from 'vitis-lowcode-types';
import type ComponentSpec from '../project/componentSpec';
import Props from './props';
import type DocumentModel from '../project/documentModel';
import SettingTopEntry from '../setting/SettingTopEntry';
export default class Node<S extends NodeSchema = NodeSchema> {
    readonly id: string;
    readonly componentName: string;
    readonly isContainer: boolean;
    parent: Node<NodeSchema> | undefined;
    readonly owner: DocumentModel;
    protected children: Node<NodeSchema>[];
    readonly props: Props;
    readonly extraProps: Props;
    readonly containerType?: ContainerSchema['containerType'];
    readonly packageName: string;
    private _settingEntry;
    readonly isFormControl: boolean;
    get componentSpec(): ComponentSpec;
    get title(): string;
    get lastChild(): Node<NodeSchema> | undefined;
    get childrenSize(): number;
    constructor(owner: DocumentModel, initSchema: S, parent: Node<S> | undefined);
    get settingEntry(): SettingTopEntry;
    export(): NodeSchema;
    inertChildAtIndex: (node: Node<NodeSchema>, index: number) => void;
    insertAfter: (node: Node<NodeSchema>, afterNode: Node<NodeSchema>) => void;
    delChildAtIndex: (index: number) => void;
    getChildAtIndex: (index: number) => Node<NodeSchema> | undefined;
    delChild: (child: Node<NodeSchema>) => void;
    getProp: (propName: string, createIfNone?: boolean) => import("./prop").default;
    getExtraProp: (propName: string, createIfNone?: boolean) => import("./prop").default;
}
