import { type Scene, type IDisposable } from "../scene.js";
import { PerfCounter } from "../Misc/perfCounter.js";
/**
 * This class can be used to get instrumentation data from a Babylon engine
 * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#sceneinstrumentation
 */
export declare class SceneInstrumentation implements IDisposable {
    /**
     * Defines the scene to instrument
     */
    scene: Scene;
    private _captureActiveMeshesEvaluationTime;
    private _activeMeshesEvaluationTime;
    private _captureRenderTargetsRenderTime;
    private _renderTargetsRenderTime;
    private _captureFrameTime;
    private _frameTime;
    private _captureRenderTime;
    private _renderTime;
    private _captureInterFrameTime;
    private _interFrameTime;
    private _captureParticlesRenderTime;
    private _particlesRenderTime;
    private _captureSpritesRenderTime;
    private _spritesRenderTime;
    private _capturePhysicsTime;
    private _physicsTime;
    private _captureAnimationsTime;
    private _animationsTime;
    private _captureCameraRenderTime;
    private _cameraRenderTime;
    private _onBeforeActiveMeshesEvaluationObserver;
    private _onAfterActiveMeshesEvaluationObserver;
    private _onBeforeRenderTargetsRenderObserver;
    private _onAfterRenderTargetsRenderObserver;
    private _onAfterRenderObserver;
    private _onBeforeDrawPhaseObserver;
    private _onAfterDrawPhaseObserver;
    private _onBeforeAnimationsObserver;
    private _onBeforeParticlesRenderingObserver;
    private _onAfterParticlesRenderingObserver;
    private _onBeforeSpritesRenderingObserver;
    private _onAfterSpritesRenderingObserver;
    private _onBeforePhysicsObserver;
    private _onAfterPhysicsObserver;
    private _onAfterAnimationsObserver;
    private _onBeforeCameraRenderObserver;
    private _onAfterCameraRenderObserver;
    private _disposed;
    /**
     * Gets the perf counter used for active meshes evaluation time
     */
    get activeMeshesEvaluationTimeCounter(): PerfCounter;
    /**
     * Gets the active meshes evaluation time capture status
     */
    get captureActiveMeshesEvaluationTime(): boolean;
    /**
     * Enable or disable the active meshes evaluation time capture
     */
    set captureActiveMeshesEvaluationTime(value: boolean);
    /**
     * Gets the perf counter used for render targets render time
     */
    get renderTargetsRenderTimeCounter(): PerfCounter;
    /**
     * Gets the render targets render time capture status
     */
    get captureRenderTargetsRenderTime(): boolean;
    /**
     * Enable or disable the render targets render time capture
     */
    set captureRenderTargetsRenderTime(value: boolean);
    /**
     * Gets the perf counter used for particles render time
     */
    get particlesRenderTimeCounter(): PerfCounter;
    /**
     * Gets the particles render time capture status
     */
    get captureParticlesRenderTime(): boolean;
    /**
     * Enable or disable the particles render time capture
     */
    set captureParticlesRenderTime(value: boolean);
    /**
     * Gets the perf counter used for sprites render time
     */
    get spritesRenderTimeCounter(): PerfCounter;
    /**
     * Gets the sprites render time capture status
     */
    get captureSpritesRenderTime(): boolean;
    /**
     * Enable or disable the sprites render time capture
     */
    set captureSpritesRenderTime(value: boolean);
    /**
     * Gets the perf counter used for physics time
     */
    get physicsTimeCounter(): PerfCounter;
    /**
     * Gets the physics time capture status
     */
    get capturePhysicsTime(): boolean;
    /**
     * Enable or disable the physics time capture
     */
    set capturePhysicsTime(value: boolean);
    /**
     * Gets the perf counter used for animations time
     */
    get animationsTimeCounter(): PerfCounter;
    /**
     * Gets the animations time capture status
     */
    get captureAnimationsTime(): boolean;
    /**
     * Enable or disable the animations time capture
     */
    set captureAnimationsTime(value: boolean);
    /**
     * Gets the perf counter used for frame time capture
     */
    get frameTimeCounter(): PerfCounter;
    /**
     * Gets the frame time capture status
     */
    get captureFrameTime(): boolean;
    /**
     * Enable or disable the frame time capture
     */
    set captureFrameTime(value: boolean);
    /**
     * Gets the perf counter used for inter-frames time capture
     */
    get interFrameTimeCounter(): PerfCounter;
    /**
     * Gets the inter-frames time capture status
     */
    get captureInterFrameTime(): boolean;
    /**
     * Enable or disable the inter-frames time capture
     */
    set captureInterFrameTime(value: boolean);
    /**
     * Gets the perf counter used for render time capture
     */
    get renderTimeCounter(): PerfCounter;
    /**
     * Gets the render time capture status
     */
    get captureRenderTime(): boolean;
    /**
     * Enable or disable the render time capture
     */
    set captureRenderTime(value: boolean);
    /**
     * Gets the perf counter used for camera render time capture
     */
    get cameraRenderTimeCounter(): PerfCounter;
    /**
     * Gets the camera render time capture status
     */
    get captureCameraRenderTime(): boolean;
    /**
     * Enable or disable the camera render time capture
     */
    set captureCameraRenderTime(value: boolean);
    /**
     * Gets the perf counter used for draw calls
     */
    get drawCallsCounter(): PerfCounter;
    /**
     * Instantiates a new scene instrumentation.
     * This class can be used to get instrumentation data from a Babylon engine
     * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#sceneinstrumentation
     * @param scene Defines the scene to instrument
     */
    constructor(
    /**
     * Defines the scene to instrument
     */
    scene: Scene);
    private _removeRenderTargetsObservers;
    private _removeRenderTimeObservers;
    /**
     * Dispose and release associated resources.
     */
    dispose(): void;
}
