import * as _angular_core from '@angular/core';
import { ElementRef, InjectionToken } from '@angular/core';
import { HasElementRef } 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';
type IconSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
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, size?: IconSize | null): string;
/**
 * The component that represents an icon.
 *
 * ```html
 * <fd-icon font="SAP-icons-TNT" glyph="exceptions"></fd-icon>
 * ```
 */
declare class IconComponent implements HasElementRef {
    /** The icon name to display. See the icon page for the list of icons
     * here: https://sap.github.io/fundamental-ngx/icon
     * */
    readonly glyph: _angular_core.InputSignal<any>;
    /**
     * The icon font
     * Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'
     */
    readonly font: _angular_core.InputSignal<IconFont>;
    /** Icon color */
    readonly color: _angular_core.InputSignal<IconColor | null>;
    /** Icon color */
    readonly background: _angular_core.InputSignal<IconColor | null>;
    /** Icon size */
    readonly size: _angular_core.InputSignal<IconSize | null>;
    /** user's custom classes */
    readonly class: _angular_core.InputSignal<string | undefined>;
    /** Aria-label for Icon. */
    readonly ariaLabel: _angular_core.InputSignal<string | null | undefined>;
    /** Aria-hidden attribute for Icon element. */
    readonly ariaHidden: _angular_core.ModelSignal<boolean | null | undefined>;
    /** @hidden */
    readonly elementRef: ElementRef<any>;
    /** Whether or not this icon is for a list navigation item. */
    readonly _navigationItemIcon: _angular_core.WritableSignal<boolean>;
    /** @hidden Computed role — "presentation" for decorative, "img" when ariaLabel is set. */
    protected readonly computedRole: _angular_core.Signal<"img" | "presentation">;
    /** @hidden Default aria-hidden to true for decorative icons (no ariaLabel). */
    protected readonly effectiveAriaHidden: _angular_core.Signal<boolean | null>;
    /** @hidden Computed CSS classes */
    protected readonly cssClasses: _angular_core.Signal<string>;
    /** @hidden */
    private readonly _fontIconClass;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "fd-icon", never, { "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "font": { "alias": "font"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; "isSignal": true; }; }, { "ariaHidden": "ariaHiddenChange"; }, never, never, true, never>;
}

/**
 * @deprecated
 * Use direct import of `IconComponent`
 */
declare class IconModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<IconModule, never, [typeof IconComponent], [typeof IconComponent]>;
    static ɵinj: _angular_core.ɵɵ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, IconSize };
