import { EventEmitter } from '@angular/core'; import * as i0 from "@angular/core"; /** * A common base class to handle value for single and multiple selection. * {@link MultiSelectDirectiveBase} and {@link SingleSelectDirectiveBase} implement and * provide this interface. Note that the main purpose for such design is **not** * to abstract out selection behavior. But to have accurate `value` and `valueChange` * type for single and multiple selection mode. It would be possible to fully abstract out * the selection behavior, and have Select component not know anything about selection being * multiple or not, but it doesn't seem such a clear abstraction, and also not worth the additional * complexity. * * At least one directive has to be defined for each select component to provide SelectValueHolder, * extending either {@link MultiSelectDirectiveBase} or {@link SingleSelectDirectiveBase} */ export declare abstract class SelectValueHolder { abstract value: T; abstract valueChange: EventEmitter; abstract setFromListboxValue(value: readonly string[]): void; abstract getListboxValue(): readonly string[]; } /** * Enables multiple selection. When present, `value` will be of type `string[]`, and `valueChange` * will emit `string[]`. * * Each select component can define a directive with the right selector (usually based on * the presence of `multiple` attribute) to enable multiple selection. */ export declare class MultiSelectDirectiveBase extends SelectValueHolder { value: string[]; valueChange: EventEmitter; setFromListboxValue(value: string[]): void; getListboxValue(): readonly string[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } /** * Enables single selection, the default behavior of select. * When present, `value` will be of type `string`, and `valueChange` will emit `string`. * * Each select component has to define a directive with the right selector (usually based on * the absence of `multiple` attribute) to enable single selection. */ export declare class SingleSelectDirectiveBase extends SelectValueHolder { get value(): string; set value(value: string); private _value; private values; valueChange: EventEmitter; setFromListboxValue(value: string[]): void; getListboxValue(): readonly string[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; }