aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@exodus/bytes/bigint.d.ts
blob: 3a50dfa1798c16d28d74f2a0f8c21d7b646013e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
 * 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;