49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/**
|
|
* Convert between BigInt and Uint8Array
|
|
*
|
|
* ```js
|
|
* import { fromBigInt, toBigInt } from '@exodus/bytes/bigint.js'
|
|
* ```
|
|
*
|
|
* @module @exodus/bytes/bigint.js
|
|
*/
|
|
|
|
/// <reference types="node" />
|
|
|
|
import type { OutputFormat, Uint8ArrayBuffer } from './array.js';
|
|
|
|
/**
|
|
* Options for converting BigInt to bytes
|
|
*/
|
|
export interface FromBigIntOptions {
|
|
/** The length in bytes of the output array */
|
|
length: number;
|
|
/** Output format (default: 'uint8') */
|
|
format?: OutputFormat;
|
|
}
|
|
|
|
/**
|
|
* Convert a BigInt to a Uint8Array or Buffer
|
|
*
|
|
* The output bytes are in big-endian format.
|
|
*
|
|
* Throws if the BigInt is negative or cannot fit into the specified length.
|
|
*
|
|
* @param bigint - The BigInt to convert (must be non-negative)
|
|
* @param options - Conversion options
|
|
* @returns The converted bytes in big-endian format
|
|
*/
|
|
export function fromBigInt(bigint: bigint, options: { length: number; format?: 'uint8' }): Uint8ArrayBuffer;
|
|
export function fromBigInt(bigint: bigint, options: { length: number; format: 'buffer' }): Buffer;
|
|
export function fromBigInt(bigint: bigint, options: FromBigIntOptions): Uint8ArrayBuffer | Buffer;
|
|
|
|
/**
|
|
* Convert a Uint8Array or Buffer to a BigInt
|
|
*
|
|
* The bytes are interpreted as a big-endian unsigned integer.
|
|
*
|
|
* @param arr - The bytes to convert
|
|
* @returns The BigInt representation
|
|
*/
|
|
export function toBigInt(arr: Uint8Array): bigint;
|