import { Object3D, Vector3, Quaternion, Matrix4, Material, Euler } from 'three';
import { Ref } from '@vue/reactivity';
export declare enum GetObjectPropertyJsNodeInputName {
    position = "position",
    rotation = "rotation",
    quaternion = "quaternion",
    scale = "scale",
    matrix = "matrix",
    visible = "visible",
    castShadow = "castShadow",
    receiveShadow = "receiveShadow",
    frustumCulled = "frustumCulled",
    up = "up",
    matrixAutoUpdate = "matrixAutoUpdate",
    material = "material"
}
export declare const OBJECT_VECTOR3_PROPERTIES: GetObjectPropertyJsNodeInputName[];
export declare const OBJECT_BOOLEAN_PROPERTIES: GetObjectPropertyJsNodeInputName[];
export declare const OBJECT_TRANSFORM_PROPERTIES: GetObjectPropertyJsNodeInputName[];
export interface PropertyType {
    position: Vector3;
    rotation: Euler;
    quaternion: Quaternion;
    scale: Vector3;
    matrix: Matrix4;
    visible: boolean;
    castShadow: boolean;
    receiveShadow: boolean;
    frustumCulled: boolean;
    up: Vector3;
    matrixAutoUpdate: boolean;
    material: Material;
}
export declare function getObjectPropertyRef<K extends keyof PropertyType>(object3D: Object3D, propertyName: K): Ref<number>;
export declare function touchObjectProperties(object3D: Object3D, propertyNames: Array<keyof PropertyType>): void;
export declare function touchObjectProperty<K extends keyof PropertyType>(object3D: Object3D, propertyName: K): void;
