import { ESLBaseElement } from '../../../esl-base-element/core';
/** Interface for option definition */
export interface ESLSelectOption {
    /** Label text of the option */
    text: string;
    /** Value of the option */
    value: string;
    /** Disabled marker */
    disabled: boolean;
    /** Selected marker */
    selected: boolean;
    /** Initially selected marker */
    defaultSelected: boolean;
}
/** Interface to declare options source for select components */
export interface ESLSelectModel {
    /** Allow multiple items */
    multiple: boolean;
    /** Get list of options */
    options: ESLSelectOption[];
    /** Get list of selected options */
    selectedOptions: ESLSelectOption[];
    /** Toggle option with passed value to the state */
    setSelected(value: string, state: boolean): void;
    /** Check selected state*/
    isSelected(value: string): boolean;
    /** Has selected options */
    hasSelected(): boolean;
    /** Check that all options are selected */
    isAllSelected(): boolean;
    /** Toggle all options to the state */
    setAllSelected(state: boolean): void;
}
/**
 * Base class for {@link HTMLSelectElement} wrapper element, implements {@link ESLSelectModel} options source
 */
export declare abstract class ESLSelectWrapper extends ESLBaseElement implements ESLSelectModel {
    protected static observationConfig: MutationObserverInit;
    private _$select;
    private _mutationObserver;
    /** Native select that is wrapped */
    get $select(): HTMLSelectElement;
    set $select(select: HTMLSelectElement);
    protected connectedCallback(): void;
    protected disconnectedCallback(): void;
    protected _onChange(event?: Event): void;
    protected _onListChange(): void;
    protected _onTargetChange(newTarget: HTMLSelectElement | undefined, oldTarget: HTMLSelectElement | undefined): void;
    protected _onTargetMutation(changes: MutationRecord[]): void;
    protected _onReset(event: Event): void;
    get multiple(): boolean;
    get options(): ESLSelectOption[];
    get selectedOptions(): ESLSelectOption[];
    protected getOption(value: string): ESLSelectOption | undefined;
    setSelected(value: string, state: boolean): void;
    isSelected(value: string): boolean;
    hasSelected(): boolean;
    isAllSelected(): boolean;
    setAllSelected(state: boolean): void;
    get value(): string | undefined;
    get values(): string[];
    get form(): HTMLFormElement | null;
    get name(): string;
    set name(name: string);
    get required(): boolean;
    set required(required: boolean);
    get validity(): ValidityState;
    get validationMessage(): string;
    get willValidate(): boolean;
    checkValidity(): boolean;
    reportValidity(): boolean;
    setCustomValidity(error: string): void;
}
