import * as React from 'react';
import type { Override } from '../helpers/overrides';
import type { BaseInputProps, StateReducer, State } from '../input';
import { ADJOINED, SIZE } from '../input';
import type { SyntheticEvent } from 'react';
declare type SyntheticTextareaEvent = SyntheticEvent<HTMLTextAreaElement>;
export declare type Size = keyof typeof SIZE;
export declare type SharedStyleProps = {
    $adjoined: keyof typeof ADJOINED;
    $disabled?: boolean;
    $error?: boolean;
    $isFocused?: boolean;
    $isReadOnly?: boolean;
    $positive?: boolean;
    $required?: boolean;
    $size: Size;
};
declare type BaseTextAreaProps = BaseInputProps<HTMLTextAreaElement>;
export declare type TextareaOverrides = {
    Root?: Override;
} & BaseTextAreaProps['overrides'];
export declare type TextareaProps = {
    overrides?: TextareaOverrides;
    /** Sets the size and number of visible text lines
     of the textarea element. */
    rows?: number;
    maxLength?: number;
} & BaseTextAreaProps;
export declare type StatefulContainerProps = {
    children: (props: any) => React.ReactNode;
    initialState?: State;
    stateReducer?: StateReducer;
    onChange?: (e: SyntheticTextareaEvent) => unknown;
    onKeyDown?: (e: SyntheticTextareaEvent) => unknown;
    onKeyPress?: (e: SyntheticTextareaEvent) => unknown;
    onKeyUp?: (e: SyntheticTextareaEvent) => unknown;
};
declare type OmitProps = {
    children: (props: any) => React.ReactNode;
};
declare type FullStProps = TextareaProps & StatefulContainerProps;
export declare type StatefulTextareaProps = Partial<Omit<FullStProps, keyof OmitProps>>;
export {};
