/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { FieldDensityType, FieldFloatLabelType, FieldShapeType } from './field-constants';
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
import { FieldFoundation } from './field-foundation';
export interface IFieldComponent extends IBaseComponent {
    density: FieldDensityType;
    floatLabelType: FieldFloatLabelType;
    shape: FieldShapeType;
    invalid: boolean;
    required: boolean;
    floatLabel(value: boolean): void;
}
export declare abstract class FieldComponent<T extends FieldFoundation> extends BaseComponent implements IFieldComponent {
    static get observedAttributes(): string[];
    protected _foundation: T;
    constructor();
    connectedCallback(): void;
    private _initialize;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /** Controls the density type. */
    density: FieldDensityType;
    /** Whether the label should always float, never float or float as the user types. */
    floatLabelType: FieldFloatLabelType;
    /** The shape type to use. */
    shape: FieldShapeType;
    /** Gets/sets the invalid state. */
    invalid: boolean;
    /** Gets/sets the required state which controls the visibility of the asterisk in the label. */
    required: boolean;
    /**
     * Controls whether the label should be floating or not.
     * @param {boolean} value
     */
    floatLabel(value: boolean): void;
}
