import type { FormatSettings } from "./FormatSettings.js";
/**
 * Options supported by {@link format}.
 */
export interface FormatOptions extends FormatSettings {
    /**
     * The string format. See
     * {@link utilities/format/string!StringFormatter.format}.
     */
    format: string;
    /**
     * The locale to use when formatting numbers and dates. If not specified,
     * the current locale is used (see locale module).
     */
    locale?: string;
    /**
     * Indicates if a formatted date should be formatted without the time
     * component even if the format suggests to include a time.
     */
    isDateOnly?: boolean;
}
/**
 * Default settings that affect how strings are formatted.
 */
export { settings } from "./FormatSettings.js";
/**
 * See {@link utilities/format/string!StringFormatter.format}.
 *
 * @param format See {@link utilities/format/string!StringFormatter.format}.
 * @param args See {@link utilities/format/string!StringFormatter.format}.
 */
export declare function format(format: string | FormatOptions, ...args: unknown[]): string;
/**
 * A helper class for formatting strings.
 */
export declare class StringFormatter implements FormatSettings {
    /**
     * @inheritDoc
     */
    get numberFormat(): string | undefined;
    set numberFormat(numberFormat: string | undefined);
    /**
     * @inheritDoc
     */
    get dateFormat(): string | undefined;
    set dateFormat(dateFormat: string | undefined);
    /**
     * @inheritDoc
     */
    get timeFormat(): string | undefined;
    set timeFormat(timeFormat: string | undefined);
    /**
     * @inheritDoc
     */
    get currency(): string | undefined;
    set currency(currency: string | undefined);
    /**
     * @inheritDoc
     */
    get fractionalDigits(): number | undefined;
    set fractionalDigits(fractionalDigits: number | undefined);
    /**
     * @inheritDoc
     */
    get timeZone(): string | undefined;
    /**
     * @inheritDoc
     */
    set timeZone(value: string | undefined);
    private _numberFormat;
    private _dateFormat;
    private _timeFormat;
    private _currency;
    private _fractionalDigits;
    private _timeZone;
    private readonly _numberFormatter;
    private readonly _dateFormatter;
    private readonly _timeFormatter;
    /**
     * Converts the value of objects to strings based on the formats specified
     * and inserts them into another string.
     *
     * @param formatOrOptions The format string that acts as a template. The
     *   format string can contain one or more format items, which have this
     *   syntax: `{index[:format]}`. The index is the zero-based index of the
     *   argument whose string representation is to be included at this position
     *   in the string. The optional format is a format string that controls how
     *   the argument is converted into a string, if the argument is a Date
     *   object or number. To include a literal `{` or `}` character in the
     *   output, escape the character by repeating it twice in the format
     *   string. This argument can also be a format options object instead.
     * @param args The values to substitute into the format string. Null and
     *   undefined values will be converted into empty strings.
     */
    format(formatOrOptions: string | FormatOptions, ...args: unknown[]): string;
}
