import { type Timezone, type UtcTimezone } from '../timezone/timezones.js';
import { type DateLike } from './date-like.js';
import { type FullDate } from './full-date-shape.js';
/**
 * Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the user's
 * current timezone.
 *
 * @category FullDate
 * @example
 *
 * ```ts
 * import {createFullDateInUserTimezone} from 'date-vir';
 *
 * createFullDateInUserTimezone('June 1, 2024');
 * createFullDateInUserTimezone(new Date());
 * createFullDateInUserTimezone(112300120);
 * ```
 */
export declare function createFullDateInUserTimezone(dateLike: Readonly<DateLike>): FullDate;
/**
 * Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the UTC
 * timezone.
 *
 * @category FullDate
 * @example
 *
 * ```ts
 * import {createUtcFullDate} from 'date-vir';
 *
 * createUtcFullDate('June 1, 2024');
 * createUtcFullDate(new Date());
 * createUtcFullDate(112300120);
 * ```
 */
export declare function createUtcFullDate(dateLike: Readonly<DateLike>): FullDate<UtcTimezone>;
/**
 * Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the given
 * timezone.
 *
 * @category FullDate
 * @example
 *
 * ```ts
 * import {createFullDate, timezones, utcTimezone} from 'date-vir';
 *
 * createFullDate('June 1, 2024', utcTimezone);
 * createFullDate(new Date(), timezones['Australia/Brisbane']);
 * createFullDate(112300120, timezones['Etc/GMT-11']);
 * ```
 */
export declare function createFullDate<const SpecificTimezone extends Timezone>(
/** The original date representation to be converted into a FullDate. */
dateLike: Readonly<DateLike>, 
/** The timezone that this date/time is meant for / originated from. */
timezone: SpecificTimezone): FullDate<SpecificTimezone>;
/**
 * Converts a {@link FullDate} instance into a new instance with the original's date and time
 * represented in the new timezone.
 *
 * @category Conversion
 * @example
 *
 * ```ts
 * import {toNewTimezone} from 'date-vir';
 *
 * const exampleDate: FullDate = {
 *     year: 2024,
 *     month: 1,
 *     day: 5,
 *     hour: 1,
 *     minute: 1,
 *     second: 1,
 *     millisecond: 1,
 *     timezone: 'UTC',
 * };
 *
 * let result = toNewTimezone(exampleDate, timezones['Australia/Brisbane']);
 * // output:
 * result = {
 *     year: 2024,
 *     month: 1,
 *     day: 5,
 *     hour: 11,
 *     minute: 1,
 *     second: 1,
 *     millisecond: 1,
 *     timezone: timezones['Australia/Brisbane'],
 * };
 * ```
 */
export declare function toNewTimezone<const SpecificTimezone extends Timezone>(fullDate: Readonly<FullDate>, timezone: SpecificTimezone): FullDate<SpecificTimezone>;
