export interface IMonthIndex { month: number; } export interface IWeekIndex extends IMonthIndex { week: number; } export interface IDayIndex extends IWeekIndex { day: number; } /** * Helps with converting sequential index to 0- or 1-based month, week, day index. * * Allows to use any number of days per week, not just 7. Also one can set any number of weeks per month (but it will be used globally). * * To update the value, either set `raw` property or use `set` method. * * Usage case: some ordered sequence of items, each has its own index, and you want to distribute them by months, weeks and days, knowing the number of items assigned per week. */ export declare class CalendarIndex implements IDayIndex { readonly perWeek: number; readonly base: 1 | 0; static WEEKS_PER_MONTH: number; /** sequential index */ raw: number; /** * @param perWeek how many indexes allocated per week * @param [base=0] 1 or 0 - determines base for all indexes (0 by default) */ constructor(perWeek?: number, base?: 1 | 0); get perMonth(): number; /** 1/0-based month index based on `perWeek` property */ get month(): number; get fullWeek(): number; /** 1/0-based week index based on `perWeek` property */ get week(): number; get day(): number; set(month: number, week?: number, day?: number): this; toIndex(): IDayIndex; clone(): CalendarIndex; } /** returns based (1/0) remainder of `value / div` * * Ex.: get day of week */ export declare function basedRemainder(this: void, base: 1 | 0, value: number, div: number): number; /** returns based (1/0) floor'ed of `value / div` */ export declare function basedFloor(this: void, base: 1 | 0, value: number, div: number): number;