@dynamic-labs-sdk/client 0.14.0 → 0.15.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.
Files changed (125) hide show
  1. package/dist/{InvalidParamError-DQn49mNB.esm.js → InvalidParamError-Dyk0GfyN.esm.js} +257 -6
  2. package/dist/InvalidParamError-Dyk0GfyN.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-DVzrk97b.cjs.js → InvalidParamError-DzSZbHE5.cjs.js} +343 -5
  4. package/dist/InvalidParamError-DzSZbHE5.cjs.js.map +1 -0
  5. package/dist/{NotWaasWalletAccountError-IxbdRVGy.cjs.js → NotWaasWalletAccountError-DFTloI8C.cjs.js} +3 -3
  6. package/dist/{NotWaasWalletAccountError-IxbdRVGy.cjs.js.map → NotWaasWalletAccountError-DFTloI8C.cjs.js.map} +1 -1
  7. package/dist/{NotWaasWalletAccountError-D0BXVuKy.esm.js → NotWaasWalletAccountError-kNpOqccC.esm.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-D0BXVuKy.esm.js.map → NotWaasWalletAccountError-kNpOqccC.esm.js.map} +1 -1
  9. package/dist/client/core/createCore/getInitialState.d.ts.map +1 -1
  10. package/dist/core.cjs.js +33 -65
  11. package/dist/core.cjs.js.map +1 -1
  12. package/dist/core.esm.js +24 -60
  13. package/dist/core.esm.js.map +1 -1
  14. package/dist/errors/DeeplinkConnectAndVerifyUnsupportedError.d.ts +9 -0
  15. package/dist/errors/DeeplinkConnectAndVerifyUnsupportedError.d.ts.map +1 -0
  16. package/dist/errors/UnauthorizedError.d.ts +5 -0
  17. package/dist/errors/UnauthorizedError.d.ts.map +1 -0
  18. package/dist/exports/core.d.ts +9 -1
  19. package/dist/exports/core.d.ts.map +1 -1
  20. package/dist/exports/index.d.ts +13 -2
  21. package/dist/exports/index.d.ts.map +1 -1
  22. package/dist/{getNetworkProviderFromNetworkId-z8WEapnj.cjs.js → getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js} +66 -148
  23. package/dist/getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js.map +1 -0
  24. package/dist/{getNetworkProviderFromNetworkId-DMMnYrfG.esm.js → getNetworkProviderFromNetworkId-ySZUpmOr.esm.js} +59 -96
  25. package/dist/getNetworkProviderFromNetworkId-ySZUpmOr.esm.js.map +1 -0
  26. package/dist/{getSignedSessionId-BKKO2mqj.esm.js → getSignedSessionId-BxhxGkA4.esm.js} +4 -17
  27. package/dist/getSignedSessionId-BxhxGkA4.esm.js.map +1 -0
  28. package/dist/{getSignedSessionId-BdGOv_TA.cjs.js → getSignedSessionId-s45HpP3W.cjs.js} +5 -24
  29. package/dist/getSignedSessionId-s45HpP3W.cjs.js.map +1 -0
  30. package/dist/{getVerifiedCredentialForWalletAccount-Ck7DNGPJ.cjs.js → getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js} +2 -3
  31. package/dist/{getVerifiedCredentialForWalletAccount-Ck7DNGPJ.cjs.js.map → getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js.map} +1 -1
  32. package/dist/{getVerifiedCredentialForWalletAccount-DQ7g6O7y.esm.js → getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js} +2 -2
  33. package/dist/{getVerifiedCredentialForWalletAccount-DQ7g6O7y.esm.js.map → getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js.map} +1 -1
  34. package/dist/index.cjs.js +291 -79
  35. package/dist/index.cjs.js.map +1 -1
  36. package/dist/index.esm.js +273 -70
  37. package/dist/index.esm.js.map +1 -1
  38. package/dist/{isMfaRequiredForAction-MvVGc7k3.esm.js → isMfaRequiredForAction-D1sFhYH1.esm.js} +3 -10
  39. package/dist/isMfaRequiredForAction-D1sFhYH1.esm.js.map +1 -0
  40. package/dist/{isMfaRequiredForAction-BINs954q.cjs.js → isMfaRequiredForAction-DaJSsq8Z.cjs.js} +2 -15
  41. package/dist/isMfaRequiredForAction-DaJSsq8Z.cjs.js.map +1 -0
  42. package/dist/modules/apiClient/createApiClient.d.ts.map +1 -1
  43. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts +4 -0
  44. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts.map +1 -0
  45. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/index.d.ts +2 -0
  46. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/index.d.ts.map +1 -0
  47. package/dist/modules/apiClient/utils/unauthorizedMiddleware/createUnauthorizedMiddleware.d.ts +3 -0
  48. package/dist/modules/apiClient/utils/unauthorizedMiddleware/createUnauthorizedMiddleware.d.ts.map +1 -0
  49. package/dist/modules/checkout/submitCheckoutTransaction/index.d.ts +3 -0
  50. package/dist/modules/checkout/submitCheckoutTransaction/index.d.ts.map +1 -0
  51. package/dist/modules/checkout/submitCheckoutTransaction/submitCheckoutTransaction.d.ts +22 -0
  52. package/dist/modules/checkout/submitCheckoutTransaction/submitCheckoutTransaction.d.ts.map +1 -0
  53. package/dist/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.d.ts.map +1 -1
  54. package/dist/modules/deviceRegistration/getDeviceSigner/{getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.d.ts → getOrCreateEnvironmentDeviceSigningKeys/getOrCreateEnvironmentDeviceSigningKeys.d.ts} +2 -2
  55. package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/getOrCreateEnvironmentDeviceSigningKeys.d.ts.map +1 -0
  56. package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/index.d.ts +2 -0
  57. package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/index.d.ts.map +1 -0
  58. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts +3 -0
  59. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts.map +1 -0
  60. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/index.d.ts +2 -0
  61. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/index.d.ts.map +1 -0
  62. package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts +3 -0
  63. package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts.map +1 -0
  64. package/dist/modules/deviceRegistration/getRegisteredDevices/index.d.ts +2 -0
  65. package/dist/modules/deviceRegistration/getRegisteredDevices/index.d.ts.map +1 -0
  66. package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/index.d.ts +2 -0
  67. package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/index.d.ts.map +1 -0
  68. package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/revokeAllRegisteredDevices.d.ts +2 -0
  69. package/dist/modules/deviceRegistration/revokeAllRegisteredDevices/revokeAllRegisteredDevices.d.ts.map +1 -0
  70. package/dist/modules/deviceRegistration/revokeRegisteredDevice/index.d.ts +2 -0
  71. package/dist/modules/deviceRegistration/revokeRegisteredDevice/index.d.ts.map +1 -0
  72. package/dist/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.d.ts +6 -0
  73. package/dist/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.d.ts.map +1 -0
  74. package/dist/modules/initializeClient/initializeClient.d.ts.map +1 -1
  75. package/dist/modules/wallets/connectAndVerifyWithWalletProvider/connectAndVerifyWithWalletProvider.d.ts +10 -0
  76. package/dist/modules/wallets/connectAndVerifyWithWalletProvider/connectAndVerifyWithWalletProvider.d.ts.map +1 -1
  77. package/dist/modules/wallets/transferAmount/index.d.ts +2 -0
  78. package/dist/modules/wallets/transferAmount/index.d.ts.map +1 -0
  79. package/dist/modules/wallets/transferAmount/transferAmount.d.ts +19 -0
  80. package/dist/modules/wallets/transferAmount/transferAmount.d.ts.map +1 -0
  81. package/dist/modules/wallets/walletProvider/index.d.ts +1 -1
  82. package/dist/modules/wallets/walletProvider/index.d.ts.map +1 -1
  83. package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/index.d.ts +2 -0
  84. package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/index.d.ts.map +1 -0
  85. package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/isDeeplinkWalletProvider.d.ts +10 -0
  86. package/dist/modules/wallets/walletProvider/isDeeplinkWalletProvider/isDeeplinkWalletProvider.d.ts.map +1 -0
  87. package/dist/modules/wallets/walletProvider/walletProvider.types.d.ts +17 -0
  88. package/dist/modules/wallets/walletProvider/walletProvider.types.d.ts.map +1 -1
  89. package/dist/services/openDeeplink/createWebDeeplinkOpener/createWebDeeplinkOpener.d.ts +11 -1
  90. package/dist/services/openDeeplink/createWebDeeplinkOpener/createWebDeeplinkOpener.d.ts.map +1 -1
  91. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  92. package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts +6 -0
  93. package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts.map +1 -0
  94. package/dist/utils/getDeviceNameFromUserAgent/index.d.ts +2 -0
  95. package/dist/utils/getDeviceNameFromUserAgent/index.d.ts.map +1 -0
  96. package/dist/utils/getNonce/constants.d.ts +2 -0
  97. package/dist/utils/getNonce/constants.d.ts.map +1 -0
  98. package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts +13 -0
  99. package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts.map +1 -0
  100. package/dist/utils/getNonce/fetchAndStoreNonces/index.d.ts +2 -0
  101. package/dist/utils/getNonce/fetchAndStoreNonces/index.d.ts.map +1 -0
  102. package/dist/utils/getNonce/getNonce.d.ts +7 -0
  103. package/dist/utils/getNonce/getNonce.d.ts.map +1 -1
  104. package/dist/utils/getNonce/state.d.ts +11 -0
  105. package/dist/utils/getNonce/state.d.ts.map +1 -0
  106. package/dist/utils/parseAmountToSmallestUnit/index.d.ts +2 -0
  107. package/dist/utils/parseAmountToSmallestUnit/index.d.ts.map +1 -0
  108. package/dist/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.d.ts +22 -0
  109. package/dist/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.d.ts.map +1 -0
  110. package/dist/waas.cjs.js +3 -4
  111. package/dist/waas.cjs.js.map +1 -1
  112. package/dist/waas.esm.js +3 -3
  113. package/dist/waasCore.cjs.js +3 -4
  114. package/dist/waasCore.cjs.js.map +1 -1
  115. package/dist/waasCore.esm.js +3 -3
  116. package/package.json +3 -3
  117. package/dist/InvalidParamError-DQn49mNB.esm.js.map +0 -1
  118. package/dist/InvalidParamError-DVzrk97b.cjs.js.map +0 -1
  119. package/dist/getNetworkProviderFromNetworkId-DMMnYrfG.esm.js.map +0 -1
  120. package/dist/getNetworkProviderFromNetworkId-z8WEapnj.cjs.js.map +0 -1
  121. package/dist/getSignedSessionId-BKKO2mqj.esm.js.map +0 -1
  122. package/dist/getSignedSessionId-BdGOv_TA.cjs.js.map +0 -1
  123. package/dist/isMfaRequiredForAction-BINs954q.cjs.js.map +0 -1
  124. package/dist/isMfaRequiredForAction-MvVGc7k3.esm.js.map +0 -1
  125. package/dist/modules/deviceRegistration/getDeviceSigner/getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.d.ts.map +0 -1
package/dist/core.cjs.js CHANGED
@@ -1,13 +1,13 @@
1
- const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-z8WEapnj.cjs.js');
2
- const require_InvalidParamError = require('./InvalidParamError-DVzrk97b.cjs.js');
3
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-Ck7DNGPJ.cjs.js');
4
- require('./isMfaRequiredForAction-BINs954q.cjs.js');
5
- const require_getSignedSessionId = require('./getSignedSessionId-BdGOv_TA.cjs.js');
1
+ const require_InvalidParamError = require('./InvalidParamError-DzSZbHE5.cjs.js');
2
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js');
3
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js');
4
+ require('./isMfaRequiredForAction-DaJSsq8Z.cjs.js');
5
+ const require_getSignedSessionId = require('./getSignedSessionId-s45HpP3W.cjs.js');
6
6
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
7
7
  let zod_mini = require("zod/mini");
8
- zod_mini = require_getNetworkProviderFromNetworkId.__toESM(zod_mini);
8
+ zod_mini = require_InvalidParamError.__toESM(zod_mini);
9
9
  let eventemitter3 = require("eventemitter3");
10
- eventemitter3 = require_getNetworkProviderFromNetworkId.__toESM(eventemitter3);
10
+ eventemitter3 = require_InvalidParamError.__toESM(eventemitter3);
11
11
 
12
12
  //#region src/errors/ClientsDoNotMatchError.ts
13
13
  var ClientsDoNotMatchError = class extends require_InvalidParamError.BaseError {
@@ -98,7 +98,7 @@ const getNetworkDataForNetworkId = ({ networkId, chain }, client) => {
98
98
 
99
99
  //#endregion
100
100
  //#region src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/schema.ts
101
- const networkRegistryStorageKeySchema = require_getNetworkProviderFromNetworkId.createStorageKeySchema({
101
+ const networkRegistryStorageKeySchema = require_InvalidParamError.createStorageKeySchema({
102
102
  key: "lastKnownNetworkRegistry",
103
103
  schema: zod_mini.record(zod_mini.string(), zod_mini.string())
104
104
  });
@@ -273,62 +273,26 @@ const bufferToBase64 = (buf) => {
273
273
  const filterDuplicates = (array) => Array.from(new Set(array));
274
274
 
275
275
  //#endregion
276
- //#region src/modules/deviceRegistration/getDeviceSigner/deviceSigningKeys.schema.ts
277
- const deviceSigningKeysSchema = zod_mini.object({
278
- privateJwk: zod_mini.custom(),
279
- privateKey: zod_mini.string(),
280
- publicKey: zod_mini.string()
281
- });
282
-
283
- //#endregion
284
- //#region src/modules/deviceRegistration/getDeviceSigner/getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.ts
276
+ //#region src/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.ts
285
277
  /**
286
- * On web we want to auto create the device signing keys for each user.
287
- * And the user device signing keys should never be deleted.
278
+ * Converts a human-readable decimal amount string to the smallest unit
279
+ * representation as a bigint, using string-based arithmetic to avoid
280
+ * floating-point precision loss.
281
+ *
282
+ * @example
283
+ * parseAmountToSmallestUnit({ amount: '1.5', decimals: 9 }) // 1500000000n (1.5 SOL in lamports)
284
+ * parseAmountToSmallestUnit({ amount: '1.5', decimals: 8 }) // 150000000n (1.5 BTC in satoshis)
285
+ * parseAmountToSmallestUnit({ amount: '10.5', decimals: 6 }) // 10500000n (10.5 USDC)
286
+ * parseAmountToSmallestUnit({ amount: '0.1', decimals: 9 }) // 100000000n (no float error)
287
+ *
288
+ * @param params.amount - The amount as a decimal string (e.g. "1.5").
289
+ * @param params.decimals - The number of decimal places for the token.
290
+ * @returns The amount in smallest units as a bigint.
288
291
  */
289
- const getOrCreateUserDeviceSigningKeys = async (client) => {
290
- const { storage } = require_InvalidParamError.getCore(client);
291
- const user = client.user;
292
- require_InvalidParamError.assertDefined(user, "User not found");
293
- const userDeviceSigningKeysStorageKeySchema = require_getNetworkProviderFromNetworkId.createStorageKeySchema({
294
- key: `user_device_signing_keys_${user.id}`,
295
- schema: deviceSigningKeysSchema
296
- });
297
- const deviceSigningKeys = await storage.getItem(userDeviceSigningKeysStorageKeySchema);
298
- if (deviceSigningKeys) return deviceSigningKeys;
299
- const { public: publicKey, private: privateKey, privateJwk } = await require_getNetworkProviderFromNetworkId.p256Keygen();
300
- await storage.setItem(userDeviceSigningKeysStorageKeySchema, {
301
- privateJwk,
302
- privateKey,
303
- publicKey
304
- });
305
- return {
306
- privateJwk,
307
- privateKey,
308
- publicKey
309
- };
310
- };
311
-
312
- //#endregion
313
- //#region src/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.ts
314
- const getDeviceSigner = async (client) => {
315
- const { deviceSigner } = require_InvalidParamError.getCore(client);
316
- /**
317
- * If the device signer is available, it should handle the device signing
318
- * This is used for mobile devices with secure enclave.
319
- */
320
- if (deviceSigner) return deviceSigner;
321
- /**
322
- * For web devices we want to auto create one PK per user id.
323
- */
324
- const userDeviceSigningKeys = await getOrCreateUserDeviceSigningKeys(client);
325
- return {
326
- getPublicKey: async () => userDeviceSigningKeys.publicKey,
327
- sign: (payload) => require_getSignedSessionId.p256Sign({
328
- message: payload,
329
- privateKeyJwk: userDeviceSigningKeys.privateJwk
330
- })
331
- };
292
+ const parseAmountToSmallestUnit = ({ amount, decimals }) => {
293
+ const [whole = "0", fraction = ""] = amount.split(".");
294
+ const paddedFraction = fraction.padEnd(decimals, "0").slice(0, decimals);
295
+ return BigInt(whole + paddedFraction);
332
296
  };
333
297
 
334
298
  //#endregion
@@ -359,12 +323,13 @@ exports.createApiClient = require_InvalidParamError.createApiClient;
359
323
  exports.createBaseNetworkProvider = createBaseNetworkProvider;
360
324
  exports.createCrossTabBroadcast = require_getNetworkProviderFromNetworkId.createCrossTabBroadcast;
361
325
  exports.createDeferredPromise = require_getNetworkProviderFromNetworkId.createDeferredPromise;
326
+ exports.createDeviceSignatureHeadersMiddleware = require_InvalidParamError.createDeviceSignatureHeadersMiddleware;
362
327
  exports.createLocalStorageAdapter = require_getNetworkProviderFromNetworkId.createLocalStorageAdapter;
363
328
  exports.createLogger = require_getNetworkProviderFromNetworkId.createLogger;
364
329
  exports.createRuntimeServiceAccessKey = require_getVerifiedCredentialForWalletAccount.createRuntimeServiceAccessKey;
365
330
  exports.createSignInMessageStatement = require_getNetworkProviderFromNetworkId.createSignInMessageStatement;
366
331
  exports.createStorage = require_getNetworkProviderFromNetworkId.createStorage;
367
- exports.createStorageKeySchema = require_getNetworkProviderFromNetworkId.createStorageKeySchema;
332
+ exports.createStorageKeySchema = require_InvalidParamError.createStorageKeySchema;
368
333
  exports.createVisit = require_getNetworkProviderFromNetworkId.createVisit;
369
334
  exports.createWalletProviderEventEmitter = createWalletProviderEventEmitter;
370
335
  exports.emitEvent = require_getVerifiedCredentialForWalletAccount.emitEvent;
@@ -374,20 +339,22 @@ exports.formatSignInMessage = require_getNetworkProviderFromNetworkId.formatSign
374
339
  exports.formatWalletAccountId = require_getVerifiedCredentialForWalletAccount.formatWalletAccountId;
375
340
  exports.formatWalletProviderGroupKey = formatWalletProviderGroupKey;
376
341
  exports.formatWalletProviderKey = require_getVerifiedCredentialForWalletAccount.formatWalletProviderKey;
342
+ exports.generateSessionKeys = require_getNetworkProviderFromNetworkId.generateSessionKeys;
377
343
  exports.getActiveNetworkIdFromLastKnownRegistry = getActiveNetworkIdFromLastKnownRegistry;
378
344
  exports.getAllProvidersFromWindow = getAllProvidersFromWindow;
379
345
  exports.getBuffer = require_InvalidParamError.getBuffer;
380
346
  exports.getChainFromVerifiedCredentialChain = require_InvalidParamError.getChainFromVerifiedCredentialChain;
381
347
  exports.getCore = require_InvalidParamError.getCore;
382
348
  exports.getDefaultClient = require_InvalidParamError.getDefaultClient;
383
- exports.getDeviceSigner = getDeviceSigner;
349
+ exports.getDeviceSigner = require_InvalidParamError.getDeviceSigner;
350
+ exports.getHeadersForNonceSignedByDeviceSigners = require_InvalidParamError.getHeadersForNonceSignedByDeviceSigners;
384
351
  exports.getInjectedProviderFromWindow = getInjectedProviderFromWindow;
385
352
  exports.getLastKnownNetworkRegistry = getLastKnownNetworkRegistry;
386
353
  exports.getNetworkDataForNetworkId = getNetworkDataForNetworkId;
387
354
  exports.getNetworkProviderBuilderRegistry = require_getNetworkProviderFromNetworkId.getNetworkProviderBuilderRegistry;
388
355
  exports.getNetworkProviderFromNetworkId = require_getNetworkProviderFromNetworkId.getNetworkProviderFromNetworkId;
389
356
  exports.getNetworkProviders = require_getNetworkProviderFromNetworkId.getNetworkProviders;
390
- exports.getNonce = require_getNetworkProviderFromNetworkId.getNonce;
357
+ exports.getNonce = require_InvalidParamError.getNonce;
391
358
  exports.getSessionKeys = require_InvalidParamError.getSessionKeys;
392
359
  exports.getSignedSessionId = require_getSignedSessionId.getSignedSessionId;
393
360
  exports.getVerifiedCredentialForWalletAccount = require_getVerifiedCredentialForWalletAccount.getVerifiedCredentialForWalletAccount;
@@ -397,6 +364,7 @@ exports.getWalletProviders = require_getVerifiedCredentialForWalletAccount.getWa
397
364
  exports.hasExtension = require_getNetworkProviderFromNetworkId.hasExtension;
398
365
  exports.isCookieEnabled = require_InvalidParamError.isCookieEnabled;
399
366
  exports.normalizeWalletNameWithChain = require_getVerifiedCredentialForWalletAccount.normalizeWalletNameWithChain;
367
+ exports.parseAmountToSmallestUnit = parseAmountToSmallestUnit;
400
368
  exports.registerExtension = registerExtension;
401
369
  exports.removeUnverifiedWalletAccount = require_getNetworkProviderFromNetworkId.removeUnverifiedWalletAccount;
402
370
  exports.setCaptchaToken = require_getNetworkProviderFromNetworkId.setCaptchaToken;
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs.js","names":["BaseError","BaseError","BaseError","getCore","getCore","FETCH_PROJECT_SETTINGS_TRACKER_KEY","getNetworksData","createStorageKeySchema","z","getCore","getNetworkId: LastKnownNetworkRegistry['getNetworkId']","getWalletProviderByKey","getNetworkProviders","NoNetworkProvidersError","setNetworkId: LastKnownNetworkRegistry['setNetworkId']","createRuntimeServiceAccessKey","target: unknown","providers: T[]","target: unknown","getActiveNetworkIdFromLastKnownRegistry: GetActiveNetworkIdFromLastKnownRegistry","switchActiveNetworkInLastKnownRegistry: SwitchActiveNetworkInLastKnownRegistry","eventEmitter: EventEmitter<WalletProviderEvents> | undefined","setupReturnValue: R","EventEmitter","getBuffer","z","getCore","createStorageKeySchema","p256Keygen","getCore","p256Sign","packageName","packageVersion"],"sources":["../src/errors/ClientsDoNotMatchError.ts","../src/errors/MethodNotImplementedError.ts","../src/errors/MultipleClientsFoundError.ts","../src/modules/extension/registerExtension/registerExtension.ts","../src/modules/initializeClient/waitForProjectSettings/waitForProjectSettings.ts","../src/modules/wallets/networks/createBaseNetworkProvider/createBaseNetworkProvider.ts","../src/modules/wallets/networks/getNetworkDataForNetworkId/getNetworkDataForNetworkId.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/schema.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/createLastKnownNetworkRegistry.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry.ts","../src/modules/wallets/utils/formatWalletProviderGroupKey/formatWalletProviderGroupKey.ts","../src/modules/wallets/utils/getAllProvidersFromWindow/getAllProvidersFromWindow.ts","../src/modules/wallets/utils/getInjectedProviderFromWindow/getInjectedProviderFromWindow.ts","../src/modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry/getActiveNetworkIdFromLastKnownRegistry.ts","../src/modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry/switchActiveNetworkInLastKnownRegistry.ts","../src/modules/wallets/walletProvider/events/createWalletProviderEventEmitter/createWalletProviderEventEmitter.ts","../src/utils/bufferToBase64/bufferToBase64.ts","../src/utils/filterDuplicates/filterDuplicates.ts","../src/modules/deviceRegistration/getDeviceSigner/deviceSigningKeys.schema.ts","../src/modules/deviceRegistration/getDeviceSigner/getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.ts","../src/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.ts","../src/exports/core.ts"],"sourcesContent":["import { BaseError } from './base';\n\nexport class ClientsDoNotMatchError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'clients_do_not_match_error',\n docsUrl: null,\n name: 'ClientsDoNotMatchError',\n shortMessage: 'Clients do not match',\n });\n }\n}\n","import { BaseError } from './base';\n\nexport class MethodNotImplementedError extends BaseError {\n constructor(methodName: string) {\n super({\n cause: null,\n code: 'method_not_implemented_error',\n docsUrl: null,\n name: 'MethodNotImplementedError',\n shortMessage: `This method is not implemented: ${methodName}`,\n });\n }\n}\n","import { BaseError } from './base';\n\nexport class MultipleClientsFoundError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'multiple_clients_found_error',\n docsUrl: null,\n name: 'MultipleClientsFoundError',\n shortMessage:\n 'Multiple Dynamic clients have been initialized. Please provide the intended client for this action explicitly',\n });\n }\n}\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\n\ntype RegisterExtensionParams = {\n extensionKey: string;\n};\n\n/**\n * Registers an extension to the client.\n *\n * Other extensions can be aware of which extensions are present,\n * and allows creating dependencies between extensions.\n *\n * @param client - The client instance.\n * @param extensionKey - The key of the extension to register.\n * @returns The client instance.\n */\nexport const registerExtension = (\n { extensionKey }: RegisterExtensionParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n core.extensions.add(extensionKey);\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport { assertDefined } from '../../../utils/assertDefined';\nimport { FETCH_PROJECT_SETTINGS_TRACKER_KEY } from '../consts';\n\nexport const waitForProjectSettings = async (client: DynamicClient) => {\n const core = getCore(client);\n\n const projectSettingsTracker = core.initTrack.getTracker<void>(\n FETCH_PROJECT_SETTINGS_TRACKER_KEY\n );\n\n assertDefined(projectSettingsTracker, 'Project settings tracker not found');\n\n await projectSettingsTracker.promise;\n\n assertDefined(\n client.projectSettings,\n 'Project settings still not available after awaiting its tracker'\n );\n\n return client.projectSettings;\n};\n","import type { Chain } from '../../../chain';\nimport type {\n BaseNetworkProvider,\n NetworkData,\n} from '../networkProvider/networkProvider.types';\n\nexport const createBaseNetworkProvider = <TChain extends Chain = Chain>(\n chain: TChain,\n networkData: NetworkData\n): Omit<BaseNetworkProvider<TChain>, 'getBalance'> => ({\n blockExplorerUrls: networkData.blockExplorerUrls,\n chain,\n displayName: networkData.displayName,\n iconUrl: networkData.iconUrl,\n id: `${chain}-${networkData.networkId}`,\n nativeCurrency: networkData.nativeCurrency,\n networkId: networkData.networkId,\n rpcUrls: networkData.rpcUrls,\n testnet: networkData.testnet,\n});\n","import type { DynamicClient } from '../../../../client/types';\nimport type { Chain } from '../../../chain';\nimport { getNetworksData } from '../getNetworksData';\nimport type { NetworkData } from '../networkProvider/networkProvider.types';\n\ntype GetNetworkDataForNetworkIdProps = {\n chain: Chain;\n networkId: string;\n};\n\nexport const getNetworkDataForNetworkId = (\n { networkId, chain }: GetNetworkDataForNetworkIdProps,\n client: DynamicClient\n): NetworkData | undefined => {\n const networksData = getNetworksData(client);\n\n const networkData = networksData.find(\n (networkData) =>\n networkData.networkId === networkId && networkData.chain === chain\n );\n\n return networkData;\n};\n","import * as z from 'zod/mini';\n\nimport { createStorageKeySchema } from '../../../../../services/storage';\n\nexport const networkRegistryStorageKeySchema = createStorageKeySchema({\n key: 'lastKnownNetworkRegistry',\n schema: z.record(z.string(), z.string()),\n});\n","import { getCore } from '../../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../../client/types';\nimport { NoNetworkProvidersError } from '../../../../../errors/NoNetworkProvidersError';\nimport { assertDefined } from '../../../../../utils/assertDefined';\nimport { getWalletProviderByKey } from '../../../getWalletProviderByKey';\nimport { getNetworkProviders } from '../../getNetworkProviders';\nimport type { LastKnownNetworkRegistry } from '../LastKnownNetworkRegistry.types';\nimport { networkRegistryStorageKeySchema } from './schema';\n\n/**\n * Creates the registry that keeps tabs on which wallet provider is\n * connected to which network.\n *\n * Reminder that this will not be used for chains that have an internal way to\n * switch networks (ex EVM).\n */\nexport const createLastKnownNetworkRegistry = (\n client: DynamicClient\n): LastKnownNetworkRegistry => {\n const core = getCore(client);\n\n const walletProviderKeyToNetworkId = new Map<string, string>();\n\n const getNetworkId: LastKnownNetworkRegistry['getNetworkId'] = async ({\n walletProviderKey,\n }) => {\n // Priorities:\n // 1. In memory\n // 2. Storage\n // 3. First available network for this wallet's chain\n\n if (walletProviderKeyToNetworkId.has(walletProviderKey)) {\n return {\n networkId: walletProviderKeyToNetworkId.get(\n walletProviderKey\n ) as string,\n };\n }\n\n const storageRecords = await core.storage.getItem(\n networkRegistryStorageKeySchema\n );\n\n if (storageRecords && storageRecords[walletProviderKey]) {\n const networkId = storageRecords[walletProviderKey];\n\n walletProviderKeyToNetworkId.set(walletProviderKey, networkId);\n\n return { networkId };\n }\n\n const walletProvider = getWalletProviderByKey(\n { walletProviderKey },\n client\n );\n\n const networkProviders = getNetworkProviders(client);\n\n if (networkProviders.length === 0) {\n throw new NoNetworkProvidersError();\n }\n\n const defaultNetworkProvider = networkProviders.find(\n (networkProvider) => networkProvider.chain === walletProvider.chain\n );\n\n assertDefined(\n defaultNetworkProvider,\n `No networks found for chain ${walletProvider.chain}`\n );\n\n walletProviderKeyToNetworkId.set(\n walletProviderKey,\n defaultNetworkProvider.networkId\n );\n\n // No need to set in storage, as we're just falling back to the default\n return { networkId: defaultNetworkProvider.networkId };\n };\n\n const setNetworkId: LastKnownNetworkRegistry['setNetworkId'] = async ({\n networkId,\n walletProviderKey,\n }) => {\n walletProviderKeyToNetworkId.set(walletProviderKey, networkId);\n\n await core.storage.setItem(\n networkRegistryStorageKeySchema,\n Object.fromEntries(walletProviderKeyToNetworkId.entries())\n );\n };\n\n return { getNetworkId, setNetworkId };\n};\n","import { createRuntimeServiceAccessKey } from '../../../../../services/runtimeServices';\nimport { createLastKnownNetworkRegistry } from '../createLastKnownNetworkRegistry';\n\nexport const getLastKnownNetworkRegistry = createRuntimeServiceAccessKey(\n 'last-known-network-registry',\n (client) => createLastKnownNetworkRegistry(client)\n);\n","export const formatWalletProviderGroupKey = (walletName: string): string =>\n walletName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n","/* eslint-disable no-restricted-globals */\n\n/**\n * Retrieves all providers from a window path.\n *\n * Unlike getInjectedProviderFromWindow which returns only the first provider,\n * this function returns ALL providers found at the path, including those\n * in a .providers array if present.\n *\n * This is particularly useful for detecting wallet providers in wallet app\n * in-app browsers, where wallets inject their provider into the window object.\n *\n * @param path - Dot-separated path to traverse (e.g., \"ethereum\")\n * @returns Array of all providers found, or empty array if none\n */\nexport const getAllProvidersFromWindow = <T = unknown>(path: string): T[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n\n // Traverse the path safely\n const target: unknown = path.split('.').reduce<unknown>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (acc, key) => (acc == null ? null : (acc as any)[key]),\n window\n );\n\n if (typeof target !== 'object' || target === null) {\n return [];\n }\n\n if (Array.isArray(target)) {\n return target as T[];\n }\n\n const providers: T[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const providersArray = (target as any).providers;\n\n // If target has a .providers array, return all providers from it\n if (providersArray && Array.isArray(providersArray)) {\n providers.push(...(providersArray as T[]));\n }\n\n // Always include the target itself as a provider (if it's not just a container)\n // This handles the case where window.ethereum is both a provider AND has a providers array\n providers.push(target as T);\n\n return providers;\n};\n","/* eslint-disable no-restricted-globals */\nexport const getInjectedProviderFromWindow = <T = unknown>(\n path: string\n): T | null => {\n if (typeof window === 'undefined') {\n return null;\n }\n\n // Traverse the path safely\n const target: unknown = path.split('.').reduce<unknown>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (acc, key) => (acc == null ? null : (acc as any)[key]),\n window\n );\n\n if (typeof target !== 'object' || target === null) {\n return null;\n }\n\n if (Array.isArray(target)) {\n return target.length > 0 ? (target[0] as T) : null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const providersArray = (target as any).providers;\n\n if (providersArray && Array.isArray(providersArray)) {\n return providersArray.length > 0 ? (providersArray[0] as T) : null;\n }\n\n return target as T;\n};\n","import type { DynamicClient } from '../../../../../client/types/DynamicClient';\nimport { getLastKnownNetworkRegistry } from '../../../networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry';\nimport type { WalletProvider } from '../../walletProvider.types';\n\ntype GetActiveNetworkIdFromLastKnownRegistry = (args: {\n client: DynamicClient;\n walletProviderKey: string;\n}) => ReturnType<WalletProvider['getActiveNetworkId']>;\n\nexport const getActiveNetworkIdFromLastKnownRegistry: GetActiveNetworkIdFromLastKnownRegistry =\n async ({ client, walletProviderKey }) => {\n const networkRegistry = getLastKnownNetworkRegistry(client);\n\n return networkRegistry.getNetworkId({ walletProviderKey });\n };\n","import type { DynamicClient } from '../../../../../client/types/DynamicClient';\nimport { getLastKnownNetworkRegistry } from '../../../networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry';\nimport type { WalletProvider } from '../../walletProvider.types';\n\ntype SwitchActiveNetworkInLastKnownRegistry = (args: {\n client: DynamicClient;\n networkId: string;\n walletProviderKey: string;\n}) => ReturnType<NonNullable<WalletProvider['switchActiveNetwork']>>;\n\nexport const switchActiveNetworkInLastKnownRegistry: SwitchActiveNetworkInLastKnownRegistry =\n async ({ client, networkId, walletProviderKey }) => {\n const networkRegistry = getLastKnownNetworkRegistry(client);\n\n await networkRegistry.setNetworkId({\n networkId,\n walletProviderKey,\n });\n };\n","import EventEmitter from 'eventemitter3';\n\nimport { assertDefined } from '../../../../../utils/assertDefined';\nimport type { WalletProvider } from '../../walletProvider.types';\nimport type { WalletProviderEvents } from '../walletProviderEvents.types';\n\ntype CreateWalletProviderEventEmitterParams<R = void> = {\n /**\n * Callback responsible for removing the listeners from the external wallet provider event emitters\n * to the the Dynamic handlers that will emit the wallet provider events.\n */\n removeEventListeners: (params: {\n handleAccountsChanged: (params: { addresses: string[] }) => void;\n handleDisconnected: () => void;\n handleNetworkChanged: (params: { networkId: string }) => void;\n /**\n * Value returned by setupEventListeners, particularly useful for cleaning up the event listeners\n */\n setupReturnValue: R;\n }) => void;\n /**\n * Callback responsible for connecting the external wallet provider event emitters\n * to the the Dynamic handlers that will emit the wallet provider events.\n *\n * @returns May return a value that will be later passed to removeEventListeners as `setupReturnValue`\n */\n setupEventListeners: (params: {\n handleAccountsChanged: (params: { addresses: string[] }) => void;\n handleDisconnected: () => void;\n handleNetworkChanged: (params: { networkId: string }) => void;\n }) => R;\n /**\n * List of events that the wallet provider supports listening to.\n * Defaults to all events.\n */\n supportedEvents?: (keyof WalletProviderEvents)[];\n};\n\n/**\n * Takes a callback that registers handlers for the external wallet provider.\n * Returns both a getter of an eventEmitter that can be exposed via the wallet provider\n * and a callback that will be used to destroy the listeners.\n */\nexport const createWalletProviderEventEmitter = <R = void>({\n removeEventListeners,\n setupEventListeners,\n supportedEvents = ['accountsChanged', 'disconnected', 'networkChanged'],\n}: CreateWalletProviderEventEmitterParams<R>) => {\n let eventEmitter: EventEmitter<WalletProviderEvents> | undefined;\n\n /** Value returned by setupEventListeners */\n let setupReturnValue: R;\n\n const handleAccountsChanged = (params: { addresses: string[] }) => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('accountsChanged', params);\n };\n\n const handleDisconnected = () => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('disconnected');\n };\n\n const handleNetworkChanged = (params: { networkId: string }) => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('networkChanged', params);\n };\n\n const cleanupEventEmitter = () => {\n if (!eventEmitter) {\n return;\n }\n\n removeEventListeners({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n setupReturnValue,\n });\n\n eventEmitter = undefined;\n };\n\n const getEventEmitter = (): WalletProvider['events'] => {\n if (!eventEmitter) {\n eventEmitter = new EventEmitter<WalletProviderEvents>();\n\n setupReturnValue = setupEventListeners({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n });\n }\n\n return Object.assign(eventEmitter, { supportedEvents });\n };\n\n return {\n cleanupEventEmitter,\n getEventEmitter,\n };\n};\n","import { getBuffer } from \"../getBuffer\";\n\nexport const bufferToBase64 = (buf: Uint8Array): string => {\n const binstr = Array.prototype.map\n .call(buf, (ch: number) => String.fromCharCode(ch))\n .join('');\n return getBuffer().from(binstr, 'binary').toString('base64');\n};\n","/**\n * Filter duplicates from an array by equality.\n * Uses a Set internally.\n */\nexport const filterDuplicates = <T>(array: T[]): T[] =>\n Array.from(new Set(array));\n","import * as z from 'zod/mini';\n\nexport const deviceSigningKeysSchema = z.object({\n privateJwk: z.custom<JsonWebKey>(),\n privateKey: z.string(),\n publicKey: z.string(),\n});\n","import type * as z from 'zod/mini';\n\nimport { getCore } from '../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../client/types';\nimport { createStorageKeySchema } from '../../../../services/storage';\nimport { assertDefined } from '../../../../utils/assertDefined';\nimport { p256Keygen } from '../../../../utils/p256Keygen';\nimport { deviceSigningKeysSchema } from '../deviceSigningKeys.schema';\n\n/**\n * On web we want to auto create the device signing keys for each user.\n * And the user device signing keys should never be deleted.\n */\nexport const getOrCreateUserDeviceSigningKeys = async (\n client: DynamicClient\n): Promise<z.infer<typeof deviceSigningKeysSchema>> => {\n const { storage } = getCore(client);\n\n const user = client.user;\n\n assertDefined(user, 'User not found');\n\n const userDeviceSigningKeysStorageKeySchema = createStorageKeySchema({\n key: `user_device_signing_keys_${user.id}`,\n schema: deviceSigningKeysSchema,\n });\n\n const deviceSigningKeys = await storage.getItem(\n userDeviceSigningKeysStorageKeySchema\n );\n\n if (deviceSigningKeys) {\n return deviceSigningKeys;\n }\n\n const {\n public: publicKey,\n private: privateKey,\n privateJwk,\n } = await p256Keygen();\n\n await storage.setItem(userDeviceSigningKeysStorageKeySchema, {\n privateJwk,\n privateKey,\n publicKey,\n });\n\n return {\n privateJwk,\n privateKey,\n publicKey,\n };\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport type { DeviceSigner } from '../../../services/deviceSigner';\nimport { p256Sign } from '../../../utils/p256Sign';\nimport { getOrCreateUserDeviceSigningKeys } from './getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys';\n\nexport const getDeviceSigner = async (\n client: DynamicClient\n): Promise<DeviceSigner> => {\n const { deviceSigner } = getCore(client);\n\n /**\n * If the device signer is available, it should handle the device signing\n * This is used for mobile devices with secure enclave.\n */\n if (deviceSigner) {\n return deviceSigner;\n }\n\n /**\n * For web devices we want to auto create one PK per user id.\n */\n const userDeviceSigningKeys = await getOrCreateUserDeviceSigningKeys(client);\n\n return {\n getPublicKey: async () => userDeviceSigningKeys.publicKey,\n sign: (payload: string) =>\n p256Sign({\n message: payload,\n privateKeyJwk: userDeviceSigningKeys.privateJwk,\n }),\n };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\n/**\n * @categoryDescription Extension Development\n * Core utilities and functions for building Dynamic SDK extensions.\n * These APIs provide low-level access to the SDK internals and are intended\n * for advanced use cases and extension development. Most applications should\n * use the higher-level APIs exported from the main SDK package instead.\n */\n\n/** @category Extension Development */\nexport { getCore } from '../client/core/getCore';\n/** @category Extension Development */\nexport type { DynamicCore, DynamicCoreState } from '../client/core/types';\n/** @category Extension Development */\nexport { getDefaultClient } from '../client/defaultClient';\n/** @category Extension Development */\nexport { APIError } from '../errors/APIError';\n/** @category Extension Development */\nexport { CannotTrackError } from '../errors/CannotTrackError';\n/** @category Extension Development */\nexport { ClientNotFoundError } from '../errors/ClientNotFoundError';\n/** @category Extension Development */\nexport { ClientsDoNotMatchError } from '../errors/ClientsDoNotMatchError';\n/** @category Extension Development */\nexport { InvalidStorageSet } from '../errors/InvalidStorageSet';\n/** @category Extension Development */\nexport { InvalidWalletProviderKeyError } from '../errors/InvalidWalletProviderKeyError';\n/** @category Extension Development */\nexport { MethodNotImplementedError } from '../errors/MethodNotImplementedError';\n/** @category Extension Development */\nexport { MultipleClientsFoundError } from '../errors/MultipleClientsFoundError';\n/** @category Extension Development */\nexport { NoWalletProviderFoundError } from '../errors/NoWalletProviderFoundError';\n/** @category Extension Development */\nexport { ValueMustBeDefinedError } from '../errors/ValueMustBeDefinedError';\n/** @category Extension Development */\nexport { createApiClient, DYNAMIC_SDK_API_VERSION } from '../modules/apiClient';\n/** @category Extension Development */\nexport { createVisit } from '../modules/auth/createVisit';\n/** @category Extension Development */\nexport { updateAuthFromVerifyResponse } from '../modules/auth/updateAuthFromVerifyResponse';\n/** @category Extension Development */\nexport { consumeCaptchaToken } from '../modules/captcha/consumeCaptchaToken';\n/** @category Extension Development */\nexport { setCaptchaToken } from '../modules/captcha/setCaptchaToken';\n/** @category Extension Development */\nexport { emitEvent } from '../modules/clientEvents';\n/** @category Extension Development */\nexport { hasExtension } from '../modules/extension/hasExtension';\n/** @category Extension Development */\nexport { registerExtension } from '../modules/extension/registerExtension';\n/** @category Extension Development */\nexport { waitForProjectSettings } from '../modules/initializeClient/waitForProjectSettings';\n/** @category Extension Development */\nexport { consumeMfaTokenIfRequiredForAction } from '../modules/mfa/consumeMfaTokenIfRequiredForAction';\n/** @category Extension Development */\nexport { isCookieEnabled } from '../modules/projectSettings/isCookieEnabled';\n/** @category Extension Development */\nexport { getSessionKeys } from '../modules/sessionKeys/getSessionKeys';\n/** @category Extension Development */\nexport { getSignedSessionId } from '../modules/sessionKeys/getSignedSessionId';\n/** @category Extension Development */\nexport type { SessionKeys } from '../modules/sessionKeys/sessionKeys.types';\n/** @category Extension Development */\nexport { CHAINS_INFO_MAP } from '../modules/wallets/constants';\n/** @category Extension Development */\nexport { emitWalletAccountsChangedEvent } from '../modules/wallets/emitWalletAccountsChangedEvent';\n/** @category Extension Development */\nexport { getWalletProviders } from '../modules/wallets/getWalletProviders';\n/** @category Extension Development */\nexport { createBaseNetworkProvider } from '../modules/wallets/networks/createBaseNetworkProvider';\n/** @category Extension Development */\nexport { getNetworkDataForNetworkId } from '../modules/wallets/networks/getNetworkDataForNetworkId';\n/** @category Extension Development */\nexport { getNetworkProviderFromNetworkId } from '../modules/wallets/networks/getNetworkProviderFromNetworkId';\n/** @category Extension Development */\nexport { getNetworkProviders } from '../modules/wallets/networks/getNetworkProviders';\n/** @category Extension Development */\nexport { getLastKnownNetworkRegistry } from '../modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry';\n/** @category Extension Development */\nexport type { LastKnownNetworkRegistry } from '../modules/wallets/networks/lastKnownNetworkRegistry/LastKnownNetworkRegistry.types';\n/** @category Extension Development */\nexport type { BaseNetworkProvider } from '../modules/wallets/networks/networkProvider/networkProvider.types';\n/** @category Extension Development */\nexport {\n getNetworkProviderBuilderRegistry,\n type NetworkProviderBuilder,\n type NetworkProviderBuilderRegistry,\n} from '../modules/wallets/networks/networkProviderBuilderRegistry';\n/** @category Extension Development */\nexport { removeUnverifiedWalletAccount } from '../modules/wallets/unverifiedWalletAccounts/removeUnverifiedWalletAccount';\nexport { setUnverifiedWalletAccounts } from '../modules/wallets/unverifiedWalletAccounts/setUnverifiedWalletAccounts';\n/** @category Extension Development */\nexport { formatSignInMessage } from '../modules/wallets/utils/formatSignInMessage';\n/** @category Extension Development */\nexport { formatWalletAccountId } from '../modules/wallets/utils/formatWalletAccountId';\n/** @category Extension Development */\nexport { formatWalletProviderGroupKey } from '../modules/wallets/utils/formatWalletProviderGroupKey';\n/** @category Extension Development */\nexport { formatWalletProviderKey } from '../modules/wallets/utils/formatWalletProviderKey';\n/** @category Extension Development */\nexport { getAllProvidersFromWindow } from '../modules/wallets/utils/getAllProvidersFromWindow';\n/** @category Extension Development */\nexport { getInjectedProviderFromWindow } from '../modules/wallets/utils/getInjectedProviderFromWindow';\n/** @category Extension Development */\nexport { getVerifiedCredentialForWalletAccount } from '../modules/wallets/utils/getVerifiedCredentialForWalletAccount';\n/** @category Extension Development */\nexport { getWalletProviderFromWalletAccount } from '../modules/wallets/utils/getWalletProviderFromWalletAccount';\n/** @category Extension Development */\nexport { normalizeWalletNameWithChain } from '../modules/wallets/utils/normalizeWalletNameWithChain';\n/** @category Extension Development */\nexport { verifyMessageSignatureOwnership } from '../modules/wallets/verifyMessageSignatureOwnership';\n/** @category Extension Development */\nexport type { BaseWalletAccount } from '../modules/wallets/walletAccount';\n/** @category Extension Development */\nexport type {\n TransferAmountParams,\n WalletProvider,\n WalletProviderConnectAddress,\n} from '../modules/wallets/walletProvider';\n/** @category Extension Development */\nexport { getActiveNetworkIdFromLastKnownRegistry } from '../modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry';\n/** @category Extension Development */\nexport { switchActiveNetworkInLastKnownRegistry } from '../modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry';\n/** @category Extension Development */\nexport { createWalletProviderEventEmitter } from '../modules/wallets/walletProvider/events/createWalletProviderEventEmitter';\n/** @category Extension Development */\nexport { splitWalletProviderKey } from '../modules/wallets/walletProvider/splitWalletProviderKey';\n/** @category Extension Development */\nexport {\n getWalletProviderRegistry,\n WalletProviderPriority,\n} from '../modules/wallets/walletProviderRegistry';\n/** @category Extension Development */\nexport type {\n AsyncProcessEntry,\n AsyncProcessStatus,\n AsyncTrack,\n AsyncTrackEmitter,\n} from '../services/asyncTrack/asyncTrack.types';\n/** @category Extension Development */\nexport { createCrossTabBroadcast } from '../services/crossTabBroadcast/createCrossTabBroadcast';\n/** @category Extension Development */\nexport type {\n CrossTabBroadcast,\n CrossTabBroadcastMessage,\n} from '../services/crossTabBroadcast';\n/** @category Extension Development */\nexport { CrossTabBroadcastMessageSchema } from '../services/crossTabBroadcast';\n/** @category Extension Development */\nexport { createLogger } from '../services/logger/createLogger';\n/** @category Extension Development */\nexport type { Logger, LogLevel } from '../services/logger/logger.types';\n/** @category Extension Development */\nexport type { PasskeyService } from '../services/passkey';\n/** @category Extension Development */\nexport {\n createRuntimeServiceAccessKey,\n type RuntimeServices,\n} from '../services/runtimeServices';\n/** @category Extension Development */\nexport {\n createLocalStorageAdapter,\n createStorage,\n createStorageKeySchema,\n type Storage,\n type StorageAdapter,\n type StorageKeySchema,\n} from '../services/storage';\n/** @category Extension Development */\nexport type { ExtendParameters } from '../types/ExtendParameters';\n/** @category Extension Development */\nexport { assertDefined } from '../utils/assertDefined';\n/** @category Extension Development */\nexport { bufferToBase64 } from '../utils/bufferToBase64';\n/** @category Extension Development */\nexport type { DebouncedMutex } from '../utils/debouncedMutex/debouncedMutex.types';\n/** @category Extension Development */\nexport { filterDuplicates } from '../utils/filterDuplicates';\n/** @category Extension Development */\nexport { getBuffer } from '../utils/getBuffer';\n/** @category Extension Development */\nexport { getChainFromVerifiedCredentialChain } from '../utils/getChainFromVerifiedCredentialChain';\n/** @category Extension Development */\nexport { getNonce } from '../utils/getNonce';\n/** @category Extension Development */\nexport type { ObservableState } from '../utils/observable/observable.types';\n/** @category Extension Development */\nexport { createSignInMessageStatement } from '../modules/wallets/utils/getSignInMessage/createSignInMessageStatement';\n/** @category Extension Development */\nexport { subscribeWithSelector } from '../utils/observable/subscribeWithSelector';\n/** @category Extension Development */\nexport { updateWalletProviderKeysForVerifiedCredentials } from '../modules/wallets/walletProvider/walletProviderKeyMap/updateWalletProviderKeysForVerifiedCredentials';\n/** @category Extension Development */\nexport { DYNAMIC_ICONIC_SPRITE_URL } from '../constants';\n/** @category Extension Development */\nexport { createDeferredPromise } from '../utils/deferredPromise';\n/** @category Extension Development */\nexport { getDeviceSigner } from '../modules/deviceRegistration/getDeviceSigner';\n"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs.js","names":["BaseError","BaseError","BaseError","getCore","getCore","FETCH_PROJECT_SETTINGS_TRACKER_KEY","getNetworksData","createStorageKeySchema","z","getCore","getNetworkId: LastKnownNetworkRegistry['getNetworkId']","getWalletProviderByKey","getNetworkProviders","NoNetworkProvidersError","setNetworkId: LastKnownNetworkRegistry['setNetworkId']","createRuntimeServiceAccessKey","target: unknown","providers: T[]","target: unknown","getActiveNetworkIdFromLastKnownRegistry: GetActiveNetworkIdFromLastKnownRegistry","switchActiveNetworkInLastKnownRegistry: SwitchActiveNetworkInLastKnownRegistry","eventEmitter: EventEmitter<WalletProviderEvents> | undefined","setupReturnValue: R","EventEmitter","getBuffer","packageName","packageVersion"],"sources":["../src/errors/ClientsDoNotMatchError.ts","../src/errors/MethodNotImplementedError.ts","../src/errors/MultipleClientsFoundError.ts","../src/modules/extension/registerExtension/registerExtension.ts","../src/modules/initializeClient/waitForProjectSettings/waitForProjectSettings.ts","../src/modules/wallets/networks/createBaseNetworkProvider/createBaseNetworkProvider.ts","../src/modules/wallets/networks/getNetworkDataForNetworkId/getNetworkDataForNetworkId.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/schema.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/createLastKnownNetworkRegistry.ts","../src/modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry.ts","../src/modules/wallets/utils/formatWalletProviderGroupKey/formatWalletProviderGroupKey.ts","../src/modules/wallets/utils/getAllProvidersFromWindow/getAllProvidersFromWindow.ts","../src/modules/wallets/utils/getInjectedProviderFromWindow/getInjectedProviderFromWindow.ts","../src/modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry/getActiveNetworkIdFromLastKnownRegistry.ts","../src/modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry/switchActiveNetworkInLastKnownRegistry.ts","../src/modules/wallets/walletProvider/events/createWalletProviderEventEmitter/createWalletProviderEventEmitter.ts","../src/utils/bufferToBase64/bufferToBase64.ts","../src/utils/filterDuplicates/filterDuplicates.ts","../src/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.ts","../src/exports/core.ts"],"sourcesContent":["import { BaseError } from './base';\n\nexport class ClientsDoNotMatchError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'clients_do_not_match_error',\n docsUrl: null,\n name: 'ClientsDoNotMatchError',\n shortMessage: 'Clients do not match',\n });\n }\n}\n","import { BaseError } from './base';\n\nexport class MethodNotImplementedError extends BaseError {\n constructor(methodName: string) {\n super({\n cause: null,\n code: 'method_not_implemented_error',\n docsUrl: null,\n name: 'MethodNotImplementedError',\n shortMessage: `This method is not implemented: ${methodName}`,\n });\n }\n}\n","import { BaseError } from './base';\n\nexport class MultipleClientsFoundError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'multiple_clients_found_error',\n docsUrl: null,\n name: 'MultipleClientsFoundError',\n shortMessage:\n 'Multiple Dynamic clients have been initialized. Please provide the intended client for this action explicitly',\n });\n }\n}\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\n\ntype RegisterExtensionParams = {\n extensionKey: string;\n};\n\n/**\n * Registers an extension to the client.\n *\n * Other extensions can be aware of which extensions are present,\n * and allows creating dependencies between extensions.\n *\n * @param client - The client instance.\n * @param extensionKey - The key of the extension to register.\n * @returns The client instance.\n */\nexport const registerExtension = (\n { extensionKey }: RegisterExtensionParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n core.extensions.add(extensionKey);\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport { assertDefined } from '../../../utils/assertDefined';\nimport { FETCH_PROJECT_SETTINGS_TRACKER_KEY } from '../consts';\n\nexport const waitForProjectSettings = async (client: DynamicClient) => {\n const core = getCore(client);\n\n const projectSettingsTracker = core.initTrack.getTracker<void>(\n FETCH_PROJECT_SETTINGS_TRACKER_KEY\n );\n\n assertDefined(projectSettingsTracker, 'Project settings tracker not found');\n\n await projectSettingsTracker.promise;\n\n assertDefined(\n client.projectSettings,\n 'Project settings still not available after awaiting its tracker'\n );\n\n return client.projectSettings;\n};\n","import type { Chain } from '../../../chain';\nimport type {\n BaseNetworkProvider,\n NetworkData,\n} from '../networkProvider/networkProvider.types';\n\nexport const createBaseNetworkProvider = <TChain extends Chain = Chain>(\n chain: TChain,\n networkData: NetworkData\n): Omit<BaseNetworkProvider<TChain>, 'getBalance'> => ({\n blockExplorerUrls: networkData.blockExplorerUrls,\n chain,\n displayName: networkData.displayName,\n iconUrl: networkData.iconUrl,\n id: `${chain}-${networkData.networkId}`,\n nativeCurrency: networkData.nativeCurrency,\n networkId: networkData.networkId,\n rpcUrls: networkData.rpcUrls,\n testnet: networkData.testnet,\n});\n","import type { DynamicClient } from '../../../../client/types';\nimport type { Chain } from '../../../chain';\nimport { getNetworksData } from '../getNetworksData';\nimport type { NetworkData } from '../networkProvider/networkProvider.types';\n\ntype GetNetworkDataForNetworkIdProps = {\n chain: Chain;\n networkId: string;\n};\n\nexport const getNetworkDataForNetworkId = (\n { networkId, chain }: GetNetworkDataForNetworkIdProps,\n client: DynamicClient\n): NetworkData | undefined => {\n const networksData = getNetworksData(client);\n\n const networkData = networksData.find(\n (networkData) =>\n networkData.networkId === networkId && networkData.chain === chain\n );\n\n return networkData;\n};\n","import * as z from 'zod/mini';\n\nimport { createStorageKeySchema } from '../../../../../services/storage';\n\nexport const networkRegistryStorageKeySchema = createStorageKeySchema({\n key: 'lastKnownNetworkRegistry',\n schema: z.record(z.string(), z.string()),\n});\n","import { getCore } from '../../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../../client/types';\nimport { NoNetworkProvidersError } from '../../../../../errors/NoNetworkProvidersError';\nimport { assertDefined } from '../../../../../utils/assertDefined';\nimport { getWalletProviderByKey } from '../../../getWalletProviderByKey';\nimport { getNetworkProviders } from '../../getNetworkProviders';\nimport type { LastKnownNetworkRegistry } from '../LastKnownNetworkRegistry.types';\nimport { networkRegistryStorageKeySchema } from './schema';\n\n/**\n * Creates the registry that keeps tabs on which wallet provider is\n * connected to which network.\n *\n * Reminder that this will not be used for chains that have an internal way to\n * switch networks (ex EVM).\n */\nexport const createLastKnownNetworkRegistry = (\n client: DynamicClient\n): LastKnownNetworkRegistry => {\n const core = getCore(client);\n\n const walletProviderKeyToNetworkId = new Map<string, string>();\n\n const getNetworkId: LastKnownNetworkRegistry['getNetworkId'] = async ({\n walletProviderKey,\n }) => {\n // Priorities:\n // 1. In memory\n // 2. Storage\n // 3. First available network for this wallet's chain\n\n if (walletProviderKeyToNetworkId.has(walletProviderKey)) {\n return {\n networkId: walletProviderKeyToNetworkId.get(\n walletProviderKey\n ) as string,\n };\n }\n\n const storageRecords = await core.storage.getItem(\n networkRegistryStorageKeySchema\n );\n\n if (storageRecords && storageRecords[walletProviderKey]) {\n const networkId = storageRecords[walletProviderKey];\n\n walletProviderKeyToNetworkId.set(walletProviderKey, networkId);\n\n return { networkId };\n }\n\n const walletProvider = getWalletProviderByKey(\n { walletProviderKey },\n client\n );\n\n const networkProviders = getNetworkProviders(client);\n\n if (networkProviders.length === 0) {\n throw new NoNetworkProvidersError();\n }\n\n const defaultNetworkProvider = networkProviders.find(\n (networkProvider) => networkProvider.chain === walletProvider.chain\n );\n\n assertDefined(\n defaultNetworkProvider,\n `No networks found for chain ${walletProvider.chain}`\n );\n\n walletProviderKeyToNetworkId.set(\n walletProviderKey,\n defaultNetworkProvider.networkId\n );\n\n // No need to set in storage, as we're just falling back to the default\n return { networkId: defaultNetworkProvider.networkId };\n };\n\n const setNetworkId: LastKnownNetworkRegistry['setNetworkId'] = async ({\n networkId,\n walletProviderKey,\n }) => {\n walletProviderKeyToNetworkId.set(walletProviderKey, networkId);\n\n await core.storage.setItem(\n networkRegistryStorageKeySchema,\n Object.fromEntries(walletProviderKeyToNetworkId.entries())\n );\n };\n\n return { getNetworkId, setNetworkId };\n};\n","import { createRuntimeServiceAccessKey } from '../../../../../services/runtimeServices';\nimport { createLastKnownNetworkRegistry } from '../createLastKnownNetworkRegistry';\n\nexport const getLastKnownNetworkRegistry = createRuntimeServiceAccessKey(\n 'last-known-network-registry',\n (client) => createLastKnownNetworkRegistry(client)\n);\n","export const formatWalletProviderGroupKey = (walletName: string): string =>\n walletName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();\n","/* eslint-disable no-restricted-globals */\n\n/**\n * Retrieves all providers from a window path.\n *\n * Unlike getInjectedProviderFromWindow which returns only the first provider,\n * this function returns ALL providers found at the path, including those\n * in a .providers array if present.\n *\n * This is particularly useful for detecting wallet providers in wallet app\n * in-app browsers, where wallets inject their provider into the window object.\n *\n * @param path - Dot-separated path to traverse (e.g., \"ethereum\")\n * @returns Array of all providers found, or empty array if none\n */\nexport const getAllProvidersFromWindow = <T = unknown>(path: string): T[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n\n // Traverse the path safely\n const target: unknown = path.split('.').reduce<unknown>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (acc, key) => (acc == null ? null : (acc as any)[key]),\n window\n );\n\n if (typeof target !== 'object' || target === null) {\n return [];\n }\n\n if (Array.isArray(target)) {\n return target as T[];\n }\n\n const providers: T[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const providersArray = (target as any).providers;\n\n // If target has a .providers array, return all providers from it\n if (providersArray && Array.isArray(providersArray)) {\n providers.push(...(providersArray as T[]));\n }\n\n // Always include the target itself as a provider (if it's not just a container)\n // This handles the case where window.ethereum is both a provider AND has a providers array\n providers.push(target as T);\n\n return providers;\n};\n","/* eslint-disable no-restricted-globals */\nexport const getInjectedProviderFromWindow = <T = unknown>(\n path: string\n): T | null => {\n if (typeof window === 'undefined') {\n return null;\n }\n\n // Traverse the path safely\n const target: unknown = path.split('.').reduce<unknown>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (acc, key) => (acc == null ? null : (acc as any)[key]),\n window\n );\n\n if (typeof target !== 'object' || target === null) {\n return null;\n }\n\n if (Array.isArray(target)) {\n return target.length > 0 ? (target[0] as T) : null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const providersArray = (target as any).providers;\n\n if (providersArray && Array.isArray(providersArray)) {\n return providersArray.length > 0 ? (providersArray[0] as T) : null;\n }\n\n return target as T;\n};\n","import type { DynamicClient } from '../../../../../client/types/DynamicClient';\nimport { getLastKnownNetworkRegistry } from '../../../networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry';\nimport type { WalletProvider } from '../../walletProvider.types';\n\ntype GetActiveNetworkIdFromLastKnownRegistry = (args: {\n client: DynamicClient;\n walletProviderKey: string;\n}) => ReturnType<WalletProvider['getActiveNetworkId']>;\n\nexport const getActiveNetworkIdFromLastKnownRegistry: GetActiveNetworkIdFromLastKnownRegistry =\n async ({ client, walletProviderKey }) => {\n const networkRegistry = getLastKnownNetworkRegistry(client);\n\n return networkRegistry.getNetworkId({ walletProviderKey });\n };\n","import type { DynamicClient } from '../../../../../client/types/DynamicClient';\nimport { getLastKnownNetworkRegistry } from '../../../networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry';\nimport type { WalletProvider } from '../../walletProvider.types';\n\ntype SwitchActiveNetworkInLastKnownRegistry = (args: {\n client: DynamicClient;\n networkId: string;\n walletProviderKey: string;\n}) => ReturnType<NonNullable<WalletProvider['switchActiveNetwork']>>;\n\nexport const switchActiveNetworkInLastKnownRegistry: SwitchActiveNetworkInLastKnownRegistry =\n async ({ client, networkId, walletProviderKey }) => {\n const networkRegistry = getLastKnownNetworkRegistry(client);\n\n await networkRegistry.setNetworkId({\n networkId,\n walletProviderKey,\n });\n };\n","import EventEmitter from 'eventemitter3';\n\nimport { assertDefined } from '../../../../../utils/assertDefined';\nimport type { WalletProvider } from '../../walletProvider.types';\nimport type { WalletProviderEvents } from '../walletProviderEvents.types';\n\ntype CreateWalletProviderEventEmitterParams<R = void> = {\n /**\n * Callback responsible for removing the listeners from the external wallet provider event emitters\n * to the the Dynamic handlers that will emit the wallet provider events.\n */\n removeEventListeners: (params: {\n handleAccountsChanged: (params: { addresses: string[] }) => void;\n handleDisconnected: () => void;\n handleNetworkChanged: (params: { networkId: string }) => void;\n /**\n * Value returned by setupEventListeners, particularly useful for cleaning up the event listeners\n */\n setupReturnValue: R;\n }) => void;\n /**\n * Callback responsible for connecting the external wallet provider event emitters\n * to the the Dynamic handlers that will emit the wallet provider events.\n *\n * @returns May return a value that will be later passed to removeEventListeners as `setupReturnValue`\n */\n setupEventListeners: (params: {\n handleAccountsChanged: (params: { addresses: string[] }) => void;\n handleDisconnected: () => void;\n handleNetworkChanged: (params: { networkId: string }) => void;\n }) => R;\n /**\n * List of events that the wallet provider supports listening to.\n * Defaults to all events.\n */\n supportedEvents?: (keyof WalletProviderEvents)[];\n};\n\n/**\n * Takes a callback that registers handlers for the external wallet provider.\n * Returns both a getter of an eventEmitter that can be exposed via the wallet provider\n * and a callback that will be used to destroy the listeners.\n */\nexport const createWalletProviderEventEmitter = <R = void>({\n removeEventListeners,\n setupEventListeners,\n supportedEvents = ['accountsChanged', 'disconnected', 'networkChanged'],\n}: CreateWalletProviderEventEmitterParams<R>) => {\n let eventEmitter: EventEmitter<WalletProviderEvents> | undefined;\n\n /** Value returned by setupEventListeners */\n let setupReturnValue: R;\n\n const handleAccountsChanged = (params: { addresses: string[] }) => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('accountsChanged', params);\n };\n\n const handleDisconnected = () => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('disconnected');\n };\n\n const handleNetworkChanged = (params: { networkId: string }) => {\n assertDefined(eventEmitter, 'Event emitter not defined');\n eventEmitter.emit('networkChanged', params);\n };\n\n const cleanupEventEmitter = () => {\n if (!eventEmitter) {\n return;\n }\n\n removeEventListeners({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n setupReturnValue,\n });\n\n eventEmitter = undefined;\n };\n\n const getEventEmitter = (): WalletProvider['events'] => {\n if (!eventEmitter) {\n eventEmitter = new EventEmitter<WalletProviderEvents>();\n\n setupReturnValue = setupEventListeners({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n });\n }\n\n return Object.assign(eventEmitter, { supportedEvents });\n };\n\n return {\n cleanupEventEmitter,\n getEventEmitter,\n };\n};\n","import { getBuffer } from \"../getBuffer\";\n\nexport const bufferToBase64 = (buf: Uint8Array): string => {\n const binstr = Array.prototype.map\n .call(buf, (ch: number) => String.fromCharCode(ch))\n .join('');\n return getBuffer().from(binstr, 'binary').toString('base64');\n};\n","/**\n * Filter duplicates from an array by equality.\n * Uses a Set internally.\n */\nexport const filterDuplicates = <T>(array: T[]): T[] =>\n Array.from(new Set(array));\n","type ParseAmountToSmallestUnitParams = {\n amount: string;\n decimals: number;\n};\n\n/**\n * Converts a human-readable decimal amount string to the smallest unit\n * representation as a bigint, using string-based arithmetic to avoid\n * floating-point precision loss.\n *\n * @example\n * parseAmountToSmallestUnit({ amount: '1.5', decimals: 9 }) // 1500000000n (1.5 SOL in lamports)\n * parseAmountToSmallestUnit({ amount: '1.5', decimals: 8 }) // 150000000n (1.5 BTC in satoshis)\n * parseAmountToSmallestUnit({ amount: '10.5', decimals: 6 }) // 10500000n (10.5 USDC)\n * parseAmountToSmallestUnit({ amount: '0.1', decimals: 9 }) // 100000000n (no float error)\n *\n * @param params.amount - The amount as a decimal string (e.g. \"1.5\").\n * @param params.decimals - The number of decimal places for the token.\n * @returns The amount in smallest units as a bigint.\n */\nexport const parseAmountToSmallestUnit = ({\n amount,\n decimals,\n}: ParseAmountToSmallestUnitParams): bigint => {\n const [whole = '0', fraction = ''] = amount.split('.');\n const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);\n return BigInt(whole + paddedFraction);\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\n/**\n * @categoryDescription Extension Development\n * Core utilities and functions for building Dynamic SDK extensions.\n * These APIs provide low-level access to the SDK internals and are intended\n * for advanced use cases and extension development. Most applications should\n * use the higher-level APIs exported from the main SDK package instead.\n */\n\n/** @category Extension Development */\nexport { getCore } from '../client/core/getCore';\n/** @category Extension Development */\nexport type { DynamicCore, DynamicCoreState } from '../client/core/types';\n/** @category Extension Development */\nexport { getDefaultClient } from '../client/defaultClient';\n/** @category Extension Development */\nexport { APIError } from '../errors/APIError';\n/** @category Extension Development */\nexport { CannotTrackError } from '../errors/CannotTrackError';\n/** @category Extension Development */\nexport { ClientNotFoundError } from '../errors/ClientNotFoundError';\n/** @category Extension Development */\nexport { ClientsDoNotMatchError } from '../errors/ClientsDoNotMatchError';\n/** @category Extension Development */\nexport { InvalidStorageSet } from '../errors/InvalidStorageSet';\n/** @category Extension Development */\nexport { InvalidWalletProviderKeyError } from '../errors/InvalidWalletProviderKeyError';\n/** @category Extension Development */\nexport { MethodNotImplementedError } from '../errors/MethodNotImplementedError';\n/** @category Extension Development */\nexport { MultipleClientsFoundError } from '../errors/MultipleClientsFoundError';\n/** @category Extension Development */\nexport { NoWalletProviderFoundError } from '../errors/NoWalletProviderFoundError';\n/** @category Extension Development */\nexport { ValueMustBeDefinedError } from '../errors/ValueMustBeDefinedError';\n/** @category Extension Development */\nexport { createApiClient, DYNAMIC_SDK_API_VERSION } from '../modules/apiClient';\n/** @category Extension Development */\nexport { createVisit } from '../modules/auth/createVisit';\n/** @category Extension Development */\nexport { updateAuthFromVerifyResponse } from '../modules/auth/updateAuthFromVerifyResponse';\n/** @category Extension Development */\nexport { consumeCaptchaToken } from '../modules/captcha/consumeCaptchaToken';\n/** @category Extension Development */\nexport { setCaptchaToken } from '../modules/captcha/setCaptchaToken';\n/** @category Extension Development */\nexport { emitEvent } from '../modules/clientEvents';\n/** @category Extension Development */\nexport { hasExtension } from '../modules/extension/hasExtension';\n/** @category Extension Development */\nexport { registerExtension } from '../modules/extension/registerExtension';\n/** @category Extension Development */\nexport { waitForProjectSettings } from '../modules/initializeClient/waitForProjectSettings';\n/** @category Extension Development */\nexport { consumeMfaTokenIfRequiredForAction } from '../modules/mfa/consumeMfaTokenIfRequiredForAction';\n/** @category Extension Development */\nexport { isCookieEnabled } from '../modules/projectSettings/isCookieEnabled';\n/** @category Extension Development */\nexport { generateSessionKeys } from '../modules/sessionKeys/generateSessionKeys/generateSessionKeys';\n/** @category Extension Development */\nexport { getSessionKeys } from '../modules/sessionKeys/getSessionKeys';\n/** @category Extension Development */\nexport { getSignedSessionId } from '../modules/sessionKeys/getSignedSessionId';\n/** @category Extension Development */\nexport type { SessionKeys } from '../modules/sessionKeys/sessionKeys.types';\n/** @category Extension Development */\nexport { CHAINS_INFO_MAP } from '../modules/wallets/constants';\n/** @category Extension Development */\nexport { emitWalletAccountsChangedEvent } from '../modules/wallets/emitWalletAccountsChangedEvent';\n/** @category Extension Development */\nexport { getWalletProviders } from '../modules/wallets/getWalletProviders';\n/** @category Extension Development */\nexport { createBaseNetworkProvider } from '../modules/wallets/networks/createBaseNetworkProvider';\n/** @category Extension Development */\nexport { getNetworkDataForNetworkId } from '../modules/wallets/networks/getNetworkDataForNetworkId';\n/** @category Extension Development */\nexport { getNetworkProviderFromNetworkId } from '../modules/wallets/networks/getNetworkProviderFromNetworkId';\n/** @category Extension Development */\nexport { getNetworkProviders } from '../modules/wallets/networks/getNetworkProviders';\n/** @category Extension Development */\nexport { getLastKnownNetworkRegistry } from '../modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry';\n/** @category Extension Development */\nexport type { LastKnownNetworkRegistry } from '../modules/wallets/networks/lastKnownNetworkRegistry/LastKnownNetworkRegistry.types';\n/** @category Extension Development */\nexport type { BaseNetworkProvider } from '../modules/wallets/networks/networkProvider/networkProvider.types';\n/** @category Extension Development */\nexport {\n getNetworkProviderBuilderRegistry,\n type NetworkProviderBuilder,\n type NetworkProviderBuilderRegistry,\n} from '../modules/wallets/networks/networkProviderBuilderRegistry';\n/** @category Extension Development */\nexport { removeUnverifiedWalletAccount } from '../modules/wallets/unverifiedWalletAccounts/removeUnverifiedWalletAccount';\nexport { setUnverifiedWalletAccounts } from '../modules/wallets/unverifiedWalletAccounts/setUnverifiedWalletAccounts';\n/** @category Extension Development */\nexport { formatSignInMessage } from '../modules/wallets/utils/formatSignInMessage';\n/** @category Extension Development */\nexport { formatWalletAccountId } from '../modules/wallets/utils/formatWalletAccountId';\n/** @category Extension Development */\nexport { formatWalletProviderGroupKey } from '../modules/wallets/utils/formatWalletProviderGroupKey';\n/** @category Extension Development */\nexport { formatWalletProviderKey } from '../modules/wallets/utils/formatWalletProviderKey';\n/** @category Extension Development */\nexport { getAllProvidersFromWindow } from '../modules/wallets/utils/getAllProvidersFromWindow';\n/** @category Extension Development */\nexport { getInjectedProviderFromWindow } from '../modules/wallets/utils/getInjectedProviderFromWindow';\n/** @category Extension Development */\nexport { getVerifiedCredentialForWalletAccount } from '../modules/wallets/utils/getVerifiedCredentialForWalletAccount';\n/** @category Extension Development */\nexport { getWalletProviderFromWalletAccount } from '../modules/wallets/utils/getWalletProviderFromWalletAccount';\n/** @category Extension Development */\nexport { normalizeWalletNameWithChain } from '../modules/wallets/utils/normalizeWalletNameWithChain';\n/** @category Extension Development */\nexport { verifyMessageSignatureOwnership } from '../modules/wallets/verifyMessageSignatureOwnership';\n/** @category Extension Development */\nexport type { BaseWalletAccount } from '../modules/wallets/walletAccount';\n/** @category Extension Development */\nexport type {\n ExecuteCheckoutTransactionParams,\n ExecuteCheckoutTransactionResult,\n TransferAmountParams,\n WalletProvider,\n WalletProviderConnectAddress,\n} from '../modules/wallets/walletProvider';\n/** @category Extension Development */\nexport { getActiveNetworkIdFromLastKnownRegistry } from '../modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry';\n/** @category Extension Development */\nexport { switchActiveNetworkInLastKnownRegistry } from '../modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry';\n/** @category Extension Development */\nexport { createWalletProviderEventEmitter } from '../modules/wallets/walletProvider/events/createWalletProviderEventEmitter';\n/** @category Extension Development */\nexport { splitWalletProviderKey } from '../modules/wallets/walletProvider/splitWalletProviderKey';\n/** @category Extension Development */\nexport {\n getWalletProviderRegistry,\n WalletProviderPriority,\n} from '../modules/wallets/walletProviderRegistry';\n/** @category Extension Development */\nexport type {\n AsyncProcessEntry,\n AsyncProcessStatus,\n AsyncTrack,\n AsyncTrackEmitter,\n} from '../services/asyncTrack/asyncTrack.types';\n/** @category Extension Development */\nexport { createCrossTabBroadcast } from '../services/crossTabBroadcast/createCrossTabBroadcast';\n/** @category Extension Development */\nexport type {\n CrossTabBroadcast,\n CrossTabBroadcastMessage,\n} from '../services/crossTabBroadcast';\n/** @category Extension Development */\nexport { CrossTabBroadcastMessageSchema } from '../services/crossTabBroadcast';\n/** @category Extension Development */\nexport { createLogger } from '../services/logger/createLogger';\n/** @category Extension Development */\nexport type { Logger, LogLevel } from '../services/logger/logger.types';\n/** @category Extension Development */\nexport type { PasskeyService } from '../services/passkey';\n/** @category Extension Development */\nexport {\n createRuntimeServiceAccessKey,\n type RuntimeServices,\n} from '../services/runtimeServices';\n/** @category Extension Development */\nexport {\n createLocalStorageAdapter,\n createStorage,\n createStorageKeySchema,\n type Storage,\n type StorageAdapter,\n type StorageKeySchema,\n} from '../services/storage';\n/** @category Extension Development */\nexport type { ExtendParameters } from '../types/ExtendParameters';\n/** @category Extension Development */\nexport { assertDefined } from '../utils/assertDefined';\n/** @category Extension Development */\nexport { bufferToBase64 } from '../utils/bufferToBase64';\n/** @category Extension Development */\nexport type { DebouncedMutex } from '../utils/debouncedMutex/debouncedMutex.types';\n/** @category Extension Development */\nexport { filterDuplicates } from '../utils/filterDuplicates';\n/** @category Extension Development */\nexport { getBuffer } from '../utils/getBuffer';\n/** @category Extension Development */\nexport { getChainFromVerifiedCredentialChain } from '../utils/getChainFromVerifiedCredentialChain';\n/** @category Extension Development */\nexport { getNonce } from '../utils/getNonce';\n/** @category Extension Development */\nexport { parseAmountToSmallestUnit } from '../utils/parseAmountToSmallestUnit';\n/** @category Extension Development */\nexport type { ObservableState } from '../utils/observable/observable.types';\n/** @category Extension Development */\nexport { createSignInMessageStatement } from '../modules/wallets/utils/getSignInMessage/createSignInMessageStatement';\n/** @category Extension Development */\nexport { subscribeWithSelector } from '../utils/observable/subscribeWithSelector';\n/** @category Extension Development */\nexport { updateWalletProviderKeysForVerifiedCredentials } from '../modules/wallets/walletProvider/walletProviderKeyMap/updateWalletProviderKeysForVerifiedCredentials';\n/** @category Extension Development */\nexport { DYNAMIC_ICONIC_SPRITE_URL } from '../constants';\n/** @category Extension Development */\nexport { createDeferredPromise } from '../utils/deferredPromise';\n/** @category Extension Development */\nexport { getDeviceSigner } from '../modules/deviceRegistration/getDeviceSigner';\n/** @category Extension Development */\nexport { getHeadersForNonceSignedByDeviceSigners } from '../modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners';\n/** @category Extension Development */\nexport { createDeviceSignatureHeadersMiddleware } from '../modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware';\n"],"mappings":"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"}
package/dist/core.esm.js CHANGED
@@ -1,8 +1,8 @@
1
- import { A as version, C as DYNAMIC_SDK_API_VERSION, D as BaseError, E as ClientNotFoundError, O as getCore, _ as getBuffer, a as DYNAMIC_ICONIC_SPRITE_URL, b as ValueMustBeDefinedError, c as CHAINS_INFO_MAP, g as getSessionKeys, h as APIError, k as name, l as createApiClient, s as getChainFromVerifiedCredentialChain, v as isCookieEnabled, w as getDefaultClient, y as assertDefined } from "./InvalidParamError-DQn49mNB.esm.js";
2
- import { A as createStorageKeySchema, C as createDeferredPromise, M as InvalidStorageSet, N as createLocalStorageAdapter, P as subscribeWithSelector, S as CannotTrackError, T as FETCH_PROJECT_SETTINGS_TRACKER_KEY, a as updateWalletProviderKeysForVerifiedCredentials, b as createCrossTabBroadcast, c as createSignInMessageStatement, d as setUnverifiedWalletAccounts, f as createVisit, h as consumeCaptchaToken, i as getNetworksData, j as createStorage, k as p256Keygen, l as formatSignInMessage, m as setCaptchaToken, n as getNetworkProviders, o as verifyMessageSignatureOwnership, p as hasExtension, r as getNetworkProviderBuilderRegistry, s as removeUnverifiedWalletAccount, t as getNetworkProviderFromNetworkId, u as getNonce, v as NoNetworkProvidersError, x as CrossTabBroadcastMessageSchema, y as createLogger } from "./getNetworkProviderFromNetworkId-DMMnYrfG.esm.js";
3
- import { C as InvalidWalletProviderKeyError, S as splitWalletProviderKey, b as formatWalletAccountId, c as getWalletProviders, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, h as createRuntimeServiceAccessKey, m as getWalletProviderRegistry, n as getWalletProviderByKey, p as WalletProviderPriority, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, v as formatWalletProviderKey, w as emitEvent, y as normalizeWalletNameWithChain } from "./getVerifiedCredentialForWalletAccount-DQ7g6O7y.esm.js";
4
- import "./isMfaRequiredForAction-MvVGc7k3.esm.js";
5
- import { n as p256Sign, r as consumeMfaTokenIfRequiredForAction, t as getSignedSessionId } from "./getSignedSessionId-BKKO2mqj.esm.js";
1
+ import { D as isCookieEnabled, E as getBuffer, F as ClientNotFoundError, I as BaseError, L as getCore, M as DYNAMIC_SDK_API_VERSION, N as getDefaultClient, O as assertDefined, R as name, T as getSessionKeys, a as DYNAMIC_ICONIC_SPRITE_URL, c as CHAINS_INFO_MAP, f as createDeviceSignatureHeadersMiddleware, g as createStorageKeySchema, k as ValueMustBeDefinedError, m as getDeviceSigner, p as getHeadersForNonceSignedByDeviceSigners, s as getChainFromVerifiedCredentialChain, u as createApiClient, v as getNonce, w as APIError, z as version } from "./InvalidParamError-Dyk0GfyN.esm.js";
2
+ import { M as InvalidStorageSet, N as createLocalStorageAdapter, O as generateSessionKeys, S as createDeferredPromise, _ as NoNetworkProvidersError, a as updateWalletProviderKeysForVerifiedCredentials, b as CrossTabBroadcastMessageSchema, c as createSignInMessageStatement, d as createVisit, f as hasExtension, i as getNetworksData, j as createStorage, k as subscribeWithSelector, l as formatSignInMessage, m as consumeCaptchaToken, n as getNetworkProviders, o as verifyMessageSignatureOwnership, p as setCaptchaToken, r as getNetworkProviderBuilderRegistry, s as removeUnverifiedWalletAccount, t as getNetworkProviderFromNetworkId, u as setUnverifiedWalletAccounts, v as createLogger, w as FETCH_PROJECT_SETTINGS_TRACKER_KEY, x as CannotTrackError, y as createCrossTabBroadcast } from "./getNetworkProviderFromNetworkId-ySZUpmOr.esm.js";
3
+ import { C as InvalidWalletProviderKeyError, S as splitWalletProviderKey, b as formatWalletAccountId, c as getWalletProviders, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, h as createRuntimeServiceAccessKey, m as getWalletProviderRegistry, n as getWalletProviderByKey, p as WalletProviderPriority, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, v as formatWalletProviderKey, w as emitEvent, y as normalizeWalletNameWithChain } from "./getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js";
4
+ import "./isMfaRequiredForAction-D1sFhYH1.esm.js";
5
+ import { n as consumeMfaTokenIfRequiredForAction, t as getSignedSessionId } from "./getSignedSessionId-BxhxGkA4.esm.js";
6
6
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
7
7
  import * as z from "zod/mini";
8
8
  import EventEmitter from "eventemitter3";
@@ -271,62 +271,26 @@ const bufferToBase64 = (buf) => {
271
271
  const filterDuplicates = (array) => Array.from(new Set(array));
272
272
 
273
273
  //#endregion
274
- //#region src/modules/deviceRegistration/getDeviceSigner/deviceSigningKeys.schema.ts
275
- const deviceSigningKeysSchema = z.object({
276
- privateJwk: z.custom(),
277
- privateKey: z.string(),
278
- publicKey: z.string()
279
- });
280
-
281
- //#endregion
282
- //#region src/modules/deviceRegistration/getDeviceSigner/getOrCreateUserDeviceSigningKeys/getOrCreateUserDeviceSigningKeys.ts
274
+ //#region src/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.ts
283
275
  /**
284
- * On web we want to auto create the device signing keys for each user.
285
- * And the user device signing keys should never be deleted.
276
+ * Converts a human-readable decimal amount string to the smallest unit
277
+ * representation as a bigint, using string-based arithmetic to avoid
278
+ * floating-point precision loss.
279
+ *
280
+ * @example
281
+ * parseAmountToSmallestUnit({ amount: '1.5', decimals: 9 }) // 1500000000n (1.5 SOL in lamports)
282
+ * parseAmountToSmallestUnit({ amount: '1.5', decimals: 8 }) // 150000000n (1.5 BTC in satoshis)
283
+ * parseAmountToSmallestUnit({ amount: '10.5', decimals: 6 }) // 10500000n (10.5 USDC)
284
+ * parseAmountToSmallestUnit({ amount: '0.1', decimals: 9 }) // 100000000n (no float error)
285
+ *
286
+ * @param params.amount - The amount as a decimal string (e.g. "1.5").
287
+ * @param params.decimals - The number of decimal places for the token.
288
+ * @returns The amount in smallest units as a bigint.
286
289
  */
287
- const getOrCreateUserDeviceSigningKeys = async (client) => {
288
- const { storage } = getCore(client);
289
- const user = client.user;
290
- assertDefined(user, "User not found");
291
- const userDeviceSigningKeysStorageKeySchema = createStorageKeySchema({
292
- key: `user_device_signing_keys_${user.id}`,
293
- schema: deviceSigningKeysSchema
294
- });
295
- const deviceSigningKeys = await storage.getItem(userDeviceSigningKeysStorageKeySchema);
296
- if (deviceSigningKeys) return deviceSigningKeys;
297
- const { public: publicKey, private: privateKey, privateJwk } = await p256Keygen();
298
- await storage.setItem(userDeviceSigningKeysStorageKeySchema, {
299
- privateJwk,
300
- privateKey,
301
- publicKey
302
- });
303
- return {
304
- privateJwk,
305
- privateKey,
306
- publicKey
307
- };
308
- };
309
-
310
- //#endregion
311
- //#region src/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.ts
312
- const getDeviceSigner = async (client) => {
313
- const { deviceSigner } = getCore(client);
314
- /**
315
- * If the device signer is available, it should handle the device signing
316
- * This is used for mobile devices with secure enclave.
317
- */
318
- if (deviceSigner) return deviceSigner;
319
- /**
320
- * For web devices we want to auto create one PK per user id.
321
- */
322
- const userDeviceSigningKeys = await getOrCreateUserDeviceSigningKeys(client);
323
- return {
324
- getPublicKey: async () => userDeviceSigningKeys.publicKey,
325
- sign: (payload) => p256Sign({
326
- message: payload,
327
- privateKeyJwk: userDeviceSigningKeys.privateJwk
328
- })
329
- };
290
+ const parseAmountToSmallestUnit = ({ amount, decimals }) => {
291
+ const [whole = "0", fraction = ""] = amount.split(".");
292
+ const paddedFraction = fraction.padEnd(decimals, "0").slice(0, decimals);
293
+ return BigInt(whole + paddedFraction);
330
294
  };
331
295
 
332
296
  //#endregion
@@ -334,5 +298,5 @@ const getDeviceSigner = async (client) => {
334
298
  assertPackageVersion(name, version);
335
299
 
336
300
  //#endregion
337
- export { APIError, CHAINS_INFO_MAP, CannotTrackError, ClientNotFoundError, ClientsDoNotMatchError, CrossTabBroadcastMessageSchema, DYNAMIC_ICONIC_SPRITE_URL, DYNAMIC_SDK_API_VERSION, InvalidStorageSet, InvalidWalletProviderKeyError, MethodNotImplementedError, MultipleClientsFoundError, NoWalletProviderFoundError, ValueMustBeDefinedError, WalletProviderPriority, assertDefined, bufferToBase64, consumeCaptchaToken, consumeMfaTokenIfRequiredForAction, createApiClient, createBaseNetworkProvider, createCrossTabBroadcast, createDeferredPromise, createLocalStorageAdapter, createLogger, createRuntimeServiceAccessKey, createSignInMessageStatement, createStorage, createStorageKeySchema, createVisit, createWalletProviderEventEmitter, emitEvent, emitWalletAccountsChangedEvent, filterDuplicates, formatSignInMessage, formatWalletAccountId, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getAllProvidersFromWindow, getBuffer, getChainFromVerifiedCredentialChain, getCore, getDefaultClient, getDeviceSigner, getInjectedProviderFromWindow, getLastKnownNetworkRegistry, getNetworkDataForNetworkId, getNetworkProviderBuilderRegistry, getNetworkProviderFromNetworkId, getNetworkProviders, getNonce, getSessionKeys, getSignedSessionId, getVerifiedCredentialForWalletAccount, getWalletProviderFromWalletAccount, getWalletProviderRegistry, getWalletProviders, hasExtension, isCookieEnabled, normalizeWalletNameWithChain, registerExtension, removeUnverifiedWalletAccount, setCaptchaToken, setUnverifiedWalletAccounts, splitWalletProviderKey, subscribeWithSelector, switchActiveNetworkInLastKnownRegistry, updateAuthFromVerifyResponse, updateWalletProviderKeysForVerifiedCredentials, verifyMessageSignatureOwnership, waitForProjectSettings };
301
+ export { APIError, CHAINS_INFO_MAP, CannotTrackError, ClientNotFoundError, ClientsDoNotMatchError, CrossTabBroadcastMessageSchema, DYNAMIC_ICONIC_SPRITE_URL, DYNAMIC_SDK_API_VERSION, InvalidStorageSet, InvalidWalletProviderKeyError, MethodNotImplementedError, MultipleClientsFoundError, NoWalletProviderFoundError, ValueMustBeDefinedError, WalletProviderPriority, assertDefined, bufferToBase64, consumeCaptchaToken, consumeMfaTokenIfRequiredForAction, createApiClient, createBaseNetworkProvider, createCrossTabBroadcast, createDeferredPromise, createDeviceSignatureHeadersMiddleware, createLocalStorageAdapter, createLogger, createRuntimeServiceAccessKey, createSignInMessageStatement, createStorage, createStorageKeySchema, createVisit, createWalletProviderEventEmitter, emitEvent, emitWalletAccountsChangedEvent, filterDuplicates, formatSignInMessage, formatWalletAccountId, formatWalletProviderGroupKey, formatWalletProviderKey, generateSessionKeys, getActiveNetworkIdFromLastKnownRegistry, getAllProvidersFromWindow, getBuffer, getChainFromVerifiedCredentialChain, getCore, getDefaultClient, getDeviceSigner, getHeadersForNonceSignedByDeviceSigners, getInjectedProviderFromWindow, getLastKnownNetworkRegistry, getNetworkDataForNetworkId, getNetworkProviderBuilderRegistry, getNetworkProviderFromNetworkId, getNetworkProviders, getNonce, getSessionKeys, getSignedSessionId, getVerifiedCredentialForWalletAccount, getWalletProviderFromWalletAccount, getWalletProviderRegistry, getWalletProviders, hasExtension, isCookieEnabled, normalizeWalletNameWithChain, parseAmountToSmallestUnit, registerExtension, removeUnverifiedWalletAccount, setCaptchaToken, setUnverifiedWalletAccounts, splitWalletProviderKey, subscribeWithSelector, switchActiveNetworkInLastKnownRegistry, updateAuthFromVerifyResponse, updateWalletProviderKeysForVerifiedCredentials, verifyMessageSignatureOwnership, waitForProjectSettings };
338
302
  //# sourceMappingURL=core.esm.js.map