/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
import * as moment from 'moment';
import { Mode } from '../calendar-mode';
import { CEvent } from '../tool';
import { SelectOptionProps } from '../../select';
import MinCalendar from '../min';
export declare type EventType = 'info' | 'primary' | 'danger' | 'success' | 'warning';
export interface Event {
    start: moment.Moment;
    finish: moment.Moment;
    content: string;
    category: string;
    type: EventType;
    [key: string]: any;
}
export interface FullCalendarProps {
    className?: string;
    style?: React.CSSProperties;
    defaultMode?: Mode;
    defaultValue?: moment.Moment;
    defaultEvents?: Event[];
    events?: Event[];
    modeSelectable?: boolean;
    dateSelectable?: boolean;
    editable?: boolean;
    appendable?: boolean;
    onDelete?: (event: Event) => void;
    onEdit?: (event: Event, index: number) => void;
    onAppend?: (event: Event) => void;
    categories: SelectOptionProps[];
}
export interface FullCalendarState {
    activeMode: Mode;
    selfValue: moment.Moment;
    includeCurrentDay: boolean;
    renderEvents: Event[];
    contextmenuVisible: boolean;
    contextmenuStyle: React.CSSProperties;
    contextmenuInfo: {
        mom: moment.Moment;
        event: CEvent;
    };
    editModalVisible: boolean;
}
declare class FullCalendar extends React.PureComponent<FullCalendarProps, FullCalendarState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        defaultMode: PropTypes.Requireable<Mode>;
        defaultValue: PropTypes.Requireable<object>;
        defaultEvents: PropTypes.Requireable<any[]>;
        events: PropTypes.Requireable<any[]>;
        modeSelectable: PropTypes.Requireable<boolean>;
        dateSelectable: PropTypes.Requireable<boolean>;
        editable: PropTypes.Requireable<boolean>;
        appendable: PropTypes.Requireable<boolean>;
    };
    static defaultProps: {
        defaultMode: Mode;
        modeSelectable: boolean;
        dateSelectable: boolean;
        editable: boolean;
        appendable: boolean;
    };
    static Min: typeof MinCalendar;
    private wrapperEle;
    constructor(props: FullCalendarProps);
    componentDidUpdate(preProps: FullCalendarProps, preState: FullCalendarState): void;
    private selectCurrentDay;
    private prePageHandler;
    private nextPageHandler;
    private onModeChangeHandler;
    private getDisplayDate;
    private onContextMenuHandler;
    private autoHideContextmenu;
    private showEditModal;
    private hiddenEditModal;
    private deleteEvent;
    private appendHandler;
    private editHandler;
    render(): JSX.Element;
}
export default FullCalendar;
