import type { NumberFormatOptionParams, NumberFormatReturnValue, NumberFormatValue } from './NumberUtils';
import type { NumberFormatter } from './useNumberFormat';
export type NumberFormatParts = {
    sign: string | null;
    signedNumber: string;
    number: string;
    currency: string | null;
    currencyPosition: 'before' | 'after' | null;
    spaceAfterCurrency: boolean;
    spaceBeforeCurrency: boolean;
    percent: string | null;
    percentSpacing: string;
};
export type NumberFormatReturnWithParts = NumberFormatReturnValue & {
    parts: NumberFormatParts;
};
/**
 * Same contract as `useNumberFormat`, but additionally splits the
 * formatted display string into structured `parts` (sign, number, currency,
 * percent) so consumers can style each piece independently.
 *
 * `formatter` defaults to `formatNumber`. Pass `formatCurrency` or
 * `formatPercent` for currency/percent output. The returned `parts` are
 * derived from the formatter's display string, so any formatter that
 * returns a `NumberFormatReturnValue` works.
 */
declare function useNumberFormatWithParts(value: NumberFormatValue, formatter: NumberFormatter, options: NumberFormatOptionParams & {
    returnAria: false;
}): string;
declare function useNumberFormatWithParts(value: NumberFormatValue, formatter?: NumberFormatter, options?: NumberFormatOptionParams): NumberFormatReturnWithParts;
export default useNumberFormatWithParts;
