@bcts/rand 1.0.0-alpha.8 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,9 @@
1
1
  //#region src/widening.d.ts
2
+ /**
3
+ * Copyright © 2023-2026 Blockchain Commons, LLC
4
+ * Copyright © 2025-2026 Parity Technologies
5
+ *
6
+ */
2
7
  /**
3
8
  * Wide multiplication result type - returns (low, high) parts.
4
9
  * For a multiplication of two N-bit values, the result is 2N bits
@@ -42,6 +47,11 @@ declare function wideMulU32(a: number, b: number): [bigint, bigint];
42
47
  declare function wideMulU64(a: bigint, b: bigint): [bigint, bigint];
43
48
  //#endregion
44
49
  //#region src/magnitude.d.ts
50
+ /**
51
+ * Copyright © 2023-2026 Blockchain Commons, LLC
52
+ * Copyright © 2025-2026 Parity Technologies
53
+ *
54
+ */
45
55
  /**
46
56
  * Converts a signed integer to its unsigned magnitude.
47
57
  * For positive numbers, returns the number unchanged.
@@ -65,35 +75,27 @@ declare function fromMagnitude(magnitude: number, bits: 8 | 16 | 32): number;
65
75
  declare function fromMagnitude64(magnitude: bigint): bigint;
66
76
  //#endregion
67
77
  //#region src/random-number-generator.d.ts
78
+ /**
79
+ * Copyright © 2023-2026 Blockchain Commons, LLC
80
+ * Copyright © 2025-2026 Parity Technologies
81
+ *
82
+ */
68
83
  /**
69
84
  * Interface for random number generators.
70
- * This is the TypeScript equivalent of Rust's RandomNumberGenerator trait
71
- * which extends RngCore + CryptoRng.
72
85
  *
73
- * This is compatible with the RandomNumberGenerator Swift protocol used
74
- * in MacOS and iOS, which is important for cross-platform testing.
86
+ * The TypeScript equivalent of Rust's `RandomNumberGenerator` trait
87
+ * (which extends `RngCore + CryptoRng`).
75
88
  */
76
89
  interface RandomNumberGenerator {
77
- /**
78
- * Returns the next random 32-bit unsigned integer.
79
- */
90
+ /** Returns the next random 32-bit unsigned integer. */
80
91
  nextU32(): number;
81
- /**
82
- * Returns the next random 64-bit unsigned integer as a bigint.
83
- */
92
+ /** Returns the next random 64-bit unsigned integer as a bigint. */
84
93
  nextU64(): bigint;
85
- /**
86
- * Fills the given Uint8Array with random bytes.
87
- */
94
+ /** Fills the given Uint8Array with random bytes. */
88
95
  fillBytes(dest: Uint8Array): void;
89
- /**
90
- * Returns a Uint8Array of random bytes of the given size.
91
- */
96
+ /** Returns a Uint8Array of random bytes of the given size. */
92
97
  randomData(size: number): Uint8Array;
93
- /**
94
- * Fills the given Uint8Array with random bytes.
95
- * Alias for fillBytes for compatibility.
96
- */
98
+ /** Fills the given Uint8Array with random bytes. Alias for fillBytes. */
97
99
  fillRandomData(data: Uint8Array): void;
98
100
  }
99
101
  /**
@@ -105,86 +107,85 @@ declare function rngRandomData(rng: RandomNumberGenerator, size: number): Uint8A
105
107
  */
106
108
  declare function rngFillRandomData(rng: RandomNumberGenerator, data: Uint8Array): void;
107
109
  /**
108
- * Returns a random value that is less than the given upper bound.
109
- *
110
- * Uses Lemire's "nearly divisionless" method for generating random
111
- * integers in an interval. For a detailed explanation, see:
112
- * https://arxiv.org/abs/1805.10941
113
- *
114
- * @param rng - The random number generator to use
115
- * @param upperBound - The upper bound for the randomly generated value. Must be non-zero.
116
- * @returns A random value in the range [0, upperBound). Every value in the range is equally likely.
110
+ * Returns a random `u8` value strictly less than `upperBound`.
117
111
  */
118
- declare function rngNextWithUpperBound(rng: RandomNumberGenerator, upperBound: bigint): bigint;
112
+ declare function rngNextWithUpperBoundU8(rng: RandomNumberGenerator, upperBound: number): number;
119
113
  /**
120
- * Returns a random 32-bit value that is less than the given upper bound.
121
- * This matches Rust's behavior when called with u32 type.
122
- *
123
- * Uses Lemire's "nearly divisionless" method with 32-bit arithmetic.
124
- *
125
- * @param rng - The random number generator to use
126
- * @param upperBound - The upper bound for the randomly generated value. Must be non-zero and fit in u32.
127
- * @returns A random u32 value in the range [0, upperBound).
114
+ * Returns a random `u16` value strictly less than `upperBound`.
115
+ */
116
+ declare function rngNextWithUpperBoundU16(rng: RandomNumberGenerator, upperBound: number): number;
117
+ /**
118
+ * Returns a random `u32` value strictly less than `upperBound`.
128
119
  */
129
120
  declare function rngNextWithUpperBoundU32(rng: RandomNumberGenerator, upperBound: number): number;
130
121
  /**
131
- * Returns a random value within the specified range [start, end) using 32-bit arithmetic.
132
- * This matches Rust's behavior when called with i32 types.
133
- *
134
- * @param rng - The random number generator to use
135
- * @param start - The lower bound (inclusive) as i32
136
- * @param end - The upper bound (exclusive) as i32
137
- * @returns A random i32 value within the bounds
122
+ * Returns a random `u64` value strictly less than `upperBound`.
138
123
  */
139
- declare function rngNextInRangeI32(rng: RandomNumberGenerator, start: number, end: number): number;
124
+ declare function rngNextWithUpperBoundU64(rng: RandomNumberGenerator, upperBound: bigint): bigint;
140
125
  /**
141
- * Returns a random value within the specified range [start, end).
126
+ * Alias of `rngNextWithUpperBoundU64`. Kept for API backwards compatibility.
142
127
  *
143
- * @param rng - The random number generator to use
144
- * @param start - The lower bound (inclusive)
145
- * @param end - The upper bound (exclusive)
146
- * @returns A random value within the bounds of the range
128
+ * @deprecated Prefer the explicit-width name `rngNextWithUpperBoundU64`.
147
129
  */
148
- declare function rngNextInRange(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
130
+ declare const rngNextWithUpperBound: typeof rngNextWithUpperBoundU64;
131
+ /** Random `u8` in the half-open range [start, end). */
132
+ declare function rngNextInRangeU8(rng: RandomNumberGenerator, start: number, end: number): number;
133
+ /** Random `u16` in the half-open range [start, end). */
134
+ declare function rngNextInRangeU16(rng: RandomNumberGenerator, start: number, end: number): number;
135
+ /** Random `u32` in the half-open range [start, end). */
136
+ declare function rngNextInRangeU32(rng: RandomNumberGenerator, start: number, end: number): number;
137
+ /** Random `u64` in the half-open range [start, end). */
138
+ declare function rngNextInRangeU64(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
149
139
  /**
150
- * Returns a random value within the specified closed range [start, end].
140
+ * Alias of `rngNextInRangeU64`. Kept for API backwards compatibility.
151
141
  *
152
- * @param rng - The random number generator to use
153
- * @param start - The lower bound (inclusive)
154
- * @param end - The upper bound (inclusive)
155
- * @returns A random value within the bounds of the range
142
+ * @deprecated Prefer the explicit-width name `rngNextInRangeU64`.
156
143
  */
157
- declare function rngNextInClosedRange(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
144
+ declare const rngNextInRange: typeof rngNextInRangeU64;
145
+ /** Random `i8` in the half-open range [start, end). */
146
+ declare function rngNextInRangeI8(rng: RandomNumberGenerator, start: number, end: number): number;
147
+ /** Random `i16` in the half-open range [start, end). */
148
+ declare function rngNextInRangeI16(rng: RandomNumberGenerator, start: number, end: number): number;
149
+ /** Random `i32` in the half-open range [start, end). */
150
+ declare function rngNextInRangeI32(rng: RandomNumberGenerator, start: number, end: number): number;
151
+ /** Random `i64` in the half-open range [start, end). */
152
+ declare function rngNextInRangeI64(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
153
+ /** Random `u8` in the closed range [start, end]. */
154
+ declare function rngNextInClosedRangeU8(rng: RandomNumberGenerator, start: number, end: number): number;
155
+ /** Random `u16` in the closed range [start, end]. */
156
+ declare function rngNextInClosedRangeU16(rng: RandomNumberGenerator, start: number, end: number): number;
157
+ /** Random `u32` in the closed range [start, end]. */
158
+ declare function rngNextInClosedRangeU32(rng: RandomNumberGenerator, start: number, end: number): number;
159
+ /** Random `u64` in the closed range [start, end]. */
160
+ declare function rngNextInClosedRangeU64(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
158
161
  /**
159
- * Returns a random value within the specified closed range [start, end] for i32 values.
160
- * Convenience function that handles signed 32-bit integers.
162
+ * Alias of `rngNextInClosedRangeU64`. Kept for API backwards compatibility.
161
163
  *
162
- * @param rng - The random number generator to use
163
- * @param start - The lower bound (inclusive) as i32
164
- * @param end - The upper bound (inclusive) as i32
165
- * @returns A random i32 value within the bounds of the range
164
+ * @deprecated Prefer the explicit-width name `rngNextInClosedRangeU64`.
166
165
  */
166
+ declare const rngNextInClosedRange: typeof rngNextInClosedRangeU64;
167
+ /** Random `i8` in the closed range [start, end]. */
168
+ declare function rngNextInClosedRangeI8(rng: RandomNumberGenerator, start: number, end: number): number;
169
+ /** Random `i16` in the closed range [start, end]. */
170
+ declare function rngNextInClosedRangeI16(rng: RandomNumberGenerator, start: number, end: number): number;
171
+ /** Random `i32` in the closed range [start, end]. */
167
172
  declare function rngNextInClosedRangeI32(rng: RandomNumberGenerator, start: number, end: number): number;
173
+ /** Random `i64` in the closed range [start, end]. */
174
+ declare function rngNextInClosedRangeI64(rng: RandomNumberGenerator, start: bigint, end: bigint): bigint;
168
175
  /**
169
- * Returns a fixed-size array of random bytes.
176
+ * Returns a random fixed-size byte array.
170
177
  *
171
- * @param rng - The random number generator to use
172
- * @param size - The size of the array to return
173
- * @returns A Uint8Array of the specified size filled with random bytes
178
+ * Mirrors Rust's `rng_random_array<const N: usize>()` but takes the size at
179
+ * runtime since JavaScript lacks const generics.
174
180
  */
175
181
  declare function rngRandomArray(rng: RandomNumberGenerator, size: number): Uint8Array;
176
182
  /**
177
- * Returns a random boolean value.
178
- *
179
- * @param rng - The random number generator to use
180
- * @returns A random boolean
183
+ * Returns a random boolean. Mirrors Rust's `rng_random_bool` which tests
184
+ * whether `next_u32()` is a multiple of 2.
181
185
  */
182
186
  declare function rngRandomBool(rng: RandomNumberGenerator): boolean;
183
187
  /**
184
188
  * Returns a random 32-bit unsigned integer.
185
- *
186
- * @param rng - The random number generator to use
187
- * @returns A random u32 value
188
189
  */
189
190
  declare function rngRandomU32(rng: RandomNumberGenerator): number;
190
191
  //#endregion
@@ -197,10 +198,6 @@ declare function randomData(size: number): Uint8Array;
197
198
  * Fill the given Uint8Array with cryptographically strong random bytes.
198
199
  */
199
200
  declare function fillRandomData(data: Uint8Array): void;
200
- /**
201
- * Returns the next cryptographically strong random 64-bit unsigned integer.
202
- */
203
- declare function nextU64(): bigint;
204
201
  /**
205
202
  * A random number generator that can be used as a source of
206
203
  * cryptographically-strong randomness.
@@ -211,6 +208,9 @@ declare function nextU64(): bigint;
211
208
  declare class SecureRandomNumberGenerator implements RandomNumberGenerator {
212
209
  /**
213
210
  * Returns the next random 32-bit unsigned integer.
211
+ *
212
+ * Mirrors Rust's `next_u32` impl which returns `next_u64() as u32` —
213
+ * the low 32 bits of a 64-bit draw.
214
214
  */
215
215
  nextU32(): number;
216
216
  /**
@@ -230,6 +230,13 @@ declare class SecureRandomNumberGenerator implements RandomNumberGenerator {
230
230
  */
231
231
  fillRandomData(data: Uint8Array): void;
232
232
  }
233
+ /**
234
+ * Returns a thread-local cryptographically-strong RNG. Mirrors Rust's
235
+ * `thread_rng()`. In TypeScript there are no thread-locals, so this returns
236
+ * a fresh `SecureRandomNumberGenerator` — every instance backs onto the
237
+ * same Web Crypto source, so the effect is equivalent.
238
+ */
239
+ declare function threadRng(): SecureRandomNumberGenerator;
233
240
  //#endregion
234
241
  //#region src/seeded-random.d.ts
235
242
  /**
@@ -258,13 +265,6 @@ declare class SeededRandomNumberGenerator implements RandomNumberGenerator {
258
265
  * @param seed - Array of 4 64-bit unsigned integers as bigints
259
266
  */
260
267
  constructor(seed: [bigint, bigint, bigint, bigint]);
261
- /**
262
- * Creates a new seeded random number generator from a seed array.
263
- * Convenience method that accepts numbers and converts to bigints.
264
- *
265
- * @param seed - Array of 4 64-bit unsigned integers
266
- */
267
- static fromSeed(seed: [bigint, bigint, bigint, bigint]): SeededRandomNumberGenerator;
268
268
  /**
269
269
  * Returns the next random 64-bit unsigned integer as a bigint.
270
270
  */
@@ -293,10 +293,6 @@ declare class SeededRandomNumberGenerator implements RandomNumberGenerator {
293
293
  */
294
294
  fillRandomData(data: Uint8Array): void;
295
295
  }
296
- /**
297
- * The standard test seed used across all Blockchain Commons implementations.
298
- */
299
- declare const TEST_SEED: [bigint, bigint, bigint, bigint];
300
296
  /**
301
297
  * Creates a seeded random number generator with a fixed seed.
302
298
  * This is useful for reproducible testing across different platforms.
@@ -311,5 +307,5 @@ declare function makeFakeRandomNumberGenerator(): SeededRandomNumberGenerator;
311
307
  */
312
308
  declare function fakeRandomData(size: number): Uint8Array;
313
309
  //#endregion
314
- export { type RandomNumberGenerator, SecureRandomNumberGenerator, SeededRandomNumberGenerator, TEST_SEED, type WideMulResult, fakeRandomData, fillRandomData, fromMagnitude, fromMagnitude64, makeFakeRandomNumberGenerator, nextU64, randomData, rngFillRandomData, rngNextInClosedRange, rngNextInClosedRangeI32, rngNextInRange, rngNextInRangeI32, rngNextWithUpperBound, rngNextWithUpperBoundU32, rngRandomArray, rngRandomBool, rngRandomData, rngRandomU32, toMagnitude, toMagnitude64, wideMul, wideMulU16, wideMulU32, wideMulU64, wideMulU8 };
310
+ export { type RandomNumberGenerator, SecureRandomNumberGenerator, SeededRandomNumberGenerator, type WideMulResult, fakeRandomData, fillRandomData, fromMagnitude, fromMagnitude64, makeFakeRandomNumberGenerator, randomData, rngFillRandomData, rngNextInClosedRange, rngNextInClosedRangeI16, rngNextInClosedRangeI32, rngNextInClosedRangeI64, rngNextInClosedRangeI8, rngNextInClosedRangeU16, rngNextInClosedRangeU32, rngNextInClosedRangeU64, rngNextInClosedRangeU8, rngNextInRange, rngNextInRangeI16, rngNextInRangeI32, rngNextInRangeI64, rngNextInRangeI8, rngNextInRangeU16, rngNextInRangeU32, rngNextInRangeU64, rngNextInRangeU8, rngNextWithUpperBound, rngNextWithUpperBoundU16, rngNextWithUpperBoundU32, rngNextWithUpperBoundU64, rngNextWithUpperBoundU8, rngRandomArray, rngRandomBool, rngRandomData, rngRandomU32, threadRng, toMagnitude, toMagnitude64, wideMul, wideMulU16, wideMulU32, wideMulU64, wideMulU8 };
315
311
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/widening.ts","../src/magnitude.ts","../src/random-number-generator.ts","../src/secure-random.ts","../src/seeded-random.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/widening.ts","../src/magnitude.ts","../src/random-number-generator.ts","../src/secure-random.ts","../src/seeded-random.ts"],"mappings":"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"}