/// <reference types="react" />
import { AriaButtonProps } from "@react-types/button";
import { CalendarState, CalendarStateOptions, RangeCalendarState, RangeCalendarStateOptions } from "@react-stately/calendar";
import { CalendarDate } from "@internationalized/date";
import { VariantProps } from "../theme";
import { CalendarContainer } from "./calendar.styles";
export declare type Partial<T> = {
    [P in keyof T]?: T[P];
};
export declare type CalendarStates = CalendarState & RangeCalendarState;
declare type TTooltipElement = {
    singular: string;
    plural: string;
};
declare type TTooltip = {
    day?: TTooltipElement;
    night?: TTooltipElement;
};
export declare type TGetTooltipLabels = TTooltip & {
    numberOfDays: number;
};
declare type TUnavailableStyle = "disabled" | "dot";
export declare type TCustomCalendarProps = {
    rounded: VariantProps<typeof CalendarContainer>["rounded"];
    withSelectors: boolean;
    tooltip: TTooltip | false;
    dateUnavailableStyle: TUnavailableStyle;
    as: "single" | "double" | "infinite" | "horizontal";
    showHorizontalTitle?: boolean;
    monthDateFormat: {
        month: "numeric" | "short" | "2-digit" | "long" | "narrow" | undefined;
        year: "numeric" | "2-digit" | undefined;
    };
    colorScheme: VariantProps<typeof CalendarContainer>["colorScheme"];
    size: VariantProps<typeof CalendarContainer>["size"];
};
export declare type TCalendarProps = Partial<CalendarStateOptions> & Partial<TCustomCalendarProps> & {
    prevIcon?: JSX.Element;
    nextIcon?: JSX.Element;
};
export declare type TRangeCalendarProps = Partial<RangeCalendarStateOptions> & Partial<Omit<TCustomCalendarProps, "as">> & {
    as?: "single" | "double" | "infinite";
} & {
    prevIcon?: JSX.Element;
    nextIcon?: JSX.Element;
};
export declare type TSelector = Pick<TCustomCalendarProps, "monthDateFormat" & "rounded"> & {
    state: CalendarStates;
};
export declare type TCalendarHeader = {
    state: CalendarStates;
    calendarProps: React.HTMLAttributes<HTMLElement>;
    prevButtonProps: AriaButtonProps<"button">;
    nextButtonProps: AriaButtonProps<"button">;
    prevIcon?: JSX.Element;
    nextIcon?: JSX.Element;
    index: number;
};
export declare type TCalendarGrid = {
    state: CalendarStates;
    offset?: {
        months?: number;
    };
};
export declare type TCalendarCell = {
    state: CalendarStates;
    date: CalendarDate;
    currentMonth: CalendarDate;
    numberOfDays?: number;
};
export declare type TManualStyles = {
    isRoundedLeft: boolean;
    isSelected: boolean;
    isSelectionStart: boolean;
    isSelectionEnd: boolean;
    isFocusVisible: boolean;
    isUnavailable: boolean;
    isDisabled: boolean;
} & Pick<TCustomCalendarProps, "colorScheme">;
export declare type TTooltipWrapper = {
    children: JSX.Element;
    hoverStartSelection: boolean;
    hoverEndSelection: boolean;
    numberOfDays?: number;
    tooltip: TTooltip | false;
};
export {};
