import { JSX as JSX_2 } from 'react/jsx-runtime';
import { default as React_2 } from 'react';
import type { ReactNode } from 'react';

declare type ClassNames = {
    rootContainer?: string;
    rangesContainer?: string;
    rangeButtonDefault?: string;
    rangeButtonSelected?: string;
    fromToRangeContainer?: string;
    normalCell?: string;
    normalCellHover?: string;
    greyCell?: string;
    invalidCell?: string;
    startCell?: string;
    endCell?: string;
    withinRangeCell?: string;
    startDot?: string;
    endDot?: string;
    footerContainer?: string;
    applyButton?: string;
    cancelButton?: string;
};

declare const customRange: {
    readonly 'Custom Range': "Custom Range";
};

declare type Locale = {
    format?: string;
    sundayFirst?: boolean;
    days?: [string, string, string, string, string, string, string];
    months?: [string, string, string, string, string, string, string, string, string, string, string, string];
    fromDate?: string;
    toDate?: string;
    selectingFrom?: string;
    selectingTo?: string;
    minDate?: string;
    maxDate?: string;
    close?: string;
    apply?: string;
    cancel?: string;
};

declare type PresetDateRanges = Record<string, [Date, Date]> & Partial<typeof customRange>;

declare class ReactDateTimePicker extends React_2.Component<ReactDateTimePickerProps, State> {
    container: HTMLDivElement | null;
    constructor(props: ReactDateTimePickerProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    keyDown: (e: KeyboardEvent) => void;
    onClickContainerHandler: () => void;
    handleOutsideClick: (e: MouseEvent) => void;
    changeVisibleState: () => void;
    renderPicker(): JSX_2.Element;
    render(): JSX_2.Element;
}
export default ReactDateTimePicker;

declare interface ReactDateTimePickerProps {
    ranges: PresetDateRanges;
    start: Date;
    end: Date;
    locale?: Locale;
    applyCallback: (start: Date, end: Date) => void;
    rangeCallback?: (index: number, value: keyof PresetDateRanges) => void;
    minDate?: Date;
    maxDate?: Date;
    autoApply?: boolean;
    descendingYears?: boolean;
    years?: [number, number];
    smartMode?: boolean;
    pastSearchFriendly?: boolean;
    noMobileMode?: boolean;
    forceMobileMode?: boolean;
    twelveHoursClock?: boolean;
    standalone?: boolean;
    leftMode?: boolean;
    centerMode?: boolean;
    classNames?: ClassNames;
    displayMinDate?: boolean;
    displayMaxDate?: boolean;
    theme?: Theme;
    children: ReactNode;
}

declare interface State {
    visible: boolean;
}

declare type Theme = 'blue' | 'orange' | 'green' | 'purple';

export { }
