@dynamic-labs-sdk/client 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +11 -0
  2. package/dist/{InvalidParamError-tpCmR-0K.esm.js → InvalidParamError-BL0oI_o3.esm.js} +2 -2
  3. package/dist/{InvalidParamError-tpCmR-0K.esm.js.map → InvalidParamError-BL0oI_o3.esm.js.map} +1 -1
  4. package/dist/{InvalidParamError-quxEncyd.cjs.js → InvalidParamError-Dar1x8VB.cjs.js} +2 -2
  5. package/dist/{InvalidParamError-quxEncyd.cjs.js.map → InvalidParamError-Dar1x8VB.cjs.js.map} +1 -1
  6. package/dist/{NotWaasWalletAccountError-B5f6_w78.esm.js → NotWaasWalletAccountError-BocC4qFk.esm.js} +3 -3
  7. package/dist/{NotWaasWalletAccountError-B5f6_w78.esm.js.map → NotWaasWalletAccountError-BocC4qFk.esm.js.map} +1 -1
  8. package/dist/{NotWaasWalletAccountError-DuMMt1dJ.cjs.js → NotWaasWalletAccountError-DPT7o7G5.cjs.js} +3 -3
  9. package/dist/{NotWaasWalletAccountError-DuMMt1dJ.cjs.js.map → NotWaasWalletAccountError-DPT7o7G5.cjs.js.map} +1 -1
  10. package/dist/client/types/DynamicClientConfig.d.ts +11 -2
  11. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  12. package/dist/{constants-Cg3ipRSQ.esm.js → constants-BemoSJmO.esm.js} +3 -3
  13. package/dist/{constants-Cg3ipRSQ.esm.js.map → constants-BemoSJmO.esm.js.map} +1 -1
  14. package/dist/{constants-COTx8_KG.cjs.js → constants-CVYjAuVg.cjs.js} +4 -4
  15. package/dist/{constants-COTx8_KG.cjs.js.map → constants-CVYjAuVg.cjs.js.map} +1 -1
  16. package/dist/core.cjs.js +5 -5
  17. package/dist/core.esm.js +7 -7
  18. package/dist/core.esm.js.map +1 -1
  19. package/dist/errors/NetworkAddingUnavailableError.d.ts +11 -0
  20. package/dist/errors/NetworkAddingUnavailableError.d.ts.map +1 -0
  21. package/dist/errors/NetworkNotAddedError.d.ts +14 -0
  22. package/dist/errors/NetworkNotAddedError.d.ts.map +1 -0
  23. package/dist/exports/index.d.ts +7 -0
  24. package/dist/exports/index.d.ts.map +1 -1
  25. package/dist/exports/waas.d.ts +1 -0
  26. package/dist/exports/waas.d.ts.map +1 -1
  27. package/dist/{getNetworkProviderFromNetworkId-O11XpA9s.esm.js → getNetworkProviderFromNetworkId-C4EwyjSm.esm.js} +7 -6
  28. package/dist/getNetworkProviderFromNetworkId-C4EwyjSm.esm.js.map +1 -0
  29. package/dist/{getNetworkProviderFromNetworkId-DM3nd8O1.cjs.js → getNetworkProviderFromNetworkId-Cn6o8x1l.cjs.js} +5 -4
  30. package/dist/{getNetworkProviderFromNetworkId-DM3nd8O1.cjs.js.map → getNetworkProviderFromNetworkId-Cn6o8x1l.cjs.js.map} +1 -1
  31. package/dist/{getSignedSessionId-BGAnr5jS.cjs.js → getSignedSessionId-BIfWoHBA.cjs.js} +3 -3
  32. package/dist/{getSignedSessionId-BGAnr5jS.cjs.js.map → getSignedSessionId-BIfWoHBA.cjs.js.map} +1 -1
  33. package/dist/{getSignedSessionId-C3t_B6ZU.esm.js → getSignedSessionId-_CGdR7lO.esm.js} +3 -3
  34. package/dist/{getSignedSessionId-C3t_B6ZU.esm.js.map → getSignedSessionId-_CGdR7lO.esm.js.map} +1 -1
  35. package/dist/{getVerifiedCredentialForWalletAccount-B96b7nLc.cjs.js → getVerifiedCredentialForWalletAccount-53sID_KI.cjs.js} +20 -14
  36. package/dist/getVerifiedCredentialForWalletAccount-53sID_KI.cjs.js.map +1 -0
  37. package/dist/{getVerifiedCredentialForWalletAccount-ryH7FulV.esm.js → getVerifiedCredentialForWalletAccount-D5sm7r5K.esm.js} +14 -8
  38. package/dist/getVerifiedCredentialForWalletAccount-D5sm7r5K.esm.js.map +1 -0
  39. package/dist/index.cjs.js +234 -70
  40. package/dist/index.cjs.js.map +1 -1
  41. package/dist/index.esm.js +233 -75
  42. package/dist/index.esm.js.map +1 -1
  43. package/dist/{isMfaRequiredForAction-CZEDBXNT.cjs.js → isMfaRequiredForAction-Bm18u46b.cjs.js} +2 -2
  44. package/dist/{isMfaRequiredForAction-CZEDBXNT.cjs.js.map → isMfaRequiredForAction-Bm18u46b.cjs.js.map} +1 -1
  45. package/dist/{isMfaRequiredForAction-CjKgE8dm.esm.js → isMfaRequiredForAction-CuTgL4Tw.esm.js} +2 -2
  46. package/dist/{isMfaRequiredForAction-CjKgE8dm.esm.js.map → isMfaRequiredForAction-CuTgL4Tw.esm.js.map} +1 -1
  47. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts +6 -1
  48. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts.map +1 -1
  49. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.d.ts +1 -1
  50. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.d.ts.map +1 -1
  51. package/dist/modules/auth/social/social.types.d.ts +1 -1
  52. package/dist/modules/auth/social/social.types.d.ts.map +1 -1
  53. package/dist/modules/funding/kraken/createKrakenExchangeTransfer/createKrakenExchangeTransfer.d.ts +17 -0
  54. package/dist/modules/funding/kraken/createKrakenExchangeTransfer/createKrakenExchangeTransfer.d.ts.map +1 -0
  55. package/dist/modules/funding/kraken/createKrakenExchangeTransfer/index.d.ts +3 -0
  56. package/dist/modules/funding/kraken/createKrakenExchangeTransfer/index.d.ts.map +1 -0
  57. package/dist/modules/funding/kraken/getKrakenAccounts/getKrakenAccounts.d.ts +21 -0
  58. package/dist/modules/funding/kraken/getKrakenAccounts/getKrakenAccounts.d.ts.map +1 -0
  59. package/dist/modules/funding/kraken/getKrakenAccounts/index.d.ts +3 -0
  60. package/dist/modules/funding/kraken/getKrakenAccounts/index.d.ts.map +1 -0
  61. package/dist/modules/funding/kraken/getKrakenWhitelistedAddresses/getKrakenWhitelistedAddresses.d.ts +9 -0
  62. package/dist/modules/funding/kraken/getKrakenWhitelistedAddresses/getKrakenWhitelistedAddresses.d.ts.map +1 -0
  63. package/dist/modules/funding/kraken/getKrakenWhitelistedAddresses/index.d.ts +2 -0
  64. package/dist/modules/funding/kraken/getKrakenWhitelistedAddresses/index.d.ts.map +1 -0
  65. package/dist/modules/funding/kraken/kraken.types.d.ts +4 -0
  66. package/dist/modules/funding/kraken/kraken.types.d.ts.map +1 -0
  67. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/getWalletConnectCatalog.d.ts.map +1 -1
  68. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformGroup/index.d.ts +2 -0
  69. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformGroup/index.d.ts.map +1 -0
  70. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformGroup/transformGroup.d.ts +11 -0
  71. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformGroup/transformGroup.d.ts.map +1 -0
  72. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWallet/index.d.ts +2 -0
  73. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWallet/index.d.ts.map +1 -0
  74. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWallet/transformWallet.d.ts +12 -0
  75. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWallet/transformWallet.d.ts.map +1 -0
  76. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWalletBook/index.d.ts +2 -0
  77. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWalletBook/index.d.ts.map +1 -0
  78. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWalletBook/transformWalletBook.d.ts +12 -0
  79. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/transformWalletBook/transformWalletBook.d.ts.map +1 -0
  80. package/dist/modules/user/refreshUser/refreshUser.d.ts.map +1 -1
  81. package/dist/modules/waas/findWaasWalletProviderByChain/findWaasWalletProviderByChain.d.ts +9 -0
  82. package/dist/modules/waas/findWaasWalletProviderByChain/findWaasWalletProviderByChain.d.ts.map +1 -0
  83. package/dist/modules/waas/findWaasWalletProviderByChain/index.d.ts +2 -0
  84. package/dist/modules/waas/findWaasWalletProviderByChain/index.d.ts.map +1 -0
  85. package/dist/modules/waas/getWaasWalletProviderByChain/getWaasWalletProviderByChain.d.ts.map +1 -1
  86. package/dist/modules/waas/isPasswordRequiredForWaasWallets/index.d.ts +2 -0
  87. package/dist/modules/waas/isPasswordRequiredForWaasWallets/index.d.ts.map +1 -0
  88. package/dist/modules/waas/isPasswordRequiredForWaasWallets/isPasswordRequiredForWaasWallets.d.ts +12 -0
  89. package/dist/modules/waas/isPasswordRequiredForWaasWallets/isPasswordRequiredForWaasWallets.d.ts.map +1 -0
  90. package/dist/modules/waas/restoreUserSharesForAllWalletAccounts/restoreUserSharesForAllWalletAccounts.d.ts.map +1 -1
  91. package/dist/modules/wallets/disconnectWalletAccount/disconnectWalletAccount.d.ts +14 -0
  92. package/dist/modules/wallets/disconnectWalletAccount/disconnectWalletAccount.d.ts.map +1 -0
  93. package/dist/modules/wallets/disconnectWalletAccount/index.d.ts +2 -0
  94. package/dist/modules/wallets/disconnectWalletAccount/index.d.ts.map +1 -0
  95. package/dist/modules/wallets/networks/addNetwork/addNetwork.d.ts +21 -0
  96. package/dist/modules/wallets/networks/addNetwork/addNetwork.d.ts.map +1 -0
  97. package/dist/modules/wallets/networks/addNetwork/index.d.ts +2 -0
  98. package/dist/modules/wallets/networks/addNetwork/index.d.ts.map +1 -0
  99. package/dist/modules/wallets/removeWalletAccount/removeWalletAccount.d.ts +2 -2
  100. package/dist/modules/wallets/removeWalletAccount/removeWalletAccount.d.ts.map +1 -1
  101. package/dist/modules/wallets/utils/getSignInMessage/getSignInMessage.d.ts.map +1 -1
  102. package/dist/modules/wallets/verifyMessageSignatureOwnership/verifyMessageSignatureOwnership.d.ts +2 -1
  103. package/dist/modules/wallets/verifyMessageSignatureOwnership/verifyMessageSignatureOwnership.d.ts.map +1 -1
  104. package/dist/modules/wallets/verifyWalletAccountForSignInOrTransfer/verifyWalletAccountForSignInOrTransfer.d.ts.map +1 -1
  105. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  106. package/dist/waas.cjs.js +37 -5
  107. package/dist/waas.cjs.js.map +1 -1
  108. package/dist/waas.esm.js +35 -4
  109. package/dist/waas.esm.js.map +1 -1
  110. package/dist/waasCore.cjs.js +5 -5
  111. package/dist/waasCore.esm.js +4 -4
  112. package/package.json +2 -2
  113. package/dist/getNetworkProviderFromNetworkId-O11XpA9s.esm.js.map +0 -1
  114. package/dist/getVerifiedCredentialForWalletAccount-B96b7nLc.cjs.js.map +0 -1
  115. package/dist/getVerifiedCredentialForWalletAccount-ryH7FulV.esm.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVerifiedCredentialForWalletAccount-D5sm7r5K.esm.js","names":["walletAccountsMap: Map<string, WalletAccount>","newState: Partial<DynamicCoreState>","walletProvider"],"sources":["../src/utils/setCookie/setCookie.ts","../src/modules/clientEvents/clientEvents.ts","../src/errors/InvalidWalletProviderKeyError.ts","../src/modules/wallets/walletProvider/splitWalletProviderKey/splitWalletProviderKey.ts","../src/modules/wallets/utils/normalizeAddress/normalizeAddress.ts","../src/modules/wallets/utils/formatWalletAccountId/formatWalletAccountId.ts","../src/modules/wallets/utils/convertUnverifiedWalletAccountToWalletAccount/convertUnverifiedWalletAccountToWalletAccount.ts","../src/modules/wallets/utils/normalizeWalletNameWithChain/normalizeWalletNameWithChain.ts","../src/modules/wallets/utils/formatWalletProviderKey/formatWalletProviderKey.ts","../src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/getWalletProviderKeyFromVerifiedCredential.ts","../src/modules/wallets/utils/convertVerifiedCredentialToWalletAccount/convertVerifiedCredentialToWalletAccount.ts","../src/modules/wallets/getWalletAccounts/getWalletAccountsFromState/getWalletAccountsFromState.ts","../src/modules/wallets/getWalletAccounts/getWalletAccounts.ts","../src/errors/NoWalletProviderFoundError.ts","../src/services/runtimeServices/createRuntimeServiceAccessKey/createRuntimeServiceAccessKey.ts","../src/modules/wallets/walletProviderRegistry/createWalletProviderRegistry/createWalletProviderRegistry.ts","../src/modules/wallets/walletProviderRegistry/getWalletProviderRegistry/getWalletProviderRegistry.ts","../src/modules/wallets/walletProviderRegistry/walletProviderRegistry.types.ts","../src/modules/wallets/utils/getWalletProviderFromWalletAccount/getWalletProviderFromWalletAccount.ts","../src/modules/auth/consts.ts","../src/modules/wallets/emitWalletAccountsChangedEvent/emitWalletAccountsChangedEvent.ts","../src/modules/auth/updateAuthFromVerifyResponse/checkAndRaiseWalletAccountsChangedEvent/checkAndRaiseWalletAccountsChangedEvent.ts","../src/modules/wallets/getWalletProviders/getWalletProviders.ts","../src/modules/waas/isWaasWalletProvider/isWaasWalletProvider.ts","../src/modules/waas/findWaasWalletProviderByChain/findWaasWalletProviderByChain.ts","../src/modules/waas/isWaasWalletAccount/isWaasWalletAccount.ts","../src/modules/waas/restoreUserSharesForAllWalletAccounts/restoreUserSharesForAllWalletAccounts.ts","../src/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.ts","../src/modules/wallets/getWalletProviderByKey/getWalletProviderByKey.ts","../src/modules/wallets/utils/getVerifiedCredentialForWalletAccount/getVerifiedCredentialForWalletAccount.ts"],"sourcesContent":["/**\n * Sefelly sets the cookie in the browser.\n */\nexport const setCookie = (cookie: string) => {\n // eslint-disable-next-line no-restricted-globals\n document.cookie = cookie;\n};\n","import { getCore } from '../../client/core/getCore';\nimport { getDefaultClient } from '../../client/defaultClient';\nimport type { DynamicClient } from '../../client/types';\nimport type {\n DynamicEvents,\n EmitEventParams,\n OffEventParams,\n OnEventParams,\n OnceEventParams,\n} from './clientEvents.types';\n\n/**\n * Adds an event listener for Dynamic client events.\n *\n * This function allows you to listen for various events emitted by the Dynamic client,\n * such as authentication state changes, wallet connections, and more.\n *\n * @param params.event - The event name to listen for.\n * @param params.listener - The callback function to execute when the event is fired.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be called to remove the listener.\n */\nexport const onEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OnEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.on(event, listener);\n\n return () => {\n eventEmitter.off(event, listener);\n };\n};\n\n/**\n * Removes an event listener from Dynamic client events.\n *\n * This function unsubscribes a previously registered event listener\n * from the specified Dynamic client event.\n *\n * @param params.event - The event name to remove the listener from.\n * @param params.listener - The callback function to remove.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const offEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OffEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.off(event, listener);\n};\n\n/**\n * Adds a one-time event listener for Dynamic client events.\n *\n * This function listens for an event that will automatically remove itself\n * after being triggered once.\n *\n * @param params.event - The event name to listen for.\n * @param params.listener - The callback function to execute when the event is fired.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be called to remove the listener before it fires.\n */\nexport const onceEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OnceEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.once(event, listener);\n\n return () => {\n eventEmitter.off(event, listener);\n };\n};\n\n/**\n * Emits a Dynamic client event.\n *\n * This function triggers an event that will be received by all registered\n * listeners for the specified event type.\n *\n * @param params.event - The event name to emit.\n * @param params.args - The arguments to pass to event listeners.\n * @param client - The Dynamic client instance.\n */\nexport const emitEvent = <E extends keyof DynamicEvents>(\n { event, args }: EmitEventParams<E>,\n client: DynamicClient\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.emit(event, args);\n};\n","import { BaseError } from './base';\n\nexport class InvalidWalletProviderKeyError extends BaseError {\n constructor(value: string) {\n super({\n cause: null,\n code: 'invalid_wallet_provider_key',\n docsUrl: null,\n name: 'InvalidWalletProviderKeyError',\n shortMessage: `Invalid wallet provider key: ${value}. Key must be in the format of <normalizedWalletNameWithChain>:<walletProviderType>[:<suffix>]`,\n });\n }\n}\n","import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { InvalidWalletProviderKeyError } from '../../../../errors/InvalidWalletProviderKeyError';\n\ntype SplitWalletProviderKeyResult = {\n normalizedWalletNameWithChain: string;\n suffix: string | undefined;\n walletProviderType: WalletProviderEnum;\n};\n\nexport const splitWalletProviderKey = (\n walletProviderKey: string\n): SplitWalletProviderKeyResult => {\n const [normalizedWalletNameWithChain, walletProviderType, suffix, ...rest] =\n walletProviderKey.split(':');\n\n if (\n !normalizedWalletNameWithChain ||\n !Object.values(WalletProviderEnum).includes(\n walletProviderType as WalletProviderEnum\n ) ||\n rest.length > 0\n ) {\n throw new InvalidWalletProviderKeyError(walletProviderKey);\n }\n\n return {\n normalizedWalletNameWithChain,\n suffix,\n walletProviderType: walletProviderType as WalletProviderEnum,\n };\n};\n","import type { Chain } from '../../../chain';\n\nexport const normalizeAddress = (address: string, chain: Chain) => {\n let normalizedAddress = address;\n\n if (normalizedAddress?.startsWith('0x')) {\n normalizedAddress = normalizedAddress.slice(2);\n }\n\n /**\n * These are standard from CAIP-2: https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md\n * see also: https://github.com/ChainAgnostic/namespaces\n * note: no standard namespace currently exists for flow\n */\n const chainsThatRequireLowercaseAddress: Chain[] = ['EVM', 'FLOW'];\n\n normalizedAddress = chainsThatRequireLowercaseAddress.includes(chain)\n ? normalizedAddress?.toLowerCase()\n : normalizedAddress;\n\n return normalizedAddress;\n};\n","import type { Chain } from '../../../chain';\nimport { splitWalletProviderKey } from '../../walletProvider/splitWalletProviderKey';\nimport { normalizeAddress } from '../normalizeAddress';\n\ntype CreateWalletAccountIdParams = {\n address: string;\n chain: Chain;\n walletProviderKey: string;\n};\n\nexport const formatWalletAccountId = ({\n address,\n chain,\n walletProviderKey,\n}: CreateWalletAccountIdParams): string => {\n const { normalizedWalletNameWithChain } =\n splitWalletProviderKey(walletProviderKey);\n\n const normalizedAddress = normalizeAddress(address, chain);\n\n return `${normalizedWalletNameWithChain}:${normalizedAddress}`;\n};\n","import type { UnverifiedWalletAccount } from '../../unverifiedWalletAccounts';\nimport type { WalletAccount } from '../../walletAccount';\nimport { formatWalletAccountId } from '../formatWalletAccountId';\n\ntype ConvertUnverifiedWalletAccountToWalletAccountParams = {\n unverifiedWalletAccount: UnverifiedWalletAccount;\n};\n\nexport const convertUnverifiedWalletAccountToWalletAccount = ({\n unverifiedWalletAccount,\n}: ConvertUnverifiedWalletAccountToWalletAccountParams): WalletAccount => ({\n address: unverifiedWalletAccount.address,\n addressesWithTypes: unverifiedWalletAccount.addressesWithTypes,\n chain: unverifiedWalletAccount.chain,\n id: formatWalletAccountId({\n address: unverifiedWalletAccount.address,\n chain: unverifiedWalletAccount.chain,\n walletProviderKey: unverifiedWalletAccount.walletProviderKey,\n }),\n lastSelectedAt: unverifiedWalletAccount.lastSelectedAt,\n verifiedCredentialId: null,\n walletProviderKey: unverifiedWalletAccount.walletProviderKey,\n});\n","import type { Chain } from '../../../chain';\n\ntype NormalizeWalletNameWithChainParams = {\n chain: Chain;\n displayName: string;\n};\n\n/**\n * Format the raw wallet name and chain to get the value we can use for\n * verified credentials' `walletName` field.\n */\nexport const normalizeWalletNameWithChain = ({\n displayName,\n chain,\n}: NormalizeWalletNameWithChainParams): string => {\n const sanitizedWalletName = displayName\n .replace(/[^a-zA-Z0-9]/g, '')\n .toLowerCase();\n\n const chainLowered = chain.toLocaleLowerCase();\n\n if (sanitizedWalletName.endsWith(chainLowered)) {\n return sanitizedWalletName;\n }\n\n return `${sanitizedWalletName}${chainLowered}`;\n};\n","import type { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { Chain } from '../../../chain';\nimport { normalizeWalletNameWithChain } from '../normalizeWalletNameWithChain';\n\ntype FormatWalletProviderKeyParams = {\n chain: Chain;\n displayName: string;\n suffix?: string;\n walletProviderType: WalletProviderEnum;\n};\n\n/**\n * Assembles the wallet provider key from the wallet name, chain, and wallet provider type.\n *\n * The suffix is optional and can be used to add a uniquely identifying string to the key, which\n * might be necessary for some wallet providers (like Wallet Connect).\n *\n * IMPORTANT: Do NOT add a suffix unless absolutely necessary, as it will cause the wallet account\n * to not be able to find its wallet provider when connecting to a new device (it won't be possible\n * to determine the full key just from the Verified Credential data).\n */\nexport const formatWalletProviderKey = ({\n suffix,\n chain,\n displayName,\n walletProviderType,\n}: FormatWalletProviderKeyParams) => {\n const normalizedNameWithChain = normalizeWalletNameWithChain({\n chain,\n displayName,\n });\n\n return `${normalizedNameWithChain}:${walletProviderType}${\n suffix ? `:${suffix}` : ''\n }`;\n};\n","import type { JwtVerifiedCredential } 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 { getChainFromVerifiedCredentialChain } from '../../../../../utils/getChainFromVerifiedCredentialChain';\nimport { formatWalletProviderKey } from '../../../utils/formatWalletProviderKey';\n\ntype GetWalletProviderKeyFromVerifiedCredentialParams = {\n verifiedCredential: JwtVerifiedCredential;\n};\n\nexport const getWalletProviderKeyFromVerifiedCredential = (\n { verifiedCredential }: GetWalletProviderKeyFromVerifiedCredentialParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const { walletProviderKeyMap } = core.state.get();\n\n const storedWalletProviderKey = walletProviderKeyMap[verifiedCredential.id];\n\n if (storedWalletProviderKey) {\n return { walletProviderKey: storedWalletProviderKey };\n }\n\n /**\n * We fallback to comprising the wallet provider key from walletName and walletProvider.\n *\n * Some wallet provider types (like Wallet Connect) also use a special suffix for their wallet provider\n * keys, so this won't be enough for them.\n * Therefore, for those specific wallet providers, the wallet account will remain without a wallet provider\n * and will require reconnection.\n * Read walletProvider.types.ts for more info.\n */\n assertDefined(\n verifiedCredential.walletName,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletName`\n );\n\n assertDefined(\n verifiedCredential.walletProvider,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletProvider`\n );\n\n assertDefined(\n verifiedCredential.chain,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing chain`\n );\n\n /**\n * Historically, walletNames did not include the chain name as a suffix.\n * This piece of logic simply ensures we normalize any legacy walletNames to conform.\n */\n const chain = getChainFromVerifiedCredentialChain(verifiedCredential.chain);\n\n const walletProviderKey = formatWalletProviderKey({\n chain,\n displayName: verifiedCredential.walletName,\n walletProviderType: verifiedCredential.walletProvider,\n });\n\n return { walletProviderKey };\n};\n","import type { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../../client/types';\nimport { assertDefined } from '../../../../utils/assertDefined';\nimport { getChainFromVerifiedCredentialChain } from '../../../../utils/getChainFromVerifiedCredentialChain';\nimport type { WalletAccount } from '../../walletAccount';\nimport { getWalletProviderKeyFromVerifiedCredential } from '../../walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential';\nimport { formatWalletAccountId } from '../formatWalletAccountId';\n\ntype ConvertVerifiedCredentialToWalletAccountParams = {\n verifiedCredential: JwtVerifiedCredential;\n};\n\nexport const convertVerifiedCredentialToWalletAccount = (\n { verifiedCredential }: ConvertVerifiedCredentialToWalletAccountParams,\n client: DynamicClient\n): WalletAccount => {\n assertDefined(\n verifiedCredential.address,\n 'Missing address in verified credential'\n );\n assertDefined(\n verifiedCredential.chain,\n 'Missing chain in verified credential'\n );\n\n const chain = getChainFromVerifiedCredentialChain(verifiedCredential.chain);\n\n const { walletProviderKey } = getWalletProviderKeyFromVerifiedCredential(\n {\n verifiedCredential,\n },\n client\n );\n\n const walletAccountId = formatWalletAccountId({\n address: verifiedCredential.address,\n chain,\n walletProviderKey,\n });\n\n return {\n address: verifiedCredential.address,\n addressesWithTypes: verifiedCredential.walletAdditionalAddresses,\n chain,\n id: walletAccountId,\n lastSelectedAt: verifiedCredential.lastSelectedAt ?? null,\n verifiedCredentialId: verifiedCredential.id,\n walletProviderKey,\n };\n};\n","import type { SdkUser } from '@dynamic-labs/sdk-api-core';\nimport { JwtVerifiedCredentialFormatEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../../client/types';\nimport type { UnverifiedWalletAccount } from '../../unverifiedWalletAccounts';\nimport { convertUnverifiedWalletAccountToWalletAccount } from '../../utils/convertUnverifiedWalletAccountToWalletAccount';\nimport { convertVerifiedCredentialToWalletAccount } from '../../utils/convertVerifiedCredentialToWalletAccount';\nimport type { WalletAccount } from '../../walletAccount';\n\ntype GetWalletAccountsFromStateParams = {\n unverifiedWalletAccounts: UnverifiedWalletAccount[];\n user: SdkUser | null;\n};\n\nexport const getWalletAccountsFromState = (\n { unverifiedWalletAccounts, user }: GetWalletAccountsFromStateParams,\n client: DynamicClient\n): WalletAccount[] => {\n const walletAccountsMap: Map<string, WalletAccount> = new Map();\n\n /**\n * Handle the unverified wallet accounts before the user verified credentials\n * so the later verified wallet accounts can override the unverified wallet accounts\n */\n unverifiedWalletAccounts.forEach((unverifiedWalletAccount) => {\n const walletAccount = convertUnverifiedWalletAccountToWalletAccount({\n unverifiedWalletAccount,\n });\n\n walletAccountsMap.set(walletAccount.id, walletAccount);\n });\n\n /**\n * Handle user verified credentials\n */\n const verifiedCredentials = user?.verifiedCredentials ?? [];\n\n verifiedCredentials\n .filter(\n (verified) =>\n verified.format === JwtVerifiedCredentialFormatEnum.Blockchain\n )\n .forEach((verifiedWalletAccount) => {\n const walletAccount = convertVerifiedCredentialToWalletAccount(\n {\n verifiedCredential: verifiedWalletAccount,\n },\n client\n );\n\n walletAccountsMap.set(walletAccount.id, walletAccount);\n });\n\n return Array.from(walletAccountsMap.values());\n};\n","import { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport type { WalletAccount } from '../walletAccount';\nimport { getWalletAccountsFromState } from './getWalletAccountsFromState';\n\n/**\n * Retrieves all wallet accounts associated with the current session.\n *\n * This function returns both verified and unverified wallet accounts,\n * combining data from user credentials and local unverified accounts.\n * You can differentiate between verified and unverified wallet accounts by\n * checking the `verifiedCredentialId` property.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An array of wallet accounts associated with the session.\n */\nexport const getWalletAccounts = (\n client = getDefaultClient()\n): WalletAccount[] => {\n const core = getCore(client);\n const { unverifiedWalletAccounts, user } = core.state.get();\n\n return getWalletAccountsFromState({ unverifiedWalletAccounts, user }, client);\n};\n","import { BaseError } from './base';\n\ntype NoWalletProviderFoundErrorParams = {\n walletProviderKey: string;\n};\n\nexport class NoWalletProviderFoundError extends BaseError {\n constructor({ walletProviderKey }: NoWalletProviderFoundErrorParams) {\n super({\n cause: null,\n code: 'no_wallet_provider_found_error',\n docsUrl: null,\n name: 'NoWalletProviderFoundError',\n shortMessage: `No wallet provider found with key: ${walletProviderKey}`,\n });\n }\n}\n","import type { DynamicClient } from '../../../client/types/DynamicClient';\nimport { getCore } from '../../../client/core/getCore';\n\n/**\n * Creates a service accessor function that manages service instantiation and caching.\n * The returned function will either retrieve an existing service from the registry or\n * create a new one using the provided builder function.\n *\n * @template - The type of service to be created/accessed\n * @param key - Unique identifier for the service in the registry\n * @param builder - Function that creates the service instance when called with a DynamicClient\n */\nexport const createRuntimeServiceAccessKey =\n <T>(key: string, builder: (client: DynamicClient) => T) =>\n (client: DynamicClient): T => {\n const { runtimeServices } = getCore(client);\n\n const currentService = runtimeServices.getByKey<T>(key);\n\n if (currentService) {\n return currentService;\n }\n\n const service = builder(client);\n\n runtimeServices.register(key, service);\n\n return service;\n };\n","import type { DynamicClient } from '../../../../client/types';\nimport { emitEvent } from '../../../clientEvents';\nimport type { WalletProvider } from '../../walletProvider/walletProvider.types';\nimport type { WalletProviderRegistry } from '../walletProviderRegistry.types';\n\n/**\n * Creates a new wallet provider registry that manages wallet providers with priority-based registration.\n *\n * @returns The wallet provider registry instance\n *\n * @example\n * ```typescript\n * const registry = createWalletProviderRegistry();\n *\n * registry.register({\n * priority: WalletProviderPriority.WALLET_SDK,\n * walletProvider: myWalletProvider\n * });\n *\n * const provider = registry.getByKey('my-wallet-key');\n * const providers = registry.listProviders();\n * ```\n */\nexport const createWalletProviderRegistry = (\n client: DynamicClient\n): WalletProviderRegistry => {\n const registry = new Map<\n string,\n { priority: number; walletProvider: WalletProvider }\n >();\n\n return {\n getByKey: (key) => registry.get(key)?.walletProvider,\n listProviders: () =>\n Array.from(registry.values()).map((v) => v.walletProvider),\n register: (args) => {\n const existingEntry = registry.get(args.walletProvider.key);\n\n if (existingEntry) {\n if (existingEntry.priority < args.priority) {\n registry.set(args.walletProvider.key, args);\n\n emitEvent(\n {\n args: { walletProviderKey: args.walletProvider.key },\n event: 'walletProviderChanged',\n },\n client\n );\n }\n } else {\n registry.set(args.walletProvider.key, args);\n\n emitEvent(\n {\n args: { walletProvider: args.walletProvider },\n event: 'walletProviderRegistered',\n },\n client\n );\n\n emitEvent(\n {\n args: { walletProviderKey: args.walletProvider.key },\n event: 'walletProviderChanged',\n },\n client\n );\n }\n },\n unregister: (key) => {\n registry.delete(key);\n\n emitEvent(\n {\n args: { walletProviderKey: key },\n event: 'walletProviderUnregistered',\n },\n client\n );\n },\n };\n};\n","import { createRuntimeServiceAccessKey } from '../../../../services/runtimeServices';\nimport { createWalletProviderRegistry } from '../createWalletProviderRegistry';\n\n/**\n * This function provides access to a shared instance of the wallet provider registry.\n *\n * It ensures that the same registry instance is used throughout the client to maintaining\n * consistency of registered wallet providers across different parts of the codebase.\n *\n * @returns The wallet provider registry instance\n *\n * @example\n * ```typescript\n * // Get the registry instance\n * const registry = getWalletProviderRegistry();\n *\n * // Register a wallet provider\n * registry.register({\n * priority: WalletProviderPriority.WALLET_SDK,\n * walletProvider: myWalletProvider\n * });\n *\n * // Retrieve a specific provider\n * const provider = registry.getByKey('metamaskevm');\n * ```\n */\nexport const getWalletProviderRegistry = createRuntimeServiceAccessKey(\n 'walletProviderRegistry',\n (client) => createWalletProviderRegistry(client)\n);\n","import type { WalletProvider } from '../walletProvider/walletProvider.types';\n\nexport enum WalletProviderPriority {\n /**\n * Highest priority should be used by wallet providers that implement\n * the most reliable wallet integration.\n * example: The SDK provided by the wallet provider.\n */\n WALLET_SDK = 100,\n /**\n * Medium priority should be used by wallet providers that implement\n * a wallet integration via some reliable standard.\n * example: A wallet provider that uses EIP6963 announcement.\n */\n WALLET_SELF_ANNOUNCEMENT_STANDARD = 50,\n /**\n * Low priority should be used by wallet providers that implement\n * a wallet integration on a less reliable standard.\n * example: A wallet provider that uses window.ethereum, where the\n * window key can be overridden by other extensions.\n */\n WINDOW_INJECT = 20,\n}\n\nexport type WalletProviderRegistry = {\n /**\n * Retrieves a wallet provider by its key.\n * @param key - The key of the wallet provider.\n * @returns The wallet provider.\n */\n getByKey: (key: string) => WalletProvider | undefined;\n /**\n * Retrieves all wallet providers.\n * @returns The wallet providers.\n */\n listProviders: () => WalletProvider[];\n /**\n * Registers a wallet provider.\n * @param args - The arguments for the wallet provider.\n */\n register: (args: {\n priority: WalletProviderPriority;\n walletProvider: WalletProvider;\n }) => void;\n /**\n * Unregisters a wallet provider.\n * @param key - The key of the wallet provider.\n */\n unregister: (key: string) => void;\n};\n","import type { DynamicClient } from '../../../../client/types';\nimport { NoWalletProviderFoundError } from '../../../../errors/NoWalletProviderFoundError';\nimport type { WalletAccount } from '../../walletAccount';\nimport { getWalletProviderRegistry } from '../../walletProviderRegistry';\n\ntype GetWalletProviderFromWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\nexport const getWalletProviderFromWalletAccount = (\n { walletAccount }: GetWalletProviderFromWalletAccountParams,\n client: DynamicClient\n) => {\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = walletProviderRegistry.getByKey(\n walletAccount.walletProviderKey\n );\n\n if (!walletProvider) {\n throw new NoWalletProviderFoundError({\n walletProviderKey: walletAccount.walletProviderKey,\n });\n }\n\n return walletProvider;\n};\n","export const DYNAMIC_AUTH_COOKIE_NAME = 'DYNAMIC_JWT_TOKEN';\n","import type { DynamicClient } from '../../../client/types';\nimport { emitEvent } from '../../clientEvents';\nimport { getWalletAccounts } from '../getWalletAccounts';\n\n/**\n * Emits the `walletAccountsChanged` event.\n */\nexport const emitWalletAccountsChangedEvent = (client: DynamicClient): void => {\n const walletAccounts = getWalletAccounts(client);\n\n emitEvent(\n {\n args: { walletAccounts },\n event: 'walletAccountsChanged',\n },\n client\n );\n};\n","import { getCore } from '../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../client/types';\nimport { emitWalletAccountsChangedEvent } from '../../../wallets/emitWalletAccountsChangedEvent';\nimport { getWalletAccountsFromState } from '../../../wallets/getWalletAccounts/getWalletAccountsFromState';\n\ntype CheckAndRaiseWalletAccountsChangedEventParams = {\n previousState: Readonly<DynamicCoreState>;\n};\n\nexport const checkAndRaiseWalletAccountsChangedEvent = (\n { previousState }: CheckAndRaiseWalletAccountsChangedEventParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const walletAccountsHashBefore = getWalletAccountsHash(previousState, client);\n\n const walletAccountsHashAfter = getWalletAccountsHash(\n core.state.get(),\n client\n );\n\n if (walletAccountsHashBefore !== walletAccountsHashAfter) {\n emitWalletAccountsChangedEvent(client);\n }\n};\n\nconst getWalletAccountsHash = (\n state: Readonly<DynamicCoreState>,\n client: DynamicClient\n) =>\n getWalletAccountsFromState(state, client)\n .map((walletAccount) => JSON.stringify(walletAccount))\n .sort()\n .join('-');\n","import type { DynamicClient } from '../../../client/types';\nimport { getWalletProviderRegistry } from '../walletProviderRegistry';\n\n/**\n * Get all available wallet providers to interact with internally.\n */\nexport const getWalletProviders = (client: DynamicClient) => {\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n return walletProviderRegistry.listProviders();\n};\n","import type { WalletProvider } from '../../wallets/walletProvider';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport type { WaasWalletProvider } from '../waas.types';\n\nexport const isWaasWalletProvider = (\n walletProvider: WalletProvider\n): walletProvider is WaasWalletProvider => {\n return walletProvider.key.includes(\n DYNAMIC_WAAS_METADATA.normalizedWalletName\n );\n};\n","import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../client/types/DynamicClient';\nimport type { Chain } from '../../chain';\nimport { getWalletProviders } from '../../wallets/getWalletProviders';\nimport { formatWalletProviderKey } from '../../wallets/utils/formatWalletProviderKey';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\nimport type { WaasWalletProvider } from '../waas.types';\n\ntype FindWaasWalletProviderByChainParams = {\n chain: Chain;\n};\n\nexport const findWaasWalletProviderByChain = (\n { chain }: FindWaasWalletProviderByChainParams,\n client: DynamicClient\n): WaasWalletProvider | null => {\n const providers = getWalletProviders(client);\n\n const waasProviderKey = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType: WalletProviderEnum.EmbeddedWallet,\n });\n\n const waasProvider = providers.find(\n (provider) => provider.key === waasProviderKey && provider.chain === chain\n );\n\n if (!waasProvider || !isWaasWalletProvider(waasProvider)) {\n return null;\n }\n\n return waasProvider;\n};\n","import type { WalletAccount } from '../../wallets/walletAccount';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\n\ntype IsWaasWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/**\n * This function determines whether the provided wallet account is a Dynamic\n * WaaS wallet account.\n *\n * @param params.walletAccount - The wallet account to check.\n * @returns True if the wallet account is a WaaS wallet account, false otherwise.\n */\nexport const isWaasWalletAccount = ({\n walletAccount,\n}: IsWaasWalletAccountParams): boolean => {\n return walletAccount.walletProviderKey.includes(\n DYNAMIC_WAAS_METADATA.normalizedWalletName\n );\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { getWalletAccounts } from '../../wallets/getWalletAccounts';\nimport { findWaasWalletProviderByChain } from '../findWaasWalletProviderByChain';\nimport { isWaasWalletAccount } from '../isWaasWalletAccount';\n\nexport const restoreUserSharesForAllWalletAccounts = async (\n client: DynamicClient\n) => {\n const walletAccounts = getWalletAccounts(client);\n\n const waasWalletAccounts = walletAccounts.filter((walletAccount) =>\n isWaasWalletAccount({ walletAccount })\n );\n\n await Promise.all(\n waasWalletAccounts.map(async (walletAccount) => {\n const provider = findWaasWalletProviderByChain(\n { chain: walletAccount.chain },\n client\n );\n\n /**\n * The environment might not have the embedded wallet extensions installed.\n * In that case there is no provider for the chain and we can skip restoring the user share.\n */\n if (!provider) return;\n\n return provider.restoreUserShareForWalletAccount({ walletAccount });\n })\n );\n};\n","import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport type { DynamicCoreState } from '../../../client/core/types';\nimport type { DynamicClient } from '../../../client/types';\nimport { setCookie } from '../../../utils/setCookie';\nimport { isCookieEnabled } from '../../projectSettings/isCookieEnabled';\nimport { restoreUserSharesForAllWalletAccounts } from '../../waas/restoreUserSharesForAllWalletAccounts';\nimport { DYNAMIC_AUTH_COOKIE_NAME } from '../consts';\nimport { checkAndRaiseWalletAccountsChangedEvent } from './checkAndRaiseWalletAccountsChangedEvent';\n\ntype UpdateAuthFromVerifyResponseParams = {\n response: VerifyResponse;\n};\n\nexport const updateAuthFromVerifyResponse = (\n { response }: UpdateAuthFromVerifyResponseParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const previousState = { ...core.state.get() };\n\n const { user, minifiedJwt, jwt, expiresAt, mfaToken } = response;\n\n // Expires at is in seconds, so we need to convert it to milliseconds\n const sessionExpiresAt = new Date(expiresAt * 1000);\n\n const newState: Partial<DynamicCoreState> = {\n legacyToken: jwt ?? null,\n sessionExpiresAt: sessionExpiresAt,\n token: minifiedJwt ?? null,\n user,\n };\n\n // only override the mfaToken if a new one is provided in the response\n if (mfaToken) {\n newState.mfaToken = mfaToken;\n }\n\n core.state.set(newState);\n\n /**\n * For customers using a sandbox environment with cookies enabled, we need to set the cookie\n * programmatically because Redcoast won't set the cookie via headers. We set the cookie programmatically\n * so customers can access the cookie from document.cookie consistently between sandbox and live environments.\n */\n if (minifiedJwt && isCookieEnabled(client)) {\n const expireDate = sessionExpiresAt.toUTCString();\n\n setCookie(\n `${DYNAMIC_AUTH_COOKIE_NAME}=${minifiedJwt}; expires=${expireDate}; path=/; SameSite=Lax`\n );\n }\n\n checkAndRaiseWalletAccountsChangedEvent({ previousState }, client);\n\n // if the user is logging in, we should restore user shares\n // for all wallet accounts for performance reasons\n const isUserLoggingIn = !previousState.user && Boolean(newState.user);\n if (isUserLoggingIn) {\n void restoreUserSharesForAllWalletAccounts(client);\n }\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { NoWalletProviderFoundError } from '../../../errors/NoWalletProviderFoundError';\nimport { getWalletProviders } from '../getWalletProviders';\n\ntype GetWalletProviderByKeyParams = {\n walletProviderKey: string;\n};\n\nexport const getWalletProviderByKey = (\n { walletProviderKey }: GetWalletProviderByKeyParams,\n client: DynamicClient\n) => {\n const walletProviders = getWalletProviders(client);\n\n const walletProvider = walletProviders.find(\n (walletProvider) => walletProvider.key === walletProviderKey\n );\n\n if (!walletProvider) {\n throw new NoWalletProviderFoundError({ walletProviderKey });\n }\n\n return walletProvider;\n};\n","import type { DynamicClient } from '../../../../client/types/DynamicClient';\nimport type { WalletAccount } from '../../walletAccount';\n\ntype GetVerifiedCredentialForWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\nexport const getVerifiedCredentialForWalletAccount = (\n { walletAccount }: GetVerifiedCredentialForWalletAccountParams,\n client: DynamicClient\n) => {\n return client.user?.verifiedCredentials.find(\n (vc) => vc.id === walletAccount.verifiedCredentialId\n );\n};\n"],"mappings":"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"}
package/dist/index.cjs.js CHANGED
@@ -1,9 +1,9 @@
1
- const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-DM3nd8O1.cjs.js');
2
- const require_constants = require('./constants-COTx8_KG.cjs.js');
3
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-B96b7nLc.cjs.js');
4
- const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-CZEDBXNT.cjs.js');
5
- const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-DuMMt1dJ.cjs.js');
6
- const require_InvalidParamError = require('./InvalidParamError-quxEncyd.cjs.js');
1
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-Cn6o8x1l.cjs.js');
2
+ const require_constants = require('./constants-CVYjAuVg.cjs.js');
3
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-53sID_KI.cjs.js');
4
+ const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-Bm18u46b.cjs.js');
5
+ const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-DPT7o7G5.cjs.js');
6
+ const require_InvalidParamError = require('./InvalidParamError-Dar1x8VB.cjs.js');
7
7
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
8
8
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
9
9
  let zod_mini = require("zod/mini");
@@ -962,6 +962,45 @@ var MissingUserVerificationError = class extends require_constants.BaseError {
962
962
  }
963
963
  };
964
964
 
965
+ //#endregion
966
+ //#region src/errors/NetworkAddingUnavailableError.ts
967
+ var NetworkAddingUnavailableError = class extends require_constants.BaseError {
968
+ constructor({ walletProviderKey, originalError, extraMessages }) {
969
+ const cause = originalError instanceof Error ? originalError : null;
970
+ super({
971
+ cause,
972
+ code: "network_adding_unavailable",
973
+ docsUrl: null,
974
+ metaMessages: [`Wallet provider key: ${walletProviderKey}`, ...extraMessages ?? []],
975
+ name: "NetworkAddingUnavailableError",
976
+ shortMessage: `Network adding is not available for this wallet provider. The user should manually add the network in their wallet`
977
+ });
978
+ }
979
+ };
980
+
981
+ //#endregion
982
+ //#region src/errors/NetworkNotAddedError.ts
983
+ var NetworkNotAddedError = class extends require_constants.BaseError {
984
+ networkData;
985
+ constructor({ networkData, networkId, originalError, walletProviderKey }) {
986
+ const cause = originalError instanceof Error ? originalError : null;
987
+ super({
988
+ cause,
989
+ code: "network_not_added",
990
+ docsUrl: null,
991
+ metaMessages: [
992
+ `Wallet provider key: ${walletProviderKey}`,
993
+ `Network ID: ${networkId}`,
994
+ "The network is not added to the wallet. If the wallet provider supports adding networks, call the `addNetwork` method before switching.",
995
+ "The network data is available in the error payload as `error.networkData` and can be passed directly to `addNetwork`."
996
+ ],
997
+ name: "NetworkNotAddedError",
998
+ shortMessage: `Cannot switch to network ${networkId} because it is not added to the wallet. If the wallet provider supports it, call \`addNetwork\` with the network data from \`error.networkData\` first.`
999
+ });
1000
+ this.networkData = networkData;
1001
+ }
1002
+ };
1003
+
965
1004
  //#endregion
966
1005
  //#region src/errors/NetworkSwitchingUnavailableError.ts
967
1006
  var NetworkSwitchingUnavailableError = class extends require_constants.BaseError {
@@ -1351,7 +1390,7 @@ const encodeBase64Url = (str) => {
1351
1390
  const APPLE_RESPONSE_MODE = "form_post";
1352
1391
  const APPLE_RESPONSE_TYPE = "code id_token";
1353
1392
  /** Helper function to add OAuth URL parameters to a given base URL. */
1354
- const addOAuthUrlParams = (provider, baseUrl) => {
1393
+ const addOAuthUrlParams = (provider, baseUrl, options = {}) => {
1355
1394
  require_constants.assertDefined(provider.clientId, "Client ID not found");
1356
1395
  require_constants.assertDefined(provider.provider, "Provider type not found");
1357
1396
  require_constants.assertDefined(provider.redirectUrl, "Redirect URL not found");
@@ -1363,7 +1402,10 @@ const addOAuthUrlParams = (provider, baseUrl) => {
1363
1402
  baseUrl.searchParams.delete("client_id");
1364
1403
  baseUrl.searchParams.set("client_key", provider.clientId);
1365
1404
  }
1366
- if (providerType === _dynamic_labs_sdk_api_core.ProviderEnum.Google) baseUrl.searchParams.set("access_type", "offline");
1405
+ if (providerType === _dynamic_labs_sdk_api_core.ProviderEnum.Google) {
1406
+ baseUrl.searchParams.set("access_type", "offline");
1407
+ if (options.isGoogleDriveBackupEnabled) baseUrl.searchParams.set("prompt", "consent");
1408
+ }
1367
1409
  if (providerType === _dynamic_labs_sdk_api_core.ProviderEnum.Apple) {
1368
1410
  baseUrl.searchParams.set("response_mode", APPLE_RESPONSE_MODE);
1369
1411
  baseUrl.searchParams.set("response_type", APPLE_RESPONSE_TYPE);
@@ -1401,7 +1443,8 @@ const buildOAuthUrl = async (core, provider) => {
1401
1443
  require_constants.assertDefined(projectSettings.providers, "Project providers not found");
1402
1444
  const socialProvider = projectSettings.providers.find((p) => p.provider === provider);
1403
1445
  require_constants.assertDefined(socialProvider, `Social provider ${provider} not supported`);
1404
- const socialProviderUrl = addOAuthUrlParams(socialProvider, getOAuthBaseUrl(socialProvider));
1446
+ const isGoogleDriveBackupEnabled = projectSettings.sdk.waas?.backupOptions?.includes(_dynamic_labs_sdk_api_core.WaasBackupOptionsEnum.GoogleDrive);
1447
+ const socialProviderUrl = addOAuthUrlParams(socialProvider, getOAuthBaseUrl(socialProvider), { isGoogleDriveBackupEnabled });
1405
1448
  const usingPkce = providersRequiringPkce.includes(provider);
1406
1449
  const state = require_constants.randomString(32);
1407
1450
  const codeVerifier = require_constants.randomString(43);
@@ -1766,6 +1809,62 @@ const createCryptoDotComPayment = async (paymentParams, client = require_constan
1766
1809
  });
1767
1810
  };
1768
1811
 
1812
+ //#endregion
1813
+ //#region src/modules/funding/kraken/createKrakenExchangeTransfer/createKrakenExchangeTransfer.ts
1814
+ /**
1815
+ * Creates a Kraken exchange transfer to send crypto from a Kraken account to a whitelisted address
1816
+ *
1817
+ * @param transferParams - The parameters for the transfer including accountId
1818
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1819
+ * @returns The created transfer
1820
+ */
1821
+ const createKrakenExchangeTransfer = async (transferParams, client = require_constants.getDefaultClient()) => {
1822
+ const core = require_constants.getCore(client);
1823
+ const apiClient = require_constants.createApiClient({ includeMfaToken: true }, client);
1824
+ const { accountId, ...createExchangeTransferRequest } = transferParams;
1825
+ return await apiClient.postExchangeAccountTransfer({
1826
+ accountId,
1827
+ createExchangeTransferRequest,
1828
+ environmentId: core.environmentId,
1829
+ exchangeKey: _dynamic_labs_sdk_api_core.ExchangeKeyEnum.Kraken
1830
+ });
1831
+ };
1832
+
1833
+ //#endregion
1834
+ //#region src/modules/funding/kraken/getKrakenAccounts/getKrakenAccounts.ts
1835
+ /**
1836
+ * Gets the Kraken accounts (balances) for the authenticated user
1837
+ *
1838
+ * @param [params] GetKrakenAccountsParams - Optional filters for the accounts.
1839
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1840
+ * @returns Array of Kraken accounts with balances
1841
+ */
1842
+ const getKrakenAccounts = async (params, client = require_constants.getDefaultClient()) => {
1843
+ const core = require_constants.getCore(client);
1844
+ return await require_constants.createApiClient({ includeMfaToken: true }, client).getUserAccounts({
1845
+ chainName: params?.chainName,
1846
+ environmentId: core.environmentId,
1847
+ exchangeKey: _dynamic_labs_sdk_api_core.ExchangeKeyEnum.Kraken,
1848
+ networkId: params?.networkId
1849
+ });
1850
+ };
1851
+
1852
+ //#endregion
1853
+ //#region src/modules/funding/kraken/getKrakenWhitelistedAddresses/getKrakenWhitelistedAddresses.ts
1854
+ /**
1855
+ * Gets the whitelisted addresses for Kraken transfers
1856
+ *
1857
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1858
+ * @returns Transfer destinations response with whitelisted addresses
1859
+ */
1860
+ const getKrakenWhitelistedAddresses = async (client = require_constants.getDefaultClient()) => {
1861
+ const core = require_constants.getCore(client);
1862
+ return await require_constants.createApiClient({ includeMfaToken: true }, client).getExchangeTransferDestinations({
1863
+ environmentId: core.environmentId,
1864
+ exchangeKey: _dynamic_labs_sdk_api_core.ExchangeKeyEnum.Kraken
1865
+ });
1866
+ };
1867
+
1769
1868
  //#endregion
1770
1869
  //#region src/modules/initializeClient/waitForClientInitialized/waitForClientInitialized.ts
1771
1870
  /**
@@ -1885,6 +1984,41 @@ const fetchLegacyWalletBook = async (client) => {
1885
1984
  }
1886
1985
  };
1887
1986
 
1987
+ //#endregion
1988
+ //#region src/modules/legacyWalletBook/getWalletConnectCatalog/shouldFilterWallet/shouldFilterWallet.ts
1989
+ /**
1990
+ * Embedded wallet keys that should be filtered out from the WalletConnect catalog.
1991
+ * These wallets are not meant to be displayed in wallet selection lists.
1992
+ */
1993
+ const EMBEDDED_WALLET_KEYS = [
1994
+ "magicemailotp",
1995
+ "magiclink",
1996
+ "magicsocial",
1997
+ "turnkey",
1998
+ "turnkeyhd",
1999
+ "zerodev",
2000
+ "dynamicwaas",
2001
+ "coinbasempc",
2002
+ "mpcvault",
2003
+ "mpcwallet"
2004
+ ];
2005
+ /**
2006
+ * Checks if a wallet should be filtered out from the WalletConnect catalog.
2007
+ *
2008
+ * @param walletKey - The wallet key identifier.
2009
+ * @param wallet - The wallet schema to check.
2010
+ * @returns True if the wallet should be filtered out, false otherwise.
2011
+ */
2012
+ const shouldFilterWallet = (walletKey, wallet) => {
2013
+ if (EMBEDDED_WALLET_KEYS.includes(walletKey)) return true;
2014
+ if (!wallet.walletConnect || !wallet.walletConnect.sdks.includes("sign_v2")) return true;
2015
+ const hasInjectedConfig = wallet.injectedConfig && wallet.injectedConfig.length > 0;
2016
+ const hasMobileLinks = Boolean(wallet.mobile?.androidId || wallet.mobile?.iosId || wallet.mobile?.native || wallet.mobile?.universal);
2017
+ const hasDesktopLinks = Boolean(wallet.desktop?.chromeId || wallet.desktop?.edgeId || wallet.desktop?.firefoxId || wallet.desktop?.operaId || wallet.desktop?.safariId || wallet.desktop?.universal);
2018
+ if (hasInjectedConfig && !hasMobileLinks && !hasDesktopLinks) return true;
2019
+ return false;
2020
+ };
2021
+
1888
2022
  //#endregion
1889
2023
  //#region src/modules/legacyWalletBook/getSpriteUrl/getSpriteUrl.ts
1890
2024
  /**
@@ -1895,6 +2029,21 @@ const fetchLegacyWalletBook = async (client) => {
1895
2029
  */
1896
2030
  const getSpriteUrl = ({ spriteId }) => `${require_constants.DYNAMIC_ICONIC_SPRITE_URL}#${spriteId}`;
1897
2031
 
2032
+ //#endregion
2033
+ //#region src/modules/legacyWalletBook/getWalletConnectCatalog/transformGroup/transformGroup.ts
2034
+ /**
2035
+ * Transforms a wallet group schema into a WalletConnect catalog group.
2036
+ */
2037
+ const transformGroup = ({ group }) => {
2038
+ const spriteId = group.brand?.spriteId ?? "";
2039
+ return {
2040
+ key: group.key,
2041
+ name: group.name,
2042
+ primaryColor: group.brand?.primaryColor,
2043
+ spriteUrl: spriteId ? getSpriteUrl({ spriteId }) : ""
2044
+ };
2045
+ };
2046
+
1898
2047
  //#endregion
1899
2048
  //#region src/modules/legacyWalletBook/getWalletConnectCatalog/getChainFromWalletSchema/getChainFromWalletSchema.ts
1900
2049
  /**
@@ -2030,54 +2179,7 @@ const getChainFromWalletSchema = ({ wallet, walletKey }) => {
2030
2179
  };
2031
2180
 
2032
2181
  //#endregion
2033
- //#region src/modules/legacyWalletBook/getWalletConnectCatalog/shouldFilterWallet/shouldFilterWallet.ts
2034
- /**
2035
- * Embedded wallet keys that should be filtered out from the WalletConnect catalog.
2036
- * These wallets are not meant to be displayed in wallet selection lists.
2037
- */
2038
- const EMBEDDED_WALLET_KEYS = [
2039
- "magicemailotp",
2040
- "magiclink",
2041
- "magicsocial",
2042
- "turnkey",
2043
- "turnkeyhd",
2044
- "zerodev",
2045
- "dynamicwaas",
2046
- "coinbasempc",
2047
- "mpcvault",
2048
- "mpcwallet"
2049
- ];
2050
- /**
2051
- * Checks if a wallet should be filtered out from the WalletConnect catalog.
2052
- *
2053
- * @param walletKey - The wallet key identifier.
2054
- * @param wallet - The wallet schema to check.
2055
- * @returns True if the wallet should be filtered out, false otherwise.
2056
- */
2057
- const shouldFilterWallet = (walletKey, wallet) => {
2058
- if (EMBEDDED_WALLET_KEYS.includes(walletKey)) return true;
2059
- if (!wallet.walletConnect || !wallet.walletConnect.sdks.includes("sign_v2")) return true;
2060
- const hasInjectedConfig = wallet.injectedConfig && wallet.injectedConfig.length > 0;
2061
- const hasMobileLinks = Boolean(wallet.mobile?.androidId || wallet.mobile?.iosId || wallet.mobile?.native || wallet.mobile?.universal);
2062
- const hasDesktopLinks = Boolean(wallet.desktop?.chromeId || wallet.desktop?.edgeId || wallet.desktop?.firefoxId || wallet.desktop?.operaId || wallet.desktop?.safariId || wallet.desktop?.universal);
2063
- if (hasInjectedConfig && !hasMobileLinks && !hasDesktopLinks) return true;
2064
- return false;
2065
- };
2066
-
2067
- //#endregion
2068
- //#region src/modules/legacyWalletBook/getWalletConnectCatalog/getWalletConnectCatalog.ts
2069
- /**
2070
- * Transforms a wallet group schema into a WalletConnect catalog group.
2071
- */
2072
- const transformGroup = ({ group }) => {
2073
- const spriteId = group.brand?.spriteId ?? "";
2074
- return {
2075
- key: group.key,
2076
- name: group.name,
2077
- primaryColor: group.brand?.primaryColor,
2078
- spriteUrl: spriteId ? getSpriteUrl({ spriteId }) : ""
2079
- };
2080
- };
2182
+ //#region src/modules/legacyWalletBook/getWalletConnectCatalog/transformWallet/transformWallet.ts
2081
2183
  /**
2082
2184
  * Transforms a wallet schema into a WalletConnect catalog wallet entry.
2083
2185
  */
@@ -2104,6 +2206,9 @@ const transformWallet = ({ wallet, walletKey }) => {
2104
2206
  spriteUrl: spriteId ? getSpriteUrl({ spriteId }) : ""
2105
2207
  };
2106
2208
  };
2209
+
2210
+ //#endregion
2211
+ //#region src/modules/legacyWalletBook/getWalletConnectCatalog/transformWalletBook/transformWalletBook.ts
2107
2212
  /**
2108
2213
  * Transforms the legacy wallet book into a WalletConnect catalog structure.
2109
2214
  * Filters out embedded wallets and injected-only wallets.
@@ -2124,6 +2229,9 @@ const transformWalletBook = ({ walletBook }) => {
2124
2229
  wallets
2125
2230
  };
2126
2231
  };
2232
+
2233
+ //#endregion
2234
+ //#region src/modules/legacyWalletBook/getWalletConnectCatalog/getWalletConnectCatalog.ts
2127
2235
  /**
2128
2236
  * Retrieves the WalletConnect catalog from Dynamic's wallet book.
2129
2237
  *
@@ -3605,8 +3713,9 @@ const deleteUser = async (client = require_constants.getDefaultClient()) => {
3605
3713
  */
3606
3714
  const refreshUser = async (client = require_constants.getDefaultClient()) => {
3607
3715
  const core = require_constants.getCore(client);
3716
+ const apiClient = require_constants.createApiClient({}, client);
3608
3717
  const previousState = { ...core.state.get() };
3609
- const user = await require_constants.createApiClient({ headers: { "x-dynamic-convert-user-to-json": "true" } }, client).getAuthenticatedUser({ environmentId: core.environmentId });
3718
+ const user = await apiClient.getAuthenticatedUser({ environmentId: core.environmentId });
3610
3719
  core.state.set({ user });
3611
3720
  require_getVerifiedCredentialForWalletAccount.checkAndRaiseWalletAccountsChangedEvent({ previousState }, client);
3612
3721
  return user;
@@ -3735,18 +3844,29 @@ const getChainIdForAccountVerification = async ({ walletProvider }) => {
3735
3844
  const getSignInMessage = async ({ walletAccount }, client) => {
3736
3845
  const core = require_constants.getCore(client);
3737
3846
  const apiClient = require_constants.createApiClient({}, client);
3738
- const appUrl = core.metadata?.url;
3739
- require_constants.assertDefined(appUrl, "App URL is not set");
3740
- const url = new URL(appUrl);
3847
+ const universalLink = core.metadata?.universalLink;
3848
+ require_constants.assertDefined(universalLink, "Universal link is not set");
3849
+ const url = new URL(universalLink);
3850
+ const domain = url.host;
3741
3851
  const { nonce } = await apiClient.getNonce({ environmentId: core.environmentId });
3742
3852
  require_constants.assertDefined(nonce, "Failed to get nonce");
3743
3853
  const walletProvider = require_getVerifiedCredentialForWalletAccount.getWalletProviderFromWalletAccount({ walletAccount }, client);
3854
+ if (walletProvider.chain === "STARK")
3855
+ /**
3856
+ * Starknet requires the strings to be 31 chars long
3857
+ * Nonce - we need to keep full size for nonce verification on the backend (the backend shortens it to 31 chars)
3858
+ * Domain - we need to shorten the domain to 31 chars
3859
+ */
3860
+ return JSON.stringify({
3861
+ domain: domain.substring(0, 31),
3862
+ nonce
3863
+ });
3744
3864
  const statement = require_getNetworkProviderFromNetworkId.createSignInMessageStatement(client);
3745
3865
  return await require_getNetworkProviderFromNetworkId.formatSignInMessage({
3746
3866
  address: walletAccount.address,
3747
3867
  blockchainName: require_constants.CHAINS_INFO_MAP[walletProvider.chain].blockchainName,
3748
3868
  chainId: await getChainIdForAccountVerification({ walletProvider }),
3749
- domain: url.host,
3869
+ domain,
3750
3870
  issuedAt: (/* @__PURE__ */ new Date()).toISOString(),
3751
3871
  nonce,
3752
3872
  requestId: core.environmentId,
@@ -3791,11 +3911,13 @@ const verifyWalletAccountForSignInOrTransfer = async ({ walletAccount, isTransfe
3791
3911
  if (walletAccount.verifiedCredentialId) throw new WalletAccountAlreadyVerifiedError(walletAccount.address);
3792
3912
  const walletProvider = require_getVerifiedCredentialForWalletAccount.getWalletProviderFromWalletAccount({ walletAccount }, client);
3793
3913
  const { messageToSign, signature } = await proveWalletAccountOwnership({ walletAccount }, client);
3914
+ const { networkId } = await walletProvider.getActiveNetworkId();
3794
3915
  const response = await require_getNetworkProviderFromNetworkId.verifyMessageSignatureOwnership({
3795
3916
  addressesWithTypes: walletAccount.addressesWithTypes,
3796
3917
  chain: walletAccount.chain,
3797
3918
  isTransfer,
3798
3919
  messageToSign,
3920
+ networkId,
3799
3921
  signature,
3800
3922
  walletAddress: walletAccount.address,
3801
3923
  walletDisplayName: walletProvider.metadata.displayName,
@@ -3948,6 +4070,30 @@ const isWalletAccountVerified = ({ walletAccount }) => {
3948
4070
  return walletAccount.verifiedCredentialId !== null;
3949
4071
  };
3950
4072
 
4073
+ //#endregion
4074
+ //#region src/modules/wallets/networks/addNetwork/addNetwork.ts
4075
+ /**
4076
+ * Adds a network to the wallet provider.
4077
+ *
4078
+ * This function requests that the wallet provider add a network
4079
+ * to its list of available networks.
4080
+ *
4081
+ * @param params.networkData - The network configuration data to add to the wallet.
4082
+ * @param params.walletAccount - The wallet account to add the network for.
4083
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
4084
+ * @returns A promise that resolves when the network addition is complete.
4085
+ * @throws NetworkAddingUnavailableError If the wallet provider doesn't support adding networks.
4086
+ */
4087
+ const addNetwork = async ({ networkData, walletAccount }, client = require_constants.getDefaultClient()) => {
4088
+ const walletProvider = require_getVerifiedCredentialForWalletAccount.getWalletProviderByKey({ walletProviderKey: walletAccount.walletProviderKey }, client);
4089
+ if (walletProvider.addNetwork === void 0) throw new NetworkAddingUnavailableError({
4090
+ extraMessages: [`Wallet provider ${walletAccount.walletProviderKey} does not have addNetwork method`],
4091
+ originalError: null,
4092
+ walletProviderKey: walletAccount.walletProviderKey
4093
+ });
4094
+ return walletProvider.addNetwork({ networkData });
4095
+ };
4096
+
3951
4097
  //#endregion
3952
4098
  //#region src/modules/wallets/networks/getActiveNetworkData/getActiveNetworkData.ts
3953
4099
  /**
@@ -4108,13 +4254,30 @@ const selectPrimaryWalletAccount = async ({ walletAccount }, client = require_co
4108
4254
  }] }, client);
4109
4255
  };
4110
4256
 
4257
+ //#endregion
4258
+ //#region src/modules/wallets/disconnectWalletAccount/disconnectWalletAccount.ts
4259
+ /**
4260
+ * This function disconnects the specified wallet account with the wallet provider.
4261
+ *
4262
+ * The wallet account is not removed from the user's profile or from dynamic's state,
4263
+ * it is only responsible for terminating the connection with the wallet provider.
4264
+ */
4265
+ const disconnectWalletAccount = async ({ walletAccount }, client) => {
4266
+ try {
4267
+ await require_getVerifiedCredentialForWalletAccount.getWalletProviderFromWalletAccount({ walletAccount }, client).disconnectWalletAccount?.({ walletAccount });
4268
+ } catch (error) {
4269
+ if (error instanceof require_getVerifiedCredentialForWalletAccount.NoWalletProviderFoundError) return;
4270
+ throw error;
4271
+ }
4272
+ };
4273
+
4111
4274
  //#endregion
4112
4275
  //#region src/modules/wallets/removeWalletAccount/removeWalletAccount.ts
4113
4276
  /**
4114
4277
  * Removes a wallet account from the current session or user (if authenticated).
4115
4278
  *
4116
- * This function disconnects and removes the specified wallet account,
4117
- * updating both local state and server records (if there is an authenticated user).
4279
+ * This function both disconnects and removes the specified wallet account,
4280
+ * updating local state and server records (if there is an authenticated user).
4118
4281
  * For verified wallets, it will unlink them from the user's account.
4119
4282
  *
4120
4283
  * @param params.walletAccount - The wallet account to remove.
@@ -4124,12 +4287,7 @@ const selectPrimaryWalletAccount = async ({ walletAccount }, client = require_co
4124
4287
  const removeWalletAccount = async ({ walletAccount }, client = require_constants.getDefaultClient()) => {
4125
4288
  const core = require_constants.getCore(client);
4126
4289
  const apiClient = require_constants.createApiClient({}, client);
4127
- try {
4128
- await require_getVerifiedCredentialForWalletAccount.getWalletProviderFromWalletAccount({ walletAccount }, client).disconnectWalletAccount?.({ walletAccount });
4129
- } catch (error) {
4130
- if (error instanceof require_getVerifiedCredentialForWalletAccount.NoWalletProviderFoundError) return;
4131
- throw error;
4132
- }
4290
+ await disconnectWalletAccount({ walletAccount }, client);
4133
4291
  if (!walletAccount.verifiedCredentialId) {
4134
4292
  require_getNetworkProviderFromNetworkId.removeUnverifiedWalletAccount({ unverifiedWalletAccount: walletAccount }, client);
4135
4293
  return;
@@ -4285,6 +4443,8 @@ exports.MfaRateLimitedError = require_constants.MfaRateLimitedError;
4285
4443
  exports.MissingRedirectStorageStateError = MissingRedirectStorageStateError;
4286
4444
  exports.MissingSocialUrlParamError = MissingSocialUrlParamError;
4287
4445
  exports.MissingUserVerificationError = MissingUserVerificationError;
4446
+ exports.NetworkAddingUnavailableError = NetworkAddingUnavailableError;
4447
+ exports.NetworkNotAddedError = NetworkNotAddedError;
4288
4448
  exports.NetworkSwitchingUnavailableError = NetworkSwitchingUnavailableError;
4289
4449
  exports.NoAddressFoundError = NoAddressFoundError;
4290
4450
  exports.NoNetworkProvidersError = require_getNetworkProviderFromNetworkId.NoNetworkProvidersError;
@@ -4303,6 +4463,7 @@ exports.WalletAlreadyLinkedToAnotherUserError = require_getNetworkProviderFromNe
4303
4463
  exports.WalletProviderMethodUnavailableError = WalletProviderMethodUnavailableError;
4304
4464
  exports.acknowledgeRecoveryCodes = acknowledgeRecoveryCodes;
4305
4465
  exports.addCoinbaseOnrampOrderEventListener = addCoinbaseOnrampOrderEventListener;
4466
+ exports.addNetwork = addNetwork;
4306
4467
  exports.assertWalletAccountSigningAvailability = assertWalletAccountSigningAvailability;
4307
4468
  exports.assertWalletProviderMethodDefined = assertWalletProviderMethodDefined;
4308
4469
  exports.authenticateMfaRecoveryCode = authenticateMfaRecoveryCode;
@@ -4316,6 +4477,7 @@ exports.consumeMfaToken = require_isMfaRequiredForAction.consumeMfaToken;
4316
4477
  exports.createCoinbaseOnrampOrder = createCoinbaseOnrampOrder;
4317
4478
  exports.createCryptoDotComPayment = createCryptoDotComPayment;
4318
4479
  exports.createDynamicClient = createDynamicClient;
4480
+ exports.createKrakenExchangeTransfer = createKrakenExchangeTransfer;
4319
4481
  exports.createNewMfaRecoveryCodes = createNewMfaRecoveryCodes;
4320
4482
  exports.deleteMfaDevice = deleteMfaDevice;
4321
4483
  exports.deletePasskey = deletePasskey;
@@ -4330,6 +4492,8 @@ exports.getBalanceForAddress = getBalanceForAddress;
4330
4492
  exports.getCoinbaseBuyUrl = getCoinbaseBuyUrl;
4331
4493
  exports.getConnectedAddresses = getConnectedAddresses;
4332
4494
  exports.getDefaultClient = require_constants.getDefaultClient;
4495
+ exports.getKrakenAccounts = getKrakenAccounts;
4496
+ exports.getKrakenWhitelistedAddresses = getKrakenWhitelistedAddresses;
4333
4497
  exports.getMfaDevices = getMfaDevices;
4334
4498
  exports.getMfaMethods = require_isMfaRequiredForAction.getMfaMethods;
4335
4499
  exports.getMfaRecoveryCodes = getMfaRecoveryCodes;