import { CSSResult, nothing, PropertyValueMap } from 'lit';
import FormfieldWrapper from '../formfieldwrapper';
import type { AutoCapitalizeType } from '../input/input.types';
import type { WrapType, AutoCompleteType } from './textarea.types';
declare const Textarea_base: import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/CharacterLimitMixin").CharacterLimitMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/KeyDownHandledMixin").KeyDownHandledMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/KeyToActionMixin").KeyToActionInterface> & import("../../utils/mixins/index.types").Constructor<import("../../models").Component & import("../../utils/mixins/AutoFocusOnMountMixin").AutoFocusOnMountMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/FormInternalsMixin").FormInternalsMixinInterface> & import("../../utils/mixins/index.types").Constructor<import("../../utils/mixins/DataAriaLabelMixin").DataAriaLabelMixinInterface> & typeof FormfieldWrapper;
/**
 * mdc-textarea component, which is used to get the multi-line text input from the user.
 * It contains:
 * - label: It is the title of the textarea field.
 * - required: A boolean attribute depicting that the textarea field is required.
 * - Textarea: It is the multi-line text input field.
 * - helper-text: It is the text that provides additional information about the textarea field.
 * - max-character-limit: It is the text that shows the character count of the textarea field.
 * - Error, Warning, Success, Priority Help Text type: It is the text that provides additional information
 *   about the textarea field based on the validation state.
 * - limitexceeded: It is the event that is dispatched when the character limit exceeds or restored.
 *   This event exposes 3 properties:
 *   - currentCharacterCount - the current number of characters in the textarea field,
 *   - maxCharacterLimit - the maximum number of characters allowed in the textarea field,
 *   - value - the current value of the textarea field,
 *
 * **Note**: Consumers must set the help-text-type with 'error' and
 * help-text attribute with the error message using limitexceeded event.
 * The same help-text value will be used for the validation message to be displayed.
 *
 * ### Accessibility
 *
 * #### Resize
 *
 * Accessible text area resizing can be turned on with the `resizable`.
 * It is strongly recommended to set the `resize-button-aria-label` attribute as well to describe what it is and what are the shortcuts (up/down arrows) of the button.
 *
 * #### Best practices
 *
 * - Always provide a `label` for screen readers to identify the textarea's purpose
 * - Use `help-text` to provide additional context or instructions
 * - When using `max-character-limit`, consider providing `character-limit-announcement` for screen reader updates
 * - Use appropriate `help-text-type` (error, warning, success) to convey validation state
 * - Ensure `validation-message` is set for form validation errors
 *
 * @tagname mdc-textarea
 *
 * @event input - (React: onInput) This event is dispatched when the value of the textarea field changes (every press).
 * @event change - (React: onChange) This event is dispatched when the value of the textarea field changes (on blur).
 * @event focus - (React: onFocus) This event is dispatched when the textarea receives focus.
 * @event blur - (React: onBlur) This event is dispatched when the textarea loses focus.
 * @event limitexceeded - (React: onLimitExceeded) This event is dispatched once when the character limit
 * exceeds or restored.
 *
 * @dependency mdc-button
 * @dependency mdc-icon
 * @dependency mdc-text
 * @dependency mdc-toggletip
 *
 * @slot label - Slot for the label element. If not provided, the `label` property will be used to render the label.
 * @slot toggletip - Slot for the toggletip info icon button. If not provided, the `toggletip-text` property will be used to render the info icon button and toggletip.
 * @slot help-icon - Slot for the helper/validation icon. If not provided, the icon will be rendered based on the `helpTextType` property.
 * @slot help-text - Slot for the helper/validation text. If not provided, the `helpText` property will be used to render the helper/validation text.
 *
 * @csspart label - The label element.
 * @csspart label-text - The container for the label and required indicator elements.
 * @csspart required-indicator - The required indicator element that is displayed next to the label when the `required` property is set to true.
 * @csspart info-icon-btn - The info icon button element that is displayed next to the label when the `toggletip-text` property is set.
 * @csspart label-toggletip - The toggletip element that is displayed when the info icon button is clicked.
 * @csspart textarea - The textarea element.
 * @csspart textarea-container - The container element that wraps the textarea and resize button.
 * @csspart textarea-footer - The footer element that contains the character counter.
 * @csspart character-counter - The character counter element.
 * @csspart resize-button - The resize button element (shown when `resizable` is true).
 * @csspart help-text - The helper/validation text element.
 * @csspart helper-icon - The helper/validation icon element that is displayed next to the helper/validation text.
 * @csspart help-text-container - The container for the helper/validation icon and text elements.
 *
 * @cssproperty --mdc-label-font-size - Font size for the label text.
 * @cssproperty --mdc-label-font-weight - Font weight for the label text.
 * @cssproperty --mdc-label-line-height - Line height for the label text.
 * @cssproperty --mdc-label-color - Color for the label text.
 * @cssproperty --mdc-help-text-font-size - Font size for the help text.
 * @cssproperty --mdc-help-text-font-weight - Font weight for the help text.
 * @cssproperty --mdc-help-text-line-height - Line height for the help text.
 * @cssproperty --mdc-help-text-color - Color for the help text.
 * @cssproperty --mdc-required-indicator-color - Color for the required indicator text.
 * @cssproperty --mdc-textarea-text-color - Text color for the textarea field
 * @cssproperty --mdc-textarea-background-color - Background color for the textarea field
 * @cssproperty --mdc-textarea-border-color - Border color for the textarea field
 * @cssproperty --mdc-textarea-text-secondary-normal - Text color for the character counter
 * @cssproperty --mdc-textarea-text-font-size - Font size for the textarea field
 * @cssproperty --mdc-textarea-text-line-height - Line height for the textarea field
 * @cssproperty --mdc-textarea-container-background-color - Background color for the textarea container
 */
declare class Textarea extends Textarea_base {
    /**
     * The placeholder text that is displayed when the textarea field is empty.
     */
    placeholder?: string;
    /**
     * The rows attribute specifies the visible number of lines in a text area.
     * @default 5
     */
    rows?: number;
    /**
     * The cols attribute specifies the visible number of lines in a text area.
     * @default undefined
     */
    cols?: number;
    /**
     * The wrap attribute specifies how the text in a text area is to be wrapped when submitted in a form.
     * @default 'soft'
     */
    wrap: WrapType;
    /**
     * The autocapitalize attribute of the textarea field.
     * @default 'off'
     */
    autocapitalize: AutoCapitalizeType;
    /**
     * The autocomplete attribute of the textarea field.
     * @default 'off'
     */
    autocomplete: AutoCompleteType;
    /**
     * Specifies the name of the directionality of text for submission purposes (e.g., "rtl" for right-to-left).
     */
    dirname?: string;
    /**
     * The maximum number of characters that the textarea field can accept.
     */
    maxlength?: number;
    /**
     * The minimum number of characters that the textarea field can accept.
     */
    minlength?: number;
    /**
     * Controls whether the textarea is resizable via the resize button.
     * When set to false, the resize button will be hidden.
     * @default false
     */
    resizable: boolean;
    /**
     * Provides an accessible label for the resize button.
     * This value is used to set the `aria-label` attribute for the button.
     * @default ''
     */
    resizeButtonAriaLabel?: string;
    /**
     * @internal
     * The textarea element
     */
    inputElement: HTMLTextAreaElement;
    /** @internal */
    private resizeStartY;
    /** @internal */
    private resizeStartRows;
    protected get textarea(): HTMLTextAreaElement;
    connectedCallback(): void;
    protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    private setTextareaValidity;
    /** @internal */
    formResetCallback(): void;
    /** @internal */
    formStateRestoreCallback(state: string): void;
    /**
     * Handles the value change of the textarea field.
     * Sets the form value and updates the validity of the textarea field.
     * @returns void
     */
    handleValueChange(): void;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    /**
     * Updates the value of the textarea field.
     * Sets the form value.
     * @returns void
     */
    private updateValue;
    /**
     * Handles the change event of the textarea field.
     * Updates the value and sets the validity of the textarea field.
     *
     * The 'change' event does not bubble up through the shadow DOM as it was not composed.
     * Therefore, we need to re-dispatch the same event to ensure it is propagated correctly.
     * Read more: https://developer.mozilla.org/en-US/docs/Web/API/Event/composed
     *
     * @param event - Event which contains information about the value change.
     */
    private onChange;
    protected renderTextareaFooter(): import("lit-html").TemplateResult<1> | typeof nothing;
    /**
     * Handles the resize button keydown event for keyboard-based resizing.
     * @param event - The keyboard event.
     */
    private handleResizeKeyDown;
    /**
     * Handles the start of pointer-based resizing.
     * @param event - The pointer event.
     */
    private handlePointerDown;
    /**
     * Handles pointer movement during resizing.
     * @param event - The pointer event.
     */
    private handlePointerMove;
    /**
     * Handles the end of pointer-based resizing.
     * @param event - The pointer event.
     */
    private handlePointerUp;
    render(): import("lit-html").TemplateResult<1>;
    static styles: Array<CSSResult>;
}
export default Textarea;
