import type { Behavior } from "../behavior.js";
import { EasingFunction } from "../../Animations/easing.js";
import type { Camera } from "../../Cameras/camera.js";
/**
 * Animate camera property changes with an interpolation effect
 * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors
 */
export declare class InterpolatingBehavior<C extends Camera = Camera> implements Behavior<C> {
    /**
     * Gets the name of the behavior.
     */
    get name(): string;
    /**
     * The easing function to use for interpolation
     */
    easingFunction: EasingFunction;
    /**
     * The easing mode (default is EASINGMODE_EASEINOUT)
     */
    easingMode: number;
    /**
     * Duration of the animation in milliseconds
     */
    transitionDuration: number;
    private _attachedCamera;
    private _animatables;
    private _promiseResolve?;
    /**
     * Initializes the behavior
     */
    constructor();
    /**
     * Initializes the behavior
     */
    init(): void;
    /**
     * Attaches the behavior to a camera
     * @param camera The camera to attach to
     */
    attach(camera: C): void;
    /**
     * Detaches the behavior from the camera
     */
    detach(): void;
    get isInterpolating(): boolean;
    /**
     * Stops and removes all animations
     */
    stopAllAnimations(): void;
    updateProperties(properties: Map<string, any>): void;
    animatePropertiesAsync(properties: Map<string, any>, transitionDuration?: number, easingFn?: EasingFunction): Promise<void>;
}
