/// <reference types="react" />
import { CPluginCtx } from '../../../../core/pluginManager';
import { Layout, LayoutDragAndDropExtraDataType, LayoutDragEvent } from '../../../../index';
import { AdvanceCustom, CNode, CRootNode } from '@chamn/model';
export interface AdvanceCustomHookOptions {
    getPortalViewCtx: () => {
        setView: (view: React.ReactNode) => void;
        clearView: () => void;
    };
    ctx: CPluginCtx;
    layoutRef: React.RefObject<Layout>;
}
export type HookParameter = {
    dragNode?: CNode | CRootNode;
    dropNode?: CNode | CRootNode;
    eventObj: LayoutDragEvent<LayoutDragAndDropExtraDataType>;
};
export declare class AdvanceCustomHook {
    getPortalViewCtx: AdvanceCustomHookOptions['getPortalViewCtx'];
    ctx: CPluginCtx;
    layoutRef: AdvanceCustomHookOptions['layoutRef'];
    constructor(options: AdvanceCustomHookOptions);
    canDrag({ dragNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDragNode']>;
    canDrop({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['canDropNode']>;
    onNewAdd({ dragNode, dropNode, eventObj }: HookParameter): ReturnType<Required<AdvanceCustom>['onNewAdd']>;
    getSelectRectViewRender(node: CNode | CRootNode): ((props: import("@chamn/model").CustomViewRenderProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | undefined;
    getHoverRectViewRender(node?: CNode | CRootNode | null): ((props: import("@chamn/model").CustomViewRenderProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | null | undefined;
    getDropViewRender(node?: CNode | CRootNode | null): ((props: import("@chamn/model").CustomViewRenderProps & {
        canDrop: boolean;
        posInfo: import("@chamn/model").DropPosType;
    }) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | null | undefined;
    getGhostViewRender(node?: CNode | CRootNode | null): ((props: import("@chamn/model").CustomViewRenderProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | null | undefined;
    getToolbarViewRender(node?: CNode | CRootNode | null): ((props: {
        node: CNode | CRootNode;
        context: any;
        toolBarItems: {
            copyItem: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
            deleteItem: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
            visibleItem: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
            nodeLayout: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
        };
    }) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | null | undefined;
    onCopy(node: CNode | CRootNode): Promise<false | CNode | CRootNode>;
    onDelete(node: CNode | CRootNode): Promise<false | CNode | CRootNode>;
}
