import { LitElement, nothing, type PropertyValues, type TemplateResult } from 'lit';
import { type InferSlotNames } from '../common/controllers/slot.js';
import type { Constructor } from '../common/mixins/constructor.js';
import type { RangeTextSelectMode, SelectionRangeDirection, TextareaResize } from '../types.js';
export interface IgcTextareaComponentEventMap {
    igcInput: CustomEvent<string>;
    igcChange: CustomEvent<string>;
    focus: FocusEvent;
    blur: FocusEvent;
}
declare const Slots: readonly ["[default]", "prefix", "suffix", "helper-text", "value-missing", "too-long", "too-short", "custom-error", "invalid"];
declare const IgcTextareaComponent_base: Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcTextareaComponentEventMap>> & Constructor<LitElement>;
/**
 * This element represents a multi-line plain-text editing control,
 * useful when you want to allow users to enter a sizeable amount of free-form text,
 * for example a comment on a review or feedback form.
 *
 * @element igc-textarea
 *
 * @slot - Text content from the default slot will be used as the value of the component.
 * @slot prefix - Renders content before the input.
 * @slot suffix - Renders content after input.
 * @slot helper-text - Renders content below the input.
 * @slot value-missing - Renders content when the required validation fails.
 * @slot too-long - Renders content when the maxlength validation fails.
 * @slot too-short - Renders content when the minlength validation fails.
 * @slot custom-error - Renders content when setCustomValidity(message) is set.
 * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).
 *
 * @fires igcInput - Emitted when the control receives user input.
 * @fires igcChange - Emitted when the a change to the control value is committed by the user.
 *
 * @csspart container - The main wrapper that holds all main input elements of the textarea.
 * @csspart input - The native input element of the igc-textarea.
 * @csspart label - The native label element of the igc-textarea.
 * @csspart prefix - The prefix wrapper of the igc-textarea.
 * @csspart suffix - The suffix wrapper of the igc-textarea.
 * @csspart helper-text - The helper text wrapper of the igc-textarea.
 */
export default class IgcTextareaComponent extends IgcTextareaComponent_base {
    static readonly tagName = "igc-textarea";
    static styles: import("lit").CSSResult[];
    static register(): void;
    private readonly _inputId;
    private readonly _themes;
    private readonly _slots;
    private readonly _input;
    protected get __validators(): import("../common/validators.js").Validator<IgcTextareaComponent>[];
    protected readonly _formValue: import("../common/mixins/forms/form-value.js").FormValue<string>;
    /**
     * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,
     * as well as guidance to the browser as to the type of information expected in the field.
     * Refer to [this page](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for additional information.
     *
     * @attr
     */
    autocomplete: string;
    /**
     * Controls whether and how text input is automatically capitalized as it is entered/edited by the user.
     *
     * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).
     *
     * @attr
     */
    autocapitalize: string;
    /**
     * Hints at the type of data that might be entered by the user while editing the element or its contents.
     * This allows a browser to display an appropriate virtual keyboard.
     *
     * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)
     *
     * @attr inputmode
     */
    inputMode: string;
    /**
     * The label for the control.
     *
     * @attr
     */
    label: string;
    /**
     * The maximum number of characters (UTF-16 code units) that the user can enter.
     * If this value isn't specified, the user can enter an unlimited number of characters.
     *
     * @attr maxlength
     */
    maxLength: number;
    /**
     * The minimum number of characters (UTF-16 code units) required that the user should enter.
     *
     * @attr minlength
     */
    minLength: number;
    /**
     * Whether the control will have outlined appearance.
     * @attr
     */
    outlined: boolean;
    /**
     * The placeholder attribute of the control.
     *
     * @attr
     */
    placeholder: string;
    /**
     * Makes the control a readonly field.
     *
     * @attr readonly
     */
    readOnly: boolean;
    /**
     * Controls whether the control can be resized.
     * When `auto` is set, the control will try to expand and fit its content.
     *
     * @attr
     */
    resize: TextareaResize;
    /**
     * The number of visible text lines for the control. If it is specified, it must be a positive integer.
     * If it is not specified, the default value is 2.
     *
     * @attr
     */
    rows: number;
    /**
     * The value of the component
     *
     * @attr
     */
    set value(value: string);
    get value(): string;
    /**
     * Controls whether the element may be checked for spelling errors.
     *
     * @attr
     */
    spellcheck: boolean;
    /**
     * Indicates how the control should wrap the value for form submission.
     * Refer to [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes)
     * for explanation of the available values.
     *
     * @attr
     */
    wrap: 'hard' | 'soft' | 'off';
    /**
     * Enables validation rules to be evaluated without restricting user input. This applies to the `maxLength` property
     * when it is defined.
     *
     * @attr validate-only
     */
    validateOnly: boolean;
    constructor();
    protected updated(props: PropertyValues<this>): void;
    private _setAutoHeight;
    protected _setAreaHeight(): void;
    protected _resolvePartNames(): {
        container: boolean;
        prefixed: boolean;
        suffixed: boolean;
        filled: boolean;
    };
    private _handleSlotChange;
    protected _handleInput(): void;
    protected _handleChange(): void;
    /** Selects all text within the control. */
    select(): void;
    /** Sets the text selection range of the control */
    setSelectionRange(start: number, end: number, direction?: SelectionRangeDirection): void;
    /** Replaces the selected text in the control. */
    setRangeText(replacement: string, start: number, end: number, selectMode?: RangeTextSelectMode): void;
    scrollTo(options?: ScrollToOptions | undefined): void;
    scrollTo(x: number, y: number): void;
    protected _renderSlot(name: InferSlotNames<typeof Slots>): TemplateResult<1>;
    protected _renderLabel(): typeof nothing | TemplateResult<1>;
    protected _renderStandard(): TemplateResult<1>;
    protected _renderMaterial(): TemplateResult<1>;
    protected _renderInput(): TemplateResult<1>;
    protected _renderValidationContainer(): TemplateResult;
    protected render(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/cache.js").CacheDirective>;
}
declare global {
    interface HTMLElementTagNameMap {
        'igc-textarea': IgcTextareaComponent;
    }
}
export {};
