import * as react from 'react';
import { ReactNode, TextareaHTMLAttributes } from 'react';

/**
 * TextArea size variants
 */
type TextAreaSize = 'small' | 'medium' | 'large' | 'extraLarge';
/**
 * TextArea visual state
 */
type TextAreaState = 'default' | 'hovered' | 'focused' | 'invalid' | 'disabled';
/**
 * TextArea component props interface
 */
type TextAreaProps = {
    /** Label text to display above the textarea */
    label?: ReactNode;
    /** Size variant of the textarea */
    size?: TextAreaSize;
    /** Visual state of the textarea */
    state?: TextAreaState;
    /** Error message to display */
    errorMessage?: string;
    /** Helper text to display */
    helperMessage?: string;
    /** Additional CSS classes */
    className?: string;
    /** Label CSS classes */
    labelClassName?: string;
} & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>;
/**
 * TextArea component for Analytica Ensino platforms
 *
 * A textarea component with essential states, sizes and themes.
 * Uses exact design specifications with 288px width, 96px height, and specific
 * color values. Includes Text component integration for consistent typography.
 *
 * @example
 * ```tsx
 * // Basic textarea
 * <TextArea label="Description" placeholder="Enter description..." />
 *
 * // Small size
 * <TextArea size="small" label="Comment" />
 *
 * // Invalid state
 * <TextArea state="invalid" label="Required field" errorMessage="This field is required" />
 *
 * // Disabled state
 * <TextArea disabled label="Read-only field" />
 * ```
 */
declare const TextArea: react.ForwardRefExoticComponent<{
    /** Label text to display above the textarea */
    label?: ReactNode;
    /** Size variant of the textarea */
    size?: TextAreaSize;
    /** Visual state of the textarea */
    state?: TextAreaState;
    /** Error message to display */
    errorMessage?: string;
    /** Helper text to display */
    helperMessage?: string;
    /** Additional CSS classes */
    className?: string;
    /** Label CSS classes */
    labelClassName?: string;
} & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & react.RefAttributes<HTMLTextAreaElement>>;

export { type TextAreaProps, TextArea as default };
