import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { CalendarItem, CalendarSelection, CalendarView } from './calendar.types';
import * as i0 from "@angular/core";
export declare class CalendarComponent implements OnChanges, OnInit {
    id: string;
    selection: CalendarSelection | null;
    selectionChange: EventEmitter<CalendarSelection | null>;
    minDate: Date;
    maxDate: Date;
    focusOutStart: EventEmitter<KeyboardEvent>;
    focusOutEnd: EventEmitter<KeyboardEvent>;
    /** Month of the active date displayed in the header buttons. */
    month?: string;
    /** Year of the active date displayed in the header buttons. */
    year?: string;
    /** Range of years to display in the year view. */
    yearRange?: string;
    /** Array of calendar items to display in the calendar grid. */
    calendarItems: CalendarItem[];
    /** Weekday labels to show at the top of the calendar in day view. */
    weekDays: string[];
    /** Determines the current view mode of the calendar. */
    view: CalendarView;
    /**
     * Tracks the month and year being viewed in the calendar.
     * This is separate from the selection, which may be out of view.
     */
    activeDate: Date;
    /** TrackBy function for the calendar items. This avoids re-drawing calendar items if a date is shared between view updates */
    calendarItemTrackByDate: (index: number, item: CalendarItem) => string;
    disablePreviousButton: boolean;
    disableNextButton: boolean;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    onItemSelected(item: CalendarItem): void;
    onNextClick(): void;
    onPreviousClick(): void;
    /** Switches the calendar to month view. */
    onMonthClick(): void;
    /** Switches the calendar to year view. */
    onYearClick(): void;
    onFirstItemKeydown(event: KeyboardEvent): void;
    onLastItemKeydown(event: KeyboardEvent): void;
    private drawCalendar;
    private getCalendarItems;
    private getDayViewItems;
    private getMonthViewItems;
    private getYearViewItems;
    /** Returns true if the date is within the current calendar view */
    private isDateInView;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "ec-calendar", never, { "id": { "alias": "id"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; }, { "selectionChange": "selectionChange"; "focusOutStart": "focusOutStart"; "focusOutEnd": "focusOutEnd"; }, never, never, false, never>;
}
