/**
 * An enhanced version of the primeng multiselect but with list.
 *
 * @author Gisler Garces <ggarces@alertlogic.com>
 * @author Fábio Miranda <fmiranda@alertlogic.com>
 * @author Andres Echeverri <andres.echeverri@alertlogic.com>
 * @copyright 2020 Alert Logic, Inc.
 */
import { EventEmitter } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { MultiSelect } from 'primeng-lts/multiselect';
import { AlSelectableListComponent } from "../al-selectable-list/al-selectable-list.component";
import { AlChipItem, AlSelectItem } from '../types';
import * as i0 from "@angular/core";
export declare class AlMultiSelectListComponent<T = any> implements ControlValueAccessor {
    control: NgControl;
    placeholder: string;
    options: AlSelectItem<T>[] | AlChipItem<T>[];
    readonly: boolean;
    selectableListMode: 'list' | 'chips';
    filter: boolean;
    inline: boolean;
    value: T[] | null;
    isDisabled: boolean;
    primeMultiSelect: MultiSelect;
    selectableList: AlSelectableListComponent;
    onSelectionChanged: EventEmitter<T[]>;
    constructor(control: NgControl);
    ngOnInit(): void;
    onChangeFn: (value: T[]) => void;
    onTouchFn: () => void;
    /**
     * Function which triggers when an item is selected from the dropdown list
     * @param event The prime-ng event with the selected items and the last changed item
     **/
    selectOption(event: {
        value: T[];
        itemValue?: T;
    }): void;
    changeValue(selectedOptions: T[]): void;
    writeValue(value: T[]): void;
    registerOnChange(fn: (value: T[] | null) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState?(isDisabled: boolean): void;
    get invalid(): boolean;
    static ɵfac: i0.ɵɵFactoryDef<AlMultiSelectListComponent<any>, [{ optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<AlMultiSelectListComponent<any>, "al-multiselect-list", never, { "placeholder": "placeholder"; "options": "options"; "readonly": "readonly"; "selectableListMode": "selectableListMode"; "filter": "filter"; "inline": "inline"; }, { "onSelectionChanged": "onSelectionChanged"; }, never, never>;
}
