import { ComponentInterface } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalConfigObserver, BalConfigState, BalLanguage, BalRegion } from '../../utils/config';
import { BalElementStateInfo } from '../../utils/element-states';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
import { Loggable, LogInstance } from '../../utils/log';
export declare class Label implements ComponentInterface, Loggable, BalConfigObserver, BalElementStateInfo, BalAriaFormLinking {
    el: HTMLStencilElement;
    language: BalLanguage;
    region: BalRegion;
    ariaForm: BalAriaForm;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * The value of the for attribute must be a single id for a labeled
     * form-related element in the same document as the <label> element.
     * So, any given label element can be associated with only one form control.
     */
    htmlFor?: string;
    /**
     * Define the id of the native label element
     */
    htmlId?: string;
    /**
     * 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;
    /**
     * When true, the text will be truncated with a text overflow ellipsis instead of wrapping.
     * Please note that text overflow can only occur in block or inline-block level elements,
     * as these elements require a width to overflow.
     */
    noWrap: boolean;
    /**
     * When true, the text will is able to break on multiple lines.
     */
    multiline: boolean;
    /**
     * If `true` the component gets a valid green style.
     */
    valid?: boolean;
    /**
     * If `true` the component gets a invalid red style.
     */
    invalid?: boolean;
    /**
     * 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;
    /**
     * If `true` the element can not mutated, meaning the user can not edit the control.
     */
    readonly?: boolean;
    /**
     * Defines the size of the font. Default is like a heading 5 and small is used
     * with the form fields.
     */
    size: BalProps.BalLabelSize;
    /**
     * Defines the font weight of the label.
     */
    weight: BalProps.BalLabelWeight;
    /**
     * @internal
     */
    hovered: boolean;
    /**
     * @internal
     */
    pressed: boolean;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * @internal define config for the component
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
