import { type MomentInput } from 'moment-timezone';
import { Format, NumberSeparator, type CompactOrAlias, type CustomDimension, type CustomFormat, type Dimension, type Field, type Item, type TableCalculation } from '../types/field';
import { type AdditionalMetric } from '../types/metricQuery';
import { TimeFrames } from '../types/timeFrames';
export declare const currencies: string[];
export declare const formatBoolean: <T>(v: T) => "True" | "False";
export declare const getDateFormat: (timeInterval?: TimeFrames | undefined) => string;
export declare const isMomentInput: (value: unknown) => value is MomentInput;
export declare const isTimestampString: (value: unknown) => value is string;
export declare function formatDate(date: MomentInput, timeInterval?: TimeFrames, convertToUTC?: boolean, timezone?: string): string;
export declare function formatTimestamp(value: MomentInput, timeInterval?: TimeFrames | undefined, convertToUTC?: boolean, timezone?: string, displayTimezone?: string): string;
export declare function toExcelWallClockDate(value: MomentInput, timezone: string): Date;
export declare const toIsoWithProjectOffset: (rawValue: unknown, timezone: string | undefined) => string | undefined;
export declare const shouldShiftItemTimezone: (item: Item | AdditionalMetric | undefined) => boolean;
export declare const isItemTimezoneAffected: (item: Item | AdditionalMetric | undefined) => boolean;
export declare const isCalendarValueItem: (item: Item | AdditionalMetric | undefined) => boolean;
export declare const isTemporalValue: (value: unknown) => boolean;
export declare const getFormatterTimezone: (item: Item | AdditionalMetric | undefined, value: unknown, timezone: string | undefined) => string | undefined;
export declare const formatTemporalCellForSpreadsheet: (item: Item | undefined, rawValue: unknown, timezone: string | undefined) => string | undefined;
export declare function getLocalTimeDisplay(value: MomentInput, showTimezone?: boolean): string;
export declare const formatDateWithPattern: (value: string | number, pattern: string) => string;
export declare const parseDate: (str: string, timeInterval?: TimeFrames | undefined) => Date;
export declare const parseCalendarValueUTC: (value: string) => Date | undefined;
export declare const parseTimestampValueUTC: (value: string) => {
    date: Date;
    hasZone: boolean;
} | undefined;
export declare const isUnambiguousTemporalString: (raw: unknown) => raw is string;
export declare const parseTimestamp: (str: string, timeInterval?: TimeFrames | undefined) => Date;
export declare function valueIsNaN(value: unknown): boolean;
export declare function isNumber(value: unknown): value is number;
export declare function formatNumberValue(value: number, format?: CustomFormat): string;
export declare function applyDefaultFormat(value: unknown): string;
export declare function getCustomFormatFromLegacy({ format, compact, round, }: {
    format?: Format | string;
    compact?: CompactOrAlias;
    round?: number;
}): CustomFormat;
export declare function hasFormatting(item: Field | AdditionalMetric | TableCalculation | CustomDimension | undefined): boolean;
export declare function getEffectiveSeparator(item: Field | AdditionalMetric | TableCalculation | CustomDimension | undefined): NumberSeparator | undefined;
export declare function getFormatExpressionLocale(item: Field | AdditionalMetric | TableCalculation | CustomDimension | undefined): string | undefined;
export declare function getCustomFormat(item: Field | AdditionalMetric | TableCalculation | CustomDimension | undefined): CustomFormat | undefined;
export declare function formatValueWithExpression(expression: string, value: unknown, locale?: string, timezone?: string): string;
export declare function applyCustomFormat(value: unknown, format?: CustomFormat | undefined, timezone?: string): string;
export declare function hasValidFormatExpression<T extends Field | AdditionalMetric | TableCalculation | CustomDimension | Dimension>(item: T | undefined): item is T & {
    format: string;
};
export declare function convertCustomFormatToFormatExpression(format: CustomFormat): string | null;
/**
 * Converts a UI format override (a metric/dimension `formatOptions`) into the
 * field-level format props to spread onto a query result field.
 *
 * Formats that have an ECMA-376 representation are encoded as a `format`
 * expression so every render and export path shares a single source of truth.
 * When there is no expression form — notably dynamic compact (`Compact.AUTO`),
 * where `convertCustomFormatToFormatExpression` returns null — the structured
 * `formatOptions` is preserved and any legacy `format` expression cleared,
 * letting the render path apply it via the structured `applyCompact` path.
 */
export declare function getFieldFormatOverrideProps(formatOptions: CustomFormat): {
    format: string | undefined;
    formatOptions?: CustomFormat;
    separator: NumberSeparator | undefined;
};
export declare function getFormatExpression(item: Item | AdditionalMetric): string | undefined;
export declare function getExcelFormatExpression(item: Item | AdditionalMetric): string | undefined;
export declare function formatItemValue(item: Field | Dimension | AdditionalMetric | TableCalculation | CustomDimension | undefined, value: unknown, convertToUTC?: boolean, parameters?: Record<string, unknown>, timezone?: string, displayTimezone?: string): string;
//# sourceMappingURL=formatting.d.ts.map