import { Theme } from '@mui/material/styles';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
import { DAYS_OF_MONTH_PICKER_KEY_COMPONENT } from './constants';
import { DaysOfMonthPickerSlots } from './slots/DaysOfMonthPickerEnum';
import { Sizes } from '@m4l/styles';
/**
 * Propiedades del componente `DaysOfMonthPicker`.
 */
export interface DaysOfMonthPickerProps {
    /**
     * Valor seleccionado. Puede ser un número (día único) o un array de números (múltiples días).
     */
    value?: number | number[];
    /**
     * Callback que se ejecuta cuando cambia la selección.
     */
    onChange?: (value: number | number[]) => void;
    /**
     * Si es true, permite seleccionar múltiples días. Si es false, solo permite seleccionar un día modo single.
     * @default false
     */
    multiple?: boolean;
    /**
     * Array de días que están deshabilitados y no se pueden seleccionar.
     */
    disabledDays?: number[];
    /**
     * Si es true, el componente está completamente deshabilitado.
     * @default false
     */
    disabled?: boolean;
    /**
     * Si es true, el componente está en modo solo lectura.
     * @default false
     */
    readOnly?: boolean;
    /**
     * Class name para el componente.
     */
    className?: string;
    /**
     * Tamaño del componente.
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Test id para el componente.
     */
    dataTestId?: string;
}
/**
 * Owner state del componente `DaysOfMonthPicker` usado para definir propiedades internas de estilo y comportamiento.
 */
export interface DaysOfMonthPickerOwnerState {
    disabled?: boolean;
    readOnly?: boolean;
    [key: string]: unknown;
}
/**
 * Owner state para cada día individual.
 */
export interface DayOwnerState {
    selected: boolean;
    disabled: boolean;
    readOnly: boolean;
    size: Extract<Sizes, 'small' | 'medium'>;
    [key: string]: unknown;
}
/**
 * Owner state para cada header de día individual.
 */
export interface DayHeaderOwnerState {
    size?: Extract<Sizes, 'small' | 'medium'>;
    [key: string]: unknown;
}
/**
 * Define los tipos de Slots disponibles para el componente `DaysOfMonthPicker`.
 */
export type DaysOfMonthPickerSlotsType = keyof typeof DaysOfMonthPickerSlots;
/**
 * Estilos aplicables al componente `DaysOfMonthPicker` usando temas y slots personalizados.
 */
export type DaysOfMonthPickerStyles = M4LOverridesStyleRules<DaysOfMonthPickerSlotsType, typeof DAYS_OF_MONTH_PICKER_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map