import { EventEmitter, OnInit, Type } from '@angular/core';
import { RCalendarYearModelService } from '../calendar-kit/services/calendar-year-model.service';
import { RCalendarCell, RCalendarSize, RCalendarViewMode, RCalendarSizeValues, RCalendarViewModeValues } from '../calendar-kit/model';
import { RDateService } from '../calendar-kit';
/**
 * The basis for calendar and range calendar components.
 * Encapsulates common behavior - store calendar state and perform navigation
 * between pickers.
 * */
export declare class RBaseCalendarComponent<D, T> implements OnInit {
    protected dateService: RDateService<D>;
    protected yearModelService: RCalendarYearModelService<D>;
    /**
     * Defines if we should render previous and next months
     * in the current month view.
     * */
    boundingMonth: boolean;
    /**
     * Defines active view for calendar.
     * */
    activeViewMode: RCalendarViewMode;
    static ngAcceptInputType_activeViewMode: RCalendarViewModeValues;
    /**
     * Minimum available date for selection.
     * */
    min: D;
    /**
     * Maximum available date for selection.
     * */
    max: D;
    /**
     * Predicate that decides which cells will be disabled.
     * */
    filter: (D: any) => boolean;
    /**
     * Custom day cell component. Have to implement `RCalendarCell` interface.
     * */
    dayCellComponent: Type<RCalendarCell<D, T>>;
    /**
     * Custom month cell component. Have to implement `RCalendarCell` interface.
     * */
    monthCellComponent: Type<RCalendarCell<D, T>>;
    /**
     * Custom year cell component. Have to implement `RCalendarCell` interface.
     * */
    yearCellComponent: Type<RCalendarCell<D, T>>;
    /**
     * Size of the calendar and entire components.
     * Can be 'medium' which is default or 'large'.
     * */
    size: RCalendarSize;
    static ngAcceptInputType_size: RCalendarSizeValues;
    visibleDate: D;
    /**
     * Determines whether we should show calendar navigation or not.
     * */
    showNavigation: boolean;
    /**
     * Value which will be rendered as selected.
     * */
    date: T;
    /**
     * Determines should we show week numbers column.
     * False by default.
     * */
    get showWeekNumber(): boolean;
    set showWeekNumber(value: boolean);
    protected _showWeekNumber: boolean;
    static ngAcceptInputType_showWeekNumber: any;
    /**
     * Sets symbol used as a header for week numbers column
     * */
    weekNumberSymbol: string;
    /**
     * Emits date when selected.
     * */
    dateChange: EventEmitter<T>;
    constructor(dateService: RDateService<D>, yearModelService: RCalendarYearModelService<D>);
    ngOnInit(): void;
    get large(): boolean;
    ViewMode: typeof RCalendarViewMode;
    setViewMode(viewMode: RCalendarViewMode): void;
    setVisibleDate(visibleDate: D): void;
    prevMonth(): void;
    nextMonth(): void;
    prevYear(): void;
    nextYear(): void;
    prevYears(): void;
    nextYears(): void;
    navigatePrev(): void;
    navigateNext(): void;
    onChangeViewMode(): void;
    private changeVisibleMonth;
    private changeVisibleYear;
    private changeVisibleYears;
}
