import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList, Renderer2, TemplateRef } from '@angular/core';
import { ControlValueAccessor, FormBuilder } from '@angular/forms';
import { NGXLogger } from 'ngx-logger';
import { DeviceService } from '../../layout/responsive/device.service';
import { Feature } from '../../core/enums/feature';
import { Placement } from '../../core/enums/placement';
import { Size } from '../../core/enums/size';
import { State } from '../../core/enums/state';
import { UI } from '../../core/enums/ui';
import { Width } from '../../core/enums/width';
import { BreakpointService } from '../../layout/responsive/breakpoint.service';
import { PopoverService } from '../../overlays/popover/popover.service';
import { SelectMode } from './enums';
import { IOption, Key, Options } from './model';
export declare class SelectOptionComponent {
    ui: typeof UI;
    icon: string;
    key: Key;
    label: string;
    value: any;
}
export declare class SelectComponent implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor {
    private hostRef;
    private renderer;
    private fb;
    private popover;
    private logger;
    private breakpoint;
    device: DeviceService;
    readonly host = "jnt-select-host";
    private reference;
    private destroyed;
    private _features;
    ui: typeof UI;
    get mobile(): boolean;
    private fetcher;
    private _placement;
    options: Options;
    changes: {
        selected: number;
        options: number;
    };
    selected: Key[];
    loading: boolean;
    queryControl: import("@angular/forms").FormControl;
    form: import("@angular/forms").FormGroup;
    labelField: string;
    keyField: string;
    placeholder: string;
    required: boolean;
    _mode: SelectMode;
    _size: Size;
    _width: Width;
    label: string;
    icon: string;
    queryInput: ElementRef<HTMLInputElement>;
    selectedList: ElementRef<HTMLUListElement>;
    query: ElementRef<HTMLInputElement>;
    state: State;
    optionTemplate: TemplateRef<any>;
    emptyOptionsTemplate: TemplateRef<any>;
    optionsHeaderTemplate: TemplateRef<any>;
    optionsFromMarkup: QueryList<SelectOptionComponent>;
    optionsTemplate: TemplateRef<any>;
    updated: EventEmitter<any>;
    opened: boolean;
    set placement(placement: Placement);
    get placement(): Placement;
    set mode(mode: SelectMode);
    get mode(): SelectMode;
    set features(features: Feature[]);
    get features(): Feature[];
    disabled: boolean;
    set size(size: Size);
    set width(width: Width);
    get empty(): boolean;
    loader: any;
    clickOutside(path: HTMLElement[]): void;
    focused({ target }: {
        target: HTMLElement;
        path: HTMLElement[];
    }): void;
    blurred(): void;
    onChange: (value: Key | Key[]) => void;
    onTouched: () => void;
    registerOnChange: (fn: any) => any;
    registerOnTouched: (fn: any) => any;
    constructor(hostRef: ElementRef, renderer: Renderer2, fb: FormBuilder, popover: PopoverService, logger: NGXLogger, breakpoint: BreakpointService, device: DeviceService);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    private picked;
    trackOption(index: number, option: IOption): string | number;
    toggle(option: IOption): void;
    select(option: IOption): void;
    remove(key: Key): void;
    open(): void;
    close(): void;
    writeValue(value: Key | Key[]): void;
    setDisabledState(disabled: boolean): void;
}
