/**
 * @license
 * Copyright Endlessjs. All Rights Reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 */
import { ElementRef, OnChanges, OnInit, Renderer2 } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { ElComponentStatus } from '../component-status';
import { ElIconLibraries } from './icon-libraries';
export interface ElIconConfig {
    icon: string;
    pack?: string;
    status?: ElComponentStatus;
    options?: {
        [name: string]: any;
    };
}
/**
 * Icon component. Allows to render both `svg` and `font` icons.
 * Starting from Endlessjs 4.0 uses [Eva Icons](https://endlessjs.github.io/eva-icons/) pack by default.
 *
 * Basic icon example:
 * @stacked-example(Showcase, icon/icon-showcase.component)
 *
 * Icon configuration:
 *
 * ```html
 * <el-icon icon="star"></el-icon>
 * ```
 * ### Installation
 *
 * By default Endlessjs comes without any pre-installed icon pack.
 * Starting with Endlessjs 4.0.0 we ship separate package called `@endlessjs/eva-icons`
 * which integrates SVG [Eva Icons](https://endlessjs.github.io/eva-icons/) pack to Endlessjs. To add it to your
 * project run:
 * ```sh
 * npm i @endlessjs/eva-icons
 * ```
 * This command will install Eva Icons pack. Then register `ElEvaIconsModule` into your app module:
 * ```ts
 * import { ElEvaIconsModule } from '@endlessjs/eva-icons';
 *
 * @NgModule({
 *   imports: [
 *     // ...
 *     ElEvaIconsModule,
 *   ],
 * })
 * export class AppModule { }
 * ```
 * Last thing, import `ElIconModule` to your feature module where you need to show an icon:
 * ```ts
 * import { ElIconModule } from '@endlessjs/theme';
 *
 * @NgModule({
 *   imports: [
 *     // ...
 *     ElIconModule,
 *   ],
 * })
 * export class PageModule { }
 * ```
 * ### Usage
 *
 * Icon can be colored using `status` input:
 * ```html
 * <el-icon icon="star" status="warning"></el-icon>
 * ```
 *
 * Colored icons:
 * @stacked-example(Colored Icons, icon/icon-colors.component)
 *
 * In case you need to specify an icon from a specific icon pack, this could be done using `pack` input property:
 * ```html
 * <el-icon icon="star" pack="font-awesome"></el-icon>
 * ```
 * Additional icon settings (if available by the icon pack) could be passed using `options` input:
 *
 * ```html
 * <el-icon icon="star" [options]="{ animation: { type: 'zoom' } }"></el-icon>
 * ```
 *
 * @styles
 *
 * icon-font-size:
 * icon-line-height:
 * icon-width:
 * icon-height:
 * icon-primary-color:
 * icon-info-color:
 * icon-success-color:
 * icon-warning-color:
 * icon-danger-color:
 */
export declare class ElIconComponent implements ElIconConfig, OnChanges, OnInit {
    protected sanitizer: DomSanitizer;
    protected iconLibrary: ElIconLibraries;
    protected el: ElementRef;
    protected renderer: Renderer2;
    protected iconDef: any;
    protected prevClasses: any[];
    html: SafeHtml;
    readonly primary: boolean;
    readonly info: boolean;
    readonly success: boolean;
    readonly warning: boolean;
    readonly danger: boolean;
    /**
     * Icon name
     * @param {string} status
     */
    icon: string;
    /**
     * Icon pack name
     * @param {string} status
     */
    pack: string;
    /**
     * Additional icon settings
     * @param {[name: string]: any}
     */
    options: {
        [name: string]: any;
    };
    /**
     * Icon status (adds specific styles):
     * `primary`, `info`, `success`, `warning`, `danger`
     */
    status: ElComponentStatus;
    /**
     * Sets all icon configurable properties via config object.
     * If passed value is a string set icon name.
     * @docs-private
     */
    config: string | ElIconConfig;
    protected _config: string | ElIconConfig;
    constructor(sanitizer: DomSanitizer, iconLibrary: ElIconLibraries, el: ElementRef, renderer: Renderer2);
    ngOnInit(): void;
    ngOnChanges(): void;
    renderIcon(name: string, pack?: string, options?: {
        [name: string]: any;
    }): import("./icon-libraries").ElIconDefinition;
    protected assignClasses(classes: string[]): void;
}
