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

export interface IMonthSelectorRef {
    changeCurrentYear: (date: Date) => void;
};

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

export interface CalendarMonth {
    isCurrentYear: boolean;
    originalIndex: number;
    isDisabled: boolean;
    isSelected: boolean;
    date: moment.Moment;
    monthNumber: number;
    monthOfYear: number;
    isToday: boolean;
    title: string;
};

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

export type MonthOfYearLengthType = "short" | "long";

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