import * as i0 from '@angular/core';
import { ElementRef, InjectionToken } from '@angular/core';
import { CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';

type IconFont = 'SAP-icons' | 'BusinessSuiteInAppSymbols' | 'SAP-icons-TNT';
declare const FD_DEFAULT_ICON_FONT_FAMILY = "SAP-icons";
type IconColor = 'default' | 'contrast' | 'non-interactive' | 'tile' | 'marker' | 'critical' | 'negative' | 'neutral' | 'positive' | 'information';
declare const FD_ICON_FONT_FAMILY: Record<IconFont, string>;
/**
 * Helper function to build icon css class.
 * @param font Font family
 * @param glyph Icon
 * @param color Icon color
 * @param background Icon background color
 * @returns Computed css class string.
 */
declare function fdBuildIconClass(font: IconFont, glyph: any, color?: IconColor | null, background?: IconColor | null): string;
/**
 * The component that represents an icon.
 *
 * ```html
 * <fd-icon font="SAP-icons-TNT" glyph="exceptions"></fd-icon>
 * ```
 */
declare class IconComponent implements CssClassBuilder {
    readonly elementRef: ElementRef;
    /** The icon name to display. See the icon page for the list of icons
     * here: https://sap.github.io/fundamental-ngx/icon
     * */
    set glyph(value: any);
    get glyph(): any;
    /**
     * The icon font
     * Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'
     */
    set font(value: IconFont);
    get font(): IconFont;
    /** Icon color */
    set color(value: IconColor | null);
    get color(): IconColor | null;
    /** Icon color */
    set background(value: IconColor | null);
    get background(): IconColor | null;
    /** user's custom classes */
    class: string;
    /** Aria-label for Icon. */
    ariaLabel: Nullable<string>;
    /** Aria-hidden attribute for Icon element. */
    ariaHidden: Nullable<boolean>;
    /** Whether or not this icon is for a list navigation item. */
    _navigationItemIcon: boolean;
    /** @hidden */
    private readonly _glyph;
    /** @hidden */
    private readonly _font;
    /** @hidden */
    private readonly _color;
    /** @hidden */
    private readonly _background;
    /** @hidden */
    private readonly _fontIconClass;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /**
     * @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "fd-icon", never, { "glyph": { "alias": "glyph"; "required": false; }; "font": { "alias": "font"; "required": false; }; "color": { "alias": "color"; "required": false; }; "background": { "alias": "background"; "required": false; }; "class": { "alias": "class"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; }; }, {}, never, never, true, never>;
}

declare class IconModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IconModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IconModule, never, [typeof IconComponent], [typeof IconComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IconModule>;
}

declare const FD_ICON_COMPONENT: InjectionToken<unknown>;

export { FD_DEFAULT_ICON_FONT_FAMILY, FD_ICON_COMPONENT, FD_ICON_FONT_FAMILY, IconComponent, IconModule, fdBuildIconClass };
export type { IconColor, IconFont };
