import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { Observable } from 'rxjs';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { FormItemControl } from '@fundamental-ngx/core/form';
import { CvaControl, CvaDirective } from '@fundamental-ngx/cdk/forms';
import { IconFont } from '@fundamental-ngx/core/icon';
import { InputGroupAddOnDirective, InputGroupInputDirective } from './input-group-directives';
import { InputGroupPlacement } from './types';
import * as i0 from "@angular/core";
import * as i1 from "@fundamental-ngx/cdk/forms";
/**
 * The component that represents an input group.
 * The input group includes form inputs with add-ons that allow the user to better understand the information being entered.
 *
 * ```html
 * <fd-input-group placement="after" addOnText="$" placeholder="Amount">
 * </fd-input-group>
 * ```
 */
export declare class InputGroupComponent implements AfterViewInit, FormItemControl, OnInit {
    readonly _cvaControl: CvaControl<string | number>;
    readonly elementRef: ElementRef;
    private readonly _changeDetectorRef;
    private _contentDensityObserver;
    private readonly _cva;
    /**
     * The placement of the add-on.
     * Options include *before* and *after*
     */
    placement: InputGroupPlacement;
    /** If it is mandatory field */
    required: boolean;
    /** Whether the input group is inline. */
    inline: boolean;
    /** The text for the add-on. */
    addOnText: string;
    /** Whether AddOn Button should be focusable */
    buttonFocusable: boolean;
    /** The type of the input, used in Input Group. By default, value is set to 'text' */
    type: string;
    /** The icon value for the add-on. */
    glyph: Nullable<string>;
    /** Glyph font family */
    glyphFont: IconFont;
    /** Whether the icon add-on or the text add-on is a button. */
    button: boolean;
    /**
     * Whether the input group is a popover control
     */
    isControl: boolean;
    /**
     * Whether should show focus outline
     */
    showFocus: boolean;
    /** @hidden */
    isExpanded: boolean;
    /** Label applied to button with glyph element. */
    glyphAriaLabel: Nullable<string>;
    /**
     * Whether the input group addon button should be aria-hidden
     * Useful in cases when the title is already applied on the
     * input group parent component
     **/
    addonButtonAriaHidden: Nullable<boolean>;
    /** @deprecated Title attributes are being removed from the library. */
    iconTitle: Nullable<string>;
    /** the associated ids for the input aria-labelledby field */
    ariaLabelledBy: Nullable<string>;
    /** aria-label for the input field */
    ariaLabel: Nullable<string>;
    /** Event emitted when the add-on button is clicked. */
    addOnButtonClicked: EventEmitter<Event>;
    /**
     * Event emitted when the native clear button is clicked, or when native search is executed.
     * Works only for native search for input[type="search"]
     */
    search: EventEmitter<Event>;
    /** @hidden */
    inputElement: InputGroupInputDirective;
    /** @hidden */
    localInputElement: InputGroupInputDirective;
    /** @hidden */
    addOnElement: InputGroupAddOnDirective;
    /** @hidden */
    private readonly _localButtonElement;
    /** @hidden */
    _inputTextValue: string;
    /** @hidden */
    _inputId: string;
    /** @hidden */
    _addOnNonButtonId: string;
    /** @hidden */
    _addOnButtonId: string;
    /** @hidden */
    _inputFocused$: Observable<boolean>;
    /**
     * Whether the input group is in the shellbar. Only for internal use by combobox component.
     * @hidden
     */
    inShellbar: boolean;
    /** An RxJS Subject that will kill the stream upon component’s destruction (for unsubscribing)  */
    private readonly _destroyRef;
    /** Value of the text input. */
    set inputText(value: string);
    get inputText(): string;
    /** @hidden
     *  Calculate the correct ids for input aria-labelledby
     */
    get _inputAriaLabelledBy(): string;
    /** @hidden */
    constructor(_cvaControl: CvaControl<string | number>, elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _contentDensityObserver: ContentDensityObserver, _cva: CvaDirective);
    /** @hidden */
    private _focusOut;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    setDisabledState(isDisabled: boolean): void;
    /** @hidden */
    setInShellbar(value: boolean): void;
    /** @hidden */
    _buttonClicked(event: Event): void;
    /** @hidden */
    _onSearchEvent(event: Event): void;
    /** @hidden */
    _preventFocus(event: MouseEvent): void;
    /** @hidden */
    private _listenInputFocus;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InputGroupComponent, "fd-input-group", never, { "placement": { "alias": "placement"; "required": false; }; "required": { "alias": "required"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "addOnText": { "alias": "addOnText"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "type": { "alias": "type"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "glyphFont": { "alias": "glyphFont"; "required": false; }; "button": { "alias": "button"; "required": false; }; "isControl": { "alias": "isControl"; "required": false; }; "showFocus": { "alias": "showFocus"; "required": false; }; "isExpanded": { "alias": "isExpanded"; "required": false; }; "glyphAriaLabel": { "alias": "glyphAriaLabel"; "required": false; }; "addonButtonAriaHidden": { "alias": "addonButtonAriaHidden"; "required": false; }; "iconTitle": { "alias": "iconTitle"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "addOnButtonClicked": "addOnButtonClicked"; "search": "search"; }, ["inputElement", "addOnElement"], ["*"], true, [{ directive: typeof i1.CvaDirective; inputs: { "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "state": "state"; "name": "name"; "stateMessage": "stateMessage"; "type": "type"; }; outputs: {}; }]>;
}
