import "@openremote/or-icon";
import "@openremote/or-translate";
import "@openremote/or-vaadin-components/or-vaadin-button";
import "@openremote/or-vaadin-components/or-vaadin-checkbox";
import "@openremote/or-vaadin-components/or-vaadin-checkbox-group";
import "@openremote/or-vaadin-components/or-vaadin-date-picker";
import "@openremote/or-vaadin-components/or-vaadin-date-time-picker";
import "@openremote/or-vaadin-components/or-vaadin-dialog";
import "@openremote/or-vaadin-components/or-vaadin-icon";
import "@openremote/or-vaadin-components/or-vaadin-number-field";
import "@openremote/or-vaadin-components/or-vaadin-radio-group";
import "@openremote/or-vaadin-components/or-vaadin-select";
import "@openremote/or-vaadin-components/or-vaadin-multi-select-combo-box";
import "@openremote/or-vaadin-components/or-vaadin-time-picker";
import { LitElement, PropertyValues, TemplateResult } from "lit";
import { CalendarEvent } from "@openremote/model";
import { InputType } from "@openremote/or-vaadin-components/util";
import { OrVaadinDialog } from "@openremote/or-vaadin-components/or-vaadin-dialog";
import { RRule } from "rrule";
import { EventTypes, RRULE_ENDS } from "./util";
import type { PartKeys, RRulePartKeys, Frequency, ByRRuleCombination, ByRRulePartsKeys } from "./types";
export type * from "./types";
export * from "./util";
export interface OrSchedulerChangedEventDetail {
    value?: CalendarEvent;
}
export declare class OrSchedulerChangedEvent extends CustomEvent<OrSchedulerChangedEventDetail> {
    static readonly NAME = "or-scheduler-changed";
    constructor(value?: CalendarEvent);
}
export declare class OrSchedulerRemovedEvent extends CustomEvent<void> {
    static readonly NAME = "or-scheduler-removed";
    constructor();
}
declare global {
    export interface HTMLElementEventMap {
        [OrSchedulerChangedEvent.NAME]: OrSchedulerChangedEvent;
        [OrSchedulerRemovedEvent.NAME]: OrSchedulerRemovedEvent;
    }
}
declare const OrScheduler_base: (new (...args: any[]) => {
    _i18nextJustInitialized: boolean;
    _language: string;
    connectedCallback(): void;
    disconnectedCallback(): void;
    shouldUpdate(changedProps: PropertyValues): any;
    initCallback: (options: import("i18next").InitOptions) => void;
    langChangedCallback: () => void;
    readonly isConnected: boolean;
}) & typeof LitElement;
export declare class OrScheduler extends OrScheduler_base {
    static styles: import("lit").CSSResult;
    defaultSchedule?: CalendarEvent;
    defaultEventTypeLabel: string;
    disableNegativeByPartValues: boolean;
    disabledFrequencies: Frequency[];
    disabledRRuleParts: RRulePartKeys[];
    disabledByPartCombinations: ByRRuleCombination;
    header: string;
    isAllDay: boolean;
    open: boolean;
    removable: boolean;
    schedule?: CalendarEvent;
    timezoneOffset: number;
    protected _count: number;
    protected _ends: keyof typeof RRULE_ENDS;
    protected _eventType: EventTypes;
    protected _rrule?: RRule;
    protected _dialog: OrVaadinDialog;
    protected _byRRuleParts?: RRulePartKeys[];
    protected _until: Date;
    protected get _scheduleWithOffset(): CalendarEvent | undefined;
    protected set _scheduleWithOffset(schedule: CalendarEvent | undefined);
    protected get _timeLabel(): TemplateResult | undefined;
    connectedCallback(): void;
    shouldUpdate(changedProps: PropertyValues): any;
    protected _setAllDay(): void;
    /**
     * Converts the recurrence rule to string and normalizes it.
     *
     * The UTC timezone offset 'Z' for the UNTIL rule part is removed,
     * because the timezone is configurable.
     * @param rrule The recurrence rule to normalize.
     * @returns String representation of the defined Recurrence Rule
     */
    protected _getRRule(rrule?: RRule | undefined): string | undefined;
    protected _setRRuleValue(value: any, key: PartKeys): void;
    protected _setCalendarEventType(event: any): void;
    /**
     * Apply the timezone offset to the calendarEvent
     * @param schedule The schedule for which to add/substract the offset
     * @param offset The timezone offset in millis to apply
     * @returns The transformed calendar event
     */
    protected _applyTimezoneOffset(schedule: CalendarEvent | undefined, offset: number): CalendarEvent | undefined;
    protected _getDefaultMessageOptions(): {
        date: string;
        time: string;
    };
    protected render(): TemplateResult<1>;
    protected _getDialogHeader(): TemplateResult;
    protected _getDialogContent(): TemplateResult;
    protected _getDialogFooter(): TemplateResult;
    protected _onClose(): void;
    protected _onDelete(): void;
    protected _onSave(): void;
    protected _onPartChange(part: PartKeys, valueProp: "checked" | "value" | "detail", value?: any): (e: any) => void;
    /**
     * Check if this frequency is allowed
     * @param freq The frequency to check
     * @returns Whether the frequency is allowed
     */
    protected _isAllowedFrequency(freq: Frequency): boolean;
    /**
     * Displays the interval, frequency and BY_XXX RRule part fields
     *
     * Applicable rule parts
     * - `interval`
     * - `freq`
     * - `bysecond`
     * - `byminute`
     * - `byhour`
     * - `byweekday`
     * - `bymonthday`
     * - `byyearday`
     * - `byweekno`
     * - `bymonth`
     *
     * Evaluation order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR, BYMINUTE and BYSECOND.
     *
     * @returns Inputs for the applicable rule parts
     */
    protected _getRepeatTemplate(): TemplateResult;
    /**
     * Displays the BY_XXX RRule part fields if allowed by the frequency
     *
     * @returns The specified BY_XXX RRule part field or undefined if not applicable
     */
    protected _getByRulePart<T extends number | [string, string]>(part: ByRRulePartsKeys, type: InputType, options: T[]): TemplateResult | undefined;
    /**
     * Displays the fields that define when and how long the particular event is
     *
     * @returns The periods allDay and from/to date and time fields
     */
    protected _getPeriodTemplate(): TemplateResult;
    /**
     * Displays the fields that define how a recurring event should end
     *
     * Applicable rule parts
     * - `until`
     * - `count`
     * @returns The recurrence ends fields
     */
    protected _getEndsTemplate(): TemplateResult;
}
//# sourceMappingURL=index.d.ts.map