import { ElementRef, EventEmitter, Renderer2, AfterContentInit } from '@angular/core';
import { IDisplayDensityOptions } from '../../core/density';
import { IBaseEventArgs } from '../../core/utils';
import { IgxButtonBaseDirective } from './button-base';
import * as i0 from "@angular/core";
declare const IgxButtonType: {
    FAB: "fab";
    Flat: "flat";
    Contained: "contained";
    Outlined: "outlined";
};
/**
 * 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 IgxButtonBaseDirective implements AfterContentInit {
    element: ElementRef;
    protected _displayDensityOptions: IDisplayDensityOptions;
    private _renderer;
    private static ngAcceptInputType_type;
    /**
     * Called when the button is selected.
     */
    buttonSelected: EventEmitter<IButtonEventArgs>;
    /**
     * @hidden
     * @internal
     */
    _cssClass: string;
    /**
     * @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, _displayDensityOptions: IDisplayDensityOptions, _renderer: Renderer2);
    ngAfterContentInit(): void;
    /**
     * Sets the type of the button.
     *
     * @example
     * ```html
     * <button type="button" igxButton="outlined"></button>
     * ```
     */
    set type(type: IgxButtonType);
    /**
     * Sets the `aria-label` attribute.
     *
     * @example
     *  ```html
     * <button type="button" igxButton="flat" igxLabel="Label"></button>
     * ```
     */
    set label(value: string);
    /**
     * @hidden
     * @internal
     */
    get flat(): boolean;
    /**
     * @hidden
     * @internal
     */
    get contained(): boolean;
    /**
     * @hidden
     * @internal
     */
    get outlined(): boolean;
    /**
     * @hidden
     * @internal
     */
    get fab(): boolean;
    /**
     * @hidden
     * @internal
     */
    get componentSize(): "var(--ig-size, var(--ig-size-small))" | "var(--ig-size, var(--ig-size-medium))" | "var(--ig-size, var(--ig-size-large))";
    /**
     * @hidden
     * @internal
     */
    select(): void;
    /**
     * @hidden
     * @internal
     */
    deselect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxButtonDirective, [null, { optional: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxButtonDirective, "[igxButton]", never, { "selected": { "alias": "selected"; "required": false; }; "type": { "alias": "igxButton"; "required": false; }; "label": { "alias": "igxLabel"; "required": false; }; }, { "buttonSelected": "buttonSelected"; }, never, never, true, never>;
    static ngAcceptInputType_selected: unknown;
}
export interface IButtonEventArgs extends IBaseEventArgs {
    button: IgxButtonDirective;
}
export {};
