import React from 'react';
import { Layout, LayoutPropsType } from '@chamn/layout';
import { AdvanceCustom, CNode, CPage, CRootNode } from '@chamn/model';
import { AssetPackage } from '@chamn/model';
import { CPluginCtx } from '../../../../core/pluginManager';
import { AdvanceCustomHook } from './advanceCustomHook';
import { DesignerPluginConfig } from '../../type';
import { AdvanceCustomFuncParam } from '@chamn/model';
export type DesignerCtx = CPluginCtx<DesignerPluginConfig>;
export type DesignerPropsType = {
    pluginCtx: DesignerCtx;
};
export type WrapComponentOptionsType = {
    ctx: DesignerCtx;
    node: CNode | CRootNode;
};
type DesignerStateType = {
    pageModel: CPage;
    hoverToolbarView: React.ReactNode;
    selectToolbarView: React.ReactNode;
    selectRectViewRender: AdvanceCustom['selectRectViewRender'] | null;
    hoverRectViewRender: AdvanceCustom['hoverRectViewRender'] | null;
    dropViewRender: AdvanceCustom['dropViewRender'] | null;
    ghostView: React.ReactNode;
    portalView: React.ReactNode;
    assets: AssetPackage[];
};
export declare class Designer extends React.Component<DesignerPropsType, DesignerStateType> {
    layoutRef: React.RefObject<Layout>;
    customAdvanceHook: AdvanceCustomHook;
    constructor(props: DesignerPropsType);
    getPortalViewCtx: () => {
        setView: (view: React.ReactNode) => void;
        clearView: () => void;
    };
    componentDidMount(): void;
    updateAssets(assets: AssetPackage[]): void;
    reloadRender({ assets }: {
        assets?: AssetPackage[];
    }): void;
    init(): Promise<void>;
    onNodeDragging: LayoutPropsType['onNodeDragging'];
    onNodeDragEnd: LayoutPropsType['onNodeDraEnd'];
    onNodeDrop: LayoutPropsType['onNodeDrop'];
    onSelectNode: Required<LayoutPropsType>['onSelectNode'];
    onDragStart: LayoutPropsType['onNodeDragStart'];
    getGhostView: (dragNode: CNode | CRootNode, commonParam: AdvanceCustomFuncParam) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
    toSelectNode: (nodeId: string) => Promise<true | undefined>;
    toCopyNode: (id: string) => Promise<void>;
    toDeleteNode: (nodeId: string) => Promise<void>;
    toHidden: (id: string) => void;
    getToolbarView: (node: CNode | CRootNode) => JSX.Element;
    onHoverNode: LayoutPropsType['onHoverNode'];
    nodeCanDrag: LayoutPropsType['nodeCanDrag'];
    nodeCanDrop: LayoutPropsType['nodeCanDrop'];
    innerSelectRectViewRender: LayoutPropsType['selectRectViewRender'];
    innerHoverRectViewRender: LayoutPropsType['hoverRectViewRender'];
    innerDropViewRender: LayoutPropsType['dropViewRender'];
    render(): JSX.Element;
}
export {};
