import { Point3d } from "@lincode/math";
import { Object3D } from "three";
import { Cancellable } from "@lincode/promiselikes";
import { LingoMouseEvent } from "../../../interface/IMouse";
import EventLoopItem from "../../../api/core/EventLoopItem";
import IStaticObjectManager from "../../../interface/IStaticObjectManaget";
import MeshItem from "../MeshItem";
import "./raycast";
export declare const idMap: Map<string, Set<StaticObjectManager<Object3D<import("three").Event>>>>;
export default class StaticObjectManager<T extends Object3D = Object3D> extends EventLoopItem<T> implements IStaticObjectManager {
    dispose(): this;
    protected _id?: string;
    get id(): string | undefined;
    set id(val: string | undefined);
    protected addToRaycastSet(set: Set<Object3D>): Cancellable;
    private _onClick?;
    get onClick(): ((e: LingoMouseEvent) => void) | undefined;
    set onClick(cb: ((e: LingoMouseEvent) => void) | undefined);
    private _onMouseDown?;
    get onMouseDown(): ((e: LingoMouseEvent) => void) | undefined;
    set onMouseDown(cb: ((e: LingoMouseEvent) => void) | undefined);
    private _onMouseUp?;
    get onMouseUp(): ((e: LingoMouseEvent) => void) | undefined;
    set onMouseUp(cb: ((e: LingoMouseEvent) => void) | undefined);
    private _onMouseOver?;
    get onMouseOver(): ((e: LingoMouseEvent) => void) | undefined;
    set onMouseOver(cb: ((e: LingoMouseEvent) => void) | undefined);
    private _onMouseOut?;
    get onMouseOut(): ((e: LingoMouseEvent) => void) | undefined;
    set onMouseOut(cb: ((e: LingoMouseEvent) => void) | undefined);
    private _onMouseMove?;
    get onMouseMove(): ((e: LingoMouseEvent) => void) | undefined;
    set onMouseMove(cb: ((e: LingoMouseEvent) => void) | undefined);
    get name(): string;
    set name(val: string);
    protected getRay(): import("three").Ray;
    pointAt(distance: number): Point3d;
    rayIntersectsAt(target: StaticObjectManager, maxDistance?: number): Point3d | undefined;
    rayIntersects(target: StaticObjectManager): boolean;
    intersects(target: StaticObjectManager): boolean;
    get clientX(): number;
    get clientY(): number;
    get bloom(): boolean;
    set bloom(val: boolean);
    get outline(): boolean;
    set outline(val: boolean);
    private _visible?;
    get visible(): boolean;
    set visible(val: boolean);
    get frustumCulled(): boolean;
    set frustumCulled(val: boolean);
    protected _castShadow?: boolean;
    get castShadow(): boolean;
    set castShadow(val: boolean);
    protected _receiveShadow?: boolean;
    get receiveShadow(): boolean;
    set receiveShadow(val: boolean);
    protected refreshFactors(): void;
    private _metalnessFactor?;
    get metalnessFactor(): number | undefined;
    set metalnessFactor(val: number | undefined);
    private _roughnessFactor?;
    get roughnessFactor(): number | undefined;
    set roughnessFactor(val: number | undefined);
    private _opacityFactor?;
    get opacityFactor(): number | undefined;
    set opacityFactor(val: number | undefined);
    private _envFactor?;
    get envFactor(): number | undefined;
    set envFactor(val: number | undefined);
    private _adjustColor?;
    get adjustColor(): string | undefined;
    set adjustColor(val: string | undefined);
    private _reflection?;
    get reflection(): boolean;
    set reflection(val: boolean);
    private _illumination?;
    get illumination(): boolean;
    set illumination(val: boolean);
    private _toon?;
    get toon(): boolean;
    set toon(val: boolean);
    get frustumVisible(): boolean;
    lookAt(target: MeshItem | Point3d): void;
    lookAt(x: number, y: number | undefined, z: number): void;
    onLookToEnd: (() => void) | undefined;
    lookTo(target: MeshItem | Point3d, alpha: number): void;
    lookTo(x: number, y: number | undefined, z: number, alpha: number): void;
    getWorldPosition(): Point3d;
}
