import { BlockSchema, DocumentSummarySchema, JSONValue, JSExpression, JSFunction, ComponentDescription, ComponentDefine, IFileDataSource, WatchSchema, NodeSchema } from '../types';
import { Node } from './Node';
import { Assets } from '../Assets';
export declare type MoveType = 'after' | 'before' | 'inner';
export declare const BlockNormalPropNames: string[];
export declare const BlockSummaryPropNames: string[];
export declare class Block extends Node {
    __id__: string;
    name: string;
    title?: string;
    fileName?: string;
    state: Record<string, JSONValue | JSExpression>;
    methods: Record<string, JSFunction>;
    lifeCycles: Record<string, JSFunction>;
    css?: string;
    componentMap: Record<string, ComponentDescription>;
    dataSources: Record<string, IFileDataSource>;
    computed: Record<string, JSFunction>;
    watch: Record<string, WatchSchema>;
    define?: ComponentDefine;
    release: any;
    normal: string[];
    summary: string[];
    nodeMap: Record<string, Node>;
    nodeNameRefs: Record<string, string[]>;
    instanceMap: Record<string, any>;
    renderer: any;
    constructor(schema: BlockSchema, parent?: Block | Document);
    /**
     * 记录组件信息
     * @param assets
     * @param name 组件名
     */
    registerComponent(assets: Assets, schema: NodeSchema): void;
    addNodeNameRef(node: Node): void;
    removeNodeNameRef(node: Node): void;
    toSummarySchema(): DocumentSummarySchema;
    move(node: Node, target: Node, type: MoveType): void;
    setState(key: string, value: JSONValue | JSExpression): void;
    removeState(key: string): void;
    setMethod(key: string, value: JSFunction): void;
    removeMethod(key: string): void;
    setComputed(key: string, value: JSFunction): void;
    removeComputed(key: string): void;
    setWatch(key: string, value: WatchSchema): void;
    removeWatch(key: string): void;
    setLifeCycle(key: string, value: JSFunction): void;
    removeLifeCycle(key: string): void;
    setDataSource(id: string, item: IFileDataSource): void;
    removeDataSource(id: string): void;
    setCss(css: string): void;
}
