import { Event, Mesh, Vector3 } from 'three';
import { IMaterial } from '../IMaterial';
import { IObject3D, IObject3DEvent, IObjectProcessor, IObjectSetDirtyOptions } from '../IObject';
import { IGeometry, IGeometryEvent } from '../IGeometry';
import { makeIObject3DUiConfig } from './IObjectUi';
export declare const iObjectCommons: {
    setDirty: (this: IObject3D, options?: IObjectSetDirtyOptions) => void;
    upgradeObject3D: typeof upgradeObject3D;
    makeUiConfig: typeof makeIObject3DUiConfig;
    autoCenter: <T extends IObject3D>(this: T, setDirty?: boolean, undo?: boolean) => T;
    autoScale: <T extends IObject3D>(this: T, autoScaleRadius?: number, isCentered?: boolean, setDirty?: boolean, undo?: boolean) => T;
    pivotToBoundsCenter: <T extends IObject3D>(this: T, setDirty?: boolean) => () => void;
    pivotToPoint: <T extends IObject3D>(this: T, point: Vector3, setDirty?: boolean) => () => void;
    eventCallbacks: {
        onAddedToParent: (this: IObject3D, e: Event) => void;
        onRemovedFromParent: (this: IObject3D, e: Event) => void;
        onGeometryUpdate: (this: IObject3D, e: IGeometryEvent<"geometryUpdate">) => void;
    };
    initMaterial: (this: IObject3D) => void;
    getMaterial: (this: IObject3D) => IMaterial | IMaterial[] | undefined;
    getMaterials: (this: IObject3D) => IMaterial[];
    setMaterial: (this: IObject3D, material: IMaterial | IMaterial[] | undefined) => never[] | undefined;
    setMaterials: (this: IObject3D, materials: IMaterial[]) => void;
    initGeometry: (this: IObject3D) => void;
    getGeometry: (this: IObject3D & Mesh) => IGeometry | undefined;
    setGeometry: (this: IObject3D & Mesh, geometry: IGeometry | undefined) => void;
    refreshUi: (this: IObject3D) => void;
    dispatchEvent: (superDispatch: IObject3D["dispatchEvent"]) => (this: IObject3D, event: IObject3DEvent) => void;
    clone: (superClone: IObject3D["clone"]) => IObject3D["clone"];
    copy: (superCopy: IObject3D["copy"]) => IObject3D["copy"];
    add: (superAdd: IObject3D["add"]) => IObject3D["add"];
    dispose: (superDispose?: IObject3D["dispose"]) => (this: IObject3D, removeFromParent?: boolean) => void;
};
/**
 * Converts three.js Object3D to IObject3D, setup object events, adds utility methods, and runs objectProcessor.
 * @param parent
 * @param objectProcessor
 */
declare function upgradeObject3D(this: IObject3D, parent?: IObject3D | undefined, objectProcessor?: IObjectProcessor): void;
export {};
//# sourceMappingURL=iObjectCommons.d.ts.map