import * as i0 from '@angular/core';
import { EventEmitter, InjectionToken } from '@angular/core';
import { Nullable, ModuleDeprecation } from '@fundamental-ngx/cdk/utils';
import { ButtonType, GlyphPosition } from '@fundamental-ngx/core/button';
import { IconFont } from '@fundamental-ngx/core/icon';
import { BaseComponent } from '@fundamental-ngx/platform/shared';
import * as i2 from '@fundamental-ngx/core/content-density';

interface ButtonModel {
    fdType: ButtonType;
    disabled: boolean;
    markForCheck(): void;
}

/**
 * @deprecated
 * Button component is deprecated. Use `fd-button` from `@fundamental-ngx/core` instead.
 */
declare class ButtonComponent extends BaseComponent implements ButtonModel {
    /** Position of glyph related to text */
    glyphPosition: GlyphPosition;
    /**
     * Text rendered inside button component
     */
    label: string;
    /** The icon to include in the button. See the icon page for the list of icons.
     * Setter is used to control when css class have to be rebuilded.
     * Default value is set to ''.
     */
    glyph: string;
    /** Glyph font family */
    glyphFont: IconFont;
    /**
     * @deprecated
     * Use `fdType` property.
     * The buttonType of the button. Types includes
     'standard','positive', 'negative', 'attention', 'ghost',
     'transparent', 'emphasized','menu'.
     *Leave empty for default (standard button).'*/
    set buttonType(value: ButtonType);
    get buttonType(): ButtonType;
    /** The type of the button. Types include:
     * 'standard' | 'positive' | 'negative' | 'attention' | 'half' | 'ghost' | 'transparent' | 'emphasized' | 'menu'.
     * Leave empty for default (Standard button).'
     * Default value is set to 'standard'
     */
    fdType: ButtonType;
    /** Whether button is in toggled state. */
    toggled: Nullable<boolean>;
    /** arialabel, tooltip for button, intended to be used when the button only contains an icon */
    title: Nullable<string>;
    /** @deprecated use toggled input property instead
     * aria-selected for acccesiblity to the native HTML button
     */
    set ariaSelected(value: Nullable<boolean>);
    get ariaSelected(): Nullable<boolean>;
    /** aria-disabled for acccesiblity to
     *  the native HTML button*/
    ariaDisabled: Nullable<boolean>;
    /**
     * propagate aria-expanded for accessiblity to
     * the native HTML button
     */
    ariaExpanded: Nullable<boolean>;
    /**
     * propagate aria-controls for accessiblity to
     * the native HTML button
     */
    ariaControlsId: Nullable<string>;
    /** @deprecated use toggled input property instead
     * propagate aria-pressed for accessiblity to the native HTML button
     */
    set ariaPressed(value: Nullable<boolean>);
    get ariaPressed(): Nullable<boolean>;
    /** Specifies the type to
     *  the native HTML button */
    type: Nullable<string>;
    /** Specifies an initial value to
     *  the native HTML button */
    value: Nullable<string>;
    /** Event sent when button is clicked */
    buttonClicked: EventEmitter<any>;
    /**
     * Take host element out of tab order, so that child button can
     * be properly focused on.
     */
    tabIndex: string;
    /** @hidden */
    private _ariaSelected;
    /** @hidden */
    private _ariaPressed;
    /** @hidden */
    constructor();
    /**
     *  Handles button click
     */
    onBtnClick($event: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "fdp-button", never, { "glyphPosition": { "alias": "glyphPosition"; "required": false; }; "label": { "alias": "label"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "glyphFont": { "alias": "glyphFont"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "fdType": { "alias": "fdType"; "required": false; }; "toggled": { "alias": "toggled"; "required": false; }; "title": { "alias": "title"; "required": false; }; "ariaSelected": { "alias": "ariaSelected"; "required": false; }; "ariaDisabled": { "alias": "ariaDisabled"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControlsId": { "alias": "ariaControlsId"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "buttonClicked": "buttonClicked"; }, never, never, true, never>;
}
declare class DeprecatedButtonAriaSelected implements ModuleDeprecation {
    /** @hidden */
    message: string;
    /** @hidden */
    alternative: {
        name: string;
        link: string[];
        fragment: string;
    };
}
declare class DeprecatedButtonAriaPressed implements ModuleDeprecation {
    /** @hidden */
    message: string;
    /** @hidden */
    alternative: {
        name: string;
        link: string[];
        fragment: string;
    };
}

declare class PlatformButtonModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PlatformButtonModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PlatformButtonModule, never, [typeof ButtonComponent, typeof i2.ContentDensityModule], [typeof ButtonComponent, typeof i2.ContentDensityModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PlatformButtonModule>;
}

declare const FDP_BUTTON: InjectionToken<unknown>;

export { ButtonComponent, DeprecatedButtonAriaPressed, DeprecatedButtonAriaSelected, FDP_BUTTON, PlatformButtonModule };
export type { ButtonModel };
