import * as i0 from '@angular/core';
import { AfterContentChecked, OnChanges, OnDestroy, OnInit, ElementRef, ChangeDetectorRef, SimpleChanges } from '@angular/core';
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
import { RequireOnlyOne, CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';

declare class IllustratedMessageActionsComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageActionsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IllustratedMessageActionsComponent, "fd-illustrated-message-actions", never, {}, {}, never, ["*"], true, never>;
}

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>;
}

declare class IllustratedMessageTextDirective {
    /** @hidden */
    fdIllustratedMessageTextClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageTextDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IllustratedMessageTextDirective, "[fd-illustrated-message-text]", never, {}, {}, never, never, true, never>;
}

declare class IllustratedMessageTitleDirective {
    /** @hidden */
    fdIllustratedMessageTitleClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageTitleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IllustratedMessageTitleDirective, "[fd-illustrated-message-title]", never, {}, {}, never, never, true, never>;
}

interface SvgConfig {
    scene?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    dialog?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    spot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
    dot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;
}
interface SvgItemConfig {
    url: string;
    id: string;
    file: string;
}
type IllustratedMessageType = 'scene' | 'dialog' | 'spot' | 'dot' | 'base';
declare enum IllustratedMessageTypes {
    SCENE = "scene",
    DIALOG = "dialog",
    SPOT = "spot",
    DOT = "dot",
    BASE = "base"
}
declare class IllustratedMessageComponent implements AfterContentChecked, OnChanges, OnDestroy, OnInit, CssClassBuilder {
    readonly elementRef: ElementRef;
    private _cdRef;
    private _sanitizer;
    /**
     * The type of the Illustrated Message
     * Options include: 'scene' | 'spot' | 'dialog' | 'dot' | 'base'.
     */
    type: IllustratedMessageType;
    /**
     * An object containing url and id for each type used to construct the svg href
     * For 'scene' type 'scene' and 'dialog' values are required
     * In small screens (less than 600px) 'dialog' svg will be applied for 'scene' type
     */
    svgConfig: SvgConfig;
    /**
     * aria-label for the svg
     */
    svgAriaLabel: Nullable<string>;
    /**
     * When set to true will remove the illustration from the Illustrated Message
     * The default is set to false
     */
    noSvg: boolean;
    /**
     * Id of the Illustrated Message
     * If not provided, a default one is generated
     */
    id: string;
    /** User's custom classes */
    class: string;
    /** @hidden */
    _href: string;
    /** @hidden */
    _isSmallScreen: boolean;
    /** @hidden */
    _inlineSvg: SafeHtml | undefined;
    /** @hidden */
    _tempType: IllustratedMessageType;
    /** @hidden */
    private _subscriptions;
    /** @hidden */
    constructor(elementRef: ElementRef, _cdRef: ChangeDetectorRef, _sanitizer: DomSanitizer);
    /**
     * @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterContentChecked(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    private _constructHref;
    /** @hidden */
    private _determineIllustratedMessageType;
    /** @hidden */
    private _getHrefByType;
    static ɵfac: i0.ɵɵFactoryDeclaration<IllustratedMessageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IllustratedMessageComponent, "[fd-illustrated-message]", never, { "type": { "alias": "type"; "required": false; }; "svgConfig": { "alias": "svgConfig"; "required": false; }; "svgAriaLabel": { "alias": "svgAriaLabel"; "required": false; }; "noSvg": { "alias": "noSvg"; "required": false; }; "id": { "alias": "id"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["[fd-illustrated-message-figcaption]", "fd-illustrated-message-actions"], true, never>;
}

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 };
