import { AfterViewInit, ElementRef, Injector, OnDestroy, OnInit } from '@angular/core';
import { UntypedFormControl } from '@angular/forms';
import { MatSelect, MatSelectChange } from '@angular/material/select';
import { Subscription } from 'rxjs';
import { FormValueOptions } from '../../../types/form-value-options.type';
import { OFormValue } from '../../form/o-form-value';
import { OFormComponent } from '../../form/o-form.component';
import { OFormServiceComponent } from '../o-form-service-component.class';
import { OComboCustomRenderer } from './combo-renderer/o-combo-renderer.class';
import { OComboSearchComponent } from './combo-search/o-combo-search.component';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_COMBO: string[];
export declare class OComboComponent extends OFormServiceComponent implements OnInit, AfterViewInit, OnDestroy {
    value: OFormValue;
    searchControl: UntypedFormControl;
    renderer: OComboCustomRenderer;
    multiple: boolean;
    multipleTriggerLabel: boolean;
    searchable: boolean;
    protected nullSelection: boolean;
    nullSelectionLabel: string;
    protected inputModel: ElementRef;
    protected selectModel: MatSelect;
    protected comboSearch: OComboSearchComponent;
    protected _filteredDataArray: any[];
    set filteredDataArray(data: any);
    get filteredDataArray(): any;
    protected subscription: Subscription;
    constructor(form: OFormComponent, elRef: ElementRef, injector: Injector);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    initialize(): void;
    ensureOFormValue(value: any): void;
    setDataArray(data: any): void;
    getDataArray(): any[];
    getFilteredDataArray(): any[];
    hasNullSelection(): boolean;
    syncDataIndex(queryIfNotFound?: boolean): void;
    getValue(): any;
    getEmptyValue(): any;
    isEmpty(): boolean;
    clearValue(options?: FormValueOptions, setDirty?: boolean): void;
    get showClearButton(): boolean;
    getMultiple(): boolean;
    onSelectionChange(event: MatSelectChange): void;
    getValueColumn(item: any): any;
    isSelected(item: any, rowIndex: number): boolean;
    setValue(val: any, options?: FormValueOptions, setDirty?: boolean): void;
    getSelectedItems(): any[];
    setSelectedItems(values: any[]): void;
    getFirstSelectedValue(): void;
    protected setIsReadOnly(value: boolean): void;
    protected parseByValueColumnType(val: any): any;
    protected searchFilter(): void;
    registerRenderer(renderer: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OComboComponent, [{ optional: true; }, null, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OComboComponent, "o-combo", never, { "multiple": "multiple"; "nullSelection": "null-selection"; "multipleTriggerLabel": "multiple-trigger-label"; "searchable": "searchable"; "nullSelectionLabel": "null-selection-label"; }, {}, never, never, false, never>;
}
