import React, { Dispatch } from 'react';
import { StyleProp, ViewStyle } from 'react-native';
import PropTypes from 'prop-types';
import { Utils } from './Utils';
import { Configs, Mode } from './types';
type ActionType = 'set' | 'toggleMonth' | 'toggleTime';
type Action = {
    type: ActionType;
    selectedDate?: string;
    activeDate?: string;
};
type CalendarContextType = {
    mode: Mode;
    reverse: boolean;
    options: Options;
    utils: Utils;
    state: [CalendarState, Dispatch<Action>];
    onSelectedChange?: (selectedDate: string) => void;
    onDateChange?: (formattedDate: string) => void;
    disableDateChange: boolean;
    isGregorian: boolean;
    minimumDate: string;
    maximumDate: string;
    selectorStartingYear: number;
    selectorEndingYear: number;
    onMonthYearChange?: (formattedDate: string) => void;
    minuteInterval: MinuteInterval;
    onTimeChange?: (time: string) => void;
};
declare const CalendarContext: React.Context<CalendarContextType>;
declare const useCalendar: () => CalendarContextType;
export type Options = {
    backgroundColor: string;
    textHeaderColor: string;
    textDefaultColor: string;
    selectedTextColor: string;
    mainColor: string;
    textSecondaryColor: string;
    borderColor: string;
    defaultFont: string;
    headerFont: string;
    textFontSize: number;
    textHeaderFontSize: number;
    headerAnimationDistance: number;
    daysAnimationDistance: number;
};
type Props = {
    onSelectedChange?: (selectedDate: string) => void;
    onMonthYearChange?: (formattedDate: string) => void;
    onTimeChange?: (time: string) => void;
    onDateChange?: (formattedDate: string) => void;
    current?: string;
    selected?: string;
    minimumDate?: string;
    maximumDate?: string;
    selectorStartingYear?: number;
    selectorEndingYear?: number;
    disableDateChange?: boolean;
    isGregorian?: boolean;
    configs?: Configs;
    reverse?: true | false | 'unset';
    options?: Options;
    mode?: Mode;
    minuteInterval?: MinuteInterval;
    style?: StyleProp<ViewStyle>;
};
type CalendarState = {
    activeDate: string;
    selectedDate: string;
    monthOpen: boolean;
    timeOpen: boolean;
};
declare const DatePicker: {
    ({ onSelectedChange, onMonthYearChange, onTimeChange, onDateChange, current, selected, minimumDate, maximumDate, selectorStartingYear, selectorEndingYear, disableDateChange, isGregorian, configs, reverse, options, mode, minuteInterval, style, }: Props): import("react/jsx-runtime").JSX.Element;
    defaultProps: {
        onSelectedChange: () => null;
        onMonthYearChange: () => null;
        onTimeChange: () => null;
        onDateChange: () => null;
        current: string;
        selected: string;
        minimumDate: string;
        maximumDate: string;
        selectorStartingYear: number;
        selectorEndingYear: number;
        disableDateChange: boolean;
        isGregorian: boolean;
        configs: {};
        reverse: string;
        options: {};
        mode: string;
        minuteInterval: number;
        style: {};
    };
    propTypes: {
        onSelectedChange: PropTypes.Requireable<(...args: any[]) => any>;
        onMonthYearChange: PropTypes.Requireable<(...args: any[]) => any>;
        onTimeChange: PropTypes.Requireable<(...args: any[]) => any>;
        onDateChange: PropTypes.Requireable<(...args: any[]) => any>;
        current: PropTypes.Requireable<string>;
        selected: PropTypes.Requireable<string>;
        minimumDate: PropTypes.Requireable<string>;
        maximumDate: PropTypes.Requireable<string>;
        selectorStartingYear: PropTypes.Requireable<number>;
        selectorEndingYear: PropTypes.Requireable<number>;
        disableDateChange: PropTypes.Requireable<boolean>;
        isGregorian: PropTypes.Requireable<boolean>;
        configs: PropTypes.Requireable<object>;
        reverse: PropTypes.Requireable<string | boolean>;
        options: PropTypes.Requireable<PropTypes.InferProps<{
            backgroundColor: PropTypes.Requireable<string>;
            textHeaderColor: PropTypes.Requireable<string>;
            textDefaultColor: PropTypes.Requireable<string>;
            selectedTextColor: PropTypes.Requireable<string>;
            mainColor: PropTypes.Requireable<string>;
            textSecondaryColor: PropTypes.Requireable<string>;
            borderColor: PropTypes.Requireable<string>;
            defaultFont: PropTypes.Requireable<string>;
            headerFont: PropTypes.Requireable<string>;
            textFontSize: PropTypes.Requireable<number>;
            textHeaderFontSize: PropTypes.Requireable<number>;
            headerAnimationDistance: PropTypes.Requireable<number>;
            daysAnimationDistance: PropTypes.Requireable<number>;
        }>>;
        mode: PropTypes.Requireable<Mode>;
        minuteInterval: PropTypes.Requireable<2 | 5 | 1 | 3 | 4 | 6 | 10 | 12 | 15 | 20 | 30 | 60>;
        style: PropTypes.Requireable<object>;
    };
};
declare const minuteIntervalArray: readonly [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60];
type MinuteInterval = typeof minuteIntervalArray[number];
export { DatePicker, CalendarContext, useCalendar };
//# sourceMappingURL=DatePicker.d.ts.map