import { Sizes } from '@m4l/styles';
import { Theme } from '@mui/material/styles';
import { ReactNode } from 'react';
import { DAYS_OF_WEEK_PICKER_KEY_COMPONENT } from './constants';
import { DaysOfWeekPickerSlots } from './slots';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
/**
 * Días de la semana disponibles.
 */
export type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;
/**
 * Propiedades del componente `DaysOfWeekPicker`.
 */
export interface DaysOfWeekPickerProps {
    /**
     * Valor controlado del componente. Array de días seleccionados (0 = Lunes, 6 = Domingo).
     */
    value: DayOfWeek[] | [];
    /**
     * Callback que se ejecuta cuando cambia la selección de días.
     * @param value - Array de días seleccionados.
     */
    onChange?: (value: DayOfWeek[]) => void;
    /**
     * Array de días que deben estar deshabilitados.
     * Cada valor representa un día de la semana (0 = Lunes, 6 = Domingo).
     */
    disabledDays?: DayOfWeek[];
    /**
     * Si es true, deshabilita todo el componente.
     */
    disabled?: boolean;
    /**
     * Si es true, el componente es de solo lectura y no permite interacción.
     * Los botones deshabilitados se muestran con el mismo estilo que los habilitados.
     */
    readOnly?: boolean;
    /**
     * Tamaño del componente.
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Clase CSS adicional.
     */
    className?: string;
    /**
     * Si es true, permite selección múltiple. Por defecto es true.
     */
    multiple?: boolean;
    /**
     * Contenido adicional del componente.
     */
    children?: ReactNode;
}
/**
 * Owner state del componente usado para definir propiedades internas de estilo y comportamiento.
 */
export interface DaysOfWeekPickerOwnerState extends Pick<DaysOfWeekPickerProps, 'size' | 'disabled' | 'readOnly'> {
    selected?: boolean;
    day?: DayOfWeek;
    [key: string]: unknown;
}
/**
 * Define los tipos de Slots disponibles para el componente.
 */
export type DaysOfWeekPickerSlotsType = keyof typeof DaysOfWeekPickerSlots;
/**
 * Estilos aplicables al componente usando temas y slots personalizados.
 */
export type DaysOfWeekPickerStyles = M4LOverridesStyleRules<DaysOfWeekPickerSlotsType, typeof DAYS_OF_WEEK_PICKER_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map