import { IEventEmitter } from '@breadstone/mosaik-elements';
import { IDisableableProps } from '../../../../../Behaviors/Disableable';
import { ILocaleableProps } from '../../../../../Behaviors/Localeable';
import { ICalendarDisplayChangedEventDetail, ICalendarViewChangedEventDetail, IDateChangedEventDetail } from '../../../../../events';
import { CalendarMarkerHandler } from '../../../../../Types/CalendarMarkerHandler';
import { RangeSelectionMode } from '../../../../../Types/RangeSelectionMode';
import { CustomElement } from '../../../../Abstracts/CustomElement';
import { CalendarElementIntl } from '../../Intl/CalendarElementIntl';
/**
 * Represents the `{@link ICalendarViewBaseElementProps}` interface.
 *
 * @public
 */
export interface ICalendarViewBaseElementProps extends IDisableableProps, ILocaleableProps {
    value?: Date;
    values?: Array<Date>;
    selection: RangeSelectionMode;
    blackoutDates: Array<Date>;
    specialDates: Array<Date>;
    markerHandler: CalendarMarkerHandler;
    displayDate: Date | null;
    displayDateStart: Date | null;
    displayDateEnd: Date | null;
}
declare const CalendarViewBaseElement_base: import("../../../../../../Index").ControlBehaviorReturn<import("../../../../../../Index").ControlBehaviorReturn<typeof CustomElement, ILocaleableProps>, IDisableableProps>;
/**
 * The `{@link CalendarViewBaseElement}` element.
 *
 * @fires valueChanged {DateChangedEvent} - Fired when the value is changed.
 *                       In the years view, the `value` property is the selected year.
 *                       In the months view, the `value` property is the selected month.
 *                       In the days view, the `value` property is the selected date.
 * @fires viewChanged {CalendarViewChangedEvent} - Fired when the view is changed between years, months, and days.
 * @fires displayChanged {CalendarDisplayChangedEvent} - Fired when the display date is changed.
 *
 * @public
 * @abstract
 */
export declare abstract class CalendarViewBaseElement extends CalendarViewBaseElement_base implements ICalendarViewBaseElementProps {
    private readonly _valueChanged;
    private readonly _viewChanged;
    private readonly _displayChanged;
    private _displayDate;
    private _displayDateStart;
    private _displayDateEnd;
    private _value?;
    private _values?;
    private _selection;
    private _blackoutDates;
    private _specialDates;
    private _markerHandler;
    private _intl;
    /**
     * @public
     */
    constructor();
    /**
     * Gets or sets the `displayDate` property.
     *
     * @public
     * @attr
     */
    get displayDate(): Date | null;
    set displayDate(value: Date | null);
    /**
     * Gets or sets the `displayDateStart` property.
     *
     * @public
     * @attr
     */
    get displayDateStart(): Date | null;
    set displayDateStart(value: Date | null);
    /**
     * Gets or sets the `displayDateEnd` property.
     *
     * @public
     * @attr
     */
    get displayDateEnd(): Date | null;
    set displayDateEnd(value: Date | null);
    /**
     * Gets or sets the `value` property.
     *
     * @public
     * @attr
     */
    get value(): Date | undefined;
    set value(value: Date | undefined);
    /**
     * Gets or sets the `values` property.
     *
     * @public
     * @attr
     */
    get values(): Array<Date> | undefined;
    set values(value: Array<Date> | undefined);
    /**
     * Gets or sets the `selection` property.
     *
     * @public
     * @attr
     */
    get selection(): RangeSelectionMode;
    set selection(value: RangeSelectionMode);
    /**
     * Gets or sets the `blackoutDates` property.
     *
     * @public
     */
    get blackoutDates(): Array<Date>;
    set blackoutDates(value: Array<Date>);
    /**
     * Gets or sets the `specialDates` property.
     *
     * @public
     */
    get specialDates(): Array<Date>;
    set specialDates(value: Array<Date>);
    /**
     * Gets or sets the `markerHandler` property.
     *
     * @public
     */
    get markerHandler(): CalendarMarkerHandler;
    set markerHandler(value: CalendarMarkerHandler);
    /**
     * Gets or sets the `intl` property.
     *
     * @public
     */
    get intl(): CalendarElementIntl | null;
    set intl(value: CalendarElementIntl | null);
    /**
     * Called when the value is changed.
     * Provides reference to `{@link IDateChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get valueChanged(): IEventEmitter<IDateChangedEventDetail>;
    /**
     * Called when the view is changed between years, months, and days.
     * Provides reference to `{@link ICalendarViewChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get viewChanged(): IEventEmitter<ICalendarViewChangedEventDetail>;
    /**
     * Called when the view is changed between years, months, and days.
     * Provides reference to `{@link ICalendarDisplayChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get displayChanged(): IEventEmitter<ICalendarDisplayChangedEventDetail>;
    /**
     * @protected
     * @template
     */
    isDateInRange(date: Date): boolean;
    /**
     * Emits the {@link changed} event.
     *
     * @protected
     */
    protected onValueChanged(args: IDateChangedEventDetail): void;
    /**
     * Emits the {@link viewChanged} event.
     *
     * @protected
     */
    protected onViewChanged(args: ICalendarViewChangedEventDetail): void;
    /**
     * Emits the {@link displayChanged} event.
     *
     * @protected
     */
    protected onDisplayChanged(args: ICalendarDisplayChangedEventDetail): void;
}
export {};
//# sourceMappingURL=CalendarViewBase.d.ts.map