import * as i0 from '@angular/core';
import { ElementRef } from '@angular/core';
import * as _angular_platform_browser from '@angular/platform-browser';
import { HasElementRef, RequireOnlyOne } from '@fundamental-ngx/cdk/utils';

/**
 * Component representing the actions section of an illustrated message.
 * Typically contains buttons or links for user actions.
 */
declare class IllustratedMessageActionsComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageActionsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IllustratedMessageActionsComponent, "fd-illustrated-message-actions", never, {}, {}, never, ["*"], true, never>;
}

/**
 * Component representing the figcaption section of an illustrated message.
 * Contains title and text content slots.
 */
declare class IllustratedMessageFigcaptionComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageFigcaptionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IllustratedMessageFigcaptionComponent, "[fd-illustrated-message-figcaption]", never, {}, {}, never, ["[fd-illustrated-message-title]", "[fd-illustrated-message-text]"], true, never>;
}

/**
 * Directive for the text/description element within an illustrated message figcaption.
 */
declare class IllustratedMessageTextDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageTextDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IllustratedMessageTextDirective, "[fd-illustrated-message-text]", never, {}, {}, never, never, true, never>;
}

/**
 * Directive for the title element within an illustrated message figcaption.
 */
declare class IllustratedMessageTitleDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageTitleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IllustratedMessageTitleDirective, "[fd-illustrated-message-title]", never, {}, {}, never, never, true, never>;
}

/**
 * Configuration for an SVG item in the illustrated message.
 */
interface SvgItemConfig {
    /** URL to the SVG sprite file */
    url: string;
    /** ID of the symbol within the SVG sprite */
    id: string;
    /** Inline SVG file content */
    file: string;
}
/**
 * Configuration for different SVG sizes in the illustrated message.
 * Supports both modern (large, medium, small, xsmall) and legacy (scene, dialog, spot, dot) naming.
 */
interface SvgConfig {
    /** Configuration for large/scene size (>= 682px) */
    large?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** Configuration for medium/dialog size (361px - 681px) */
    medium?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** Configuration for small/spot size (261px - 360px) */
    small?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** Configuration for extra small/dot size (161px - 260px) */
    xsmall?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** @deprecated Use 'large' instead */
    scene?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** @deprecated Use 'medium' instead */
    dialog?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** @deprecated Use 'small' instead */
    spot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    /** @deprecated Use 'xsmall' instead */
    dot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
}
/**
 * Type of illustrated message based on container width or explicit configuration.
 * Modern types: large, medium, small, xsmall, base
 * Legacy types: scene, dialog, spot, dot
 */
type IllustratedMessageType = 'large' | 'medium' | 'small' | 'xsmall' | 'base' | 'scene' | 'dialog' | 'spot' | 'dot';
/**
 * Enumeration of illustrated message types with their string values.
 */
declare enum IllustratedMessageTypes {
    LARGE = "large",
    MEDIUM = "medium",
    SMALL = "small",
    EXTRA_SMALL = "xsmall",
    BASE = "base",
    /** @deprecated Use LARGE instead */
    SCENE = "scene",
    /** @deprecated Use MEDIUM instead */
    DIALOG = "dialog",
    /** @deprecated Use SMALL instead */
    SPOT = "spot",
    /** @deprecated Use EXTRA_SMALL instead */
    DOT = "dot"
}
/**
 * Component representing an illustrated message with responsive SVG illustration.
 *
 * The component automatically adjusts its illustration size based on container width:
 * - Large (>= 682px)
 * - Medium (361px - 681px)
 * - Small (261px - 360px)
 * - Extra Small (161px - 260px)
 * - Base (< 161px)
 *
 * Supports both URL-based SVG sprites and inline SVG content.
 *
 * @example
 * ```html
 * <div fd-illustrated-message [svgConfig]="svgConfig">
 *   <figcaption fd-illustrated-message-figcaption>
 *     <h3>No Data Available</h3>
 *     <p>Please check back later</p>
 *   </figcaption>
 * </div>
 * ```
 */
declare class IllustratedMessageComponent implements HasElementRef {
    /**
     * Explicitly set the illustration type. If not provided, type is determined by container width.
     */
    readonly type: i0.InputSignal<IllustratedMessageType | undefined>;
    /**
     * Configuration for SVG illustrations at different sizes.
     */
    readonly svgConfig: i0.InputSignal<SvgConfig | undefined>;
    /**
     * Accessible label for the SVG illustration.
     */
    readonly svgAriaLabel: i0.InputSignal<string | null | undefined>;
    /**
     * When true, hides the SVG illustration entirely.
     */
    readonly noSvg: i0.InputSignalWithTransform<boolean, unknown>;
    /**
     * Unique identifier for the illustrated message component.
     */
    readonly id: i0.InputSignal<string>;
    /**
     * Reference to the host element.
     */
    readonly elementRef: ElementRef<any>;
    /**
     * Signal tracking container width for responsive behavior.
     * @hidden
     */
    protected readonly containerWidth: i0.WritableSignal<number>;
    /**
     * Normalized illustration type from explicit input or legacy names.
     * @hidden
     */
    protected readonly normalizedInputType: i0.Signal<IllustratedMessageType | undefined>;
    /**
     * Current illustration type based on explicit type or container width.
     * @hidden
     */
    protected readonly currentType: i0.Signal<IllustratedMessageType>;
    /**
     * Normalized SVG configuration with legacy keys mapped to modern keys.
     * @hidden
     */
    protected readonly normalizedConfig: i0.Signal<SvgConfig | null>;
    /**
     * Inline SVG content for the current type.
     * @hidden
     */
    protected readonly inlineSvg: i0.Signal<_angular_platform_browser.SafeHtml | undefined>;
    /**
     * SVG href attribute for the current type.
     * @hidden
     */
    protected readonly href: i0.Signal<string>;
    /**
     * Computed CSS class string for the component.
     * @hidden
     */
    protected readonly cssClass: i0.Signal<string>;
    /** @hidden */
    private readonly _sanitizer;
    /** @hidden */
    private readonly _destroyRef;
    /** @hidden */
    constructor();
    /**
     * Measures and updates the container width.
     * @private
     */
    private _measureContainerWidth;
    /**
     * Determines the illustration type based on container width.
     * @param width - Container width in pixels
     * @returns Appropriate illustration type
     * @private
     */
    private _determineTypeByWidth;
    /**
     * Normalizes legacy type names to modern equivalents.
     * @param type - Illustration type to normalize
     * @returns Normalized illustration type
     * @private
     */
    private _normalizeType;
    /**
     * Normalizes SVG configuration, mapping legacy keys to modern keys.
     * @param config - SVG configuration to normalize
     * @returns Normalized SVG configuration
     * @private
     */
    private _normalizeSvgConfig;
    /**
     * Constructs the SVG href attribute value for the given type.
     * @param type - Illustration type
     * @param svgConfig - Normalized SVG configuration
     * @returns SVG href string
     * @private
     */
    private _getHrefByType;
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IllustratedMessageComponent, "[fd-illustrated-message]", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "svgConfig": { "alias": "svgConfig"; "required": false; "isSignal": true; }; "svgAriaLabel": { "alias": "svgAriaLabel"; "required": false; "isSignal": true; }; "noSvg": { "alias": "noSvg"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["[fd-illustrated-message-figcaption]", "fd-illustrated-message-actions"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class IllustratedMessageModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IllustratedMessageModule, never, [typeof IllustratedMessageComponent, typeof IllustratedMessageActionsComponent, typeof IllustratedMessageFigcaptionComponent, typeof IllustratedMessageTextDirective, typeof IllustratedMessageTitleDirective], [typeof IllustratedMessageComponent, typeof IllustratedMessageActionsComponent, typeof IllustratedMessageFigcaptionComponent, typeof IllustratedMessageTextDirective, typeof IllustratedMessageTitleDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IllustratedMessageModule>;
}

export { IllustratedMessageActionsComponent, IllustratedMessageComponent, IllustratedMessageFigcaptionComponent, IllustratedMessageModule, IllustratedMessageTextDirective, IllustratedMessageTitleDirective, IllustratedMessageTypes };
export type { IllustratedMessageType, SvgConfig, SvgItemConfig };
