import { Engine } from "../Engine";
/**
 * EngineObject.
 */
export declare class EngineObject {
    private static _instanceIdCounter;
    readonly instanceId: number;
    protected _destroyed: boolean;
    /**
     * Get the engine which the object belongs.
     */
    get engine(): Engine;
    /**
     * Whether this object is pending destruction.
     * @remarks `destroy()` has been called but the actual destruction is deferred until end of frame,
     * during this period all properties are still accessible.
     */
    get pendingDestroy(): boolean;
    /**
     * Whether it has been destroyed.
     */
    get destroyed(): boolean;
    constructor(engine: Engine);
    /**
     * Destroy self.
     */
    destroy(): void;
    protected _onDestroy(): void;
}
