import { type ChangeEventHandler, type RefCallback, type RefObject } from "react";
/**
 * A textarea is normally resizable in browsers by default by dragging the
 * bottom right corner to the desired size which will set inline styles for
 * `height` and `width`. Since this makes creating layouts a bit more difficult,
 * this is disabled by default but can be configured using one of these values:
 *
 * - `"auto"` - The textarea will automatically grow in in height as the user
 *   types until a max number of rows have been added. If there is additional
 *   text, a scrollbar will appear in the textarea. The browser's native resize
 *   behavior is disabled.
 * - `"none"` - The textarea's height and width will remain static
 * - `"horizontal"` - The textarea's width can be resized by the browser's
 *   native resize behavior.
 * - `"vertical"` - The textarea's height can be resized by the browser's native
 *   resize behavior.
 * - `"both"` - The browser's native resize behavior will be allowed.
 */
export type TextAreaResize = "none" | "auto" | "horizontal" | "vertical" | "both";
/** @internal */
export interface ResizingTextAreaOptions {
    resize: TextAreaResize;
    maxRows: number;
    onChange: ChangeEventHandler<HTMLTextAreaElement> | undefined;
    containerRef: RefObject<HTMLDivElement>;
}
/** @internal */
export interface ResizingTextAreaReturnValue {
    height: string | undefined;
    maskRef: RefCallback<HTMLTextAreaElement>;
    onChange: ChangeEventHandler<HTMLTextAreaElement>;
    scrollable: boolean;
}
/** @internal */
export declare function useResizingTextArea(options: ResizingTextAreaOptions): ResizingTextAreaReturnValue;
