import { LitElement } from 'lit';

type Constructor<T = unknown> = new (...args: any[]) => T;

type CssPropValue = string | number | undefined | null;
declare const ImgConfig_base: typeof LitElement & Constructor<LitElement> & {
    reg(tagName: string): void;
} & Constructor<{
    getCssData(propName: string, silentCheck?: boolean): string | number | boolean | null | undefined;
}>;
declare class ImgConfig extends ImgConfig_base {
    private _state;
    private _subscribers;
    private _isnObserver;
    private _observed;
    createRenderRoot(): HTMLElement | ShadowRoot;
    constructor();
    protected $$(key: string): unknown;
    protected set$$(kvObj: Record<string, CssPropValue>): void;
    protected sub$$<T = unknown>(key: string, kbFn: (val: T) => void): void;
    private _notify;
    protected analyticsParams(): string;
    protected initAttributes(el: HTMLElement): void;
    protected initIntersection(el: HTMLElement, cbkFn: () => void): void;
    connectedCallback(): void;
    private _initCssProperties;
    disconnectedCallback(): void;
    static get observedAttributes(): string[];
    attributeChangedCallback(name: string, _oldVal: string | null, newVal: string | null): void;
}

declare class ImgBase extends ImgConfig {
    private _img;
    private _imgPreview;
    private _fmtAbs;
    private _validateSize;
    private _getCdnModifiers;
    private _getTypedCssValue;
    private _getUrlBase;
    private _proxyUrl;
    protected _getElSize(el: HTMLElement, k?: number, wOnly?: boolean): string | null;
    private _setupEventProxy;
    protected get img(): HTMLImageElement;
    private get _currentImg();
    private get _hasPreviewImage();
    private get _bgSelector();
    private get _breakpoints();
    private get _hasFormatJPG();
    private _renderBg;
    private _getSrcset;
    private _getSrc;
    private get _srcUrlPreview();
    private _renderBackground;
    private _appendURL;
    private _setupConfigForImage;
    private _loaderImage;
    private _renderImage;
    protected init(): void;
}

declare class Img extends ImgBase {
    attributesMeta: {
        src: string;
    } | {
        uuid: string;
    };
    connectedCallback(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'uc-img': Img;
    }
}

export { Img };
