import { InteractiveConfig, SceneEvent, ViewEntity } from '@turbox3d/event-manager';
import { SceneTool } from '@turbox3d/command-manager';
import { BaseScene } from './scene';
import { PureComponent, ComponentProps } from './component';
type CommitType = 'update' | 'create' | 'delete';
export declare abstract class BaseMesh<Props extends object, ApplicationContext, Renderer, Scene, Camera, Raycaster, Container extends DisplayObject, DisplayObject, Viewport, Point> extends PureComponent<Props> {
    /** 当前组件的视图对象 */
    protected view: DisplayObject;
    /** 视图对象的类型（有相机、灯光、模型三类，默认为 model） */
    protected viewType: 'camera' | 'light' | 'model';
    /** 响应式的渲染任务管线 */
    protected reactivePipeLine: Array<() => void>;
    /** 是否默认添加到场景中。默认：true */
    protected autoAppendToWorld: boolean;
    private reactions;
    private interactiveTask;
    constructor(props?: ComponentProps<Props>);
    commit(type: CommitType, updateRange?: {
        interactive: boolean;
        customProps: boolean;
    }): void;
    abstract createDefaultView(): DisplayObject;
    /**
     * 提供接口用以给子组件添加 view
     */
    abstract addChildView(view: DisplayObject): void;
    /**
     * 绘制图形图像，默认在 componentDidMount 时调用
     */
    protected draw(): void;
    /**
     * 设置当前 cursor 状态
     *
     * @param cursor
     */
    protected updateCursor(cursor: string): void;
    /**
     * 恢复默认 cursor 状态
     */
    protected resetCursor(): void;
    /**
     * 标记当前对象是否可点击
     */
    protected onClickable(): boolean;
    /**
     * 标记当前对象是否可 Hover
     */
    protected onHoverable(): boolean;
    /**
     * 标记当前对象是否可拖拽
     */
    protected onDraggable(): boolean;
    protected onPinchable(): boolean;
    protected onRotatable(): boolean;
    protected onPressable(): boolean;
    protected get interactiveConfig(): InteractiveConfig;
    protected onClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onDBClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onRightClick(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onDragStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onDragMove(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onDragEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onPinchStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onPinch(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onPinchEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onRotateStart(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onRotate(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onRotateEnd(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onPress(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onPressUp(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onHoverIn(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected onHoverOut(viewEntity: Partial<ViewEntity>, event: SceneEvent, tools: SceneTool): void;
    protected getViewEntity(): Partial<ViewEntity>;
    private _on$Click;
    private _on$DBClick;
    private _on$RightClick;
    private _on$DragStart;
    private _on$DragMove;
    private _on$DragEnd;
    private _on$PinchStart;
    private _on$Pinch;
    private _on$PinchEnd;
    private _on$RotateStart;
    private _on$Rotate;
    private _on$RotateEnd;
    private _on$Press;
    private _on$PressUp;
    private _on$HoverIn;
    private _on$HoverOut;
    /** 转发事件给CommandManager */
    private forwardToCommand;
    /**
     * 将当前视图对象添加到视图中
     */
    private appendToWorld;
    /** 往场景中添加对象 */
    abstract addViewToScene(scene: BaseScene<ApplicationContext, Renderer, Scene, Camera, Raycaster, Container, DisplayObject, Viewport>, view: DisplayObject): void;
    /**
     * 清除当前视图
     */
    abstract clearView(): void;
    /**
     * 从世界中移除当前对象
     */
    abstract removeFromWorld(): void;
    /** 设置视图是否可交互 */
    abstract setViewInteractive(interactive: boolean): void;
    /**
     * 激活视图对象的交互状态，并更新交互配置
     */
    private applyInteractive;
}
export {};
