| import BoundingRect, { RectLike } from 'zrender/lib/core/BoundingRect.js'; | 
| import CalendarModel from './CalendarModel.js'; | 
| import GlobalModel from '../../model/Global.js'; | 
| import ExtensionAPI from '../../core/ExtensionAPI.js'; | 
| import { LayoutOrient, ScaleDataValue, OptionDataValueDate } from '../../util/types.js'; | 
| import { ParsedModelFinder } from '../../util/model.js'; | 
| import { CoordinateSystem, CoordinateSystemMaster } from '../CoordinateSystem.js'; | 
| export interface CalendarParsedDateRangeInfo { | 
|     range: [string, string]; | 
|     start: CalendarParsedDateInfo; | 
|     end: CalendarParsedDateInfo; | 
|     allDay: number; | 
|     weeks: number; | 
|     nthWeek: number; | 
|     fweek: number; | 
|     lweek: number; | 
| } | 
| export interface CalendarParsedDateInfo { | 
|     /** | 
|      * local full year, eg., '1940' | 
|      */ | 
|     y: string; | 
|     /** | 
|      * local month, from '01' ot '12', | 
|      */ | 
|     m: string; | 
|     /** | 
|      * local date, from '01' to '31' (if exists), | 
|      */ | 
|     d: string; | 
|     /** | 
|      * It is not date.getDay(). It is the location of the cell in a week, from 0 to 6, | 
|      */ | 
|     day: number; | 
|     /** | 
|      * Timestamp | 
|      */ | 
|     time: number; | 
|     /** | 
|      * yyyy-MM-dd | 
|      */ | 
|     formatedDate: string; | 
|     /** | 
|      * The original date object | 
|      */ | 
|     date: Date; | 
| } | 
| export interface CalendarCellRect { | 
|     contentShape: RectLike; | 
|     center: number[]; | 
|     tl: number[]; | 
|     tr: number[]; | 
|     br: number[]; | 
|     bl: number[]; | 
| } | 
| declare class Calendar implements CoordinateSystem, CoordinateSystemMaster { | 
|     static readonly dimensions: string[]; | 
|     static getDimensionsInfo(): (string | { | 
|         name: string; | 
|         type: "time"; | 
|     })[]; | 
|     readonly type = "calendar"; | 
|     readonly dimensions: string[]; | 
|     private _model; | 
|     private _rect; | 
|     private _sw; | 
|     private _sh; | 
|     private _orient; | 
|     private _firstDayOfWeek; | 
|     private _rangeInfo; | 
|     private _lineWidth; | 
|     constructor(calendarModel: CalendarModel, ecModel: GlobalModel, api: ExtensionAPI); | 
|     getDimensionsInfo: typeof Calendar.getDimensionsInfo; | 
|     getRangeInfo(): CalendarParsedDateRangeInfo; | 
|     getModel(): CalendarModel; | 
|     getRect(): BoundingRect; | 
|     getCellWidth(): number; | 
|     getCellHeight(): number; | 
|     getOrient(): LayoutOrient; | 
|     /** | 
|      * getFirstDayOfWeek | 
|      * | 
|      * @example | 
|      *     0 : start at Sunday | 
|      *     1 : start at Monday | 
|      * | 
|      * @return {number} | 
|      */ | 
|     getFirstDayOfWeek(): number; | 
|     /** | 
|      * get date info | 
|      * } | 
|      */ | 
|     getDateInfo(date: OptionDataValueDate): CalendarParsedDateInfo; | 
|     getNextNDay(date: OptionDataValueDate, n: number): CalendarParsedDateInfo; | 
|     update(ecModel: GlobalModel, api: ExtensionAPI): void; | 
|     /** | 
|      * Convert a time data(time, value) item to (x, y) point. | 
|      */ | 
|     dataToPoint(data: OptionDataValueDate | OptionDataValueDate[], clamp?: boolean): number[]; | 
|     /** | 
|      * Convert a (x, y) point to time data | 
|      */ | 
|     pointToData(point: number[]): number; | 
|     /** | 
|      * Convert a time date item to (x, y) four point. | 
|      */ | 
|     dataToRect(data: OptionDataValueDate | OptionDataValueDate[], clamp?: boolean): CalendarCellRect; | 
|     /** | 
|      * Convert a (x, y) point to time date | 
|      * | 
|      * @param  {Array} point point | 
|      * @return {Object}       date | 
|      */ | 
|     pointToDate(point: number[]): CalendarParsedDateInfo; | 
|     convertToPixel(ecModel: GlobalModel, finder: ParsedModelFinder, value: ScaleDataValue | ScaleDataValue[]): number[]; | 
|     convertFromPixel(ecModel: GlobalModel, finder: ParsedModelFinder, pixel: number[]): number; | 
|     containPoint(point: number[]): boolean; | 
|     /** | 
|      * initRange | 
|      * Normalize to an [start, end] array | 
|      */ | 
|     private _initRangeOption; | 
|     /** | 
|      * range info | 
|      * | 
|      * @private | 
|      * @param  {Array} range range ['2017-01-01', '2017-07-08'] | 
|      *  If range[0] > range[1], they will not be reversed. | 
|      * @return {Object}       obj | 
|      */ | 
|     _getRangeInfo(range: OptionDataValueDate[]): CalendarParsedDateRangeInfo; | 
|     /** | 
|      * get date by nthWeeks and week day in range | 
|      * | 
|      * @private | 
|      * @param  {number} nthWeek the week | 
|      * @param  {number} day   the week day | 
|      * @param  {Array} range [d1, d2] | 
|      * @return {Object} | 
|      */ | 
|     private _getDateByWeeksAndDay; | 
|     static create(ecModel: GlobalModel, api: ExtensionAPI): Calendar[]; | 
| } | 
| export default Calendar; |