import { IObject3D } from '../../../core';
import { UiObjectConfig } from 'uiconfig.js';
import { ComponentCtx, ComponentDefn, ComponentJSON } from './componentTypes';
import { ViewerEventMap } from '../../../viewer/ThreeViewer';
export type TObject3DComponent = typeof Object3DComponent;
export declare class Object3DComponent {
    ['constructor']: TObject3DComponent & ComponentDefn;
    static StateProperties: ComponentDefn['StateProperties'];
    static ComponentType: string;
    readonly isObject3DComponent = true;
    protected _object: IObject3D | null;
    get object(): IObject3D;
    set object(_: IObject3D);
    uuid: string;
    uiConfig?: UiObjectConfig;
    state: never;
    protected _state: ComponentJSON['state'];
    get stateRef(): Record<string, any>;
    setState(state: ComponentJSON['state']): this | undefined;
    ctx: ComponentCtx;
    constructor();
    start(): void;
    stop(): void;
    update(_e: ViewerEventMap['preFrame']): boolean | void;
    preFrame(_e: ViewerEventMap['preFrame']): boolean | void;
    init(object: IObject3D, state: ComponentJSON['state']): void;
    destroy(): Record<string, any>;
    stateChangeHandlers: Record<string, ((value: any, oldValue: any, key?: string) => void)[]>;
    onStateChange<K extends keyof this & string>(key: K, fn: (value: this[K], oldValue: this[K], key?: K) => void): void;
    /**
     * @internal
     */
    ['_sType']?: string;
    getComponent<T extends TObject3DComponent>(type: T | string, self?: boolean): InstanceType<T> | null;
}
//# sourceMappingURL=../../../src/plugins/extras/components/Object3DComponent.d.ts.map