@lifi/sdk-provider-solana 4.0.0-alpha.21 → 4.0.0-alpha.23

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 (280) hide show
  1. package/dist/cjs/SolanaProvider.d.ts +7 -2
  2. package/dist/cjs/SolanaProvider.js +31 -34
  3. package/dist/cjs/SolanaProvider.js.map +1 -1
  4. package/dist/cjs/actions/getSNSAddress.d.ts +5 -1
  5. package/dist/cjs/actions/getSNSAddress.js +16 -22
  6. package/dist/cjs/actions/getSNSAddress.js.map +1 -1
  7. package/dist/cjs/actions/getSolanaBalance.d.ts +7 -3
  8. package/dist/cjs/actions/getSolanaBalance.js +50 -79
  9. package/dist/cjs/actions/getSolanaBalance.js.map +1 -1
  10. package/dist/cjs/actions/resolveSolanaAddress.d.ts +5 -1
  11. package/dist/cjs/actions/resolveSolanaAddress.js +7 -5
  12. package/dist/cjs/actions/resolveSolanaAddress.js.map +1 -1
  13. package/dist/cjs/actions/sendAndConfirmBundle.d.ts +29 -17
  14. package/dist/cjs/actions/sendAndConfirmBundle.js +59 -84
  15. package/dist/cjs/actions/sendAndConfirmBundle.js.map +1 -1
  16. package/dist/cjs/actions/sendAndConfirmTransaction.d.ts +26 -15
  17. package/dist/cjs/actions/sendAndConfirmTransaction.js +68 -97
  18. package/dist/cjs/actions/sendAndConfirmTransaction.js.map +1 -1
  19. package/dist/cjs/core/SolanaStepExecutor.d.ts +16 -9
  20. package/dist/cjs/core/SolanaStepExecutor.js +47 -48
  21. package/dist/cjs/core/SolanaStepExecutor.js.map +1 -1
  22. package/dist/cjs/core/tasks/SolanaJitoWaitForTransactionTask.d.ts +9 -4
  23. package/dist/cjs/core/tasks/SolanaJitoWaitForTransactionTask.js +31 -39
  24. package/dist/cjs/core/tasks/SolanaJitoWaitForTransactionTask.js.map +1 -1
  25. package/dist/cjs/core/tasks/SolanaSignAndExecuteTask.d.ts +9 -4
  26. package/dist/cjs/core/tasks/SolanaSignAndExecuteTask.js +36 -45
  27. package/dist/cjs/core/tasks/SolanaSignAndExecuteTask.js.map +1 -1
  28. package/dist/cjs/core/tasks/SolanaStandardWaitForTransactionTask.d.ts +9 -4
  29. package/dist/cjs/core/tasks/SolanaStandardWaitForTransactionTask.js +43 -56
  30. package/dist/cjs/core/tasks/SolanaStandardWaitForTransactionTask.js.map +1 -1
  31. package/dist/cjs/core/tasks/SolanaWaitForTransactionTask.d.ts +9 -4
  32. package/dist/cjs/core/tasks/SolanaWaitForTransactionTask.js +16 -18
  33. package/dist/cjs/core/tasks/SolanaWaitForTransactionTask.js.map +1 -1
  34. package/dist/cjs/errors/parseSolanaErrors.d.ts +7 -2
  35. package/dist/cjs/errors/parseSolanaErrors.js +18 -28
  36. package/dist/cjs/errors/parseSolanaErrors.js.map +1 -1
  37. package/dist/cjs/index.d.ts +5 -5
  38. package/dist/cjs/index.js +14 -12
  39. package/dist/cjs/rpc/jito/api/getBundleStatuses.d.ts +22 -14
  40. package/dist/cjs/rpc/jito/api/getBundleStatuses.js +0 -3
  41. package/dist/cjs/rpc/jito/api/getTipAccounts.d.ts +14 -4
  42. package/dist/cjs/rpc/jito/api/getTipAccounts.js +0 -3
  43. package/dist/cjs/rpc/jito/api/sendBundle.d.ts +21 -5
  44. package/dist/cjs/rpc/jito/api/sendBundle.js +0 -3
  45. package/dist/cjs/rpc/jito/api/simulateBundle.d.ts +49 -41
  46. package/dist/cjs/rpc/jito/api/simulateBundle.js +0 -3
  47. package/dist/cjs/rpc/jito/createJitoRpc.d.ts +14 -10
  48. package/dist/cjs/rpc/jito/createJitoRpc.js +16 -11
  49. package/dist/cjs/rpc/jito/createJitoRpc.js.map +1 -1
  50. package/dist/cjs/rpc/jito/types.d.ts +8 -1
  51. package/dist/cjs/rpc/jito/types.js +0 -3
  52. package/dist/cjs/rpc/registry.d.ts +21 -5
  53. package/dist/cjs/rpc/registry.js +44 -34
  54. package/dist/cjs/rpc/registry.js.map +1 -1
  55. package/dist/cjs/rpc/types.d.ts +9 -4
  56. package/dist/cjs/rpc/types.js +0 -3
  57. package/dist/cjs/rpc/utils.d.ts +67 -4
  58. package/dist/cjs/rpc/utils.js +79 -22
  59. package/dist/cjs/rpc/utils.js.map +1 -1
  60. package/dist/cjs/types.d.ts +23 -15
  61. package/dist/cjs/types.js +7 -5
  62. package/dist/cjs/types.js.map +1 -1
  63. package/dist/cjs/utils/KeypairWallet.unit.helpers.d.ts +7 -3
  64. package/dist/cjs/utils/KeypairWallet.unit.helpers.js +15 -17
  65. package/dist/cjs/utils/KeypairWallet.unit.helpers.js.map +1 -1
  66. package/dist/cjs/utils/KeypairWalletAdapter.d.ts +29 -16
  67. package/dist/cjs/utils/KeypairWalletAdapter.js +80 -83
  68. package/dist/cjs/utils/KeypairWalletAdapter.js.map +1 -1
  69. package/dist/cjs/utils/base64ToUint8Array.d.ts +5 -1
  70. package/dist/cjs/utils/base64ToUint8Array.js +10 -10
  71. package/dist/cjs/utils/base64ToUint8Array.js.map +1 -1
  72. package/dist/cjs/utils/getWalletFeature.d.ts +28 -8
  73. package/dist/cjs/utils/getWalletFeature.js +23 -8
  74. package/dist/cjs/utils/getWalletFeature.js.map +1 -1
  75. package/dist/cjs/utils/shouldUseJitoBundle.d.ts +8 -3
  76. package/dist/cjs/utils/shouldUseJitoBundle.js +8 -9
  77. package/dist/cjs/utils/shouldUseJitoBundle.js.map +1 -1
  78. package/dist/cjs/utils/withTimeout.d.ts +25 -6
  79. package/dist/cjs/utils/withTimeout.js +33 -33
  80. package/dist/cjs/utils/withTimeout.js.map +1 -1
  81. package/dist/cjs/version.d.ts +6 -2
  82. package/dist/cjs/version.js +8 -5
  83. package/dist/cjs/version.js.map +1 -1
  84. package/dist/esm/SolanaProvider.d.ts +7 -2
  85. package/dist/esm/SolanaProvider.d.ts.map +1 -0
  86. package/dist/esm/SolanaProvider.js +31 -32
  87. package/dist/esm/SolanaProvider.js.map +1 -1
  88. package/dist/esm/actions/getSNSAddress.d.ts +5 -1
  89. package/dist/esm/actions/getSNSAddress.d.ts.map +1 -0
  90. package/dist/esm/actions/getSNSAddress.js +17 -23
  91. package/dist/esm/actions/getSNSAddress.js.map +1 -1
  92. package/dist/esm/actions/getSolanaBalance.d.ts +7 -3
  93. package/dist/esm/actions/getSolanaBalance.d.ts.map +1 -0
  94. package/dist/esm/actions/getSolanaBalance.js +50 -78
  95. package/dist/esm/actions/getSolanaBalance.js.map +1 -1
  96. package/dist/esm/actions/resolveSolanaAddress.d.ts +5 -1
  97. package/dist/esm/actions/resolveSolanaAddress.d.ts.map +1 -0
  98. package/dist/esm/actions/resolveSolanaAddress.js +7 -3
  99. package/dist/esm/actions/resolveSolanaAddress.js.map +1 -1
  100. package/dist/esm/actions/sendAndConfirmBundle.d.ts +28 -24
  101. package/dist/esm/actions/sendAndConfirmBundle.d.ts.map +1 -0
  102. package/dist/esm/actions/sendAndConfirmBundle.js +58 -97
  103. package/dist/esm/actions/sendAndConfirmBundle.js.map +1 -1
  104. package/dist/esm/actions/sendAndConfirmTransaction.d.ts +25 -21
  105. package/dist/esm/actions/sendAndConfirmTransaction.d.ts.map +1 -0
  106. package/dist/esm/actions/sendAndConfirmTransaction.js +67 -111
  107. package/dist/esm/actions/sendAndConfirmTransaction.js.map +1 -1
  108. package/dist/esm/core/SolanaStepExecutor.d.ts +16 -9
  109. package/dist/esm/core/SolanaStepExecutor.d.ts.map +1 -0
  110. package/dist/esm/core/SolanaStepExecutor.js +47 -45
  111. package/dist/esm/core/SolanaStepExecutor.js.map +1 -1
  112. package/dist/esm/core/tasks/SolanaJitoWaitForTransactionTask.d.ts +9 -4
  113. package/dist/esm/core/tasks/SolanaJitoWaitForTransactionTask.d.ts.map +1 -0
  114. package/dist/esm/core/tasks/SolanaJitoWaitForTransactionTask.js +31 -39
  115. package/dist/esm/core/tasks/SolanaJitoWaitForTransactionTask.js.map +1 -1
  116. package/dist/esm/core/tasks/SolanaSignAndExecuteTask.d.ts +9 -4
  117. package/dist/esm/core/tasks/SolanaSignAndExecuteTask.d.ts.map +1 -0
  118. package/dist/esm/core/tasks/SolanaSignAndExecuteTask.js +36 -47
  119. package/dist/esm/core/tasks/SolanaSignAndExecuteTask.js.map +1 -1
  120. package/dist/esm/core/tasks/SolanaStandardWaitForTransactionTask.d.ts +9 -4
  121. package/dist/esm/core/tasks/SolanaStandardWaitForTransactionTask.d.ts.map +1 -0
  122. package/dist/esm/core/tasks/SolanaStandardWaitForTransactionTask.js +43 -55
  123. package/dist/esm/core/tasks/SolanaStandardWaitForTransactionTask.js.map +1 -1
  124. package/dist/esm/core/tasks/SolanaWaitForTransactionTask.d.ts +9 -4
  125. package/dist/esm/core/tasks/SolanaWaitForTransactionTask.d.ts.map +1 -0
  126. package/dist/esm/core/tasks/SolanaWaitForTransactionTask.js +16 -15
  127. package/dist/esm/core/tasks/SolanaWaitForTransactionTask.js.map +1 -1
  128. package/dist/esm/errors/parseSolanaErrors.d.ts +7 -2
  129. package/dist/esm/errors/parseSolanaErrors.d.ts.map +1 -0
  130. package/dist/esm/errors/parseSolanaErrors.js +18 -25
  131. package/dist/esm/errors/parseSolanaErrors.js.map +1 -1
  132. package/dist/esm/index.d.ts +5 -5
  133. package/dist/esm/index.js +5 -6
  134. package/dist/esm/package.json +1 -1
  135. package/dist/esm/rpc/jito/api/getBundleStatuses.d.ts +22 -22
  136. package/dist/esm/rpc/jito/api/getBundleStatuses.d.ts.map +1 -0
  137. package/dist/esm/rpc/jito/api/getBundleStatuses.js +0 -1
  138. package/dist/esm/rpc/jito/api/getTipAccounts.d.ts +13 -11
  139. package/dist/esm/rpc/jito/api/getTipAccounts.d.ts.map +1 -0
  140. package/dist/esm/rpc/jito/api/getTipAccounts.js +0 -1
  141. package/dist/esm/rpc/jito/api/sendBundle.d.ts +20 -20
  142. package/dist/esm/rpc/jito/api/sendBundle.d.ts.map +1 -0
  143. package/dist/esm/rpc/jito/api/sendBundle.js +0 -1
  144. package/dist/esm/rpc/jito/api/simulateBundle.d.ts +49 -50
  145. package/dist/esm/rpc/jito/api/simulateBundle.d.ts.map +1 -0
  146. package/dist/esm/rpc/jito/api/simulateBundle.js +0 -1
  147. package/dist/esm/rpc/jito/createJitoRpc.d.ts +14 -10
  148. package/dist/esm/rpc/jito/createJitoRpc.d.ts.map +1 -0
  149. package/dist/esm/rpc/jito/createJitoRpc.js +16 -12
  150. package/dist/esm/rpc/jito/createJitoRpc.js.map +1 -1
  151. package/dist/esm/rpc/jito/types.d.ts +7 -3
  152. package/dist/esm/rpc/jito/types.d.ts.map +1 -0
  153. package/dist/esm/rpc/jito/types.js +0 -1
  154. package/dist/esm/rpc/registry.d.ts +18 -13
  155. package/dist/esm/rpc/registry.d.ts.map +1 -0
  156. package/dist/esm/rpc/registry.js +38 -44
  157. package/dist/esm/rpc/registry.js.map +1 -1
  158. package/dist/esm/rpc/types.d.ts +9 -4
  159. package/dist/esm/rpc/types.d.ts.map +1 -0
  160. package/dist/esm/rpc/types.js +0 -1
  161. package/dist/esm/rpc/utils.d.ts +64 -57
  162. package/dist/esm/rpc/utils.d.ts.map +1 -0
  163. package/dist/esm/rpc/utils.js +73 -75
  164. package/dist/esm/rpc/utils.js.map +1 -1
  165. package/dist/esm/types.d.ts +23 -15
  166. package/dist/esm/types.d.ts.map +1 -0
  167. package/dist/esm/types.js +7 -3
  168. package/dist/esm/types.js.map +1 -1
  169. package/dist/esm/utils/KeypairWallet.unit.helpers.d.ts +7 -3
  170. package/dist/esm/utils/KeypairWallet.unit.helpers.d.ts.map +1 -0
  171. package/dist/esm/utils/KeypairWallet.unit.helpers.js +16 -16
  172. package/dist/esm/utils/KeypairWallet.unit.helpers.js.map +1 -1
  173. package/dist/esm/utils/KeypairWalletAdapter.d.ts +28 -23
  174. package/dist/esm/utils/KeypairWalletAdapter.d.ts.map +1 -0
  175. package/dist/esm/utils/KeypairWalletAdapter.js +79 -89
  176. package/dist/esm/utils/KeypairWalletAdapter.js.map +1 -1
  177. package/dist/esm/utils/base64ToUint8Array.d.ts +5 -1
  178. package/dist/esm/utils/base64ToUint8Array.d.ts.map +1 -0
  179. package/dist/esm/utils/base64ToUint8Array.js +10 -8
  180. package/dist/esm/utils/base64ToUint8Array.js.map +1 -1
  181. package/dist/esm/utils/getWalletFeature.d.ts +27 -23
  182. package/dist/esm/utils/getWalletFeature.d.ts.map +1 -0
  183. package/dist/esm/utils/getWalletFeature.js +22 -23
  184. package/dist/esm/utils/getWalletFeature.js.map +1 -1
  185. package/dist/esm/utils/shouldUseJitoBundle.d.ts +8 -3
  186. package/dist/esm/utils/shouldUseJitoBundle.d.ts.map +1 -0
  187. package/dist/esm/utils/shouldUseJitoBundle.js +9 -7
  188. package/dist/esm/utils/shouldUseJitoBundle.js.map +1 -1
  189. package/dist/esm/utils/withTimeout.d.ts +24 -14
  190. package/dist/esm/utils/withTimeout.d.ts.map +1 -0
  191. package/dist/esm/utils/withTimeout.js +31 -38
  192. package/dist/esm/utils/withTimeout.js.map +1 -1
  193. package/dist/esm/version.d.ts +6 -2
  194. package/dist/esm/version.d.ts.map +1 -0
  195. package/dist/esm/version.js +6 -2
  196. package/dist/esm/version.js.map +1 -1
  197. package/package.json +6 -6
  198. package/src/SolanaProvider.ts +1 -0
  199. package/src/actions/getSNSAddress.ts +3 -1
  200. package/src/core/SolanaStepExecutor.ts +8 -3
  201. package/src/core/tasks/SolanaStandardWaitForTransactionTask.ts +25 -23
  202. package/src/rpc/utils.ts +10 -2
  203. package/src/types.ts +3 -0
  204. package/src/utils/KeypairWallet.unit.helpers.ts +4 -1
  205. package/src/utils/base64ToUint8Array.ts +1 -1
  206. package/src/version.ts +1 -1
  207. package/dist/cjs/index.js.map +0 -1
  208. package/dist/cjs/rpc/jito/api/getBundleStatuses.js.map +0 -1
  209. package/dist/cjs/rpc/jito/api/getTipAccounts.js.map +0 -1
  210. package/dist/cjs/rpc/jito/api/sendBundle.js.map +0 -1
  211. package/dist/cjs/rpc/jito/api/simulateBundle.js.map +0 -1
  212. package/dist/cjs/rpc/jito/types.js.map +0 -1
  213. package/dist/cjs/rpc/types.js.map +0 -1
  214. package/dist/esm/index.js.map +0 -1
  215. package/dist/esm/rpc/jito/api/getBundleStatuses.js.map +0 -1
  216. package/dist/esm/rpc/jito/api/getTipAccounts.js.map +0 -1
  217. package/dist/esm/rpc/jito/api/sendBundle.js.map +0 -1
  218. package/dist/esm/rpc/jito/api/simulateBundle.js.map +0 -1
  219. package/dist/esm/rpc/jito/types.js.map +0 -1
  220. package/dist/esm/rpc/types.js.map +0 -1
  221. package/dist/types/SolanaProvider.d.ts +0 -3
  222. package/dist/types/SolanaProvider.d.ts.map +0 -1
  223. package/dist/types/actions/getSNSAddress.d.ts +0 -2
  224. package/dist/types/actions/getSNSAddress.d.ts.map +0 -1
  225. package/dist/types/actions/getSolanaBalance.d.ts +0 -4
  226. package/dist/types/actions/getSolanaBalance.d.ts.map +0 -1
  227. package/dist/types/actions/resolveSolanaAddress.d.ts +0 -2
  228. package/dist/types/actions/resolveSolanaAddress.d.ts.map +0 -1
  229. package/dist/types/actions/sendAndConfirmBundle.d.ts +0 -29
  230. package/dist/types/actions/sendAndConfirmBundle.d.ts.map +0 -1
  231. package/dist/types/actions/sendAndConfirmTransaction.d.ts +0 -27
  232. package/dist/types/actions/sendAndConfirmTransaction.d.ts.map +0 -1
  233. package/dist/types/core/SolanaStepExecutor.d.ts +0 -11
  234. package/dist/types/core/SolanaStepExecutor.d.ts.map +0 -1
  235. package/dist/types/core/tasks/SolanaJitoWaitForTransactionTask.d.ts +0 -6
  236. package/dist/types/core/tasks/SolanaJitoWaitForTransactionTask.d.ts.map +0 -1
  237. package/dist/types/core/tasks/SolanaSignAndExecuteTask.d.ts +0 -6
  238. package/dist/types/core/tasks/SolanaSignAndExecuteTask.d.ts.map +0 -1
  239. package/dist/types/core/tasks/SolanaStandardWaitForTransactionTask.d.ts +0 -6
  240. package/dist/types/core/tasks/SolanaStandardWaitForTransactionTask.d.ts.map +0 -1
  241. package/dist/types/core/tasks/SolanaWaitForTransactionTask.d.ts +0 -6
  242. package/dist/types/core/tasks/SolanaWaitForTransactionTask.d.ts.map +0 -1
  243. package/dist/types/errors/parseSolanaErrors.d.ts +0 -3
  244. package/dist/types/errors/parseSolanaErrors.d.ts.map +0 -1
  245. package/dist/types/index.d.ts +0 -6
  246. package/dist/types/index.d.ts.map +0 -1
  247. package/dist/types/rpc/jito/api/getBundleStatuses.d.ts +0 -28
  248. package/dist/types/rpc/jito/api/getBundleStatuses.d.ts.map +0 -1
  249. package/dist/types/rpc/jito/api/getTipAccounts.d.ts +0 -15
  250. package/dist/types/rpc/jito/api/getTipAccounts.d.ts.map +0 -1
  251. package/dist/types/rpc/jito/api/sendBundle.d.ts +0 -24
  252. package/dist/types/rpc/jito/api/sendBundle.d.ts.map +0 -1
  253. package/dist/types/rpc/jito/api/simulateBundle.d.ts +0 -59
  254. package/dist/types/rpc/jito/api/simulateBundle.d.ts.map +0 -1
  255. package/dist/types/rpc/jito/createJitoRpc.d.ts +0 -11
  256. package/dist/types/rpc/jito/createJitoRpc.d.ts.map +0 -1
  257. package/dist/types/rpc/jito/types.d.ts +0 -5
  258. package/dist/types/rpc/jito/types.d.ts.map +0 -1
  259. package/dist/types/rpc/registry.d.ts +0 -17
  260. package/dist/types/rpc/registry.d.ts.map +0 -1
  261. package/dist/types/rpc/types.d.ts +0 -5
  262. package/dist/types/rpc/types.d.ts.map +0 -1
  263. package/dist/types/rpc/utils.d.ts +0 -61
  264. package/dist/types/rpc/utils.d.ts.map +0 -1
  265. package/dist/types/types.d.ts +0 -21
  266. package/dist/types/types.d.ts.map +0 -1
  267. package/dist/types/utils/KeypairWallet.unit.helpers.d.ts +0 -5
  268. package/dist/types/utils/KeypairWallet.unit.helpers.d.ts.map +0 -1
  269. package/dist/types/utils/KeypairWalletAdapter.d.ts +0 -26
  270. package/dist/types/utils/KeypairWalletAdapter.d.ts.map +0 -1
  271. package/dist/types/utils/base64ToUint8Array.d.ts +0 -2
  272. package/dist/types/utils/base64ToUint8Array.d.ts.map +0 -1
  273. package/dist/types/utils/getWalletFeature.d.ts +0 -27
  274. package/dist/types/utils/getWalletFeature.d.ts.map +0 -1
  275. package/dist/types/utils/shouldUseJitoBundle.d.ts +0 -4
  276. package/dist/types/utils/shouldUseJitoBundle.d.ts.map +0 -1
  277. package/dist/types/utils/withTimeout.d.ts +0 -17
  278. package/dist/types/utils/withTimeout.d.ts.map +0 -1
  279. package/dist/types/version.d.ts +0 -3
  280. package/dist/types/version.d.ts.map +0 -1
@@ -1,2 +1,7 @@
1
- import type { SolanaProviderOptions, SolanaSDKProvider } from './types.js';
2
- export declare function SolanaProvider(options?: SolanaProviderOptions): SolanaSDKProvider;
1
+ import { SolanaProviderOptions, SolanaSDKProvider } from "./types.js";
2
+
3
+ //#region src/SolanaProvider.d.ts
4
+ declare function SolanaProvider(options?: SolanaProviderOptions): SolanaSDKProvider;
5
+ //#endregion
6
+ export { SolanaProvider };
7
+ //# sourceMappingURL=SolanaProvider.d.ts.map
@@ -1,37 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SolanaProvider = SolanaProvider;
4
- const sdk_1 = require("@lifi/sdk");
5
- const kit_1 = require("@solana/kit");
6
- const getSolanaBalance_js_1 = require("./actions/getSolanaBalance.js");
7
- const resolveSolanaAddress_js_1 = require("./actions/resolveSolanaAddress.js");
8
- const SolanaStepExecutor_js_1 = require("./core/SolanaStepExecutor.js");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_actions_getSolanaBalance = require("./actions/getSolanaBalance.js");
3
+ const require_actions_resolveSolanaAddress = require("./actions/resolveSolanaAddress.js");
4
+ const require_core_SolanaStepExecutor = require("./core/SolanaStepExecutor.js");
5
+ let _lifi_sdk = require("@lifi/sdk");
6
+ let _solana_kit = require("@solana/kit");
7
+ //#region src/SolanaProvider.ts
9
8
  function SolanaProvider(options) {
10
- const _options = options ?? {};
11
- return {
12
- get type() {
13
- return sdk_1.ChainType.SVM;
14
- },
15
- isAddress: kit_1.isAddress,
16
- resolveAddress: resolveSolanaAddress_js_1.resolveSolanaAddress,
17
- getBalance: getSolanaBalance_js_1.getSolanaBalance,
18
- async getStepExecutor(options) {
19
- if (!_options.getWallet) {
20
- throw new sdk_1.ProviderError(sdk_1.LiFiErrorCode.ConfigError, 'SolanaProvider requires a getWallet function');
21
- }
22
- const wallet = await _options.getWallet();
23
- const executor = new SolanaStepExecutor_js_1.SolanaStepExecutor({
24
- wallet,
25
- routeId: options.routeId,
26
- executionOptions: {
27
- ...options.executionOptions,
28
- },
29
- });
30
- return executor;
31
- },
32
- setOptions(options) {
33
- Object.assign(_options, options);
34
- },
35
- };
9
+ const _options = options ?? {};
10
+ return {
11
+ get type() {
12
+ return _lifi_sdk.ChainType.SVM;
13
+ },
14
+ isAddress: _solana_kit.isAddress,
15
+ resolveAddress: require_actions_resolveSolanaAddress.resolveSolanaAddress,
16
+ getBalance: require_actions_getSolanaBalance.getSolanaBalance,
17
+ async getStepExecutor(options) {
18
+ if (!_options.getWallet) throw new _lifi_sdk.ProviderError(_lifi_sdk.LiFiErrorCode.ConfigError, "SolanaProvider requires a getWallet function");
19
+ return new require_core_SolanaStepExecutor.SolanaStepExecutor({
20
+ wallet: await _options.getWallet(),
21
+ routeId: options.routeId,
22
+ skipSimulation: _options.skipSimulation,
23
+ executionOptions: { ...options.executionOptions }
24
+ });
25
+ },
26
+ setOptions(options) {
27
+ Object.assign(_options, options);
28
+ }
29
+ };
36
30
  }
31
+ //#endregion
32
+ exports.SolanaProvider = SolanaProvider;
33
+
37
34
  //# sourceMappingURL=SolanaProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaProvider.js","sourceRoot":"","sources":["../../src/SolanaProvider.ts"],"names":[],"mappings":";;AAYA,wCAqCC;AAjDD,mCAKkB;AAClB,qCAAuC;AACvC,uEAAgE;AAChE,+EAAwE;AACxE,wEAAiE;AAGjE,SAAgB,cAAc,CAC5B,OAA+B;IAE/B,MAAM,QAAQ,GAA0B,OAAO,IAAI,EAAE,CAAA;IACrD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,eAAS,CAAC,GAAG,CAAA;QACtB,CAAC;QACD,SAAS,EAAT,eAAS;QACT,cAAc,EAAE,8CAAoB;QACpC,UAAU,EAAE,sCAAgB;QAC5B,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,mBAAa,CACrB,mBAAa,CAAC,WAAW,EACzB,8CAA8C,CAC/C,CAAA;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;YAEzC,MAAM,QAAQ,GAAG,IAAI,0CAAkB,CAAC;gBACtC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA8B;YACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SolanaProvider.js","names":["ChainType","resolveSolanaAddress","getSolanaBalance","ProviderError","LiFiErrorCode","SolanaStepExecutor"],"sources":["../../src/SolanaProvider.ts"],"sourcesContent":["import {\n ChainType,\n LiFiErrorCode,\n ProviderError,\n type StepExecutorOptions,\n} from '@lifi/sdk'\nimport { isAddress } from '@solana/kit'\nimport { getSolanaBalance } from './actions/getSolanaBalance.js'\nimport { resolveSolanaAddress } from './actions/resolveSolanaAddress.js'\nimport { SolanaStepExecutor } from './core/SolanaStepExecutor.js'\nimport type { SolanaProviderOptions, SolanaSDKProvider } from './types.js'\n\nexport function SolanaProvider(\n options?: SolanaProviderOptions\n): SolanaSDKProvider {\n const _options: SolanaProviderOptions = options ?? {}\n return {\n get type() {\n return ChainType.SVM\n },\n isAddress,\n resolveAddress: resolveSolanaAddress,\n getBalance: getSolanaBalance,\n async getStepExecutor(\n options: StepExecutorOptions\n ): Promise<SolanaStepExecutor> {\n if (!_options.getWallet) {\n throw new ProviderError(\n LiFiErrorCode.ConfigError,\n 'SolanaProvider requires a getWallet function'\n )\n }\n\n const wallet = await _options.getWallet()\n\n const executor = new SolanaStepExecutor({\n wallet,\n routeId: options.routeId,\n skipSimulation: _options.skipSimulation,\n executionOptions: {\n ...options.executionOptions,\n },\n })\n\n return executor\n },\n setOptions(options: SolanaProviderOptions) {\n Object.assign(_options, options)\n },\n }\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,eACd,SACmB;CACnB,MAAM,WAAkC,WAAW,EAAE;AACrD,QAAO;EACL,IAAI,OAAO;AACT,UAAOA,UAAAA,UAAU;;EAEnB,WAAA,YAAA;EACA,gBAAgBC,qCAAAA;EAChB,YAAYC,iCAAAA;EACZ,MAAM,gBACJ,SAC6B;AAC7B,OAAI,CAAC,SAAS,UACZ,OAAM,IAAIC,UAAAA,cACRC,UAAAA,cAAc,aACd,+CACD;AAcH,UATiB,IAAIC,gCAAAA,mBAAmB;IACtC,QAHa,MAAM,SAAS,WAAW;IAIvC,SAAS,QAAQ;IACjB,gBAAgB,SAAS;IACzB,kBAAkB,EAChB,GAAG,QAAQ,kBACZ;IACF,CAAC;;EAIJ,WAAW,SAAgC;AACzC,UAAO,OAAO,UAAU,QAAQ;;EAEnC"}
@@ -1 +1,5 @@
1
- export declare const getSNSAddress: (name: string) => Promise<import("@solana/kit").Address<string> | undefined>;
1
+ //#region src/actions/getSNSAddress.d.ts
2
+ declare const getSNSAddress: (name: string) => Promise<string | undefined>;
3
+ //#endregion
4
+ export { getSNSAddress };
5
+ //# sourceMappingURL=getSNSAddress.d.ts.map
@@ -1,26 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSNSAddress = void 0;
4
- const kit_1 = require("@solana/kit");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _solana_kit = require("@solana/kit");
3
+ //#region src/actions/getSNSAddress.ts
5
4
  const getSNSAddress = async (name) => {
6
- try {
7
- if (!name.endsWith('.sol')) {
8
- return;
9
- }
10
- const snsWorkerUrl = `https://sns-sdk-proxy.bonfida.workers.dev/resolve/${name}`;
11
- const response = await fetch(snsWorkerUrl);
12
- if (!response.ok) {
13
- return;
14
- }
15
- const data = await response.json();
16
- if (!(0, kit_1.isAddress)(data.result)) {
17
- return;
18
- }
19
- return data.result;
20
- }
21
- catch (_) {
22
- return;
23
- }
5
+ try {
6
+ if (!name.endsWith(".sol")) return;
7
+ const snsWorkerUrl = `https://sns-sdk-proxy.bonfida.workers.dev/resolve/${name}`;
8
+ const response = await fetch(snsWorkerUrl);
9
+ if (!response.ok) return;
10
+ const data = await response.json();
11
+ if (!(0, _solana_kit.isAddress)(data.result)) return;
12
+ return data.result;
13
+ } catch (_) {
14
+ return;
15
+ }
24
16
  };
17
+ //#endregion
25
18
  exports.getSNSAddress = getSNSAddress;
19
+
26
20
  //# sourceMappingURL=getSNSAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSNSAddress.js","sourceRoot":"","sources":["../../../src/actions/getSNSAddress.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAShC,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClD,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAM;QACR,CAAC;QACD,MAAM,YAAY,GAAG,qDAAqD,IAAI,EAAE,CAAA;QAChF,MAAM,QAAQ,GAAa,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAc,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAE7C,IAAI,CAAC,IAAA,eAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,OAAM;IACR,CAAC;AACH,CAAC,CAAA;AAtBY,QAAA,aAAa,iBAsBzB"}
1
+ {"version":3,"file":"getSNSAddress.js","names":[],"sources":["../../../src/actions/getSNSAddress.ts"],"sourcesContent":["import { isAddress } from '@solana/kit'\n\ninterface SNSResult {\n s: 'ok' | 'error'\n result: string\n}\n\n// Subject to change\n// https://github.com/Bonfida/sns-sdk?tab=readme-ov-file#sdk-proxy\nexport const getSNSAddress = async (\n name: string\n): Promise<string | undefined> => {\n try {\n if (!name.endsWith('.sol')) {\n return\n }\n const snsWorkerUrl = `https://sns-sdk-proxy.bonfida.workers.dev/resolve/${name}`\n const response: Response = await fetch(snsWorkerUrl)\n if (!response.ok) {\n return\n }\n\n const data: SNSResult = await response.json()\n\n if (!isAddress(data.result)) {\n return\n }\n\n return data.result\n } catch (_) {\n // ignore\n return\n }\n}\n"],"mappings":";;;AASA,MAAa,gBAAgB,OAC3B,SACgC;AAChC,KAAI;AACF,MAAI,CAAC,KAAK,SAAS,OAAO,CACxB;EAEF,MAAM,eAAe,qDAAqD;EAC1E,MAAM,WAAqB,MAAM,MAAM,aAAa;AACpD,MAAI,CAAC,SAAS,GACZ;EAGF,MAAM,OAAkB,MAAM,SAAS,MAAM;AAE7C,MAAI,EAAA,GAAA,YAAA,WAAW,KAAK,OAAO,CACzB;AAGF,SAAO,KAAK;UACL,GAAG;AAEV"}
@@ -1,3 +1,7 @@
1
- import type { SDKClient } from '@lifi/sdk';
2
- import { type Token, type TokenAmount } from '@lifi/sdk';
3
- export declare const getSolanaBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
1
+ import { SDKClient, Token, TokenAmount } from "@lifi/sdk";
2
+
3
+ //#region src/actions/getSolanaBalance.d.ts
4
+ declare const getSolanaBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
5
+ //#endregion
6
+ export { getSolanaBalance };
7
+ //# sourceMappingURL=getSolanaBalance.d.ts.map
@@ -1,84 +1,55 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSolanaBalance = void 0;
4
- const sdk_1 = require("@lifi/sdk");
5
- const kit_1 = require("@solana/kit");
6
- const utils_js_1 = require("../rpc/utils.js");
7
- const SolSystemProgram = '11111111111111111111111111111111';
8
- const TokenProgramId = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
9
- const Token2022ProgramId = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rpc_utils = require("../rpc/utils.js");
3
+ let _lifi_sdk = require("@lifi/sdk");
4
+ let _solana_kit = require("@solana/kit");
5
+ //#region src/actions/getSolanaBalance.ts
6
+ const SolSystemProgram = "11111111111111111111111111111111";
7
+ const TokenProgramId = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
8
+ const Token2022ProgramId = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
10
9
  const getSolanaBalance = async (client, walletAddress, tokens) => {
11
- if (tokens.length === 0) {
12
- return [];
13
- }
14
- const { chainId } = tokens[0];
15
- for (const token of tokens) {
16
- if (token.chainId !== chainId) {
17
- console.warn('Requested tokens have to be on the same chain.');
18
- }
19
- }
20
- return getSolanaBalanceDefault(client, chainId, tokens, walletAddress);
10
+ if (tokens.length === 0) return [];
11
+ const { chainId } = tokens[0];
12
+ for (const token of tokens) if (token.chainId !== chainId) console.warn("Requested tokens have to be on the same chain.");
13
+ return getSolanaBalanceDefault(client, chainId, tokens, walletAddress);
21
14
  };
22
- exports.getSolanaBalance = getSolanaBalance;
23
15
  const getSolanaBalanceDefault = async (client, _chainId, tokens, walletAddress) => {
24
- const accountAddress = (0, kit_1.address)(walletAddress);
25
- const tokenProgramAddress = (0, kit_1.address)(TokenProgramId);
26
- const token2022ProgramAddress = (0, kit_1.address)(Token2022ProgramId);
27
- const [slot, balance, tokenAccountsByOwner, token2022AccountsByOwner] = await Promise.allSettled([
28
- (0, sdk_1.withDedupe)(() => (0, utils_js_1.callSolanaRpcsWithRetry)(client, (rpc) => rpc.getSlot({ commitment: 'confirmed' }).send()), { id: `${getSolanaBalanceDefault.name}.getSlot` }),
29
- (0, sdk_1.withDedupe)(() => (0, utils_js_1.callSolanaRpcsWithRetry)(client, (rpc) => rpc.getBalance(accountAddress, { commitment: 'confirmed' }).send()), { id: `${getSolanaBalanceDefault.name}.getBalance` }),
30
- (0, sdk_1.withDedupe)(() => (0, utils_js_1.callSolanaRpcsWithRetry)(client, (rpc) => rpc
31
- .getTokenAccountsByOwner(accountAddress, {
32
- programId: tokenProgramAddress,
33
- }, {
34
- commitment: 'confirmed',
35
- encoding: 'jsonParsed',
36
- })
37
- .send()), {
38
- id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${TokenProgramId}`,
39
- }),
40
- (0, sdk_1.withDedupe)(() => (0, utils_js_1.callSolanaRpcsWithRetry)(client, (rpc) => rpc
41
- .getTokenAccountsByOwner(accountAddress, {
42
- programId: token2022ProgramAddress,
43
- }, {
44
- commitment: 'confirmed',
45
- encoding: 'jsonParsed',
46
- })
47
- .send()), {
48
- id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${Token2022ProgramId}`,
49
- }),
50
- ]);
51
- const blockNumber = slot.status === 'fulfilled' ? BigInt(slot.value) : 0n;
52
- const solBalance = balance.status === 'fulfilled' ? BigInt(balance.value.value) : 0n;
53
- const walletTokenAmounts = [
54
- ...(tokenAccountsByOwner.status === 'fulfilled'
55
- ? tokenAccountsByOwner.value.value
56
- : []),
57
- ...(token2022AccountsByOwner.status === 'fulfilled'
58
- ? token2022AccountsByOwner.value.value
59
- : []),
60
- ].reduce((tokenAmounts, value) => {
61
- const tokenAccount = value.account.data.parsed.info;
62
- const amount = BigInt(tokenAccount.tokenAmount.amount);
63
- if (amount > 0n) {
64
- tokenAmounts[tokenAccount.mint] = amount;
65
- }
66
- return tokenAmounts;
67
- }, {});
68
- walletTokenAmounts[SolSystemProgram] = solBalance;
69
- const tokenAmounts = tokens.map((token) => {
70
- if (walletTokenAmounts[token.address]) {
71
- return {
72
- ...token,
73
- amount: walletTokenAmounts[token.address],
74
- blockNumber,
75
- };
76
- }
77
- return {
78
- ...token,
79
- blockNumber,
80
- };
81
- });
82
- return tokenAmounts;
16
+ const accountAddress = (0, _solana_kit.address)(walletAddress);
17
+ const tokenProgramAddress = (0, _solana_kit.address)(TokenProgramId);
18
+ const token2022ProgramAddress = (0, _solana_kit.address)(Token2022ProgramId);
19
+ const [slot, balance, tokenAccountsByOwner, token2022AccountsByOwner] = await Promise.allSettled([
20
+ (0, _lifi_sdk.withDedupe)(() => require_rpc_utils.callSolanaRpcsWithRetry(client, (rpc) => rpc.getSlot({ commitment: "confirmed" }).send()), { id: `${getSolanaBalanceDefault.name}.getSlot` }),
21
+ (0, _lifi_sdk.withDedupe)(() => require_rpc_utils.callSolanaRpcsWithRetry(client, (rpc) => rpc.getBalance(accountAddress, { commitment: "confirmed" }).send()), { id: `${getSolanaBalanceDefault.name}.getBalance` }),
22
+ (0, _lifi_sdk.withDedupe)(() => require_rpc_utils.callSolanaRpcsWithRetry(client, (rpc) => rpc.getTokenAccountsByOwner(accountAddress, { programId: tokenProgramAddress }, {
23
+ commitment: "confirmed",
24
+ encoding: "jsonParsed"
25
+ }).send()), { id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${TokenProgramId}` }),
26
+ (0, _lifi_sdk.withDedupe)(() => require_rpc_utils.callSolanaRpcsWithRetry(client, (rpc) => rpc.getTokenAccountsByOwner(accountAddress, { programId: token2022ProgramAddress }, {
27
+ commitment: "confirmed",
28
+ encoding: "jsonParsed"
29
+ }).send()), { id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${Token2022ProgramId}` })
30
+ ]);
31
+ const blockNumber = slot.status === "fulfilled" ? BigInt(slot.value) : 0n;
32
+ const solBalance = balance.status === "fulfilled" ? BigInt(balance.value.value) : 0n;
33
+ const walletTokenAmounts = [...tokenAccountsByOwner.status === "fulfilled" ? tokenAccountsByOwner.value.value : [], ...token2022AccountsByOwner.status === "fulfilled" ? token2022AccountsByOwner.value.value : []].reduce((tokenAmounts, value) => {
34
+ const tokenAccount = value.account.data.parsed.info;
35
+ const amount = BigInt(tokenAccount.tokenAmount.amount);
36
+ if (amount > 0n) tokenAmounts[tokenAccount.mint] = amount;
37
+ return tokenAmounts;
38
+ }, {});
39
+ walletTokenAmounts[SolSystemProgram] = solBalance;
40
+ return tokens.map((token) => {
41
+ if (walletTokenAmounts[token.address]) return {
42
+ ...token,
43
+ amount: walletTokenAmounts[token.address],
44
+ blockNumber
45
+ };
46
+ return {
47
+ ...token,
48
+ blockNumber
49
+ };
50
+ });
83
51
  };
52
+ //#endregion
53
+ exports.getSolanaBalance = getSolanaBalance;
54
+
84
55
  //# sourceMappingURL=getSolanaBalance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSolanaBalance.js","sourceRoot":"","sources":["../../../src/actions/getSolanaBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSolanaBalance.js","names":["callSolanaRpcsWithRetry"],"sources":["../../../src/actions/getSolanaBalance.ts"],"sourcesContent":["import type { SDKClient } from '@lifi/sdk'\nimport {\n type ChainId,\n type Token,\n type TokenAmount,\n withDedupe,\n} from '@lifi/sdk'\nimport { address, type JsonParsedTokenAccount } from '@solana/kit'\n\nimport { callSolanaRpcsWithRetry } from '../rpc/utils.js'\n\nconst SolSystemProgram = '11111111111111111111111111111111'\nconst TokenProgramId = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'\nconst Token2022ProgramId = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'\n\nexport const getSolanaBalance = async (\n client: SDKClient,\n walletAddress: string,\n tokens: Token[]\n): Promise<TokenAmount[]> => {\n if (tokens.length === 0) {\n return []\n }\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n return getSolanaBalanceDefault(client, chainId, tokens, walletAddress)\n}\n\nconst getSolanaBalanceDefault = async (\n client: SDKClient,\n _chainId: ChainId,\n tokens: Token[],\n walletAddress: string\n): Promise<TokenAmount[]> => {\n // Convert addresses to Solana Kit's address type\n const accountAddress = address(walletAddress)\n const tokenProgramAddress = address(TokenProgramId)\n const token2022ProgramAddress = address(Token2022ProgramId)\n\n // Use Solana Kit's RPC API with the retry wrapper\n const [slot, balance, tokenAccountsByOwner, token2022AccountsByOwner] =\n await Promise.allSettled([\n withDedupe(\n () =>\n callSolanaRpcsWithRetry(client, (rpc) =>\n rpc.getSlot({ commitment: 'confirmed' }).send()\n ),\n { id: `${getSolanaBalanceDefault.name}.getSlot` }\n ),\n withDedupe(\n () =>\n callSolanaRpcsWithRetry(client, (rpc) =>\n rpc.getBalance(accountAddress, { commitment: 'confirmed' }).send()\n ),\n { id: `${getSolanaBalanceDefault.name}.getBalance` }\n ),\n withDedupe(\n () =>\n callSolanaRpcsWithRetry(client, (rpc) =>\n rpc\n .getTokenAccountsByOwner(\n accountAddress,\n {\n programId: tokenProgramAddress,\n },\n {\n commitment: 'confirmed',\n encoding: 'jsonParsed',\n }\n )\n .send()\n ),\n {\n id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${TokenProgramId}`,\n }\n ),\n withDedupe(\n () =>\n callSolanaRpcsWithRetry(client, (rpc) =>\n rpc\n .getTokenAccountsByOwner(\n accountAddress,\n {\n programId: token2022ProgramAddress,\n },\n {\n commitment: 'confirmed',\n encoding: 'jsonParsed',\n }\n )\n .send()\n ),\n {\n id: `${getSolanaBalanceDefault.name}.getTokenAccountsByOwner.${Token2022ProgramId}`,\n }\n ),\n ])\n const blockNumber = slot.status === 'fulfilled' ? BigInt(slot.value) : 0n\n const solBalance =\n balance.status === 'fulfilled' ? BigInt(balance.value.value) : 0n\n\n const walletTokenAmounts = [\n ...(tokenAccountsByOwner.status === 'fulfilled'\n ? tokenAccountsByOwner.value.value\n : []),\n ...(token2022AccountsByOwner.status === 'fulfilled'\n ? token2022AccountsByOwner.value.value\n : []),\n ].reduce(\n (tokenAmounts: Record<string, bigint>, value) => {\n const tokenAccount: JsonParsedTokenAccount =\n value.account.data.parsed.info\n const amount = BigInt(tokenAccount.tokenAmount.amount)\n if (amount > 0n) {\n tokenAmounts[tokenAccount.mint] = amount\n }\n return tokenAmounts\n },\n {} as Record<string, bigint>\n )\n\n walletTokenAmounts[SolSystemProgram] = solBalance\n const tokenAmounts: TokenAmount[] = tokens.map((token) => {\n if (walletTokenAmounts[token.address]) {\n return {\n ...token,\n amount: walletTokenAmounts[token.address],\n blockNumber,\n }\n }\n return {\n ...token,\n blockNumber,\n }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;;AAWA,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAE3B,MAAa,mBAAmB,OAC9B,QACA,eACA,WAC2B;AAC3B,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAEX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;AAIlE,QAAO,wBAAwB,QAAQ,SAAS,QAAQ,cAAc;;AAGxE,MAAM,0BAA0B,OAC9B,QACA,UACA,QACA,kBAC2B;CAE3B,MAAM,kBAAA,GAAA,YAAA,SAAyB,cAAc;CAC7C,MAAM,uBAAA,GAAA,YAAA,SAA8B,eAAe;CACnD,MAAM,2BAAA,GAAA,YAAA,SAAkC,mBAAmB;CAG3D,MAAM,CAAC,MAAM,SAAS,sBAAsB,4BAC1C,MAAM,QAAQ,WAAW;kCAGnBA,kBAAAA,wBAAwB,SAAS,QAC/B,IAAI,QAAQ,EAAE,YAAY,aAAa,CAAC,CAAC,MAAM,CAChD,EACH,EAAE,IAAI,GAAG,wBAAwB,KAAK,WAAW,CAClD;kCAGGA,kBAAAA,wBAAwB,SAAS,QAC/B,IAAI,WAAW,gBAAgB,EAAE,YAAY,aAAa,CAAC,CAAC,MAAM,CACnE,EACH,EAAE,IAAI,GAAG,wBAAwB,KAAK,cAAc,CACrD;kCAGGA,kBAAAA,wBAAwB,SAAS,QAC/B,IACG,wBACC,gBACA,EACE,WAAW,qBACZ,EACD;GACE,YAAY;GACZ,UAAU;GACX,CACF,CACA,MAAM,CACV,EACH,EACE,IAAI,GAAG,wBAAwB,KAAK,2BAA2B,kBAChE,CACF;kCAGGA,kBAAAA,wBAAwB,SAAS,QAC/B,IACG,wBACC,gBACA,EACE,WAAW,yBACZ,EACD;GACE,YAAY;GACZ,UAAU;GACX,CACF,CACA,MAAM,CACV,EACH,EACE,IAAI,GAAG,wBAAwB,KAAK,2BAA2B,sBAChE,CACF;EACF,CAAC;CACJ,MAAM,cAAc,KAAK,WAAW,cAAc,OAAO,KAAK,MAAM,GAAG;CACvE,MAAM,aACJ,QAAQ,WAAW,cAAc,OAAO,QAAQ,MAAM,MAAM,GAAG;CAEjE,MAAM,qBAAqB,CACzB,GAAI,qBAAqB,WAAW,cAChC,qBAAqB,MAAM,QAC3B,EAAE,EACN,GAAI,yBAAyB,WAAW,cACpC,yBAAyB,MAAM,QAC/B,EAAE,CACP,CAAC,QACC,cAAsC,UAAU;EAC/C,MAAM,eACJ,MAAM,QAAQ,KAAK,OAAO;EAC5B,MAAM,SAAS,OAAO,aAAa,YAAY,OAAO;AACtD,MAAI,SAAS,GACX,cAAa,aAAa,QAAQ;AAEpC,SAAO;IAET,EAAE,CACH;AAED,oBAAmB,oBAAoB;AAcvC,QAboC,OAAO,KAAK,UAAU;AACxD,MAAI,mBAAmB,MAAM,SAC3B,QAAO;GACL,GAAG;GACH,QAAQ,mBAAmB,MAAM;GACjC;GACD;AAEH,SAAO;GACL,GAAG;GACH;GACD;GACD"}
@@ -1 +1,5 @@
1
- export declare function resolveSolanaAddress(name: string): Promise<string | undefined>;
1
+ //#region src/actions/resolveSolanaAddress.d.ts
2
+ declare function resolveSolanaAddress(name: string): Promise<string | undefined>;
3
+ //#endregion
4
+ export { resolveSolanaAddress };
5
+ //# sourceMappingURL=resolveSolanaAddress.d.ts.map
@@ -1,8 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveSolanaAddress = resolveSolanaAddress;
4
- const getSNSAddress_js_1 = require("./getSNSAddress.js");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_actions_getSNSAddress = require("./getSNSAddress.js");
3
+ //#region src/actions/resolveSolanaAddress.ts
5
4
  async function resolveSolanaAddress(name) {
6
- return await (0, getSNSAddress_js_1.getSNSAddress)(name);
5
+ return await require_actions_getSNSAddress.getSNSAddress(name);
7
6
  }
7
+ //#endregion
8
+ exports.resolveSolanaAddress = resolveSolanaAddress;
9
+
8
10
  //# sourceMappingURL=resolveSolanaAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSolanaAddress.js","sourceRoot":"","sources":["../../../src/actions/resolveSolanaAddress.ts"],"names":[],"mappings":";;AAEA,oDAIC;AAND,yDAAkD;AAE3C,KAAK,UAAU,oBAAoB,CACxC,IAAY;IAEZ,OAAO,MAAM,IAAA,gCAAa,EAAC,IAAI,CAAC,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"resolveSolanaAddress.js","names":["getSNSAddress"],"sources":["../../../src/actions/resolveSolanaAddress.ts"],"sourcesContent":["import { getSNSAddress } from './getSNSAddress.js'\n\nexport async function resolveSolanaAddress(\n name: string\n): Promise<string | undefined> {\n return await getSNSAddress(name)\n}\n"],"mappings":";;;AAEA,eAAsB,qBACpB,MAC6B;AAC7B,QAAO,MAAMA,8BAAAA,cAAc,KAAK"}
@@ -1,20 +1,32 @@
1
- import { type SDKClient } from '@lifi/sdk';
2
- import { type Commitment, type Signature, type Transaction, type TransactionError } from '@solana/kit';
1
+ import { SDKClient } from "@lifi/sdk";
2
+ import { Commitment, Signature, Transaction, TransactionError } from "@solana/kit";
3
+
4
+ //#region src/actions/sendAndConfirmBundle.d.ts
3
5
  type SignatureStatus = {
4
- slot: bigint;
5
- confirmations: bigint | null;
6
- err: TransactionError | null;
7
- confirmationStatus: Commitment | null;
8
- status: Readonly<{
9
- Err: TransactionError;
10
- }> | Readonly<{
11
- Ok: null;
12
- }>;
6
+ slot: bigint;
7
+ confirmations: bigint | null;
8
+ err: TransactionError | null;
9
+ confirmationStatus: Commitment | null;
10
+ status: Readonly<{
11
+ Err: TransactionError;
12
+ }> | Readonly<{
13
+ Ok: null;
14
+ }>;
13
15
  };
14
- export type BundleResult = {
15
- bundleId: string;
16
- txSignatures: Signature[];
17
- signatureResults: (SignatureStatus | null)[];
16
+ type BundleResult = {
17
+ bundleId: string;
18
+ txSignatures: Signature[];
19
+ signatureResults: (SignatureStatus | null)[];
18
20
  };
19
- export declare function sendAndConfirmBundle(client: SDKClient, signedTransactions: Transaction[]): Promise<BundleResult>;
20
- export {};
21
+ /**
22
+ * Send and confirm a bundle of transactions using Jito.
23
+ * Automatically selects a Jito-enabled RPC connection and polls for confirmation
24
+ * across multiple Jito RPCs in parallel.
25
+ * @param client - The SDK client.
26
+ * @param signedTransactions - Array of signed transactions to bundle.
27
+ * @returns BundleResult containing Bundle ID, transaction signatures, and confirmation results.
28
+ */
29
+ declare function sendAndConfirmBundle(client: SDKClient, signedTransactions: Transaction[]): Promise<BundleResult>;
30
+ //#endregion
31
+ export { BundleResult, sendAndConfirmBundle };
32
+ //# sourceMappingURL=sendAndConfirmBundle.d.ts.map
@@ -1,87 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendAndConfirmBundle = sendAndConfirmBundle;
4
- const sdk_1 = require("@lifi/sdk");
5
- const kit_1 = require("@solana/kit");
6
- const registry_js_1 = require("../rpc/registry.js");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rpc_registry = require("../rpc/registry.js");
3
+ let _lifi_sdk = require("@lifi/sdk");
4
+ let _solana_kit = require("@solana/kit");
5
+ //#region src/actions/sendAndConfirmBundle.ts
6
+ /**
7
+ * Send and confirm a bundle of transactions using Jito.
8
+ * Automatically selects a Jito-enabled RPC connection and polls for confirmation
9
+ * across multiple Jito RPCs in parallel.
10
+ * @param client - The SDK client.
11
+ * @param signedTransactions - Array of signed transactions to bundle.
12
+ * @returns BundleResult containing Bundle ID, transaction signatures, and confirmation results.
13
+ */
7
14
  async function sendAndConfirmBundle(client, signedTransactions) {
8
- const jitoRpcs = await (0, registry_js_1.getJitoRpcs)(client);
9
- if (jitoRpcs.length === 0) {
10
- throw new Error('No Jito-enabled RPC connection available for bundle submission');
11
- }
12
- const serializedTransactions = signedTransactions.map((tx) => (0, kit_1.getBase64EncodedWireTransaction)(tx));
13
- const abortController = new AbortController();
14
- const confirmPromises = jitoRpcs.map(async (jitoRpc) => {
15
- try {
16
- let bundleId;
17
- try {
18
- bundleId = await jitoRpc.sendBundle(serializedTransactions).send();
19
- }
20
- catch (_) {
21
- return null;
22
- }
23
- const [{ value: blockhashResult }, initialBlockHeight] = await Promise.all([
24
- jitoRpc
25
- .getLatestBlockhash({
26
- commitment: 'confirmed',
27
- })
28
- .send(),
29
- jitoRpc
30
- .getBlockHeight({
31
- commitment: 'confirmed',
32
- })
33
- .send(),
34
- ]);
35
- let currentBlockHeight = initialBlockHeight;
36
- while (currentBlockHeight < blockhashResult.lastValidBlockHeight &&
37
- !abortController.signal.aborted) {
38
- const statusResponse = await jitoRpc
39
- .getBundleStatuses([bundleId])
40
- .send();
41
- const bundleStatus = statusResponse.value[0];
42
- if (bundleStatus &&
43
- (bundleStatus.confirmation_status === 'confirmed' ||
44
- bundleStatus.confirmation_status === 'finalized')) {
45
- const txSignatures = bundleStatus.transactions;
46
- const sigResponse = await jitoRpc
47
- .getSignatureStatuses(txSignatures)
48
- .send();
49
- if (!sigResponse?.value || !Array.isArray(sigResponse.value)) {
50
- await (0, sdk_1.sleep)(400);
51
- continue;
52
- }
53
- abortController.abort();
54
- return {
55
- bundleId,
56
- txSignatures,
57
- signatureResults: sigResponse.value,
58
- };
59
- }
60
- await (0, sdk_1.sleep)(400);
61
- if (!abortController.signal.aborted) {
62
- currentBlockHeight = await jitoRpc
63
- .getBlockHeight({
64
- commitment: 'confirmed',
65
- })
66
- .send();
67
- }
68
- }
69
- return null;
70
- }
71
- catch (error) {
72
- if (abortController.signal.aborted) {
73
- return null;
74
- }
75
- throw error;
76
- }
77
- });
78
- const result = await Promise.any(confirmPromises).catch(() => null);
79
- if (!abortController.signal.aborted) {
80
- abortController.abort();
81
- }
82
- if (!result) {
83
- throw new Error('Failed to send and confirm bundle');
84
- }
85
- return result;
15
+ const jitoRpcs = await require_rpc_registry.getJitoRpcs(client);
16
+ if (jitoRpcs.length === 0) throw new Error("No Jito-enabled RPC connection available for bundle submission");
17
+ const serializedTransactions = signedTransactions.map((tx) => (0, _solana_kit.getBase64EncodedWireTransaction)(tx));
18
+ const abortController = new AbortController();
19
+ const confirmPromises = jitoRpcs.map(async (jitoRpc) => {
20
+ try {
21
+ let bundleId;
22
+ try {
23
+ bundleId = await jitoRpc.sendBundle(serializedTransactions).send();
24
+ } catch (_) {
25
+ return null;
26
+ }
27
+ const [{ value: blockhashResult }, initialBlockHeight] = await Promise.all([jitoRpc.getLatestBlockhash({ commitment: "confirmed" }).send(), jitoRpc.getBlockHeight({ commitment: "confirmed" }).send()]);
28
+ let currentBlockHeight = initialBlockHeight;
29
+ while (currentBlockHeight < blockhashResult.lastValidBlockHeight && !abortController.signal.aborted) {
30
+ const bundleStatus = (await jitoRpc.getBundleStatuses([bundleId]).send()).value[0];
31
+ if (bundleStatus && (bundleStatus.confirmation_status === "confirmed" || bundleStatus.confirmation_status === "finalized")) {
32
+ const txSignatures = bundleStatus.transactions;
33
+ const sigResponse = await jitoRpc.getSignatureStatuses(txSignatures).send();
34
+ if (!sigResponse?.value || !Array.isArray(sigResponse.value)) {
35
+ await (0, _lifi_sdk.sleep)(400);
36
+ continue;
37
+ }
38
+ abortController.abort();
39
+ return {
40
+ bundleId,
41
+ txSignatures,
42
+ signatureResults: sigResponse.value
43
+ };
44
+ }
45
+ await (0, _lifi_sdk.sleep)(400);
46
+ if (!abortController.signal.aborted) currentBlockHeight = await jitoRpc.getBlockHeight({ commitment: "confirmed" }).send();
47
+ }
48
+ return null;
49
+ } catch (error) {
50
+ if (abortController.signal.aborted) return null;
51
+ throw error;
52
+ }
53
+ });
54
+ const result = await Promise.any(confirmPromises).catch(() => null);
55
+ if (!abortController.signal.aborted) abortController.abort();
56
+ if (!result) throw new Error("Failed to send and confirm bundle");
57
+ return result;
86
58
  }
59
+ //#endregion
60
+ exports.sendAndConfirmBundle = sendAndConfirmBundle;
61
+
87
62
  //# sourceMappingURL=sendAndConfirmBundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sendAndConfirmBundle.js","sourceRoot":"","sources":["../../../src/actions/sendAndConfirmBundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sendAndConfirmBundle.js","names":["getJitoRpcs"],"sources":["../../../src/actions/sendAndConfirmBundle.ts"],"sourcesContent":["import { type SDKClient, sleep } from '@lifi/sdk'\nimport {\n type Commitment,\n getBase64EncodedWireTransaction,\n type Signature,\n type Transaction,\n type TransactionError,\n} from '@solana/kit'\n\nimport { getJitoRpcs } from '../rpc/registry.js'\n\ntype SignatureStatus = {\n slot: bigint\n confirmations: bigint | null\n err: TransactionError | null\n confirmationStatus: Commitment | null\n status: Readonly<{ Err: TransactionError }> | Readonly<{ Ok: null }>\n}\n\nexport type BundleResult = {\n bundleId: string\n txSignatures: Signature[]\n signatureResults: (SignatureStatus | null)[]\n}\n\n/**\n * Send and confirm a bundle of transactions using Jito.\n * Automatically selects a Jito-enabled RPC connection and polls for confirmation\n * across multiple Jito RPCs in parallel.\n * @param client - The SDK client.\n * @param signedTransactions - Array of signed transactions to bundle.\n * @returns BundleResult containing Bundle ID, transaction signatures, and confirmation results.\n */\nexport async function sendAndConfirmBundle(\n client: SDKClient,\n signedTransactions: Transaction[]\n): Promise<BundleResult> {\n const jitoRpcs = await getJitoRpcs(client)\n\n if (jitoRpcs.length === 0) {\n throw new Error(\n 'No Jito-enabled RPC connection available for bundle submission'\n )\n }\n\n // Serialize transactions to base64\n const serializedTransactions = signedTransactions.map((tx) =>\n getBase64EncodedWireTransaction(tx)\n )\n\n const abortController = new AbortController()\n\n const confirmPromises = jitoRpcs.map(async (jitoRpc) => {\n try {\n // Send bundle to Jito\n let bundleId: string\n try {\n bundleId = await jitoRpc.sendBundle(serializedTransactions).send()\n } catch (_) {\n return null\n }\n\n const [{ value: blockhashResult }, initialBlockHeight] =\n await Promise.all([\n jitoRpc\n .getLatestBlockhash({\n commitment: 'confirmed',\n })\n .send(),\n jitoRpc\n .getBlockHeight({\n commitment: 'confirmed',\n })\n .send(),\n ])\n\n let currentBlockHeight = initialBlockHeight\n\n while (\n currentBlockHeight < blockhashResult.lastValidBlockHeight &&\n !abortController.signal.aborted\n ) {\n const statusResponse = await jitoRpc\n .getBundleStatuses([bundleId])\n .send()\n\n const bundleStatus = statusResponse.value[0]\n\n // Check if bundle is confirmed or finalized\n if (\n bundleStatus &&\n (bundleStatus.confirmation_status === 'confirmed' ||\n bundleStatus.confirmation_status === 'finalized')\n ) {\n // Bundle confirmed! Extract transaction signatures from bundle status\n const txSignatures = bundleStatus.transactions\n\n // Fetch individual signature results from Jito RPC\n const sigResponse = await jitoRpc\n .getSignatureStatuses(txSignatures)\n .send()\n\n if (!sigResponse?.value || !Array.isArray(sigResponse.value)) {\n // Keep polling if can't find signature results\n await sleep(400)\n continue\n }\n\n // Immediately abort all other connections when we find a result\n abortController.abort()\n return {\n bundleId,\n txSignatures,\n signatureResults: sigResponse.value,\n }\n }\n\n await sleep(400)\n if (!abortController.signal.aborted) {\n currentBlockHeight = await jitoRpc\n .getBlockHeight({\n commitment: 'confirmed',\n })\n .send()\n }\n }\n\n return null\n } catch (error) {\n if (abortController.signal.aborted) {\n return null // Don't treat abortion as an error\n }\n throw error\n }\n })\n\n // Wait for first successful confirmation\n const result = await Promise.any(confirmPromises).catch(() => null)\n\n if (!abortController.signal.aborted) {\n abortController.abort()\n }\n\n if (!result) {\n throw new Error('Failed to send and confirm bundle')\n }\n\n return result\n}\n"],"mappings":";;;;;;;;;;;;;AAiCA,eAAsB,qBACpB,QACA,oBACuB;CACvB,MAAM,WAAW,MAAMA,qBAAAA,YAAY,OAAO;AAE1C,KAAI,SAAS,WAAW,EACtB,OAAM,IAAI,MACR,iEACD;CAIH,MAAM,yBAAyB,mBAAmB,KAAK,QAAA,GAAA,YAAA,iCACrB,GAAG,CACpC;CAED,MAAM,kBAAkB,IAAI,iBAAiB;CAE7C,MAAM,kBAAkB,SAAS,IAAI,OAAO,YAAY;AACtD,MAAI;GAEF,IAAI;AACJ,OAAI;AACF,eAAW,MAAM,QAAQ,WAAW,uBAAuB,CAAC,MAAM;YAC3D,GAAG;AACV,WAAO;;GAGT,MAAM,CAAC,EAAE,OAAO,mBAAmB,sBACjC,MAAM,QAAQ,IAAI,CAChB,QACG,mBAAmB,EAClB,YAAY,aACb,CAAC,CACD,MAAM,EACT,QACG,eAAe,EACd,YAAY,aACb,CAAC,CACD,MAAM,CACV,CAAC;GAEJ,IAAI,qBAAqB;AAEzB,UACE,qBAAqB,gBAAgB,wBACrC,CAAC,gBAAgB,OAAO,SACxB;IAKA,MAAM,gBAJiB,MAAM,QAC1B,kBAAkB,CAAC,SAAS,CAAC,CAC7B,MAAM,EAE2B,MAAM;AAG1C,QACE,iBACC,aAAa,wBAAwB,eACpC,aAAa,wBAAwB,cACvC;KAEA,MAAM,eAAe,aAAa;KAGlC,MAAM,cAAc,MAAM,QACvB,qBAAqB,aAAa,CAClC,MAAM;AAET,SAAI,CAAC,aAAa,SAAS,CAAC,MAAM,QAAQ,YAAY,MAAM,EAAE;AAE5D,aAAA,GAAA,UAAA,OAAY,IAAI;AAChB;;AAIF,qBAAgB,OAAO;AACvB,YAAO;MACL;MACA;MACA,kBAAkB,YAAY;MAC/B;;AAGH,WAAA,GAAA,UAAA,OAAY,IAAI;AAChB,QAAI,CAAC,gBAAgB,OAAO,QAC1B,sBAAqB,MAAM,QACxB,eAAe,EACd,YAAY,aACb,CAAC,CACD,MAAM;;AAIb,UAAO;WACA,OAAO;AACd,OAAI,gBAAgB,OAAO,QACzB,QAAO;AAET,SAAM;;GAER;CAGF,MAAM,SAAS,MAAM,QAAQ,IAAI,gBAAgB,CAAC,YAAY,KAAK;AAEnE,KAAI,CAAC,gBAAgB,OAAO,QAC1B,iBAAgB,OAAO;AAGzB,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,oCAAoC;AAGtD,QAAO"}