import { BlockSchema, DocumentSummarySchema, JSONValue, JSExpression, JSFunction, ComponentDescription, ComponentDefine } 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 {
    name: string;
    fileName?: string;
    state: Record<string, JSONValue | JSExpression>;
    methods: Record<string, JSFunction>;
    lifeCycles: Record<string, JSFunction>;
    css?: string;
    componentMap: Record<string, ComponentDescription>;
    define?: ComponentDefine;
    release: any;
    normal: string[];
    summary: string[];
    nodeMap: Record<string, Node>;
    nodeNameRefs: Record<string, string[]>;
    constructor(schema: BlockSchema, parent?: Block | Document);
    /**
     * 记录组件信息
     * @param assets
     * @param name 组件名
     */
    registerComponent(assets: Assets, name: string): 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;
    setLifeCycle(key: string, value: JSFunction): void;
    removeLifeCycle(key: string): void;
}
