/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElement } from '@tylertech/forge-core';
import { CalendarMode, DayOfWeek, ICalendarDateSelectEventData, CalendarDateBuilder, CalendarDayBuilder, CalendarDateSelectCallback, CalendarEventBuilder, ICalendarEvent, ICalendarFocusChangeEventData, ICalendarMonthChangeEventData, CalendarTooltipBuilder, CalendarView } from './calendar-constants';
import { DateRange } from './core/date-range';
import { ICalendarBase } from './core/calendar-base';
import { CalendarMenuAnimationType } from './calendar-menu';
export interface ICalendarComponent extends ICalendarBase, ICustomElement {
    mode: CalendarMode;
    view: CalendarView;
    preventFocus: boolean;
    selectionFollowsMonth: boolean;
    showHeader: boolean;
    menuAnimation: CalendarMenuAnimationType;
    clearButton: boolean;
    todayButton: boolean;
    clearCallback: (() => void) | undefined;
    todayCallback: (() => void) | undefined;
    tooltipBuilder: CalendarTooltipBuilder | undefined;
    clear(): void;
    today(): void;
    selectDate(date: Date, setFocus?: boolean): void;
    deselectDate(date: Date): void;
    toggleDate(date: Date, force?: boolean): void;
    goToDate(date: Date, setFocus?: boolean): void;
    setActiveDate(date: Date, setFocus?: boolean): boolean;
    handleKey(evt: KeyboardEvent): void;
    layout(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-calendar': ICalendarComponent;
    }
    interface HTMLElementEventMap {
        'forge-calendar-date-select': CustomEvent<ICalendarDateSelectEventData>;
        'forge-calendar-focus-change': CustomEvent<ICalendarFocusChangeEventData>;
        'forge-calendar-month-change': CustomEvent<ICalendarMonthChangeEventData>;
        'forge-calendar-view-change': CustomEvent<CalendarView>;
    }
}
/**
 * The web component class behind the `<forge-calendar>` custom element.
 *
 * @tag forge-calendar
 */
export declare class CalendarComponent extends HTMLElement implements ICalendarComponent {
    static get observedAttributes(): string[];
    private _foundation;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /** readonly */
    activeDate: Date;
    allowSingleDateRange: boolean;
    clearButton: boolean;
    clearCallback: (() => void) | undefined;
    constrainToEnabled: boolean;
    dateBuilder: CalendarDateBuilder | undefined;
    dateSelectCallback: CalendarDateSelectCallback | undefined;
    dayBuilder: CalendarDayBuilder | undefined;
    disabledDateBuilder: ((date: Date) => boolean) | undefined;
    disabledDates: Date | Date[] | null | undefined;
    disabledDaysOfWeek: DayOfWeek | DayOfWeek[] | null | undefined;
    eventBuilder: CalendarEventBuilder | undefined;
    events: ICalendarEvent[] | null | undefined;
    firstDayOfWeek: DayOfWeek | undefined;
    fixedHeight: boolean;
    listYears: boolean;
    locale: string | undefined;
    max: Date | string | null | undefined;
    menuAnimation: CalendarMenuAnimationType;
    min: Date | string | null | undefined;
    mode: CalendarMode;
    month: number;
    preventFocus: boolean;
    readonly: boolean;
    selectionFollowsMonth: boolean;
    showHeader: boolean;
    showOtherMonths: boolean;
    showToday: boolean;
    todayButton: boolean;
    todayCallback: (() => void) | undefined;
    tooltipBuilder: CalendarTooltipBuilder | undefined;
    value: Date | Date[] | DateRange | null | undefined;
    view: CalendarView;
    weekendDays: DayOfWeek[] | null | undefined;
    year: number;
    yearRange: string;
    clear(): void;
    deselectDate(date: Date): void;
    goToDate(date: Date, setFocus?: boolean): void;
    handleKey(evt: KeyboardEvent): void;
    layout(): void;
    selectDate(date: Date): void;
    setActiveDate(date: Date, setFocus?: boolean): boolean;
    today(): void;
    toggleDate(date: Date, force?: boolean): void;
}
