import type {
    SetStateAction,
    Dispatch
} from "react";
import type {
    DateTimePickerDateRange,
    DateTimePickerVariant
} from "../dateTimePicker/type";
import type moment from "moment";

export interface IDateSelectorRef {
    changeCurrentMonth: (date: Date) => void;
};

export type DateSelectorDynamicStyle = {
    radiuses: NCoreUIKit.ActivePalette["radiuses"];
    borders: NCoreUIKit.ActivePalette["borders"];
    spaces: NCoreUIKit.ActivePalette["spaces"];
    colors: NCoreUIKit.ActivePalette["colors"];
};

export interface CalendarDay {
    isCurrentMonth: boolean;
    originalIndex: number;
    isDisabled: boolean;
    isSelected: boolean;
    date: moment.Moment;
    dayNumber: number;
    dayOfWeek: number;
    isToday: boolean;
};

export type DateSelectInitialGeneratorType = {
    dateRange?: DateTimePickerDateRange;
    variant: DateTimePickerVariant;
    date?: Date;
};

export type DayOfWeekLengthType = "short" | "very-short" | "long";

interface IDateSelectorProps {
    selectMultipleObject: (dateRange?: DateTimePickerDateRange) => void;
    setIsSheetContentReady: Dispatch<SetStateAction<boolean>>;
    multipleSelectMinimumRequiredDayCount?: number;
    dayOfWeekLength?: DayOfWeekLengthType;
    selectObject: (date?: Date) => void;
    localeBasedFirstDayOfWeek?: boolean;
    dateRange?: DateTimePickerDateRange;
    multipleSelectDayLimit?: number;
    isShowTodayIndicator?: boolean;
    variant: DateTimePickerVariant;
    viewDate?: Date;
    maxDate?: Date;
    minDate?: Date;
    date?: Date;
};
export type {
    IDateSelectorProps as default
};
