import { TextFieldProps as MUITextFieldProps } from '@mui/material/TextField';
import { Theme, PaletteColor } from '@mui/material';
import { TextFieldSlots } from './slots/TextFieldEnum';
import { TEXT_FIELD_KEY_COMPONENT } from './constants';
import { ComponentPalletColor, Sizes } from '@m4l/styles';
import { M4LOverridesStyleRules } from '../../../../@types/augmentations';
/**
 * Variants for the TextField component.
 */
export type TextFieldVariants = 'outlined' | 'text' | 'contained';
/**
 * Variants for the Skeleton component.
 */
export type SkeletonVariants = 'rectangular' | 'circular' | 'text';
/**
 * Props for the TextField component.
 *
 */
export interface TextFieldProps extends Omit<MUITextFieldProps, 'size' | 'color' | 'disabled' | 'variant'> {
    /**
     * todo: documentar
     */
    dataTestId?: string;
    /**
     * Variante del campo de texto.
     * variant="text"
     */
    variant?: TextFieldVariants;
    /**
     * Indica si el campo de texto está deshabilitado.
     * disabled={true}
     */
    disabled?: boolean;
    /**
     * Tamaño del campo de texto.
     * size="medium"
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Limite de caracteres del campo de texto.
     * limitCharacters={10}
     */
    maxLength?: number;
}
/**
 * Estado del propietario del campo de texto.
 */
export interface TextFieldOwnerState {
    /**
     * Indica si el campo de texto está deshabilitado.
     */
    disabled?: boolean;
    /**
     * Color de la paleta del campo de texto.
     */
    paletteColor: PaletteColor;
    /**
     * Variante del campo de texto. Se asigna prefijo al nombre para no colicionar con la propiedad de Skeleton variant.
     */
    variant?: TextFieldVariants;
    /**
     * Tamaño del campo de texto.
     */
    size: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Indica si el campo de texto es error.
     */
    error?: boolean;
    /**
     * Color del campo de texto.
     */
    color?: Extract<ComponentPalletColor, 'default' | 'error'>;
    /**
     * Indica si el campo de texto está en modo de solo lectura.
     */
    readOnly?: boolean;
    /**
     * Indica el porcentaje de caracteres del campo de texto.
     */
    percent?: number;
}
export type TextFieldSlotsType = keyof typeof TextFieldSlots;
export type TextFieldStyles = M4LOverridesStyleRules<TextFieldSlotsType, typeof TEXT_FIELD_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map