import * as lit from 'lit';
import { LitElement, TemplateResult } from 'lit';
import { DotLottie, DotLottieWorker, Config } from '@lottiefiles/dotlottie-web';

declare abstract class BaseDotLottieWC<T extends DotLottie | DotLottieWorker> extends LitElement {
    animationId?: string;
    src: Config['src'];
    data: Config['data'];
    loop: Config['loop'];
    autoplay: Config['autoplay'];
    speed: Config['speed'];
    segment: Config['segment'];
    mode: Config['mode'];
    marker: Config['marker'];
    backgroundColor: Config['backgroundColor'];
    renderConfig: Config['renderConfig'];
    useFrameInterpolation: Config['useFrameInterpolation'];
    themeId: Config['themeId'];
    workerId?: string;
    dotLottie: T | null;
    static styles: lit.CSSResult;
    constructor();
    private _init;
    connectedCallback(): void;
    /**
     * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks
     */
    adoptedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, old: string | null, value: string | null): void;
    protected abstract _createDotLottieInstance(config: Config & {
        workerId?: string;
    }): T;
    render(): TemplateResult;
}

export { BaseDotLottieWC };
