import { SimpleChanges, ElementRef, ChangeDetectorRef, EventEmitter } from '@angular/core';
import { FormGroup, AbstractControl } from '@angular/forms';
import { Subscription } from 'rxjs';
import { IpiSelectData } from '@ipi-soft/ng-components/select';
import { TooltipPosition } from '@ipi-soft/ng-components/tooltip';
import { IpiControlErrors } from '@ipi-soft/ng-components/input';
import * as i0 from "@angular/core";
export interface IpiListBoxOptions {
    data: IpiSelectData[];
    label?: string;
    tooltip?: string;
    formGroup?: FormGroup;
    formControlName?: string;
    errors?: IpiControlErrors;
}
export declare class IpiListboxComponent {
    private elementRef;
    private changeDetectorRef;
    constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef);
    listbox: ElementRef<HTMLDivElement> | null;
    options: IpiListBoxOptions;
    selectChange: EventEmitter<IpiSelectData[]>;
    tooltipPosition: typeof TooltipPosition;
    controlError: string;
    controlInvalid: boolean;
    control: AbstractControl | null;
    controlSubscription: Subscription | null;
    private documentKeyupValue;
    private documentKeyupValueResetTime;
    private documentKeyDownSubscription;
    private isMetaHold;
    private isShiftHold;
    private lastSelectedItemIndex;
    private lastSelectedItemIndexOnShiftHold;
    private selectedItems;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    mousedown(targetItem: HTMLDivElement): void;
    mouseup(): void;
    keyup(event: KeyboardEvent): void;
    private mouseover;
    private keydown;
    private documentArrowsKeyup;
    private documentKeyup;
    private addSelectedItems;
    private removeSelectedItems;
    private getControl;
    private checkIfControlInvalid;
    private getControlError;
    static ɵfac: i0.ɵɵFactoryDeclaration<IpiListboxComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IpiListboxComponent, "ipi-listbox", never, { "options": { "alias": "options"; "required": false; }; }, { "selectChange": "selectChange"; }, never, never, true, never>;
}
