import { Value } from "./Value.js";
import { Comparable } from "./Comparable.js";
import { ExprType } from "../type/ExprType.js";
import Decimal from "decimal.js";
import { IfcDateValue } from "./IfcDateValue.js";
import { IfcTimeValue } from "./IfcTimeValue.js";
import { IfcTimeStampValue } from "./IfcTimeStampValue.js";
import { IfcDurationValue } from "./IfcDurationValue.js";
export declare class IfcDateTimeValue implements Value<IfcDateTimeValue>, Comparable<IfcDateTimeValue> {
    private readonly utcDate;
    private readonly stringRepresentation;
    private readonly originalTimeZoneHours;
    private readonly originalTimeZoneMinutes;
    private readonly isLocal;
    private readonly secondFraction;
    private static readonly regex;
    constructor(value: string | number | Decimal | IfcDateTimeValue | ParsedIfcDateTimeValue);
    static parseIfcDate(value: string): ParsedIfcDateTimeValue;
    static of(value: string): IfcDateTimeValue;
    private getTimeAsString;
    private pad00;
    private getDateAsString;
    getTimeZoneAsString(): String;
    private getTimeStampSeconds;
    private getTime;
    getValue(): IfcDateTimeValue;
    getType(): ExprType;
    static isIfcDateTimeValueType(arg: any): arg is IfcDateTimeValue;
    static isValidStringRepresentation(str: string): boolean;
    equals(other: Value<any>): boolean;
    private toCanonicalString;
    toString(): string;
    compareTo(other: IfcDateTimeValue): number;
    static ofTimeStampSeconds(timeStampSeconds: Decimal | number): IfcDateTimeValue;
    toIfcDateValue(): IfcDateValue;
    toIfcTimeValue(): IfcTimeValue;
    toIfcTimeStampValue(): IfcTimeStampValue;
    addDuration(duration: IfcDurationValue): IfcDateTimeValue;
}
export type ParsedIfcDateTimeValue = {
    utcDate: Date;
    secondFraction: Decimal;
    originalTimeZoneHours?: number;
    originalTimeZoneMinutes?: number;
    isLocal: boolean;
};
export declare function isParsedIfcDateTimeValue(arg: any): arg is ParsedIfcDateTimeValue;
