import { PolyScene } from '../scene/PolyScene';
import { CoreObjectType, ObjectContent } from '../../core/geometry/ObjectContent';
import { Object3D } from 'three';
interface HookHandler {
    graphNodeId(): number;
    updateObjectOnAdd(object: ObjectContent<CoreObjectType>, parent: ObjectContent<CoreObjectType>): void;
    updateObjectOnRemove(object: ObjectContent<CoreObjectType>, parent: ObjectContent<CoreObjectType>): void;
}
type ObjectOnAddRemoveCallback = (object: ObjectContent<CoreObjectType>) => void;
export declare function replaceChild(parent: Object3D, oldObject: Object3D, newObject: Object3D): void;
export declare function removeFromParent(scene: PolyScene, object: ObjectContent<CoreObjectType>): void;
export declare function addToParent(scene: PolyScene, parent: ObjectContent<CoreObjectType>, child: ObjectContent<CoreObjectType>): void;
export declare function copyBasicObjectProperties(srcObject: Object3D, destObject: Object3D): void;
export declare class PolyOnObjectsAddRemoveHooksController {
    assignOnAddHookHandler(object: ObjectContent<CoreObjectType>, node: HookHandler): void;
    assignOnRemoveHookHandler(object: ObjectContent<CoreObjectType>, node: HookHandler): void;
    assignOnAddHookCallback(object: ObjectContent<CoreObjectType>, callback: ObjectOnAddRemoveCallback): void;
    assignOnRemoveHookCallback(object: ObjectContent<CoreObjectType>, callback: ObjectOnAddRemoveCallback): void;
    runOnAddHooks(scene: PolyScene, parent: ObjectContent<CoreObjectType>): void;
    runOnRemoveHooks(scene: PolyScene, parent: ObjectContent<CoreObjectType>): void;
    runOnAddHookOnObject(scene: PolyScene, object: ObjectContent<CoreObjectType>): void;
    runOnRemoveHookOnObject(scene: PolyScene, object: ObjectContent<CoreObjectType>): void;
}
export {};
