import * as Core from "@intelligentgraphics/ig.gfx.core";
import { Session } from "@intelligentgraphics/igd.productdata";
import { EventEmitter } from "@intelligentgraphics/ig.utilities";
import { PlannerManager } from "../Manager";
export declare type AnimationStatus = "paused" | "running" | "start" | "end" | "stopped";
export declare type AnimationDirection = "forwards" | "backwards";
export declare type AnimationPosition = "start" | "end";
export interface AnimationManagerPlaybackControl extends Core.Animation.PlaybackControl {
}
export interface AnimationManagerEvents {
    statusChange: {
        comIds: string[];
        status: AnimationStatus;
    };
}
export interface AnimationManager extends Pick<EventEmitter<AnimationManagerEvents>, "on" | "once" | "off"> {
    getPosition(comIds: string[]): "start" | "end" | "mixed";
    setPosition(comIds: string[], position: "start" | "end"): void;
    showAnimation(comIds: string[], params: Core.Animation.AnimationParams, options?: Core.Animation.AnimatorOptions): void;
    /**
     * Show an animation starting from the current position of the components. Defaults to from start for differences in animation statuses
     *
     * @param {string[]} comIds
     * @param {boolean} [invertAnimationAfter]
     * @param {Core.Animation.AnimatorOptions} [options]
     */
    showAnimationFromCurrentPosition(comIds: string[], invertAnimationAfter?: boolean, options?: Core.Animation.AnimatorOptions): void;
    pauseAnimation(comIds: string[]): void;
    continueAnimation(comIds: string[]): void;
    stopAnimation(comIds: string[]): void;
    canAnimate(comIds: string[]): boolean;
    getPlaybackControls(comIds: string[]): Set<AnimationManagerPlaybackControl>;
}
export interface AnimationManagerOptions {
    continueAnimationsAfterUpdate: boolean;
    reapplyAnimationProgressAfterUpdate: boolean;
}
export declare const createAnimationManager: (session: Session<import("@intelligentgraphics/igd.productdata").ApplicationStateValue, import("@intelligentgraphics/igd.productdata").NotificationPayloads<import("@intelligentgraphics/igd.productdata").ApplicationStateValue>>, plannerManager: PlannerManager, { continueAnimationsAfterUpdate, reapplyAnimationProgressAfterUpdate, }?: Partial<AnimationManagerOptions>) => AnimationManager;
