import { type TemporalDurationObject } from '../../intrinsics/Temporal/Duration.mts'; import { type TemporalPlainDateObject } from '../../intrinsics/Temporal/PlainDate.mts'; import { type ISODateTimeRecord } from '../../intrinsics/Temporal/PlainDateTime.mts'; import { type TimeZoneIdentifier, RoundingMode } from './addition.mts'; import { type CalendarType } from './calendar.mts'; import { TemporalUnit, type TimeUnit, type DateUnit, type Float64RepresentableInteger, type EpochNanoseconds } from './temporal.mts'; import { type ValueEvaluator, type PlainCompletion, Value, type PlainEvaluator, type FunctionObject, type Integer, type MathematicalValue } from '#self'; /** https://tc39.es/proposal-temporal/#sec-temporal-date-duration-records */ export interface DateDurationRecord { readonly Years: Float64RepresentableInteger; readonly Months: Float64RepresentableInteger; readonly Weeks: Float64RepresentableInteger; Days: Float64RepresentableInteger; } /** https://tc39.es/proposal-temporal/#sec-temporal-partial-duration-records */ export interface PartialDurationRecord { readonly Years: Float64RepresentableInteger | undefined; readonly Months: Float64RepresentableInteger | undefined; readonly Weeks: Float64RepresentableInteger | undefined; readonly Days: Float64RepresentableInteger | undefined; readonly Hours: Float64RepresentableInteger | undefined; readonly Minutes: Float64RepresentableInteger | undefined; readonly Seconds: Float64RepresentableInteger | undefined; readonly Milliseconds: Float64RepresentableInteger | undefined; readonly Microseconds: Float64RepresentableInteger | undefined; readonly Nanoseconds: Float64RepresentableInteger | undefined; } /** https://tc39.es/proposal-temporal/#sec-temporal-internal-duration-records */ export interface InternalDurationRecord { readonly Date: DateDurationRecord; readonly Time: TimeDuration; } /** https://tc39.es/proposal-temporal/#sec-temporal-internal-duration-records */ export type TimeDuration = Integer & { specName?: 'TimeDuration'; }; /** https://tc39.es/proposal-temporal/#sec-temporal-zerodateduration */ export declare function ZeroDateDuration(): DateDurationRecord; /** https://tc39.es/proposal-temporal/#sec-temporal-tointernaldurationrecord */ export declare function ToInternalDurationRecord(duration: TemporalDurationObject): InternalDurationRecord; /** https://tc39.es/proposal-temporal/#sec-temporal-tointernaldurationrecordwith24hourdays */ export declare function ToInternalDurationRecordWith24HourDays(duration: TemporalDurationObject): InternalDurationRecord; /** https://tc39.es/proposal-temporal/#sec-temporal-temporaldurationfrominternal */ export declare function TemporalDurationFromInternal(internalDuration: InternalDurationRecord, largestUnit: TemporalUnit): ValueEvaluator; /** https://tc39.es/proposal-temporal/#sec-temporal-createdatedurationrecord */ export declare function CreateDateDurationRecord(years: Integer, months: Integer, weeks: Integer, days: Integer): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-adjustdatedurationrecord */ export declare function AdjustDateDurationRecord(dateDuration: DateDurationRecord, days: Integer, weeks?: Integer, months?: Integer): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-combinedateandtimeduration */ export declare function CombineDateAndTimeDuration(dateDuration: DateDurationRecord, timeDuration: TimeDuration): InternalDurationRecord; /** https://tc39.es/proposal-temporal/#sec-temporal-totemporalduration */ export declare function ToTemporalDuration(item: Value): ValueEvaluator; /** https://tc39.es/proposal-temporal/#sec-temporal-durationsign */ export declare function DurationSign(duration: TemporalDurationObject): -1 | 0 | 1; /** https://tc39.es/proposal-temporal/#sec-temporal-datedurationsign */ export declare function DateDurationSign(dateDuration: DateDurationRecord): -1n | 0n | 1n; /** https://tc39.es/proposal-temporal/#sec-temporal-internaldurationsign */ export declare function InternalDurationSign(internalDuration: InternalDurationRecord): -1n | 0n | 1n; /** https://tc39.es/proposal-temporal/#sec-temporal-isvalidduration */ export declare function IsValidDuration(years: Integer, months: Integer, weeks: Integer, days: Integer, hours: Integer, minutes: Integer, seconds: Integer, milliseconds: Integer, microseconds: Integer, nanoseconds: Integer): boolean; /** https://tc39.es/proposal-temporal/#sec-temporal-defaulttemporallargestunit */ export declare function DefaultTemporalLargestUnit(duration: TemporalDurationObject): TemporalUnit; /** https://tc39.es/ecma262/pr/3759/#sec-topartialdurationrecord */ export declare function ToPartialDurationRecord(temporalDurationLike: Value): PlainEvaluator; /** https://tc39.es/proposal-temporal/#sec-temporal-createtemporalduration */ export declare function CreateTemporalDuration(years: Integer, months: Integer, weeks: Integer, days: Integer, hours: Integer, minutes: Integer, seconds: Integer, milliseconds: Integer, microseconds: Integer, nanoseconds: Integer, newTarget?: FunctionObject): ValueEvaluator; /** https://tc39.es/proposal-temporal/#sec-temporal-createnegatedtemporalduration */ export declare function CreateNegatedTemporalDuration(duration: TemporalDurationObject): TemporalDurationObject; /** https://tc39.es/proposal-temporal/#sec-temporal-timedurationfromcomponents */ export declare function TimeDurationFromComponents(hours: Integer, minutes: Integer, seconds: Integer, milliseconds: Integer, microseconds: Integer, nanoseconds: Integer): TimeDuration; /** https://tc39.es/proposal-temporal/#sec-temporal-addtimeduration */ export declare function AddTimeDuration(one: TimeDuration, two: TimeDuration): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-add24hourdaystotimeduration */ export declare function Add24HourDaysToTimeDuration(d: TimeDuration, days: Integer): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-addtimedurationtoepochnanoseconds */ export declare function AddTimeDurationToEpochNanoseconds(d: TimeDuration, epochNs: EpochNanoseconds): EpochNanoseconds; /** https://tc39.es/proposal-temporal/#sec-temporal-comparetimeduration */ export declare function CompareTimeDuration(one: TimeDuration, two: TimeDuration): -1 | 0 | 1; /** https://tc39.es/proposal-temporal/#sec-temporal-timedurationfromepochnanosecondsdifference */ export declare function TimeDurationFromEpochNanosecondsDifference(one: EpochNanoseconds, two: EpochNanoseconds): TimeDuration; /** https://tc39.es/proposal-temporal/#sec-temporal-roundtimedurationtoincrement */ export declare function RoundTimeDurationToIncrement(d: TimeDuration, increment: Integer, roundingMode: RoundingMode): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-timedurationsign */ export declare function TimeDurationSign(d: TimeDuration): -1n | 0n | 1n; /** https://tc39.es/proposal-temporal/#sec-temporal-datedurationdays */ export declare function DateDurationDays(dateDuration: DateDurationRecord, plainRelativeTo: TemporalPlainDateObject): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-roundtimeduration */ export declare function RoundTimeDuration(timeDuration: TimeDuration, increment: Integer, unit: TimeUnit, roundingMode: RoundingMode): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-totaltimeduration */ export declare function TotalTimeDuration(timeDuration: TimeDuration, unit: TimeUnit | TemporalUnit.Day): MathematicalValue; /** https://tc39.es/proposal-temporal/#sec-temporal-duration-nudge-result-records */ export interface DurationNudgeResultRecord { readonly Duration: InternalDurationRecord; readonly NudgedEpochNs: EpochNanoseconds; readonly DidExpandCalendarUnit: boolean; } /** https://tc39.es/proposal-temporal/#sec-temporal-computenudgewindow */ export declare function ComputeNudgeWindow(sign: -1n | 1n, duration: InternalDurationRecord, originEpochNs: EpochNanoseconds, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier | undefined, calendar: CalendarType, increment: Integer, unit: DateUnit, additionalShift: boolean): PlainCompletion<{ R1: MathematicalValue; R2: MathematicalValue; StartEpochNs: EpochNanoseconds; EndEpochNs: EpochNanoseconds; StartDuration: InternalDurationRecord; EndDuration: InternalDurationRecord; }>; /** https://tc39.es/proposal-temporal/#sec-temporal-nudgetocalendarunit */ export declare function NudgeToCalendarUnit(sign: -1n | 1n, duration: InternalDurationRecord, originEpochNs: EpochNanoseconds, destEpochNs: EpochNanoseconds, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier | undefined, calendar: CalendarType, increment: Integer, unit: DateUnit, roundingMode: RoundingMode): PlainCompletion<{ NudgeResult: DurationNudgeResultRecord; Total: MathematicalValue; }>; /** https://tc39.es/proposal-temporal/#sec-temporal-nudgetozonedtime */ export declare function NudgeToZonedTime(sign: -1n | 1n, duration: InternalDurationRecord, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier, calendar: CalendarType, increment: Integer, unit: TimeUnit, roundingMode: RoundingMode): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-nudgetodayortime */ export declare function NudgeToDayOrTime(duration: InternalDurationRecord, destEpochNs: EpochNanoseconds, largestUnit: TemporalUnit, increment: Integer, smallestUnit: TimeUnit | TemporalUnit.Day, roundingMode: RoundingMode): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-bubblerelativeduration */ export declare function BubbleRelativeDuration(sign: -1n | 1n, duration: InternalDurationRecord, nudgedEpochNs: EpochNanoseconds, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier | undefined, calendar: CalendarType, largestUnit: TemporalUnit, smallestUnit: DateUnit): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-roundrelativeduration */ export declare function RoundRelativeDuration(duration: InternalDurationRecord, originEpochNs: EpochNanoseconds, destEpochNs: EpochNanoseconds, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier | undefined, calendar: CalendarType, largestUnit: TemporalUnit, increment: Integer, smallestUnit: TemporalUnit, roundingMode: RoundingMode): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-totalrelativeduration */ export declare function TotalRelativeDuration(duration: InternalDurationRecord, originEpochNs: EpochNanoseconds, destEpochNs: EpochNanoseconds, isoDateTime: ISODateTimeRecord, timeZone: TimeZoneIdentifier | undefined, calendar: CalendarType, unit: TemporalUnit): PlainCompletion; /** https://tc39.es/proposal-temporal/#sec-temporal-temporaldurationtostring */ export declare function TemporalDurationToString(duration: TemporalDurationObject, precision: Integer | 'auto'): string; /** https://tc39.es/proposal-temporal/#sec-temporal-adddurations */ export declare function AddDurations(operation: 'add' | 'subtract', duration: TemporalDurationObject, _other: Value): ValueEvaluator; /** https://tc39.es/proposal-temporal/#eqn-maxTimeDuration */ export declare const maxTimeDuration = 9007199254740991999999999n; //# sourceMappingURL=duration.d.mts.map