@binance/common 2.1.0 → 2.1.1

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
@@ -529,6 +529,33 @@ declare function buildQueryString(params: Record<string, unknown>): string;
529
529
  * @returns A random string of 16 hexadecimal characters.
530
530
  */
531
531
  declare function randomString(): string;
532
+ /**
533
+ * Generates a cryptographically secure random 32-bit unsigned integer.
534
+ *
535
+ * Uses the Web Crypto API to generate a random value between 0 and 4,294,967,295 (2^32 - 1).
536
+ *
537
+ * @returns A random 32-bit unsigned integer.
538
+ */
539
+ declare function randomInteger(): number;
540
+ /**
541
+ * Normalizes a stream ID to ensure it is valid, generating a random ID if needed.
542
+ *
543
+ * For string inputs:
544
+ * - Returns the input if it's a valid 32-character hexadecimal string (case-insensitive)
545
+ * - Otherwise, generates a new random hexadecimal string using `randomString()`
546
+ *
547
+ * For number inputs:
548
+ * - Returns the input if it's a finite, non-negative integer within the safe integer range
549
+ * - Otherwise, generates a new random integer using `randomInteger()`
550
+ *
551
+ * For null or undefined inputs:
552
+ * - Generates a new random hexadecimal string using `randomString()`
553
+ *
554
+ * @param id - The stream ID to normalize (string, number, null, or undefined).
555
+ * @param streamIdIsStrictlyNumber - Boolean forcing an id to be a number or not.
556
+ * @returns A valid stream ID as either a 32-character hexadecimal string or a safe integer.
557
+ */
558
+ declare function normalizeStreamId(id: string | number | null | undefined, streamIdIsStrictlyNumber?: boolean): string | number;
532
559
  /**
533
560
  * Validates the provided time unit string and returns it if it is either 'MILLISECOND' or 'MICROSECOND'.
534
561
  *
@@ -968,6 +995,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
968
995
  private streamConnectionMap;
969
996
  protected configuration: ConfigurationWebsocketStreams;
970
997
  protected wsURL: string;
998
+ streamIdIsStrictlyNumber?: boolean;
971
999
  streamCallbackMap: Map<string, Set<(data: unknown) => void>>;
972
1000
  logger: Logger;
973
1001
  constructor(configuration: ConfigurationWebsocketStreams, connectionPool?: WebsocketConnection[]);
@@ -1040,7 +1068,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
1040
1068
  * @param id Optional subscription ID
1041
1069
  * @returns void
1042
1070
  */
1043
- subscribe(stream: string | string[], id?: string): void;
1071
+ subscribe(stream: string | string[], id?: number | string): void;
1044
1072
  /**
1045
1073
  * Unsubscribes from one or multiple WebSocket streams
1046
1074
  * Handles both single and pool modes
@@ -1048,7 +1076,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
1048
1076
  * @param id Optional unsubscription ID
1049
1077
  * @returns void
1050
1078
  */
1051
- unsubscribe(stream: string | string[], id?: string): void;
1079
+ unsubscribe(stream: string | string[], id?: number | string): void;
1052
1080
  /**
1053
1081
  * Checks if the specified stream is currently subscribed.
1054
1082
  * @param stream - The name of the stream to check.
@@ -1077,7 +1105,7 @@ interface WebsocketStream<T> {
1077
1105
  * @param {string} [id] Optional additional identifier
1078
1106
  * @returns {WebsocketStream<T>} A stream handler with methods to register callbacks and unsubscribe
1079
1107
  */
1080
- declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: string): WebsocketStream<T>;
1108
+ declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: number | string): WebsocketStream<T>;
1081
1109
  //#endregion
1082
- export { ALGO_REST_API_PROD_URL, AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, RequestArgs, RequiredError, RestApiRateLimit, RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, SendMessageOptions, ServerError, TimeUnit, TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, WebsocketApiRateLimit, WebsocketApiResponse, WebsocketCommon, WebsocketConnection, WebsocketEventEmitter, WebsocketSendMsgConfig, WebsocketSendMsgOptions, WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1110
+ export { ALGO_REST_API_PROD_URL, AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, RequestArgs, RequiredError, RestApiRateLimit, RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, SendMessageOptions, ServerError, TimeUnit, TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, WebsocketApiRateLimit, WebsocketApiResponse, WebsocketCommon, WebsocketConnection, WebsocketEventEmitter, WebsocketSendMsgConfig, WebsocketSendMsgOptions, WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, normalizeStreamId, parseCustomHeaders, parseRateLimitHeaders, randomInteger, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1083
1111
  //# sourceMappingURL=index.d.mts.map
package/dist/index.d.ts CHANGED
@@ -529,6 +529,33 @@ declare function buildQueryString(params: Record<string, unknown>): string;
529
529
  * @returns A random string of 16 hexadecimal characters.
530
530
  */
531
531
  declare function randomString(): string;
532
+ /**
533
+ * Generates a cryptographically secure random 32-bit unsigned integer.
534
+ *
535
+ * Uses the Web Crypto API to generate a random value between 0 and 4,294,967,295 (2^32 - 1).
536
+ *
537
+ * @returns A random 32-bit unsigned integer.
538
+ */
539
+ declare function randomInteger(): number;
540
+ /**
541
+ * Normalizes a stream ID to ensure it is valid, generating a random ID if needed.
542
+ *
543
+ * For string inputs:
544
+ * - Returns the input if it's a valid 32-character hexadecimal string (case-insensitive)
545
+ * - Otherwise, generates a new random hexadecimal string using `randomString()`
546
+ *
547
+ * For number inputs:
548
+ * - Returns the input if it's a finite, non-negative integer within the safe integer range
549
+ * - Otherwise, generates a new random integer using `randomInteger()`
550
+ *
551
+ * For null or undefined inputs:
552
+ * - Generates a new random hexadecimal string using `randomString()`
553
+ *
554
+ * @param id - The stream ID to normalize (string, number, null, or undefined).
555
+ * @param streamIdIsStrictlyNumber - Boolean forcing an id to be a number or not.
556
+ * @returns A valid stream ID as either a 32-character hexadecimal string or a safe integer.
557
+ */
558
+ declare function normalizeStreamId(id: string | number | null | undefined, streamIdIsStrictlyNumber?: boolean): string | number;
532
559
  /**
533
560
  * Validates the provided time unit string and returns it if it is either 'MILLISECOND' or 'MICROSECOND'.
534
561
  *
@@ -968,6 +995,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
968
995
  private streamConnectionMap;
969
996
  protected configuration: ConfigurationWebsocketStreams;
970
997
  protected wsURL: string;
998
+ streamIdIsStrictlyNumber?: boolean;
971
999
  streamCallbackMap: Map<string, Set<(data: unknown) => void>>;
972
1000
  logger: Logger;
973
1001
  constructor(configuration: ConfigurationWebsocketStreams, connectionPool?: WebsocketConnection[]);
@@ -1040,7 +1068,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
1040
1068
  * @param id Optional subscription ID
1041
1069
  * @returns void
1042
1070
  */
1043
- subscribe(stream: string | string[], id?: string): void;
1071
+ subscribe(stream: string | string[], id?: number | string): void;
1044
1072
  /**
1045
1073
  * Unsubscribes from one or multiple WebSocket streams
1046
1074
  * Handles both single and pool modes
@@ -1048,7 +1076,7 @@ declare class WebsocketStreamsBase extends WebsocketCommon {
1048
1076
  * @param id Optional unsubscription ID
1049
1077
  * @returns void
1050
1078
  */
1051
- unsubscribe(stream: string | string[], id?: string): void;
1079
+ unsubscribe(stream: string | string[], id?: number | string): void;
1052
1080
  /**
1053
1081
  * Checks if the specified stream is currently subscribed.
1054
1082
  * @param stream - The name of the stream to check.
@@ -1077,7 +1105,7 @@ interface WebsocketStream<T> {
1077
1105
  * @param {string} [id] Optional additional identifier
1078
1106
  * @returns {WebsocketStream<T>} A stream handler with methods to register callbacks and unsubscribe
1079
1107
  */
1080
- declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: string): WebsocketStream<T>;
1108
+ declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: number | string): WebsocketStream<T>;
1081
1109
  //#endregion
1082
- export { ALGO_REST_API_PROD_URL, AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, RequestArgs, RequiredError, RestApiRateLimit, RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, SendMessageOptions, ServerError, TimeUnit, TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, WebsocketApiRateLimit, WebsocketApiResponse, WebsocketCommon, WebsocketConnection, WebsocketEventEmitter, WebsocketSendMsgConfig, WebsocketSendMsgOptions, WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1110
+ export { ALGO_REST_API_PROD_URL, AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, RequestArgs, RequiredError, RestApiRateLimit, RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, SendMessageOptions, ServerError, TimeUnit, TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, WebsocketApiRateLimit, WebsocketApiResponse, WebsocketCommon, WebsocketConnection, WebsocketEventEmitter, WebsocketSendMsgConfig, WebsocketSendMsgOptions, WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, normalizeStreamId, parseCustomHeaders, parseRateLimitHeaders, randomInteger, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1083
1111
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -140,6 +140,42 @@ function randomString() {
140
140
  return crypto.default.randomBytes(16).toString("hex");
141
141
  }
142
142
  /**
143
+ * Generates a cryptographically secure random 32-bit unsigned integer.
144
+ *
145
+ * Uses the Web Crypto API to generate a random value between 0 and 4,294,967,295 (2^32 - 1).
146
+ *
147
+ * @returns A random 32-bit unsigned integer.
148
+ */
149
+ function randomInteger() {
150
+ const array = new Uint32Array(1);
151
+ crypto.default.getRandomValues(array);
152
+ return array[0];
153
+ }
154
+ /**
155
+ * Normalizes a stream ID to ensure it is valid, generating a random ID if needed.
156
+ *
157
+ * For string inputs:
158
+ * - Returns the input if it's a valid 32-character hexadecimal string (case-insensitive)
159
+ * - Otherwise, generates a new random hexadecimal string using `randomString()`
160
+ *
161
+ * For number inputs:
162
+ * - Returns the input if it's a finite, non-negative integer within the safe integer range
163
+ * - Otherwise, generates a new random integer using `randomInteger()`
164
+ *
165
+ * For null or undefined inputs:
166
+ * - Generates a new random hexadecimal string using `randomString()`
167
+ *
168
+ * @param id - The stream ID to normalize (string, number, null, or undefined).
169
+ * @param streamIdIsStrictlyNumber - Boolean forcing an id to be a number or not.
170
+ * @returns A valid stream ID as either a 32-character hexadecimal string or a safe integer.
171
+ */
172
+ function normalizeStreamId(id, streamIdIsStrictlyNumber) {
173
+ const isValidNumber = typeof id === "number" && Number.isFinite(id) && Number.isInteger(id) && id >= 0 && id <= Number.MAX_SAFE_INTEGER;
174
+ if (streamIdIsStrictlyNumber || typeof id === "number") return isValidNumber ? id : randomInteger();
175
+ if (typeof id === "string") return id && /^[0-9a-f]{32}$/i.test(id) ? id : randomString();
176
+ return randomString();
177
+ }
178
+ /**
143
179
  * Validates the provided time unit string and returns it if it is either 'MILLISECOND' or 'MICROSECOND'.
144
180
  *
145
181
  * @param timeUnit - The time unit string to be validated.
@@ -1446,6 +1482,7 @@ var WebsocketStreamsBase = class extends WebsocketCommon {
1446
1482
  constructor(configuration, connectionPool = []) {
1447
1483
  super(configuration, connectionPool);
1448
1484
  this.streamConnectionMap = /* @__PURE__ */ new Map();
1485
+ this.streamIdIsStrictlyNumber = false;
1449
1486
  this.streamCallbackMap = /* @__PURE__ */ new Map();
1450
1487
  this.logger = Logger.getInstance();
1451
1488
  this.configuration = configuration;
@@ -1505,7 +1542,7 @@ var WebsocketStreamsBase = class extends WebsocketCommon {
1505
1542
  const payload = {
1506
1543
  method: "SUBSCRIBE",
1507
1544
  params: streams,
1508
- id: id && /^[0-9a-f]{32}$/.test(id) ? id : randomString()
1545
+ id: normalizeStreamId(id, this.streamIdIsStrictlyNumber)
1509
1546
  };
1510
1547
  this.logger.debug("SUBSCRIBE", payload);
1511
1548
  this.send(JSON.stringify(payload), void 0, false, 0, connection);
@@ -1612,7 +1649,7 @@ var WebsocketStreamsBase = class extends WebsocketCommon {
1612
1649
  const payload = {
1613
1650
  method: "UNSUBSCRIBE",
1614
1651
  params: [stream$1],
1615
- id: id && /^[0-9a-f]{32}$/.test(id) ? id : randomString()
1652
+ id: normalizeStreamId(id, this.streamIdIsStrictlyNumber)
1616
1653
  };
1617
1654
  this.logger.debug("UNSUBSCRIBE", payload);
1618
1655
  this.send(JSON.stringify(payload), void 0, false, 0, connection);
@@ -1742,8 +1779,10 @@ exports.getSignature = getSignature;
1742
1779
  exports.getTimestamp = getTimestamp;
1743
1780
  exports.httpRequestFunction = httpRequestFunction;
1744
1781
  exports.normalizeScientificNumbers = normalizeScientificNumbers;
1782
+ exports.normalizeStreamId = normalizeStreamId;
1745
1783
  exports.parseCustomHeaders = parseCustomHeaders;
1746
1784
  exports.parseRateLimitHeaders = parseRateLimitHeaders;
1785
+ exports.randomInteger = randomInteger;
1747
1786
  exports.randomString = randomString;
1748
1787
  exports.removeEmptyValue = removeEmptyValue;
1749
1788
  exports.replaceWebsocketStreamsPlaceholders = replaceWebsocketStreamsPlaceholders;