import { EventEmitter, Type } from '@angular/core';
import { RCalendarCell, RCalendarSize, RCalendarViewMode, RCalendarSizeValues, RCalendarViewModeValues } from '../calendar-kit/model';
import { RDateService } from '../calendar-kit/services/date.service';
export interface RCalendarRange<D> {
    start: D;
    end?: D;
}
export declare class RCalendarRangeComponent<D> {
    protected dateService: RDateService<D>;
    /**
     * Defines if we should render previous and next months
     * in the current month view.
     * */
    boundingMonth: boolean;
    /**
     * Defines starting view for the calendar.
     * */
    startView: RCalendarViewMode;
    static ngAcceptInputType_startView: RCalendarViewModeValues;
    /**
     * A minimum available date for selection.
     * */
    min: D;
    /**
     * A maximum available date for selection.
     * */
    max: D;
    /**
     * A predicate that decides which cells will be disabled.
     * */
    filter: (D: any) => boolean;
    /**
     * Custom day cell component. Have to implement `RCalendarCell` interface.
     * */
    set _cellComponent(cellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>);
    dayCellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>;
    /**
     * Custom month cell component. Have to implement `RCalendarCell` interface.
     * */
    set _monthCellComponent(cellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>);
    monthCellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>;
    /**
     * Custom year cell component. Have to implement `RCalendarCell` interface.
     * */
    set _yearCellComponent(cellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>);
    yearCellComponent: Type<RCalendarCell<D, RCalendarRange<D>>>;
    /**
     * Size of the calendar and entire components.
     * Can be 'medium' which is default or 'large'.
     * */
    size: RCalendarSize;
    static ngAcceptInputType_size: RCalendarSizeValues;
    visibleDate: D;
    /**
     * Determines should we show calendars navigation or not.
     * */
    showNavigation: boolean;
    /**
     * Range which will be rendered as selected.
     * */
    range: RCalendarRange<D>;
    /**
     * 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 range when start selected and emits again when end selected.
     * */
    rangeChange: EventEmitter<RCalendarRange<D>>;
    constructor(dateService: RDateService<D>);
    onChange(date: D): void;
    private initDateIfNull;
    private handleSelected;
    private selectionStarted;
    private selectStart;
    private selectEnd;
    private selectRange;
}
