import { Theme } from '@mui/material';
import { Sizes } from '@m4l/styles';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
import { DateRangeCalendarPickerProps, DateRangeCalendarPickerValue } from '../DateRangeCalendarPicker/types';
import { TextFieldProps, TextFieldVariants } from '../extended/mui/TextField/types';
import { DATE_TIME_RANGE_PICKER_KEY_COMPONENT } from './constants';
import { DateTimeRangePickerSlots } from './slots/DateTimeRangePickerEnum';
export type DateTimeRangePickerValue = DateRangeCalendarPickerValue;
/**
 * Describe one reusable shortcut rendered inside the picker popover.
 */
export interface DateTimeRangePickerShortcut {
    id: string;
    label: string;
    resolveValue: (referenceDate: Date) => DateTimeRangePickerValue;
}
/**
 * Calendar-level props forwarded verbatim to the embedded DateRangeCalendarPicker.
 * Picking from the source type keeps both components in sync automatically.
 */
type DateRangeCalendarPickerForwardedProps = Pick<DateRangeCalendarPickerProps, 'calendars' | 'defaultCalendarMonth' | 'getDayBadgeContent' | 'maxDate' | 'maxDays' | 'minDate' | 'referenceDate' | 'shouldDisableDate' | 'timeDisplayVariant' | 'enableTimeRange'>;
/**
 * Define the public props for the first-party date-time range field.
 */
export interface DateTimeRangePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'onChange' | 'value'>, DateRangeCalendarPickerForwardedProps {
    compact?: boolean;
    defaultValue?: DateTimeRangePickerValue;
    onChange?: (value: DateTimeRangePickerValue) => void;
    /**
     * Opens the popover as soon as the visible field receives focus. Defaults to true.
     */
    openOnFocus?: boolean;
    readOnly?: boolean;
    shortcuts?: DateTimeRangePickerShortcut[];
    value?: DateTimeRangePickerValue;
}
/**
 * Capture the state consumed by the component slots.
 */
export interface DateTimeRangePickerOwnerState {
    compact: boolean;
    disabled: boolean;
    error: boolean;
    open: boolean;
    popoverWidth?: number;
    size: Extract<Sizes, 'small' | 'medium'>;
    variant: TextFieldVariants;
    [key: string]: unknown;
}
/**
 * Define the slot keys used by the date-time range picker theme contract.
 */
export type DateTimeRangePickerSlotsType = keyof typeof DateTimeRangePickerSlots;
/**
 * Define the theme override contract for the date-time range picker slots.
 */
export type DateTimeRangePickerStyles = M4LOverridesStyleRules<DateTimeRangePickerSlotsType, typeof DATE_TIME_RANGE_PICKER_KEY_COMPONENT, Theme>;
export {};
//# sourceMappingURL=types.d.ts.map