/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IFontInfo } from '@tylertech/forge-core';
import { IFloatingLabel } from '../../floating-label/floating-label';
import { ISelectComponent } from './select';
import { IBaseSelectAdapter, BaseSelectAdapter } from '../core';
import { IListDropdownConfig } from '../../list-dropdown/list-dropdown-constants';
export declare type OptionListenerDestructor = () => void;
export interface ISelectAdapter extends IBaseSelectAdapter {
    initializeFloatingLabel(): IFloatingLabel;
    initializeLabel(): void;
    hasLabel(): boolean;
    setLabel(value: string): void;
    addRootClass(name: string): void;
    removeRootClass(name: string): void;
    setPlaceholderText(value: string): void;
    setSelectedText(value: string): void;
    addMouseDownListener(listener: (evt: MouseEvent) => void): void;
    removeMouseDownListener(listener: (evt: MouseEvent) => void): void;
    setLeadingListener(listener: (evt: Event) => void): void;
    removeLeadingListener(listener: (evt: Event) => void): void;
    setAddonEndListener(listener: (evt: Event) => void): void;
    removeAddonEndListener(listener: (evt: Event) => void): void;
    hasLeadingElement(): boolean;
    setDisabled(isDisabled: boolean): void;
    setInvalid(isInvalid: boolean): void;
    setRequired(isRequired: boolean): void;
    setRoomy(isRoomy: boolean): void;
    setDense(isDense: boolean): void;
    getLabelWidth(fontSize: number, fontFamily: string): number;
    getLabelFontMetrics(): IFontInfo;
    getTargetWidth(): number;
    hasAddonEndNodes(): boolean;
    setFocus(): void;
    isWithinSelf(element: HTMLElement): boolean;
}
/**
 * The DOM adapter behind the `<forge-select>` component.
 */
export declare class SelectAdapter extends BaseSelectAdapter implements ISelectAdapter {
    private _selectElement;
    private _labelElement;
    private _selectedTextElement;
    private _leadingSlot;
    private _addonEndSlot;
    constructor(component: ISelectComponent);
    initializeLabel(): void;
    hasLabel(): boolean;
    initializeAccessibility(): void;
    initializeFloatingLabel(): IFloatingLabel;
    setLabel(value: string): void;
    addRootClass(name: string): void;
    removeRootClass(name: string): void;
    setPlaceholderText(value: string): void;
    addClickListener(listener: (evt: Event) => void): void;
    removeClickListener(listener: (evt: Event) => void): void;
    addMouseDownListener(listener: (evt: MouseEvent) => void): void;
    removeMouseDownListener(listener: (evt: MouseEvent) => void): void;
    addTargetListener(type: string, listener: (evt: Event) => void): void;
    removeTargetListener(type: string, listener: (evt: Event) => void): void;
    open(config: IListDropdownConfig): void;
    close(): void;
    updateActiveDescendant(id: string): void;
    setSelectedText(value: string): void;
    setLeadingListener(listener: (evt: Event) => void): void;
    removeLeadingListener(listener: (evt: Event) => void): void;
    setAddonEndListener(listener: (evt: Event) => void): void;
    removeAddonEndListener(listener: (evt: Event) => void): void;
    hasLeadingElement(): boolean;
    setDisabled(isDisabled: boolean): void;
    setInvalid(isInvalid: boolean): void;
    setRequired(isRequired: boolean): void;
    setRoomy(isRoomy: boolean): void;
    setDense(isDense: boolean): void;
    getLabelWidth(fontSize: number, fontFamily: string): number;
    getLabelFontMetrics(): IFontInfo;
    getTargetWidth(): number;
    hasAddonEndNodes(): boolean;
    setFocus(): void;
    isWithinSelf(element: HTMLElement): boolean;
}
