@dynamic-labs-sdk/client 1.31.1 → 1.31.2

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 (149) hide show
  1. package/dist/{apiClient-BZfdx9fH.native.esm.js → apiClient-d2qJyIvx.native.esm.js} +2 -2
  2. package/dist/{apiClient-BZfdx9fH.native.esm.js.map → apiClient-d2qJyIvx.native.esm.js.map} +1 -1
  3. package/dist/core.cjs +77 -5
  4. package/dist/core.cjs.map +1 -1
  5. package/dist/core.esm.js +78 -8
  6. package/dist/core.esm.js.map +1 -1
  7. package/dist/core.native.esm.js +76 -6
  8. package/dist/core.native.esm.js.map +1 -1
  9. package/dist/errors/AmbiguousWalletChainError.d.ts +32 -0
  10. package/dist/errors/AmbiguousWalletChainError.d.ts.map +1 -0
  11. package/dist/errors/ConnectionUriHandlerMissingError.d.ts +37 -0
  12. package/dist/errors/ConnectionUriHandlerMissingError.d.ts.map +1 -0
  13. package/dist/errors/NoConnectionOptionAvailableError.d.ts +39 -0
  14. package/dist/errors/NoConnectionOptionAvailableError.d.ts.map +1 -0
  15. package/dist/errors/WalletOptionNotFoundError.d.ts +30 -0
  16. package/dist/errors/WalletOptionNotFoundError.d.ts.map +1 -0
  17. package/dist/exports/core.d.ts +4 -0
  18. package/dist/exports/core.d.ts.map +1 -1
  19. package/dist/exports/index.d.ts +7 -1
  20. package/dist/exports/index.d.ts.map +1 -1
  21. package/dist/{getNetworkProviderFromNetworkId-CbMpiSub.esm.js → getNetworkProviderFromNetworkId-D9nx6Od5.esm.js} +7 -7
  22. package/dist/getNetworkProviderFromNetworkId-D9nx6Od5.esm.js.map +1 -0
  23. package/dist/{getNetworkProviderFromNetworkId-DRA4M5Ab.native.esm.js → getNetworkProviderFromNetworkId-DF9kPibD.native.esm.js} +3 -3
  24. package/dist/{getNetworkProviderFromNetworkId-DRA4M5Ab.native.esm.js.map → getNetworkProviderFromNetworkId-DF9kPibD.native.esm.js.map} +1 -1
  25. package/dist/{getNetworkProviderFromNetworkId-DNIuJp20.cjs → getNetworkProviderFromNetworkId-DueBnAl6.cjs} +2 -2
  26. package/dist/{getNetworkProviderFromNetworkId-DNIuJp20.cjs.map → getNetworkProviderFromNetworkId-DueBnAl6.cjs.map} +1 -1
  27. package/dist/{getSignedSessionId-DKKSCpj9.native.esm.js → getSignedSessionId-5q4uyZsv.native.esm.js} +34 -4
  28. package/dist/getSignedSessionId-5q4uyZsv.native.esm.js.map +1 -0
  29. package/dist/{getSignedSessionId--wpV_VKs.cjs → getSignedSessionId-B5oxmSTs.cjs} +39 -3
  30. package/dist/getSignedSessionId-B5oxmSTs.cjs.map +1 -0
  31. package/dist/{getSignedSessionId-DHn6yhGX.esm.js → getSignedSessionId-BKfQycNo.esm.js} +34 -4
  32. package/dist/getSignedSessionId-BKfQycNo.esm.js.map +1 -0
  33. package/dist/{getVerifiedCredentialForWalletAccount-B5LUGiDP.cjs → getVerifiedCredentialForWalletAccount-Bx0HlvfW.cjs} +2 -2
  34. package/dist/{getVerifiedCredentialForWalletAccount-B5LUGiDP.cjs.map → getVerifiedCredentialForWalletAccount-Bx0HlvfW.cjs.map} +1 -1
  35. package/dist/{getVerifiedCredentialForWalletAccount-C_GcjgC8.esm.js → getVerifiedCredentialForWalletAccount-_3MExyld.esm.js} +2 -2
  36. package/dist/{getVerifiedCredentialForWalletAccount-C_GcjgC8.esm.js.map → getVerifiedCredentialForWalletAccount-_3MExyld.esm.js.map} +1 -1
  37. package/dist/index.cjs +398 -27
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.esm.js +396 -30
  40. package/dist/index.esm.js.map +1 -1
  41. package/dist/index.native.esm.js +352 -28
  42. package/dist/index.native.esm.js.map +1 -1
  43. package/dist/{isMfaRequiredForAction-D1a1Nudo.esm.js → isMfaRequiredForAction-BDmY2_Sj.esm.js} +2 -2
  44. package/dist/{isMfaRequiredForAction-D1a1Nudo.esm.js.map → isMfaRequiredForAction-BDmY2_Sj.esm.js.map} +1 -1
  45. package/dist/{isMfaRequiredForAction-CC7bjhqy.native.esm.js → isMfaRequiredForAction-BrRCSvEX.native.esm.js} +2 -2
  46. package/dist/{isMfaRequiredForAction-CC7bjhqy.native.esm.js.map → isMfaRequiredForAction-BrRCSvEX.native.esm.js.map} +1 -1
  47. package/dist/{isMfaRequiredForAction-YjJLLFFs.cjs → isMfaRequiredForAction-DnKzPDZk.cjs} +2 -2
  48. package/dist/{isMfaRequiredForAction-YjJLLFFs.cjs.map → isMfaRequiredForAction-DnKzPDZk.cjs.map} +1 -1
  49. package/dist/{isUserOnboardingComplete-C2ZuLDT9.cjs → isUserOnboardingComplete-7GzNYU2g.cjs} +3 -3
  50. package/dist/{isUserOnboardingComplete-C2ZuLDT9.cjs.map → isUserOnboardingComplete-7GzNYU2g.cjs.map} +1 -1
  51. package/dist/{isUserOnboardingComplete-BIjk67vX.native.esm.js → isUserOnboardingComplete-BfMMBtkF.native.esm.js} +3 -3
  52. package/dist/{isUserOnboardingComplete-BIjk67vX.native.esm.js.map → isUserOnboardingComplete-BfMMBtkF.native.esm.js.map} +1 -1
  53. package/dist/{isUserOnboardingComplete-C4bE5xqM.esm.js → isUserOnboardingComplete-D1-QluDm.esm.js} +3 -3
  54. package/dist/{isUserOnboardingComplete-C4bE5xqM.esm.js.map → isUserOnboardingComplete-D1-QluDm.esm.js.map} +1 -1
  55. package/dist/{logoutWithReason-BcWQGREO.native.esm.js → logoutWithReason-3UICYir7.native.esm.js} +2 -2
  56. package/dist/{logoutWithReason-BcWQGREO.native.esm.js.map → logoutWithReason-3UICYir7.native.esm.js.map} +1 -1
  57. package/dist/{logoutWithReason-BqsgA8gI.esm.js → logoutWithReason-CHyuBHdx.esm.js} +2 -2
  58. package/dist/{logoutWithReason-BqsgA8gI.esm.js.map → logoutWithReason-CHyuBHdx.esm.js.map} +1 -1
  59. package/dist/{logoutWithReason-D6ruPOvJ.cjs → logoutWithReason-C_T7KddM.cjs} +2 -2
  60. package/dist/{logoutWithReason-D6ruPOvJ.cjs.map → logoutWithReason-C_T7KddM.cjs.map} +1 -1
  61. package/dist/{migrateFromFireblocks-zazAx6WV.esm.js → migrateFromFireblocks-BMO3u6rO.esm.js} +2 -2
  62. package/dist/{migrateFromFireblocks-zazAx6WV.esm.js.map → migrateFromFireblocks-BMO3u6rO.esm.js.map} +1 -1
  63. package/dist/{migrateFromFireblocks-CCNTDCmW.cjs → migrateFromFireblocks-C9Kuke5V.cjs} +2 -2
  64. package/dist/{migrateFromFireblocks-CCNTDCmW.cjs.map → migrateFromFireblocks-C9Kuke5V.cjs.map} +1 -1
  65. package/dist/{migrateFromFireblocks-BxPgqhbu.native.esm.js → migrateFromFireblocks-DJt9bktR.native.esm.js} +2 -2
  66. package/dist/{migrateFromFireblocks-BxPgqhbu.native.esm.js.map → migrateFromFireblocks-DJt9bktR.native.esm.js.map} +1 -1
  67. package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.d.ts +7 -1
  68. package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.d.ts.map +1 -1
  69. package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.types.d.ts +4 -0
  70. package/dist/modules/auth/social/oauth/clearSocialRedirectParams/clearSocialRedirectParams.types.d.ts.map +1 -0
  71. package/dist/modules/auth/social/oauth/completeSocialRedirect/completeSocialRedirect.d.ts +9 -0
  72. package/dist/modules/auth/social/oauth/completeSocialRedirect/completeSocialRedirect.d.ts.map +1 -1
  73. package/dist/modules/walletOptionsCatalogue/walletOptionsCatalogue.types.d.ts +2 -1
  74. package/dist/modules/walletOptionsCatalogue/walletOptionsCatalogue.types.d.ts.map +1 -1
  75. package/dist/modules/wallets/connectWallet.types.d.ts +35 -0
  76. package/dist/modules/wallets/connectWallet.types.d.ts.map +1 -0
  77. package/dist/modules/wallets/connectWithUriConnectionOption/connectWithUriConnectionOption.d.ts +52 -0
  78. package/dist/modules/wallets/connectWithUriConnectionOption/connectWithUriConnectionOption.d.ts.map +1 -0
  79. package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/getConnectionUriDeeplink.d.ts +34 -0
  80. package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/getConnectionUriDeeplink.d.ts.map +1 -0
  81. package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/index.d.ts +2 -0
  82. package/dist/modules/wallets/connectWithUriConnectionOption/getConnectionUriDeeplink/index.d.ts.map +1 -0
  83. package/dist/modules/wallets/connectWithUriConnectionOption/index.d.ts +2 -0
  84. package/dist/modules/wallets/connectWithUriConnectionOption/index.d.ts.map +1 -0
  85. package/dist/modules/wallets/redirectToInAppBrowser/index.d.ts +2 -0
  86. package/dist/modules/wallets/redirectToInAppBrowser/index.d.ts.map +1 -0
  87. package/dist/modules/wallets/redirectToInAppBrowser/redirectToInAppBrowser.d.ts +60 -0
  88. package/dist/modules/wallets/redirectToInAppBrowser/redirectToInAppBrowser.d.ts.map +1 -0
  89. package/dist/modules/wallets/resolveWalletConnectionOption/index.d.ts +3 -0
  90. package/dist/modules/wallets/resolveWalletConnectionOption/index.d.ts.map +1 -0
  91. package/dist/modules/wallets/resolveWalletConnectionOption/resolveWalletConnectionOption.d.ts +36 -0
  92. package/dist/modules/wallets/resolveWalletConnectionOption/resolveWalletConnectionOption.d.ts.map +1 -0
  93. package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.d.ts +22 -0
  94. package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.d.ts.map +1 -0
  95. package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/index.d.ts +2 -0
  96. package/dist/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/index.d.ts.map +1 -0
  97. package/dist/modules/wallets/uriConnectionStarterRegistry/events.d.ts +18 -0
  98. package/dist/modules/wallets/uriConnectionStarterRegistry/events.d.ts.map +1 -0
  99. package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.d.ts +22 -0
  100. package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.d.ts.map +1 -0
  101. package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/index.d.ts +2 -0
  102. package/dist/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/index.d.ts.map +1 -0
  103. package/dist/modules/wallets/uriConnectionStarterRegistry/index.d.ts +3 -0
  104. package/dist/modules/wallets/uriConnectionStarterRegistry/index.d.ts.map +1 -0
  105. package/dist/modules/wallets/uriConnectionStarterRegistry/uriConnectionStarterRegistry.types.d.ts +32 -0
  106. package/dist/modules/wallets/uriConnectionStarterRegistry/uriConnectionStarterRegistry.types.d.ts.map +1 -0
  107. package/dist/modules/wallets/walletProviderUriConnection.types.d.ts +19 -0
  108. package/dist/modules/wallets/walletProviderUriConnection.types.d.ts.map +1 -1
  109. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  110. package/dist/utils/buildInAppBrowserUrl/buildInAppBrowserUrl.d.ts +32 -0
  111. package/dist/utils/buildInAppBrowserUrl/buildInAppBrowserUrl.d.ts.map +1 -0
  112. package/dist/utils/buildInAppBrowserUrl/index.d.ts +2 -0
  113. package/dist/utils/buildInAppBrowserUrl/index.d.ts.map +1 -0
  114. package/dist/utils/getPreferredWalletDeepLink/getPreferredWalletDeepLink.d.ts +33 -0
  115. package/dist/utils/getPreferredWalletDeepLink/getPreferredWalletDeepLink.d.ts.map +1 -0
  116. package/dist/utils/getPreferredWalletDeepLink/index.d.ts +2 -0
  117. package/dist/utils/getPreferredWalletDeepLink/index.d.ts.map +1 -0
  118. package/dist/utils/isAndroid/index.d.ts +2 -0
  119. package/dist/utils/isAndroid/index.d.ts.map +1 -0
  120. package/dist/utils/isAndroid/isAndroid.d.ts +20 -0
  121. package/dist/utils/isAndroid/isAndroid.d.ts.map +1 -0
  122. package/dist/utils/isIOS/index.d.ts +2 -0
  123. package/dist/utils/isIOS/index.d.ts.map +1 -0
  124. package/dist/utils/isIOS/isIOS.d.ts +23 -0
  125. package/dist/utils/isIOS/isIOS.d.ts.map +1 -0
  126. package/dist/utils/isMobile/isMobile.d.ts +17 -36
  127. package/dist/utils/isMobile/isMobile.d.ts.map +1 -1
  128. package/dist/utils/userAgentChecks/userAgentChecks.d.ts +35 -0
  129. package/dist/utils/userAgentChecks/userAgentChecks.d.ts.map +1 -0
  130. package/dist/{waas-DidjjQjB.native.esm.js → waas-9QajYGeK.native.esm.js} +4 -4
  131. package/dist/{waas-DidjjQjB.native.esm.js.map → waas-9QajYGeK.native.esm.js.map} +1 -1
  132. package/dist/{waas-ZWlJHeXc.cjs → waas-Bxsd0-HG.cjs} +4 -4
  133. package/dist/{waas-ZWlJHeXc.cjs.map → waas-Bxsd0-HG.cjs.map} +1 -1
  134. package/dist/{waas-C2PbR02F.esm.js → waas-T_dHXyI9.esm.js} +4 -4
  135. package/dist/{waas-C2PbR02F.esm.js.map → waas-T_dHXyI9.esm.js.map} +1 -1
  136. package/dist/waas.cjs +4 -4
  137. package/dist/waas.esm.js +4 -4
  138. package/dist/waas.native.esm.js +4 -4
  139. package/dist/waasCore.cjs +10 -40
  140. package/dist/waasCore.cjs.map +1 -1
  141. package/dist/waasCore.esm.js +5 -35
  142. package/dist/waasCore.esm.js.map +1 -1
  143. package/dist/waasCore.native.esm.js +5 -35
  144. package/dist/waasCore.native.esm.js.map +1 -1
  145. package/package.json +2 -2
  146. package/dist/getNetworkProviderFromNetworkId-CbMpiSub.esm.js.map +0 -1
  147. package/dist/getSignedSessionId--wpV_VKs.cjs.map +0 -1
  148. package/dist/getSignedSessionId-DHn6yhGX.esm.js.map +0 -1
  149. package/dist/getSignedSessionId-DKKSCpj9.native.esm.js.map +0 -1
package/dist/core.cjs CHANGED
@@ -1,8 +1,8 @@
1
- const require_logoutWithReason = require('./logoutWithReason-D6ruPOvJ.cjs');
2
- const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-DNIuJp20.cjs');
3
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-B5LUGiDP.cjs');
4
- require('./isMfaRequiredForAction-YjJLLFFs.cjs');
5
- const require_getSignedSessionId = require('./getSignedSessionId--wpV_VKs.cjs');
1
+ const require_logoutWithReason = require('./logoutWithReason-C_T7KddM.cjs');
2
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-DueBnAl6.cjs');
3
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-Bx0HlvfW.cjs');
4
+ require('./isMfaRequiredForAction-DnKzPDZk.cjs');
5
+ const require_getSignedSessionId = require('./getSignedSessionId-B5oxmSTs.cjs');
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
8
  zod_mini = require_logoutWithReason.__toESM(zod_mini);
@@ -151,6 +151,76 @@ const createLastKnownNetworkRegistry = (client) => {
151
151
  //#region src/modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry.ts
152
152
  const getLastKnownNetworkRegistry = require_logoutWithReason.createRuntimeServiceAccessKey("last-known-network-registry", (client) => createLastKnownNetworkRegistry(client));
153
153
 
154
+ //#endregion
155
+ //#region src/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.ts
156
+ const formatRegistryKey = ({ chain, type }) => `${chain}:${type}`;
157
+ /**
158
+ * Creates the client-scoped registry of URI connection starters, holding one
159
+ * starter per chain and URI protocol pair.
160
+ *
161
+ * Access it through `getUriConnectionStarterRegistry` rather than calling this
162
+ * directly, so a single instance is shared per client.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * const registry = createUriConnectionStarterRegistry(client);
167
+ * ```
168
+ *
169
+ * @param client - The Dynamic client instance the registry belongs to.
170
+ * @returns The registry of URI connection starters for the given client.
171
+ * @see getUriConnectionStarterRegistry
172
+ * @see UriConnectionStarter
173
+ * @notInstrumented
174
+ */
175
+ const createUriConnectionStarterRegistry = (client) => {
176
+ const registry = /* @__PURE__ */ new Map();
177
+ return {
178
+ get: ({ chain, type }) => registry.get(formatRegistryKey({
179
+ chain,
180
+ type
181
+ })),
182
+ getAll: () => Array.from(registry.values()),
183
+ register: (uriConnectionStarter) => {
184
+ const { chain, type } = uriConnectionStarter;
185
+ registry.set(formatRegistryKey({
186
+ chain,
187
+ type
188
+ }), uriConnectionStarter);
189
+ require_logoutWithReason.emitEvent({
190
+ args: {
191
+ chain,
192
+ type
193
+ },
194
+ event: "uriConnectionStarterRegistered"
195
+ }, client);
196
+ }
197
+ };
198
+ };
199
+
200
+ //#endregion
201
+ //#region src/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.ts
202
+ /**
203
+ * Returns the client's registry of URI connection starters, one per chain and
204
+ * URI protocol pair, creating it on first access.
205
+ *
206
+ * Chain extensions register their starters here so higher level connection
207
+ * APIs can mint a pairing URI without depending on the chain packages.
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * const { uri, approval } = await getUriConnectionStarterRegistry(client)
212
+ * .get({ chain: 'EVM', type: 'walletConnect' })
213
+ * ?.start({});
214
+ * ```
215
+ *
216
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
217
+ * @returns The registry of URI connection starters for the given client.
218
+ * @see UriConnectionStarter
219
+ * @see UriConnectionType
220
+ * @notInstrumented
221
+ */
222
+ const getUriConnectionStarterRegistry = require_logoutWithReason.createRuntimeServiceAccessKey("uriConnectionStarterRegistry", createUriConnectionStarterRegistry);
223
+
154
224
  //#endregion
155
225
  //#region src/modules/wallets/utils/formatWalletProviderGroupKey/formatWalletProviderGroupKey.ts
156
226
  /** @notInstrumented */
@@ -525,6 +595,7 @@ exports.formatWalletAccountId = require_logoutWithReason.formatWalletAccountId;
525
595
  exports.formatWalletProviderGroupKey = formatWalletProviderGroupKey;
526
596
  exports.formatWalletProviderKey = require_logoutWithReason.formatWalletProviderKey;
527
597
  exports.generateSessionKeys = require_logoutWithReason.generateSessionKeys;
598
+ exports.getActionAuthorizationTokens = require_getSignedSessionId.getActionAuthorizationTokens;
528
599
  exports.getActiveNetworkIdFromLastKnownRegistry = getActiveNetworkIdFromLastKnownRegistry;
529
600
  exports.getAllProvidersFromWindow = getAllProvidersFromWindow;
530
601
  exports.getAppMetadata = require_getNetworkProviderFromNetworkId.getAppMetadata;
@@ -548,6 +619,7 @@ exports.getPlatform = require_logoutWithReason.getPlatform;
548
619
  exports.getReactNativeManifest = getReactNativeManifest;
549
620
  exports.getSessionKeys = require_logoutWithReason.getSessionKeys;
550
621
  exports.getSignedSessionId = require_getSignedSessionId.getSignedSessionId;
622
+ exports.getUriConnectionStarterRegistry = getUriConnectionStarterRegistry;
551
623
  exports.getVerifiedCredentialForWalletAccount = require_getVerifiedCredentialForWalletAccount.getVerifiedCredentialForWalletAccount;
552
624
  exports.getWalletProviderFromWalletAccount = require_logoutWithReason.getWalletProviderFromWalletAccount;
553
625
  exports.getWalletProviderRegistry = require_logoutWithReason.getWalletProviderRegistry;
package/dist/core.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","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","BaseError","packageName","packageVersion"],"sources":["../src/errors/ArrayMustNotBeEmptyError.ts","../src/errors/ClientsDoNotMatchError.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/services/realtime/createRealtimeChannelSchema/createRealtimeChannelSchema.ts","../src/utils/assertNonEmptyArray/assertNonEmptyArray.ts","../src/utils/bufferToBase64/bufferToBase64.ts","../src/utils/createSequenceQueue/createSequenceQueue.ts","../src/utils/filterDuplicates/filterDuplicates.ts","../src/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.ts","../src/errors/ReactNativeOnlyError.ts","../src/services/nativeManifest/getReactNativeManifest/getReactNativeManifest.ts","../src/utils/getNativeLinkScheme/getNativeLinkScheme.ts","../src/modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection.ts","../src/exports/core.ts"],"sourcesContent":["import { BaseError } from './base';\n\nexport class ArrayMustNotBeEmptyError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param\n constructor(message: string) {\n super({\n cause: null,\n code: 'array_must_not_be_empty_error',\n docsUrl: null,\n name: 'ArrayMustNotBeEmpty',\n shortMessage: message,\n });\n }\n}\n","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 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 * @notInstrumented\n */\nexport const registerExtension = (\n { extensionKey }: RegisterExtensionParams,\n client: DynamicClient\n): void => {\n const core = getCore(client);\n\n core.extensions.add(extensionKey);\n};\n","import type { ProjectSettings } from '@dynamic-labs/sdk-api-core';\n\nimport { 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\n/** @notInstrumented */\nexport const waitForProjectSettings = async (\n client: DynamicClient\n): Promise<ProjectSettings> => {\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 name: networkData.name,\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\n/** @notInstrumented */\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 * @notInstrumented\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","/** @notInstrumented */\nexport 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 * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 */\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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 * @notInstrumented\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\nexport type WalletProviderEventEmitter = {\n cleanupEventEmitter: () => void;\n getEventEmitter: () => WalletProvider['events'];\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 * @notInstrumented\n */\nexport const createWalletProviderEventEmitter = <R = void>({\n removeEventListeners,\n setupEventListeners,\n supportedEvents = ['accountsChanged', 'disconnected', 'networkChanged'],\n}: CreateWalletProviderEventEmitterParams<R>): WalletProviderEventEmitter => {\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 type * as z from 'zod/mini';\n\nimport type { RealtimeChannelSchema } from '../realtime.types';\n\n/**\n * Defines a typed schema for a realtime channel — analogous to `createStorageKeySchema`\n * for storage. Pairs a channel name with a Zod schema that validates the shape of\n * messages sent and received on that channel. Pass the result to the realtime service's\n * `subscribe` / `unsubscribe` / `publish` methods to get end-to-end type safety.\n * @notInstrumented\n */\nexport const createRealtimeChannelSchema = <T>(params: {\n channel: string;\n schema: z.ZodMiniType<T>;\n}): RealtimeChannelSchema<T> => params;\n","/* eslint-disable func-style -- javascript requires this to be a function */\n\nimport { ArrayMustNotBeEmptyError } from './../../errors/ArrayMustNotBeEmptyError';\n\n/**\n * Asserts that a value is a non-empty array, throwing an error if it is null,\n * undefined, or has zero elements. This function acts as a type guard,\n * narrowing the type to a tuple of at least one element.\n *\n * @template T - The element type of the array being checked\n * @param value - The array (or possibly null/undefined value) to check\n * @param message - The error message to throw if the value is empty or missing\n * @throws Throws an error with the provided message if value is null, undefined, or empty\n * @example\n * ```typescript\n * const maybeNetworks: Network[] | undefined = getNetworks();\n * assertNonEmptyArray(maybeNetworks, 'At least one network is required');\n * // maybeNetworks is now typed as [Network, ...Network[]]\n * const first = maybeNetworks[0]; // safely accessible without `| undefined`\n * ```\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport function assertNonEmptyArray<T>(\n value: T[] | null | undefined,\n message: string\n): asserts value is [T, ...T[]] {\n if (!value || value.length === 0) {\n throw new ArrayMustNotBeEmptyError(message);\n }\n}\n","import { getBuffer } from \"../getBuffer\";\n\n/** @notInstrumented */\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","import type { DynamicClient } from '../../client/types';\n\n/** The queue function `createSequenceQueue` returns. */\nexport type SequenceQueue = <T>(\n callback: () => Promise<T>,\n client: DynamicClient\n) => Promise<T>;\n\n/**\n * Creates a queue function that runs every callback passed to it **one at a\n * time, in FIFO order**, relative to every other call made through that same\n * queue function for the same client:\n *\n * - Every queued call runs — this is NOT last-wins/coalescing (see\n * `debouncedMutex` for that behavior instead).\n * - A callback that rejects does not stall the queue: the next queued\n * callback still runs.\n * - Each caller receives its own callback's resolution or rejection,\n * independent of other callers' outcomes.\n * - Different clients never block each other, even through the same queue\n * function.\n *\n * Useful for serializing read-modify-write cycles against a single piece of\n * storage/state so concurrent callers can't race and silently lose an update.\n *\n * @example\n * Without a queue, two concurrent callers incrementing a\n * persisted counter can both read `0`, both write `1`, and lose an update:\n * ```ts\n * const incrementStoredCount = async (client: DynamicClient) => {\n * const current = await storage.get('count'); // both callers read 0\n * await storage.set('count', current + 1); // both callers write 1\n * };\n *\n * await Promise.all([incrementStoredCount(client), incrementStoredCount(client)]);\n * // storage.get('count') === 1, but two increments were requested\n * ```\n *\n * Wrapping the same read-modify-write cycle in a queue forces the second\n * call to wait for the first to finish, so it reads the value the first call\n * just wrote:\n * ```ts\n * const queueCountWrite = createSequenceQueue();\n *\n * const incrementStoredCount = (client: DynamicClient) =>\n * queueCountWrite(async () => {\n * const current = await storage.get('count');\n * await storage.set('count', current + 1);\n * }, client);\n *\n * await Promise.all([incrementStoredCount(client), incrementStoredCount(client)]);\n * // storage.get('count') === 2 — both increments are applied\n * ```\n * @notInstrumented\n */\nexport const createSequenceQueue = (): SequenceQueue => {\n // Tracks the promise of the most recently enqueued callback per client, so\n // each new call can chain onto it and run only once its predecessor settles.\n const queueTails = new WeakMap<DynamicClient, Promise<unknown>>();\n\n // The callback is intentionally a bare positional param (not wrapped in an\n // object) to match the ergonomics of a queue function you call directly,\n // like `setTimeout`/`Promise.then` — wrapping it would obscure the call site.\n // eslint-disable-next-line custom-rules/require-single-object-param\n return <T>(callback: () => Promise<T>, client: DynamicClient): Promise<T> => {\n const previousTail = queueTails.get(client) ?? Promise.resolve();\n\n const result = previousTail.then(callback, callback);\n\n queueTails.set(client, result.catch(() => undefined));\n\n return result;\n };\n};\n","/**\n * Filter duplicates from an array by equality.\n * Uses a Set internally.\n * @notInstrumented\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 * @notInstrumented\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 { BaseError } from './base';\n\ntype ReactNativeOnlyErrorParams = {\n apiName: string;\n};\n\nexport class ReactNativeOnlyError extends BaseError {\n constructor({ apiName }: ReactNativeOnlyErrorParams) {\n super({\n cause: null,\n code: 'react_native_only_error',\n docsUrl: null,\n name: 'ReactNativeOnlyError',\n shortMessage: `${apiName} is only available in React Native environments.`,\n });\n }\n}\n","import { ReactNativeOnlyError } from '../../../errors/ReactNativeOnlyError';\nimport type { ReactNativeManifest } from '../nativeManifest.types';\n\n/**\n * Returns the React Native manifest containing native SDK metadata.\n *\n * This function is only available in React Native environments.\n * On web, it throws a `ReactNativeOnlyError`.\n *\n * @notInstrumented\n */\nexport const getReactNativeManifest = (): ReactNativeManifest => {\n throw new ReactNativeOnlyError({ apiName: 'getReactNativeManifest' });\n};\n","const SCHEME_SEPARATOR = '://';\n\n/** Parameters for {@link getNativeLinkScheme}. */\nexport type GetNativeLinkSchemeParams = {\n /** A native link, e.g. `myapp://wallet/connect`. */\n nativeLink: string | undefined;\n};\n\n/**\n * Reduces a native link to just its URL scheme (e.g.\n * `myapp://wallet/connect` -> `myapp://`), dropping anything after the scheme\n * separator. A native link may be configured with an in-app route, but a\n * consumer that only needs to deep link back into the app (rather than a\n * specific route) should use the scheme alone. Links without a scheme\n * separator are returned unchanged (they cannot carry a route), and\n * `undefined` passes through.\n *\n * @notInstrumented\n */\nexport const getNativeLinkScheme = ({\n nativeLink,\n}: GetNativeLinkSchemeParams): string | undefined => {\n if (nativeLink === undefined) {\n return undefined;\n }\n\n const schemeSeparatorIndex = nativeLink.indexOf(SCHEME_SEPARATOR);\n\n if (schemeSeparatorIndex === -1) {\n return nativeLink;\n }\n\n return nativeLink.slice(0, schemeSeparatorIndex + SCHEME_SEPARATOR.length);\n};\n","import { ReactNativeOnlyError } from '../../../errors/ReactNativeOnlyError';\nimport type { SetScreenshotProtectionParams } from './setScreenshotProtection.types';\n\n/**\n * Web/desktop counterpart of the React Native `setScreenshotProtection` (see\n * `setScreenshotProtection.native.ts`).\n *\n * Screenshot/recording protection is a native window-level capability with no\n * web equivalent. Rather than silently no-op (which would let a desktop caller\n * believe content is protected when it is not), this throws a\n * `ReactNativeOnlyError` so an accidental web/desktop call is loud — the API is\n * intentionally React-Native-only.\n *\n * @notInstrumented\n */\nexport const setScreenshotProtection = ({\n // Destructured to keep an identical signature to the native implementation\n // for the platform-type parity check; unused because this always throws.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n enabled,\n}: SetScreenshotProtectionParams): void => {\n throw new ReactNativeOnlyError({ apiName: 'setScreenshotProtection' });\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 { createAppForegroundSubscriber } from '../services/appForeground/createAppForegroundSubscriber';\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 { ArrayMustNotBeEmptyError } from '../errors/ArrayMustNotBeEmptyError';\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 { logoutWithReason } from '../modules/auth/logoutWithReason';\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 { getElevatedAccessToken } from '../modules/auth/getElevatedAccessToken';\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 { reconcileWalletAccountsAgainstClient } from '../modules/wallets/reconcileWalletAccountsAgainstClient';\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 ConfirmTransactionParams,\n ExecuteSwapTransactionParams,\n ExecuteSwapTransactionResult,\n ExecuteYieldTransactionParams,\n ExecuteYieldTransactionResult,\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';\nexport type { WalletProviderEventEmitter } 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 { createRealtimeChannelSchema } from '../services/realtime/createRealtimeChannelSchema';\n/** @category Extension Development */\nexport { createRealtimeService } from '../services/realtime/createRealtimeService';\n/** @category Extension Development */\nexport type {\n RealtimeChannelSchema,\n RealtimeConnectionState,\n RealtimeService,\n} from '../services/realtime';\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 { createKeychainService } from '../services/keychain';\n/** @category Extension Development */\nexport type { KeychainService } from '../services/keychain';\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 StorageAdapterOptions,\n type StorageKeySchema,\n type StorageKeySchemaConfig,\n type StorageTier,\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 { assertSafeNavigationUrl } from '../utils/assertSafeNavigationUrl';\n/** @category Extension Development */\nexport { UnsafeNavigationUrlError } from '../errors/UnsafeNavigationUrlError';\n/** @category Extension Development */\nexport { assertNonEmptyArray } from '../utils/assertNonEmptyArray';\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 { createSequenceQueue } from '../utils/createSequenceQueue';\n/** @category Extension Development */\nexport type { SequenceQueue } from '../utils/createSequenceQueue';\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 { getKeychainIndexedDBName } from '../utils/getKeychainIndexedDBName';\n/** @category Extension Development */\nexport { getNonce } from '../utils/getNonce';\n/** @category Extension Development */\nexport { getPlatform } from '../utils/getPlatform/getPlatform';\n/** @category Extension Development */\nexport type { SdkPlatform } from '../utils/getPlatform/getPlatform.types';\n/** @category Extension Development */\nexport { isServerSideRendering } from '../utils/isServerSideRendering';\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/** @category Extension Development */\nexport { randomString } from '../utils/randomString';\n/** @category Extension Development */\nexport { getReactNativeManifest } from '../services/nativeManifest/getReactNativeManifest';\n/** @category Extension Development */\nexport type { ReactNativeManifest } from '../services/nativeManifest/nativeManifest.types';\n/** @category Extension Development */\nexport { getAppMetadata } from '../utils/getAppMetadata';\n/** @category Extension Development */\nexport type { AppMetadata } from '../utils/getAppMetadata';\n/** @category Extension Development */\nexport { getNativeLinkScheme } from '../utils/getNativeLinkScheme';\n/** @category Extension Development */\nexport type { GetNativeLinkSchemeParams } from '../utils/getNativeLinkScheme';\n/** @category Extension Development */\nexport { assertSafeDeeplinkUrl } from '../utils/assertSafeDeeplinkUrl';\n/** @category Extension Development */\nexport { setScreenshotProtection } from '../modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection';\n/** @category Extension Development */\nexport type { SetScreenshotProtectionParams } from '../modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection.types';\n/** @category Extension Development */\nexport {\n createEventEmitter,\n type EventEmitter,\n} from './../services/eventEmitter';\n"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs","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","createRuntimeServiceAccessKey","target: unknown","providers: T[]","target: unknown","getActiveNetworkIdFromLastKnownRegistry: GetActiveNetworkIdFromLastKnownRegistry","switchActiveNetworkInLastKnownRegistry: SwitchActiveNetworkInLastKnownRegistry","eventEmitter: EventEmitter<WalletProviderEvents> | undefined","setupReturnValue: R","EventEmitter","getBuffer","BaseError","packageName","packageVersion"],"sources":["../src/errors/ArrayMustNotBeEmptyError.ts","../src/errors/ClientsDoNotMatchError.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/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.ts","../src/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.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/services/realtime/createRealtimeChannelSchema/createRealtimeChannelSchema.ts","../src/utils/assertNonEmptyArray/assertNonEmptyArray.ts","../src/utils/bufferToBase64/bufferToBase64.ts","../src/utils/createSequenceQueue/createSequenceQueue.ts","../src/utils/filterDuplicates/filterDuplicates.ts","../src/utils/parseAmountToSmallestUnit/parseAmountToSmallestUnit.ts","../src/errors/ReactNativeOnlyError.ts","../src/services/nativeManifest/getReactNativeManifest/getReactNativeManifest.ts","../src/utils/getNativeLinkScheme/getNativeLinkScheme.ts","../src/modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection.ts","../src/exports/core.ts"],"sourcesContent":["import { BaseError } from './base';\n\nexport class ArrayMustNotBeEmptyError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param\n constructor(message: string) {\n super({\n cause: null,\n code: 'array_must_not_be_empty_error',\n docsUrl: null,\n name: 'ArrayMustNotBeEmpty',\n shortMessage: message,\n });\n }\n}\n","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 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 * @notInstrumented\n */\nexport const registerExtension = (\n { extensionKey }: RegisterExtensionParams,\n client: DynamicClient\n): void => {\n const core = getCore(client);\n\n core.extensions.add(extensionKey);\n};\n","import type { ProjectSettings } from '@dynamic-labs/sdk-api-core';\n\nimport { 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\n/** @notInstrumented */\nexport const waitForProjectSettings = async (\n client: DynamicClient\n): Promise<ProjectSettings> => {\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 name: networkData.name,\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\n/** @notInstrumented */\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 * @notInstrumented\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","import type { DynamicClient } from '../../../../client/types';\nimport type { Chain } from '../../../chain';\nimport { emitEvent } from '../../../clientEvents';\nimport type { UriConnectionType } from '../../walletProviderUriConnection.types';\nimport type {\n UriConnectionStarter,\n UriConnectionStarterRegistry,\n} from '../uriConnectionStarterRegistry.types';\n\nconst formatRegistryKey = ({\n chain,\n type,\n}: {\n chain: Chain;\n type: UriConnectionType;\n}): string => `${chain}:${type}`;\n\n/**\n * Creates the client-scoped registry of URI connection starters, holding one\n * starter per chain and URI protocol pair.\n *\n * Access it through `getUriConnectionStarterRegistry` rather than calling this\n * directly, so a single instance is shared per client.\n *\n * @example\n * ```ts\n * const registry = createUriConnectionStarterRegistry(client);\n * ```\n *\n * @param client - The Dynamic client instance the registry belongs to.\n * @returns The registry of URI connection starters for the given client.\n * @see getUriConnectionStarterRegistry\n * @see UriConnectionStarter\n * @notInstrumented\n */\nexport const createUriConnectionStarterRegistry = (\n client: DynamicClient\n): UriConnectionStarterRegistry => {\n const registry = new Map<string, UriConnectionStarter>();\n\n return {\n get: ({ chain, type }) => registry.get(formatRegistryKey({ chain, type })),\n getAll: () => Array.from(registry.values()),\n register: (uriConnectionStarter) => {\n const { chain, type } = uriConnectionStarter;\n\n registry.set(formatRegistryKey({ chain, type }), uriConnectionStarter);\n\n emitEvent(\n {\n args: { chain, type },\n event: 'uriConnectionStarterRegistered',\n },\n client\n );\n },\n };\n};\n","import { createRuntimeServiceAccessKey } from '../../../../services/runtimeServices';\nimport { createUriConnectionStarterRegistry } from '../createUriConnectionStarterRegistry';\n\n/**\n * Returns the client's registry of URI connection starters, one per chain and\n * URI protocol pair, creating it on first access.\n *\n * Chain extensions register their starters here so higher level connection\n * APIs can mint a pairing URI without depending on the chain packages.\n *\n * @example\n * ```ts\n * const { uri, approval } = await getUriConnectionStarterRegistry(client)\n * .get({ chain: 'EVM', type: 'walletConnect' })\n * ?.start({});\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The registry of URI connection starters for the given client.\n * @see UriConnectionStarter\n * @see UriConnectionType\n * @notInstrumented\n */\nexport const getUriConnectionStarterRegistry = createRuntimeServiceAccessKey(\n 'uriConnectionStarterRegistry',\n createUriConnectionStarterRegistry\n);\n","/** @notInstrumented */\nexport 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 * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 */\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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\n/** @notInstrumented */\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\n/** @notInstrumented */\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 * @notInstrumented\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\nexport type WalletProviderEventEmitter = {\n cleanupEventEmitter: () => void;\n getEventEmitter: () => WalletProvider['events'];\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 * @notInstrumented\n */\nexport const createWalletProviderEventEmitter = <R = void>({\n removeEventListeners,\n setupEventListeners,\n supportedEvents = ['accountsChanged', 'disconnected', 'networkChanged'],\n}: CreateWalletProviderEventEmitterParams<R>): WalletProviderEventEmitter => {\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 type * as z from 'zod/mini';\n\nimport type { RealtimeChannelSchema } from '../realtime.types';\n\n/**\n * Defines a typed schema for a realtime channel — analogous to `createStorageKeySchema`\n * for storage. Pairs a channel name with a Zod schema that validates the shape of\n * messages sent and received on that channel. Pass the result to the realtime service's\n * `subscribe` / `unsubscribe` / `publish` methods to get end-to-end type safety.\n * @notInstrumented\n */\nexport const createRealtimeChannelSchema = <T>(params: {\n channel: string;\n schema: z.ZodMiniType<T>;\n}): RealtimeChannelSchema<T> => params;\n","/* eslint-disable func-style -- javascript requires this to be a function */\n\nimport { ArrayMustNotBeEmptyError } from './../../errors/ArrayMustNotBeEmptyError';\n\n/**\n * Asserts that a value is a non-empty array, throwing an error if it is null,\n * undefined, or has zero elements. This function acts as a type guard,\n * narrowing the type to a tuple of at least one element.\n *\n * @template T - The element type of the array being checked\n * @param value - The array (or possibly null/undefined value) to check\n * @param message - The error message to throw if the value is empty or missing\n * @throws Throws an error with the provided message if value is null, undefined, or empty\n * @example\n * ```typescript\n * const maybeNetworks: Network[] | undefined = getNetworks();\n * assertNonEmptyArray(maybeNetworks, 'At least one network is required');\n * // maybeNetworks is now typed as [Network, ...Network[]]\n * const first = maybeNetworks[0]; // safely accessible without `| undefined`\n * ```\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport function assertNonEmptyArray<T>(\n value: T[] | null | undefined,\n message: string\n): asserts value is [T, ...T[]] {\n if (!value || value.length === 0) {\n throw new ArrayMustNotBeEmptyError(message);\n }\n}\n","import { getBuffer } from \"../getBuffer\";\n\n/** @notInstrumented */\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","import type { DynamicClient } from '../../client/types';\n\n/** The queue function `createSequenceQueue` returns. */\nexport type SequenceQueue = <T>(\n callback: () => Promise<T>,\n client: DynamicClient\n) => Promise<T>;\n\n/**\n * Creates a queue function that runs every callback passed to it **one at a\n * time, in FIFO order**, relative to every other call made through that same\n * queue function for the same client:\n *\n * - Every queued call runs — this is NOT last-wins/coalescing (see\n * `debouncedMutex` for that behavior instead).\n * - A callback that rejects does not stall the queue: the next queued\n * callback still runs.\n * - Each caller receives its own callback's resolution or rejection,\n * independent of other callers' outcomes.\n * - Different clients never block each other, even through the same queue\n * function.\n *\n * Useful for serializing read-modify-write cycles against a single piece of\n * storage/state so concurrent callers can't race and silently lose an update.\n *\n * @example\n * Without a queue, two concurrent callers incrementing a\n * persisted counter can both read `0`, both write `1`, and lose an update:\n * ```ts\n * const incrementStoredCount = async (client: DynamicClient) => {\n * const current = await storage.get('count'); // both callers read 0\n * await storage.set('count', current + 1); // both callers write 1\n * };\n *\n * await Promise.all([incrementStoredCount(client), incrementStoredCount(client)]);\n * // storage.get('count') === 1, but two increments were requested\n * ```\n *\n * Wrapping the same read-modify-write cycle in a queue forces the second\n * call to wait for the first to finish, so it reads the value the first call\n * just wrote:\n * ```ts\n * const queueCountWrite = createSequenceQueue();\n *\n * const incrementStoredCount = (client: DynamicClient) =>\n * queueCountWrite(async () => {\n * const current = await storage.get('count');\n * await storage.set('count', current + 1);\n * }, client);\n *\n * await Promise.all([incrementStoredCount(client), incrementStoredCount(client)]);\n * // storage.get('count') === 2 — both increments are applied\n * ```\n * @notInstrumented\n */\nexport const createSequenceQueue = (): SequenceQueue => {\n // Tracks the promise of the most recently enqueued callback per client, so\n // each new call can chain onto it and run only once its predecessor settles.\n const queueTails = new WeakMap<DynamicClient, Promise<unknown>>();\n\n // The callback is intentionally a bare positional param (not wrapped in an\n // object) to match the ergonomics of a queue function you call directly,\n // like `setTimeout`/`Promise.then` — wrapping it would obscure the call site.\n // eslint-disable-next-line custom-rules/require-single-object-param\n return <T>(callback: () => Promise<T>, client: DynamicClient): Promise<T> => {\n const previousTail = queueTails.get(client) ?? Promise.resolve();\n\n const result = previousTail.then(callback, callback);\n\n queueTails.set(client, result.catch(() => undefined));\n\n return result;\n };\n};\n","/**\n * Filter duplicates from an array by equality.\n * Uses a Set internally.\n * @notInstrumented\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 * @notInstrumented\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 { BaseError } from './base';\n\ntype ReactNativeOnlyErrorParams = {\n apiName: string;\n};\n\nexport class ReactNativeOnlyError extends BaseError {\n constructor({ apiName }: ReactNativeOnlyErrorParams) {\n super({\n cause: null,\n code: 'react_native_only_error',\n docsUrl: null,\n name: 'ReactNativeOnlyError',\n shortMessage: `${apiName} is only available in React Native environments.`,\n });\n }\n}\n","import { ReactNativeOnlyError } from '../../../errors/ReactNativeOnlyError';\nimport type { ReactNativeManifest } from '../nativeManifest.types';\n\n/**\n * Returns the React Native manifest containing native SDK metadata.\n *\n * This function is only available in React Native environments.\n * On web, it throws a `ReactNativeOnlyError`.\n *\n * @notInstrumented\n */\nexport const getReactNativeManifest = (): ReactNativeManifest => {\n throw new ReactNativeOnlyError({ apiName: 'getReactNativeManifest' });\n};\n","const SCHEME_SEPARATOR = '://';\n\n/** Parameters for {@link getNativeLinkScheme}. */\nexport type GetNativeLinkSchemeParams = {\n /** A native link, e.g. `myapp://wallet/connect`. */\n nativeLink: string | undefined;\n};\n\n/**\n * Reduces a native link to just its URL scheme (e.g.\n * `myapp://wallet/connect` -> `myapp://`), dropping anything after the scheme\n * separator. A native link may be configured with an in-app route, but a\n * consumer that only needs to deep link back into the app (rather than a\n * specific route) should use the scheme alone. Links without a scheme\n * separator are returned unchanged (they cannot carry a route), and\n * `undefined` passes through.\n *\n * @notInstrumented\n */\nexport const getNativeLinkScheme = ({\n nativeLink,\n}: GetNativeLinkSchemeParams): string | undefined => {\n if (nativeLink === undefined) {\n return undefined;\n }\n\n const schemeSeparatorIndex = nativeLink.indexOf(SCHEME_SEPARATOR);\n\n if (schemeSeparatorIndex === -1) {\n return nativeLink;\n }\n\n return nativeLink.slice(0, schemeSeparatorIndex + SCHEME_SEPARATOR.length);\n};\n","import { ReactNativeOnlyError } from '../../../errors/ReactNativeOnlyError';\nimport type { SetScreenshotProtectionParams } from './setScreenshotProtection.types';\n\n/**\n * Web/desktop counterpart of the React Native `setScreenshotProtection` (see\n * `setScreenshotProtection.native.ts`).\n *\n * Screenshot/recording protection is a native window-level capability with no\n * web equivalent. Rather than silently no-op (which would let a desktop caller\n * believe content is protected when it is not), this throws a\n * `ReactNativeOnlyError` so an accidental web/desktop call is loud — the API is\n * intentionally React-Native-only.\n *\n * @notInstrumented\n */\nexport const setScreenshotProtection = ({\n // Destructured to keep an identical signature to the native implementation\n // for the platform-type parity check; unused because this always throws.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n enabled,\n}: SetScreenshotProtectionParams): void => {\n throw new ReactNativeOnlyError({ apiName: 'setScreenshotProtection' });\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 { createAppForegroundSubscriber } from '../services/appForeground/createAppForegroundSubscriber';\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 { ArrayMustNotBeEmptyError } from '../errors/ArrayMustNotBeEmptyError';\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 { logoutWithReason } from '../modules/auth/logoutWithReason';\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 { getElevatedAccessToken } from '../modules/auth/getElevatedAccessToken';\n/** @category Extension Development */\nexport { consumeMfaTokenIfRequiredForAction } from '../modules/mfa/consumeMfaTokenIfRequiredForAction';\n/** @category Extension Development */\nexport { getActionAuthorizationTokens } from '../modules/auth/getActionAuthorizationTokens';\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 {\n getUriConnectionStarterRegistry,\n type StartUriConnectionParams,\n type UriConnectionStarter,\n type UriConnectionStarterRegistry,\n} from '../modules/wallets/uriConnectionStarterRegistry';\n/** @category Extension Development */\nexport { reconcileWalletAccountsAgainstClient } from '../modules/wallets/reconcileWalletAccountsAgainstClient';\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 ConfirmTransactionParams,\n ExecuteSwapTransactionParams,\n ExecuteSwapTransactionResult,\n ExecuteYieldTransactionParams,\n ExecuteYieldTransactionResult,\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';\nexport type { WalletProviderEventEmitter } 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 { createRealtimeChannelSchema } from '../services/realtime/createRealtimeChannelSchema';\n/** @category Extension Development */\nexport { createRealtimeService } from '../services/realtime/createRealtimeService';\n/** @category Extension Development */\nexport type {\n RealtimeChannelSchema,\n RealtimeConnectionState,\n RealtimeService,\n} from '../services/realtime';\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 { createKeychainService } from '../services/keychain';\n/** @category Extension Development */\nexport type { KeychainService } from '../services/keychain';\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 StorageAdapterOptions,\n type StorageKeySchema,\n type StorageKeySchemaConfig,\n type StorageTier,\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 { assertSafeNavigationUrl } from '../utils/assertSafeNavigationUrl';\n/** @category Extension Development */\nexport { UnsafeNavigationUrlError } from '../errors/UnsafeNavigationUrlError';\n/** @category Extension Development */\nexport { assertNonEmptyArray } from '../utils/assertNonEmptyArray';\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 { createSequenceQueue } from '../utils/createSequenceQueue';\n/** @category Extension Development */\nexport type { SequenceQueue } from '../utils/createSequenceQueue';\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 { getKeychainIndexedDBName } from '../utils/getKeychainIndexedDBName';\n/** @category Extension Development */\nexport { getNonce } from '../utils/getNonce';\n/** @category Extension Development */\nexport { getPlatform } from '../utils/getPlatform/getPlatform';\n/** @category Extension Development */\nexport type { SdkPlatform } from '../utils/getPlatform/getPlatform.types';\n/** @category Extension Development */\nexport { isServerSideRendering } from '../utils/isServerSideRendering';\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/** @category Extension Development */\nexport { randomString } from '../utils/randomString';\n/** @category Extension Development */\nexport { getReactNativeManifest } from '../services/nativeManifest/getReactNativeManifest';\n/** @category Extension Development */\nexport type { ReactNativeManifest } from '../services/nativeManifest/nativeManifest.types';\n/** @category Extension Development */\nexport { getAppMetadata } from '../utils/getAppMetadata';\n/** @category Extension Development */\nexport type { AppMetadata } from '../utils/getAppMetadata';\n/** @category Extension Development */\nexport { getNativeLinkScheme } from '../utils/getNativeLinkScheme';\n/** @category Extension Development */\nexport type { GetNativeLinkSchemeParams } from '../utils/getNativeLinkScheme';\n/** @category Extension Development */\nexport { assertSafeDeeplinkUrl } from '../utils/assertSafeDeeplinkUrl';\n/** @category Extension Development */\nexport { setScreenshotProtection } from '../modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection';\n/** @category Extension Development */\nexport type { SetScreenshotProtectionParams } from '../modules/screenshotProtection/setScreenshotProtection/setScreenshotProtection.types';\n/** @category Extension Development */\nexport {\n createEventEmitter,\n type EventEmitter,\n} from './../services/eventEmitter';\n"],"mappings":"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"}
package/dist/core.esm.js CHANGED
@@ -1,11 +1,11 @@
1
- import { A as getWalletProviders, B as normalizeWalletNameWithChain, Ct as BaseError, Et as version, G as splitWalletProviderKey, H as CHAINS_INFO_MAP, J as createDeviceSignatureHeadersMiddleware, K as InvalidWalletProviderKeyError, L as createRuntimeServiceAccessKey, M as getWalletProviderRegistry, N as emitEvent, S as emitWalletAccountsChangedEvent, St as getCore, Tt as name, U as formatWalletAccountId, V as getChainFromVerifiedCredentialChain, X as getDeviceSigner, Y as getHeadersForNonceSignedByDeviceSigners, Z as getNonce, _t as randomString, c as createApiClient, ct as APIError, dt as SDK_API_CORE_VERSION, et as createStorageKeySchema, ft as getSessionKeys, g as updateAuthFromVerifyResponse, gt as getElevatedAccessToken, ht as ValueMustBeDefinedError, j as WalletProviderPriority, mt as assertDefined, n as generateSessionKeys, o as getWalletProviderFromWalletAccount, pt as isCookieEnabled, s as NoWalletProviderFoundError, t as __logoutWithReason_wrapped, ut as DYNAMIC_ICONIC_SPRITE_URL, vt as getPlatform, xt as ClientNotFoundError, yt as getDefaultClient, z as formatWalletProviderKey } from "./logoutWithReason-BqsgA8gI.esm.js";
2
- import { A as createEventEmitter, C as getKeychainIndexedDBName, D as assertSafeNavigationUrl, E as createKeychainService, F as createAppForegroundSubscriber, G as InvalidStorageSet, H as subscribeWithSelector, I as FETCH_PROJECT_SETTINGS_TRACKER_KEY, K as createLocalStorageAdapter, M as CrossTabBroadcastMessageSchema, N as CannotTrackError, O as UnsafeNavigationUrlError, P as createDeferredPromise, T as assertSafeDeeplinkUrl, V as getBuffer, W as createStorage, _ as consumeCaptchaToken, a as removeUnverifiedWalletAccount, c as getAppMetadata, d as setUnverifiedWalletAccounts, f as createVisit, g as MethodNotImplementedError, h as __setCaptchaToken_wrapped, i as verifyMessageSignatureOwnership, j as createCrossTabBroadcast, k as createLogger, l as reconcileWalletAccountsAgainstClient, m as hasExtension, n as getNetworkProviders, o as createSignInMessageStatement, p as getNetworkProviderBuilderRegistry, q as isServerSideRendering, r as getNetworksData, s as formatSignInMessage, t as getNetworkProviderFromNetworkId, u as updateWalletProviderKeysForVerifiedCredentials, w as createRealtimeService, x as NoNetworkProvidersError } from "./getNetworkProviderFromNetworkId-CbMpiSub.esm.js";
3
- import { n as getWalletProviderByKey, t as getVerifiedCredentialForWalletAccount } from "./getVerifiedCredentialForWalletAccount-C_GcjgC8.esm.js";
4
- import "./isMfaRequiredForAction-D1a1Nudo.esm.js";
5
- import { n as consumeMfaTokenIfRequiredForAction, t as getSignedSessionId } from "./getSignedSessionId-DHn6yhGX.esm.js";
1
+ import { A as getWalletProviders, B as normalizeWalletNameWithChain, Ct as BaseError, Et as version, G as splitWalletProviderKey, H as CHAINS_INFO_MAP, J as createDeviceSignatureHeadersMiddleware, K as InvalidWalletProviderKeyError, L as createRuntimeServiceAccessKey, M as getWalletProviderRegistry, N as emitEvent, S as emitWalletAccountsChangedEvent, St as getCore, Tt as name, U as formatWalletAccountId, V as getChainFromVerifiedCredentialChain, X as getDeviceSigner, Y as getHeadersForNonceSignedByDeviceSigners, Z as getNonce, _t as randomString, c as createApiClient, ct as APIError, dt as SDK_API_CORE_VERSION, et as createStorageKeySchema, ft as getSessionKeys, g as updateAuthFromVerifyResponse, gt as getElevatedAccessToken, ht as ValueMustBeDefinedError, j as WalletProviderPriority, mt as assertDefined, n as generateSessionKeys, o as getWalletProviderFromWalletAccount, pt as isCookieEnabled, s as NoWalletProviderFoundError, t as __logoutWithReason_wrapped, ut as DYNAMIC_ICONIC_SPRITE_URL, vt as getPlatform, xt as ClientNotFoundError, yt as getDefaultClient, z as formatWalletProviderKey } from "./logoutWithReason-CHyuBHdx.esm.js";
2
+ import { A as createEventEmitter, C as getKeychainIndexedDBName, D as assertSafeNavigationUrl, E as createKeychainService, F as createAppForegroundSubscriber, G as InvalidStorageSet, H as subscribeWithSelector, I as FETCH_PROJECT_SETTINGS_TRACKER_KEY, K as createLocalStorageAdapter, M as CrossTabBroadcastMessageSchema, N as CannotTrackError, O as UnsafeNavigationUrlError, P as createDeferredPromise, T as assertSafeDeeplinkUrl, V as getBuffer, W as createStorage, _ as consumeCaptchaToken, a as removeUnverifiedWalletAccount, c as getAppMetadata, d as setUnverifiedWalletAccounts, f as createVisit, g as MethodNotImplementedError, h as __setCaptchaToken_wrapped, i as verifyMessageSignatureOwnership, j as createCrossTabBroadcast, k as createLogger, l as reconcileWalletAccountsAgainstClient, m as hasExtension, n as getNetworkProviders, o as createSignInMessageStatement, p as getNetworkProviderBuilderRegistry, q as isServerSideRendering, r as getNetworksData, s as formatSignInMessage, t as getNetworkProviderFromNetworkId, u as updateWalletProviderKeysForVerifiedCredentials, w as createRealtimeService, x as NoNetworkProvidersError } from "./getNetworkProviderFromNetworkId-D9nx6Od5.esm.js";
3
+ import { n as getWalletProviderByKey, t as getVerifiedCredentialForWalletAccount } from "./getVerifiedCredentialForWalletAccount-_3MExyld.esm.js";
4
+ import "./isMfaRequiredForAction-BDmY2_Sj.esm.js";
5
+ import { n as getActionAuthorizationTokens, r as consumeMfaTokenIfRequiredForAction, t as getSignedSessionId } from "./getSignedSessionId-BKfQycNo.esm.js";
6
6
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
7
7
  import * as z from "zod/mini";
8
- import EventEmitter from "eventemitter3";
8
+ import EventEmitter3 from "eventemitter3";
9
9
 
10
10
  //#region src/errors/ArrayMustNotBeEmptyError.ts
11
11
  var ArrayMustNotBeEmptyError = class extends BaseError {
@@ -149,6 +149,76 @@ const createLastKnownNetworkRegistry = (client) => {
149
149
  //#region src/modules/wallets/networks/lastKnownNetworkRegistry/getLastKnownNetworkRegistry/getLastKnownNetworkRegistry.ts
150
150
  const getLastKnownNetworkRegistry = createRuntimeServiceAccessKey("last-known-network-registry", (client) => createLastKnownNetworkRegistry(client));
151
151
 
152
+ //#endregion
153
+ //#region src/modules/wallets/uriConnectionStarterRegistry/createUriConnectionStarterRegistry/createUriConnectionStarterRegistry.ts
154
+ const formatRegistryKey = ({ chain, type }) => `${chain}:${type}`;
155
+ /**
156
+ * Creates the client-scoped registry of URI connection starters, holding one
157
+ * starter per chain and URI protocol pair.
158
+ *
159
+ * Access it through `getUriConnectionStarterRegistry` rather than calling this
160
+ * directly, so a single instance is shared per client.
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const registry = createUriConnectionStarterRegistry(client);
165
+ * ```
166
+ *
167
+ * @param client - The Dynamic client instance the registry belongs to.
168
+ * @returns The registry of URI connection starters for the given client.
169
+ * @see getUriConnectionStarterRegistry
170
+ * @see UriConnectionStarter
171
+ * @notInstrumented
172
+ */
173
+ const createUriConnectionStarterRegistry = (client) => {
174
+ const registry = /* @__PURE__ */ new Map();
175
+ return {
176
+ get: ({ chain, type }) => registry.get(formatRegistryKey({
177
+ chain,
178
+ type
179
+ })),
180
+ getAll: () => Array.from(registry.values()),
181
+ register: (uriConnectionStarter) => {
182
+ const { chain, type } = uriConnectionStarter;
183
+ registry.set(formatRegistryKey({
184
+ chain,
185
+ type
186
+ }), uriConnectionStarter);
187
+ emitEvent({
188
+ args: {
189
+ chain,
190
+ type
191
+ },
192
+ event: "uriConnectionStarterRegistered"
193
+ }, client);
194
+ }
195
+ };
196
+ };
197
+
198
+ //#endregion
199
+ //#region src/modules/wallets/uriConnectionStarterRegistry/getUriConnectionStarterRegistry/getUriConnectionStarterRegistry.ts
200
+ /**
201
+ * Returns the client's registry of URI connection starters, one per chain and
202
+ * URI protocol pair, creating it on first access.
203
+ *
204
+ * Chain extensions register their starters here so higher level connection
205
+ * APIs can mint a pairing URI without depending on the chain packages.
206
+ *
207
+ * @example
208
+ * ```ts
209
+ * const { uri, approval } = await getUriConnectionStarterRegistry(client)
210
+ * .get({ chain: 'EVM', type: 'walletConnect' })
211
+ * ?.start({});
212
+ * ```
213
+ *
214
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
215
+ * @returns The registry of URI connection starters for the given client.
216
+ * @see UriConnectionStarter
217
+ * @see UriConnectionType
218
+ * @notInstrumented
219
+ */
220
+ const getUriConnectionStarterRegistry = createRuntimeServiceAccessKey("uriConnectionStarterRegistry", createUriConnectionStarterRegistry);
221
+
152
222
  //#endregion
153
223
  //#region src/modules/wallets/utils/formatWalletProviderGroupKey/formatWalletProviderGroupKey.ts
154
224
  /** @notInstrumented */
@@ -252,7 +322,7 @@ const createWalletProviderEventEmitter = ({ removeEventListeners, setupEventList
252
322
  };
253
323
  const getEventEmitter = () => {
254
324
  if (!eventEmitter) {
255
- eventEmitter = new EventEmitter();
325
+ eventEmitter = new EventEmitter3();
256
326
  setupReturnValue = setupEventListeners({
257
327
  handleAccountsChanged,
258
328
  handleDisconnected,
@@ -472,5 +542,5 @@ const setScreenshotProtection = ({ enabled }) => {
472
542
  assertPackageVersion(name, version);
473
543
 
474
544
  //#endregion
475
- export { APIError, ArrayMustNotBeEmptyError, CHAINS_INFO_MAP, CannotTrackError, ClientNotFoundError, ClientsDoNotMatchError, CrossTabBroadcastMessageSchema, DYNAMIC_ICONIC_SPRITE_URL, SDK_API_CORE_VERSION as DYNAMIC_SDK_API_VERSION, InvalidStorageSet, InvalidWalletProviderKeyError, MethodNotImplementedError, MultipleClientsFoundError, NoWalletProviderFoundError, UnsafeNavigationUrlError, ValueMustBeDefinedError, WalletProviderPriority, assertDefined, assertNonEmptyArray, assertSafeDeeplinkUrl, assertSafeNavigationUrl, bufferToBase64, consumeCaptchaToken, consumeMfaTokenIfRequiredForAction, createApiClient, createAppForegroundSubscriber, createBaseNetworkProvider, createCrossTabBroadcast, createDeferredPromise, createDeviceSignatureHeadersMiddleware, createEventEmitter, createKeychainService, createLocalStorageAdapter, createLogger, createRealtimeChannelSchema, createRealtimeService, createRuntimeServiceAccessKey, createSequenceQueue, createSignInMessageStatement, createStorage, createStorageKeySchema, createVisit, createWalletProviderEventEmitter, emitEvent, emitWalletAccountsChangedEvent, filterDuplicates, formatSignInMessage, formatWalletAccountId, formatWalletProviderGroupKey, formatWalletProviderKey, generateSessionKeys, getActiveNetworkIdFromLastKnownRegistry, getAllProvidersFromWindow, getAppMetadata, getBuffer, getChainFromVerifiedCredentialChain, getCore, getDefaultClient, getDeviceSigner, getElevatedAccessToken, getHeadersForNonceSignedByDeviceSigners, getInjectedProviderFromWindow, getKeychainIndexedDBName, getLastKnownNetworkRegistry, getNativeLinkScheme, getNetworkDataForNetworkId, getNetworkProviderBuilderRegistry, getNetworkProviderFromNetworkId, getNetworkProviders, getNonce, getPlatform, getReactNativeManifest, getSessionKeys, getSignedSessionId, getVerifiedCredentialForWalletAccount, getWalletProviderFromWalletAccount, getWalletProviderRegistry, getWalletProviders, hasExtension, isCookieEnabled, isServerSideRendering, __logoutWithReason_wrapped as logoutWithReason, normalizeWalletNameWithChain, parseAmountToSmallestUnit, randomString, reconcileWalletAccountsAgainstClient, registerExtension, removeUnverifiedWalletAccount, __setCaptchaToken_wrapped as setCaptchaToken, setScreenshotProtection, setUnverifiedWalletAccounts, splitWalletProviderKey, subscribeWithSelector, switchActiveNetworkInLastKnownRegistry, updateAuthFromVerifyResponse, updateWalletProviderKeysForVerifiedCredentials, verifyMessageSignatureOwnership, waitForProjectSettings };
545
+ export { APIError, ArrayMustNotBeEmptyError, CHAINS_INFO_MAP, CannotTrackError, ClientNotFoundError, ClientsDoNotMatchError, CrossTabBroadcastMessageSchema, DYNAMIC_ICONIC_SPRITE_URL, SDK_API_CORE_VERSION as DYNAMIC_SDK_API_VERSION, InvalidStorageSet, InvalidWalletProviderKeyError, MethodNotImplementedError, MultipleClientsFoundError, NoWalletProviderFoundError, UnsafeNavigationUrlError, ValueMustBeDefinedError, WalletProviderPriority, assertDefined, assertNonEmptyArray, assertSafeDeeplinkUrl, assertSafeNavigationUrl, bufferToBase64, consumeCaptchaToken, consumeMfaTokenIfRequiredForAction, createApiClient, createAppForegroundSubscriber, createBaseNetworkProvider, createCrossTabBroadcast, createDeferredPromise, createDeviceSignatureHeadersMiddleware, createEventEmitter, createKeychainService, createLocalStorageAdapter, createLogger, createRealtimeChannelSchema, createRealtimeService, createRuntimeServiceAccessKey, createSequenceQueue, createSignInMessageStatement, createStorage, createStorageKeySchema, createVisit, createWalletProviderEventEmitter, emitEvent, emitWalletAccountsChangedEvent, filterDuplicates, formatSignInMessage, formatWalletAccountId, formatWalletProviderGroupKey, formatWalletProviderKey, generateSessionKeys, getActionAuthorizationTokens, getActiveNetworkIdFromLastKnownRegistry, getAllProvidersFromWindow, getAppMetadata, getBuffer, getChainFromVerifiedCredentialChain, getCore, getDefaultClient, getDeviceSigner, getElevatedAccessToken, getHeadersForNonceSignedByDeviceSigners, getInjectedProviderFromWindow, getKeychainIndexedDBName, getLastKnownNetworkRegistry, getNativeLinkScheme, getNetworkDataForNetworkId, getNetworkProviderBuilderRegistry, getNetworkProviderFromNetworkId, getNetworkProviders, getNonce, getPlatform, getReactNativeManifest, getSessionKeys, getSignedSessionId, getUriConnectionStarterRegistry, getVerifiedCredentialForWalletAccount, getWalletProviderFromWalletAccount, getWalletProviderRegistry, getWalletProviders, hasExtension, isCookieEnabled, isServerSideRendering, __logoutWithReason_wrapped as logoutWithReason, normalizeWalletNameWithChain, parseAmountToSmallestUnit, randomString, reconcileWalletAccountsAgainstClient, registerExtension, removeUnverifiedWalletAccount, __setCaptchaToken_wrapped as setCaptchaToken, setScreenshotProtection, setUnverifiedWalletAccounts, splitWalletProviderKey, subscribeWithSelector, switchActiveNetworkInLastKnownRegistry, updateAuthFromVerifyResponse, updateWalletProviderKeysForVerifiedCredentials, verifyMessageSignatureOwnership, waitForProjectSettings };
476
546
  //# sourceMappingURL=core.esm.js.map