import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, UntypedFormControl } from '@angular/forms';
import { Observable, BehaviorSubject } from 'rxjs';
import { FilterPipe } from '../../pipes/filter.pipe';
import * as i0 from "@angular/core";
/**
 *
 * @description A wrapper component build on top of mat-select and ngx-mat-select-search to give search functionality to the the dropdown along with close button.
 * This component can be used with Angular Forms and supports 2 way data binding using ngModel.
 *
 * @author Prerak Tiwari
 */
export declare class SelectComponent implements OnInit, ControlValueAccessor, OnChanges {
    private filter;
    /**
     * @description Object array using which select box option needs to be populated.
     */
    values: any[];
    /**
     * @description Key of the object which needs to be assigned to 'value' field of select box
     */
    key: string;
    /**
     * @description Value(s) which needs to be displayed to user
     */
    value: string | string[];
    /**
     * @description Select box label
     */
    label: string;
    /**
     * @description set true if select box is required
     */
    required: boolean;
    /**
     * @description set true if multiple values can be selected
     */
    multiple: boolean;
    valuesBs: BehaviorSubject<any[]>;
    filteredValues: Observable<[]>;
    searchCtrl: UntypedFormControl;
    dropDown: UntypedFormControl;
    private onChange;
    private onTouch;
    constructor(filter: FilterPipe);
    ngOnChanges(changes: SimpleChanges): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    ngOnInit(): void;
    getDesc(object: any, arg: string | string[]): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "app-select", never, { "values": { "alias": "values"; "required": false; }; "key": { "alias": "key"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=select.component.d.ts.map