import { AddRemoveOperationBasic, DateSourceBasic, DateTimeFormatBasic, DateTimeFormatsMillisAndSecondsBasic, TimeUnit } from '../common';
/**
* Adjust an ISO-8601 date/time or a Unix epoch by adding/subtracting a specified amount of time.
* @param timestamp An ISO-8601 date/time or a Unix epoch.
* @param amount The amount of time by which `timestamp` should be adjusted (positive or negative values).
* @param amountUnit The unit of measurement of `amount`.
*
* @returns The adjusted timestamp in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function adjust(timestamp: string | number, amount: number, amountUnit: TimeUnit | TU): string;
/**
* Adjust an ISO-8601 date/time or a Unix epoch by adding/subtracting a specified amount of time.
* @param timestamp An ISO-8601 date/time or a Unix epoch.
* @param operation If `amount` should be added or subtracted
* @param amount The amount of time by which `timestamp` should be adjusted (positive or negative values).
* @param amountUnit The unit of measurement of `amount`.
*
* @returns The adjusted timestamp in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {InvalidAdjustmentOperationError} "" is not a valid adjustment operation.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function adjustBasic(timestamp: string | number, operation: AddRemoveOperationBasic | O, amount: number, amountUnit: TimeUnit | TU): string;
/**
* Append or overwrite the time zone or offset of an ISO-8601 date/time without adjusting the underlying date/time.
* @param timestamp An ISO-8601 date/time.
* @param timeZoneOrOffset The time zone or offset to which the resulting timestamp should be converted. Default = UTC.
*
* @returns The date/time in ISO-8601 format in the specified time zone.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function appendTimeZone(timestamp: string, timeZoneOrOffset?: string | number): string;
/**
* Convert an ISO-8601 date/time or a Unix epoch to an ISO-8601 date/time, custom formatted date/time, or a Unix epoch.
* @param timestamp An ISO-8601 date/time or a Unix epoch.
* @param outputFormat The format in which the converted timestamp should be returned. Default = ISO-8601.
* @param outputFormatString If `outputFormat = 'Custom'`, the format string used to serialize the converted date/time. Default: ISO-8601.
*
* @returns `timestamp` converted to the specified output format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function convert(timestamp: string | number, outputFormat: DateTimeFormatBasic | F, outputFormatString?: string): string | number;
/**
* Convert a Unix epoch with the specified unit to an ISO-8601 date/time.
* @param epoch The number of milliseconds or seconds since the Unix epoch (specified by `unit`).
* @param unit The unit of measurement `epoch`.
*
* @returns `epoch` converted to an ISO-8601 date/time.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function fromEpoch(epoch: number, unit: DateTimeFormatsMillisAndSecondsBasic | TU): string;
/**
* Parse a date/time and convert it to an ISO-8601 date/time.
* @param timestamp An ISO-8601 date/time, SQL date/time, custom formatted date/time, or a Unix epoch. If provided as a
* string that is not in ISO-8601 or SQL format, `inputFormatString` must be provided.
* @param inputFormat The format of `timestamp`. Default = automatically determined based on the value of `timestamp`.
* @param inputFormatString The format string used to parse `timestamp`. Default = any valid ISO-8601 format.
* @param inputTimeZoneOrOffset The originating time zone of `timestamp` expressed as either a string or numeric
* offset. It is important to note that this time zone/offset will be appended to the parsed timestamp
* only if the time zone information is not present in `timestamp`. If `timestamp` contains the time zone information,
* that time zone will be used instead and the value of this argument will be ignored. Default = UTC.
*
* @returns The parsed date/time in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function parse(timestamp: string | number, inputFormat?: DateTimeFormatBasic | DateTimeFormatsMillisAndSecondsBasic | F | TU, inputFormatString?: string, inputTimeZoneOrOffset?: string | number): string;
/**
* Parse a date/time and convert it to an ISO-8601 date/time.
* @param dateSource The source of `timestamp`. If `current`, `timestamp` is not required.
* @param timestamp An ISO-8601 date/time, SQL date/time, custom formatted date/time, or a Unix epoch. If provided as a
* string that is not in ISO-8601 or SQL format, `inputFormatString` must be provided. Not required if `dateSource` is
* `current`.
* @param inputFormat The format of `timestamp`. Default = automatically determined based on the value of `timestamp`.
* @param inputFormatString The format string used to parse `timestamp`. Default = any valid ISO-8601 format.
* @param inputTimeZoneOrOffset The originating time zone of `timestamp` expressed as either a string or numeric
* offset. Default = UTC.
*
* @returns The parsed date/time in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {InvalidDateSourceError} The date source is invalid.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function parseBasic(dateSource: DateSourceBasic | S, timestamp?: string | number, inputFormat?: DateTimeFormatBasic | DateTimeFormatsMillisAndSecondsBasic | F | TU, inputFormatString?: string, inputTimeZoneOrOffset?: string | number): string;
/**
* Set the time zone or offset of an ISO-8601 date/time, adjusting the underlying date/time accordingly.
* @param timestamp An ISO-8601 date/time.
* @param timeZoneOrOffset The time zone or offset to which the resulting timestamp should be converted. Default = UTC.
*
* @returns The date/time in ISO-8601 format in the specified time zone.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function setTimeZone(timestamp: string, timeZoneOrOffset: string | number): string;
/**
* Convert an ISO-8601 date/time or a Unix epoch to an ISO-8601 **date**.
* @param timestamp An ISO-8601 date/time or a Unix epoch.
*
* @returns The date portion of `timestamp` in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function toISODate(timestamp: string | number): string;
/**
* Convert an ISO-8601 date/time or a Unix epoch to an ISO-8601 **time**.
* @param timestamp An ISO-8601 date/time or a Unix epoch.
*
* @returns The time portion of `timestamp` in ISO-8601 format.
*
* @throws {InputRequiredError} "" is a required input but was not provided.
* @throws {UnparseableDateError} The date/time could not be parsed.
* @throws {UnsupportedTimeZoneError} The time zone is not supported.
*/
export declare function toISOTime(timestamp: string | number): string;