/** The shared precision rule for existing figures and opt-in plain decimals,
 * and the one exact reading of a number written in scientific notation. */
/** Decimal places the answer wrote the value with. */
export declare function decimalsOf(value: string): number;
/** A source spelling is kept only within this bound, never silently clipped. */
export declare const MAX_ROUNDING_SPELLING_CHARS = 256;
/** The decimal a scientific spelling states, read exactly. */
export interface ScientificDecimal {
    /** The value with no exponent and no trailing fractional zero:
     *  `1.12e-02` → `0.0112`, `3.358e+03` → `3358`. */
    readonly exact: string;
    /** The value at the precision the spelling was written with, only when
     *  that is a fraction: `1.120e-2` → `0.01120`. A spelling with no
     *  fractional places after expansion (`3.358e+03`) has none — it is
     *  matched exactly, never rounded. */
    readonly written?: string;
}
/**
 * Read one standalone scientific spelling as the decimal it states — exactly,
 * through `decimalOf` (BigInt, no Number conversion) and within its bounds:
 * the spelling at most `MAX_ROUNDING_SPELLING_CHARS` characters, its exponent
 * within ±400, and the decimal it states within the same character bound.
 * `undefined` for any other token; outside the bounds a token stays a
 * spelling only.
 *
 * @example
 * ```ts
 * scientificDecimalOf('1.12e-02'); // { exact: '0.0112', written: '0.0112' }
 * scientificDecimalOf('1.2E+21');  // { exact: '1200000000000000000000' }
 * scientificDecimalOf('9f3e10ab'); // undefined — a hash, not a number
 * ```
 */
export declare function scientificDecimalOf(spelling: string): ScientificDecimal | undefined;
/** True inside the answer's inclusive half-unit rounding interval.
 * Existing figures keep their exact historical numeric allowance. New plain
 * decimals supply original spellings and use the same interval without slack
 * or lossy Number subtraction. There is one rounding rule and one owner. */
export declare function roundsTo(x: number, f: number, decimals: number, spellings?: {
    readonly source: string;
    readonly answer: string;
}): boolean;
