import { Object3D } from 'three';
import { TypedNode } from '../_Base';
import { NodeContext } from '../../poly/NodeContext';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { Group } from 'three';
import { ObjChildrenDisplayController } from './utils/ObjChildrenDisplayController';
import { TransformController } from './utils/TransformController';
import { HierarchyController } from './utils/HierarchyController';
export declare enum ObjNodeRenderOrder {
    MANAGER = 0,
    CAMERA = 2,
    LIGHT = 3
}
/**
 *
 *
 * TypedObjNode is the base class for all nodes that process objects and hierarchies. This inherits from [TypedNode](/docs/api/TypedNode).
 *
 */
export declare class TypedObjNode<O extends Object3D, K extends NodeParamsConfig> extends TypedNode<NodeContext.OBJ, K> {
    static context(): NodeContext;
    readonly renderOrder: number;
    readonly transformController: TransformController | undefined;
    readonly hierarchyController: HierarchyController | undefined;
    protected _children_group: Group<import("three").Object3DEventMap>;
    protected _object: O;
    private _create_children_group;
    protected _attachableToHierarchy: boolean;
    attachableToHierarchy(): boolean;
    protected _usedInScene: boolean;
    usedInScene(): boolean;
    addObjectToParent(parent: Object3D): void;
    removeObjectFromParent(): void;
    readonly childrenDisplayController: ObjChildrenDisplayController | undefined;
    dispose(): void;
    initializeBaseNode(): void;
    childrenGroup(): Group<import("three").Object3DEventMap>;
    get object(): O;
    _create_object_with_attributes(): O;
    protected set_object_name(): void;
    createObject(): Object3D;
    isDisplayNodeCooking(): boolean;
    isDisplayed(): boolean;
}
export type BaseObjNodeType = TypedObjNode<Object3D, any>;
export declare class BaseObjNodeClass extends TypedObjNode<Object3D, any> {
}
