import { ElementRef, QueryList, AfterContentInit } from '@angular/core';
import { IgxHintDirective } from '../directives/hint/hint.directive';
import { IgxInputDirective } from '../directives/input/input.directive';
import { IDisplayDensityOptions, DisplayDensityBase } from '../core/displayDensity';
import { IgxInputGroupBase } from './input-group.common';
import { IgxInputGroupType } from './inputGroupType';
declare const IgxInputGroupTheme: {
    Material: "material";
    Fluent: "fluent";
    Bootstrap: "bootstrap";
    IndigoDesign: "indigo-design";
};
/**
 * Determines the Input Group theme.
 */
export declare type IgxInputGroupTheme = (typeof IgxInputGroupTheme)[keyof typeof IgxInputGroupTheme];
export declare class IgxInputGroupComponent extends DisplayDensityBase implements IgxInputGroupBase, AfterContentInit {
    element: ElementRef<HTMLElement>;
    private _inputGroupType;
    private document;
    /**
     * Property that enables/disables the autogenerated class of the `IgxInputGroupComponent`.
     * By default applied the class is applied.
     * ```typescript
     *  @ViewChild("MyInputGroup")
     *  public inputGroup: IgxInputGroupComponent;
     *  ngAfterViewInit(){
     *  this.inputGroup.defaultClass = false;
     * ```
     * }
     */
    defaultClass: boolean;
    /** @hidden */
    hasPlaceholder: boolean;
    /** @hidden */
    isRequired: boolean;
    /** @hidden */
    isFocused: boolean;
    /**
     * An @Input property that disables the `IgxInputGroupComponent`.
     * ```html
     * <igx-input-group [disabled]="'true'"></igx-input-group>
     * ```
     */
    disabled: boolean;
    /**
     * Prevents automatically focusing the input when clicking on other elements in the input group (e.g. prefix or suffix).
     *
     * @remarks Automatic focus causes software keyboard to show on mobile devices.
     *
     * @example
     * ```html
     * <igx-input-group [suppressInputAutofocus]="true"></igx-input-group>
     * ```
     */
    suppressInputAutofocus: boolean;
    /** @hidden */
    hasWarning: boolean;
    /** @hidden */
    protected hints: QueryList<IgxHintDirective>;
    /** @hidden */
    protected input: IgxInputDirective;
    private _type;
    private _filled;
    private _variant;
    /** @hidden */
    get validClass(): boolean;
    /** @hidden */
    get invalidClass(): boolean;
    /** @hidden */
    get isFilled(): any;
    /** @hidden */
    get isDisplayDensityCosy(): boolean;
    /** @hidden */
    get isDisplayDensityComfortable(): boolean;
    /** @hidden */
    get isDisplayDensityCompact(): boolean;
    /**
     * An @Input property that sets how the input will be styled.
     * Allowed values of type IgxInputGroupType.
     * ```html
     * <igx-input-group [type]="'search'">
     * ```
     */
    set type(value: IgxInputGroupType);
    /**
     * Returns the type of the `IgxInputGroupComponent`. How the input is styled.
     * The default is `line`.
     * ```typescript
     * @ViewChild("MyInputGroup")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let inputType = this.inputGroup.type;
     * }
     * ```
     */
    get type(): IgxInputGroupType;
    /**
     * Sets the theme of the input.
     * Allowed values of type IgxInputGroupTheme.
     * ```typescript
     * @ViewChild("MyInputGroup")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit() {
     *  let inputTheme = 'fluent';
     * }
     */
    set theme(variant: IgxInputGroupTheme);
    /**
     * Returns the theme of the input.
     * The returned value is of tyep IgxInputGroupType.
     * ```typescript
     * @ViewChild("MyInputGroup")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit() {
     *  let inputTheme = this.inputGroup.theme;
     * }
     */
    get theme(): IgxInputGroupTheme;
    /**
     * @hidden
     * @deprecated Use 'suppressInputAutofocus' instead.
     */
    get supressInputAutofocus(): boolean;
    /**
     * @hidden
     * @deprecated Use 'suppressInputAutofocus' instead.
     */
    set supressInputAutofocus(value: boolean);
    constructor(element: ElementRef<HTMLElement>, _displayDensityOptions: IDisplayDensityOptions, _inputGroupType: IgxInputGroupType, document: any);
    /** @hidden */
    onClick(event: MouseEvent): void;
    /** @hidden */
    onPointerDown(event: PointerEvent): void;
    hintClickHandler(event: any): void;
    ngAfterContentInit(): void;
    /**
     * Returns whether the `IgxInputGroupComponent` has hints.
     * ```typescript
     * @ViewChild("MyInputGroup")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let inputHints = this.inputGroup.hasHints;
     * }
     * ```
     */
    get hasHints(): boolean;
    /**
     * Returns whether the `IgxInputGroupComponent` has border.
     * ```typescript
     * @ViewChild("MyInputGroup")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let inputBorder = this.inputGroup.hasBorder;
     * }
     * ```
     */
    get hasBorder(): boolean;
    /**
     * Returns whether the `IgxInputGroupComponent` type is line.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeLine = this.inputGroup.isTypeLine;
     * }
     * ```
     */
    get isTypeLine(): boolean;
    /**
     * Returns whether the `IgxInputGroupComponent` type is box.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeBox = this.inputGroup.isTypeBox;
     * }
     * ```
     */
    get isTypeBox(): boolean;
    /**
     * Returns whether the `IgxInputGroupComponent` type is border.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeBorder = this.inputGroup.isTypeBorder;
     * }
     * ```
     */
    get isTypeBorder(): boolean;
    /**
     * Returns true if the `IgxInputGroupComponent` theme is Fluent.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeFluent = this.inputGroup.isTypeFluent;
     * }
     * ```
     */
    get isTypeFluent(): boolean;
    /**
     * Returns true if the `IgxInputGroupComponent` theme is Bootstrap.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeBootstrap = this.inputGroup.isTypeBootstrap;
     * }
     * ```
     */
    get isTypeBootstrap(): boolean;
    /**
     * Returns true if the `IgxInputGroupComponent` theme is Indigo.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeIndigo = this.inputGroup.isTypeIndigo;
     * }
     * ```
     */
    get isTypeIndigo(): boolean;
    /**
     * Returns whether the `IgxInputGroupComponent` type is search.
     * ```typescript
     * @ViewChild("MyInputGroup1")
     * public inputGroup: IgxInputGroupComponent;
     * ngAfterViewInit(){
     *    let isTypeSearch = this.inputGroup.isTypeSearch;
     * }
     * ```
     */
    get isTypeSearch(): boolean;
    /** @hidden */
    get filled(): boolean;
    /** @hidden */
    set filled(val: boolean);
}
/** @hidden */
export declare class IgxInputGroupModule {
}
export {};
