import { CCMPEntity } from "../entity/CCMPEntity";
import { type IObject } from "../../common/object/IObject";
import { BaseObjectType } from "../../../../shared";
import { type IVector3D } from "../../../../shared/common/utils/math/Vectors";
import type { StreamSyncedMeta } from "@classic-mp/types/server";
export interface ICCMPObjectNative extends StreamSyncedMeta {
    id: number;
    isExists: boolean;
    position: {
        x: number;
        y: number;
        z: number;
    };
    rotation: {
        x: number;
        y: number;
        z: number;
    };
    model: number;
    dimension: number;
    alpha: number;
    destroy(): boolean;
}
export interface ICCMPObjectOptions {
    ccmpObject: ICCMPObjectNative;
    alpha: number;
    onDestroy: (object: CCMPObject) => void;
}
export declare class CCMPObject extends CCMPEntity implements IObject {
    private readonly _ccmpObject;
    private readonly _onDestroy;
    get id(): number;
    get type(): BaseObjectType;
    get isExists(): boolean;
    get position(): IVector3D;
    get dimension(): number;
    get model(): number;
    get rotation(): IVector3D;
    get alpha(): number;
    protected get ccmpMeta(): ICCMPObjectNative;
    constructor(options: ICCMPObjectOptions);
    destroy(): void;
    setPosition(value: IVector3D): void;
    setDimension(value: number): void;
    setModel(value: string): void;
    setRotation(value: IVector3D): void;
    setAlpha(value: number): void;
}
