import { OnInit, ElementRef, EventEmitter } from '@angular/core';
import { CfCoreComponent } from '../core/core.component';
import { ButtonModel } from '../../models/button/button.model';
import { ButtonStylingModel } from '../../models/button/button-styling.model';
import { TemplateService } from '../../services/template-service/template.service';
/**
 * <p>CF Button Component</p>
 * <pre>
 * <code>
 * import { ButtonModel } from 'cedrus-fusion'
 * import { ButtonStylingModel } from 'cedrus-fusion'
 * <</code>cf-button<code>></code><code><</code><code>/</code>cf-button<code>>
 * </code>
 * </pre>
 */
export declare class CfButtonComponent extends CfCoreComponent implements OnInit {
    /**@hidden */ elementRef: ElementRef;
    /**@hidden */
    notifacationClickable: string;
    /** @hidden
       * It is the button object bound to the button component
       */
    cfButton: ButtonModel;
    /** @hidden
     * <p> The type of the needed button.</p>
     * <p> Type can be: mat-button, mat-raised-button, mat-fab, mat-mini-fab and mat-icon-button.</p>
     */
    buttonType: string;
    /**
     * <pre>{
     *  display: boolean,         // True or False <b>Default: True</b>
     *  disable: boolean,         // True or False <b>Default: False</b>
     *  label: string,            // <b>Default: 'Button'</b>
     *  iconProperty: IconModel,  //Refer to Icon Component
     *  iconPosition: string,     //'left', 'right' <b>Default: 'left'</b>
     *  waiting: {
     *   value: boolean,         //Display waiting mode (Icon)
     *   disable: boolean,       // True or False
     *   iconProperty: IconModel //Refer to Icon Component
     *  }
     *}
     * </pre>
     * </pre>
       * <p>Example</p>
       * <pre>{
       *	label: 'Cart',
       *	iconProperty:{
     *  name: 'fa-shopping-cart',
       *  size: '18px',
       *  value: 'buy',
     * },
     * iconPosition: 'right'
       *}
       * </pre>
     */
    properties: ButtonModel;
    /**
     *<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 Button
     *	container:{
     *		dynamicClass,
     *		class
     *	},
     *	// md-button styling
     *	button:{
     *		dynamicClass,
     *		class,
     *		themeColor
     *	},
     *	// Icon styling: Refer to icon component
     *	iconStyling: IconStylingModel
     *}
     * </pre>
     */
    styling: ButtonStylingModel;
    /**
     * <p> The label for the button</p>
     */
    label: string;
    /**
     * <p> The name of the icon</p>
     * <p> Refer to icon component</p>
     */
    iconName: string;
    /**
     * <p> The icon position on the button</p>
     * <p> Options: 'left' or 'right'</p>
     * <p> Default: <b>'left'</b></p>
     */
    iconPosition: string;
    /**
     * <p> Display waiting mode (Icon)</p>
     */
    wait: boolean;
    /** <b>Output</b>
     * <p>The event will be emitted when the button is clicked</p>
     */
    onClick: EventEmitter<{}>;
    /**@hidden */
    constructor(/**@hidden */ elementRef: ElementRef, /**@hidden */ templateService: TemplateService);
    /** @hidden
     * <p>On initialization:</p>
     * <p>Check to see if any of the angular material button types are needed to be passed to the child button.</p>
     * <p>Types are: <b>md-button</b>, <b>md-raised-button</b>, <b>md-icon-button</b>, <b>md-fab</b>, <b>md-mini-fab</b></p>
     * <p> Then initialize the button element </p>
     */
    ngOnInit(): void;
    /** @hidden
     * <p> Keep the properties object updated with any changes from external properties to keep the button dynamic.</p>
     * @param changes
     */
    ngOnChanges(changes: any): void;
    /** @hidden
     * <p>The method will emit event when the button is clicked</p>
     */
    buttonClicked(): 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 */
    getButtonClass(): string;
    /**@hidden */
    getContainerClass(): string;
}
