import { EventEmitter } from '../../stencil-public-runtime';
import { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';
/**
 * @slot action - Content to be displayed in the label area, typically for help icons or links
 */
export declare class PdsTextarea {
    private nativeTextarea?;
    private focusedValue?;
    private inheritedAttributes;
    private originalPdsInput?;
    private internals?;
    private resizeObserver?;
    private characterCounter?;
    private readonly _type;
    el: HTMLPdsTextareaElement;
    /**
     * Emitted when the input loses focus.
     */
    pdsBlur: EventEmitter<FocusEvent>;
    /**
     * Emitted when the input has focus.
     */
    pdsFocus: EventEmitter<FocusEvent>;
    /**
     * Emitted when a keyboard input occurs.
     *
     * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface
     * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,
     * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If
     * the input is cleared on edit, the type is `null`.
     */
    pdsInput: EventEmitter<TextareaInputEventDetail>;
    /**
     * Event emitted whenever the value of the textarea changes.
     *
     * This event will not emit when programmatically setting the `value` property.
     */
    pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;
    /**
     * Emitted when a key is pressed down in the textarea.
     */
    pdsKeyDown: EventEmitter<KeyboardEvent>;
    /**
     * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global
     * `textarea.focus()`.
     */
    setFocus(): Promise<void>;
    /**
     * Specifies if and how the browser provides `autocomplete` assistance for the field.
     */
    autocomplete: string;
    /**
     * A unique identifier used for the underlying component `id` attribute.
     */
    componentId: string;
    /**
     * Determines whether or not the textarea is disabled.
     * @defaultValue false
     */
    disabled: boolean;
    /**
     * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.
     */
    debounce?: number;
    /**
     * Displays an error message below the textarea field.
     */
    errorMessage?: string;
    /**
     * Displays a message or hint below the textarea field.
     */
    helperMessage?: string;
    /**
     * Determines whether or not the textarea is invalid or throws an error.
     * @defaultValue false
     */
    invalid: boolean;
    /**
     * Text to be displayed as the textarea label.
     */
    label?: string;
    /**
     * Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.
     * Note: When true, the action slot is also hidden to maintain a minimal UI.
     */
    hideLabel: boolean;
    /**
     * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.
     */
    name: string;
    /**
     * Specifies a short hint that describes the expected value of the textarea.
     */
    placeholder?: string;
    /**
     * Determines whether or not the textarea is readonly.
     * @defaultValue false
     */
    readonly: boolean;
    /**
     * Determines whether or not the textarea is required.
     * @defaultValue false
     */
    required: boolean;
    /**
     * Sets number of rows of text visible without needing to scroll in the textarea.
     */
    rows?: number;
    /**
     * Specifies the maximum number of characters allowed in the textarea. When set, displays a character counter.
     */
    maxLength?: number;
    /**
     * Applies highlight styling to the textarea field.
     */
    highlight?: boolean;
    /**
     * The value of the textarea.
     */
    value?: string | null;
    hasFocus: boolean;
    /**
     * If true, the textarea has action content in the label area
     */
    hasAction: boolean;
    protected debounceChanged(): void;
    /**
     * Update the native input element when the value changes
     */
    protected valueChanged(): void;
    protected maxLengthChanged(): void;
    /**
     * Emits an `pdsInput` event.
     */
    private emitInputChange;
    /**
     * Emits an `pdsTextareaChange` event.
     */
    private emitValueChange;
    private getValue;
    private onBlur;
    private onFocus;
    private onInput;
    private onTextareaChange;
    private onKeyDown;
    private textareaClassNames;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): void;
    /**
     * Sets up ResizeObserver to track textarea resize for character counter positioning
     */
    private setupResizeObserver;
    /**
     * Updates character counter position to stay within textarea boundaries during resize
     */
    private updateCharacterCounterPosition;
    /**
     * Renders the character counter when maxLength is set
     */
    private renderCharacterCounter;
    private renderAction;
    /**
     * Updates the form value using ElementInternals API
     */
    private updateFormValue;
    /**
     * Form Associated Custom Elements API: Called when the form is reset
     */
    formResetCallback(): void;
    /**
     * Form Associated Custom Elements API: Called when the form is disabled
     */
    formDisabledCallback(disabled: boolean): void;
    /**
     * Form Associated Custom Elements API: Called to restore form state
     */
    formStateRestoreCallback(state: string | FormData | null): void;
    render(): any;
}
