import {
  DateRangePickerDateInputSettings as KendoDateRangePickerDateInputSettings,
  DateRangePickerCalendarSettings as KendoDateRangePickerCalendarSettings,
  SelectionRange as KendoSelectionRange,
  DateRangePickerPopupSettings as KendoDateRangePickerPopupSettings,
  MultiViewCalendarProps as KendoMultiViewCalendarProps,
  DateInputProps as KendoDateInputProps,
  DateRangePickerCloseEvent as KendoDateRangePickerCloseEvent,
  DateRangePickerOpenEvent as KendoDateRangePickerOpenEvent,
} from "@progress/kendo-react-dateinputs";
import { DateFormatOptions } from "../DateInput/DateInputProps";
import { PopupProps } from "@/components/Popup/PopupProps";

export interface DateRangePickerProps {
  dataTestId?: string;
  adaptive?: boolean;
  adaptiveTitle?: string;
  allowReverse?: boolean;
  ariaDescribedBy?: string;
  ariaLabelledBy?: string;
  calendar?: React.ComponentType<KendoMultiViewCalendarProps>;
  calendarSettings?: KendoDateRangePickerCalendarSettings;
  className?: string;
  defaultShow?: boolean;
  defaultValue?: KendoSelectionRange;
  disabled?: boolean;
  endDateInput?: React.ComponentType<KendoDateInputProps>;
  endDateInputSettings?: KendoDateRangePickerDateInputSettings;
  focusedDate?: Date;
  format?: string | DateFormatOptions;
  id?: string;
  max?: Date;
  min?: Date;
  popup?: React.ComponentType<PopupProps>;
  popupSettings?: KendoDateRangePickerPopupSettings;
  show?: boolean;
  startDateInput?: React.ComponentType<KendoDateInputProps>;
  startDateInputSettings?: KendoDateRangePickerDateInputSettings;
  style?: React.CSSProperties;
  swapButton?: boolean;
  tabIndex?: number;
  valid?: boolean;
  value?: KendoSelectionRange;
  onBlur?: (event: React.FocusEvent<any>) => void;
  onCancel?: (event: React.MouseEvent<HTMLButtonElement>) => void;
  onChange?: (event: { value: KendoSelectionRange }) => void;
  onClose?: (event: KendoDateRangePickerCloseEvent) => void;
  onFocus?: (event: React.FocusEvent<any>) => void;
  onOpen?: (event: KendoDateRangePickerOpenEvent) => void;
}
