<commit_before>export class Calendar {
    constructor(parser?: Parser);

    parser: Parser;

    eventsDate: KnockoutObservable<Date>;

    events: KnockoutObservableArray<any>;

    startDay: KnockoutObservable<number>;

    endDay: KnockoutComputed<number>;

    addEvent(userObject: any): void;

    eventsByDay: KnockoutComputed<Array<DayEvent>>;

    eventsByWeek: KnockoutComputed<Array<WeekEvent>>;

    eventsForDate: KnockoutComputed<DayEvent>;
    
    weekDays: KnockoutComputed<string[]>;

    weeksInDateRange(start: Date, end: Date): number;

    isSameDate(left: Date, right: Date): boolean;

    isSameWeek(left: Date, right: Date): boolean;

    isInRange(date: Date, range: DateRange): boolean;

    floorToDay(date: Date): Date;

    ceilToDay(date: Date): Date;

    floorToWeekStart(date: Date): Date;

    ceilToWeekEnd(date: Date): Date;

    getDateRange(): DateRange;    
}

export interface Parser {
    (userObject: any): DateRange;
}

export interface WeekEvent extends DateRange {
    weekNumber: number;
    days: Array<DayEvent>;
    start: Date;
    end: Date;
}

export interface DayEvent {
    date: Date;
    events: CalendarEvent[];
}

export interface CalendarEvent {
    start: Date;
    end: Date;
    value: any;
}

export interface DateRange {
    start: Date;
    end: Date;
}

export { Calendar as default } <commit_msg>Add MonthEvent interface and remove redudant properties from WeekEvent<commit_after>export class Calendar {
    constructor(parser?: Parser);

    parser: Parser;

    eventsDate: KnockoutObservable<Date>;

    events: KnockoutObservableArray<any>;

    startDay: KnockoutObservable<number>;

    endDay: KnockoutComputed<number>;

    addEvent(userObject: any): void;

    eventsByDay: KnockoutComputed<Array<DayEvent>>;

    eventsByWeek: KnockoutComputed<Array<WeekEvent>>;

    eventsForDate: KnockoutComputed<DayEvent>;
    
    weekDays: KnockoutComputed<string[]>;

    weeksInDateRange(start: Date, end: Date): number;

    isSameDate(left: Date, right: Date): boolean;

    isSameWeek(left: Date, right: Date): boolean;

    isInRange(date: Date, range: DateRange): boolean;

    floorToDay(date: Date): Date;

    ceilToDay(date: Date): Date;

    floorToWeekStart(date: Date): Date;

    ceilToWeekEnd(date: Date): Date;

    getDateRange(): DateRange;    
}

export interface Parser {
    (userObject: any): DateRange;
}

export interface MonthEvent extends DateRange {
    monthNumber: number;
    weeks: Array<WeekEvent>;
}

export interface WeekEvent extends DateRange {
    weekNumber: number;
    days: Array<DayEvent>;
}

export interface DayEvent {
    date: Date;
    events: CalendarEvent[];
}

export interface CalendarEvent {
    start: Date;
    end: Date;
    value: any;
}

export interface DateRange {
    start: Date;
    end: Date;
}

export { Calendar as default } 
{'fraction_non_alphanumeric': 0.1062937062937063, 'fraction_numerical': 0.0, 'mean_word_length': 3.941278065630397, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3971880', 'n_tokens_mistral': 930, 'n_tokens_neox': 865, 'n_words': 225}