import type { CSSResult, PropertyValues } from 'lit';
import { AnimationItem } from 'lottie-web/build/player/lottie_light';
import { Component } from '../../models';
import type { AnimationNames, LoopType } from './animation.types';
/**
 * The `mdc-animation` component is a wrapper around the Lottie animation library.
 * It fetches the animation data dynamically based on the provided name and renders it.
 * This is a display only component that does not have any interactive functionality.
 * From accessibility perspective, (by default) it is a decorative image component.
 *
 * @tagname mdc-animation
 *
 * @event load - (React: onLoad) This event is dispatched when the animation is loaded
 * @event complete - (React: onComplete) This event is dispatched when all animation loops completed
 * @event error - (React: onError) This event is dispatched when animation loading failed
 */
declare class Animation extends Component {
    /**
     * Name of the animation (= filename)
     * @default undefined
     */
    name?: AnimationNames;
    /**
     * URL pointing to a Lottie JSON animation file.
     * When provided, it takes precedence over the `name` property.
     * @default undefined
     */
    src?: string;
    /**
     * How many times to loop the animation
     * - "true" - infinite
     * - "false" - no loop
     * - number - number of times to loop
     * @default 'true'
     */
    loop?: LoopType;
    /**
     * Weather start the animation automatically
     * @default true
     */
    autoplay?: boolean;
    /**
     * Aria-label attribute to be set for accessibility
     * @default null
     */
    ariaLabel: string | null;
    /**
     * Aria-labelledby attribute to be set for accessibility
     * @default null
     */
    ariaLabelledby: string | null;
    /**
     * Lottie animation instance
     * @internal
     */
    private lottieInstance?;
    /**
     * Cached animation data from the last successful fetch/import
     * @internal
     */
    private cachedAnimationData?;
    /**
     * Container for the animation
     * @internal
     */
    private containerRef;
    /**
     * Exposed API of the animation library (lottie)
     * @internal
     */
    get animation(): AnimationItem | undefined;
    private getLoopValue;
    /**
     * Create new lottie instance for the loaded data
     */
    private onLoadSuccessHandler;
    /**
     * Create or re-create the lottie instance with the given animation data
     */
    private createLottieInstance;
    /**
     * Error handler for animation loading
     */
    private onLoadFailHandler;
    /**
     * Import animation data dynamically
     */
    private getAnimationData;
    /**
     * Fetch animation data from a URL
     */
    private fetchAnimationFromUrl;
    updated(changedProperties: PropertyValues): void;
    disconnectedCallback(): void;
    /**
     * Re-dispatch the complete event from the animation library
     *
     * This handler called with the animation instance instead of the component instance
     * so we need to bind it to the component instance. The arrow function just does that.
     * @internal
     */
    private onCompleteHandler;
    render(): import("lit-html").TemplateResult<1>;
    static styles: Array<CSSResult>;
}
export default Animation;
