import { Uncertainty } from './uncertainty';
import { DateTime as LuxonDateTime } from 'luxon';
declare abstract class AbstractDate {
    year: number | null;
    month: number | null;
    day: number | null;
    constructor(year?: number | null, month?: number | null, day?: number | null);
    abstract getPrecision(): string | null;
    abstract getDateTime(): DateTime;
    abstract copy(): AbstractDate;
    abstract toLuxonDateTime(): LuxonDateTime;
    abstract isDate: boolean;
    abstract isDateTime: boolean;
    isPrecise(): any;
    isImprecise(): boolean;
    isMorePrecise(other: any): boolean;
    isLessPrecise(other: any): boolean;
    isSamePrecision(other: any): boolean;
    equals(other: any): any;
    equivalent(other: any): any;
    sameAs(other: any, precision?: any): boolean | null;
    sameOrBefore(other: any, precision?: any): boolean | null;
    sameOrAfter(other: any, precision?: any): boolean | null;
    before(other: any, precision?: any): boolean | null;
    after(other: any, precision?: any): boolean | null;
    add(offset: any, field: any): any;
    getFieldFloor(field: any): 1 | 0;
    getFieldCieling(field: any): number;
}
export declare class DateTime extends AbstractDate {
    hour: number | null;
    minute: number | null;
    second: number | null;
    millisecond: number | null;
    timezoneOffset: number | null;
    static readonly Unit: {
        YEAR: string;
        MONTH: string;
        WEEK: string;
        DAY: string;
        HOUR: string;
        MINUTE: string;
        SECOND: string;
        MILLISECOND: string;
    };
    static readonly FIELDS: string[];
    static parse(string: any): DateTime | null;
    static fromJSDate(date: any, timezoneOffset?: any): DateTime;
    static fromLuxonDateTime(luxonDT: LuxonDateTime): DateTime;
    constructor(year?: number | null, month?: number | null, day?: number | null, hour?: number | null, minute?: number | null, second?: number | null, millisecond?: number | null, timezoneOffset?: number | null);
    get isDateTime(): boolean;
    get isDate(): boolean;
    copy(): DateTime;
    successor(): any;
    predecessor(): any;
    convertToTimezoneOffset(timezoneOffset?: number): DateTime;
    differenceBetween(other: any, unitField: any): Uncertainty | null;
    durationBetween(other: any, unitField: any): Uncertainty | null;
    isUTC(): boolean;
    getPrecision(): string | null;
    getPrecisionValue(): any;
    toLuxonDateTime(): LuxonDateTime;
    toLuxonUncertainty(): Uncertainty;
    toJSDate(ignoreTimezone?: boolean): globalThis.Date;
    toJSON(): string;
    _pad(num: number): string;
    toString(): string;
    toStringTime(): string;
    toStringDateTime(): string;
    getDateTime(): this;
    getDate(): Date;
    getTime(): DateTime;
    isTime(): boolean;
    _implicitlyConvert(other: any): any;
    reducedPrecision(unitField?: string | null): DateTime;
}
export declare class Date extends AbstractDate {
    static readonly Unit: {
        YEAR: string;
        MONTH: string;
        WEEK: string;
        DAY: string;
    };
    static readonly FIELDS: string[];
    static parse(string: any): Date | null;
    constructor(year?: number | null, month?: number | null, day?: number | null);
    get isDate(): boolean;
    get isDateTime(): boolean;
    copy(): Date;
    successor(): any;
    predecessor(): any;
    differenceBetween(other: any, unitField: any): Uncertainty | null;
    durationBetween(other: any, unitField: any): Uncertainty | null;
    getPrecision(): string | null;
    getPrecisionValue(): any;
    toLuxonDateTime(): LuxonDateTime;
    toLuxonUncertainty(): Uncertainty;
    toJSDate(): globalThis.Date;
    static fromJSDate(date: any): Date;
    static fromLuxonDateTime(luxonDT: LuxonDateTime): Date;
    toJSON(): string;
    toString(): string;
    getDateTime(timeZoneOffset?: number | null): DateTime;
    reducedPrecision(unitField?: string): Date;
}
export declare const MIN_DATETIME_VALUE: DateTime | null;
export declare const MAX_DATETIME_VALUE: DateTime | null;
export declare const MIN_DATE_VALUE: Date | null;
export declare const MAX_DATE_VALUE: Date | null;
export declare const MIN_TIME_VALUE: DateTime | undefined;
export declare const MAX_TIME_VALUE: DateTime | undefined;
export {};
