import * as React from 'react';
import * as moment from 'moment';
import { PopoverOrigin } from '@material-ui/core/Popover';
import { Theme, WithStyles } from '@material-ui/core/styles';
import { CalendarProps } from '../Calendar';
declare const styles: ({ typography, spacing }: Theme) => {
    contentContainer: {
        overflow: string;
        fontFamily: string | undefined;
        width: number;
    };
    calendarContainer: {
        padding: number;
        paddingTop: number;
    };
};
export declare type Colors = 'primary' | 'secondary';
export interface IProps extends WithStyles<typeof styles> {
    open?: boolean;
    startDate?: moment.Moment;
    endDate?: moment.Moment;
    minDate?: moment.Moment;
    maxDate?: moment.Moment;
    onChange?: (startDate: moment.Moment | null, endDate: moment.Moment | null) => void;
    popoverOnClose?: (startDate: moment.Moment | null, endDate: moment.Moment | null) => void;
    hourOnClick?: (e: React.MouseEvent<HTMLElement>, date: moment.Moment) => void;
    yearOnClick?: (e: React.MouseEvent<HTMLElement>, date: moment.Moment) => void;
    minuteOnClick?: (e: React.MouseEvent<HTMLElement>, date: moment.Moment) => void;
    dayOnClick?: (e: React.MouseEvent<HTMLElement>, date: moment.Moment) => void;
    nextMonthOnClick?: (e: React.MouseEvent<HTMLElement>) => void;
    prevMonthOnClick?: (e: React.MouseEvent<HTMLElement>) => void;
    viewOnClick?: (e: React.MouseEvent<HTMLElement>, view: string) => void;
    disableDate?: (date: moment.Moment) => boolean;
    textFieldOnFocus?: () => void;
    popoverAnchorOrigin?: PopoverOrigin;
    popoverTransformOrigin?: PopoverOrigin;
    color: Colors;
    textFieldRenderer?: (startDate: moment.Moment | null, endDate: moment.Moment | null, openPopover: () => void, closePopover: () => void) => React.ReactNode;
}
export interface IState {
    visibleDate: moment.Moment;
    startDate: moment.Moment | null;
    endDate: moment.Moment | null;
    hoveredDate: moment.Moment | null;
    open: boolean;
    selectedView: string;
}
export declare class Picker extends React.Component<IProps, IState> {
    static defaultProps: {
        color: import("../Calendar/Calendar").Colors;
    };
    private anchorEl?;
    constructor(props: IProps);
    componentDidUpdate(prevProps: IProps, prevState: IState): void;
    handlePickerOnChange(): void;
    handleSelectViewOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>, view: string) => void;
    handleYearOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>, date: moment.Moment) => void;
    handleHourOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>, date: moment.Moment) => void;
    handleMinuteOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>, date: moment.Moment) => void;
    handleDayOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>, date: moment.Moment) => void;
    handleDayOnMouseEnter: (e: React.MouseEvent<HTMLElement, MouseEvent>, date: moment.Moment) => void;
    handleOnMouseLeave: () => void;
    handleTextFieldFocus: () => void;
    handlePopoverOnClose: () => void;
    handlePrevMonthOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;
    handleNextMonthOnClick: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;
    setPopoverAnchor: (el: HTMLElement | null) => void;
    closePopover: () => void;
    openPopover: () => void;
    selectDay: (date: moment.Moment) => boolean;
    getVisibleStartDate: () => moment.Moment | null;
    getVisibleEndDate: () => moment.Moment | null;
    getHoveredDate: () => moment.Moment | null;
    getFormattedDateRange: () => string;
    isPopoverOpen(): boolean;
    dayRenderer: CalendarProps['dayRenderer'];
    disableDay: (d: moment.Moment, inCurrentMonth: boolean) => boolean;
    render(): JSX.Element;
}
declare const _default: React.ComponentType<Pick<Pick<IProps, "classes" | "open" | "onChange" | "prevMonthOnClick" | "nextMonthOnClick" | "startDate" | "endDate" | "minDate" | "maxDate" | "yearOnClick" | "disableDate" | "minuteOnClick" | "hourOnClick" | "popoverOnClose" | "dayOnClick" | "viewOnClick" | "textFieldOnFocus" | "popoverAnchorOrigin" | "popoverTransformOrigin" | "textFieldRenderer"> & Partial<Pick<IProps, "color">> & Partial<Pick<{
    color: import("../Calendar/Calendar").Colors;
}, never>>, "color" | "open" | "onChange" | "prevMonthOnClick" | "nextMonthOnClick" | "startDate" | "endDate" | "minDate" | "maxDate" | "yearOnClick" | "disableDate" | "minuteOnClick" | "hourOnClick" | "popoverOnClose" | "dayOnClick" | "viewOnClick" | "textFieldOnFocus" | "popoverAnchorOrigin" | "popoverTransformOrigin" | "textFieldRenderer"> & import("@material-ui/core/styles").StyledComponentProps<"contentContainer" | "calendarContainer">>;
export default _default;
