import GirafeHTMLElement from '../../../base/GirafeHTMLElement.js';
import LayerTimeFormatter from '../../../tools/time/layertimeformatter.js';
import ITimeOptions, { TimeMode, TimeResolution } from '../../../tools/time/itimeoptions.js';
export type TimeRangeLimit = 'lower' | 'upper';
export declare const TimeChangeEvent = "timeChange";
/**
* The `TimeWidget` class is a custom HTML element used to manage and display a time range or time value
* through one or two sliders or date pickers. It supports two modes (`range` or `value`) and returns
* date strings formatted according to the specified time resolution and mode.
* The initialize method needs to be called first to configure the widget with an object of type ITimeOptions.
*
* This class must be extended, since it doesn't have a template of its own.
*/
declare abstract class TimeWidget extends GirafeHTMLElement {
protected lowerInputElem: HTMLInputElement;
protected upperInputElem: HTMLInputElement;
protected timeFormatter: LayerTimeFormatter;
protected resolution: TimeResolution;
mode: TimeMode;
protected minValue: Date;
protected maxValue: Date;
protected minDefaultValue: string;
protected maxDefaultValue: string;
private readonly debounceTime;
private timeChangeEventDebounced;
constructor(name: string);
/**
* Initializes the widget and sets properties of the input elements. Must be called before using the widget.
*
* @param {ITimeOptions} timeOptions - Configuration options for the time widget.
*/
initialize(timeOptions: ITimeOptions): void;
render(): void;
renderComponent(): void;
protected getInputElement(limit?: TimeRangeLimit): HTMLInputElement;
/**
* Retrieves the value associated with the input element of the specified limit.
*
* @param {TimeRangeLimit} [limit] - Optional parameter specifying the input Element ('upper' or 'lower')
* for which value is to be fetched.
* @return {string} The raw value retrieved from the input element.
*/
getValue(limit?: TimeRangeLimit): string;
/**
* Get the current time restriction as a formatted query string.
*
* @return {string | undefined} The formatted time restriction as string or undefined if the time restriction is empty.
*
*/
getTimeRestriction(): string | undefined;
/**
* Dispatches a custom event to notify the parent about the changed time.
*
* @param {boolean} unset - Set the time restriction to undefined.
*/
private createTimeChangeEvent;
/**
* Dispatches a debounced time change event to prevent frequent server calls.
*
* @param {boolean} [unset=false] - Indicates whether the time will be set to undefined.
*/
protected dispatchTimeChangeEvent(unset?: boolean): void;
protected connectedCallback(): void;
}
export default TimeWidget;