import type { Client } from "../client";
import { Color4, type Quaternion, Vector3 } from "../network";
export interface EntityOptions {
    id: number;
    key: string;
    parent?: number;
    state?: number;
    owner?: string;
    type?: number;
    flags?: number;
    position?: Vector3;
    velocity?: Vector3;
    angularVelocity?: Vector3;
    acceleration?: Vector3;
    rotation?: Quaternion;
    scale?: Vector3;
    text?: {
        value: string;
        color: Color4;
    } | {
        value: Buffer;
        color: Buffer;
    };
    material?: number;
    tree?: number;
    action?: number;
    children?: Array<number>;
}
export declare class Entity {
    private readonly client;
    /**
     * Local ID for this Entity.
     */
    id: number;
    /**
     * UUID for this Entity.
     */
    key: string;
    /**
     * Entity parent, undefined if root.
     */
    parent?: number;
    /**
     * Entity state, which probably refers to an attachment point index for
     * it's parent ID.
     */
    state: number;
    /**
     * Owners UUID for this Entity.
     */
    owner: string;
    /**
     * Type (PCode) for this Entity, see `Constants.ObjectTypes` for context.
     */
    type: number;
    /**
     * Entity flags, see `Constants.ObjectFlags` for context.
     */
    flags: number;
    /**
     * Entity name.
     */
    name?: string;
    /**
     * Current position of Entity.
     */
    position?: Vector3;
    /**
     * Current velocity of Entity.
     */
    velocity?: Vector3;
    /**
     * Current acceleration of Entity.
     */
    acceleration?: Vector3;
    /**
     * Current angular velocity of Entity.
     */
    angularVelocity?: Vector3;
    /**
     * Current rotation of Entity.
     */
    rotation?: Quaternion;
    /**
     * Scale of Entity.
     */
    scale?: Vector3;
    /**
     * Floating text, object contains text and color values.
     */
    text?: {
        value: string;
        color?: Color4;
    };
    /**
     * Material type, see `Constants.ObjectMaterials` for context.
     */
    material: number;
    /**
     * Tree type, see `Constants.ObjectTrees` for context.
     */
    tree?: number;
    /**
     * Default click action, see `Constants.ObjectActions` for context.
     */
    action: number;
    /**
     * Local ID values of all children relating to this object.
     */
    children: Array<number>;
    /**
     * Whether this entity has been deleted.
     */
    dead: boolean;
    /**
     * @param client The Client that instantiated this Entity.
     * @internal
     */
    constructor(client: Client, data: EntityOptions | Entity);
    get distance(): number;
}
