/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IBaseSelectFoundation, ISelectOption, BaseSelectFoundation } from '../core';
import { ISelectAdapter } from './select-adapter';
import { FieldDensityType, FieldFloatLabelType, FieldShapeType } from '../../field/field-constants';
export interface ISelectFoundation extends IBaseSelectFoundation {
    label: string;
    disabled: boolean;
    density: FieldDensityType;
    invalid: boolean;
    required: boolean;
    floatLabelType: FieldFloatLabelType;
    placeholder: string;
}
/**
 * The foundation class behind the `<forge-select>` component.
 */
export declare class SelectFoundation extends BaseSelectFoundation<ISelectAdapter> implements ISelectFoundation {
    private _floatingLabelInstance;
    private _shape;
    private _label;
    private _disabled;
    private _invalid;
    private _required;
    private _floatLabelType;
    private _placeholder;
    private _density;
    private _isInitialized;
    private _leadingChangeListener;
    private _addonEndChangeListener;
    private _mousedownListener;
    constructor(adapter: ISelectAdapter);
    initialize(): void;
    disconnect(): void;
    private _initializeLabel;
    private _destroyLabel;
    protected _initializeValue(): void;
    private _initializeAccessibility;
    private _onMouseDown;
    /** Called when the `slotchange` event fires on the "leading" slot element. */
    private _onLeadingSlotChanged;
    /** Called when the `slotchange` event fires on the "addon-end" slot element. */
    private _onAddonEndSlotChanged;
    /** Updates the component state based on the existance of elements within the "leading" slot. */
    private _detectLeadingElement;
    private _detectAddonEndContent;
    protected _onClick(evt: MouseEvent): void;
    /** Handles receiving focus on the selected text element. */
    protected _onFocus(evt: Event): void;
    protected _floatLabel(value: boolean): void;
    /** Handles losing focus on the selected text element. */
    protected _onBlur(evt: FocusEvent): void;
    protected _onDismiss(): void;
    protected _onDropdownScrollEnd(): void;
    /**
     * Handles selecting an item in the dropdown.
     * @param {ISelectOption} option The selected option.
     * @param {number} optionIndex The index of the selected option.
     */
    protected _onSelect(option: ISelectOption, optionIndex: number, closeDropdown?: boolean): Promise<boolean>;
    /** Updates the state of the component to contain focus. */
    private _setFocused;
    /** Updates the state of the component to not contain focus. */
    private _setBlurred;
    /** Resets the state of the component to original values. */
    protected _reset(): void;
    private _updateLabel;
    protected _applyValue(value: string | string[]): void;
    private _applyDensity;
    protected _setShapeType(): void;
    setFocus(): void;
    /** Gets/sets the label text. */
    get label(): string;
    set label(value: string);
    get shape(): FieldShapeType;
    set shape(value: FieldShapeType);
    /** Gets/sets the disabled state. */
    get disabled(): boolean;
    set disabled(value: boolean);
    /** Gets/sets the invalid state. */
    get invalid(): boolean;
    set invalid(value: boolean);
    /** Gets/sets the required state which controls the visibility of the asterisk in the label. */
    get required(): boolean;
    set required(value: boolean);
    /** Gets/sets the dense state. */
    get density(): FieldDensityType;
    set density(value: FieldDensityType);
    /** Gets/sets the floating label type. */
    get floatLabelType(): FieldFloatLabelType;
    set floatLabelType(value: FieldFloatLabelType);
    /** Gets/sets the placeholder text. */
    get placeholder(): string;
    set placeholder(value: string);
}
