/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { DateRange } from './core/date-range';
export declare const CALENDAR_CONSTANTS: {
    elementName: "forge-calendar";
    attributes: {
        DATA_DATE: string;
        DATA_EVENT_THEME: string;
        POPUP_CONTEXT: string;
        ALLOW_SINGLE_DATE_RANGE: string;
        CLEAR_BUTTON: string;
        CONSTRAIN_TO_ENABLED: string;
        FIRST_DAY_OF_WEEK: string;
        FIXED_HEIGHT: string;
        LIST_YEARS: string;
        LOCALE: string;
        MAX: string;
        MENU_ANIMATION: string;
        MIN: string;
        MODE: string;
        MONTH: string;
        PREVENT_FOCUS: string;
        READONLY: string;
        SELECTION_FOLLOWS_MONTH: string;
        SHOW_HEADER: string;
        SHOW_OTHER_MONTHS: string;
        SHOW_TODAY: string;
        TODAY_BUTTON: string;
        VIEW: string;
        YEAR: string;
        YEAR_RANGE: string;
    };
    classes: {
        ALLOW_SINGLE_DATE_RANGE: string;
        DATE: string;
        DATE_GRID: string;
        DATE_INNER: string;
        DATE_OTHER_MONTH: string;
        DATE_SPACER: string;
        DATE_SELECTED: string;
        DATE_TODAY: string;
        DATE_VIEW: string;
        DATE_VIEW_ROW: string;
        DATE_WRAPPER: string;
        DAY: string;
        EVENT: string;
        EVENT_OVERFLOW: string;
        EVENT_WRAPPER: string;
        FIXED_HEIGHT: string;
        FOOTER: string;
        HEADER: string;
        MDC_RIPPLE_UPGRADED_FOCUSED: string;
        MONTH_MENU_OPEN: string;
        PREVENT_FOCUS: string;
        RANGE: string;
        RANGE_END: string;
        RANGE_START: string;
        RANGE_TARGET: string;
        READONLY: string;
        RTL: string;
        SHOW_OTHER_MONTHS: string;
        SHOW_TODAY: string;
        VIEW: string;
        YEAR_MENU_OPEN: string;
    };
    ids: {
        ACCESSIBLE_HEADER: string;
        ACCESSIBLE_MONTH: string;
        ACCESSIBLE_YEAR: string;
        CLEAR_BUTTON: string;
        DATE_GRID: string;
        DATE_VIEW: string;
        DAY_ROW: string;
        FOOTER: string;
        HEADER: string;
        MENU: string;
        MONTH_BUTTON: string;
        NEXT_BUTTON: string;
        NEXT_BUTTON_TOOLTIP: string;
        PREVIOUS_BUTTON: string;
        PREVIOUS_BUTTON_TOOLTIP: string;
        TODAY_BUTTON: string;
        YEAR_BUTTON: string;
    };
    parts: {
        CLEAR_BUTTON: string;
        DATE: string;
        DATE_OTHER_MONTH: string;
        DATE_VIEW: string;
        DATE_WRAPPER: string;
        DAY: string;
        EVENT: string;
        EVENT_WRAPPER: string;
        FOOTER: string;
        HEADER: string;
        MONTH_BUTTON: string;
        MONTH_BUTTON_ELEMENT: string;
        NEXT_BUTTON: string;
        PREVIOUS_BUTTON: string;
        RANGE: string;
        RANGE_END: string;
        RANGE_START: string;
        TODAY: string;
        TODAY_BUTTON: string;
        WEEKEND: string;
        YEAR_BUTTON: string;
        YEAR_BUTTON_ELEMENT: string;
        SUNDAY: string;
        MONDAY: string;
        TUESDAY: string;
        WEDNESDAY: string;
        THURSDAY: string;
        FRIDAY: string;
        SATURDAY: string;
    };
    selectors: {
        ACCESSIBLE_HEADER: string;
        ACCESSIBLE_MONTH: string;
        ACCESSIBLE_YEAR: string;
        CALENDAR: string;
        CLEAR_BUTTON: string;
        DATE: string;
        DATE_GRID: string;
        DATE_INNER: string;
        DATE_OTHER_MONTH: string;
        DATE_SPACER: string;
        DATE_SELECTED: string;
        DATE_TODAY: string;
        DATE_VIEW: string;
        DATE_WRAPPER: string;
        DAY_ROW: string;
        EVENT_WRAPPER: string;
        FOOTER: string;
        HEADER: string;
        MENU: "forge-calendar-menu";
        MONTH_BUTTON: string;
        NEXT_BUTTON: string;
        NEXT_BUTTON_TOOLTIP: string;
        PREVIOUS_BUTTON: string;
        PREVIOUS_BUTTON_TOOLTIP: string;
        RANGE: string;
        RANGE_END: string;
        RANGE_START: string;
        TODAY_BUTTON: string;
        TOOLTIP: "forge-tooltip";
        VIEW: string;
        YEAR_BUTTON: string;
    };
    events: {
        readonly DATE_SELECT: "forge-calendar-date-select";
        readonly FOCUS_CHANGE: "forge-calendar-focus-change";
        readonly MONTH_CHANGE: "forge-calendar-month-change";
        readonly VIEW_CHANGE: "forge-calendar-view-change";
    };
    numbers: {
        DEFAULT_MAX_YEAR_OFFSET: number;
        DEFAULT_MIN_YEAR_OFFSET: number;
        FINAL_WEEK_BEGIN_INDEX: number;
        MONTH_LENGTH: number;
        PENULTIMATE_WEEK_BEGIN_INDEX: number;
        WEEK_LENGTH: number;
        YEARS_IN_VIEW: number;
    };
};
export declare type CalendarDateBuilder = (date: ICalendarDateConfig, element: HTMLElement) => HTMLElement;
export declare type CalendarDateSelectCallback = (date: ICalendarDate) => boolean | Promise<boolean>;
export declare type CalendarDayBuilder = (day: DayOfWeek, element: HTMLElement) => HTMLElement;
export declare type CalendarDisabledDateBuilder = (date: Date) => boolean;
export declare type CalendarEventBuilder = (date: Date) => ICalendarEvent[] | ICalendarEvent | null;
export declare type CalendarTooltipBuilder = (date: ICalendarDate, content: string) => string | null;
export declare type CalendarMode = 'single' | 'multiple' | 'range';
export declare type CalendarView = 'date' | 'month' | 'year';
export declare type RangeSelectionState = 'none' | 'from' | 'to';
export declare type CalendarEventColor = 'primary' | 'secondary' | 'blue' | 'light-green' | 'cyan' | 'teal' | 'orange' | 'blue-grey' | 'grey' | 'red' | 'pink' | 'purple' | 'light-blue' | 'deep-purple' | 'green' | 'lime' | 'yellow' | 'brown' | 'deep-orange';
export interface ICalendarDate {
    date: Date;
    selected: boolean;
    events: ICalendarEvent[];
}
export interface ICalendarDateConfig {
    date: Date;
    selected: boolean;
    today: boolean;
    thisMonth: boolean;
    disabled: boolean;
}
export interface ICalendarDateOptions {
    builder?: CalendarDateBuilder;
    locale?: string;
    showOtherMonths?: boolean;
}
export interface ICalendarDayOptions {
    builder?: CalendarDayBuilder;
    locale?: string;
}
export interface ICalendarEvent {
    date: Date;
    label: string;
    color: CalendarEventColor | string;
}
export interface ICalendarDateSelectEventData {
    date: Date | null;
    selected: boolean;
    range?: DateRange;
    rangeSelectionState?: RangeSelectionState;
    type: CalendarView;
}
export interface ICalendarMonthChangeEventData {
    month: number;
    userSelected: boolean;
    year: number;
}
export interface ICalendarFocusChangeEventData {
    selected: boolean;
    text: string;
    type: CalendarView;
    value: Date | number;
}
export interface ICalendarNumberRange {
    max: number;
    min: number;
}
export interface ICalendarDisabledDateParams {
    builder: CalendarDisabledDateBuilder | undefined;
    disabledDates: Date[];
    disabledDaysOfWeek: DayOfWeek[];
    maxDate: Date | null;
    minDate: Date | null;
    otherMonth?: boolean;
}
export interface ICalendarMenuMonthConfig {
    locale?: string;
    max: Date | null;
    min: Date | null;
    selectedMonth: number;
    selectedYear: number;
}
export interface ICalendarMenuYearConfig {
    locale?: string;
    max: number;
    min: number;
    selectedYear: number;
    yearInView: number;
}
export declare enum DayOfWeek {
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6
}
export declare enum CalendarMonthFocus {
    First = 1,
    Last = 2,
    Current = 3
}
