/**
 * Represents all valid input units for durations.
 * Includes both short and long forms (e.g. "s", "second", "seconds").
 */
export type DurationInputUnit = "ms" | "millisecond" | "milliseconds" | "s" | "second" | "seconds" | "m" | "minute" | "minutes" | "h" | "hour" | "hours" | "d" | "day" | "days";
/**
 * Creates an immutable duration object with fluent utilities.
 *
 * Example:
 * ```ts
 * const d = duration(2, "minutes");
 * d.as("seconds"); // 120
 * d.add(30, "seconds").milliseconds; // 150000
 * ```
 *
 * @param value - The numeric value of the duration
 * @param unit - The unit of the value (e.g. "minutes", "s", etc.)
 * @returns A duration instance with utility methods and accessors
 */
export declare function duration(value: number, unit: DurationInputUnit): {
    /**
     * Converts the current duration to another unit.
     * @param targetUnit - The unit to convert to
     * @returns The converted value
     */
    as: (targetUnit: DurationInputUnit) => number;
    /**
     * Adds another duration and returns a new immutable duration.
     * @param addValue - The value to add
     * @param addUnit - The unit of the value to add
     */
    add: (addValue: number, addUnit: DurationInputUnit) => /*elided*/ any & {
        ms: number;
        millisecond: number;
        milliseconds: number;
        s: number;
        second: number;
        seconds: number;
        m: number;
        minute: number;
        minutes: number;
        h: number;
        hour: number;
        hours: number;
        d: number;
        day: number;
        days: number;
    };
    /**
     * Subtracts another duration and returns a new immutable duration.
     * @param subValue - The value to subtract
     * @param subUnit - The unit of the value to subtract
     */
    subtract: (subValue: number, subUnit: DurationInputUnit) => /*elided*/ any & {
        ms: number;
        millisecond: number;
        milliseconds: number;
        s: number;
        second: number;
        seconds: number;
        m: number;
        minute: number;
        minutes: number;
        h: number;
        hour: number;
        hours: number;
        d: number;
        day: number;
        days: number;
    };
    /**
     * Returns the internal value in milliseconds.
     */
    valueOf: () => number;
    /**
     * Converts the duration to a string in milliseconds.
     * @returns A string like `"120000ms"`
     */
    toString: () => string;
    /**
     * Returns a new duration instance with the same value.
     */
    clone: () => /*elided*/ any & {
        ms: number;
        millisecond: number;
        milliseconds: number;
        s: number;
        second: number;
        seconds: number;
        m: number;
        minute: number;
        minutes: number;
        h: number;
        hour: number;
        hours: number;
        d: number;
        day: number;
        days: number;
    };
    /**
     * Converts the duration to a primitive value (number or string).
     */
    [Symbol.toPrimitive]: (hint: string) => string | number;
} & {
    ms: number;
    millisecond: number;
    milliseconds: number;
    s: number;
    second: number;
    seconds: number;
    m: number;
    minute: number;
    minutes: number;
    h: number;
    hour: number;
    hours: number;
    d: number;
    day: number;
    days: number;
};
/**
 * Converts a duration to milliseconds.
 *
 * @param value - The numeric value of the duration
 * @param unit - The unit of the value (e.g. "seconds", "m", etc.)
 * @returns The equivalent duration in milliseconds
 */
export declare function millis(value: number, unit: DurationInputUnit): number;
