import { Duration } from 'date-fns';
import { StateDataDateTime, UniComponentSettings, UniComponentConfig, FormatType } from './uni-date-time.common';
import { DateOption } from 'flatpickr/dist/types/options';
import { CustomLocale } from 'flatpickr/dist/types/locale';
import * as i0 from "@angular/core";
export declare class UniDateTimeService {
    defaultErrorMessages: {
        required: () => string;
        max: (params: {
            min?: string | number;
            max?: string | number;
        }) => string;
        min: (params: {
            min?: string | number;
            max?: string | number;
        }) => string;
        range: (params: {
            min?: string | number;
            max?: string | number;
        }) => string;
        invalidformat: () => string;
    };
    fromDisplayDateTimeFormatToUnicodeTokens(displayFormat: string): string;
    isInDisplayDateTimeFormat(format: string): boolean;
    fromDisplayDateTimeFormatToFlatpickrFormat(displayFormat: string, checkFirst?: boolean): string;
    private referenceDate;
    private TokensPatternRegex;
    supportedLanguages: string[];
    constructor();
    parse(info: {
        dateStr?: string | null;
        timeStr?: string | null;
        dateTimeStr?: string | null;
        dateFormat?: string | null;
        timeFormat?: string;
        dateTimeFormat?: string;
        language?: string;
        locale?: string;
    }): Date | null;
    tryLocalizedParse(dateTime: string, format: string, language?: string, locale?: string, timeless?: boolean): Date | null;
    format(info: {
        dateTimeObj: Date | null;
        dateFormat?: string | null;
        timeFormat?: string | null;
        dateTimeFormat?: string;
        language?: string;
    }): string;
    flatpickrParseDate(date: DateOption, format?: string | undefined, timeless?: boolean | undefined, customLocaleOrLanguageStr?: CustomLocale | string): Date | undefined;
    flatpickrFormatDate(date: Date, format: string, customLocaleOrLanguageStr?: CustomLocale | string): string;
    isValid(date: Date): boolean;
    isBefore(input1: Date, input2: Date): boolean;
    isAfter(input1: Date, input2: Date): boolean;
    isBetween(date: Date, start: Date, end: Date): boolean;
    isEqual(input1: Date, input2: Date): boolean;
    add(date: Date, duration: Duration): Date;
    addDays(date: Date, amount: number): Date;
    addMonths(date: Date, amount: number): Date;
    addMilliseconds(date: Date, amount: number): Date;
    getMilliseconds(duration: Duration): number;
    isLeapYear(date: Date): boolean;
    tryParse(dateTimeStr: string, formats: string[]): Date | null;
    createDateTimeWithOffset(tzOffset: number, date?: Date): Date;
    startOfDay(date: Date): Date;
    endOfMonth(date: Date): Date;
    getISOWeek(date: Date): number;
    differenceInYears(endDate: Date, startDate: Date): number;
    differenceInMonths(endDate: Date, startDate: Date): number;
    differenceInDays(endDate: Date, startDate: Date): number;
    createDateTimeObject(dateStr: string | undefined | null, dateFormat: string | undefined | null, timeStr?: string | null, timeFormat?: string): Date | null;
    generateDateTimeData(dateStr: string | null, dateFormat: string | null | undefined, dateTimeObj?: Date | null, timeStr?: string | null, timeFormat?: string | null): StateDataDateTime;
    createDataForDateTime(dataValue: string | null, settings: UniComponentSettings, config: UniComponentConfig, format?: string | null, defaultDateFormat?: string, defaultTimeFormat?: string): StateDataDateTime;
    generateGUID(): string;
    getSupportedLanguages(): string[];
    getDefaultSettings(): UniComponentSettings;
    getDefaultConfig(): UniComponentConfig;
    getDefaultStrings(silent?: boolean): {
        dateTimeCapturedInBackend: string;
        dateCapturedInBackend: string;
        timeCapturedInBackend: string;
        currentDate: string;
        selectDate: string;
        currentTime: string;
        selectTime: string;
    };
    private fixLocaleCase;
    getFormatByLocale(locale: string | undefined, formatType: FormatType, withSeconds?: boolean): string;
    applyLocaleCorrections(language: string, locale: any): any;
    getFlatpickrLocale(localeString: string): any;
    formatDateTimeForStoredValue(dateTime: Date | undefined | null, dateStr: string | undefined | null, timeStr: string | undefined | null, config: UniComponentConfig, combinedDateTime: boolean | undefined): string | undefined | null;
    setTokensPatternRegex(newPatternRegex: string): void;
    isToken(value: string | null | undefined): boolean | "" | null | undefined;
    removeTokens(value: string): string;
    hasTimeFormat(format: string): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<UniDateTimeService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<UniDateTimeService>;
}
