import { OnChanges, SimpleChanges } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { FaSymbol, FlipProp, IconDefinition, IconProp, PullProp, RotateProp, SizeProp, Styles, Transform } from '@fortawesome/fontawesome-svg-core';
import { FaConfig } from '../config';
import { FaIconLibrary } from '../icon-library';
import { AnimationProp } from '../shared/models/props.model';
import { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';
import { FaStackComponent } from '../stack/stack.component';
import * as i0 from "@angular/core";
export declare class FaIconComponent implements OnChanges {
    private sanitizer;
    private config;
    private iconLibrary;
    private stackItem;
    icon: IconProp;
    /**
     * Specify a title for the icon.
     *
     * This text will be displayed in a tooltip on hover and presented to the
     * screen readers.
     */
    title?: string;
    /**
     * Icon animation.
     *
     * Most of the animations are only available when using Font Awesome 6. With
     * Font Awesome 5, only 'spin' and 'spin-pulse' are supported.
     */
    animation?: AnimationProp;
    /**
     * @deprecated Use animation="spin" instead. To be removed in 0.14.0.
     */
    set spin(value: boolean);
    /**
     * @deprecated Use animation="spin-pulse" instead. To be removed in 0.14.0.
     */
    set pulse(value: boolean);
    mask?: IconProp;
    /**
     * Set `style` attribute on the SVG element rendered by the component.
     *
     * @deprecated This input breaks view encapsulation and is not recommended.
     * For simple cases (like colors), use `style` on the component itself, for
     * more complex usages, explicitly opt-in to break the view encapsulation.
     * This input is deprecated since 0.12.0 and will be removed in 0.13.0.
     */
    styles?: Styles;
    flip?: FlipProp;
    size?: SizeProp;
    pull?: PullProp;
    border?: boolean;
    inverse?: boolean;
    symbol?: FaSymbol;
    rotate?: RotateProp;
    fixedWidth?: boolean;
    /**
     * Set `class` attribute on the SVG element rendered by the component.
     *
     * @deprecated This input breaks view encapsulation and is not recommended.
     * For simple cases (like colors), use `class` on the component itself, for
     * more complex usages, explicitly opt-in to break the view encapsulation.
     * This input is deprecated since 0.12.0 and will be removed in 0.13.0.
     */
    classes?: string[];
    transform?: string | Transform;
    /**
     * Specify the `role` attribute for the rendered <svg> element.
     *
     * @default 'img'
     */
    a11yRole: string;
    renderedIconHTML: SafeHtml;
    constructor(sanitizer: DomSanitizer, config: FaConfig, iconLibrary: FaIconLibrary, stackItem: FaStackItemSizeDirective, stack: FaStackComponent);
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Programmatically trigger rendering of the icon.
     *
     * This method is useful, when creating {@link FaIconComponent} dynamically or
     * changing its inputs programmatically as in these cases icon won't be
     * re-rendered automatically.
     */
    render(): void;
    protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null;
    protected buildParams(): {
        title: string;
        transform: Transform;
        classes: string[];
        mask: IconDefinition;
        styles: Styles;
        symbol: FaSymbol;
        attributes: {
            role: string;
        };
    };
    private renderIcon;
    static ɵfac: i0.ɵɵFactoryDeclaration<FaIconComponent, [null, null, null, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FaIconComponent, "fa-icon", never, { "icon": { "alias": "icon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "animation": { "alias": "animation"; "required": false; }; "spin": { "alias": "spin"; "required": false; }; "pulse": { "alias": "pulse"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "styles": { "alias": "styles"; "required": false; }; "flip": { "alias": "flip"; "required": false; }; "size": { "alias": "size"; "required": false; }; "pull": { "alias": "pull"; "required": false; }; "border": { "alias": "border"; "required": false; }; "inverse": { "alias": "inverse"; "required": false; }; "symbol": { "alias": "symbol"; "required": false; }; "rotate": { "alias": "rotate"; "required": false; }; "fixedWidth": { "alias": "fixedWidth"; "required": false; }; "classes": { "alias": "classes"; "required": false; }; "transform": { "alias": "transform"; "required": false; }; "a11yRole": { "alias": "a11yRole"; "required": false; }; }, {}, never, never, false, never>;
}
