/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { IFloatingLabel } from '../floating-label/floating-label';
import { IFieldAdapter } from './field-adapter';
import { FieldFloatLabelType, FieldShapeType, FieldDensityType } from './field-constants';
export interface IFieldFoundation extends ICustomElementFoundation {
    density: FieldDensityType;
    floatLabelType: FieldFloatLabelType;
    shape: FieldShapeType;
    invalid: boolean;
    required: boolean;
    floatLabel(value: boolean, alwaysFloat?: boolean): void;
}
export declare class FieldFoundation {
    protected _adapter: IFieldAdapter;
    protected _density: FieldDensityType;
    protected _floatingLabel: IFloatingLabel | undefined;
    protected _shape: FieldShapeType;
    protected _invalid: boolean;
    protected _required: boolean;
    protected _floatLabelType: FieldFloatLabelType;
    protected _isInitialized: boolean;
    protected _labelSlotListener: (evt: Event) => void;
    protected _leadingSlotListener: (evt: Event) => void;
    protected _trailingSlotListener: (evt: Event) => void;
    protected _addonEndSlotListener: (evt: Event) => void;
    protected _focusListener: (evt: Event) => void;
    protected _blurListener: (evt: Event) => void;
    protected _valueChangedListener: (value: any) => void;
    protected _inputAttributeChangedListener: (name: string, value: string) => void;
    constructor(_adapter: IFieldAdapter);
    initialize(): void;
    disconnect(): void;
    get density(): FieldDensityType;
    set density(value: FieldDensityType);
    get floatLabelType(): FieldFloatLabelType;
    set floatLabelType(value: FieldFloatLabelType);
    get shape(): FieldShapeType;
    set shape(value: FieldShapeType);
    get invalid(): boolean;
    set invalid(value: boolean);
    get required(): boolean;
    set required(value: boolean);
    floatLabel(value: boolean): void;
    protected _onLabelSlotChanged(evt: Event): void;
    protected _onLeadingSlotChanged(evt: Event): void;
    protected _onTrailingSlotChanged(evt: Event): void;
    protected _onAddonEndSlotChanged(evt: Event): void;
    protected _initializeLabel(): void;
    private _destroyFloatingLabel;
    protected _detectLeadingContent(): void;
    protected _detectTrailingContent(): void;
    protected _detectAddonEndContent(): void;
    protected _detectSlottedContent(): void;
    protected _onFocus(evt: FocusEvent): void;
    protected _onBlur(evt: FocusEvent): void;
    protected _onValueChanged(value: any): void;
    protected _onInputAttributeChanged(name: string, value: string | null): void;
    protected _setShapeType(): void;
    protected _setValidity(): void;
    protected _applyDensity(): void;
}
