import * as i0 from '@angular/core';
import { PipeTransform, OnChanges, OnInit, ElementRef, EventEmitter, ChangeDetectorRef, Renderer2, InjectionToken } from '@angular/core';
import { Nullable, CssClassBuilder, Size, ColorAccent } from '@fundamental-ngx/cdk/utils';
import { IconComponent } from '@fundamental-ngx/core/icon';

type AvatarValueStates = 'positive' | 'caution' | 'negative' | 'information';

declare class AvatarIconPipe implements PipeTransform {
    /**
     * Selects appropriate Avatar icon based on Avatar Value state and fallback icon.
     */
    transform(valueState: Nullable<AvatarValueStates>, fallbackIcon: Nullable<string>): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarIconPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<AvatarIconPipe, "fdAvatarIcon", true>;
}

type IndicationColor = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
declare class AvatarComponent implements OnChanges, OnInit, CssClassBuilder, OnChanges {
    readonly elementRef: ElementRef;
    private readonly _cdr;
    private readonly _renderer;
    private hostTabindex;
    /** User's custom classes */
    class: string;
    /** Id of the Avatar. */
    id: string;
    /** Aria-label for Avatar. */
    ariaLabel: Nullable<string>;
    /** Aria-Labelledby for element describing Avatar. */
    ariaLabelledby: Nullable<string>;
    /** Localized text for label */
    set label(value: Nullable<string>);
    /** The size of the Avatar. Options include: *xs*, *s*, *m*, *l* and *xl*. */
    size: Size;
    /** Font family of the icon. */
    font: IconComponent['font'];
    /** The glyph name. */
    glyph: Nullable<string>;
    /** The glyph name for zoom icon. */
    zoomGlyph: Nullable<string>;
    /** Whether to apply a circle style to the Avatar. */
    circle: boolean;
    /** Whether to apply a transparent style to the Avatar. */
    transparent: boolean;
    /** Whether to apply background size contain style to the Avatar */
    contain: boolean;
    /** Whether to apply a placeholder background style to the Avatar. */
    placeholder: boolean;
    /** Whether to apply a tile background style to the Avatar. */
    tile: boolean;
    /** Whether to apply a border to the Avatar. */
    border: boolean;
    /** A number from 1 to 10 representing the background color of the Avatar.
     * This property will override the colorIndication property.
     */
    colorAccent: Nullable<ColorAccent>;
    /** A number from 1 to 10 representing the background color of the Avatar using the Indication Colors. */
    colorIndication: Nullable<IndicationColor>;
    /** Whether to apply random background color to the Avatar. */
    random: boolean;
    /** Whether component should be focusable & clicable */
    clickable: boolean;
    /** Value state of the Avatar. */
    valueState: Nullable<AvatarValueStates>;
    /** Background image resource: url or base64. */
    set image(value: Nullable<string>);
    get image(): Nullable<string>;
    /** Backup options to use when image hasn't been loaded successfully.
     * Options separated with "|" symbol.
     * Possible options: content, alt, backup, default-icon
     */
    set alterIcon(value: Nullable<string>);
    get alterIcon(): Nullable<string>;
    /** Backup image to load when image hasn't been loaded successfully.
     * Only applicable when using alterIcon input property.
     */
    set backupImage(value: Nullable<string>);
    get backupImage(): Nullable<string>;
    /** Event emitted when avatar clicked. Only fires if clickable input property set to true. */
    avatarClicked: EventEmitter<Event>;
    /** Event emitted when zoom icon clicked. Only fires if zoomGlyph input property is set. */
    zoomGlyphClicked: EventEmitter<void>;
    /**
     * @hidden
     */
    set bgImage(image: Nullable<string>);
    get bgImage(): Nullable<string>;
    /** @hidden */
    get role(): string;
    /** @hidden */
    set content(value: ElementRef);
    /** @hidden */
    abbreviate: Nullable<string>;
    /** @hidden */
    private _image;
    /** @hidden */
    private _alterIcon;
    /** @hidden */
    private _content;
    /** @hidden */
    private _backupImage;
    /** @hidden */
    private _bgImage;
    /** @hidden */
    get _tabindex(): number | null;
    /** If a default placeholder should be displayed */
    get showDefault(): boolean;
    /** @hidden */
    constructor(elementRef: ElementRef, _cdr: ChangeDetectorRef, _renderer: Renderer2, hostTabindex: number | null);
    /** @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    _onClick(event: Event): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    zoomClicked(event: Event): void;
    /** @hidden Get an abbreviate from the label or return null if not fit requirements */
    private _getAbbreviate;
    /** @hidden Get the abbreviation string */
    private _generateAbbreviation;
    /** @hidden */
    private _setImage;
    /** @hidden */
    private _verifyImageUrl;
    /** @hidden */
    private _assignBgImage;
    /** @hidden */
    private _onErrorCallback;
    /** @hidden */
    private _showDefaultIcon;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, [null, null, null, { attribute: "tabindex"; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "fd-avatar", never, { "class": { "alias": "class"; "required": false; }; "id": { "alias": "id"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "label": { "alias": "label"; "required": false; }; "size": { "alias": "size"; "required": false; }; "font": { "alias": "font"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "zoomGlyph": { "alias": "zoomGlyph"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "contain": { "alias": "contain"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "tile": { "alias": "tile"; "required": false; }; "border": { "alias": "border"; "required": false; }; "colorAccent": { "alias": "colorAccent"; "required": false; }; "colorIndication": { "alias": "colorIndication"; "required": false; }; "random": { "alias": "random"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "valueState": { "alias": "valueState"; "required": false; }; "image": { "alias": "image"; "required": false; }; "alterIcon": { "alias": "alterIcon"; "required": false; }; "backupImage": { "alias": "backupImage"; "required": false; }; }, { "avatarClicked": "avatarClicked"; "zoomGlyphClicked": "zoomGlyphClicked"; }, never, ["*"], true, never>;
}

/**
 * @deprecated
 * Use `AvatarComponent` import instead.
 */
declare class AvatarModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AvatarModule, never, [typeof AvatarComponent], [typeof AvatarComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AvatarModule>;
}

declare const FD_AVATAR_COMPONENT: InjectionToken<unknown>;

export { AvatarComponent, AvatarIconPipe, AvatarModule, FD_AVATAR_COMPONENT };
export type { AvatarValueStates, IndicationColor };
