import { EventEmitter } from '@angular/core'; import * as THREE from 'three'; import { Ref } from '../ref'; import type { BooleanInput, NgtColor, NgtEuler, NgtEvent, NgtQuaternion, NgtRenderState, NgtTriple, NgtVector3, NumberInput, UnknownRecord } from '../types'; import { NgtInstance, NgtInstanceState } from './instance'; import * as i0 from "@angular/core"; export declare type NgtPreObjectInit = ((initFn: () => void) => void) | undefined; export interface NgtObjectPropsState extends NgtInstanceState { name: string; nameExplicit?: boolean; position: THREE.Vector3; positionExplicit?: boolean; rotation: THREE.Euler; rotationExplicit?: boolean; quaternion: THREE.Quaternion; quaternionExplicit?: boolean; scale: THREE.Vector3; scaleExplicit?: boolean; color: THREE.Color; colorExplicit?: boolean; castShadow: boolean; castShadowExplicit?: boolean; receiveShadow: boolean; receiveShadowExplicit?: boolean; priority: number; priorityExplicit?: boolean; visible: boolean; visibleExplicit?: boolean; matrixAutoUpdate: boolean; matrixAutoUpdateExplicit?: boolean; appendMode: 'immediate' | 'root' | 'none'; appendModeExplicit?: boolean; userData?: UnknownRecord; userDataExplicit?: boolean; dispose?: (() => void) | null; disposeExplicit?: boolean; raycast?: THREE.Object3D['raycast'] | null; raycastExplicit?: boolean; appendTo?: Ref; appendToExplicit?: boolean; } export declare abstract class NgtObjectProps = NgtObjectPropsState> extends NgtInstance { set name(name: string); get name(): string; set position(position: NgtVector3 | undefined); get position(): THREE.Vector3; get rotation(): NgtEuler | NgtTriple | undefined; set rotation(rotation: NgtEuler | NgtTriple | undefined); get quaternion(): NgtQuaternion | undefined; set quaternion(quaternion: NgtQuaternion | undefined); get scale(): NgtVector3 | undefined; set scale(scale: NgtVector3 | undefined); get color(): NgtColor | undefined; set color(color: NgtColor | undefined); get castShadow(): BooleanInput; set castShadow(value: BooleanInput); get receiveShadow(): BooleanInput; set receiveShadow(value: BooleanInput); get priority(): NumberInput; set priority(priority: NumberInput); get visible(): BooleanInput; set visible(visible: BooleanInput); get matrixAutoUpdate(): BooleanInput; set matrixAutoUpdate(matrixAutoUpdate: BooleanInput); get userData(): UnknownRecord | undefined; set userData(userData: UnknownRecord | undefined); get dispose(): (() => void) | null | undefined; set dispose(dispose: (() => void) | null | undefined); get raycast(): THREE.Object3D['raycast'] | null | undefined; set raycast(raycast: THREE.Object3D['raycast'] | null | undefined); get appendMode(): 'immediate' | 'root' | 'none'; set appendMode(appendMode: 'immediate' | 'root' | 'none'); get appendTo(): Ref | THREE.Object3D | undefined; set appendTo(appendTo: Ref | THREE.Object3D | undefined); click: EventEmitter>; contextmenu: EventEmitter>; dblclick: EventEmitter>; pointerup: EventEmitter>; pointerdown: EventEmitter>; pointerover: EventEmitter>; pointerout: EventEmitter>; pointerenter: EventEmitter>; pointerleave: EventEmitter>; pointermove: EventEmitter>; pointermissed: EventEmitter>; pointercancel: EventEmitter>; wheel: EventEmitter>; shouldPassThroughRef: boolean; protected get optionFields(): Record; protected parentRef: import("../types").AnyFunction>; protected parentHostRef: import("../types").AnyFunction>; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵdir: i0.ɵɵDirectiveDeclaration, never, never, { "name": "name"; "position": "position"; "rotation": "rotation"; "quaternion": "quaternion"; "scale": "scale"; "color": "color"; "castShadow": "castShadow"; "receiveShadow": "receiveShadow"; "priority": "priority"; "visible": "visible"; "matrixAutoUpdate": "matrixAutoUpdate"; "userData": "userData"; "dispose": "dispose"; "raycast": "raycast"; "appendMode": "appendMode"; "appendTo": "appendTo"; }, { "click": "click"; "contextmenu": "contextmenu"; "dblclick": "dblclick"; "pointerup": "pointerup"; "pointerdown": "pointerdown"; "pointerover": "pointerover"; "pointerout": "pointerout"; "pointerenter": "pointerenter"; "pointerleave": "pointerleave"; "pointermove": "pointermove"; "pointermissed": "pointermissed"; "pointercancel": "pointercancel"; "wheel": "wheel"; }, never, never, false>; } export declare abstract class NgtObject = NgtObjectPropsState> extends NgtObjectProps { appended: EventEmitter; beforeRender: EventEmitter<{ state: NgtRenderState; object: TObject; }>; /** * @deprecated Use {@link beforeRender} instead */ animateReady: EventEmitter<{ state: NgtRenderState; object: TObject; }>; protected abstract objectInitFn(): TObject; ngOnInit(): void; /** * Sub-classes can use this function to add additional logic BEFORE * initializing the object3d. The actual `initFn` is passed in so * the implementor needs to call this initFn() manually. * * This function is also called outside of Angular Zone * @protected */ protected get preObjectInit(): NgtPreObjectInit; private readonly init; protected destroy(): void; private appendToParent; private addToScene; private addToParent; private shouldUseParent; private remove; private switch; private eventNameToHandler; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵdir: i0.ɵɵDirectiveDeclaration, never, never, {}, { "appended": "appended"; "beforeRender": "beforeRender"; "animateReady": "animateReady"; }, never, never, false>; } export declare const provideNgtObject: (sub: import("../types").AnyCtor) => any[];