AK-21/Graphite-Industrial-Intelligence
0
1/*! *****************************************************************************2Copyright (c) Microsoft Corporation. All rights reserved.3Licensed under the Apache License, Version 2.0 (the "License"); you may not use4this file except in compliance with the License. You may obtain a copy of the5License at http://www.apache.org/licenses/LICENSE-2.06 7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,10MERCHANTABILITY OR NON-INFRINGEMENT.11 12See the Apache Version 2.0 License for specific language governing permissions13and limitations under the License.14***************************************************************************** */15 16 17/// <reference lib="es2015.symbol.wellknown" />18/// <reference lib="es2020.intl" />19/// <reference lib="es2025.intl" />20 21declare namespace Temporal {22 type CalendarLike = PlainDate | PlainDateTime | PlainMonthDay | PlainYearMonth | ZonedDateTime | string;23 type DurationLike = Duration | DurationLikeObject | string;24 type InstantLike = Instant | ZonedDateTime | string;25 type PlainDateLike = PlainDate | ZonedDateTime | PlainDateTime | DateLikeObject | string;26 type PlainDateTimeLike = PlainDateTime | ZonedDateTime | PlainDate | DateTimeLikeObject | string;27 type PlainMonthDayLike = PlainMonthDay | DateLikeObject | string;28 type PlainTimeLike = PlainTime | PlainDateTime | ZonedDateTime | TimeLikeObject | string;29 type PlainYearMonthLike = PlainYearMonth | YearMonthLikeObject | string;30 type TimeZoneLike = ZonedDateTime | string;31 type ZonedDateTimeLike = ZonedDateTime | ZonedDateTimeLikeObject | string;32 33 type PartialTemporalLike<T extends object> = {34 [P in Exclude<keyof T, "calendar" | "timeZone">]?: T[P] | undefined;35 };36 37 interface DateLikeObject {38 year?: number | undefined;39 era?: string | undefined;40 eraYear?: number | undefined;41 month?: number | undefined;42 monthCode?: string | undefined;43 day: number;44 calendar?: string | undefined;45 }46 47 interface DateTimeLikeObject extends DateLikeObject, TimeLikeObject {}48 49 interface DurationLikeObject {50 years?: number | undefined;51 months?: number | undefined;52 weeks?: number | undefined;53 days?: number | undefined;54 hours?: number | undefined;55 minutes?: number | undefined;56 seconds?: number | undefined;57 milliseconds?: number | undefined;58 microseconds?: number | undefined;59 nanoseconds?: number | undefined;60 }61 62 interface TimeLikeObject {63 hour?: number | undefined;64 minute?: number | undefined;65 second?: number | undefined;66 millisecond?: number | undefined;67 microsecond?: number | undefined;68 nanosecond?: number | undefined;69 }70 71 interface YearMonthLikeObject extends Omit<DateLikeObject, "day"> {}72 73 interface ZonedDateTimeLikeObject extends DateTimeLikeObject {74 timeZone: TimeZoneLike;75 offset?: string | undefined;76 }77 78 type DateUnit = "year" | "month" | "week" | "day";79 type TimeUnit = "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond";80 type PluralizeUnit<T extends DateUnit | TimeUnit> =81 | T82 | {83 year: "years";84 month: "months";85 week: "weeks";86 day: "days";87 hour: "hours";88 minute: "minutes";89 second: "seconds";90 millisecond: "milliseconds";91 microsecond: "microseconds";92 nanosecond: "nanoseconds";93 }[T];94 95 interface DisambiguationOptions {96 disambiguation?: "compatible" | "earlier" | "later" | "reject" | undefined;97 }98 99 interface OverflowOptions {100 overflow?: "constrain" | "reject" | undefined;101 }102 103 interface TransitionOptions {104 direction: "next" | "previous";105 }106 107 interface RoundingOptions<Units extends DateUnit | TimeUnit> {108 smallestUnit?: PluralizeUnit<Units> | undefined;109 roundingIncrement?: number | undefined;110 roundingMode?: "ceil" | "floor" | "expand" | "trunc" | "halfCeil" | "halfFloor" | "halfExpand" | "halfTrunc" | "halfEven" | undefined;111 }112 113 interface RoundingOptionsWithLargestUnit<Units extends DateUnit | TimeUnit> extends RoundingOptions<Units> {114 largestUnit?: "auto" | PluralizeUnit<Units> | undefined;115 }116 117 interface ToStringRoundingOptions<Units extends DateUnit | TimeUnit> extends Pick<RoundingOptions<Units>, "smallestUnit" | "roundingMode"> {}118 119 interface ToStringRoundingOptionsWithFractionalSeconds<Units extends DateUnit | TimeUnit> extends ToStringRoundingOptions<Units> {120 fractionalSecondDigits?: "auto" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined;121 }122 123 namespace Now {124 function timeZoneId(): string;125 function instant(): Instant;126 function plainDateTimeISO(timeZone?: TimeZoneLike): PlainDateTime;127 function zonedDateTimeISO(timeZone?: TimeZoneLike): ZonedDateTime;128 function plainDateISO(timeZone?: TimeZoneLike): PlainDate;129 function plainTimeISO(timeZone?: TimeZoneLike): PlainTime;130 }131 132 interface PlainDateToStringOptions {133 calendarName?: "auto" | "always" | "never" | "critical" | undefined;134 }135 136 interface PlainDateToZonedDateTimeOptions {137 plainTime?: PlainTimeLike | undefined;138 timeZone: TimeZoneLike;139 }140 141 interface PlainDate {142 readonly calendarId: string;143 readonly era: string | undefined;144 readonly eraYear: number | undefined;145 readonly year: number;146 readonly month: number;147 readonly monthCode: string;148 readonly day: number;149 readonly dayOfWeek: number;150 readonly dayOfYear: number;151 readonly weekOfYear: number | undefined;152 readonly yearOfWeek: number | undefined;153 readonly daysInWeek: number;154 readonly daysInMonth: number;155 readonly daysInYear: number;156 readonly monthsInYear: number;157 readonly inLeapYear: boolean;158 toPlainYearMonth(): PlainYearMonth;159 toPlainMonthDay(): PlainMonthDay;160 add(duration: DurationLike, options?: OverflowOptions): PlainDate;161 subtract(duration: DurationLike, options?: OverflowOptions): PlainDate;162 with(dateLike: PartialTemporalLike<DateLikeObject>, options?: OverflowOptions): PlainDate;163 withCalendar(calendarLike: CalendarLike): PlainDate;164 until(other: PlainDateLike, options?: RoundingOptionsWithLargestUnit<DateUnit>): Duration;165 since(other: PlainDateLike, options?: RoundingOptionsWithLargestUnit<DateUnit>): Duration;166 equals(other: PlainDateLike): boolean;167 toPlainDateTime(time?: PlainTimeLike): PlainDateTime;168 toZonedDateTime(timeZone: TimeZoneLike): ZonedDateTime;169 toZonedDateTime(item: PlainDateToZonedDateTimeOptions): ZonedDateTime;170 toString(options?: PlainDateToStringOptions): string;171 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;172 toJSON(): string;173 valueOf(): never;174 readonly [Symbol.toStringTag]: "Temporal.PlainDate";175 }176 177 interface PlainDateConstructor {178 new (isoYear: number, isoMonth: number, isoDay: number, calendar?: string): PlainDate;179 readonly prototype: PlainDate;180 from(item: PlainDateLike, options?: OverflowOptions): PlainDate;181 compare(one: PlainDateLike, two: PlainDateLike): number;182 }183 var PlainDate: PlainDateConstructor;184 185 interface PlainTimeToStringOptions extends ToStringRoundingOptionsWithFractionalSeconds<Exclude<TimeUnit, "hour">> {}186 187 interface PlainTime {188 readonly hour: number;189 readonly minute: number;190 readonly second: number;191 readonly millisecond: number;192 readonly microsecond: number;193 readonly nanosecond: number;194 add(duration: DurationLike): PlainTime;195 subtract(duration: DurationLike): PlainTime;196 with(timeLike: PartialTemporalLike<TimeLikeObject>, options?: OverflowOptions): PlainTime;197 until(other: PlainTimeLike, options?: RoundingOptionsWithLargestUnit<TimeUnit>): Duration;198 since(other: PlainTimeLike, options?: RoundingOptionsWithLargestUnit<TimeUnit>): Duration;199 equals(other: PlainTimeLike): boolean;200 round(roundTo: PluralizeUnit<TimeUnit>): PlainTime;201 round(roundTo: RoundingOptions<TimeUnit>): PlainTime;202 toString(options?: PlainTimeToStringOptions): string;203 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;204 toJSON(): string;205 valueOf(): never;206 readonly [Symbol.toStringTag]: "Temporal.PlainTime";207 }208 209 interface PlainTimeConstructor {210 new (hour?: number, minute?: number, second?: number, millisecond?: number, microsecond?: number, nanosecond?: number): PlainTime;211 readonly prototype: PlainTime;212 from(item: PlainTimeLike, options?: OverflowOptions): PlainTime;213 compare(one: PlainTimeLike, two: PlainTimeLike): number;214 }215 var PlainTime: PlainTimeConstructor;216 217 interface PlainDateTimeToStringOptions extends PlainDateToStringOptions, PlainTimeToStringOptions {}218 219 interface PlainDateTime {220 readonly calendarId: string;221 readonly era: string | undefined;222 readonly eraYear: number | undefined;223 readonly year: number;224 readonly month: number;225 readonly monthCode: string;226 readonly day: number;227 readonly hour: number;228 readonly minute: number;229 readonly second: number;230 readonly millisecond: number;231 readonly microsecond: number;232 readonly nanosecond: number;233 readonly dayOfWeek: number;234 readonly dayOfYear: number;235 readonly weekOfYear: number | undefined;236 readonly yearOfWeek: number | undefined;237 readonly daysInWeek: number;238 readonly daysInMonth: number;239 readonly daysInYear: number;240 readonly monthsInYear: number;241 readonly inLeapYear: boolean;242 with(dateTimeLike: PartialTemporalLike<DateTimeLikeObject>, options?: OverflowOptions): PlainDateTime;243 withPlainTime(plainTime?: PlainTimeLike): PlainDateTime;244 withCalendar(calendar: CalendarLike): PlainDateTime;245 add(duration: DurationLike, options?: OverflowOptions): PlainDateTime;246 subtract(duration: DurationLike, options?: OverflowOptions): PlainDateTime;247 until(other: PlainDateTimeLike, options?: RoundingOptionsWithLargestUnit<DateUnit | TimeUnit>): Duration;248 since(other: PlainDateTimeLike, options?: RoundingOptionsWithLargestUnit<DateUnit | TimeUnit>): Duration;249 round(roundTo: PluralizeUnit<"day" | TimeUnit>): PlainDateTime;250 round(roundTo: RoundingOptions<"day" | TimeUnit>): PlainDateTime;251 equals(other: PlainDateTimeLike): boolean;252 toString(options?: PlainDateTimeToStringOptions): string;253 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;254 toJSON(): string;255 valueOf(): never;256 toZonedDateTime(timeZone: TimeZoneLike, options?: DisambiguationOptions): ZonedDateTime;257 toPlainDate(): PlainDate;258 toPlainTime(): PlainTime;259 readonly [Symbol.toStringTag]: "Temporal.PlainDateTime";260 }261 262 interface PlainDateTimeConstructor {263 new (isoYear: number, isoMonth: number, isoDay: number, hour?: number, minute?: number, second?: number, millisecond?: number, microsecond?: number, nanosecond?: number, calendar?: string): PlainDateTime;264 readonly prototype: PlainDateTime;265 from(item: PlainDateTimeLike, options?: OverflowOptions): PlainDateTime;266 compare(one: PlainDateTimeLike, two: PlainDateTimeLike): number;267 }268 var PlainDateTime: PlainDateTimeConstructor;269 270 interface ZonedDateTimeToStringOptions extends PlainDateTimeToStringOptions {271 offset?: "auto" | "never" | undefined;272 timeZoneName?: "auto" | "never" | "critical" | undefined;273 }274 275 interface ZonedDateTimeFromOptions extends OverflowOptions, DisambiguationOptions {276 offset?: "use" | "ignore" | "prefer" | "reject" | undefined;277 }278 279 interface ZonedDateTime {280 readonly calendarId: string;281 readonly timeZoneId: string;282 readonly era: string | undefined;283 readonly eraYear: number | undefined;284 readonly year: number;285 readonly month: number;286 readonly monthCode: string;287 readonly day: number;288 readonly hour: number;289 readonly minute: number;290 readonly second: number;291 readonly millisecond: number;292 readonly microsecond: number;293 readonly nanosecond: number;294 readonly epochMilliseconds: number;295 readonly epochNanoseconds: bigint;296 readonly dayOfWeek: number;297 readonly dayOfYear: number;298 readonly weekOfYear: number | undefined;299 readonly yearOfWeek: number | undefined;300 readonly hoursInDay: number;301 readonly daysInWeek: number;302 readonly daysInMonth: number;303 readonly daysInYear: number;304 readonly monthsInYear: number;305 readonly inLeapYear: boolean;306 readonly offsetNanoseconds: number;307 readonly offset: string;308 with(zonedDateTimeLike: PartialTemporalLike<ZonedDateTimeLikeObject>, options?: ZonedDateTimeFromOptions): ZonedDateTime;309 withPlainTime(plainTime?: PlainTimeLike): ZonedDateTime;310 withTimeZone(timeZone: TimeZoneLike): ZonedDateTime;311 withCalendar(calendar: CalendarLike): ZonedDateTime;312 add(duration: DurationLike, options?: OverflowOptions): ZonedDateTime;313 subtract(duration: DurationLike, options?: OverflowOptions): ZonedDateTime;314 until(other: ZonedDateTimeLike, options?: RoundingOptionsWithLargestUnit<DateUnit | TimeUnit>): Duration;315 since(other: ZonedDateTimeLike, options?: RoundingOptionsWithLargestUnit<DateUnit | TimeUnit>): Duration;316 round(roundTo: PluralizeUnit<"day" | TimeUnit>): ZonedDateTime;317 round(roundTo: RoundingOptions<"day" | TimeUnit>): ZonedDateTime;318 equals(other: ZonedDateTimeLike): boolean;319 toString(options?: ZonedDateTimeToStringOptions): string;320 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;321 toJSON(): string;322 valueOf(): never;323 startOfDay(): ZonedDateTime;324 getTimeZoneTransition(direction: "next" | "previous"): ZonedDateTime | null;325 getTimeZoneTransition(direction: TransitionOptions): ZonedDateTime | null;326 toInstant(): Instant;327 toPlainDate(): PlainDate;328 toPlainTime(): PlainTime;329 toPlainDateTime(): PlainDateTime;330 readonly [Symbol.toStringTag]: "Temporal.ZonedDateTime";331 }332 333 interface ZonedDateTimeConstructor {334 new (epochNanoseconds: bigint, timeZone: string, calendar?: string): ZonedDateTime;335 readonly prototype: ZonedDateTime;336 from(item: ZonedDateTimeLike, options?: ZonedDateTimeFromOptions): ZonedDateTime;337 compare(one: ZonedDateTimeLike, two: ZonedDateTimeLike): number;338 }339 var ZonedDateTime: ZonedDateTimeConstructor;340 341 interface DurationRelativeToOptions {342 relativeTo?: ZonedDateTimeLike | PlainDateLike | undefined;343 }344 345 interface DurationRoundingOptions extends DurationRelativeToOptions, RoundingOptionsWithLargestUnit<DateUnit | TimeUnit> {}346 347 interface DurationToStringOptions extends ToStringRoundingOptionsWithFractionalSeconds<Exclude<TimeUnit, "hour" | "minute">> {}348 349 interface DurationTotalOptions extends DurationRelativeToOptions {350 unit: PluralizeUnit<DateUnit | TimeUnit>;351 }352 353 interface Duration {354 readonly years: number;355 readonly months: number;356 readonly weeks: number;357 readonly days: number;358 readonly hours: number;359 readonly minutes: number;360 readonly seconds: number;361 readonly milliseconds: number;362 readonly microseconds: number;363 readonly nanoseconds: number;364 readonly sign: number;365 readonly blank: boolean;366 with(durationLike: PartialTemporalLike<DurationLikeObject>): Duration;367 negated(): Duration;368 abs(): Duration;369 add(other: DurationLike): Duration;370 subtract(other: DurationLike): Duration;371 round(roundTo: PluralizeUnit<"day" | TimeUnit>): Duration;372 round(roundTo: DurationRoundingOptions): Duration;373 total(totalOf: PluralizeUnit<"day" | TimeUnit>): number;374 total(totalOf: DurationTotalOptions): number;375 toString(options?: DurationToStringOptions): string;376 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DurationFormatOptions): string;377 toJSON(): string;378 valueOf(): never;379 readonly [Symbol.toStringTag]: "Temporal.Duration";380 }381 382 interface DurationConstructor {383 new (years?: number, months?: number, weeks?: number, days?: number, hours?: number, minutes?: number, seconds?: number, milliseconds?: number, microseconds?: number, nanoseconds?: number): Duration;384 readonly prototype: Duration;385 from(item: DurationLike): Duration;386 compare(one: DurationLike, two: DurationLike, options?: DurationRelativeToOptions): number;387 }388 var Duration: DurationConstructor;389 390 interface InstantToStringOptions extends PlainTimeToStringOptions {391 timeZone?: TimeZoneLike | undefined;392 }393 394 interface Instant {395 readonly epochMilliseconds: number;396 readonly epochNanoseconds: bigint;397 add(duration: DurationLike): Instant;398 subtract(duration: DurationLike): Instant;399 until(other: InstantLike, options?: RoundingOptionsWithLargestUnit<TimeUnit>): Duration;400 since(other: InstantLike, options?: RoundingOptionsWithLargestUnit<TimeUnit>): Duration;401 round(roundTo: PluralizeUnit<TimeUnit>): Instant;402 round(roundTo: RoundingOptions<TimeUnit>): Instant;403 equals(other: InstantLike): boolean;404 toString(options?: InstantToStringOptions): string;405 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;406 toJSON(): string;407 valueOf(): never;408 toZonedDateTimeISO(timeZone: TimeZoneLike): ZonedDateTime;409 readonly [Symbol.toStringTag]: "Temporal.Instant";410 }411 412 interface InstantConstructor {413 new (epochNanoseconds: bigint): Instant;414 readonly prototype: Instant;415 from(item: InstantLike): Instant;416 fromEpochMilliseconds(epochMilliseconds: number): Instant;417 fromEpochNanoseconds(epochNanoseconds: bigint): Instant;418 compare(one: InstantLike, two: InstantLike): number;419 }420 var Instant: InstantConstructor;421 422 interface PlainYearMonthToPlainDateOptions {423 day: number;424 }425 426 interface PlainYearMonth {427 readonly calendarId: string;428 readonly era: string | undefined;429 readonly eraYear: number | undefined;430 readonly year: number;431 readonly month: number;432 readonly monthCode: string;433 readonly daysInYear: number;434 readonly daysInMonth: number;435 readonly monthsInYear: number;436 readonly inLeapYear: boolean;437 with(yearMonthLike: PartialTemporalLike<YearMonthLikeObject>, options?: OverflowOptions): PlainYearMonth;438 add(duration: DurationLike, options?: OverflowOptions): PlainYearMonth;439 subtract(duration: DurationLike, options?: OverflowOptions): PlainYearMonth;440 until(other: PlainYearMonthLike, options?: RoundingOptionsWithLargestUnit<"year" | "month">): Duration;441 since(other: PlainYearMonthLike, options?: RoundingOptionsWithLargestUnit<"year" | "month">): Duration;442 equals(other: PlainYearMonthLike): boolean;443 toString(options?: PlainDateToStringOptions): string;444 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;445 toJSON(): string;446 valueOf(): never;447 toPlainDate(item: PlainYearMonthToPlainDateOptions): PlainDate;448 readonly [Symbol.toStringTag]: "Temporal.PlainYearMonth";449 }450 451 interface PlainYearMonthConstructor {452 new (isoYear: number, isoMonth: number, calendar?: string, referenceISODay?: number): PlainYearMonth;453 readonly prototype: PlainYearMonth;454 from(item: PlainYearMonthLike, options?: OverflowOptions): PlainYearMonth;455 compare(one: PlainYearMonthLike, two: PlainYearMonthLike): number;456 }457 var PlainYearMonth: PlainYearMonthConstructor;458 459 interface PlainMonthDayToPlainDateOptions {460 era?: string | undefined;461 eraYear?: number | undefined;462 year?: number | undefined;463 }464 465 interface PlainMonthDay {466 readonly calendarId: string;467 readonly monthCode: string;468 readonly day: number;469 with(monthDayLike: PartialTemporalLike<DateLikeObject>, options?: OverflowOptions): PlainMonthDay;470 equals(other: PlainMonthDayLike): boolean;471 toString(options?: PlainDateToStringOptions): string;472 toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;473 toJSON(): string;474 valueOf(): never;475 toPlainDate(item: PlainMonthDayToPlainDateOptions): PlainDate;476 readonly [Symbol.toStringTag]: "Temporal.PlainMonthDay";477 }478 479 interface PlainMonthDayConstructor {480 new (isoMonth: number, isoDay: number, calendar?: string, referenceISOYear?: number): PlainMonthDay;481 readonly prototype: PlainMonthDay;482 from(item: PlainMonthDayLike, options?: OverflowOptions): PlainMonthDay;483 }484 var PlainMonthDay: PlainMonthDayConstructor;485}486 