import { IEventDetail, IEventEmitter } from '@breadstone/mosaik-elements';
import { type IInvalidable } from '../../../Behaviors/Invalidable';
import type { CalendarMarkerHandler } from '../../../Types/CalendarMarkerHandler';
import { CalendarView } from '../../../Types/CalendarView';
import { DayOfWeek } from '../../../Types/DayOfWeek';
import { RangeSelectionMode } from '../../../Types/RangeSelectionMode';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { ICalendarValueChangedEvent, ICalendarValueChangedEventDetail } from './Events/ICalendarValueChangedEventDetail';
import type { ICalendarViewChangedEventDetail } from './Events/ICalendarViewChangedEventDetail';
import type { ICalendarElementProps } from './ICalendarElementProps';
import { CalendarElementIntl } from './Intl/CalendarElementIntl';
declare const CalendarElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Localeable").ILocaleableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => IInvalidable & import("../../../Behaviors/Invalidable").IInvalidableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Valueable").IValueableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Fitable").IFitableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Calendar - A user interface component for displaying dates and events in a chronological order.
 *
 * @element mosaik-calendar
 *
 * @description
 * The Calendar component provides a visual representation of dates and events in a structured grid layout,
 * typically organized by months and days. It allows users to view and interact with events, appointments,
 * and other time-based information. Calendar components often support features like navigation between months,
 * week or day views, event creation, and event details.
 *
 * @category User Interface
 *
 * @slot footer - The footer slot.
 *
 * @csspart header - The header part.
 * @csspart content - The content part.
 * @csspart navigation - The navigation part.
 * @csspart previous - The navigation previous button part.
 * @csspart next - The navigation next button part.
 * @csspart today - The navigation today button part.
 * @csspart yearsView - The years view part.
 * @csspart monthView - The month view part.
 * @csspart dayView - The day view part.
 *
 * @fires dateChanged - Fired when the date has changed.
 *
 * @public
 */
export declare class CalendarElement extends CalendarElement_base implements ICalendarElementProps, IInvalidable {
    private readonly _dateChanged;
    private readonly _intl;
    private _displayDate;
    private _displayDateStart;
    private _displayDateEnd;
    private _header;
    private _value;
    private _values;
    private _view;
    private _selectionMode;
    private _blackoutDates;
    private _specialDates;
    private _minDate;
    private _maxDate;
    private _firstDayOfWeek;
    private _isTodayHighlighted;
    private _isWeekendHighlighted;
    private _showWeekNumbers;
    private _markerHandler;
    private _showAdjacent;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Returns the `displayDate` property.
     * The `displayDate` property represents the initial date to display in the calendar.
     *
     * @public
     * @attr
     */
    get displayDate(): Date | null;
    set displayDate(value: Date | null);
    /**
     * Returns the `displayDateStart` property.
     * The `displayDateStart` property represents the start date to display in the calendar.
     *
     * @public
     * @attr
     */
    get displayDateStart(): Date | null;
    set displayDateStart(value: Date | null);
    /**
     * Returns the `displayDateEnd` property.
     * The `displayDateEnd` property represents the end date to display in the calendar.
     *
     * @public
     * @attr
     */
    get displayDateEnd(): Date | null;
    set displayDateEnd(value: Date | null);
    /**
     * Gets or sets the `header` property.
     *
     * @public
     * @attr
     */
    get header(): string;
    set header(value: string);
    /**
     * Gets or sets the `value` property.
     *
     * @public
     * @override
     * @attr
     */
    get value(): Date | null;
    set value(value: Date | null);
    /**
     * Gets or sets the `values` property.
     *
     * @public
     * @attr
     */
    get values(): Array<Date>;
    set values(value: Array<Date>);
    /**
     * Gets or sets the `view` property.
     *
     * @public
     * @attr
     */
    get view(): CalendarView;
    set view(value: CalendarView);
    /**
     * Gets or sets the `selectionMode` property.
     *
     * @public
     * @attr
     */
    get selectionMode(): RangeSelectionMode;
    set selectionMode(value: RangeSelectionMode);
    /**
     * Gets or sets the `blackoutDates` property.
     *
     * @public
     * @attr
     */
    get blackoutDates(): Array<Date>;
    set blackoutDates(value: Array<Date>);
    /**
     * Gets or sets the `specialDates` property.
     *
     * @public
     * @attr
     */
    get specialDates(): Array<Date>;
    set specialDates(value: Array<Date>);
    /**
     * Gets or sets the `minDate` property.
     *
     * @public
     * @attr
     */
    get minDate(): Date | null;
    set minDate(value: Date | null);
    /**
     * Gets or sets the `maxDate` property.
     *
     * @public
     * @attr
     */
    get maxDate(): Date | null;
    set maxDate(value: Date | null);
    /**
     * Gets or sets the `firstDayOfWeek` property.
     *
     * @public
     * @attr
     */
    get firstDayOfWeek(): DayOfWeek;
    set firstDayOfWeek(value: DayOfWeek);
    /**
     * Gets or sets the `isTodayHighlighted` property.
     *
     * @public
     * @attr
     */
    get isTodayHighlighted(): boolean;
    set isTodayHighlighted(value: boolean);
    /**
     * Gets or sets the `isWeekendHighlighted` property.
     *
     * @public
     * @attr
     */
    get isWeekendHighlighted(): boolean;
    set isWeekendHighlighted(value: boolean);
    /**
     * Gets or sets the `showWeekNumbers` property.
     *
     * @public
     * @attr
     */
    get showWeekNumbers(): boolean;
    set showWeekNumbers(value: boolean);
    /**
     * A handler that gets date and returns null or a tuple with circled marker data. See {@link CalendarMarkerData}.
     *
     * @public
     * @attr
     */
    get markerHandler(): CalendarMarkerHandler;
    set markerHandler(value: CalendarMarkerHandler);
    /**
     * Gets or sets the `showAdjacent` property.
     *
     * @public
     * @attr
     */
    get showAdjacent(): boolean;
    set showAdjacent(value: boolean);
    /**
     * Returns the `intl` property.
     *
     * @public
     * @readonly
     */
    get intl(): CalendarElementIntl;
    /**
     * Called when the date is changed.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get dateChanged(): IEventEmitter<IEventDetail<this>>;
    /**
     * Resets the value, all kinds of validation and errors.
     *
     * @public
     */
    reset(): void;
    /**
     * Checks the validity of the element and returns `true` if it is valid; otherwise, `false`.
     *
     * @public
     * @override
     */
    checkValidity(): boolean;
    /**
     * @public
     */
    navigatePrevious(): void;
    /**
     * @public
     */
    navigateNext(): void;
    /**
     * @public
     */
    navigateToday(): void;
    /**
     * @protected
     */
    protected onLocalePropertyChanged(prev?: string, next?: string): void;
    protected onValuePropertyChanged(prev?: Date, next?: Date): void;
    /**
     * @protected
     * @template
     */
    onValueChanged(detail: ICalendarValueChangedEventDetail): void;
    /**
     * @protected
     * @template
     */
    onViewChanged(detail: ICalendarViewChangedEventDetail): void;
    /**
     * Emits the {@link dateChanged} event.
     *
     * @protected
     */
    protected onDateChanged(args: ICalendarValueChangedEventDetail): void;
}
/**
 * @public
 */
export declare namespace CalendarElement {
    type Props = ICalendarElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-calendar': CalendarElement;
    }
    interface HTMLElementEventMap {
        dateChanged: ICalendarValueChangedEvent;
    }
}
export {};
//# sourceMappingURL=CalendarElement.d.ts.map