import {
  SchedulerEditItemProps as KendoSchedulerEditItemProps,
  SchedulerEditSlotProps as KendoSchedulerEditSlotProps,
  SchedulerTaskProps as KendoSchedulerTaskProps,
  SchedulerFooterProps as KendoSchedulerFooterProps,
  SchedulerGroup as KendoSchedulerGroup,
  SchedulerHeaderProps as KendoSchedulerHeaderProps,
  SchedulerItemProps as KendoSchedulerItemProps,
  SchedulerResource as KendoSchedulerResource,
  SchedulerSlotProps as KendoSchedulerSlotProps,
  SchedulerViewItemProps as KendoSchedulerViewItemProps,
  SchedulerViewSlotProps as KendoSchedulerViewSlotProps,
  SchedulerDataChangeEvent as KendoSchedulerDataChangeEvent,
  SchedulerDateChangeEvent as KendoSchedulerDateChangeEvent,
  SchedulerViewChangeEvent as KendoSchedulerViewChangeEvent,
} from "@progress/kendo-react-scheduler";
import {
  SchedulerView as KendoSchedulerView,
  EditableProp as KendoEditableProp,
  SchedulerModelFields as KendoSchedulerModelFields,
} from "@progress/kendo-react-scheduler/dist/npm/models";

export interface SchedulerProps {
  dataTestId?: string;
  ariaLabel?: string;
  ariaLabelledby?: string;
  children?: KendoSchedulerView | KendoSchedulerView[];
  className?: string;
  data?: any[];
  date?: Date;
  defaultDate?: Date;
  defaultView?: string;
  editable?: boolean | KendoEditableProp;
  editItem?: React.ComponentType<KendoSchedulerEditItemProps>;
  editSlot?: React.ComponentType<KendoSchedulerEditSlotProps>;
  editTask?: React.ComponentType<KendoSchedulerTaskProps>;
  footer?: React.ComponentType<KendoSchedulerFooterProps>;
  group?: KendoSchedulerGroup;
  header?: React.ComponentType<KendoSchedulerHeaderProps>;
  height?: string | number;
  id?: string;
  item?: React.ComponentType<KendoSchedulerItemProps>;
  modelFields?: KendoSchedulerModelFields;
  resources?: KendoSchedulerResource[];
  role?: string;
  rtl?: boolean;
  slot?: React.ComponentType<KendoSchedulerSlotProps>;
  style?: React.CSSProperties;
  tabIndex?: number;
  task?: React.ComponentType<KendoSchedulerTaskProps>;
  timezone?: string;
  view?: string;
  viewItem?: React.ComponentType<KendoSchedulerViewItemProps>;
  viewSlot?: React.ComponentType<KendoSchedulerViewSlotProps>;
  viewTask?: React.ComponentType<KendoSchedulerTaskProps>;
  onDataChange?: (event: KendoSchedulerDataChangeEvent) => void;
  onDateChange?: (args: KendoSchedulerDateChangeEvent) => void;
  onViewChange?: (args: KendoSchedulerViewChangeEvent) => void;
}
