/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseAdapter, IBaseAdapter } from '../core/base';
import { IFocusIndicatorComponent } from '../focus-indicator';
import { FieldLabelPosition } from './base/base-field-constants';
import { IFieldComponent } from './field';
export interface IFieldAdapter extends IBaseAdapter<IFieldComponent> {
    readonly focusIndicator: IFocusIndicatorComponent;
    addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
    addPopoverIconClickListener(listener: EventListener): void;
    removePopoverIconClickListener(listener: EventListener): void;
    attachResizeContainer(): void;
    removeResizeContainer(): void;
    setLabelPosition(value: FieldLabelPosition): void;
    setFloatingLabel(value: boolean, skipAnimation?: boolean): void;
    handleSlotChange(slot: HTMLSlotElement): void;
}
export declare class FieldAdapter extends BaseAdapter<IFieldComponent> implements IFieldAdapter {
    private readonly _rootElement;
    private readonly _containerElement;
    private readonly _labelElement;
    private readonly _popoverIconElement;
    private readonly _focusIndicatorElement;
    private get _resizeContainerElement();
    get focusIndicator(): IFocusIndicatorComponent;
    constructor(component: IFieldComponent);
    addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
    addPopoverIconClickListener(listener: EventListener): void;
    removePopoverIconClickListener(listener: EventListener): void;
    /**
     * Wraps the container's children in a resizable div.
     */
    attachResizeContainer(): void;
    /**
     * Removes the resize container while retaining its children as direct children of the container.
     */
    removeResizeContainer(): void;
    /**
     * Moves the label to the start or end of the root element, ensuring that the DOM order matches
     * the visual order.
     */
    setLabelPosition(value: FieldLabelPosition): void;
    /**
     * Adds or removes animation classes on the root element.
     */
    setFloatingLabel(value: boolean, skipAnimation?: boolean): void;
    /**
     * Adds or removes a class from the root element indicating whether the slot has any assigned
     * nodes.
     */
    handleSlotChange(slot: HTMLSlotElement): void;
    /**
     * Gets `<label>` and `<forge-label>` elements from the default slot and assigns them to the
     * 'label' slot.
     */
    private _trySlotLabel;
}
