import { ElementRef, EventEmitter, Renderer2 } from '@angular/core';
import { DisplayDensityBase, IDisplayDensityOptions } from '../../core/density';
import { IBaseEventArgs } from '../../core/utils';
import * as i0 from "@angular/core";
declare const IgxButtonType: {
    Flat: "flat";
    Raised: "raised";
    Outlined: "outlined";
    Icon: "icon";
    FAB: "fab";
};
/**
 * Determines the Button type.
 */
export type IgxButtonType = typeof IgxButtonType[keyof typeof IgxButtonType];
/**
 * The Button directive provides the Ignite UI Button functionality to every component that's intended to be used as a button.
 *
 * @igxModule IgxButtonModule
 *
 * @igxParent Data Entry & Display
 *
 * @igxTheme igx-button-theme
 *
 * @igxKeywords button, span, div, click
 *
 * @remarks
 * The Ignite UI Button directive is intended to be used by any button, span or div and turn it into a fully functional button.
 *
 * @example
 * ```html
 * <button type="button" igxButton="outlined">A Button</button>
 * ```
 */
export declare class IgxButtonDirective extends DisplayDensityBase {
    element: ElementRef;
    private _renderer;
    protected _displayDensityOptions: IDisplayDensityOptions;
    private static ngAcceptInputType_type;
    private static ngAcceptInputType_disabled;
    /**
     * Called when the button is clicked.
     */
    buttonClick: EventEmitter<any>;
    /**
     * Called when the button is selected.
     */
    buttonSelected: EventEmitter<IButtonEventArgs>;
    /**
     * Sets/gets the `role` attribute.
     *
     * @example
     * ```typescript
     * this.button.role = 'navbutton';
     * let buttonRole = this.button.role;
     * ```
     */
    role: string;
    /**
     * @hidden
     * @internal
     */
    _cssClass: string;
    /**
     * @hidden
     * @internal
     */
    _disabled: boolean;
    /**
     * @hidden
     * @internal
     */
    private _type;
    /**
     * @hidden
     * @internal
     */
    private _color;
    /**
     * @hidden
     * @internal
     */
    private _label;
    /**
     * @hidden
     * @internal
     */
    private _backgroundColor;
    /**
     * @hidden
     * @internal
     */
    private _selected;
    /**
     * Gets or sets whether the button is selected.
     * Mainly used in the IgxButtonGroup component and it will have no effect if set separately.
     *
     * @example
     * ```html
     * <button type="button" igxButton="flat" [selected]="button.selected"></button>
     * ```
     */
    set selected(value: boolean);
    get selected(): boolean;
    constructor(element: ElementRef, _renderer: Renderer2, _displayDensityOptions: IDisplayDensityOptions);
    /**
     * @hidden
     * @internal
     */
    onClick(ev: MouseEvent): void;
    /**
     * Returns the underlying DOM element.
     */
    get nativeElement(): any;
    /**
     * Sets the type of the button.
     *
     * @example
     * ```html
     * <button type="button" igxButton="icon"></button>
     * ```
     */
    set type(type: IgxButtonType);
    /**
     * Sets the button text color.
     *
     * @example
     * ```html
     * <button type="button" igxButton igxButtonColor="orange"></button>
     * ```
     */
    set color(value: string);
    /**
     * Sets the background color of the button.
     *
     * @example
     *  ```html
     * <button type="button" igxButton igxButtonBackground="red"></button>
     * ```
     */
    set background(value: string);
    /**
     * Sets the `aria-label` attribute.
     *
     * @example
     *  ```html
     * <button type="button" igxButton="flat" igxLabel="Label"></button>
     * ```
     */
    set label(value: string);
    /**
     * Get the disabled state of the button;
     *
     * @example
     * ```typescript
     * const disabled = this.button.disabled;
     * ```
     */
    get disabled(): boolean;
    /**
     * Enables/disables the button.
     *
     * @example
     * ```html
     * <button type="button" igxButton="fab" [disabled]="true"></button>
     * ```
     */
    set disabled(val: boolean);
    /**
     * @hidden
     * @internal
     */
    get flat(): boolean;
    /**
     * @hidden
     * @internal
     */
    get raised(): boolean;
    /**
     * @hidden
     * @internal
     */
    get outlined(): boolean;
    /**
     * @hidden
     * @internal
     */
    get icon(): boolean;
    /**
     * @hidden
     * @internal
     */
    get fab(): boolean;
    /**
     * @hidden
     * @internal
     */
    get cosy(): boolean;
    /**
     * @hidden
     * @internal
     */
    get compact(): boolean;
    /**
     * @hidden
     * @internal
     */
    get disabledAttribute(): true;
    /**
     * @hidden
     * @internal
     */
    select(): void;
    /**
     * @hidden
     * @internal
     */
    deselect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxButtonDirective, [null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxButtonDirective, "[igxButton]", never, { "selected": "selected"; "type": "igxButton"; "color": "igxButtonColor"; "background": "igxButtonBackground"; "label": "igxLabel"; "disabled": "disabled"; }, { "buttonClick": "buttonClick"; "buttonSelected": "buttonSelected"; }, never, never, false, never>;
}
export interface IButtonEventArgs extends IBaseEventArgs {
    button: IgxButtonDirective;
}
/**
 *
 * @hidden
 */
export declare class IgxButtonModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxButtonModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IgxButtonModule, [typeof IgxButtonDirective], never, [typeof IgxButtonDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IgxButtonModule>;
}
export {};
