import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalAriaForm, BalAriaFormLinking } from '../../utils/form';
import { FormInput } from '../../utils/form-input';
export declare class Textarea implements ComponentInterface, FormInput<string | undefined>, BalAriaFormLinking {
    private inputId;
    private inheritedAttributes;
    nativeInput?: HTMLTextAreaElement;
    inputValue: string;
    initialValue: string;
    el: HTMLStencilElement;
    focused: boolean;
    ariaForm: BalAriaForm;
    /**
     * The name of the control, which is submitted with the form data.
     */
    name: string;
    /**
     * If `true` the component gets a invalid style.
     */
    invalid: boolean;
    /**
     * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
     */
    autocapitalize: string;
    /**
     * Indicates whether the value of the control can be automatically completed by the browser.
     */
    autocomplete: BalProps.BalInputAutocomplete;
    /**
     * This Boolean attribute lets you specify that a form control should have input focus when the page loads.
     */
    autofocus: boolean;
    /**
     * Set the amount of time, in milliseconds, to wait to trigger the `ionChange` event after each keystroke. This also impacts form bindings such as `ngModel` or `v-model`.
     */
    debounce: number;
    protected debounceChanged(): void;
    /**
     * Instructional text that shows before the input has a value.
     */
    placeholder?: string;
    /**
     * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.
     */
    maxLength?: number;
    /**
     * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.
     */
    minLength?: number;
    /**
     * 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;
    /**
     * The visible width of the text control, in average character widths. If it is specified, it must be a positive integer.
     */
    cols?: number;
    /**
     * The number of visible text lines for the control.
     */
    rows?: number;
    /**
     * Indicates how the control wraps text.
     */
    wrap?: BalProps.BalTextareaWrap;
    /**
     * If `true`, the user must fill in a value before submitting a form.
     */
    required: boolean;
    /**
     * If `true` the input gets a clickable cursor style
     */
    clickable: boolean;
    /**
     * A hint to the browser for which keyboard to display.
     * Possible values: `"none"`, `"text"`, `"tel"`, `"url"`,
     * `"email"`, `"numeric"`, `"decimal"`, and `"search"`.
     */
    inputmode?: BalProps.BalTextareaInputMode;
    /**
     * The value of the textarea.
     */
    value?: string;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * Emitted when the input value has changed..
     */
    balChange: EventEmitter<BalEvents.BalTextareaChangeDetail>;
    /**
     * Emitted when a keyboard input occurred.
     */
    balInput: EventEmitter<BalEvents.BalTextareaInputDetail>;
    /**
     * Emitted when a keyboard input occurred.
     */
    balBlur: EventEmitter<BalEvents.BalTextareaBlurDetail>;
    /**
     * Emitted when a keyboard key has pressed.
     */
    balKeyPress: EventEmitter<BalEvents.BalTextareaKeyPressDetail>;
    /**
     * Emitted when the input has focus.
     */
    balFocus: EventEmitter<BalEvents.BalTextareaFocusDetail>;
    listenOnClick(ev: UIEvent): void;
    private resetHandlerTimer?;
    resetHandler(ev: UIEvent): void;
    connectedCallback(): void;
    componentDidLoad(): void;
    componentWillLoad(): void;
    /**
     * Sets focus on the native `input` in `bal-input`. Use this method instead of the global
     * `input.focus()`.
     */
    setFocus(): Promise<void>;
    /**
     * Sets blur on the native `input` in `bal-input`. Use this method instead of the global
     * `input.blur()`.
     * @internal
     */
    setBlur(): Promise<void>;
    /**
     * Returns the native `<textarea>` element used under the hood.
     */
    getInputElement(): Promise<HTMLTextAreaElement | undefined>;
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    private getValue;
    private onInput;
    private onFocus;
    private onBlur;
    private onClick;
    private handleClick;
    render(): any;
}
