import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalMutationObserver } from '../../utils/mutation';
export declare class Field implements ComponentInterface, BalMutationObserver {
    el: HTMLStencilElement;
    private fieldId;
    private formControlElement;
    private inputElements;
    private formElements;
    /**
     * If `true` the form control needs to be filled. If it is set to
     * `false` an optional label is added to the label..
     */
    required?: boolean;
    requiredHandler(): void;
    /**
     * If true, label and input are aligned horizontally within the field component, with the message positioned in a new line below.
     */
    horizontal?: boolean;
    /**
     * If `true` the component gets a invalid red style.
     */
    invalid?: boolean;
    invalidHandler(): void;
    /**
     * If `true` the component gets a valid green style.
     */
    valid: boolean;
    validHandler(): void;
    /**
     * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants.
     */
    disabled?: boolean;
    disabledHandler(): void;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly?: boolean;
    readonlyHandler(): void;
    /**
     * If `true` a loading spinner is visible at the end of the input
     */
    loading?: boolean;
    loadingHandler(): void;
    /**
     * Emitted after render when element is labelled
     */
    balFormControlDidLoad: EventEmitter<BalEvents.BalFieldAriaLabelledByDetail>;
    connectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): Promise<void>;
    private isDirectChild;
    private isVisible;
    private findDirectChild;
    private findDirectChildren;
    syncAriaAttributes(): Promise<void>;
    mutationObserverActive: boolean;
    mutationListener(): void;
    private triggerAllHandlers;
    private updateProps;
    private notifyComponents;
    render(): any;
}
