import { OnInit, ElementRef, EventEmitter } from '@angular/core';
import { CfCoreComponent } from '../core/core.component';
import { IconModel } from '../../models/icon/icon.model';
import { IconStylingModel } from '../../models/icon/icon-styling.model';
import { TemplateService } from '../../services/template-service/template.service';
/**
 * <p>CF Icon Component</p>
 * <pre>
 * <code>
 * import { IconModel } from 'cedrus-fusion'
 * import { IconStylingModel } from 'cedrus-fusion'
 * <code><</code>cf-icon<code>></code><code><</code><code>/</code>cf-icon<code>></code>
 * </code>
 * </pre>
 */
export declare class CfIconComponent extends CfCoreComponent implements OnInit {
    /**@hidden */ elementRef: ElementRef;
    /**@hidden */ templateService: TemplateService;
    /**@hidden */
    notifacationClickable: string;
    /** @hidden
     * It is Icon object which will recive values provided by Icon Class and after that <b>md-icon</b> will be builded on page.
     */
    cfIcon: IconModel;
    /** @hidden
     * <p>Whether the icon is in toggle mode or normal mode.</p>
     */
    checked: boolean;
    /**@hidden */
    currentIcon: any;
    /**
       * <pre>{
       *  display: boolean,	// True or False <b>Default: True</b>
       *  disable: boolean,	// True or False <b>Default: False</b>
       *  name: string,			// Default: 'Home'
       *  size: string,			// 'px', 'em', '%' <b>Default: '24px'</b>
       *  value: any,				// Value emitted on click
       *  toggle:{					// Toggling icon state
       *   name: string,		// Name of icon toggled
       *   size: string,		// Size of icon toggled
       *   value: any			// Value of icon toggled
       *  }
       *}
       * </pre>
       * <p>Example</p>
       * <pre>{
       *	name: 'fa-heart-o',
       *	size: '18px',
       *	value: 'empty heart',
       *	toggle: {
       *		name: 'fa-heart',
       *		size: '18px',
       *		value: 'full heart'
       *	}
       *}
       * </pre>
     */
    properties: IconModel;
    /**
      *<p> dynamicClass: function() -> string,	// Function that returns name of the class </p>
        *<p> class: string												// Name of the css class selector </p>
        *<p> themeColor: string										// primary/accent/warn </p>
      *<pre>
        *{
      *	// Container surrounding the Icon
      *	container:{
      *		dynamicClass,
      *		class
      *	},
      *	// md-icon styling
      *	icon:{
      *		dynamicClass,
      *		class,
      *		themeColor
      *	},
      *	// Toggle Icon styling with same structure as above
      *	toggleIcon:{
      *		container: {},
      *		icon: {}
      *	}
      *}
      * </pre>
      */
    styling: IconStylingModel;
    /**
     * <p></p>
     * <p>Name of the icon</p>
     * <p>Default is <b>home</b></p>
     * <p>Icon libraries available: Material Icons and Font Awesome Icons</p>
     */
    name: string;
    /**
     * <p>Icon size</p>
     * <p>Can be in pixels, em, percetages </p>
     * <p>Default is <b>'24px'</b></p>
     */
    size: string;
    /**
     * <b>Output</b>
   * <p>Event emited on toggle</p>
   */
    cfOnToggle: EventEmitter<any>;
    /** @hidden
     * It is function for set correct toggle value/icon and emmit event with icon state value.
     */
    cfIconToggled(): void;
    /** @hidden
     * It is function for creating Notification click events by using Core Component <b>notificationAction</b> event emmiter.
   * @param notification	it is json notification object
     */
    cfNotificationAction(notification: any): void;
    /**@hidden */
    constructor(/**@hidden */ elementRef: ElementRef, /**@hidden */ templateService: TemplateService);
    /** @hidden
     * <p>On Icon component initialization next things are heppening:</p>
     * <ul>
     * <li>Inititlaizing the properties and styling objects if not initialized and pass the external inputs to over write if any</li>
     * <li>Binding the html template object to the passed properties object</li>
     * </ul>
     *
     */
    ngOnInit(): void;
    /** @hidden
     * <p> Updating the properties object if any of the external inputs has been changed to keep the component dynamic.</p>
     * @param changes <p> Changes that occured from the user.</p>
     */
    ngOnChanges(changes: any): void;
    /**@hidden */
    getIconClass(): string;
    /**@hidden */
    getContainerClass(): string;
}
