@dynamic-labs-sdk/sui 0.1.2 → 0.2.4

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 (168) hide show
  1. package/dist/SuiNetworkProvider.types.d.ts.map +1 -0
  2. package/dist/SuiWalletAccount.types.d.ts.map +1 -0
  3. package/dist/SuiWalletProvider.types.d.ts.map +1 -0
  4. package/{src → dist}/addSuiExtension/addSuiExtension.d.ts +1 -1
  5. package/dist/addSuiExtension/addSuiExtension.d.ts.map +1 -0
  6. package/dist/addSuiExtension/index.d.ts.map +1 -0
  7. package/dist/addSuiWalletStandardExtension-B912xX09.cjs.js +202 -0
  8. package/dist/addSuiWalletStandardExtension-B912xX09.cjs.js.map +1 -0
  9. package/dist/addSuiWalletStandardExtension-DLpr58Rh.esm.js +197 -0
  10. package/dist/addSuiWalletStandardExtension-DLpr58Rh.esm.js.map +1 -0
  11. package/dist/addWaasSuiExtension-C1FjnguZ.esm.js +122 -0
  12. package/dist/addWaasSuiExtension-C1FjnguZ.esm.js.map +1 -0
  13. package/dist/addWaasSuiExtension-DM95-k0c.cjs.js +127 -0
  14. package/dist/addWaasSuiExtension-DM95-k0c.cjs.js.map +1 -0
  15. package/dist/errors/NotSuiProviderError/NotSuiProviderError.d.ts.map +1 -0
  16. package/dist/errors/NotSuiProviderError/index.d.ts.map +1 -0
  17. package/dist/exports/index.d.ts.map +1 -0
  18. package/dist/exports/waas.d.ts.map +1 -0
  19. package/dist/exports/walletStandard.d.ts.map +1 -0
  20. package/{src → dist}/getSuiClient/getSuiClient.d.ts +1 -1
  21. package/dist/getSuiClient/getSuiClient.d.ts.map +1 -0
  22. package/dist/getSuiClient/index.d.ts.map +1 -0
  23. package/dist/index.cjs.js +182 -0
  24. package/dist/index.cjs.js.map +1 -0
  25. package/dist/index.esm.js +174 -0
  26. package/dist/index.esm.js.map +1 -0
  27. package/dist/isSuiNetworkProvider/index.d.ts.map +1 -0
  28. package/dist/isSuiNetworkProvider/isSuiNetworkProvider.d.ts.map +1 -0
  29. package/dist/isSuiWalletAccount/index.d.ts.map +1 -0
  30. package/dist/isSuiWalletAccount/isSuiWalletAccount.d.ts.map +1 -0
  31. package/dist/isSuiWalletProvider/index.d.ts.map +1 -0
  32. package/dist/isSuiWalletProvider/isSuiWalletProvider.d.ts.map +1 -0
  33. package/dist/registerSuiNetworkProviderBuilder/index.d.ts.map +1 -0
  34. package/dist/registerSuiNetworkProviderBuilder/registerSuiNetworkProviderBuilder.d.ts.map +1 -0
  35. package/dist/registerSuiNetworkProviderBuilder-D7tsupMX.esm.js +44 -0
  36. package/dist/registerSuiNetworkProviderBuilder-D7tsupMX.esm.js.map +1 -0
  37. package/dist/registerSuiNetworkProviderBuilder-D_4KMsRa.cjs.js +61 -0
  38. package/dist/registerSuiNetworkProviderBuilder-D_4KMsRa.cjs.js.map +1 -0
  39. package/dist/signAndExecuteTransaction/index.d.ts.map +1 -0
  40. package/{src → dist}/signAndExecuteTransaction/signAndExecuteTransaction.d.ts +1 -1
  41. package/dist/signAndExecuteTransaction/signAndExecuteTransaction.d.ts.map +1 -0
  42. package/dist/signAndExecuteTransactionBlock/index.d.ts.map +1 -0
  43. package/{src → dist}/signAndExecuteTransactionBlock/signAndExecuteTransactionBlock.d.ts +1 -1
  44. package/dist/signAndExecuteTransactionBlock/signAndExecuteTransactionBlock.d.ts.map +1 -0
  45. package/dist/signTransaction/index.d.ts.map +1 -0
  46. package/{src → dist}/signTransaction/signTransaction.d.ts +1 -1
  47. package/dist/signTransaction/signTransaction.d.ts.map +1 -0
  48. package/dist/signTransactionBlock/index.d.ts.map +1 -0
  49. package/{src → dist}/signTransactionBlock/signTransactionBlock.d.ts +1 -1
  50. package/dist/signTransactionBlock/signTransactionBlock.d.ts.map +1 -0
  51. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  52. package/dist/utils/createSuiNetworkProvider/createSuiNetworkProvider.d.ts.map +1 -0
  53. package/dist/utils/createSuiNetworkProvider/index.d.ts.map +1 -0
  54. package/dist/utils/fetchSuiBalance/fetchSuiBalance.d.ts.map +1 -0
  55. package/dist/utils/fetchSuiBalance/index.d.ts.map +1 -0
  56. package/dist/waas/WaasSuiWalletProvider.types.d.ts.map +1 -0
  57. package/{src → dist}/waas/addWaasSuiExtension/addWaasSuiExtension.d.ts +1 -1
  58. package/dist/waas/addWaasSuiExtension/addWaasSuiExtension.d.ts.map +1 -0
  59. package/dist/waas/addWaasSuiExtension/index.d.ts.map +1 -0
  60. package/dist/waas/utils/createWalletProviderForWaasSui/createWalletProviderForWaasSui.d.ts.map +1 -0
  61. package/dist/waas/utils/createWalletProviderForWaasSui/index.d.ts.map +1 -0
  62. package/dist/waas.cjs.js +10 -0
  63. package/dist/waas.cjs.js.map +1 -0
  64. package/dist/waas.esm.js +10 -0
  65. package/dist/waas.esm.js.map +1 -0
  66. package/{src → dist}/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.d.ts +1 -1
  67. package/dist/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.d.ts.map +1 -0
  68. package/dist/walletStandard/addSuiWalletStandardExtension/index.d.ts.map +1 -0
  69. package/dist/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.d.ts.map +1 -0
  70. package/dist/walletStandard/utils/createWalletProviderFromSuiStandardWallet/index.d.ts.map +1 -0
  71. package/dist/walletStandard.cjs.js +10 -0
  72. package/dist/walletStandard.cjs.js.map +1 -0
  73. package/dist/walletStandard.esm.js +10 -0
  74. package/dist/walletStandard.esm.js.map +1 -0
  75. package/package.json +30 -18
  76. package/CHANGELOG.md +0 -606
  77. package/addSuiWalletStandardExtension.cjs.js +0 -264
  78. package/addSuiWalletStandardExtension.esm.js +0 -262
  79. package/addWaasSuiExtension.cjs.js +0 -141
  80. package/addWaasSuiExtension.esm.js +0 -139
  81. package/index.cjs.d.ts +0 -1
  82. package/index.cjs.js +0 -193
  83. package/index.esm.d.ts +0 -1
  84. package/index.esm.js +0 -183
  85. package/registerSuiNetworkProviderBuilder.cjs.js +0 -62
  86. package/registerSuiNetworkProviderBuilder.esm.js +0 -57
  87. package/src/SuiNetworkProvider.types.d.ts.map +0 -1
  88. package/src/SuiWalletAccount.types.d.ts.map +0 -1
  89. package/src/SuiWalletProvider.types.d.ts.map +0 -1
  90. package/src/addSuiExtension/addSuiExtension.d.ts.map +0 -1
  91. package/src/addSuiExtension/index.d.ts.map +0 -1
  92. package/src/errors/NotSuiProviderError/NotSuiProviderError.d.ts.map +0 -1
  93. package/src/errors/NotSuiProviderError/index.d.ts.map +0 -1
  94. package/src/exports/index.d.ts.map +0 -1
  95. package/src/exports/waas.d.ts.map +0 -1
  96. package/src/exports/walletStandard.d.ts.map +0 -1
  97. package/src/getSuiClient/getSuiClient.d.ts.map +0 -1
  98. package/src/getSuiClient/index.d.ts.map +0 -1
  99. package/src/isSuiNetworkProvider/index.d.ts.map +0 -1
  100. package/src/isSuiNetworkProvider/isSuiNetworkProvider.d.ts.map +0 -1
  101. package/src/isSuiWalletAccount/index.d.ts.map +0 -1
  102. package/src/isSuiWalletAccount/isSuiWalletAccount.d.ts.map +0 -1
  103. package/src/isSuiWalletProvider/index.d.ts.map +0 -1
  104. package/src/isSuiWalletProvider/isSuiWalletProvider.d.ts.map +0 -1
  105. package/src/registerSuiNetworkProviderBuilder/index.d.ts.map +0 -1
  106. package/src/registerSuiNetworkProviderBuilder/registerSuiNetworkProviderBuilder.d.ts.map +0 -1
  107. package/src/signAndExecuteTransaction/index.d.ts.map +0 -1
  108. package/src/signAndExecuteTransaction/signAndExecuteTransaction.d.ts.map +0 -1
  109. package/src/signAndExecuteTransactionBlock/index.d.ts.map +0 -1
  110. package/src/signAndExecuteTransactionBlock/signAndExecuteTransactionBlock.d.ts.map +0 -1
  111. package/src/signTransaction/index.d.ts.map +0 -1
  112. package/src/signTransaction/signTransaction.d.ts.map +0 -1
  113. package/src/signTransactionBlock/index.d.ts.map +0 -1
  114. package/src/signTransactionBlock/signTransactionBlock.d.ts.map +0 -1
  115. package/src/utils/createSuiNetworkProvider/createSuiNetworkProvider.d.ts.map +0 -1
  116. package/src/utils/createSuiNetworkProvider/index.d.ts.map +0 -1
  117. package/src/utils/fetchSuiBalance/fetchSuiBalance.d.ts.map +0 -1
  118. package/src/utils/fetchSuiBalance/index.d.ts.map +0 -1
  119. package/src/waas/WaasSuiWalletProvider.types.d.ts.map +0 -1
  120. package/src/waas/addWaasSuiExtension/addWaasSuiExtension.d.ts.map +0 -1
  121. package/src/waas/addWaasSuiExtension/index.d.ts.map +0 -1
  122. package/src/waas/utils/createWalletProviderForWaasSui/createWalletProviderForWaasSui.d.ts.map +0 -1
  123. package/src/waas/utils/createWalletProviderForWaasSui/index.d.ts.map +0 -1
  124. package/src/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.d.ts.map +0 -1
  125. package/src/walletStandard/addSuiWalletStandardExtension/index.d.ts.map +0 -1
  126. package/src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.d.ts.map +0 -1
  127. package/src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/index.d.ts.map +0 -1
  128. package/waas.cjs.d.ts +0 -1
  129. package/waas.cjs.js +0 -15
  130. package/waas.esm.d.ts +0 -1
  131. package/waas.esm.js +0 -11
  132. package/walletStandard.cjs.d.ts +0 -1
  133. package/walletStandard.cjs.js +0 -15
  134. package/walletStandard.esm.d.ts +0 -1
  135. package/walletStandard.esm.js +0 -11
  136. /package/{src → dist}/SuiNetworkProvider.types.d.ts +0 -0
  137. /package/{src → dist}/SuiWalletAccount.types.d.ts +0 -0
  138. /package/{src → dist}/SuiWalletProvider.types.d.ts +0 -0
  139. /package/{src → dist}/addSuiExtension/index.d.ts +0 -0
  140. /package/{src → dist}/errors/NotSuiProviderError/NotSuiProviderError.d.ts +0 -0
  141. /package/{src → dist}/errors/NotSuiProviderError/index.d.ts +0 -0
  142. /package/{src → dist}/exports/index.d.ts +0 -0
  143. /package/{src → dist}/exports/waas.d.ts +0 -0
  144. /package/{src → dist}/exports/walletStandard.d.ts +0 -0
  145. /package/{src → dist}/getSuiClient/index.d.ts +0 -0
  146. /package/{src → dist}/isSuiNetworkProvider/index.d.ts +0 -0
  147. /package/{src → dist}/isSuiNetworkProvider/isSuiNetworkProvider.d.ts +0 -0
  148. /package/{src → dist}/isSuiWalletAccount/index.d.ts +0 -0
  149. /package/{src → dist}/isSuiWalletAccount/isSuiWalletAccount.d.ts +0 -0
  150. /package/{src → dist}/isSuiWalletProvider/index.d.ts +0 -0
  151. /package/{src → dist}/isSuiWalletProvider/isSuiWalletProvider.d.ts +0 -0
  152. /package/{src → dist}/registerSuiNetworkProviderBuilder/index.d.ts +0 -0
  153. /package/{src → dist}/registerSuiNetworkProviderBuilder/registerSuiNetworkProviderBuilder.d.ts +0 -0
  154. /package/{src → dist}/signAndExecuteTransaction/index.d.ts +0 -0
  155. /package/{src → dist}/signAndExecuteTransactionBlock/index.d.ts +0 -0
  156. /package/{src → dist}/signTransaction/index.d.ts +0 -0
  157. /package/{src → dist}/signTransactionBlock/index.d.ts +0 -0
  158. /package/{src → dist}/utils/createSuiNetworkProvider/createSuiNetworkProvider.d.ts +0 -0
  159. /package/{src → dist}/utils/createSuiNetworkProvider/index.d.ts +0 -0
  160. /package/{src → dist}/utils/fetchSuiBalance/fetchSuiBalance.d.ts +0 -0
  161. /package/{src → dist}/utils/fetchSuiBalance/index.d.ts +0 -0
  162. /package/{src → dist}/waas/WaasSuiWalletProvider.types.d.ts +0 -0
  163. /package/{src → dist}/waas/addWaasSuiExtension/index.d.ts +0 -0
  164. /package/{src → dist}/waas/utils/createWalletProviderForWaasSui/createWalletProviderForWaasSui.d.ts +0 -0
  165. /package/{src → dist}/waas/utils/createWalletProviderForWaasSui/index.d.ts +0 -0
  166. /package/{src → dist}/walletStandard/addSuiWalletStandardExtension/index.d.ts +0 -0
  167. /package/{src → dist}/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.d.ts +0 -0
  168. /package/{src → dist}/walletStandard/utils/createWalletProviderFromSuiStandardWallet/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiNetworkProvider.types.d.ts","sourceRoot":"","sources":["../src/SuiNetworkProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE5D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,kBAAkB;QAC1B,GAAG,EAAE,kBAAkB,CAAC;KACzB;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiWalletAccount.types.d.ts","sourceRoot":"","sources":["../src/SuiWalletAccount.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,gBAAgB;QACxB,GAAG,EAAE,gBAAgB,CAAC;KACvB;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiWalletProvider.types.d.ts","sourceRoot":"","sources":["../src/SuiWalletProvider.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,6BAA6B,EAC7B,SAAS,EACT,kCAAkC,EACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EACV,iBAAiB,EACjB,uCAAuC,EACvC,kCAAkC,EAClC,6BAA6B,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,uCAAuC,IAAI,uCAAuC,EAClF,kCAAkC,IAAI,kCAAkC,EACxE,6BAA6B,IAAI,6BAA6B,EAC9D,iBAAiB,IAAI,wBAAwB,GAC9C,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,6BAA6B,IAAI,gCAAgC,EACjE,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,wCAAwC,GAAG;IACrD,OAAO,CAAC,EAAE,kCAAkC,CAAC;IAC7C,WAAW,CAAC,EAAE,6BAA6B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,CAAC,IAAI,EAAE;QACnB,aAAa,EAAE,gBAAgB,CAAC;KACjC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACzB,yBAAyB,EAAE,CAAC,IAAI,EAAE;QAChC,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,gBAAgB,CAAC;KACjC,KAAK,OAAO,CAAC,kCAAkC,CAAC,CAAC;IAClD,8BAA8B,CAAC,EAAE,CAAC,IAAI,EAAE;QACtC,OAAO,CAAC,EAAE,kCAAkC,CAAC;QAC7C,WAAW,CAAC,EAAE,6BAA6B,CAAC;QAC5C,gBAAgB,EAAE,WAAW,CAAC;QAC9B,aAAa,EAAE,gBAAgB,CAAC;KACjC,KAAK,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACvD,eAAe,EAAE,CAAC,IAAI,EAAE;QACtB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,gBAAgB,CAAC;KACjC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,EAAE,WAAW,CAAC;QAC9B,aAAa,EAAE,gBAAgB,CAAC;KACjC,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC9C,CAAC"}
@@ -7,5 +7,5 @@
7
7
  *
8
8
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
9
9
  */
10
- export declare const addSuiExtension: (client?: any) => void;
10
+ export declare const addSuiExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
11
11
  //# sourceMappingURL=addSuiExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addSuiExtension.d.ts","sourceRoot":"","sources":["../../src/addSuiExtension/addSuiExtension.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,iEAAkC,IAG7D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addSuiExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,202 @@
1
+ const require_registerSuiNetworkProviderBuilder = require('./registerSuiNetworkProviderBuilder-D_4KMsRa.cjs.js');
2
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
3
+ let _mysten_sui_client = require("@mysten/sui/client");
4
+ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
5
+ let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
6
+ let _mysten_wallet_standard = require("@mysten/wallet-standard");
7
+
8
+ //#region src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.ts
9
+ const createWalletProviderFromSuiStandardWallet = ({ dynamicClient, walletStandardWallet }) => {
10
+ const features = walletStandardWallet.features;
11
+ const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
12
+ const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
13
+ chain: "SUI",
14
+ displayName: walletStandardWallet.name,
15
+ walletProviderType
16
+ });
17
+ const runConnectFeature = async ({ silent = false } = {}) => {
18
+ const connectMethod = features["standard:connect"]?.connect;
19
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(connectMethod, "connect method not found in wallet features");
20
+ return { addresses: (await connectMethod({ silent })).accounts?.map((account) => ({
21
+ address: account.address,
22
+ publicKey: account.publicKey?.toString()
23
+ })) };
24
+ };
25
+ const connect = async () => {
26
+ const autoConnectedAccounts = walletStandardWallet.accounts;
27
+ if (autoConnectedAccounts?.length && autoConnectedAccounts[0].address) return { addresses: [{
28
+ address: autoConnectedAccounts[0].address,
29
+ publicKey: autoConnectedAccounts[0].publicKey?.toString()
30
+ }] };
31
+ return runConnectFeature();
32
+ };
33
+ const disconnectFeature = features["standard:disconnect"]?.disconnect;
34
+ const getActiveNetworkId = async () => (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
35
+ client: dynamicClient,
36
+ walletProviderKey: key
37
+ });
38
+ const getCurrentAccount = async () => {
39
+ if (!isConnected()) await runConnectFeature({ silent: true });
40
+ const account = walletStandardWallet.accounts?.[0];
41
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(account, "No connected accounts found");
42
+ return account;
43
+ };
44
+ const getSuiClient = async ({ walletAccount }) => {
45
+ const activeNetworkData = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, dynamicClient);
46
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(activeNetworkData, "No active network data found");
47
+ const url = activeNetworkData.networkData?.rpcUrls.http[0];
48
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(url, "No RPC URL found for active network");
49
+ return new _mysten_sui_client.SuiClient({ url });
50
+ };
51
+ const isConnected = () => {
52
+ return walletStandardWallet.accounts?.length > 0;
53
+ };
54
+ const getConnectedAddresses = async () => {
55
+ if (!isConnected()) await runConnectFeature({ silent: true });
56
+ return { addresses: walletStandardWallet.accounts.map((account) => account.address) };
57
+ };
58
+ const signAndExecuteTransaction = async ({ transaction, walletAccount }) => {
59
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
60
+ const signAndExecuteTransactionMethod = features["sui:signAndExecuteTransaction"]?.signAndExecuteTransaction;
61
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(signAndExecuteTransactionMethod, "signAndExecuteTransaction method not found in wallet features");
62
+ const account = await getCurrentAccount();
63
+ return signAndExecuteTransactionMethod({
64
+ account,
65
+ chain: account.chains[0],
66
+ transaction
67
+ });
68
+ };
69
+ const signAndExecuteTransactionBlock = async ({ options, requestType, transactionBlock, walletAccount }) => {
70
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
71
+ const signAndExecuteTransactionBlockMethod = features["sui:signAndExecuteTransactionBlock"]?.signAndExecuteTransactionBlock;
72
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(signAndExecuteTransactionBlockMethod, "signAndExecuteTransactionBlock method not found in wallet features");
73
+ const account = await getCurrentAccount();
74
+ return signAndExecuteTransactionBlockMethod({
75
+ account,
76
+ chain: account.chains[0],
77
+ options,
78
+ requestType,
79
+ transactionBlock
80
+ });
81
+ };
82
+ const signMessage = async ({ message, walletAccount }) => {
83
+ const signMessageMethod = features["sui:signPersonalMessage"]?.signPersonalMessage;
84
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(signMessageMethod, "signPersonalMessage method not found in wallet features");
85
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account not found");
86
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
87
+ const encodedMessage = new TextEncoder().encode(message);
88
+ const { signature } = await signMessageMethod({
89
+ account: await getCurrentAccount(),
90
+ message: encodedMessage
91
+ });
92
+ return { signature };
93
+ };
94
+ const signTransaction = async ({ transaction, walletAccount }) => {
95
+ const signTransactionMethod = features["sui:signTransaction"]?.signTransaction;
96
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(signTransactionMethod, "signTransaction method not found in wallet features");
97
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
98
+ const account = await getCurrentAccount();
99
+ return signTransactionMethod({
100
+ account,
101
+ chain: account.chains[0],
102
+ transaction
103
+ });
104
+ };
105
+ const signTransactionBlock = async ({ transactionBlock, walletAccount }) => {
106
+ const signTransactionBlockMethod = features["sui:signTransactionBlock"]?.signTransactionBlock;
107
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(signTransactionBlockMethod, "signTransactionBlock method not found in wallet features");
108
+ await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
109
+ const account = await getCurrentAccount();
110
+ return signTransactionBlockMethod({
111
+ account,
112
+ chain: account.chains[0],
113
+ transactionBlock
114
+ });
115
+ };
116
+ const switchActiveNetwork = async ({ networkId }) => (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
117
+ client: dynamicClient,
118
+ networkId,
119
+ walletProviderKey: key
120
+ });
121
+ const { getEventEmitter, cleanupEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
122
+ removeEventListeners: ({ setupReturnValue }) => {
123
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(setupReturnValue, "Setup return value not defined");
124
+ setupReturnValue();
125
+ },
126
+ setupEventListeners: ({ handleAccountsChanged }) => {
127
+ return features["standard:events"].on("change", ({ accounts }) => {
128
+ handleAccountsChanged({ addresses: accounts?.map((account) => account.address) ?? [] });
129
+ });
130
+ },
131
+ supportedEvents: ["accountsChanged"]
132
+ });
133
+ const terminate = async () => {
134
+ cleanupEventEmitter();
135
+ };
136
+ return {
137
+ chain: "SUI",
138
+ connect,
139
+ disconnect: disconnectFeature,
140
+ get events() {
141
+ return getEventEmitter();
142
+ },
143
+ getActiveNetworkId,
144
+ getConnectedAddresses,
145
+ getSuiClient,
146
+ groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(walletStandardWallet.name),
147
+ key,
148
+ metadata: {
149
+ displayName: walletStandardWallet.name,
150
+ icon: walletStandardWallet.icon
151
+ },
152
+ signAndExecuteTransaction,
153
+ signAndExecuteTransactionBlock,
154
+ signMessage,
155
+ signTransaction,
156
+ signTransactionBlock,
157
+ switchActiveNetwork,
158
+ terminate,
159
+ walletProviderType
160
+ };
161
+ };
162
+
163
+ //#endregion
164
+ //#region src/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.ts
165
+ const SUI_WALLET_STANDARD_EXTENSION_KEY = "suiWalletStandard";
166
+ /**
167
+ * Adds the Sui Wallet Standard extension to the Dynamic client.
168
+ *
169
+ * This extension enables integration with wallets that implement the Sui Wallet Standard,
170
+ * automatically detecting and registering compatible wallets for use with the Dynamic SDK.
171
+ *
172
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
173
+ */
174
+ const addSuiWalletStandardExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
175
+ if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client)) return;
176
+ (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client);
177
+ require_registerSuiNetworkProviderBuilder.registerSuiNetworkProviderBuilder(client);
178
+ const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
179
+ (0, _mysten_wallet_standard.getWallets)().get().filter((wallet) => (0, _mysten_wallet_standard.isWalletWithRequiredFeatureSet)(wallet, [
180
+ "standard:events",
181
+ "standard:connect",
182
+ "sui:signPersonalMessage"
183
+ ])).forEach((walletStandardWallet) => {
184
+ const walletProvider = createWalletProviderFromSuiStandardWallet({
185
+ dynamicClient: client,
186
+ walletStandardWallet
187
+ });
188
+ walletProviderRegistry.register({
189
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
190
+ walletProvider
191
+ });
192
+ });
193
+ };
194
+
195
+ //#endregion
196
+ Object.defineProperty(exports, 'addSuiWalletStandardExtension', {
197
+ enumerable: true,
198
+ get: function () {
199
+ return addSuiWalletStandardExtension;
200
+ }
201
+ });
202
+ //# sourceMappingURL=addSuiWalletStandardExtension-B912xX09.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addSuiWalletStandardExtension-B912xX09.cjs.js","names":["WalletProviderEnum","connect: SuiWalletProvider['connect']","getActiveNetworkId: SuiWalletProvider['getActiveNetworkId']","getSuiClient: SuiWalletProvider['getSuiClient']","SuiClient","getConnectedAddresses: SuiWalletProvider['getConnectedAddresses']","signAndExecuteTransaction: SuiWalletProvider['signAndExecuteTransaction']","signAndExecuteTransactionBlock: SuiWalletProvider['signAndExecuteTransactionBlock']","signMessage: SuiWalletProvider['signMessage']","signTransaction: SuiWalletProvider['signTransaction']","signTransactionBlock: SuiWalletProvider['signTransactionBlock']","switchActiveNetwork: SuiWalletProvider['switchActiveNetwork']","terminate: SuiWalletProvider['terminate']","WalletProviderPriority"],"sources":["../src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.ts","../src/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.ts"],"sourcesContent":["import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SuiClient } from '@mysten/sui/client';\nimport type {\n StandardEventsChangeProperties,\n SuiWalletFeatures,\n WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\nimport type { SuiWalletProvider } from '../../../SuiWalletProvider.types';\n\ntype CreateWalletProviderFromSuiStandardWalletParams = {\n dynamicClient: DynamicClient;\n walletStandardWallet: WalletWithFeatures<SuiWalletFeatures>;\n};\n\nexport const createWalletProviderFromSuiStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n}: CreateWalletProviderFromSuiStandardWalletParams): SuiWalletProvider => {\n const features = walletStandardWallet.features;\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'SUI',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const runConnectFeature = async ({\n silent = false,\n }: {\n silent?: boolean;\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 });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n\n const connect: SuiWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n if (autoConnectedAccounts?.length && autoConnectedAccounts[0].address) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey?.toString(),\n },\n ],\n };\n }\n\n return runConnectFeature();\n };\n\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SuiWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected()) {\n await runConnectFeature({ silent: true });\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const getSuiClient: SuiWalletProvider['getSuiClient'] = async ({\n walletAccount,\n }) => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const client = new SuiClient({ url });\n return client;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SuiWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected()) {\n await runConnectFeature({ silent: true });\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAndExecuteTransaction: SuiWalletProvider['signAndExecuteTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndExecuteTransactionMethod =\n features['sui:signAndExecuteTransaction']?.signAndExecuteTransaction;\n\n assertDefined(\n signAndExecuteTransactionMethod,\n 'signAndExecuteTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n return signAndExecuteTransactionMethod({\n account,\n chain: account.chains[0],\n transaction,\n });\n };\n\n /* This method is deprecated, but still required by some wallets for backwards compatibility. */\n const signAndExecuteTransactionBlock: SuiWalletProvider['signAndExecuteTransactionBlock'] =\n async ({ options, requestType, transactionBlock, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndExecuteTransactionBlockMethod =\n features['sui:signAndExecuteTransactionBlock']\n ?.signAndExecuteTransactionBlock;\n\n assertDefined(\n signAndExecuteTransactionBlockMethod,\n 'signAndExecuteTransactionBlock method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n return signAndExecuteTransactionBlockMethod({\n account,\n chain: account.chains[0],\n options,\n requestType,\n transactionBlock,\n });\n };\n\n const signMessage: SuiWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod =\n features['sui:signPersonalMessage']?.signPersonalMessage;\n\n assertDefined(\n signMessageMethod,\n 'signPersonalMessage 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 { signature } = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature };\n };\n\n const signTransaction: SuiWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signTransactionMethod =\n features['sui: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 return signTransactionMethod({\n account,\n chain: account.chains[0],\n transaction,\n });\n };\n\n /* This method is deprecated, but still required by some wallets for backwards compatibility. */\n const signTransactionBlock: SuiWalletProvider['signTransactionBlock'] =\n async ({ transactionBlock, walletAccount }) => {\n const signTransactionBlockMethod =\n features['sui:signTransactionBlock']?.signTransactionBlock;\n\n assertDefined(\n signTransactionBlockMethod,\n 'signTransactionBlock method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n return signTransactionBlockMethod({\n account,\n chain: account.chains[0],\n transactionBlock,\n });\n };\n\n const switchActiveNetwork: SuiWalletProvider['switchActiveNetwork'] = async ({\n networkId,\n }) =>\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(\n 'change',\n ({ accounts }: StandardEventsChangeProperties) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n }\n );\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: SuiWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: SuiWalletProvider = {\n chain: 'SUI',\n connect,\n disconnect: disconnectFeature,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getSuiClient,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAndExecuteTransaction,\n signAndExecuteTransactionBlock,\n signMessage,\n signTransaction,\n signTransactionBlock,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport type {\n SuiWalletFeatures,\n WalletWithFeatures,\n} from '@mysten/wallet-standard';\nimport {\n getWallets,\n isWalletWithRequiredFeatureSet,\n} from '@mysten/wallet-standard';\n\nimport { registerSuiNetworkProviderBuilder } from '../../registerSuiNetworkProviderBuilder';\nimport { createWalletProviderFromSuiStandardWallet } from '../utils/createWalletProviderFromSuiStandardWallet';\n\nexport const SUI_WALLET_STANDARD_EXTENSION_KEY = 'suiWalletStandard';\n\n/**\n * Adds the Sui Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Sui 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 */\nexport const addSuiWalletStandardExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSuiNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletStandardWallets = getWallets()\n .get()\n .filter((wallet) =>\n isWalletWithRequiredFeatureSet(wallet, [\n 'standard:events',\n 'standard:connect',\n 'sui:signPersonalMessage',\n ])\n ) as WalletWithFeatures<SuiWalletFeatures>[];\n\n walletStandardWallets.forEach((walletStandardWallet) => {\n const walletProvider = createWalletProviderFromSuiStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ import { t as registerSuiNetworkProviderBuilder } from "./registerSuiNetworkProviderBuilder-D7tsupMX.esm.js";
2
+ import { WalletProviderPriority, assertDefined, createWalletProviderEventEmitter, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
3
+ import { SuiClient } from "@mysten/sui/client";
4
+ import { assertWalletAccountSigningAvailability, getActiveNetworkData } from "@dynamic-labs-sdk/client";
5
+ import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
6
+ import { getWallets, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
7
+
8
+ //#region src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.ts
9
+ const createWalletProviderFromSuiStandardWallet = ({ dynamicClient, walletStandardWallet }) => {
10
+ const features = walletStandardWallet.features;
11
+ const walletProviderType = WalletProviderEnum.BrowserExtension;
12
+ const key = formatWalletProviderKey({
13
+ chain: "SUI",
14
+ displayName: walletStandardWallet.name,
15
+ walletProviderType
16
+ });
17
+ const runConnectFeature = async ({ silent = false } = {}) => {
18
+ const connectMethod = features["standard:connect"]?.connect;
19
+ assertDefined(connectMethod, "connect method not found in wallet features");
20
+ return { addresses: (await connectMethod({ silent })).accounts?.map((account) => ({
21
+ address: account.address,
22
+ publicKey: account.publicKey?.toString()
23
+ })) };
24
+ };
25
+ const connect = async () => {
26
+ const autoConnectedAccounts = walletStandardWallet.accounts;
27
+ if (autoConnectedAccounts?.length && autoConnectedAccounts[0].address) return { addresses: [{
28
+ address: autoConnectedAccounts[0].address,
29
+ publicKey: autoConnectedAccounts[0].publicKey?.toString()
30
+ }] };
31
+ return runConnectFeature();
32
+ };
33
+ const disconnectFeature = features["standard:disconnect"]?.disconnect;
34
+ const getActiveNetworkId = async () => getActiveNetworkIdFromLastKnownRegistry({
35
+ client: dynamicClient,
36
+ walletProviderKey: key
37
+ });
38
+ const getCurrentAccount = async () => {
39
+ if (!isConnected()) await runConnectFeature({ silent: true });
40
+ const account = walletStandardWallet.accounts?.[0];
41
+ assertDefined(account, "No connected accounts found");
42
+ return account;
43
+ };
44
+ const getSuiClient = async ({ walletAccount }) => {
45
+ const activeNetworkData = await getActiveNetworkData({ walletAccount }, dynamicClient);
46
+ assertDefined(activeNetworkData, "No active network data found");
47
+ const url = activeNetworkData.networkData?.rpcUrls.http[0];
48
+ assertDefined(url, "No RPC URL found for active network");
49
+ return new SuiClient({ url });
50
+ };
51
+ const isConnected = () => {
52
+ return walletStandardWallet.accounts?.length > 0;
53
+ };
54
+ const getConnectedAddresses = async () => {
55
+ if (!isConnected()) await runConnectFeature({ silent: true });
56
+ return { addresses: walletStandardWallet.accounts.map((account) => account.address) };
57
+ };
58
+ const signAndExecuteTransaction = async ({ transaction, walletAccount }) => {
59
+ await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
60
+ const signAndExecuteTransactionMethod = features["sui:signAndExecuteTransaction"]?.signAndExecuteTransaction;
61
+ assertDefined(signAndExecuteTransactionMethod, "signAndExecuteTransaction method not found in wallet features");
62
+ const account = await getCurrentAccount();
63
+ return signAndExecuteTransactionMethod({
64
+ account,
65
+ chain: account.chains[0],
66
+ transaction
67
+ });
68
+ };
69
+ const signAndExecuteTransactionBlock = async ({ options, requestType, transactionBlock, walletAccount }) => {
70
+ await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
71
+ const signAndExecuteTransactionBlockMethod = features["sui:signAndExecuteTransactionBlock"]?.signAndExecuteTransactionBlock;
72
+ assertDefined(signAndExecuteTransactionBlockMethod, "signAndExecuteTransactionBlock method not found in wallet features");
73
+ const account = await getCurrentAccount();
74
+ return signAndExecuteTransactionBlockMethod({
75
+ account,
76
+ chain: account.chains[0],
77
+ options,
78
+ requestType,
79
+ transactionBlock
80
+ });
81
+ };
82
+ const signMessage = async ({ message, walletAccount }) => {
83
+ const signMessageMethod = features["sui:signPersonalMessage"]?.signPersonalMessage;
84
+ assertDefined(signMessageMethod, "signPersonalMessage method not found in wallet features");
85
+ assertDefined(walletAccount, "Wallet account not found");
86
+ await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
87
+ const encodedMessage = new TextEncoder().encode(message);
88
+ const { signature } = await signMessageMethod({
89
+ account: await getCurrentAccount(),
90
+ message: encodedMessage
91
+ });
92
+ return { signature };
93
+ };
94
+ const signTransaction = async ({ transaction, walletAccount }) => {
95
+ const signTransactionMethod = features["sui:signTransaction"]?.signTransaction;
96
+ assertDefined(signTransactionMethod, "signTransaction method not found in wallet features");
97
+ await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
98
+ const account = await getCurrentAccount();
99
+ return signTransactionMethod({
100
+ account,
101
+ chain: account.chains[0],
102
+ transaction
103
+ });
104
+ };
105
+ const signTransactionBlock = async ({ transactionBlock, walletAccount }) => {
106
+ const signTransactionBlockMethod = features["sui:signTransactionBlock"]?.signTransactionBlock;
107
+ assertDefined(signTransactionBlockMethod, "signTransactionBlock method not found in wallet features");
108
+ await assertWalletAccountSigningAvailability({ walletAccount }, dynamicClient);
109
+ const account = await getCurrentAccount();
110
+ return signTransactionBlockMethod({
111
+ account,
112
+ chain: account.chains[0],
113
+ transactionBlock
114
+ });
115
+ };
116
+ const switchActiveNetwork = async ({ networkId }) => switchActiveNetworkInLastKnownRegistry({
117
+ client: dynamicClient,
118
+ networkId,
119
+ walletProviderKey: key
120
+ });
121
+ const { getEventEmitter, cleanupEventEmitter } = createWalletProviderEventEmitter({
122
+ removeEventListeners: ({ setupReturnValue }) => {
123
+ assertDefined(setupReturnValue, "Setup return value not defined");
124
+ setupReturnValue();
125
+ },
126
+ setupEventListeners: ({ handleAccountsChanged }) => {
127
+ return features["standard:events"].on("change", ({ accounts }) => {
128
+ handleAccountsChanged({ addresses: accounts?.map((account) => account.address) ?? [] });
129
+ });
130
+ },
131
+ supportedEvents: ["accountsChanged"]
132
+ });
133
+ const terminate = async () => {
134
+ cleanupEventEmitter();
135
+ };
136
+ return {
137
+ chain: "SUI",
138
+ connect,
139
+ disconnect: disconnectFeature,
140
+ get events() {
141
+ return getEventEmitter();
142
+ },
143
+ getActiveNetworkId,
144
+ getConnectedAddresses,
145
+ getSuiClient,
146
+ groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),
147
+ key,
148
+ metadata: {
149
+ displayName: walletStandardWallet.name,
150
+ icon: walletStandardWallet.icon
151
+ },
152
+ signAndExecuteTransaction,
153
+ signAndExecuteTransactionBlock,
154
+ signMessage,
155
+ signTransaction,
156
+ signTransactionBlock,
157
+ switchActiveNetwork,
158
+ terminate,
159
+ walletProviderType
160
+ };
161
+ };
162
+
163
+ //#endregion
164
+ //#region src/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.ts
165
+ const SUI_WALLET_STANDARD_EXTENSION_KEY = "suiWalletStandard";
166
+ /**
167
+ * Adds the Sui Wallet Standard extension to the Dynamic client.
168
+ *
169
+ * This extension enables integration with wallets that implement the Sui Wallet Standard,
170
+ * automatically detecting and registering compatible wallets for use with the Dynamic SDK.
171
+ *
172
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
173
+ */
174
+ const addSuiWalletStandardExtension = (client = getDefaultClient()) => {
175
+ if (hasExtension({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client)) return;
176
+ registerExtension({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client);
177
+ registerSuiNetworkProviderBuilder(client);
178
+ const walletProviderRegistry = getWalletProviderRegistry(client);
179
+ getWallets().get().filter((wallet) => isWalletWithRequiredFeatureSet(wallet, [
180
+ "standard:events",
181
+ "standard:connect",
182
+ "sui:signPersonalMessage"
183
+ ])).forEach((walletStandardWallet) => {
184
+ const walletProvider = createWalletProviderFromSuiStandardWallet({
185
+ dynamicClient: client,
186
+ walletStandardWallet
187
+ });
188
+ walletProviderRegistry.register({
189
+ priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
190
+ walletProvider
191
+ });
192
+ });
193
+ };
194
+
195
+ //#endregion
196
+ export { addSuiWalletStandardExtension as t };
197
+ //# sourceMappingURL=addSuiWalletStandardExtension-DLpr58Rh.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addSuiWalletStandardExtension-DLpr58Rh.esm.js","names":["connect: SuiWalletProvider['connect']","getActiveNetworkId: SuiWalletProvider['getActiveNetworkId']","getSuiClient: SuiWalletProvider['getSuiClient']","getConnectedAddresses: SuiWalletProvider['getConnectedAddresses']","signAndExecuteTransaction: SuiWalletProvider['signAndExecuteTransaction']","signAndExecuteTransactionBlock: SuiWalletProvider['signAndExecuteTransactionBlock']","signMessage: SuiWalletProvider['signMessage']","signTransaction: SuiWalletProvider['signTransaction']","signTransactionBlock: SuiWalletProvider['signTransactionBlock']","switchActiveNetwork: SuiWalletProvider['switchActiveNetwork']","terminate: SuiWalletProvider['terminate']"],"sources":["../src/walletStandard/utils/createWalletProviderFromSuiStandardWallet/createWalletProviderFromSuiStandardWallet.ts","../src/walletStandard/addSuiWalletStandardExtension/addSuiWalletStandardExtension.ts"],"sourcesContent":["import {\n type DynamicClient,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SuiClient } from '@mysten/sui/client';\nimport type {\n StandardEventsChangeProperties,\n SuiWalletFeatures,\n WalletWithFeatures,\n} from '@mysten/wallet-standard';\n\nimport type { SuiWalletProvider } from '../../../SuiWalletProvider.types';\n\ntype CreateWalletProviderFromSuiStandardWalletParams = {\n dynamicClient: DynamicClient;\n walletStandardWallet: WalletWithFeatures<SuiWalletFeatures>;\n};\n\nexport const createWalletProviderFromSuiStandardWallet = ({\n dynamicClient,\n walletStandardWallet,\n}: CreateWalletProviderFromSuiStandardWalletParams): SuiWalletProvider => {\n const features = walletStandardWallet.features;\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain: 'SUI',\n displayName: walletStandardWallet.name,\n walletProviderType,\n });\n\n const runConnectFeature = async ({\n silent = false,\n }: {\n silent?: boolean;\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 });\n\n return {\n addresses: result.accounts?.map((account) => ({\n address: account.address,\n publicKey: account.publicKey?.toString(),\n })),\n };\n };\n\n const connect: SuiWalletProvider['connect'] = async () => {\n const autoConnectedAccounts = walletStandardWallet.accounts;\n\n if (autoConnectedAccounts?.length && autoConnectedAccounts[0].address) {\n return {\n addresses: [\n {\n address: autoConnectedAccounts[0].address,\n publicKey: autoConnectedAccounts[0].publicKey?.toString(),\n },\n ],\n };\n }\n\n return runConnectFeature();\n };\n\n const disconnectFeature = features['standard:disconnect']?.disconnect;\n\n const getActiveNetworkId: SuiWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getCurrentAccount = async () => {\n if (!isConnected()) {\n await runConnectFeature({ silent: true });\n }\n\n const account = walletStandardWallet.accounts?.[0];\n\n assertDefined(account, 'No connected accounts found');\n\n return account;\n };\n\n const getSuiClient: SuiWalletProvider['getSuiClient'] = async ({\n walletAccount,\n }) => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const client = new SuiClient({ url });\n return client;\n };\n\n const isConnected = (): boolean => {\n return walletStandardWallet.accounts?.length > 0;\n };\n\n const getConnectedAddresses: SuiWalletProvider['getConnectedAddresses'] =\n async () => {\n if (!isConnected()) {\n await runConnectFeature({ silent: true });\n }\n\n return {\n addresses: walletStandardWallet.accounts.map(\n (account) => account.address\n ),\n };\n };\n\n const signAndExecuteTransaction: SuiWalletProvider['signAndExecuteTransaction'] =\n async ({ transaction, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndExecuteTransactionMethod =\n features['sui:signAndExecuteTransaction']?.signAndExecuteTransaction;\n\n assertDefined(\n signAndExecuteTransactionMethod,\n 'signAndExecuteTransaction method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n return signAndExecuteTransactionMethod({\n account,\n chain: account.chains[0],\n transaction,\n });\n };\n\n /* This method is deprecated, but still required by some wallets for backwards compatibility. */\n const signAndExecuteTransactionBlock: SuiWalletProvider['signAndExecuteTransactionBlock'] =\n async ({ options, requestType, transactionBlock, walletAccount }) => {\n await assertWalletAccountSigningAvailability(\n {\n walletAccount,\n },\n dynamicClient\n );\n\n const signAndExecuteTransactionBlockMethod =\n features['sui:signAndExecuteTransactionBlock']\n ?.signAndExecuteTransactionBlock;\n\n assertDefined(\n signAndExecuteTransactionBlockMethod,\n 'signAndExecuteTransactionBlock method not found in wallet features'\n );\n\n const account = await getCurrentAccount();\n\n return signAndExecuteTransactionBlockMethod({\n account,\n chain: account.chains[0],\n options,\n requestType,\n transactionBlock,\n });\n };\n\n const signMessage: SuiWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const signMessageMethod =\n features['sui:signPersonalMessage']?.signPersonalMessage;\n\n assertDefined(\n signMessageMethod,\n 'signPersonalMessage 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 { signature } = await signMessageMethod({\n account,\n message: encodedMessage,\n });\n\n return { signature };\n };\n\n const signTransaction: SuiWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const signTransactionMethod =\n features['sui: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 return signTransactionMethod({\n account,\n chain: account.chains[0],\n transaction,\n });\n };\n\n /* This method is deprecated, but still required by some wallets for backwards compatibility. */\n const signTransactionBlock: SuiWalletProvider['signTransactionBlock'] =\n async ({ transactionBlock, walletAccount }) => {\n const signTransactionBlockMethod =\n features['sui:signTransactionBlock']?.signTransactionBlock;\n\n assertDefined(\n signTransactionBlockMethod,\n 'signTransactionBlock method not found in wallet features'\n );\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const account = await getCurrentAccount();\n\n return signTransactionBlockMethod({\n account,\n chain: account.chains[0],\n transactionBlock,\n });\n };\n\n const switchActiveNetwork: SuiWalletProvider['switchActiveNetwork'] = async ({\n networkId,\n }) =>\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(\n 'change',\n ({ accounts }: StandardEventsChangeProperties) => {\n handleAccountsChanged({\n addresses: accounts?.map((account) => account.address) ?? [],\n });\n }\n );\n },\n\n supportedEvents: ['accountsChanged'],\n });\n\n const terminate: SuiWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n const walletProvider: SuiWalletProvider = {\n chain: 'SUI',\n connect,\n disconnect: disconnectFeature,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId,\n getConnectedAddresses,\n getSuiClient,\n groupKey: formatWalletProviderGroupKey(walletStandardWallet.name),\n key,\n metadata: {\n displayName: walletStandardWallet.name,\n icon: walletStandardWallet.icon,\n },\n signAndExecuteTransaction,\n signAndExecuteTransactionBlock,\n signMessage,\n signTransaction,\n signTransactionBlock,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n\n return walletProvider;\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport type {\n SuiWalletFeatures,\n WalletWithFeatures,\n} from '@mysten/wallet-standard';\nimport {\n getWallets,\n isWalletWithRequiredFeatureSet,\n} from '@mysten/wallet-standard';\n\nimport { registerSuiNetworkProviderBuilder } from '../../registerSuiNetworkProviderBuilder';\nimport { createWalletProviderFromSuiStandardWallet } from '../utils/createWalletProviderFromSuiStandardWallet';\n\nexport const SUI_WALLET_STANDARD_EXTENSION_KEY = 'suiWalletStandard';\n\n/**\n * Adds the Sui Wallet Standard extension to the Dynamic client.\n *\n * This extension enables integration with wallets that implement the Sui 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 */\nexport const addSuiWalletStandardExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: SUI_WALLET_STANDARD_EXTENSION_KEY },\n client\n );\n\n registerSuiNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletStandardWallets = getWallets()\n .get()\n .filter((wallet) =>\n isWalletWithRequiredFeatureSet(wallet, [\n 'standard:events',\n 'standard:connect',\n 'sui:signPersonalMessage',\n ])\n ) as WalletWithFeatures<SuiWalletFeatures>[];\n\n walletStandardWallets.forEach((walletStandardWallet) => {\n const walletProvider = createWalletProviderFromSuiStandardWallet({\n dynamicClient: client,\n walletStandardWallet,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { t as registerSuiNetworkProviderBuilder } from "./registerSuiNetworkProviderBuilder-D7tsupMX.esm.js";
2
+ import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getBuffer, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
3
+ import { SuiClient } from "@mysten/sui/client";
4
+ import { getActiveNetworkData } from "@dynamic-labs-sdk/client";
5
+ import { DYNAMIC_WAAS_METADATA, createWaasProvider, getAllUserWaasAddressesForChain } from "@dynamic-labs-sdk/client/waas/core";
6
+ import { WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
7
+
8
+ //#region src/waas/utils/createWalletProviderForWaasSui/createWalletProviderForWaasSui.ts
9
+ const createWalletProviderForWaasSui = (sdkClient) => {
10
+ const chain = "SUI";
11
+ const walletProviderType = WalletProviderEnum.EmbeddedWallet;
12
+ const key = formatWalletProviderKey({
13
+ chain,
14
+ displayName: DYNAMIC_WAAS_METADATA.displayName,
15
+ walletProviderType
16
+ });
17
+ const waasProvider = createWaasProvider({
18
+ chain,
19
+ sdkClient
20
+ });
21
+ const getActiveNetworkId = async () => getActiveNetworkIdFromLastKnownRegistry({
22
+ client: sdkClient,
23
+ walletProviderKey: key
24
+ });
25
+ const getSuiClient = async ({ walletAccount }) => {
26
+ const activeNetworkData = await getActiveNetworkData({ walletAccount }, sdkClient);
27
+ assertDefined(activeNetworkData, "No active network data found");
28
+ const url = activeNetworkData.networkData?.rpcUrls.http[0];
29
+ assertDefined(url, "No RPC URL found for active network");
30
+ return new SuiClient({ url });
31
+ };
32
+ const switchActiveNetwork = async ({ networkId }) => switchActiveNetworkInLastKnownRegistry({
33
+ client: sdkClient,
34
+ networkId,
35
+ walletProviderKey: key
36
+ });
37
+ const getConnectedAddresses = async () => {
38
+ return { addresses: getAllUserWaasAddressesForChain({ chain }, sdkClient) };
39
+ };
40
+ const signAndExecuteTransaction = async ({ transaction, walletAccount }) => {
41
+ const { bytes, signature } = await signTransaction({
42
+ transaction,
43
+ walletAccount
44
+ });
45
+ const response = await (await getSuiClient({ walletAccount })).executeTransactionBlock({
46
+ signature,
47
+ transactionBlock: bytes
48
+ });
49
+ return {
50
+ ...response,
51
+ bytes,
52
+ effects: response.effects?.toString() ?? "",
53
+ signature
54
+ };
55
+ };
56
+ const signTransaction = async ({ transaction, walletAccount }) => {
57
+ const suiClient = await getSuiClient({ walletAccount });
58
+ const txBytes = await transaction.build({ client: suiClient });
59
+ const txBytesBase64 = getBuffer().from(txBytes).toString("base64");
60
+ const txString = getBuffer().from(txBytes).toString("hex");
61
+ const { signature } = await waasProvider.signSerializedTransaction({
62
+ serializedTransaction: txString,
63
+ walletAccount
64
+ });
65
+ return {
66
+ bytes: txBytesBase64,
67
+ signature
68
+ };
69
+ };
70
+ const signMessage = async ({ message, walletAccount }) => {
71
+ assertDefined(walletAccount, "Wallet account is required");
72
+ return waasProvider.signMessage({
73
+ message,
74
+ walletAccount
75
+ });
76
+ };
77
+ return {
78
+ ...waasProvider,
79
+ chain,
80
+ getActiveNetworkId,
81
+ getConnectedAddresses,
82
+ getSuiClient,
83
+ groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),
84
+ key,
85
+ metadata: {
86
+ displayName: DYNAMIC_WAAS_METADATA.displayName,
87
+ icon: DYNAMIC_WAAS_METADATA.icon
88
+ },
89
+ signAndExecuteTransaction,
90
+ signMessage,
91
+ signTransaction,
92
+ switchActiveNetwork,
93
+ walletProviderType
94
+ };
95
+ };
96
+
97
+ //#endregion
98
+ //#region src/waas/addWaasSuiExtension/addWaasSuiExtension.ts
99
+ const WAAS_SUI_EXTENSION_KEY = "waasSui";
100
+ /**
101
+ * Adds the Dynamic WaaS (Wallet as a Service) Sui extension to the Dynamic client.
102
+ *
103
+ * This extension enables embedded wallet functionality for Sui blockchain,
104
+ * allowing users to have wallets managed by Dynamic's infrastructure.
105
+ *
106
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
107
+ */
108
+ const addWaasSuiExtension = (client = getDefaultClient()) => {
109
+ if (hasExtension({ extensionKey: WAAS_SUI_EXTENSION_KEY }, client)) return;
110
+ registerExtension({ extensionKey: WAAS_SUI_EXTENSION_KEY }, client);
111
+ registerSuiNetworkProviderBuilder(client);
112
+ const walletProviderRegistry = getWalletProviderRegistry(client);
113
+ const walletProvider = createWalletProviderForWaasSui(client);
114
+ walletProviderRegistry.register({
115
+ priority: WalletProviderPriority.WALLET_SDK,
116
+ walletProvider
117
+ });
118
+ };
119
+
120
+ //#endregion
121
+ export { addWaasSuiExtension as t };
122
+ //# sourceMappingURL=addWaasSuiExtension-C1FjnguZ.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addWaasSuiExtension-C1FjnguZ.esm.js","names":["chain: Chain","getActiveNetworkId: WaasSuiWalletProvider['getActiveNetworkId']","getSuiClient: WaasSuiWalletProvider['getSuiClient']","switchActiveNetwork: WaasSuiWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasSuiWalletProvider['getConnectedAddresses']","signAndExecuteTransaction: WaasSuiWalletProvider['signAndExecuteTransaction']","signTransaction: WaasSuiWalletProvider['signTransaction']","signMessage: WaasSuiWalletProvider['signMessage']"],"sources":["../src/waas/utils/createWalletProviderForWaasSui/createWalletProviderForWaasSui.ts","../src/waas/addWaasSuiExtension/addWaasSuiExtension.ts"],"sourcesContent":["import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getBuffer,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SuiClient } from '@mysten/sui/client';\n\nimport type { WaasSuiWalletProvider } from '../../WaasSuiWalletProvider.types';\n\nexport const createWalletProviderForWaasSui = (\n sdkClient: DynamicClient\n): WaasSuiWalletProvider => {\n const chain: Chain = 'SUI';\n\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({ chain, sdkClient });\n\n const getActiveNetworkId: WaasSuiWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: sdkClient,\n walletProviderKey: key,\n });\n\n const getSuiClient: WaasSuiWalletProvider['getSuiClient'] = async ({\n walletAccount,\n }) => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n sdkClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n return new SuiClient({ url });\n };\n\n const switchActiveNetwork: WaasSuiWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: sdkClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasSuiWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasSolanaAddresses = getAllUserWaasAddressesForChain(\n { chain },\n sdkClient\n );\n\n return {\n addresses: waasSolanaAddresses,\n };\n };\n\n const signAndExecuteTransaction: WaasSuiWalletProvider['signAndExecuteTransaction'] =\n async ({ transaction, walletAccount }) => {\n const { bytes, signature } = await signTransaction({\n transaction,\n walletAccount,\n });\n\n const suiClient = await getSuiClient({ walletAccount });\n\n const response = await suiClient.executeTransactionBlock({\n signature,\n transactionBlock: bytes,\n });\n\n return {\n ...response,\n bytes,\n effects: response.effects?.toString() ?? '',\n signature,\n };\n };\n\n const signTransaction: WaasSuiWalletProvider['signTransaction'] = async ({\n transaction,\n walletAccount,\n }) => {\n const suiClient = await getSuiClient({ walletAccount });\n const txBytes = await transaction.build({ client: suiClient });\n const txBytesBase64 = getBuffer().from(txBytes).toString('base64');\n const txString = getBuffer().from(txBytes).toString('hex');\n\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: txString,\n walletAccount,\n });\n\n return { bytes: txBytesBase64, signature };\n };\n\n const signMessage: WaasSuiWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({ message, walletAccount });\n };\n\n return {\n ...waasProvider,\n chain,\n getActiveNetworkId,\n getConnectedAddresses,\n getSuiClient,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n signAndExecuteTransaction,\n signMessage,\n signTransaction,\n switchActiveNetwork,\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerSuiNetworkProviderBuilder } from '../../registerSuiNetworkProviderBuilder';\nimport { createWalletProviderForWaasSui } from '../utils/createWalletProviderForWaasSui';\n\nexport const WAAS_SUI_EXTENSION_KEY = 'waasSui';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Sui extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for Sui blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addWaasSuiExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_SUI_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_SUI_EXTENSION_KEY }, client);\n registerSuiNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasSui(client);\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":";;;;;;;;AAuBA,MAAa,kCACX,cAC0B;CAC1B,MAAMA,QAAe;CAErB,MAAM,qBAAqB,mBAAmB;CAE9C,MAAM,MAAM,wBAAwB;EAClC;EACA,aAAa,sBAAsB;EACnC;EACD,CAAC;CAEF,MAAM,eAAe,mBAAmB;EAAE;EAAO;EAAW,CAAC;CAE7D,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,eAAsD,OAAO,EACjE,oBACI;EACJ,MAAM,oBAAoB,MAAM,qBAC9B,EAAE,eAAe,EACjB,UACD;AACD,gBAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,gBAAc,KAAK,sCAAsC;AAEzD,SAAO,IAAI,UAAU,EAAE,KAAK,CAAC;;CAG/B,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,WAN0B,gCAC1B,EAAE,OAAO,EACT,UACD,EAIA;;CAGL,MAAMC,4BACJ,OAAO,EAAE,aAAa,oBAAoB;EACxC,MAAM,EAAE,OAAO,cAAc,MAAM,gBAAgB;GACjD;GACA;GACD,CAAC;EAIF,MAAM,WAAW,OAFC,MAAM,aAAa,EAAE,eAAe,CAAC,EAEtB,wBAAwB;GACvD;GACA,kBAAkB;GACnB,CAAC;AAEF,SAAO;GACL,GAAG;GACH;GACA,SAAS,SAAS,SAAS,UAAU,IAAI;GACzC;GACD;;CAGL,MAAMC,kBAA4D,OAAO,EACvE,aACA,oBACI;EACJ,MAAM,YAAY,MAAM,aAAa,EAAE,eAAe,CAAC;EACvD,MAAM,UAAU,MAAM,YAAY,MAAM,EAAE,QAAQ,WAAW,CAAC;EAC9D,MAAM,gBAAgB,WAAW,CAAC,KAAK,QAAQ,CAAC,SAAS,SAAS;EAClE,MAAM,WAAW,WAAW,CAAC,KAAK,QAAQ,CAAC,SAAS,MAAM;EAE1D,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;GACjE,uBAAuB;GACvB;GACD,CAAC;AAEF,SAAO;GAAE,OAAO;GAAe;GAAW;;CAG5C,MAAMC,cAAoD,OAAO,EAC/D,SACA,oBACI;AACJ,gBAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAAE;GAAS;GAAe,CAAC;;AAG7D,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACA,UAAU,6BAA6B,sBAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAa,sBAAsB;GACnC,MAAM,sBAAsB;GAC7B;EACD;EACA;EACA;EACA;EACA;EACD;;;;;ACtIH,MAAa,yBAAyB;;;;;;;;;AAUtC,MAAa,uBAAuB,SAAS,kBAAkB,KAAW;AACxE,KAAI,aAAa,EAAE,cAAc,wBAAwB,EAAE,OAAO,CAChE;AAGF,mBAAkB,EAAE,cAAc,wBAAwB,EAAE,OAAO;AACnE,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,iBAAiB,+BAA+B,OAAO;AAE7D,wBAAuB,SAAS;EAC9B,UAAU,uBAAuB;EACjC;EACD,CAAC"}