@dynamic-labs-sdk/solana 1.30.3 → 1.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +22 -0
  2. package/dist/{createWalletProviderFromSolanaStandardWallet-7scwFRPx.cjs → addSolanaWalletStandardExtension-BtLeB7I_.cjs} +56 -10
  3. package/dist/addSolanaWalletStandardExtension-BtLeB7I_.cjs.map +1 -0
  4. package/dist/{createWalletProviderFromSolanaStandardWallet-Ct5daB5n.esm.js → addSolanaWalletStandardExtension-Dw0WpBQT.esm.js} +56 -4
  5. package/dist/addSolanaWalletStandardExtension-Dw0WpBQT.esm.js.map +1 -0
  6. package/dist/{addWaasSolanaExtension-BOCVVYOJ.esm.js → addWaasSolanaExtension-BJFGRV-L.esm.js} +2 -2
  7. package/dist/{addWaasSolanaExtension-BOCVVYOJ.esm.js.map → addWaasSolanaExtension-BJFGRV-L.esm.js.map} +1 -1
  8. package/dist/{addWaasSolanaExtension-C578HPQN.cjs → addWaasSolanaExtension-D38jCZMI.cjs} +2 -2
  9. package/dist/{addWaasSolanaExtension-C578HPQN.cjs.map → addWaasSolanaExtension-D38jCZMI.cjs.map} +1 -1
  10. package/dist/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.d.ts +14 -0
  11. package/dist/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.d.ts.map +1 -0
  12. package/dist/errors/MetaMaskDirectConnectNotSupportedError/index.d.ts +2 -0
  13. package/dist/errors/MetaMaskDirectConnectNotSupportedError/index.d.ts.map +1 -0
  14. package/dist/exports/metamask.d.ts +2 -0
  15. package/dist/exports/metamask.d.ts.map +1 -1
  16. package/dist/index.cjs +3 -4
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.esm.js +3 -4
  19. package/dist/index.esm.js.map +1 -1
  20. package/dist/metamask/addMetaMaskSolanaExtension/addMetaMaskSolanaExtension.d.ts +23 -0
  21. package/dist/metamask/addMetaMaskSolanaExtension/addMetaMaskSolanaExtension.d.ts.map +1 -0
  22. package/dist/metamask/addMetaMaskSolanaExtension/index.d.ts +2 -0
  23. package/dist/metamask/addMetaMaskSolanaExtension/index.d.ts.map +1 -0
  24. package/dist/metamask/connectWithMetaMaskUriSolana/connectWithMetaMaskUriSolana.d.ts.map +1 -1
  25. package/dist/metamask/createMetaMaskSolanaWalletProvider/createMetaMaskSolanaWalletProvider.d.ts +26 -6
  26. package/dist/metamask/createMetaMaskSolanaWalletProvider/createMetaMaskSolanaWalletProvider.d.ts.map +1 -1
  27. package/dist/metamask/getMetaMaskSolanaSdkWalletProviderKey/getMetaMaskSolanaSdkWalletProviderKey.d.ts +17 -0
  28. package/dist/metamask/getMetaMaskSolanaSdkWalletProviderKey/getMetaMaskSolanaSdkWalletProviderKey.d.ts.map +1 -0
  29. package/dist/metamask/getMetaMaskSolanaSdkWalletProviderKey/index.d.ts +2 -0
  30. package/dist/metamask/getMetaMaskSolanaSdkWalletProviderKey/index.d.ts.map +1 -0
  31. package/dist/metamask/warnMetaMaskSolanaIntegrationIncomplete/index.d.ts +2 -0
  32. package/dist/metamask/warnMetaMaskSolanaIntegrationIncomplete/index.d.ts.map +1 -0
  33. package/dist/metamask/warnMetaMaskSolanaIntegrationIncomplete/warnMetaMaskSolanaIntegrationIncomplete.d.ts +18 -0
  34. package/dist/metamask/warnMetaMaskSolanaIntegrationIncomplete/warnMetaMaskSolanaIntegrationIncomplete.d.ts.map +1 -0
  35. package/dist/metamask.cjs +258 -136
  36. package/dist/metamask.cjs.map +1 -1
  37. package/dist/metamask.esm.js +260 -140
  38. package/dist/metamask.esm.js.map +1 -1
  39. package/dist/{solanaTransferAmount-DJWF4X6z.cjs → solanaTransferAmount-B9KcoSis.cjs} +2 -2
  40. package/dist/{solanaTransferAmount-DJWF4X6z.cjs.map → solanaTransferAmount-B9KcoSis.cjs.map} +1 -1
  41. package/dist/{solanaTransferAmount-CGMhHg9s.esm.js → solanaTransferAmount-DMJb_djy.esm.js} +2 -2
  42. package/dist/{solanaTransferAmount-CGMhHg9s.esm.js.map → solanaTransferAmount-DMJb_djy.esm.js.map} +1 -1
  43. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  44. package/dist/waas.cjs +2 -2
  45. package/dist/waas.esm.js +2 -2
  46. package/dist/walletConnect.cjs +1 -1
  47. package/dist/walletConnect.esm.js +1 -1
  48. package/dist/walletStandard.cjs +2 -3
  49. package/dist/walletStandard.cjs.map +1 -1
  50. package/dist/walletStandard.esm.js +2 -3
  51. package/dist/walletStandard.esm.js.map +1 -1
  52. package/package.json +5 -6
  53. package/dist/addSolanaWalletStandardExtension-037R5her.esm.js +0 -59
  54. package/dist/addSolanaWalletStandardExtension-037R5her.esm.js.map +0 -1
  55. package/dist/addSolanaWalletStandardExtension-GFlxcKCD.cjs +0 -65
  56. package/dist/addSolanaWalletStandardExtension-GFlxcKCD.cjs.map +0 -1
  57. package/dist/createWalletProviderFromSolanaStandardWallet-7scwFRPx.cjs.map +0 -1
  58. package/dist/createWalletProviderFromSolanaStandardWallet-Ct5daB5n.esm.js.map +0 -1
  59. package/dist/metamask/metamask.types.d.ts +0 -14
  60. package/dist/metamask/metamask.types.d.ts.map +0 -1
  61. package/dist/metamask/utils/createMetaMaskSolanaController/createMetaMaskSolanaController.d.ts +0 -20
  62. package/dist/metamask/utils/createMetaMaskSolanaController/createMetaMaskSolanaController.d.ts.map +0 -1
  63. package/dist/metamask/utils/createMetaMaskSolanaController/index.d.ts +0 -2
  64. package/dist/metamask/utils/createMetaMaskSolanaController/index.d.ts.map +0 -1
  65. package/dist/metamask/utils/getOrCreateMetaMaskSolanaController/getOrCreateMetaMaskSolanaController.d.ts +0 -20
  66. package/dist/metamask/utils/getOrCreateMetaMaskSolanaController/getOrCreateMetaMaskSolanaController.d.ts.map +0 -1
  67. package/dist/metamask/utils/getOrCreateMetaMaskSolanaController/index.d.ts +0 -2
  68. package/dist/metamask/utils/getOrCreateMetaMaskSolanaController/index.d.ts.map +0 -1
  69. package/dist/metamask/utils/getSolanaNetworkFromCluster/getSolanaNetworkFromCluster.d.ts +0 -18
  70. package/dist/metamask/utils/getSolanaNetworkFromCluster/getSolanaNetworkFromCluster.d.ts.map +0 -1
  71. package/dist/metamask/utils/getSolanaNetworkFromCluster/index.d.ts +0 -3
  72. package/dist/metamask/utils/getSolanaNetworkFromCluster/index.d.ts.map +0 -1
  73. package/dist/metamask/utils/getSupportedNetworks/getSupportedNetworks.d.ts +0 -16
  74. package/dist/metamask/utils/getSupportedNetworks/getSupportedNetworks.d.ts.map +0 -1
  75. package/dist/metamask/utils/getSupportedNetworks/index.d.ts +0 -2
  76. package/dist/metamask/utils/getSupportedNetworks/index.d.ts.map +0 -1
package/dist/waas.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('./chunk-CbDLau6x.cjs');
2
- const require_solanaTransferAmount = require('./solanaTransferAmount-DJWF4X6z.cjs');
3
- const require_addWaasSolanaExtension = require('./addWaasSolanaExtension-C578HPQN.cjs');
2
+ const require_solanaTransferAmount = require('./solanaTransferAmount-B9KcoSis.cjs');
3
+ const require_addWaasSolanaExtension = require('./addWaasSolanaExtension-D38jCZMI.cjs');
4
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
5
5
 
6
6
  //#region src/exports/waas.ts
package/dist/waas.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { f as name, p as version } from "./solanaTransferAmount-CGMhHg9s.esm.js";
2
- import { t as addWaasSolanaExtension } from "./addWaasSolanaExtension-BOCVVYOJ.esm.js";
1
+ import { f as name, p as version } from "./solanaTransferAmount-DMJb_djy.esm.js";
2
+ import { t as addWaasSolanaExtension } from "./addWaasSolanaExtension-BJFGRV-L.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
 
5
5
  //#region src/exports/waas.ts
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CbDLau6x.cjs');
2
- const require_solanaTransferAmount = require('./solanaTransferAmount-DJWF4X6z.cjs');
2
+ const require_solanaTransferAmount = require('./solanaTransferAmount-B9KcoSis.cjs');
3
3
  const require_assertBufferAvailable = require('./assertBufferAvailable-BPIt9Mmr.cjs');
4
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
5
5
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
@@ -1,4 +1,4 @@
1
- import { d as registerSolanaNetworkProviderBuilder, f as name, l as isVersionedTransaction, n as solanaExecuteSwapTransaction, p as version, s as solanaConfirmTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-CGMhHg9s.esm.js";
1
+ import { d as registerSolanaNetworkProviderBuilder, f as name, l as isVersionedTransaction, n as solanaExecuteSwapTransaction, p as version, s as solanaConfirmTransaction, t as solanaTransferAmount } from "./solanaTransferAmount-DMJb_djy.esm.js";
2
2
  import { t as assertBufferAvailable } from "./assertBufferAvailable-b4xOlERy.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { CHAINS_INFO_MAP, WalletProviderPriority, assertDefined, assertNonEmptyArray, bufferToBase64, emitEvent, filterDuplicates, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getCore, getDefaultClient, getWalletProviderRegistry, registerExtension, switchActiveNetworkInLastKnownRegistry, waitForProjectSettings } from "@dynamic-labs-sdk/client/core";
@@ -1,7 +1,6 @@
1
1
  const require_chunk = require('./chunk-CbDLau6x.cjs');
2
- const require_solanaTransferAmount = require('./solanaTransferAmount-DJWF4X6z.cjs');
3
- require('./createWalletProviderFromSolanaStandardWallet-7scwFRPx.cjs');
4
- const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-GFlxcKCD.cjs');
2
+ const require_solanaTransferAmount = require('./solanaTransferAmount-B9KcoSis.cjs');
3
+ const require_addSolanaWalletStandardExtension = require('./addSolanaWalletStandardExtension-BtLeB7I_.cjs');
5
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
6
5
 
7
6
  //#region src/exports/walletStandard.ts
@@ -1 +1 @@
1
- {"version":3,"file":"walletStandard.cjs","names":["packageName","packageVersion"],"sources":["../src/exports/walletStandard.ts"],"sourcesContent":["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\nexport { addSolanaWalletStandardExtension } from '../walletStandard/addSolanaWalletStandardExtension';\n"],"mappings":";;;;;;;mEAMqBA,mCAAaC,qCAAe"}
1
+ {"version":3,"file":"walletStandard.cjs","names":["packageName","packageVersion"],"sources":["../src/exports/walletStandard.ts"],"sourcesContent":["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\nexport { addSolanaWalletStandardExtension } from '../walletStandard/addSolanaWalletStandardExtension';\n"],"mappings":";;;;;;mEAMqBA,mCAAaC,qCAAe"}
@@ -1,6 +1,5 @@
1
- import { f as name, p as version } from "./solanaTransferAmount-CGMhHg9s.esm.js";
2
- import "./createWalletProviderFromSolanaStandardWallet-Ct5daB5n.esm.js";
3
- import { t as addSolanaWalletStandardExtension } from "./addSolanaWalletStandardExtension-037R5her.esm.js";
1
+ import { f as name, p as version } from "./solanaTransferAmount-DMJb_djy.esm.js";
2
+ import { t as addSolanaWalletStandardExtension } from "./addSolanaWalletStandardExtension-Dw0WpBQT.esm.js";
4
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
5
4
 
6
5
  //#region src/exports/walletStandard.ts
@@ -1 +1 @@
1
- {"version":3,"file":"walletStandard.esm.js","names":["packageName","packageVersion"],"sources":["../src/exports/walletStandard.ts"],"sourcesContent":["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\nexport { addSolanaWalletStandardExtension } from '../walletStandard/addSolanaWalletStandardExtension';\n"],"mappings":";;;;;;AAMA,qBAAqBA,MAAaC,QAAe"}
1
+ {"version":3,"file":"walletStandard.esm.js","names":["packageName","packageVersion"],"sources":["../src/exports/walletStandard.ts"],"sourcesContent":["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\nexport { addSolanaWalletStandardExtension } from '../walletStandard/addSolanaWalletStandardExtension';\n"],"mappings":";;;;;AAMA,qBAAqBA,MAAaC,QAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/solana",
3
- "version": "1.30.3",
3
+ "version": "1.31.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.esm.js",
@@ -38,7 +38,6 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@dynamic-labs/sdk-api-core": "0.25.0",
41
- "@metamask/connect-solana": "1.1.0",
42
41
  "@solana/spl-token": "0.4.14",
43
42
  "@solana/web3.js": "1.98.1",
44
43
  "@wallet-standard/app": "1.1.0",
@@ -50,10 +49,10 @@
50
49
  "eventemitter3": "5.0.1",
51
50
  "tweetnacl": "1.0.3",
52
51
  "zod": "4.0.5",
53
- "@dynamic-labs-sdk/assert-package-version": "1.30.3",
54
- "@dynamic-labs-sdk/client": "1.30.3",
55
- "@dynamic-labs-sdk/metamask": "1.30.3",
56
- "@dynamic-labs-sdk/wallet-connect": "1.30.3"
52
+ "@dynamic-labs-sdk/assert-package-version": "1.31.1",
53
+ "@dynamic-labs-sdk/client": "1.31.1",
54
+ "@dynamic-labs-sdk/metamask": "1.31.1",
55
+ "@dynamic-labs-sdk/wallet-connect": "1.31.1"
57
56
  },
58
57
  "devDependencies": {
59
58
  "vitest": "4.1.6"
@@ -1,59 +0,0 @@
1
- import { d as registerSolanaNetworkProviderBuilder } from "./solanaTransferAmount-CGMhHg9s.esm.js";
2
- import { t as createWalletProviderFromSolanaStandardWallet } from "./createWalletProviderFromSolanaStandardWallet-Ct5daB5n.esm.js";
3
- import { WalletProviderPriority, formatWalletProviderKey, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension } from "@dynamic-labs-sdk/client/core";
4
- import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
5
- import { getWallets } from "@wallet-standard/app";
6
-
7
- //#region src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts
8
- /** @notInstrumented */
9
- const hasAllRequiredFeatures = (wallet) => {
10
- return Boolean(wallet.features?.["standard:events"] && wallet.features?.["standard:connect"] && wallet.features?.["solana:signTransaction"] && wallet.features?.["solana:signMessage"]);
11
- };
12
-
13
- //#endregion
14
- //#region src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts
15
- const SOLANA_WALLET_STANDARD_EXTENSION_KEY = "solanaWalletStandard";
16
- /**
17
- * Adds the Solana Wallet Standard extension to the Dynamic client.
18
- *
19
- * This extension enables integration with wallets that implement the Solana Wallet Standard,
20
- * automatically detecting and registering compatible wallets for use with the Dynamic SDK.
21
- *
22
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
23
- * @returns A function that removes the wallet-standard register listener when called.
24
- * @notInstrumented
25
- */
26
- const addSolanaWalletStandardExtension = (client = getDefaultClient()) => {
27
- if (hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)) return () => {};
28
- registerExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client);
29
- registerSolanaNetworkProviderBuilder(client);
30
- const walletProviderRegistry = getWalletProviderRegistry(client);
31
- const getKeyForWallet = (wallet) => formatWalletProviderKey({
32
- chain: "SOL",
33
- displayName: wallet.name,
34
- walletProviderType: WalletProviderEnum.BrowserExtension
35
- });
36
- const registerSolanaWallet = (walletStandardWallet) => {
37
- if (!hasAllRequiredFeatures(walletStandardWallet)) return;
38
- const key = getKeyForWallet(walletStandardWallet);
39
- if (walletProviderRegistry.getByKey(key)) return;
40
- const walletProvider = createWalletProviderFromSolanaStandardWallet({
41
- dynamicClient: client,
42
- walletStandardWallet
43
- });
44
- walletProviderRegistry.register({
45
- priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
46
- walletProvider
47
- });
48
- };
49
- const wallets = getWallets();
50
- const removeRegisterListener = wallets.on("register", (...registeredWallets) => {
51
- registeredWallets.forEach(registerSolanaWallet);
52
- });
53
- wallets.get().forEach(registerSolanaWallet);
54
- return removeRegisterListener;
55
- };
56
-
57
- //#endregion
58
- export { addSolanaWalletStandardExtension as t };
59
- //# sourceMappingURL=addSolanaWalletStandardExtension-037R5her.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addSolanaWalletStandardExtension-037R5her.esm.js","names":[],"sources":["../src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts","../src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts"],"sourcesContent":["import type { Wallet } from '@wallet-standard/base';\n\n/** @notInstrumented */\nexport const hasAllRequiredFeatures = (wallet: Wallet): boolean => {\n return Boolean(\n wallet.features?.['standard:events'] &&\n wallet.features?.['standard:connect'] &&\n wallet.features?.['solana:signTransaction'] &&\n wallet.features?.['solana:signMessage']\n );\n};\n","import {\n WalletProviderPriority,\n formatWalletProviderKey,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { getWallets } from '@wallet-standard/app';\nimport type { Wallet } from '@wallet-standard/base';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderFromSolanaStandardWallet } from '../utils/createWalletProviderFromSolanaStandardWallet';\nimport { hasAllRequiredFeatures } from '../utils/hasAllRequiredFeatures';\n\nexport const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';\n\n/**\n * Adds the Solana Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Solana Wallet Standard,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that removes the wallet-standard register listener when called.\n * @notInstrumented\n */\nexport const addSolanaWalletStandardExtension = (\n client = getDefaultClient()\n): VoidFunction => {\n if (\n hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return () => {\n // noop\n };\n }\n\n registerExtension(\n { extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const getKeyForWallet = (wallet: Wallet) =>\n formatWalletProviderKey({\n chain: 'SOL',\n displayName: wallet.name,\n walletProviderType: WalletProviderEnum.BrowserExtension,\n });\n\n const registerSolanaWallet = (walletStandardWallet: Wallet) => {\n if (!hasAllRequiredFeatures(walletStandardWallet)) {\n return;\n }\n\n const key = getKeyForWallet(walletStandardWallet);\n\n if (walletProviderRegistry.getByKey(key)) {\n return;\n }\n\n const walletProvider = createWalletProviderFromSolanaStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n };\n\n const wallets = getWallets();\n\n const removeRegisterListener = wallets.on('register', (...registeredWallets) => {\n registeredWallets.forEach(registerSolanaWallet);\n });\n\n wallets.get().forEach(registerSolanaWallet);\n\n return removeRegisterListener;\n};\n"],"mappings":";;;;;;;;AAGA,MAAa,0BAA0B,WAA4B;AACjE,QAAO,QACL,OAAO,WAAW,sBAChB,OAAO,WAAW,uBAClB,OAAO,WAAW,6BAClB,OAAO,WAAW,sBACrB;;;;;ACOH,MAAa,uCAAuC;;;;;;;;;;;AAYpD,MAAa,oCACX,SAAS,kBAAkB,KACV;AACjB,KACE,aAAa,EAAE,cAAc,sCAAsC,EAAE,OAAO,CAE5E,cAAa;AAKf,mBACE,EAAE,cAAc,sCAAsC,EACtD,OACD;AAED,sCAAqC,OAAO;CAE5C,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,mBAAmB,WACvB,wBAAwB;EACtB,OAAO;EACP,aAAa,OAAO;EACpB,oBAAoB,mBAAmB;EACxC,CAAC;CAEJ,MAAM,wBAAwB,yBAAiC;AAC7D,MAAI,CAAC,uBAAuB,qBAAqB,CAC/C;EAGF,MAAM,MAAM,gBAAgB,qBAAqB;AAEjD,MAAI,uBAAuB,SAAS,IAAI,CACtC;EAGF,MAAM,iBAAiB,6CAA6C;GAClE,eAAe;GACf;GACD,CAAC;AAEF,yBAAuB,SAAS;GAC9B,UAAU,uBAAuB;GACjC;GACD,CAAC;;CAGJ,MAAM,UAAU,YAAY;CAE5B,MAAM,yBAAyB,QAAQ,GAAG,aAAa,GAAG,sBAAsB;AAC9E,oBAAkB,QAAQ,qBAAqB;GAC/C;AAEF,SAAQ,KAAK,CAAC,QAAQ,qBAAqB;AAE3C,QAAO"}
@@ -1,65 +0,0 @@
1
- const require_chunk = require('./chunk-CbDLau6x.cjs');
2
- const require_solanaTransferAmount = require('./solanaTransferAmount-DJWF4X6z.cjs');
3
- const require_createWalletProviderFromSolanaStandardWallet = require('./createWalletProviderFromSolanaStandardWallet-7scwFRPx.cjs');
4
- let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
5
- let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
6
- let _wallet_standard_app = require("@wallet-standard/app");
7
-
8
- //#region src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts
9
- /** @notInstrumented */
10
- const hasAllRequiredFeatures = (wallet) => {
11
- return Boolean(wallet.features?.["standard:events"] && wallet.features?.["standard:connect"] && wallet.features?.["solana:signTransaction"] && wallet.features?.["solana:signMessage"]);
12
- };
13
-
14
- //#endregion
15
- //#region src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts
16
- const SOLANA_WALLET_STANDARD_EXTENSION_KEY = "solanaWalletStandard";
17
- /**
18
- * Adds the Solana Wallet Standard extension to the Dynamic client.
19
- *
20
- * This extension enables integration with wallets that implement the Solana Wallet Standard,
21
- * automatically detecting and registering compatible wallets for use with the Dynamic SDK.
22
- *
23
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
24
- * @returns A function that removes the wallet-standard register listener when called.
25
- * @notInstrumented
26
- */
27
- const addSolanaWalletStandardExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
28
- if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)) return () => {};
29
- (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client);
30
- require_solanaTransferAmount.registerSolanaNetworkProviderBuilder(client);
31
- const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
32
- const getKeyForWallet = (wallet) => (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
33
- chain: "SOL",
34
- displayName: wallet.name,
35
- walletProviderType: _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension
36
- });
37
- const registerSolanaWallet = (walletStandardWallet) => {
38
- if (!hasAllRequiredFeatures(walletStandardWallet)) return;
39
- const key = getKeyForWallet(walletStandardWallet);
40
- if (walletProviderRegistry.getByKey(key)) return;
41
- const walletProvider = require_createWalletProviderFromSolanaStandardWallet.createWalletProviderFromSolanaStandardWallet({
42
- dynamicClient: client,
43
- walletStandardWallet
44
- });
45
- walletProviderRegistry.register({
46
- priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
47
- walletProvider
48
- });
49
- };
50
- const wallets = (0, _wallet_standard_app.getWallets)();
51
- const removeRegisterListener = wallets.on("register", (...registeredWallets) => {
52
- registeredWallets.forEach(registerSolanaWallet);
53
- });
54
- wallets.get().forEach(registerSolanaWallet);
55
- return removeRegisterListener;
56
- };
57
-
58
- //#endregion
59
- Object.defineProperty(exports, 'addSolanaWalletStandardExtension', {
60
- enumerable: true,
61
- get: function () {
62
- return addSolanaWalletStandardExtension;
63
- }
64
- });
65
- //# sourceMappingURL=addSolanaWalletStandardExtension-GFlxcKCD.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addSolanaWalletStandardExtension-GFlxcKCD.cjs","names":["WalletProviderEnum","createWalletProviderFromSolanaStandardWallet","WalletProviderPriority"],"sources":["../src/walletStandard/utils/hasAllRequiredFeatures/hasAllRequiredFeatures.ts","../src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.ts"],"sourcesContent":["import type { Wallet } from '@wallet-standard/base';\n\n/** @notInstrumented */\nexport const hasAllRequiredFeatures = (wallet: Wallet): boolean => {\n return Boolean(\n wallet.features?.['standard:events'] &&\n wallet.features?.['standard:connect'] &&\n wallet.features?.['solana:signTransaction'] &&\n wallet.features?.['solana:signMessage']\n );\n};\n","import {\n WalletProviderPriority,\n formatWalletProviderKey,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { getWallets } from '@wallet-standard/app';\nimport type { Wallet } from '@wallet-standard/base';\n\nimport { registerSolanaNetworkProviderBuilder } from '../../registerSolanaNetworkProviderBuilder';\nimport { createWalletProviderFromSolanaStandardWallet } from '../utils/createWalletProviderFromSolanaStandardWallet';\nimport { hasAllRequiredFeatures } from '../utils/hasAllRequiredFeatures';\n\nexport const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';\n\n/**\n * Adds the Solana Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Solana Wallet Standard,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that removes the wallet-standard register listener when called.\n * @notInstrumented\n */\nexport const addSolanaWalletStandardExtension = (\n client = getDefaultClient()\n): VoidFunction => {\n if (\n hasExtension({ extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return () => {\n // noop\n };\n }\n\n registerExtension(\n { extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSolanaNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const getKeyForWallet = (wallet: Wallet) =>\n formatWalletProviderKey({\n chain: 'SOL',\n displayName: wallet.name,\n walletProviderType: WalletProviderEnum.BrowserExtension,\n });\n\n const registerSolanaWallet = (walletStandardWallet: Wallet) => {\n if (!hasAllRequiredFeatures(walletStandardWallet)) {\n return;\n }\n\n const key = getKeyForWallet(walletStandardWallet);\n\n if (walletProviderRegistry.getByKey(key)) {\n return;\n }\n\n const walletProvider = createWalletProviderFromSolanaStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n };\n\n const wallets = getWallets();\n\n const removeRegisterListener = wallets.on('register', (...registeredWallets) => {\n registeredWallets.forEach(registerSolanaWallet);\n });\n\n wallets.get().forEach(registerSolanaWallet);\n\n return removeRegisterListener;\n};\n"],"mappings":";;;;;;;;;AAGA,MAAa,0BAA0B,WAA4B;AACjE,QAAO,QACL,OAAO,WAAW,sBAChB,OAAO,WAAW,uBAClB,OAAO,WAAW,6BAClB,OAAO,WAAW,sBACrB;;;;;ACOH,MAAa,uCAAuC;;;;;;;;;;;AAYpD,MAAa,oCACX,8DAA2B,KACV;AACjB,qDACe,EAAE,cAAc,sCAAsC,EAAE,OAAO,CAE5E,cAAa;AAKf,sDACE,EAAE,cAAc,sCAAsC,EACtD,OACD;AAED,mEAAqC,OAAO;CAE5C,MAAM,sFAAmD,OAAO;CAEhE,MAAM,mBAAmB,sEACC;EACtB,OAAO;EACP,aAAa,OAAO;EACpB,oBAAoBA,8CAAmB;EACxC,CAAC;CAEJ,MAAM,wBAAwB,yBAAiC;AAC7D,MAAI,CAAC,uBAAuB,qBAAqB,CAC/C;EAGF,MAAM,MAAM,gBAAgB,qBAAqB;AAEjD,MAAI,uBAAuB,SAAS,IAAI,CACtC;EAGF,MAAM,iBAAiBC,kGAA6C;GAClE,eAAe;GACf;GACD,CAAC;AAEF,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;;CAGJ,MAAM,gDAAsB;CAE5B,MAAM,yBAAyB,QAAQ,GAAG,aAAa,GAAG,sBAAsB;AAC9E,oBAAkB,QAAQ,qBAAqB;GAC/C;AAEF,SAAQ,KAAK,CAAC,QAAQ,qBAAqB;AAE3C,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createWalletProviderFromSolanaStandardWallet-7scwFRPx.cjs","names":["WalletProviderEnum","connect: SolanaWalletProvider['connect']","getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId']","getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses']","signAllTransactions: SolanaWalletProvider['signAllTransactions']","isVersionedTransaction","VersionedTransaction","Transaction","signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction']","signMessage: SolanaWalletProvider['signMessage']","signTransaction: SolanaWalletProvider['signTransaction']","switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork']","destroy: SolanaWalletProvider['destroy']","solanaConfirmTransaction","solanaExecuteSwapTransaction","solanaTransferAmount"],"sources":["../src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts","../src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts","../src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts"],"sourcesContent":["import type { DynamicClient, WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\ntype GetActiveNetworkClusterParams = {\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\nexport const getActiveNetworkCluster = async (\n { walletAccount }: GetActiveNetworkClusterParams,\n client: DynamicClient\n): Promise<`solana:${string}` | undefined> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n if (!networkData?.cluster) {\n return;\n }\n\n return `solana:${networkData.cluster}`;\n};\n","import type { Wallet } from '@wallet-standard/base';\nimport type {\n SignAndSendTransactionFeature,\n SignMessageFeature,\n SignTransactionFeature,\n} from '@wallet-standard/experimental-features';\nimport type {\n StandardConnectFeature,\n StandardDisconnectFeature,\n StandardEventsFeature,\n} from '@wallet-standard/features';\n\ntype WalletStandardFeatures = {\n 'solana:signAndSendTransaction': SignAndSendTransactionFeature['experimental:signAndSendTransaction'];\n 'solana:signMessage': SignMessageFeature['experimental:signMessage'];\n 'solana:signTransaction': SignTransactionFeature['experimental:signTransaction'];\n} & StandardConnectFeature &\n Partial<StandardDisconnectFeature> &\n StandardEventsFeature;\n\n/** @notInstrumented */\nexport const getFeaturesForSolanaStandardWallet = (\n wallet: Wallet\n): WalletStandardFeatures => {\n return wallet.features as WalletStandardFeatures;\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n bufferToBase64,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { Wallet as WalletStandardWallet } from '@wallet-standard/base';\nimport type { SignTransactionInput } from '@wallet-standard/experimental-features';\nimport bs58 from 'bs58';\n\nimport type { SolanaWalletProvider } from '../../../SolanaWalletProvider.types';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaConfirmTransaction } from '../../../utils/solanaConfirmTransaction';\nimport { solanaExecuteSwapTransaction } from '../../../utils/solanaExecuteSwapTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport { getActiveNetworkCluster } from '../getActiveNetworkCluster';\nimport { getFeaturesForSolanaStandardWallet } from '../getFeaturesForSolanaStandardWallet';\n\ntype CreateWalletProviderFromSolanaStandardWalletParams = {\n dynamicClient: DynamicClient;\n /**\n * Classification used to derive the provider key and to drive picker\n * filtering. Defaults to `BrowserExtension` for wallets discovered via the\n * Wallet Standard registry; pass `QrCode` for URI-paired sessions (e.g. the\n * MetaMask SDK) so the resulting key does not collide with an announced\n * extension provider for the same wallet name.\n */\n walletProviderType?: WalletProviderEnum;\n walletStandardWallet: WalletStandardWallet;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderFromSolanaStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n walletProviderType = WalletProviderEnum.BrowserExtension,\n}: CreateWalletProviderFromSolanaStandardWalletParams): SolanaWalletProvider => {\n const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);\n\n const key = formatWalletProviderKey({\n chain: 'SOL',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const connect: SolanaWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n // some wallets like Farcaster will auto inject the account into the wallet object\n // instead of returning it from the connect method\n // so we need to check for that first\n if (\n autoConnectedAccounts?.length &&\n autoConnectedAccounts[0].publicKey &&\n autoConnectedAccounts[0].address\n ) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey.toString(),\n },\n ],\n };\n }\n\n const connectMethod = features['standard:connect']?.connect;\n\n assertDefined(connectMethod, 'connect method not found in wallet features');\n\n const result = await connectMethod({ silent: false });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAllTransactions: SolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signTransactionMethod =\n features['solana:signTransaction']?.signTransaction;\n\n assertDefined(\n signTransactionMethod,\n 'signTransaction method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const transactionsInput: SignTransactionInput[] = transactions.map(\n (transaction) => ({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n })\n );\n\n const signTransactionResult = await signTransactionMethod(\n ...transactionsInput\n );\n\n const signedTransactions = signTransactionResult.map(\n ({ signedTransaction }, index) => {\n const inputTransaction = transactions[index];\n type T = typeof inputTransaction;\n\n if (isVersionedTransaction(inputTransaction)) {\n return VersionedTransaction.deserialize(signedTransaction) as T;\n }\n return Transaction.from(signedTransaction) as T;\n }\n );\n\n return { signedTransactions };\n };\n\n const signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndSendTransactionMethod =\n features['solana:signAndSendTransaction']?.signAndSendTransaction;\n\n assertDefined(\n signAndSendTransactionMethod,\n 'signAndSendTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const signedTransactions = await signAndSendTransactionMethod({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n });\n\n const [{ signature }] = signedTransactions;\n\n return { signature: bs58.encode(signature) };\n };\n\n const signMessage: SolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod = features['solana:signMessage']?.signMessage;\n\n assertDefined(\n signMessageMethod,\n 'signMessage method not found in wallet features'\n );\n\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const encodedMessage = new TextEncoder().encode(message);\n\n const account = await getCurrentAccount();\n\n const messages = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature: bufferToBase64(messages[0].signature) };\n };\n\n const signTransaction: SolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signedTransactions = await signAllTransactions({\n transactions: [transaction],\n walletAccount,\n });\n\n return { signedTransaction: signedTransactions.signedTransactions[0] };\n };\n\n const switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue();\n },\n\n setupEventListeners: ({ handleAccountsChanged }) => {\n const eventsFeature = features['standard:events'];\n\n return eventsFeature.on('change', ({ accounts }) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n });\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const destroy: SolanaWalletProvider['destroy'] = async () => {\n cleanupEventEmitter();\n try {\n await disconnectFeature?.();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const walletProvider: SolanaWalletProvider = {\n chain: 'SOL',\n confirmTransaction: (args) => solanaConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) =>\n solanaExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAllTransactions,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n transferAmount: (args) => solanaTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createWalletProviderFromSolanaStandardWallet-Ct5daB5n.esm.js","names":["connect: SolanaWalletProvider['connect']","getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId']","getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses']","signAllTransactions: SolanaWalletProvider['signAllTransactions']","signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction']","signMessage: SolanaWalletProvider['signMessage']","signTransaction: SolanaWalletProvider['signTransaction']","switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork']","destroy: SolanaWalletProvider['destroy']"],"sources":["../src/walletStandard/utils/getActiveNetworkCluster/getActiveNetworkCluster.ts","../src/walletStandard/utils/getFeaturesForSolanaStandardWallet/getFeaturesForSolanaStandardWallet.ts","../src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.ts"],"sourcesContent":["import type { DynamicClient, WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\ntype GetActiveNetworkClusterParams = {\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\nexport const getActiveNetworkCluster = async (\n { walletAccount }: GetActiveNetworkClusterParams,\n client: DynamicClient\n): Promise<`solana:${string}` | undefined> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n if (!networkData?.cluster) {\n return;\n }\n\n return `solana:${networkData.cluster}`;\n};\n","import type { Wallet } from '@wallet-standard/base';\nimport type {\n SignAndSendTransactionFeature,\n SignMessageFeature,\n SignTransactionFeature,\n} from '@wallet-standard/experimental-features';\nimport type {\n StandardConnectFeature,\n StandardDisconnectFeature,\n StandardEventsFeature,\n} from '@wallet-standard/features';\n\ntype WalletStandardFeatures = {\n 'solana:signAndSendTransaction': SignAndSendTransactionFeature['experimental:signAndSendTransaction'];\n 'solana:signMessage': SignMessageFeature['experimental:signMessage'];\n 'solana:signTransaction': SignTransactionFeature['experimental:signTransaction'];\n} & StandardConnectFeature &\n Partial<StandardDisconnectFeature> &\n StandardEventsFeature;\n\n/** @notInstrumented */\nexport const getFeaturesForSolanaStandardWallet = (\n wallet: Wallet\n): WalletStandardFeatures => {\n return wallet.features as WalletStandardFeatures;\n};\n","import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n bufferToBase64,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { Wallet as WalletStandardWallet } from '@wallet-standard/base';\nimport type { SignTransactionInput } from '@wallet-standard/experimental-features';\nimport bs58 from 'bs58';\n\nimport type { SolanaWalletProvider } from '../../../SolanaWalletProvider.types';\nimport { isVersionedTransaction } from '../../../utils/isVersionedTransaction';\nimport { solanaConfirmTransaction } from '../../../utils/solanaConfirmTransaction';\nimport { solanaExecuteSwapTransaction } from '../../../utils/solanaExecuteSwapTransaction';\nimport { solanaTransferAmount } from '../../../utils/solanaTransferAmount';\nimport { getActiveNetworkCluster } from '../getActiveNetworkCluster';\nimport { getFeaturesForSolanaStandardWallet } from '../getFeaturesForSolanaStandardWallet';\n\ntype CreateWalletProviderFromSolanaStandardWalletParams = {\n dynamicClient: DynamicClient;\n /**\n * Classification used to derive the provider key and to drive picker\n * filtering. Defaults to `BrowserExtension` for wallets discovered via the\n * Wallet Standard registry; pass `QrCode` for URI-paired sessions (e.g. the\n * MetaMask SDK) so the resulting key does not collide with an announced\n * extension provider for the same wallet name.\n */\n walletProviderType?: WalletProviderEnum;\n walletStandardWallet: WalletStandardWallet;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderFromSolanaStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n walletProviderType = WalletProviderEnum.BrowserExtension,\n}: CreateWalletProviderFromSolanaStandardWalletParams): SolanaWalletProvider => {\n const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);\n\n const key = formatWalletProviderKey({\n chain: 'SOL',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const connect: SolanaWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n // some wallets like Farcaster will auto inject the account into the wallet object\n // instead of returning it from the connect method\n // so we need to check for that first\n if (\n autoConnectedAccounts?.length &&\n autoConnectedAccounts[0].publicKey &&\n autoConnectedAccounts[0].address\n ) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey.toString(),\n },\n ],\n };\n }\n\n const connectMethod = features['standard:connect']?.connect;\n\n assertDefined(connectMethod, 'connect method not found in wallet features');\n\n const result = await connectMethod({ silent: false });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SolanaWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SolanaWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected() && connect) {\n await connect();\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAllTransactions: SolanaWalletProvider['signAllTransactions'] =\n async ({ transactions, walletAccount }) => {\n const signTransactionMethod =\n features['solana:signTransaction']?.signTransaction;\n\n assertDefined(\n signTransactionMethod,\n 'signTransaction method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const transactionsInput: SignTransactionInput[] = transactions.map(\n (transaction) => ({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n })\n );\n\n const signTransactionResult = await signTransactionMethod(\n ...transactionsInput\n );\n\n const signedTransactions = signTransactionResult.map(\n ({ signedTransaction }, index) => {\n const inputTransaction = transactions[index];\n type T = typeof inputTransaction;\n\n if (isVersionedTransaction(inputTransaction)) {\n return VersionedTransaction.deserialize(signedTransaction) as T;\n }\n return Transaction.from(signedTransaction) as T;\n }\n );\n\n return { signedTransactions };\n };\n\n const signAndSendTransaction: SolanaWalletProvider['signAndSendTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndSendTransactionMethod =\n features['solana:signAndSendTransaction']?.signAndSendTransaction;\n\n assertDefined(\n signAndSendTransactionMethod,\n 'signAndSendTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n const chain = await getActiveNetworkCluster(\n { walletAccount },\n dynamicClient\n );\n assertDefined(chain, 'Could not get active chain for wallet account');\n\n const signedTransactions = await signAndSendTransactionMethod({\n account,\n chain,\n transaction: transaction.serialize({\n requireAllSignatures: false,\n }) as Uint8Array<ArrayBufferLike>,\n });\n\n const [{ signature }] = signedTransactions;\n\n return { signature: bs58.encode(signature) };\n };\n\n const signMessage: SolanaWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod = features['solana:signMessage']?.signMessage;\n\n assertDefined(\n signMessageMethod,\n 'signMessage method not found in wallet features'\n );\n\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const encodedMessage = new TextEncoder().encode(message);\n\n const account = await getCurrentAccount();\n\n const messages = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature: bufferToBase64(messages[0].signature) };\n };\n\n const signTransaction: SolanaWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signedTransactions = await signAllTransactions({\n transactions: [transaction],\n walletAccount,\n });\n\n return { signedTransaction: signedTransactions.signedTransactions[0] };\n };\n\n const switchActiveNetwork: SolanaWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({ setupReturnValue }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n\n setupReturnValue();\n },\n\n setupEventListeners: ({ handleAccountsChanged }) => {\n const eventsFeature = features['standard:events'];\n\n return eventsFeature.on('change', ({ accounts }) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n });\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const destroy: SolanaWalletProvider['destroy'] = async () => {\n cleanupEventEmitter();\n try {\n await disconnectFeature?.();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const walletProvider: SolanaWalletProvider = {\n chain: 'SOL',\n confirmTransaction: (args) => solanaConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n get events() {\n return getEventEmitter();\n },\n executeSwapTransaction: (args) =>\n solanaExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAllTransactions,\n signAndSendTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n transferAmount: (args) => solanaTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n\n return walletProvider;\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,0BAA0B,OACrC,EAAE,iBACF,WAC4C;CAC5C,MAAM,EAAE,gBAAgB,MAAM,qBAAqB,EAAE,eAAe,EAAE,OAAO;AAE7E,KAAI,CAAC,aAAa,QAChB;AAGF,QAAO,UAAU,YAAY;;;;;;ACG/B,MAAa,sCACX,WAC2B;AAC3B,QAAO,OAAO;;;;;;ACkBhB,MAAa,gDAAgD,EAC3D,eACA,sBACA,qBAAqB,mBAAmB,uBACsC;CAC9E,MAAM,WAAW,mCAAmC,qBAAqB;CAEzE,MAAM,MAAM,wBAAwB;EAClC,OAAO;EACP,aAAa,qBAAqB;EAClC;EACD,CAAC;CAEF,MAAMA,UAA2C,YAAY;EAC3D,MAAM,wBAAwB,qBAAqB;AAKnD,MACE,uBAAuB,UACvB,sBAAsB,GAAG,aACzB,sBAAsB,GAAG,QAEzB,QAAO,EACL,WAAW,CACT;GACE,SAAS,sBAAsB,GAAG;GAClC,WAAW,sBAAsB,GAAG,UAAU,UAAU;GACzD,CACF,EACF;EAGH,MAAM,gBAAgB,SAAS,qBAAqB;AAEpD,gBAAc,eAAe,8CAA8C;AAI3E,SAAO,EACL,YAHa,MAAM,cAAc,EAAE,QAAQ,OAAO,CAAC,EAGjC,UAAU,KAAK,aAAa;GAC5C,SAAS,QAAQ;GACjB,WAAW,QAAQ,WAAW,UAAU;GACzC,EAAE,EACJ;;CAEH,MAAM,oBAAoB,SAAS,wBAAwB;CAE3D,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAM,oBAAoB,YAAY;AACpC,MAAI,CAAC,aAAa,IAAI,QACpB,OAAM,SAAS;EAGjB,MAAM,UAAU,qBAAqB,WAAW;AAEhD,gBAAc,SAAS,8BAA8B;AAErD,SAAO;;CAGT,MAAM,oBAA6B;AACjC,SAAO,qBAAqB,UAAU,SAAS;;CAGjD,MAAMC,wBACJ,YAAY;AACV,MAAI,CAAC,aAAa,IAAI,QACpB,OAAM,SAAS;AAGjB,SAAO,EACL,WAAW,qBAAqB,SAAS,KACtC,YAAY,QAAQ,QACtB,EACF;;CAGL,MAAMC,sBACJ,OAAO,EAAE,cAAc,oBAAoB;EACzC,MAAM,wBACJ,SAAS,2BAA2B;AAEtC,gBACE,uBACA,sDACD;AAED,QAAM,uCACJ,EAAE,eAAe,EACjB,cACD;EAED,MAAM,UAAU,MAAM,mBAAmB;EAEzC,MAAM,QAAQ,MAAM,wBAClB,EAAE,eAAe,EACjB,cACD;AACD,gBAAc,OAAO,gDAAgD;AA4BrE,SAAO,EAAE,qBAhBqB,MAAM,sBAClC,GAXgD,aAAa,KAC5D,iBAAiB;GAChB;GACA;GACA,aAAa,YAAY,UAAU,EACjC,sBAAsB,OACvB,CAAC;GACH,EACF,CAIA,EAEgD,KAC9C,EAAE,qBAAqB,UAAU;GAChC,MAAM,mBAAmB,aAAa;AAGtC,OAAI,uBAAuB,iBAAiB,CAC1C,QAAO,qBAAqB,YAAY,kBAAkB;AAE5D,UAAO,YAAY,KAAK,kBAAkB;IAE7C,EAE4B;;CAGjC,MAAMC,yBACJ,OAAO,EAAE,aAAa,oBAAoB;AACxC,QAAM,uCACJ,EACE,eACD,EACD,cACD;EAED,MAAM,+BACJ,SAAS,kCAAkC;AAE7C,gBACE,8BACA,6DACD;EAED,MAAM,UAAU,MAAM,mBAAmB;EAEzC,MAAM,QAAQ,MAAM,wBAClB,EAAE,eAAe,EACjB,cACD;AACD,gBAAc,OAAO,gDAAgD;EAUrE,MAAM,CAAC,EAAE,eARkB,MAAM,6BAA6B;GAC5D;GACA;GACA,aAAa,YAAY,UAAU,EACjC,sBAAsB,OACvB,CAAC;GACH,CAAC;AAIF,SAAO,EAAE,WAAW,KAAK,OAAO,UAAU,EAAE;;CAGhD,MAAMC,cAAmD,OAAO,EAC9D,SACA,oBACI;EACJ,MAAM,oBAAoB,SAAS,uBAAuB;AAE1D,gBACE,mBACA,kDACD;AAED,gBAAc,eAAe,2BAA2B;AAExD,QAAM,uCACJ,EACE,eACD,EACD,cACD;EAED,MAAM,iBAAiB,IAAI,aAAa,CAAC,OAAO,QAAQ;AASxD,SAAO,EAAE,WAAW,gBALH,MAAM,kBAAkB;GACvC,SAHc,MAAM,mBAAmB;GAIvC,SAAS;GACV,CAAC,EAE0C,GAAG,UAAU,EAAE;;CAG7D,MAAMC,kBAA2D,OAAO,EACtE,aACA,oBACI;AAMJ,SAAO,EAAE,oBALkB,MAAM,oBAAoB;GACnD,cAAc,CAAC,YAAY;GAC3B;GACD,CAAC,EAE6C,mBAAmB,IAAI;;CAGxE,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAM,EAAE,iBAAiB,wBACvB,iCAA+C;EAC7C,uBAAuB,EAAE,uBAAuB;AAC9C,iBAAc,kBAAkB,iCAAiC;AAEjE,qBAAkB;;EAGpB,sBAAsB,EAAE,4BAA4B;AAGlD,UAFsB,SAAS,mBAEV,GAAG,WAAW,EAAE,eAAe;AAClD,0BAAsB,EACpB,WAAW,UAAU,KAAK,YAAY,QAAQ,QAAQ,IAAI,EAAE,EAC7D,CAAC;KACF;;EAGJ,iBAAiB,CAAC,kBAAkB;EACrC,CAAC;CAEJ,MAAMC,UAA2C,YAAY;AAC3D,uBAAqB;AACrB,MAAI;AACF,SAAM,qBAAqB;WACpB,KAAK;AACZ,WAAQ,cAAc,CAAC,OAAO,MAC5B,IAAI,IAAI,kCACR,IACD;;;AA+BL,QA3B6C;EAC3C,OAAO;EACP,qBAAqB,SAAS,yBAAyB,MAAM,cAAc;EAC3E;EACA;EACA,IAAI,SAAS;AACX,UAAO,iBAAiB;;EAE1B,yBAAyB,SACvB,6BAA6B,MAAM,cAAc;EACnD;EACA;EACA,UAAU,6BAA6B,qBAAqB,KAAK;EACjE;EACA,UAAU;GACR,aAAa,qBAAqB;GAClC,MAAM,qBAAqB;GAC5B;EACD;EACA;EACA;EACA;EACA;EACA,iBAAiB,SAAS,qBAAqB,MAAM,cAAc;EACnE;EACD"}
@@ -1,14 +0,0 @@
1
- import type { MetaMaskController } from '@dynamic-labs-sdk/metamask';
2
- import type { SolanaClient } from '@metamask/connect-solana';
3
- /**
4
- * Per-Dynamic-client Solana-flavoured `MetaMaskController`. Extends the
5
- * chain-agnostic surface with the typed `@metamask/connect-solana` SDK
6
- * handle so the Wallet Standard provider builder can reach the paired
7
- * wallet directly for signing. Returned by `createMetaMaskSolanaController`
8
- * and cached per Dynamic client by `getOrCreateMetaMaskSolanaController`.
9
- */
10
- export type MetaMaskSolanaController = MetaMaskController & {
11
- /** The underlying `@metamask/connect-solana` SDK instance. */
12
- sdk: SolanaClient;
13
- };
14
- //# sourceMappingURL=metamask.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metamask.types.d.ts","sourceRoot":"","sources":["../../src/metamask/metamask.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG;IAC1D,8DAA8D;IAC9D,GAAG,EAAE,YAAY,CAAC;CACnB,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
- import type { MetaMaskSolanaController } from '../../metamask.types';
3
- /**
4
- * Builds a fully-initialised `MetaMaskSolanaController` for the given Dynamic
5
- * client. Drives the `@metamask/connect-solana` SDK through its Wallet
6
- * Standard surface so consumers render their own QR / deep-link UI, and
7
- * subscribes to the SDK core's `display_uri` event at construction time so
8
- * the first URI emission cannot be lost to a subscription race. The wallet
9
- * is created with `skipAutoRegister` so this URI-pairing client does not
10
- * register itself into the global Wallet Standard registry — an announced
11
- * MetaMask extension is discovered independently. Dapp metadata is sourced
12
- * from the client's `getAppMetadata`. Browser-only.
13
- * The MetaMask SDK's own verbose logging is tied to the Dynamic client's log
14
- * level, so turning on `debug` logging for the Dynamic SDK also surfaces
15
- * MetaMask's internal SDK trace output.
16
- *
17
- * @notInstrumented
18
- */
19
- export declare const createMetaMaskSolanaController: (client: DynamicClient) => Promise<MetaMaskSolanaController>;
20
- //# sourceMappingURL=createMetaMaskSolanaController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMetaMaskSolanaController.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/createMetaMaskSolanaController/createMetaMaskSolanaController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAW9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,WACjC,aAAa,KACpB,OAAO,CAAC,wBAAwB,CAmHlC,CAAC"}
@@ -1,2 +0,0 @@
1
- export { createMetaMaskSolanaController } from './createMetaMaskSolanaController';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/createMetaMaskSolanaController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Per-`DynamicClient` accessor for the lazily-constructed MetaMask Solana
3
- * controller. Wraps `createMetaMaskSolanaController` with the standard
4
- * `runtimeServices` cache so every caller — the Wallet Standard
5
- * wallet-provider builder, the `display_uri` subscription helper, and the
6
- * `connectWithMetaMaskUriSolana` URI-returning helper — shares the same
7
- * controller (and therefore the same SDK instance, display-URI cache, and
8
- * listener registry) per Dynamic client.
9
- *
10
- * The cache is **per-Dynamic-client, not per-SDK-instance**:
11
- * `@metamask/connect-solana`'s `createSolanaClient` builds on the shared
12
- * MultichainCore singleton, so when multiple Dynamic clients coexist they
13
- * end up sharing the same MetaMask session regardless of this cache. The
14
- * wrapper exists to own the controller's `display_uri` cache and listener
15
- * registry per Dynamic client, which the SDK itself does not expose.
16
- *
17
- * @notInstrumented
18
- */
19
- export declare const getOrCreateMetaMaskSolanaController: (client: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<import("../../metamask.types").MetaMaskSolanaController>;
20
- //# sourceMappingURL=getOrCreateMetaMaskSolanaController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOrCreateMetaMaskSolanaController.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getOrCreateMetaMaskSolanaController/getOrCreateMetaMaskSolanaController.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mCAAmC,gIAG/C,CAAC"}
@@ -1,2 +0,0 @@
1
- export { getOrCreateMetaMaskSolanaController } from './getOrCreateMetaMaskSolanaController';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getOrCreateMetaMaskSolanaController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { SolanaNetwork } from '@metamask/connect-solana';
2
- /** Parameters for {@link getSolanaNetworkFromCluster}. */
3
- export type GetSolanaNetworkFromClusterParams = {
4
- /** The Dynamic network `cluster` (e.g. `mainnet-beta`, `devnet`, `testnet`). */
5
- cluster: string | undefined;
6
- };
7
- /**
8
- * Maps a Dynamic network `cluster` (e.g. `mainnet-beta`, `devnet`,
9
- * `testnet`) to the `mainnet | devnet | testnet` key shape expected by
10
- * `@metamask/connect-solana`'s `createSolanaClient`. Returns `undefined` for
11
- * clusters that do not correspond to one of MetaMask's supported Solana
12
- * networks so callers can skip them. Used by `getSupportedNetworks` to build
13
- * the SDK's `supportedNetworks` map.
14
- *
15
- * @notInstrumented
16
- */
17
- export declare const getSolanaNetworkFromCluster: ({ cluster, }: GetSolanaNetworkFromClusterParams) => SolanaNetwork | undefined;
18
- //# sourceMappingURL=getSolanaNetworkFromCluster.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSolanaNetworkFromCluster.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getSolanaNetworkFromCluster/getSolanaNetworkFromCluster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,0DAA0D;AAC1D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,gFAAgF;IAChF,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,iBAErC,iCAAiC,KAAG,aAAa,GAAG,SAkBtD,CAAC"}
@@ -1,3 +0,0 @@
1
- export { getSolanaNetworkFromCluster } from './getSolanaNetworkFromCluster';
2
- export type { GetSolanaNetworkFromClusterParams } from './getSolanaNetworkFromCluster';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getSolanaNetworkFromCluster/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
- import type { SolanaNetwork } from '@metamask/connect-solana';
3
- type MetaMaskSupportedNetworks = Partial<Record<SolanaNetwork, string>>;
4
- /**
5
- * Builds the `supportedNetworks` map required by
6
- * `@metamask/connect-solana`'s `createSolanaClient`, keyed by the SDK's
7
- * `mainnet | devnet | testnet` network names and valued with the first
8
- * configured RPC URL for each. Sources the configured SOL networks from the
9
- * Dynamic client's project settings. Throws when no SOL network is
10
- * configured, mirroring the EVM `getSupportedNetworks` contract.
11
- *
12
- * @notInstrumented
13
- */
14
- export declare const getSupportedNetworks: (client: DynamicClient) => MetaMaskSupportedNetworks;
15
- export {};
16
- //# sourceMappingURL=getSupportedNetworks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSupportedNetworks.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getSupportedNetworks/getSupportedNetworks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,KAAK,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,WACvB,aAAa,KACpB,yBA4BF,CAAC"}
@@ -1,2 +0,0 @@
1
- export { getSupportedNetworks } from './getSupportedNetworks';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/getSupportedNetworks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}