1import * as moment from 'moment'
2import Calendar from '../Calendar'
3import View from '../View'
4import EventSource from '../models/event-source/EventSource'
5import { RangeInput, MomentInput, OptionsInput, EventObjectInput, EventSourceInput } from './input-types'
6
7declare global {
8
9  interface JQueryStatic {
10    fullCalendar: object // TODO: more specificity
11  }
12
13  interface JQuery {
14    fullCalendar(options?: OptionsInput): JQuery // initialization
15    fullCalendar(method: 'getCalendar'): Calendar
16    fullCalendar(method: 'getView'): View
17    fullCalendar(method: 'destroy'): JQuery
18    fullCalendar(method: 'option', name: string | object, value?: any): any
19    fullCalendar(method: 'isValidViewType', viewType: string): boolean
20    fullCalendar(method: 'changeView', viewName: string, dateOrRange?: RangeInput | MomentInput): JQuery
21    fullCalendar(method: 'zoomTo', newDate: moment.Moment, viewType?: string): JQuery
22    fullCalendar(method: 'prev'): JQuery
23    fullCalendar(method: 'next'): JQuery
24    fullCalendar(method: 'prevYear'): JQuery
25    fullCalendar(method: 'nextYear'): JQuery
26    fullCalendar(method: 'today'): JQuery
27    fullCalendar(method: 'gotoDate', zonedDateInput: any): JQuery
28    fullCalendar(method: 'incrementDate', delta: any): JQuery
29    fullCalendar(method: 'getDate'): moment.Moment
30    fullCalendar(method: 'render'): JQuery
31    fullCalendar(method: 'select', zonedStartInput: MomentInput, zonedEndInput?: MomentInput, resourceId?: string): JQuery
32    fullCalendar(method: 'unselect'): JQuery
33    fullCalendar(method: 'moment', ...args: any[]): moment.Moment
34    fullCalendar(method: 'getNow'): moment.Moment
35    fullCalendar(method: 'rerenderEvents'): JQuery
36    fullCalendar(method: 'refetchEvents'): JQuery
37    fullCalendar(method: 'renderEvents', eventInputs: EventObjectInput[], isSticky?: boolean): JQuery
38    fullCalendar(method: 'renderEvent', eventInput: EventObjectInput, isSticky?: boolean): JQuery
39    fullCalendar(method: 'removeEvents', legacyQuery?: any): JQuery
40    fullCalendar(method: 'clientEvents', legacyQuery: any): any
41    fullCalendar(method: 'updateEvents', eventPropsArray: EventObjectInput[]): JQuery
42    fullCalendar(method: 'updateEvent', eventProps: EventObjectInput): JQuery
43    fullCalendar(method: 'getEventSources'): EventSource
44    fullCalendar(method: 'getEventSourceById', id: any): EventSource
45    fullCalendar(method: 'addEventSource', sourceInput: EventSourceInput): JQuery
46    fullCalendar(method: 'removeEventSources', sourceMultiQuery: any): JQuery
47    fullCalendar(method: 'removeEventSource', sourceQuery: any): JQuery
48    fullCalendar(method: 'refetchEventSources', sourceMultiQuery: any): JQuery
49  }
50
51}
52