import { AfterContentInit, ElementRef, OnChanges, Renderer2, SimpleChanges, DoCheck, OnDestroy, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
import { NgControl, SelectMultipleControlValueAccessor } from '@angular/forms';
import * as i0 from "@angular/core";
export declare class EuiSelectComponent implements AfterContentInit, OnChanges, DoCheck, OnDestroy {
    private _renderer;
    private _elementRef;
    private control;
    private componentFactoryResolver;
    private viewContainerRef;
    get isInvalid(): any;
    set isInvalid(state: any);
    protected _isInvalid: boolean;
    get multiple(): boolean;
    set multiple(value: boolean | null);
    get id(): string;
    set id(value: string | null);
    get cssClasses(): any;
    readonly: boolean;
    placeholder: string;
    protected _placeholder: HTMLOptionElement;
    protected element: HTMLSelectElement;
    protected renderer: Renderer2;
    protected _id: string;
    protected _multiple: any;
    private destroy$;
    private readonlyInput;
    constructor(_renderer: Renderer2, _elementRef: ElementRef, control: NgControl, componentFactoryResolver: ComponentFactoryResolver, viewContainerRef: ViewContainerRef);
    ngAfterContentInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    /**
     * Listener that triggers when selected value changes
     * @param selected the value which is selected
     */
    valueChanges(selected: any): void;
    /**
     * calculates and set's the invalid state based on the provided one. If NG_VALUE_ACCESSOR is provided
     * then control invalid attribute has priority.
     * @param state
     * @protected
     */
    protected setInvalid(state?: any): void;
    /**
     * returns string of classes
     * @protected
     */
    protected getCssClasses(): string;
    /**
     * set the id attribute of the element
     * @param value the ID attribute (https://www.w3schools.com/html/html_id.asp)
     * @protected
     */
    protected setIdAttribute(value?: string | null): void;
    static ɵfac: i0.ɵɵFactoryDef<EuiSelectComponent, [null, null, { optional: true; self: true; }, null, null]>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<EuiSelectComponent, "select[euiSelect]", never, { "isInvalid": "isInvalid"; "multiple": "multiple"; "id": "id"; "readonly": "readonly"; "placeholder": "placeholder"; }, {}, never, ["*"]>;
}
/**
 * Extend the SelectMultipleControlValueAccessor to meet eUI requirements
 */
export declare class EuiSelectMultipleControlValueAccessor extends SelectMultipleControlValueAccessor {
    private elementRef;
    constructor(_renderer: Renderer2, _elementRef: ElementRef);
    /**
     * Override writeValue and check for null value when forms resets
     * @param value The selected value or null in case of form reset
     */
    writeValue(value: any): void;
}
