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 responsive image container with advanced loading states and layout control.
 *
 * Provides comprehensive image handling with loading indicators, error states, aspect ratio control,
 * and flexible content placement. Supports various fit modes, lazy loading, and accessibility features.
 * Includes built-in placeholder states and legend positioning for rich media presentation.
 *
 * @name ImageElement
 * @element mosaik-image
 * @category Media
 *
 * @slot - Default content overlaid on the image
 * @slot empty - Content shown when no image source is provided
 * @slot failed - Content displayed when image loading fails
 * @slot pending - Content shown while image is loading
 * @slot legend - Caption or description content positioned around the image
 *
 * @csspart image - The main image element container
 * @csspart thumbnail - Blurred low-resolution placeholder image displayed during loading
 * @csspart placeholder - Container for loading, error, and empty states
 * @csspart legend - Caption or description container
 * @csspart content - Overlay content container
 *
 * @cssprop {String} --image-aspect-ratio - Aspect ratio constraint for the image container
 * @cssprop {String} --image-object-fit - How the image fits within its container (cover, contain, fill, etc.)
 * @cssprop {String} --image-border-radius - Border radius applied to the image
 * @cssprop {Color} --image-placeholder-color - Background color for placeholder states
 * @cssprop {String} --image-legend-position - Position of the legend relative to image
 * @cssprop {String} --image-thumbnail-blur - Blur radius applied to the thumbnail placeholder
 *
 * @dependency TextElement - For legend text rendering
 * @dependency ProgressRingElement - For loading state indicator
 * @dependency IconElement - For error and empty state icons
 *
 * @example
 * ```html
 * <!-- Basic image -->
 * <mosaik-image src="photo.jpg" alt="Landscape photo"></mosaik-image>
 *
 * <!-- Image with ratio and fit mode -->
 * <mosaik-image
 *   src="portrait.jpg"
 *   ratio="4/3"
 *   fit="cover"
 *   alt="Portrait photo">
 * </mosaik-image>
 *
 * <!-- Image with legend and thumbnail placeholder -->
 * <mosaik-image
 *   src="high-res.jpg"
 *   thumbnail-src="low-res-thumb.jpg"
 *   legend-position="bottom">
 *   <span slot="legend">Photo caption</span>
 * </mosaik-image>
 * ```
 *
 * @fires imageLoaded {ImageLoadedEvent} - Emitted when image successfully loads
 * @fires imageFailed {ImageFailedEvent} - Emitted when image loading fails
 *
 * @public
 */
export declare class ImageElement extends ImageElement_base implements IImageElementProps {
    private readonly _imageLoaded;
    private readonly _imageFailed;
    private _alt;
    private _src;
    private _srcset;
    private _state;
    private _fit;
    private _thumbnailSrc;
    private _showFailed;
    private _showEmpty;
    private _showPending;
    private _legend;
    private _legendPosition;
    private _ratio;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `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 `thumbnailSrc` property.
     * When set, a low-resolution blurred version of the image is displayed as a placeholder
     * while the full image loads. The thumbnail fades out once the main image is ready.
     * The default value is an empty string, which means no thumbnail is displayed.
     *
     * @public
     * @attr
     */
    get thumbnailSrc(): string;
    set thumbnailSrc(value: string);
    /**
     * 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 imageLoaded(): IEventEmitter<IEventDetail>;
    /**
     * Called when the image load is failed.
     * Provides reference to `IEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get imageFailed(): IEventEmitter<IEventDetail>;
    /**
     * @protected
     */
    protected onWidthPropertyChanged(_prev?: CssLength, next?: CssLength): void;
    /**
     * @protected
     */
    protected onHeightPropertyChanged(_prev?: CssLength, next?: CssLength): void;
    /**
     * @protected
     */
    protected onSrcPropertyChanged(_prev?: string, next?: string): 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;
    }
}
export {};
//# sourceMappingURL=ImageElement.d.ts.map