import ITimeOptions, { TimeMode, TimeResolution } from './itimeoptions.js'; import Filter from 'ol/format/filter/Filter.js'; export declare const TIME_RANGE_SEPARATOR = "/"; /** * A class for formatting date and time values based on an `ITimeOption` object. * Provides utility functions for parsing dates and date ranges, validating them, * and generating formatted query strings for temporal layer filtering. * * The class allows customized configurations through its constructor options, including setting * minimum and maximum date bounds, default values, resolution levels, and operation modes. */ declare class LayerTimeFormatter { minValue: Date; maxValue: Date; resolution: TimeResolution; mode: TimeMode; minDefaultValue?: Date; maxDefaultValue?: Date; constructor(options?: ITimeOptions); /** * Receives a date string or date object, validates it against the specified time options, * and generates a formatted query string for usage as URL query parameter. * * @param {string|Date} date - The date-like string or date object to be parsed and converted. * @return {string} A formatted query string, or an empty string if the date is invalid. */ formatDateString(date: string | Date): string; /** * Generates a formatted query string from a provided date range for usage as URL query parameter. * The provided dates are shortened to fit the defined resolution. * * @param lowerLimit The lower bound of the time range as a date-like string or date object. * @param upperLimit The upper bound of the time range as a date-like string or date object. * @return A formatted query string, or an empty string if the dates are invalid. */ formatTimeRange(lowerLimit: string | Date, upperLimit: string | Date): string; /** * Simple date transform method from a date-like string to a date object without validating it against the time options. * * @param {string} dateStr - The date string to be parsed. * @return {Date | undefined} The resulting Date object if the input is valid, otherwise undefined. */ parseDateString(dateStr: string): Date | undefined; /** * Helper method to quickly generate a formated query string from the default time restriction * provided by the time options. * * @return {string | undefined} The formatted defaults as query string or undefined if no defaults are available. */ getFormattedDefault(): string | undefined; /** * Converts the WMS temporal query string into an OpenLayers WFS filter. * * @param {string} timeRestriction - The time restriction query string used for the WMS request, e.g. '2020-02', '2012-11-04/2012-11-14'. * @param {string} timeAttribute - The name of the attribute that is used for temporal filtering. * @return {Filter | undefined} Returns a new OpenLayers WFS filter object, or undefined if no valid filter could be created. */ toOpenLayersWfsFilter(timeRestriction: string, timeAttribute: string): Filter | undefined; private isValidDateString; private isWithinRange; /** * Formats a given date into a date string of type 'YYYY-MM-DD'. */ private static formatAsDate; private static getMondayOfWeek; private static getSundayOfWeek; /** * Formats a given date into a string, representing the week range from Monday to Sunday that the date falls into, * e.g. 'YYYY-MM-DD/YYYY-MM-DD' */ private static formatAsWeekRange; /** * Formats a given date into a date string of type 'YYYY-MM'. */ private static formatAsMonth; /** * Formats a given date into a year string of type 'YYYY'. */ private static formatAsYear; /** * Constructs a query string based on a single date value and a specified time resolution. * * @param {Date} date - The date value to be formatted. * @param {TimeResolution} resolution - The time resolution specifying the format (e.g. day, week, month, year). * @return {string} A formatted string representation of the date based on the provided resolution. */ static queryStringFromSingleValueAndResolution(date: Date, resolution: TimeResolution): string; /** * Formats a date range as a string, separated by a forward slash and taking the resolution into account * when defining the precision of the date strings. * * @param {Date} lowerLimit - The starting date of the range. * @param {Date} upperLimit - The ending date of the range. * @param {TimeResolution} resolution - The resolution of the date range, can be 'day', 'week', 'month', or 'year'. * @return {string} A query string representing the date range formatted according to the specified resolution. */ private static queryStringFromDateRangeAnResolution; } export default LayerTimeFormatter;