import { Theme } from '@mui/material';
import { Sizes } from '@m4l/styles';
import { DatePickerProps as MuiDatePickerProps } from '@mui/x-date-pickers';
import { LabelProps } from '../../Label/types';
import { RHFDatePickerSlots } from './slots/RHFDatePickerEnum';
import { RHF_DATE_PICKER_KEY_COMPONENT } from './constants';
import { M4LOverridesStyleRules } from '../../../@types/augmentations';
import { TextFieldVariants } from '../../extended/mui/TextField/types';
/**
 * Interfaz de las propiedades que acepta el componente `RHFDatePicker`.
 * Extiende los props del DatePicker de MUI, excluyendo `size` para usar el propio sistema de tamaños.
 * También extiende `LabelProps` para soportar etiquetas y mensajes.
 */
export interface RHFDatePickerProps extends Omit<MuiDatePickerProps<Date>, 'size' | 'slots' | 'slotProps'>, Omit<LabelProps, 'label' | 'error'> {
    /**
     * Nombre de etiqueta del campo.
     * Esta propiedad se utiliza para etiquetar el campo del date picker.
     * Puede ser útil para accesibilidad o como descripción del campo.
     */
    label?: string;
    /**
     * Identificador único del campo dentro del formulario de React Hook Form.
     * Este identificador es necesario para vincular el campo con el formulario y manejar su estado.
     */
    name: string;
    /**
     * Variación de tamaño para el componente. Permite seleccionar entre dos tamaños:
     * - `small`: Tamaño pequeño.
     * - `medium`: Tamaño mediano.
     * Esta propiedad sobrescribe el `size` del DatePicker de MUI.
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Indica si el campo está deshabilitado.
     */
    variant?: TextFieldVariants;
    /**
     * Indica si el campo es de solo lectura.
     */
    readOnly?: boolean;
}
/**
 * Tipo que define los posibles valores de los slots disponibles en el componente `RHFDatePicker`.
 * Este tipo se utiliza para determinar qué partes del componente pueden ser estilizadas o modificadas.
 */
export type RHFDatePickerSlotsType = keyof typeof RHFDatePickerSlots;
/**
 * Estado propietario del componente `RHFDatePicker`.
 * Define propiedades específicas del estado que son necesarias para la gestión del componente.
 */
export interface RHFDatePickerOwnerState extends Record<string, unknown> {
    size?: RHFDatePickerProps['size'];
    error?: boolean;
    disabled?: boolean;
}
/**
 * Tipo de estilos para el componente `RHFDatePicker`.
 * Permite personalizar los estilos de los slots del componente.
 * `OverridesStyleRules` se usa para sobrescribir los estilos predeterminados de Material-UI.
 */
export type RHFDatePickerStyles = M4LOverridesStyleRules<RHFDatePickerSlotsType, typeof RHF_DATE_PICKER_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map