/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { SelectOptionBuilder, SelectSelectedTextBuilder, ISelectOption, ISelectOptionGroup, SelectBeforeValueChangeCallback } from './base-select-constants';
import { IBaseSelectFoundation } from './base-select-foundation';
import { IListDropdownAware, ListDropdownAware } from '../../list-dropdown/list-dropdown-aware';
import { IPopupComponent } from '../../popup';
export interface IBaseSelectComponent extends IListDropdownAware {
    value: any;
    selectedIndex: number | number[];
    options: ISelectOption[] | ISelectOptionGroup[];
    multiple: boolean;
    open: boolean;
    optionBuilder: SelectOptionBuilder;
    selectedTextBuilder: SelectSelectedTextBuilder;
    popupElement: IPopupComponent | undefined;
    beforeValueChange: SelectBeforeValueChangeCallback<any>;
    appendOptions(options: ISelectOption[] | ISelectOption[]): void;
    selectAll(): void;
    deselectAll(): void;
}
export declare abstract class BaseSelectComponent<T extends IBaseSelectFoundation> extends ListDropdownAware implements IBaseSelectComponent {
    protected _foundation: T;
    constructor();
    /** Gets/sets the value. */
    value: any;
    /** Gets/sets the selected index. */
    selectedIndex: number | number[];
    /** Gets/sets the available options. */
    options: ISelectOption[] | ISelectOptionGroup[];
    /** Gets/sets the multiple select state. */
    multiple: boolean;
    /** Gets the open state of the dropdown. */
    open: boolean;
    /** Sets the option builder callback that will be executed when building the option list in the dropdown. */
    optionBuilder: SelectOptionBuilder;
    /** Sets the selected text builder callback that will be executed when getting the selected text to display in the field. */
    selectedTextBuilder: SelectSelectedTextBuilder;
    /** Sets the callback to be executed when the user selects a value. */
    beforeValueChange: SelectBeforeValueChangeCallback<any>;
    /**
     * Gets the popup element (when the dropdown is open).
     * @readonly
     */
    popupElement: IPopupComponent | undefined;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    appendOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;
    selectAll(): void;
    deselectAll(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
}
