import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
import { AgRendererComponent } from 'ag-grid-angular';
import { GetRowIdParams, GridOptions } from 'ag-grid-community';
import { PreferencesService } from 'systelab-preferences';
import * as i0 from "@angular/core";
export declare abstract class AbstractComboBox<T> implements AgRendererComponent, OnInit, OnDestroy {
    myRenderer: Renderer2;
    chRef: ChangeDetectorRef;
    preferencesService?: PreferencesService;
    static ROW_HEIGHT: number;
    static DROPDOWN_MENU_MARGIN: number;
    input: ElementRef;
    filterInput: ElementRef;
    comboId: string;
    customInputRenderer: any;
    initialParams: any;
    filter: boolean;
    multipleSelection: boolean;
    listSelectedValues: boolean;
    allElement: boolean;
    fontFamily: string;
    fontSize: string;
    fontWeight: string;
    fontStyle: string;
    withIcon: boolean;
    withDeleteOption: boolean;
    defaultIdValue: string | number;
    defaultDescription: string;
    defaultCode: string;
    iconClass: string;
    inputColor: string;
    iconColor: string;
    tabindex: number;
    deleteIconClass: string;
    withEmptyValue: boolean;
    getAllFieldIDValue(): string | number;
    getAllFieldDescriptionValue(): string;
    getAllCodeFieldValue(): string;
    getAllInstance(): T;
    _values: Array<any>;
    set values(newValues: Array<any>);
    get values(): Array<any>;
    isDisabled: boolean;
    expandToParentContainerHeight: boolean;
    change: EventEmitter<any>;
    idChange: EventEmitter<any>;
    descriptionChange: EventEmitter<any>;
    levelChange: EventEmitter<any>;
    allowEditInput: boolean;
    emptyElement: boolean;
    selectDeselectAll: boolean;
    withFavourites: boolean;
    preferenceName: string;
    isFavourite: boolean;
    favouriteList: Array<string | number>;
    isTree: boolean;
    _id: number | string;
    set id(value: number | string);
    get id(): number | string;
    _description: string;
    set description(value: string);
    get description(): string;
    _level: number;
    set level(value: number);
    get level(): number;
    _fieldToShow: string;
    set fieldToShow(value: string);
    get fieldToShow(): string;
    fieldToShowChange: EventEmitter<any>;
    _code: string;
    set code(value: string);
    get code(): string;
    codeChange: EventEmitter<any>;
    _multipleSelectedItemList: Array<T>;
    set multipleSelectedItemList(value: Array<T>);
    get multipleSelectedItemList(): Array<T>;
    multipleSelectedItemListChange: EventEmitter<any>;
    multipleSelectedIDListChange: EventEmitter<any>;
    selectedItemChange: EventEmitter<any>;
    comboboxElement: ElementRef;
    dropdownToogleElement: ElementRef;
    dropdownMenuElement: ElementRef;
    dropdownElement: ElementRef;
    inputElement: ElementRef;
    hiddenElement: ElementRef;
    filterValue: string;
    currentSelected: any;
    selectionChanged: boolean;
    gridOptions: GridOptions;
    columnDefs: Array<any>;
    params: any;
    top: number;
    left: number;
    windowResized: boolean;
    isDropdownOpened: boolean;
    windowScrollHandler: any;
    private calculatedGridState;
    private scrollTimeout;
    constructor(myRenderer: Renderer2, chRef: ChangeDetectorRef, preferencesService?: PreferencesService);
    ngOnInit(): void;
    private setStyle;
    protected setDescriptionAndCodeWhenMultiple(value: Array<T>): void;
    protected initializeFavouriteList(): void;
    protected configGrid(): void;
    protected getRowNodeId(item: GetRowIdParams): string | number | undefined;
    protected configGridData(): void;
    protected setRowHeight(): void;
    abstract getInstance(): T;
    abstract getDescriptionField(): string;
    abstract getCodeField(): string;
    abstract getIdField(): string;
    refresh(params: any): boolean;
    agInit(params: any): void;
    getInputHeight(): {
        height: string;
    };
    protected getComboPreferencesPrefix(): string;
    doToggleFavourite(event: MouseEvent): void;
    deleteValueSelected(event: MouseEvent): void;
    onComboClicked(event: any): void;
    onComboKeyArrowDown(event: any): void;
    onComboKeyArrowUp(event: any): void;
    protected toggleFavourite(): void;
    setDropdownWidth(): void;
    isDropDownOpen(): boolean;
    closeDropDown(): void;
    resetDropDownPositionAndHeight(): void;
    loop(): void;
    protected transferFocusToGrid(): void;
    onCellKeyDown(e: any): void;
    showDropDown(): void;
    clickDropDownMenu(e: Event): void;
    setDropdownHeight(): void;
    protected getTotalItemsInCombo(): number;
    protected getTotalItemsForDropdownHeight(): number;
    setDropdownPosition(): void;
    getSelectedRow(): T;
    doSearch(event: any): void;
    doFilter(): void;
    doSelectAll(): void;
    doDeselectAll(): void;
    onSelectionChanged(event: any): void;
    protected checkIfIsFavourite(id: string | number): void;
    onModelUpdated(): void;
    setGridSize(): void;
    onRowSelected(event: any): void;
    private unselectAllNodesInGridOptions;
    private unselectNodeAllInGridOptions;
    setCodeDescriptionById(): void;
    onResize(): void;
    protected isComboBoxScrolling(element: HTMLElement): boolean;
    protected scroll(event: any): void;
    protected addWindowScrollHandler(): void;
    protected removeWindowScrollHandler(): void;
    protected addGridScrollHandler(): void;
    protected removeGridScrollHandler(): void;
    ngOnDestroy(): void;
    removeItem(item: T): void;
    private selectionItemListToIDList;
    checkMultipleSelectionClosed(): void;
    doGridReady(): void;
    private onBodyScroll;
    protected doAutoSizeManagement(event?: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractComboBox<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractComboBox<any>, never, never, { "customInputRenderer": { "alias": "customInputRenderer"; "required": false; }; "initialParams": { "alias": "initialParams"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "multipleSelection": { "alias": "multipleSelection"; "required": false; }; "listSelectedValues": { "alias": "listSelectedValues"; "required": false; }; "allElement": { "alias": "allElement"; "required": false; }; "fontFamily": { "alias": "fontFamily"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "fontWeight": { "alias": "fontWeight"; "required": false; }; "fontStyle": { "alias": "fontStyle"; "required": false; }; "withIcon": { "alias": "withIcon"; "required": false; }; "withDeleteOption": { "alias": "withDeleteOption"; "required": false; }; "defaultIdValue": { "alias": "defaultIdValue"; "required": false; }; "defaultDescription": { "alias": "defaultDescription"; "required": false; }; "defaultCode": { "alias": "defaultCode"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": false; }; "inputColor": { "alias": "inputColor"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "deleteIconClass": { "alias": "deleteIconClass"; "required": false; }; "withEmptyValue": { "alias": "withEmptyValue"; "required": false; }; "values": { "alias": "values"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "expandToParentContainerHeight": { "alias": "expandToParentContainerHeight"; "required": false; }; "allowEditInput": { "alias": "allowEditInput"; "required": false; }; "emptyElement": { "alias": "emptyElement"; "required": false; }; "selectDeselectAll": { "alias": "selectDeselectAll"; "required": false; }; "withFavourites": { "alias": "withFavourites"; "required": false; }; "preferenceName": { "alias": "preferenceName"; "required": false; }; "id": { "alias": "id"; "required": false; }; "description": { "alias": "description"; "required": false; }; "level": { "alias": "level"; "required": false; }; "fieldToShow": { "alias": "fieldToShow"; "required": false; }; "code": { "alias": "code"; "required": false; }; "multipleSelectedItemList": { "alias": "multipleSelectedItemList"; "required": false; }; }, { "change": "change"; "idChange": "idChange"; "descriptionChange": "descriptionChange"; "levelChange": "levelChange"; "fieldToShowChange": "fieldToShowChange"; "codeChange": "codeChange"; "multipleSelectedItemListChange": "multipleSelectedItemListChange"; "multipleSelectedIDListChange": "multipleSelectedIDListChange"; "selectedItemChange": "selectedItemChange"; }, never, never, false, never>;
}
