import React from 'react';
import { Workbench } from './component/Workbench';
import { CPlugin, PluginManager } from './core/pluginManager';
import { Emitter } from 'mitt';
import { AssetPackage, CMaterialType, CNode, CPage, CPageDataType, CRootNode } from '@chamn/model';
export type EnginContext = {
    pluginManager: PluginManager;
    engine: Engine;
};
export type EngineProps = {
    plugins: CPlugin[];
    schema: CPageDataType;
    material?: CMaterialType[];
    components?: Record<string, any>;
    assetPackagesList?: AssetPackage[];
    beforePluginRun?: (options: {
        pluginManager: PluginManager;
    }) => void;
    /** 所有的加插件加载完成 */
    onReady?: (ctx: EnginContext) => void;
    onMount?: (ctx: EnginContext) => void;
    /** 渲染器 umd 格式 js 地址, 默认 ./render.umd.js */
    renderJSUrl?: string;
    style?: React.CSSProperties;
    className?: string;
};
export declare class Engine extends React.Component<EngineProps> {
    static version: string;
    currentSelectNode: CNode | CRootNode | null;
    pluginManager: PluginManager;
    workbenchRef: React.RefObject<Workbench>;
    pageSchema: CPageDataType | undefined;
    pageModel: CPage;
    material: CMaterialType[] | undefined;
    emitter: Emitter<any>;
    constructor(props: EngineProps);
    updateCurrentSelectNode(node: CNode | CRootNode | null): void;
    componentDidMount(): Promise<void>;
    getActiveNode(): CNode | CRootNode | null;
    updatePage: (page: CPageDataType) => void;
    updateMaterials: (materials: CMaterialType[], assetPackagesList: AssetPackage[]) => Promise<void>;
    refresh: () => Promise<void>;
    getWorkbench: () => Workbench | null;
    render(): JSX.Element;
}
export * as plugins from './plugins';
export * from '@chamn/layout';
export * from './material/innerMaterial';
export * from './component/CustomSchemaForm/components/Setters/type';
export * from './utils/index';
/** 注册自定义 setter */
export { registerCustomSetter } from './component/CustomSchemaForm/components/Form';
