import { DoCheck } from '@angular/core';
import { ControlValueAccessor, SelectMultipleControlValueAccessor } from '@angular/forms';
import { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';
import { BooleanInput } from '@angular/cdk/coercion';
import * as i0 from "@angular/core";
/**
 * @description
 * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select
 * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and
 * `NgModel` directives.
 *
 * @see `EuiSelectControlValueAccessor`
 *
 * @usageNotes
 *
 * ### Using a multi-select control
 *
 * The follow example shows you how to use a multi-select control with a reactive form.
 *
 * ```ts
 * const countryControl = new FormControl();
 * ```
 *
 * ```
 * <select euiSelect multiple name="countries" [formControl]="countryControl">
 *   <option euiOption *ngFor="let country of countries" [ngValue]="country">
 *     {{ country.name }}
 *   </option>
 * </select>
 * ```
 *
 * ### Customizing option selection
 *
 * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.
 * See the `SelectControlValueAccessor` for usage.
 *
 * @ngModule ReactiveFormsModule
 * @ngModule FormsModule
 * @publicApi
 */
export declare class EuiSelectMultipleControlValueAccessor extends SelectMultipleControlValueAccessor implements ControlValueAccessor, DoCheck {
    get isInvalid(): boolean;
    set isInvalid(state: BooleanInput);
    /**
     * The current value.
     *
     * @nodoc
     */
    value: any;
    /** @internal */
    _optionMap: Map<string, EuiSelectMultipleOption>;
    /** @internal */
    _idCounter: number;
    protected _isInvalid: boolean;
    private elementRef;
    private renderer;
    private control;
    private selectComponent;
    private injector;
    constructor();
    ngDoCheck(): void;
    /**
     * Sets the "value" property on one or of more of the select's options.
     *
     * @nodoc
     */
    writeValue(value: any): void;
    /**
     * Registers a function called when the control value changes
     * and writes an array of the selected options.
     *
     * @nodoc
     */
    registerOnChange(fn: (value: any) => any): void;
    registerOnTouched(fn: any): void;
    /** @internal */
    _registerOption(value: EuiSelectMultipleOption): string;
    /** @internal */
    _getOptionId(value: any): string | null;
    /** @internal */
    _getOptionValue(valueString: string): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiSelectMultipleControlValueAccessor, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EuiSelectMultipleControlValueAccessor, "select[multiple][formControlName][euiSelect],select[multiple][formControl][euiSelect],select[multiple][ngModel][euiSelect]", never, { "isInvalid": { "alias": "isInvalid"; "required": false; }; }, {}, never, never, true, never>;
}
//# sourceMappingURL=eui-select-multiple.directive.d.ts.map