import { GdsButton } from '../button/button.component';
import { GdsFormControlElement } from '../form/form-control';
declare class Textarea extends GdsFormControlElement<string> {
    #private;
    static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
    private _initialRows?;
    private _defaultRows;
    /**
     * Rows of the textarea
     */
    rows: number;
    /**
     * The supporting text displayed between the label and the field itself
     */
    supportingText: string;
    /**
     * Whether the field should be clearable or not. Clearable fields will display a clear button when
     * the field has a value.
     */
    clearable: boolean;
    /**
     * The resizable attribute of the textarea. It can be set to 'auto', 'manual' or 'false'.
     * When set to 'auto', the textarea will be resizable in the vertical direction based on content.
     * When set to 'manual', the textarea will be resizable in both the vertical and horizontal directions.
     * When set to 'false', the textarea will not be resizable.
     */
    resizable: 'auto' | 'manual' | 'false';
    /**
     * Whether the supporting text should be displayed or not.
     */
    showExtendedSupportingText: boolean;
    /**
     * The maximum number of characters allowed in the field.
     */
    maxlength: number;
    /**
     * Controls the font-size of texts.
     */
    size: 'large' | 'small';
    /**
     * Hides the header and the footer, while still keeping the accessible label
     *
     * Always set the `label` attribute, and if you need to hide it, add this attribute and keep `label` set.
     */
    plain: boolean;
    /** Controls whether and how text input is automatically capitalized as it is entered by the user. */
    autocapitalize: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
    /** Indicates whether the browser's autocorrect feature is on or off. */
    autocorrect: boolean;
    /**
     * Specifies what permission the browser has to provide assistance in filling out form field values. Refer to
     * [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.
     */
    autocomplete?: string;
    /** Indicates that the input should receive focus on page load. */
    autofocus: boolean;
    /** Enables spell checking on the input. */
    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/Reference/Elements/textarea#wrap) for available values.
     */
    wrap: 'hard' | 'soft';
    /** Used to customize the label or icon of the Enter key on virtual keyboards. */
    enterkeyhint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
    /**
     * Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual
     * keyboard on supportive devices.
     */
    inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
    /**
     * This callback allows for customization of the character counter. It should return a tuple
     * with the first value being the number of remaining characters, and the second value being
     * the variant of the badge. If the second value is `false`, no badge will be shown.
     */
    charCounterCallback: (self: GdsFormControlElement<string> & {
        maxlength: number;
    }) => readonly [number, false | "positive" | "negative"];
    private elTextareaAsync;
    private elTextarea;
    private fieldBase;
    /**
     * A reference to the clear button element. Returns null if there is no clear button.
     * Intended for use in integration tests.
     */
    test_getClearButton(): GdsButton | null | undefined;
    /**
     * A reference to the field element. This does not refer to the input element itself,
     * but the wrapper that makes up the visual field.
     * Intended for use in integration tests.
     */
    test_getFieldElement(): Element | null | undefined;
    focus(options?: FocusOptions): void;
    /**
     * Selects all the text in the textarea element.
     */
    select(): void;
    /**
     * Sets the value of the textarea element, replacing a range of text.
     */
    setRangeText(...args: Parameters<HTMLTextAreaElement['setRangeText']>): void;
    /**
     * Sets the start and end positions of a selection in the textarea element.
     */
    setSelectionRange(...args: Parameters<HTMLTextAreaElement['setSelectionRange']>): void;
    /** The position of the start of the current text selection in the textarea element. */
    get selectionStart(): number;
    /** Sets the position of the start of the current text selection in the textarea element. */
    set selectionStart(value: number);
    /** The position of the end of the current text selection in the textarea element. */
    get selectionEnd(): number;
    /** Sets the position of the end of the current text selection in the textarea element. */
    set selectionEnd(value: number);
    /** The direction of the current text selection in the textarea element. */
    get selectionDirection(): "none" | "backward" | "forward";
    /** Sets the direction of the current text selection in the textarea element. */
    set selectionDirection(value: "none" | "backward" | "forward");
    private _handleResize;
    private _handleSlotChange;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    render(): any;
    private _handleValueChange;
    protected _getValidityAnchor(): HTMLTextAreaElement;
    private _setAutoHeight;
    private _handleRowsChange;
}
declare const GdsTextarea_base: (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").LayoutChildProps) & (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").SizeXProps) & (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").MarginProps) & typeof Textarea;
/**
 * @summary A custom input element that can be used in forms.
 *
 * @element gds-textarea
 *.
 * @slot lead - Accepts `gds-icon-[ICON_NAME]`. Use this to place an icon in the start of the field.
 * @slot trail - Accepts `gds-badge`. Use this to place a badge in the field, for displaying currency for example.
 * @slot extended-supporting-text - A longer supporting text can be placed here. It will be
 *       displayed in a panel when the user clicks the info button.
 * @event gds-input-cleared - Fired when the clear button is clicked.
 */
export declare class GdsTextarea extends GdsTextarea_base {
}
/**
 * Default character counter callback function.
 * Returns the number of remaining characters and the badge variant based on the current value length and maxlength.
 */
export declare const charCounterCallbackDefault: (self: GdsFormControlElement<string> & {
    maxlength: number;
}) => readonly [number, false | "positive" | "negative"];
export {};
