import { Theme } from '@mui/material';
import { Sizes } from '@m4l/styles';
import { DateRangePickerProps as RsuiteDateRangePickerProps } from 'rsuite';
import { M4LOverridesStyleRules } from '../../../../@types/augmentations';
import { TextFieldVariants } from '../../mui/TextField/types';
import { DateRangePickerEnum } from './slots/DateRangePickerEnum';
import { DATE_RANGE_PICKER_KEY_COMPONENT } from './constants';
/**
 * Tipo para el valor del DateRangePicker.
 * Es un objeto con las fechas de inicio y fin.
 */
export type DateRangeValue = {
    start: Date | null;
    end: Date | null;
};
/**
 * Propiedades del componente `DateRangePicker`.
 */
export interface DateRangePickerProps extends Omit<RsuiteDateRangePickerProps, 'value' | 'onChange' | 'size'> {
    /**
     * Valor del componente. Objeto con las fechas de inicio y fin.
     */
    value?: DateRangeValue;
    /**
     * Callback que se ejecuta cuando cambia el valor.
     * @param value - Nuevo valor del rango de fechas con start y end.
     */
    onChange?: (value: DateRangeValue | null) => void;
    /**
     * Tamaño del componente.
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Indica si el componente está deshabilitado.
     */
    disabled?: boolean;
    /**
     * Clase CSS adicional.
     */
    className?: string;
    /**
     * ID para testing.
     */
    dataTestId?: string;
    /**
     * Variante del TextField interno.
     */
    variant?: TextFieldVariants;
    /**
     * Indica si el componente es de solo lectura.
     */
    readOnly?: boolean;
    /**
     * ID del elemento.
     */
    id?: string;
    /**
     * Objeto de error con mensaje opcional.
     */
    error?: boolean;
}
/**
 * Tipo para las props adicionales de DateRangePicker que se pasan directamente al componente
 * Excluye las props que ya se están manejando explícitamente
 */
export type DateRangePickerAdditionalProps = Omit<RsuiteDateRangePickerProps, 'value' | 'onChange' | 'disabled' | 'className' | 'size'>;
/**
 * Owner state del componente usado para definir propiedades internas de estilo y comportamiento.
 */
export interface DateRangePickerOwnerState extends Record<string, unknown> {
    size?: Extract<Sizes, 'small' | 'medium'>;
    error?: boolean;
    disabled?: boolean;
    variant?: TextFieldVariants;
}
/**
 * Define los tipos de Slots disponibles para el componente.
 */
export type DateRangePickerSlotsType = keyof typeof DateRangePickerEnum;
/**
 * Estilos aplicables al componente usando temas y slots personalizados.
 */
export type DateRangePickerStyles = M4LOverridesStyleRules<DateRangePickerSlotsType, typeof DATE_RANGE_PICKER_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map