import { z } from "zod";
import type { Dayjs } from '../../dayjs';
import dayjs from '../../dayjs';
export declare const yyyymmdd: (date: Date | Dayjs) => string;
export declare const daysInMonth: (date: Date | Dayjs) => number;
/**
 * Expects timeFormat to be either 12 or 24, if null or undefined
 * is passed in, we always default back to 24 hour notation.
 */
export declare const formatTime: (date: string | Date | Dayjs, timeFormat?: number | null, timeZone?: string | null) => string;
/**
 * Checks if a provided timeZone string is recognized as a valid timezone by dayjs.
 *
 * @param {string} timeZone - The timezone string to be verified.
 * @returns {boolean} - Returns 'true' if the provided timezone string is recognized as a valid timezone by dayjs. Otherwise, returns 'false'.
 *
 */
export declare const isSupportedTimeZone: (timeZone: string) => boolean;
/**
 * Returns a localized and translated date or time, based on the native
 * Intl.DateTimeFormat available to JS. Undefined values mean the browser's
 * locale will be used.
 */
export declare const formatLocalizedDateTime: (date: Date | Dayjs, options?: Intl.DateTimeFormatOptions, locale?: string | undefined) => string;
/**
 * Returns a localized and translated calendar day based on the
 * given Date object and locale. Undefined values mean the defaults
 * associated with the browser's current locale will be used.
 */
export declare const formatToLocalizedDate: (date: Date | Dayjs, locale?: string | undefined, dateStyle?: Intl.DateTimeFormatOptions["dateStyle"], timeZone?: string) => string;
/**
 * Returns a localized and translated time of day based on the
 * given Date object and locale. Undefined values mean the defaults
 * associated with the browser's current locale will be used.
 */
export declare const formatToLocalizedTime: (date: Date | Dayjs, locale?: string | undefined, timeStyle?: Intl.DateTimeFormatOptions["timeStyle"], hour12?: Intl.DateTimeFormatOptions["hour12"], timeZone?: string) => string;
/**
 * Returns a translated timezone based on the given Date object and
 * locale. Undefined values mean the browser's current locale
 * will be used.
 */
export declare const formatToLocalizedTimezone: (date: Date | Dayjs, locale: string | undefined, timeZone: Intl.DateTimeFormatOptions["timeZone"], timeZoneName?: Intl.DateTimeFormatOptions["timeZoneName"]) => string | undefined;
/**
 * Sorts two timezones by their offset from GMT.
 */
export declare const sortByTimezone: (timezoneA: string, timezoneB: string) => 1 | 0 | -1;
/**
 * Verifies given time is a day before in timezoneB.
 */
export declare const isPreviousDayInTimezone: (time: string, timezoneA: string, timezoneB: string) => boolean;
/**
 * Verifies given time is a day after in timezoneB.
 */
export declare const isNextDayInTimezone: (time: string, timezoneA: string, timezoneB: string) => boolean;
declare const weekDays: readonly ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
export type WeekDays = (typeof weekDays)[number];
type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;
/**
 * Turns weekday string (eg "Monday") into a number (eg 1).
 * Also accepts a number as parameter (and straight returns that), and accepts
 * undefined as a parameter; returns 0 in that case.
 */
export declare const weekdayToWeekIndex: (weekday: WeekDays | string | number | undefined) => WeekDayIndex;
/**
 * Dayjs does not expose the timeZone value publicly through .get("timeZone")
 * instead, we as devs are required to somewhat hack our way to get the
 * tz value as string
 * @param date Dayjs
 * @returns Time Zone name
 */
export declare const getTimeZone: (date: Dayjs) => string;
/**
 * Verify if timeZone has Daylight Saving Time (DST).
 *
 * Many countries in the Northern Hemisphere. Daylight Saving Time usually starts in March-April and ends in
 * September-November when the countries return to standard time, or winter time as it is also known.
 *
 * In the Southern Hemisphere (south of the equator) the participating countries usually start the DST period
 * in September-November and end DST in March-April.
 *
 * @param timeZone Time Zone Name (Ex. America/Mazatlan)
 * @returns boolean
 */
export declare const timeZoneWithDST: (timeZone: string) => boolean;
/**
 * Get DST difference.
 * Today clocks are almost always set one hour back or ahead.
 * However, on Lord Howe Island, Australia, clocks are set only 30 minutes forward
 * from LHST (UTC+10:30) to LHDT (UTC+11) during DST.
 * @param timeZone Time Zone Name (Ex. America/Mazatlan)
 * @returns minutes
 */
export declare const getDSTDifference: (timeZone: string) => number;
/**
 * Get UTC offset of given time zone when in DST
 * @param timeZone Time Zone Name (Ex. America/Mazatlan)
 * @returns minutes
 */
export declare const getUTCOffsetInDST: (timeZone: string) => number;
/**
 * Verifies if given time zone is in DST
 * @param date
 * @returns
 */
export declare const isInDST: (date: Dayjs) => boolean;
/**
 * Get UTC offset of given time zone
 * @param timeZone Time Zone Name (Ex. America/Mazatlan)
 * @param date
 * @returns
 */
export declare function getUTCOffsetByTimezone(timeZone: string, date?: string | Date | Dayjs): number | null;
/**
 * Converts a string into a dayjs object with the timezone set.
 */
export declare const stringToDayjs: (val: string) => dayjs.Dayjs;
export declare const stringToDayjsZod: z.ZodEffects<z.ZodString, dayjs.Dayjs, string>;
export {};
//# sourceMappingURL=index.d.ts.map