declare const IS_SAFE_INTEGER: unique symbol;
/**
 * A number, which is validated as *safe integer* or 53-bit precise integer.
 *
 * @see [Number.isSafeInteger()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger)
 */
export declare type SafeInteger = number & {
    [IS_SAFE_INTEGER]: true;
};
/**
 * Checks if an unknown value is safe integer without any conversion.
 */
export declare const isSafeInteger: (value: unknown) => value is SafeInteger;
/**
 * Casts an unknown value as safe integer without any conversion; or null if unable.
 */
export declare const asSafeInteger: (value: unknown) => SafeInteger | null;
/**
 * Parses a string as safe integer; or null if unable.
 *
 * This function just forwards to [Number.parseInt()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt).
 */
export declare const parseSafeInteger: (str: string, radix?: number | undefined) => SafeInteger | null;
/**
 * Tries to convert an unknown value to safe integer, using some conversions if necessary: `Math.round`, `parseInt` or `.valueOf`.
 *
 * Mapping:
 *
 * - number:
 *    - safe integer: the value
 *    - finite number: `Math.round` and `asSafeInteger` is used.
 *    - infinity, NaN: null
 * - string: `parseInt` and `asSafeInteger` is used.
 * - object:
 *    - non-null and has `valueOf`: `.valueOf()` and `asSafeInteger` is used.
 *    - other: null
 * - undefined, boolean, function and anything else: null
 */
export declare const toSafeInteger: (value: unknown) => SafeInteger | null;
export {};
