import { Timezone } from '../timezones/types.mjs';
export { formatDate } from './formatDate.mjs';
export { formatRelativeTime } from './formatRelativeTime.mjs';
import '../timezones/identifiers.mjs';

type SecondsToUnitReturn<TSkipWeeks extends boolean = false> = {
    /** Years in given time. */
    years: number;
    /** Months in given time. */
    months: number;
    /** Weeks in given time. */
    weeks: TSkipWeeks extends false ? number : null;
    /** Days in given time. */
    days: number;
    /** Hours in given time. */
    hours: number;
    /** Minutes in given time. */
    minutes: number;
    /** Seconds in given time. */
    seconds: number;
    /** Milliseconds in given time. */
    milliseconds: number;
    microseconds: number;
};
/**
 * Translates seconds into human readable format of milliseconds, seconds, minutes, hours, days, weeks, months and years.
 *
 * @see [StackOverflow thread](https://stackoverflow.com/questions/8211744/convert-time-interval-given-in-seconds-into-more-human-readable-form#answer-8211778)
 *
 * @param	time	The number of seconds to be processed.
 * @returns			An object containing the amount of time for each unit.
 */
declare const secondsToUnit: <TSkipWeeks extends boolean = false>(time: number, skipWeeks?: TSkipWeeks) => SecondsToUnitReturn<TSkipWeeks>;
/**
 * Format date.
 *
 * @param	date	( Optional ) The date string | milliseconds since UNIX epoch time | Date object. Default: `new Date()`.
 * @param	locale	( Optional ) The Intl.LocalesArgument.
 * @param	options	( Optional ) The Intl.DateTimeFormatOptions.
 * @returns			An object containing the Date object and the localized time string based on the given locale.
 */
declare const formatLocaleDate: (date?: string | number | Date, locale?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions & {
    timeZone?: Timezone;
}) => string;

export { type SecondsToUnitReturn, formatLocaleDate, secondsToUnit };
