/** * Time helpers for bundle first-week tasks: "day 2 at 09:00 in the * bundle's timezone" as a UTC instant, independent of the server's own * timezone (hosted servers run in UTC; owners mostly do not). * * @module services/bundle/bundle-time */ /** Calendar date and time in some timezone. */ interface ZonedParts { year: number; month: number; day: number; hour: number; minute: number; } /** * Whether a string is a valid IANA timezone. * * @param tz - Candidate * @returns True when Intl accepts it */ export declare function isValidTimezone(tz: string): boolean; /** * Calendar parts of an instant in a timezone. * * @param date - Instant * @param tz - IANA timezone * @returns Year, month (1-12), day, hour, minute */ export declare function zonedParts(date: Date, tz: string): ZonedParts; /** * The UTC instant of a wall-clock time in a timezone. * * Starts from the wall time read as UTC, then corrects by the zone's offset * at that instant (twice, which settles DST edges). * * @param wall - Calendar date and time in `tz` * @param tz - IANA timezone * @returns The instant */ export declare function zonedTimeToUtc(wall: ZonedParts, tz: string): Date; /** * When a first-week task is due. * * Day 0 is due at `deployedAt`. Day n is due at `time` (default 09:00) on * the n-th calendar day after the deploy day, in `tz`. * * @param deployedAt - When the bundle was applied * @param day - 0-based day * @param time - `HH:MM` (optional) * @param tz - IANA timezone * @returns ISO timestamp * * @example * firstWeekDueAt(new Date('2026-09-25T02:00:00Z'), 1, '09:00', 'Asia/Shanghai') // '2026-09-26T01:00:00.000Z' */ export declare function firstWeekDueAt(deployedAt: Date, day: number, time: string | undefined, tz: string): string; export {}; //# sourceMappingURL=bundle-time.d.ts.map