import { IEventDetail, IEventEmitter } from '@breadstone/mosaik-elements';
import { CssAspectRatio, CssLength } from '@breadstone/mosaik-themes';
import { ImageFit } from '../../../Types/ImageFit';
import { ImageLegendPosition } from '../../../Types/ImageLegendPosition';
import type { ImageState } from '../../../Types/ImageState';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IImageElementProps } from './IImageElementProps';
declare const ImageElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Dimensionable").IDimensionableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Image - A visual representation of a picture, illustration, or graphic.
 *
 * @element mosaik-image
 *
 * @slot - The default content slot.
 * @slot empty - The empty state slot.
 * @slot failed - The empty state slot.
 * @slot pending - The empty state slot.
 * @slot legend - The legend slot.
 *
 * @csspart image - The image part.
 * @csspart placeholder - The placeholder part.
 * @csspart legend - The legend part.
 * @csspart content - The content part.
 *
 * @fires loaded - Fired when the element is loaded.
 * @fires failed - Fired when the element is failed.
 *
 * @public
 */
export declare class ImageElement extends ImageElement_base implements IImageElementProps {
    private readonly _loaded;
    private readonly _failed;
    private _alt;
    private _src;
    private _srcset;
    private _state;
    private _fit;
    private _showFailed;
    private _showEmpty;
    private _showPending;
    private _legend;
    private _legendPosition;
    private _ratio;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `alt` property.
     *
     * @public
     * @attr
     */
    get alt(): string;
    set alt(value: string);
    /**
     * Gets or sets the `src` property.
     *
     * @public
     * @attr
     */
    get src(): string;
    set src(value: string);
    /**
     * Gets or sets the `srcset` property.
     *
     * @public
     * @attr
     */
    get srcset(): string;
    set srcset(value: string);
    /**
     * Gets or sets the `showFailed` property.
     *
     * @public
     */
    get showFailed(): boolean;
    set showFailed(value: boolean);
    /**
     * Gets or sets the `showEmpty` property.
     *
     * @public
     */
    get showEmpty(): boolean;
    set showEmpty(value: boolean);
    /**
     * Gets or sets the `showEmpty` property.
     *
     * @public
     */
    get showPending(): boolean;
    set showPending(value: boolean);
    /**
     * Gets or sets the `fit` property.
     *
     * @public
     * @attr
     */
    get fit(): ImageFit;
    set fit(value: ImageFit);
    /**
     * Gets or sets the `legend` property.
     *
     * @public
     * @attr
     */
    get legend(): string;
    set legend(value: string);
    /**
     * Gets or sets the `legendPosition` property.
     *
     * @public
     * @attr
     */
    get legendPosition(): ImageLegendPosition;
    set legendPosition(value: ImageLegendPosition);
    /**
      * Returns the `state` property.
      *
      * @public
      * @readonly
      */
    get state(): ImageState;
    private set state(value);
    /**
     * Gets or sets the `ratio` property.
     *
     * @public
     * @attr
     */
    get ratio(): CssAspectRatio;
    set ratio(value: CssAspectRatio);
    /**
     * Called when the image is loaded.
     * Provides reference to `IEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get loaded(): IEventEmitter<IEventDetail<this>>;
    /**
     * Called when the image load is failed.
     * Provides reference to `IEventDetail<ThisParameterType>` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get failed(): IEventEmitter<IEventDetail<this>>;
    /**
     * @protected
     */
    protected onWidthPropertyChanged(_prev?: CssLength, next?: CssLength): void;
    /**
     * @protected
     */
    protected onHeightPropertyChanged(_prev?: CssLength, next?: CssLength): void;
    /**
     * @protected
     */
    protected onRatioPropertyChanged(_prev?: CssAspectRatio, next?: CssAspectRatio): void;
    /**
     * @template
     * @protected
     */
    onImageError(): void;
    /**
     * @template
     * @protected
     */
    onImageLoad(): void;
}
/**
* @public
*/
export declare namespace ImageElement {
    type Props = IImageElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-image': ImageElement;
    }
    interface HTMLElementEventMap {
        loaded: CustomEvent<IEventDetail>;
        failed: CustomEvent<IEventDetail>;
    }
}
export {};
//# sourceMappingURL=ImageElement.d.ts.map