import * as React from 'react';
import { BaseComponent } from '../../Utilities';
import { ICalendarStrings } from './Calendar.Props';
import { DayOfWeek, DateRangeType } from '../../utilities/dateValues/DateValues';
export interface IDayInfo {
    key: string;
    date: string;
    originalDate: Date;
    isInMonth: boolean;
    isToday: boolean;
    isSelected: boolean;
    onSelected: () => void;
}
export interface ICalendarDayProps {
    strings: ICalendarStrings;
    selectedDate: Date;
    navigatedDate: Date;
    onSelectDate: (date: Date, selectedDateRangeArray?: Date[]) => void;
    onNavigateDate: (date: Date, focusOnNavigatedDay: boolean) => void;
    onDismiss?: () => void;
    firstDayOfWeek: DayOfWeek;
    dateRangeType: DateRangeType;
    autoNavigateOnSelection: boolean;
    today?: Date;
}
export interface ICalendarDayState {
    activeDescendantId?: string;
    weeks?: IDayInfo[][];
}
export declare class CalendarDay extends BaseComponent<ICalendarDayProps, ICalendarDayState> {
    refs: {
        [key: string]: React.ReactInstance;
        navigatedDay: HTMLElement;
    };
    constructor(props: ICalendarDayProps);
    componentWillReceiveProps(nextProps: ICalendarDayProps): void;
    render(): JSX.Element;
    focus(): void;
    private _navigateMonthEdge(ev, date, weekIndex, dayIndex);
    private _onKeyDown(callback, ev);
    private _onSelectDate(selectedDate);
    private _onSelectNextMonth();
    private _onSelectPrevMonth();
    private _onPrevMonthKeyDown(ev);
    private _getWeeks(navigatedDate, selectedDate, todayDate);
}
