@lifi/sdk 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (446) hide show
  1. package/dist/_cjs/config.js +48 -0
  2. package/dist/_cjs/config.js.map +1 -0
  3. package/dist/{cjs → _cjs}/constants.js +2 -4
  4. package/dist/_cjs/constants.js.map +1 -0
  5. package/dist/_cjs/core/BaseStepExecutor.js +55 -0
  6. package/dist/_cjs/core/BaseStepExecutor.js.map +1 -0
  7. package/dist/_cjs/core/EVM/EVM.js +46 -0
  8. package/dist/_cjs/core/EVM/EVM.js.map +1 -0
  9. package/dist/_cjs/core/EVM/EVMStepExecutor.js +276 -0
  10. package/dist/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  11. package/dist/{cjs/types → _cjs/core/EVM}/abi.js +1 -0
  12. package/dist/_cjs/core/EVM/abi.js.map +1 -0
  13. package/dist/{cjs/execution → _cjs/core/EVM}/checkAllowance.js +12 -12
  14. package/dist/_cjs/core/EVM/checkAllowance.js.map +1 -0
  15. package/dist/{cjs/allowance → _cjs/core/EVM}/getAllowance.js +15 -17
  16. package/dist/_cjs/core/EVM/getAllowance.js.map +1 -0
  17. package/dist/{cjs/balance/getBalance.js → _cjs/core/EVM/getEVMBalance.js} +22 -22
  18. package/dist/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  19. package/dist/{cjs/execution → _cjs/core/EVM}/multisig.js +7 -11
  20. package/dist/_cjs/core/EVM/multisig.js.map +1 -0
  21. package/dist/_cjs/core/EVM/publicClient.js +35 -0
  22. package/dist/_cjs/core/EVM/publicClient.js.map +1 -0
  23. package/dist/_cjs/core/EVM/setAllowance.js +71 -0
  24. package/dist/_cjs/core/EVM/setAllowance.js.map +1 -0
  25. package/dist/_cjs/core/EVM/switchChain.js +37 -0
  26. package/dist/_cjs/core/EVM/switchChain.js.map +1 -0
  27. package/dist/_cjs/core/EVM/types.js +9 -0
  28. package/dist/_cjs/core/EVM/types.js.map +1 -0
  29. package/dist/{cjs/utils/getMaxPriorityFeePerGas.js → _cjs/core/EVM/utils.js} +11 -3
  30. package/dist/_cjs/core/EVM/utils.js.map +1 -0
  31. package/dist/_cjs/core/Solana/Solana.js +44 -0
  32. package/dist/_cjs/core/Solana/Solana.js.map +1 -0
  33. package/dist/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
  34. package/dist/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  35. package/dist/_cjs/core/Solana/connection.js +18 -0
  36. package/dist/_cjs/core/Solana/connection.js.map +1 -0
  37. package/dist/_cjs/core/Solana/getSolanaBalance.js +50 -0
  38. package/dist/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  39. package/dist/_cjs/core/Solana/types.js +10 -0
  40. package/dist/_cjs/core/Solana/types.js.map +1 -0
  41. package/dist/_cjs/core/StatusManager.js +167 -0
  42. package/dist/_cjs/core/StatusManager.js.map +1 -0
  43. package/dist/{cjs/execution → _cjs/core}/checkBalance.js +5 -5
  44. package/dist/_cjs/core/checkBalance.js.map +1 -0
  45. package/dist/_cjs/core/execution.js +134 -0
  46. package/dist/_cjs/core/execution.js.map +1 -0
  47. package/dist/_cjs/core/executionState.js +23 -0
  48. package/dist/_cjs/core/executionState.js.map +1 -0
  49. package/dist/_cjs/core/index.js +7 -0
  50. package/dist/_cjs/core/index.js.map +1 -0
  51. package/dist/_cjs/core/prepareRestart.js +23 -0
  52. package/dist/_cjs/core/prepareRestart.js.map +1 -0
  53. package/dist/_cjs/core/provider.js +15 -0
  54. package/dist/_cjs/core/provider.js.map +1 -0
  55. package/dist/_cjs/core/stepComparison.js +25 -0
  56. package/dist/_cjs/core/stepComparison.js.map +1 -0
  57. package/dist/{cjs/allowance → _cjs/core}/types.js +1 -0
  58. package/dist/_cjs/core/types.js.map +1 -0
  59. package/dist/{cjs/execution → _cjs/core}/utils.js +16 -10
  60. package/dist/_cjs/core/utils.js.map +1 -0
  61. package/dist/{cjs/execution → _cjs/core}/waitForReceivingTransaction.js +10 -12
  62. package/dist/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  63. package/dist/_cjs/createConfig.js +48 -0
  64. package/dist/_cjs/createConfig.js.map +1 -0
  65. package/dist/{cjs → _cjs}/helpers.js +11 -25
  66. package/dist/_cjs/helpers.js.map +1 -0
  67. package/dist/_cjs/index.js +20 -0
  68. package/dist/_cjs/index.js.map +1 -0
  69. package/dist/_cjs/package.json +1 -0
  70. package/dist/{cjs → _cjs}/request.js +22 -16
  71. package/dist/_cjs/request.js.map +1 -0
  72. package/dist/_cjs/services/api.js +284 -0
  73. package/dist/_cjs/services/api.js.map +1 -0
  74. package/dist/_cjs/services/balance.js +49 -0
  75. package/dist/_cjs/services/balance.js.map +1 -0
  76. package/dist/{cjs → _cjs}/typeguards.js +1 -0
  77. package/dist/_cjs/typeguards.js.map +1 -0
  78. package/dist/_cjs/types/index.js +5 -0
  79. package/dist/_cjs/types/index.js.map +1 -0
  80. package/dist/{cjs/types/internal.types.js → _cjs/types/internal.js} +1 -0
  81. package/dist/_cjs/types/internal.js.map +1 -0
  82. package/dist/{cjs → _cjs}/utils/errors.js +25 -3
  83. package/dist/_cjs/utils/errors.js.map +1 -0
  84. package/dist/_cjs/utils/getTransactionMessage.js +31 -0
  85. package/dist/_cjs/utils/getTransactionMessage.js.map +1 -0
  86. package/dist/_cjs/utils/index.js +9 -0
  87. package/dist/_cjs/utils/index.js.map +1 -0
  88. package/dist/{cjs → _cjs}/utils/median.js +1 -0
  89. package/dist/_cjs/utils/median.js.map +1 -0
  90. package/dist/_cjs/utils/parseBackendError.js +27 -0
  91. package/dist/_cjs/utils/parseBackendError.js.map +1 -0
  92. package/dist/_cjs/utils/parseError.js +67 -0
  93. package/dist/_cjs/utils/parseError.js.map +1 -0
  94. package/dist/{cjs → _cjs}/utils/utils.js +5 -11
  95. package/dist/_cjs/utils/utils.js.map +1 -0
  96. package/dist/{cjs → _cjs}/version.js +2 -1
  97. package/dist/_cjs/version.js.map +1 -0
  98. package/dist/_esm/config.js +45 -0
  99. package/dist/_esm/config.js.map +1 -0
  100. package/dist/{constants.js → _esm/constants.js} +1 -0
  101. package/dist/_esm/constants.js.map +1 -0
  102. package/dist/_esm/core/BaseStepExecutor.js +52 -0
  103. package/dist/_esm/core/BaseStepExecutor.js.map +1 -0
  104. package/dist/_esm/core/EVM/EVM.js +42 -0
  105. package/dist/_esm/core/EVM/EVM.js.map +1 -0
  106. package/dist/_esm/core/EVM/EVMStepExecutor.js +304 -0
  107. package/dist/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  108. package/dist/{types → _esm/core/EVM}/abi.js +1 -0
  109. package/dist/_esm/core/EVM/abi.js.map +1 -0
  110. package/dist/{execution → _esm/core/EVM}/checkAllowance.js +8 -6
  111. package/dist/_esm/core/EVM/checkAllowance.js.map +1 -0
  112. package/dist/{allowance → _esm/core/EVM}/getAllowance.js +20 -5
  113. package/dist/_esm/core/EVM/getAllowance.js.map +1 -0
  114. package/dist/{balance/getBalance.js → _esm/core/EVM/getEVMBalance.js} +11 -11
  115. package/dist/_esm/core/EVM/getEVMBalance.js.map +1 -0
  116. package/dist/{execution → _esm/core/EVM}/multisig.js +5 -6
  117. package/dist/_esm/core/EVM/multisig.js.map +1 -0
  118. package/dist/_esm/core/EVM/publicClient.js +37 -0
  119. package/dist/_esm/core/EVM/publicClient.js.map +1 -0
  120. package/dist/{allowance → _esm/core/EVM}/setAllowance.js +46 -11
  121. package/dist/_esm/core/EVM/setAllowance.js.map +1 -0
  122. package/dist/{execution → _esm/core/EVM}/switchChain.js +5 -3
  123. package/dist/_esm/core/EVM/switchChain.js.map +1 -0
  124. package/dist/_esm/core/EVM/types.js +6 -0
  125. package/dist/_esm/core/EVM/types.js.map +1 -0
  126. package/dist/{utils/getMaxPriorityFeePerGas.js → _esm/core/EVM/utils.js} +9 -1
  127. package/dist/_esm/core/EVM/utils.js.map +1 -0
  128. package/dist/_esm/core/Solana/Solana.js +40 -0
  129. package/dist/_esm/core/Solana/Solana.js.map +1 -0
  130. package/dist/_esm/core/Solana/SolanaStepExecutor.js +158 -0
  131. package/dist/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  132. package/dist/_esm/core/Solana/connection.js +19 -0
  133. package/dist/_esm/core/Solana/connection.js.map +1 -0
  134. package/dist/_esm/core/Solana/getSolanaBalance.js +46 -0
  135. package/dist/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  136. package/dist/_esm/core/Solana/types.js +7 -0
  137. package/dist/_esm/core/Solana/types.js.map +1 -0
  138. package/dist/_esm/core/StatusManager.js +203 -0
  139. package/dist/_esm/core/StatusManager.js.map +1 -0
  140. package/dist/{execution → _esm/core}/checkBalance.js +3 -2
  141. package/dist/_esm/core/checkBalance.js.map +1 -0
  142. package/dist/_esm/core/execution.js +173 -0
  143. package/dist/_esm/core/execution.js.map +1 -0
  144. package/dist/_esm/core/executionState.js +20 -0
  145. package/dist/_esm/core/executionState.js.map +1 -0
  146. package/dist/_esm/core/index.js +4 -0
  147. package/dist/_esm/core/index.js.map +1 -0
  148. package/dist/_esm/core/prepareRestart.js +64 -0
  149. package/dist/_esm/core/prepareRestart.js.map +1 -0
  150. package/dist/_esm/core/provider.js +11 -0
  151. package/dist/_esm/core/provider.js.map +1 -0
  152. package/dist/{execution → _esm/core}/stepComparison.js +7 -5
  153. package/dist/_esm/core/stepComparison.js.map +1 -0
  154. package/dist/_esm/core/types.js +2 -0
  155. package/dist/_esm/core/types.js.map +1 -0
  156. package/dist/{execution → _esm/core}/utils.js +14 -0
  157. package/dist/_esm/core/utils.js.map +1 -0
  158. package/dist/{execution → _esm/core}/waitForReceivingTransaction.js +8 -7
  159. package/dist/_esm/core/waitForReceivingTransaction.js.map +1 -0
  160. package/dist/_esm/createConfig.js +45 -0
  161. package/dist/_esm/createConfig.js.map +1 -0
  162. package/dist/{helpers.js → _esm/helpers.js} +4 -3
  163. package/dist/_esm/helpers.js.map +1 -0
  164. package/dist/_esm/index.js +12 -0
  165. package/dist/_esm/index.js.map +1 -0
  166. package/dist/_esm/package.json +1 -0
  167. package/dist/{request.js → _esm/request.js} +19 -9
  168. package/dist/_esm/request.js.map +1 -0
  169. package/dist/_esm/services/api.js +353 -0
  170. package/dist/_esm/services/api.js.map +1 -0
  171. package/dist/_esm/services/balance.js +65 -0
  172. package/dist/_esm/services/balance.js.map +1 -0
  173. package/dist/{typeguards.js → _esm/typeguards.js} +1 -0
  174. package/dist/_esm/typeguards.js.map +1 -0
  175. package/dist/_esm/types/index.js +2 -0
  176. package/dist/_esm/types/index.js.map +1 -0
  177. package/dist/_esm/types/internal.js +2 -0
  178. package/dist/_esm/types/internal.js.map +1 -0
  179. package/dist/{utils → _esm/utils}/errors.js +25 -0
  180. package/dist/_esm/utils/errors.js.map +1 -0
  181. package/dist/_esm/utils/getTransactionMessage.js +28 -0
  182. package/dist/_esm/utils/getTransactionMessage.js.map +1 -0
  183. package/dist/_esm/utils/index.js +6 -0
  184. package/dist/_esm/utils/index.js.map +1 -0
  185. package/dist/{utils → _esm/utils}/median.js +1 -0
  186. package/dist/_esm/utils/median.js.map +1 -0
  187. package/dist/_esm/utils/parseBackendError.js +24 -0
  188. package/dist/_esm/utils/parseBackendError.js.map +1 -0
  189. package/dist/{utils → _esm/utils}/parseError.js +4 -53
  190. package/dist/_esm/utils/parseError.js.map +1 -0
  191. package/dist/{utils → _esm/utils}/utils.js +2 -1
  192. package/dist/_esm/utils/utils.js.map +1 -0
  193. package/dist/_esm/version.js +3 -0
  194. package/dist/_esm/version.js.map +1 -0
  195. package/dist/_types/config.d.ts +11 -0
  196. package/dist/_types/config.d.ts.map +1 -0
  197. package/dist/{cjs → _types}/constants.d.ts +1 -0
  198. package/dist/_types/constants.d.ts.map +1 -0
  199. package/dist/_types/core/BaseStepExecutor.d.ts +13 -0
  200. package/dist/_types/core/BaseStepExecutor.d.ts.map +1 -0
  201. package/dist/_types/core/EVM/EVM.d.ts +3 -0
  202. package/dist/_types/core/EVM/EVM.d.ts.map +1 -0
  203. package/dist/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
  204. package/dist/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  205. package/dist/{cjs/types → _types/core/EVM}/abi.d.ts +1 -0
  206. package/dist/_types/core/EVM/abi.d.ts.map +1 -0
  207. package/dist/_types/core/EVM/checkAllowance.d.ts +6 -0
  208. package/dist/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  209. package/dist/{cjs/allowance → _types/core/EVM}/getAllowance.d.ts +15 -1
  210. package/dist/_types/core/EVM/getAllowance.d.ts.map +1 -0
  211. package/dist/_types/core/EVM/getEVMBalance.d.ts +3 -0
  212. package/dist/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  213. package/dist/_types/core/EVM/multisig.d.ts +6 -0
  214. package/dist/_types/core/EVM/multisig.d.ts.map +1 -0
  215. package/dist/_types/core/EVM/publicClient.d.ts +8 -0
  216. package/dist/_types/core/EVM/publicClient.d.ts.map +1 -0
  217. package/dist/_types/core/EVM/setAllowance.d.ts +25 -0
  218. package/dist/_types/core/EVM/setAllowance.d.ts.map +1 -0
  219. package/dist/{execution → _types/core/EVM}/switchChain.d.ts +6 -4
  220. package/dist/_types/core/EVM/switchChain.d.ts.map +1 -0
  221. package/dist/_types/core/EVM/types.d.ts +57 -0
  222. package/dist/_types/core/EVM/types.d.ts.map +1 -0
  223. package/dist/_types/core/EVM/utils.d.ts +5 -0
  224. package/dist/_types/core/EVM/utils.d.ts.map +1 -0
  225. package/dist/_types/core/Solana/Solana.d.ts +3 -0
  226. package/dist/_types/core/Solana/Solana.d.ts.map +1 -0
  227. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
  228. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  229. package/dist/_types/core/Solana/connection.d.ts +8 -0
  230. package/dist/_types/core/Solana/connection.d.ts.map +1 -0
  231. package/dist/_types/core/Solana/getSolanaBalance.d.ts +3 -0
  232. package/dist/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  233. package/dist/_types/core/Solana/types.d.ts +13 -0
  234. package/dist/_types/core/Solana/types.d.ts.map +1 -0
  235. package/dist/{cjs/execution → _types/core}/StatusManager.d.ts +12 -16
  236. package/dist/_types/core/StatusManager.d.ts.map +1 -0
  237. package/dist/_types/core/checkBalance.d.ts +3 -0
  238. package/dist/_types/core/checkBalance.d.ts.map +1 -0
  239. package/dist/_types/core/execution.d.ts +42 -0
  240. package/dist/_types/core/execution.d.ts.map +1 -0
  241. package/dist/_types/core/executionState.d.ts +16 -0
  242. package/dist/_types/core/executionState.d.ts.map +1 -0
  243. package/dist/_types/core/index.d.ts +4 -0
  244. package/dist/_types/core/index.d.ts.map +1 -0
  245. package/dist/_types/core/prepareRestart.d.ts +3 -0
  246. package/dist/_types/core/prepareRestart.d.ts.map +1 -0
  247. package/dist/_types/core/provider.d.ts +3 -0
  248. package/dist/_types/core/provider.d.ts.map +1 -0
  249. package/dist/{execution → _types/core}/stepComparison.d.ts +7 -4
  250. package/dist/_types/core/stepComparison.d.ts.map +1 -0
  251. package/dist/_types/core/types.d.ts +71 -0
  252. package/dist/_types/core/types.d.ts.map +1 -0
  253. package/dist/{execution → _types/core}/utils.d.ts +5 -2
  254. package/dist/_types/core/utils.d.ts.map +1 -0
  255. package/dist/_types/core/waitForReceivingTransaction.d.ts +4 -0
  256. package/dist/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  257. package/dist/_types/createConfig.d.ts +7 -0
  258. package/dist/_types/createConfig.d.ts.map +1 -0
  259. package/dist/{helpers.d.ts → _types/helpers.d.ts} +4 -3
  260. package/dist/_types/helpers.d.ts.map +1 -0
  261. package/dist/_types/index.d.ts +12 -0
  262. package/dist/_types/index.d.ts.map +1 -0
  263. package/dist/{request.d.ts → _types/request.d.ts} +1 -0
  264. package/dist/_types/request.d.ts.map +1 -0
  265. package/dist/_types/services/api.d.ts +87 -0
  266. package/dist/_types/services/api.d.ts.map +1 -0
  267. package/dist/_types/services/balance.d.ts +30 -0
  268. package/dist/_types/services/balance.d.ts.map +1 -0
  269. package/dist/{cjs → _types}/typeguards.d.ts +3 -2
  270. package/dist/_types/typeguards.d.ts.map +1 -0
  271. package/dist/_types/types/index.d.ts +2 -0
  272. package/dist/_types/types/index.d.ts.map +1 -0
  273. package/dist/_types/types/internal.d.ts +56 -0
  274. package/dist/_types/types/internal.d.ts.map +1 -0
  275. package/dist/{utils → _types/utils}/errors.d.ts +1 -0
  276. package/dist/_types/utils/errors.d.ts.map +1 -0
  277. package/dist/_types/utils/getTransactionMessage.d.ts +4 -0
  278. package/dist/_types/utils/getTransactionMessage.d.ts.map +1 -0
  279. package/dist/_types/utils/index.d.ts +6 -0
  280. package/dist/_types/utils/index.d.ts.map +1 -0
  281. package/dist/{cjs → _types}/utils/median.d.ts +1 -0
  282. package/dist/_types/utils/median.d.ts.map +1 -0
  283. package/dist/_types/utils/parseBackendError.d.ts +3 -0
  284. package/dist/_types/utils/parseBackendError.d.ts.map +1 -0
  285. package/dist/{utils → _types/utils}/parseError.d.ts +4 -6
  286. package/dist/_types/utils/parseError.d.ts.map +1 -0
  287. package/dist/{utils → _types/utils}/utils.d.ts +1 -0
  288. package/dist/_types/utils/utils.d.ts.map +1 -0
  289. package/dist/_types/version.d.ts +3 -0
  290. package/dist/_types/version.d.ts.map +1 -0
  291. package/dist/config.ts +47 -0
  292. package/dist/constants.ts +7 -0
  293. package/dist/core/BaseStepExecutor.ts +40 -0
  294. package/dist/core/EVM/EVM.ts +50 -0
  295. package/dist/core/EVM/EVMStepExecutor.ts +472 -0
  296. package/dist/core/EVM/abi.ts +47 -0
  297. package/dist/core/EVM/checkAllowance.ts +152 -0
  298. package/dist/core/EVM/getAllowance.ts +146 -0
  299. package/dist/core/EVM/getEVMBalance.ts +120 -0
  300. package/dist/core/EVM/multisig.ts +53 -0
  301. package/dist/core/EVM/publicClient.ts +46 -0
  302. package/dist/core/EVM/setAllowance.ts +144 -0
  303. package/dist/core/EVM/switchChain.ts +77 -0
  304. package/dist/core/EVM/types.ts +75 -0
  305. package/dist/core/EVM/utils.ts +43 -0
  306. package/dist/core/Solana/Solana.ts +46 -0
  307. package/dist/core/Solana/SolanaStepExecutor.ts +253 -0
  308. package/dist/core/Solana/connection.ts +19 -0
  309. package/dist/core/Solana/getSolanaBalance.ts +62 -0
  310. package/dist/core/Solana/types.ts +18 -0
  311. package/dist/core/StatusManager.ts +238 -0
  312. package/dist/core/checkBalance.ts +48 -0
  313. package/dist/core/execution.ts +218 -0
  314. package/dist/core/executionState.ts +40 -0
  315. package/dist/core/index.ts +3 -0
  316. package/dist/core/prepareRestart.ts +81 -0
  317. package/dist/core/provider.ts +12 -0
  318. package/dist/core/stepComparison.ts +51 -0
  319. package/dist/core/types.ts +103 -0
  320. package/dist/core/utils.ts +122 -0
  321. package/dist/core/waitForReceivingTransaction.ts +73 -0
  322. package/dist/createConfig.ts +54 -0
  323. package/dist/helpers.ts +97 -0
  324. package/dist/index.ts +11 -0
  325. package/dist/request.ts +79 -0
  326. package/dist/services/api.ts +472 -0
  327. package/dist/services/balance.ts +93 -0
  328. package/dist/typeguards.ts +89 -0
  329. package/dist/types/index.ts +1 -0
  330. package/dist/types/internal.ts +58 -0
  331. package/dist/utils/errors.ts +231 -0
  332. package/dist/utils/getTransactionMessage.ts +46 -0
  333. package/dist/utils/index.ts +5 -0
  334. package/dist/utils/median.ts +11 -0
  335. package/dist/utils/parseBackendError.ts +50 -0
  336. package/dist/utils/parseError.ts +204 -0
  337. package/dist/utils/utils.ts +48 -0
  338. package/dist/version.ts +2 -0
  339. package/package.json +27 -86
  340. package/dist/LiFi.d.ts +0 -171
  341. package/dist/LiFi.js +0 -246
  342. package/dist/allowance/getAllowance.d.ts +0 -6
  343. package/dist/allowance/index.d.ts +0 -3
  344. package/dist/allowance/index.js +0 -3
  345. package/dist/allowance/setAllowance.d.ts +0 -5
  346. package/dist/allowance/types.d.ts +0 -27
  347. package/dist/allowance/types.js +0 -1
  348. package/dist/balance/getBalance.d.ts +0 -2
  349. package/dist/balance/getTokenBalance.d.ts +0 -8
  350. package/dist/balance/getTokenBalance.js +0 -27
  351. package/dist/balance/index.d.ts +0 -2
  352. package/dist/balance/index.js +0 -2
  353. package/dist/cjs/LiFi.d.ts +0 -171
  354. package/dist/cjs/LiFi.js +0 -276
  355. package/dist/cjs/allowance/index.d.ts +0 -3
  356. package/dist/cjs/allowance/index.js +0 -19
  357. package/dist/cjs/allowance/setAllowance.d.ts +0 -5
  358. package/dist/cjs/allowance/setAllowance.js +0 -56
  359. package/dist/cjs/allowance/types.d.ts +0 -27
  360. package/dist/cjs/balance/getBalance.d.ts +0 -2
  361. package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
  362. package/dist/cjs/balance/getTokenBalance.js +0 -33
  363. package/dist/cjs/balance/index.d.ts +0 -2
  364. package/dist/cjs/balance/index.js +0 -18
  365. package/dist/cjs/connectors.d.ts +0 -8
  366. package/dist/cjs/connectors.js +0 -75
  367. package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -59
  368. package/dist/cjs/execution/RouteExecutionManager.js +0 -202
  369. package/dist/cjs/execution/StatusManager.js +0 -171
  370. package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
  371. package/dist/cjs/execution/StepExecutionManager.js +0 -267
  372. package/dist/cjs/execution/StepExecutor.d.ts +0 -15
  373. package/dist/cjs/execution/StepExecutor.js +0 -62
  374. package/dist/cjs/execution/checkAllowance.d.ts +0 -4
  375. package/dist/cjs/execution/checkBalance.d.ts +0 -2
  376. package/dist/cjs/execution/index.d.ts +0 -1
  377. package/dist/cjs/execution/index.js +0 -17
  378. package/dist/cjs/execution/multisig.d.ts +0 -4
  379. package/dist/cjs/execution/prepareRestart.d.ts +0 -3
  380. package/dist/cjs/execution/prepareRestart.js +0 -65
  381. package/dist/cjs/execution/stepComparison.d.ts +0 -14
  382. package/dist/cjs/execution/stepComparison.js +0 -37
  383. package/dist/cjs/execution/switchChain.d.ts +0 -21
  384. package/dist/cjs/execution/switchChain.js +0 -54
  385. package/dist/cjs/execution/utils.d.ts +0 -12
  386. package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
  387. package/dist/cjs/helpers.d.ts +0 -18
  388. package/dist/cjs/index.d.ts +0 -5
  389. package/dist/cjs/index.js +0 -24
  390. package/dist/cjs/request.d.ts +0 -9
  391. package/dist/cjs/services/ApiService.d.ts +0 -17
  392. package/dist/cjs/services/ApiService.js +0 -326
  393. package/dist/cjs/services/ChainsService.d.ts +0 -11
  394. package/dist/cjs/services/ChainsService.js +0 -39
  395. package/dist/cjs/services/ConfigService.d.ts +0 -23
  396. package/dist/cjs/services/ConfigService.js +0 -101
  397. package/dist/cjs/types/index.d.ts +0 -4
  398. package/dist/cjs/types/index.js +0 -22
  399. package/dist/cjs/types/internal.types.d.ts +0 -142
  400. package/dist/cjs/utils/errors.d.ts +0 -107
  401. package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  402. package/dist/cjs/utils/index.d.ts +0 -5
  403. package/dist/cjs/utils/index.js +0 -21
  404. package/dist/cjs/utils/parseError.d.ts +0 -37
  405. package/dist/cjs/utils/parseError.js +0 -157
  406. package/dist/cjs/utils/utils.d.ts +0 -10
  407. package/dist/cjs/version.d.ts +0 -2
  408. package/dist/connectors.d.ts +0 -8
  409. package/dist/connectors.js +0 -41
  410. package/dist/constants.d.ts +0 -6
  411. package/dist/execution/RouteExecutionManager.d.ts +0 -59
  412. package/dist/execution/RouteExecutionManager.js +0 -195
  413. package/dist/execution/StatusManager.d.ts +0 -67
  414. package/dist/execution/StatusManager.js +0 -167
  415. package/dist/execution/StepExecutionManager.d.ts +0 -7
  416. package/dist/execution/StepExecutionManager.js +0 -260
  417. package/dist/execution/StepExecutor.d.ts +0 -15
  418. package/dist/execution/StepExecutor.js +0 -58
  419. package/dist/execution/checkAllowance.d.ts +0 -4
  420. package/dist/execution/checkBalance.d.ts +0 -2
  421. package/dist/execution/index.d.ts +0 -1
  422. package/dist/execution/index.js +0 -1
  423. package/dist/execution/multisig.d.ts +0 -4
  424. package/dist/execution/prepareRestart.d.ts +0 -3
  425. package/dist/execution/prepareRestart.js +0 -61
  426. package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
  427. package/dist/index.d.ts +0 -5
  428. package/dist/index.js +0 -6
  429. package/dist/services/ApiService.d.ts +0 -17
  430. package/dist/services/ApiService.js +0 -321
  431. package/dist/services/ChainsService.d.ts +0 -11
  432. package/dist/services/ChainsService.js +0 -33
  433. package/dist/services/ConfigService.d.ts +0 -23
  434. package/dist/services/ConfigService.js +0 -99
  435. package/dist/typeguards.d.ts +0 -4
  436. package/dist/types/abi.d.ts +0 -5
  437. package/dist/types/index.d.ts +0 -4
  438. package/dist/types/index.js +0 -4
  439. package/dist/types/internal.types.d.ts +0 -142
  440. package/dist/types/internal.types.js +0 -1
  441. package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
  442. package/dist/utils/index.d.ts +0 -5
  443. package/dist/utils/index.js +0 -5
  444. package/dist/utils/median.d.ts +0 -1
  445. package/dist/version.d.ts +0 -2
  446. package/dist/version.js +0 -2
@@ -0,0 +1,77 @@
1
+ import type { LiFiStep } from '@lifi/types'
2
+ import type { WalletClient } from 'viem'
3
+ import { LiFiErrorCode, ProviderError } from '../../utils/errors.js'
4
+ import type { StatusManager } from '../StatusManager.js'
5
+ import type { SwitchChainHook } from '../types.js'
6
+
7
+ /**
8
+ * This method checks whether the wallet client is configured for the correct chain.
9
+ * If yes it returns the wallet clien.
10
+ * If no and if user interaction is allowed it triggers the switchChainHook. If no user interaction is allowed it aborts.
11
+ *
12
+ * Account Type: local -
13
+ * We need to create and return a new WalletClient from the switchChainHook in order to continue execution on a new chain.
14
+ *
15
+ * Account Type: json-rpc -
16
+ * We can switch chain and return existing WalletClient from the switchChainHook in order to continue execution on a new chain.
17
+ * @param walletClient
18
+ * @param statusManager
19
+ * @param step
20
+ * @param switchChainHook
21
+ * @param allowUserInteraction
22
+ * @returns New WalletClient
23
+ */
24
+ export const switchChain = async (
25
+ walletClient: WalletClient,
26
+ statusManager: StatusManager,
27
+ step: LiFiStep,
28
+ allowUserInteraction: boolean,
29
+ switchChainHook?: SwitchChainHook
30
+ ): Promise<WalletClient | undefined> => {
31
+ // if we are already on the correct chain we can proceed directly
32
+ if ((await walletClient.getChainId()) === step.action.fromChainId) {
33
+ return walletClient
34
+ }
35
+
36
+ // -> set status message
37
+ step.execution = statusManager.initExecutionObject(step)
38
+ statusManager.updateExecution(step, 'ACTION_REQUIRED')
39
+
40
+ let switchProcess = statusManager.findOrCreateProcess(
41
+ step,
42
+ 'SWITCH_CHAIN',
43
+ 'ACTION_REQUIRED'
44
+ )
45
+
46
+ if (!allowUserInteraction) {
47
+ return
48
+ }
49
+
50
+ try {
51
+ const updatedWalletClient = await switchChainHook?.(step.action.fromChainId)
52
+ const updatedChainId = await updatedWalletClient?.getChainId()
53
+ if (updatedChainId !== step.action.fromChainId) {
54
+ throw new ProviderError(
55
+ LiFiErrorCode.ChainSwitchError,
56
+ 'Chain switch required.'
57
+ )
58
+ }
59
+
60
+ switchProcess = statusManager.updateProcess(
61
+ step,
62
+ switchProcess.type,
63
+ 'DONE'
64
+ )
65
+ statusManager.updateExecution(step, 'PENDING')
66
+ return updatedWalletClient
67
+ } catch (error: any) {
68
+ statusManager.updateProcess(step, switchProcess.type, 'FAILED', {
69
+ error: {
70
+ message: error.message,
71
+ code: LiFiErrorCode.ChainSwitchError,
72
+ },
73
+ })
74
+ statusManager.updateExecution(step, 'FAILED')
75
+ throw error
76
+ }
77
+ }
@@ -0,0 +1,75 @@
1
+ import { ChainType, type ChainId, type Token } from '@lifi/types'
2
+ import type { Hash, WalletClient } from 'viem'
3
+ import type { SwitchChainHook } from '../types.js'
4
+ import { type SDKProvider } from '../types.js'
5
+
6
+ export interface EVMProviderOptions {
7
+ getWalletClient?: () => Promise<WalletClient>
8
+ switchChain?: SwitchChainHook
9
+ multicall?: Partial<Record<ChainId, string>>
10
+ multisig?: MultisigConfig
11
+ }
12
+
13
+ export interface EVMProvider extends SDKProvider {
14
+ setOptions(options: EVMProviderOptions): void
15
+ multicall?: Partial<Record<ChainId, string>>
16
+ multisig?: MultisigConfig
17
+ }
18
+
19
+ export function isEVM(provider: SDKProvider): provider is EVMProvider {
20
+ return provider.type === ChainType.EVM
21
+ }
22
+
23
+ export type TokenSpender = {
24
+ token: Token
25
+ spenderAddress: string
26
+ }
27
+
28
+ export type TokenAllowance = {
29
+ token: Token
30
+ allowance?: bigint
31
+ }
32
+
33
+ export type TokenSpenderAllowance = {
34
+ token: Token
35
+ spenderAddress: string
36
+ allowance?: bigint
37
+ }
38
+
39
+ export interface ApproveTokenRequest {
40
+ walletClient: WalletClient
41
+ token: Token
42
+ spenderAddress: string
43
+ amount: bigint
44
+ infiniteApproval?: boolean
45
+ }
46
+
47
+ export interface RevokeApprovalRequest {
48
+ walletClient: WalletClient
49
+ token: Token
50
+ spenderAddress: string
51
+ }
52
+
53
+ export interface MultisigTxDetails {
54
+ status: 'DONE' | 'FAILED' | 'PENDING' | 'CANCELLED'
55
+ txHash?: Hash
56
+ }
57
+
58
+ export interface MultisigTransaction {
59
+ to: string
60
+ value?: bigint
61
+ data: string
62
+ }
63
+
64
+ export interface MultisigConfig {
65
+ isMultisigWalletClient: boolean
66
+ getMultisigTransactionDetails: (
67
+ txHash: Hash,
68
+ fromChainId: number,
69
+ updateIntermediateStatus?: () => void
70
+ ) => Promise<MultisigTxDetails>
71
+ sendBatchTransaction?: (
72
+ batchTransactions: MultisigTransaction[]
73
+ ) => Promise<Hash>
74
+ shouldBatchTransactions?: boolean
75
+ }
@@ -0,0 +1,43 @@
1
+ import { ChainType, type ChainId } from '@lifi/types'
2
+ import type { PublicClient, Transaction } from 'viem'
3
+ import { median } from '../../utils/median.js'
4
+ import { getProvider } from '../provider.js'
5
+ import type { EVMProvider } from './types.js'
6
+
7
+ export const getMaxPriorityFeePerGas = async (
8
+ client: PublicClient
9
+ ): Promise<bigint | undefined> => {
10
+ const block = await client.getBlock({
11
+ includeTransactions: true,
12
+ })
13
+
14
+ const maxPriorityFeePerGasList = (block.transactions as Transaction[])
15
+ .filter((tx) => tx.maxPriorityFeePerGas)
16
+ .map((tx) => tx.maxPriorityFeePerGas) as bigint[]
17
+
18
+ if (!maxPriorityFeePerGasList.length) {
19
+ return
20
+ }
21
+
22
+ const maxPriorityFeePerGasSum = maxPriorityFeePerGasList.reduce(
23
+ (acc, value) => (acc += value),
24
+ 0n
25
+ )
26
+
27
+ const maxPriorityFeePerGasMedian = median(maxPriorityFeePerGasList) ?? 0n
28
+
29
+ const maxPriorityFeePerGasAvg =
30
+ maxPriorityFeePerGasSum / BigInt(maxPriorityFeePerGasList.length)
31
+
32
+ return maxPriorityFeePerGasMedian > maxPriorityFeePerGasAvg
33
+ ? maxPriorityFeePerGasAvg
34
+ : maxPriorityFeePerGasMedian
35
+ }
36
+
37
+ // Multicall
38
+ export const getMulticallAddress = async (
39
+ chainId: ChainId
40
+ ): Promise<string | undefined> => {
41
+ const provider = getProvider<EVMProvider>(ChainType.EVM)
42
+ return provider.multicall?.[chainId]
43
+ }
@@ -0,0 +1,46 @@
1
+ import { ChainType } from '@lifi/types'
2
+ import { PublicKey } from '@solana/web3.js'
3
+ import type { StepExecutorOptions } from '../types.js'
4
+ import { SolanaStepExecutor } from './SolanaStepExecutor.js'
5
+ import { getSolanaBalance } from './getSolanaBalance.js'
6
+ import type { SolanaProvider, SolanaProviderOptions } from './types.js'
7
+
8
+ export function Solana(options?: SolanaProviderOptions): SolanaProvider {
9
+ const _options: SolanaProviderOptions = options ?? {}
10
+ return {
11
+ get type() {
12
+ return ChainType.SVM
13
+ },
14
+ isAddress(address: string): boolean {
15
+ try {
16
+ new PublicKey(address)
17
+ return true
18
+ } catch (error) {
19
+ return false
20
+ }
21
+ },
22
+ getBalance: getSolanaBalance,
23
+ async getStepExecutor(
24
+ options: StepExecutorOptions
25
+ ): Promise<SolanaStepExecutor> {
26
+ if (!_options.getWalletAdapter) {
27
+ throw new Error(`getWalletAdapter is not provided.`)
28
+ }
29
+
30
+ const walletAdapter = await _options.getWalletAdapter()
31
+
32
+ const executor = new SolanaStepExecutor({
33
+ walletAdapter,
34
+ routeId: options.routeId,
35
+ executionOptions: {
36
+ ...options.executionOptions,
37
+ },
38
+ })
39
+
40
+ return executor
41
+ },
42
+ setOptions(options: SolanaProviderOptions) {
43
+ Object.assign(_options, options)
44
+ },
45
+ }
46
+ }
@@ -0,0 +1,253 @@
1
+ import type {
2
+ ExtendedTransactionInfo,
3
+ FullStatusData,
4
+ LiFiStep,
5
+ } from '@lifi/types'
6
+ import type { WalletAdapter } from '@solana/wallet-adapter-base'
7
+ import {
8
+ VersionedTransaction,
9
+ type TransactionConfirmationStrategy,
10
+ type TransactionSignature,
11
+ } from '@solana/web3.js'
12
+ import { config } from '../../config.js'
13
+ import { getStepTransaction } from '../../services/api.js'
14
+ import {
15
+ LiFiErrorCode,
16
+ TransactionError,
17
+ getTransactionFailedMessage,
18
+ parseError,
19
+ } from '../../utils/index.js'
20
+ import { BaseStepExecutor } from '../BaseStepExecutor.js'
21
+ import { checkBalance } from '../checkBalance.js'
22
+ import { stepComparison } from '../stepComparison.js'
23
+ import type { StepExecutorOptions, TransactionParameters } from '../types.js'
24
+ import { getSubstatusMessage } from '../utils.js'
25
+ import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
26
+ import { getSolanaConnection } from './connection.js'
27
+
28
+ export interface SolanaStepExecutorOptions extends StepExecutorOptions {
29
+ walletAdapter: WalletAdapter
30
+ }
31
+
32
+ export class SolanaStepExecutor extends BaseStepExecutor {
33
+ private walletAdapter: WalletAdapter
34
+
35
+ constructor(options: SolanaStepExecutorOptions) {
36
+ super(options)
37
+ this.walletAdapter = options.walletAdapter
38
+ }
39
+
40
+ executeStep = async (step: LiFiStep): Promise<LiFiStep> => {
41
+ step.execution = this.statusManager.initExecutionObject(step)
42
+
43
+ const fromChain = await config.getChainById(step.action.fromChainId)
44
+ const toChain = await config.getChainById(step.action.toChainId)
45
+
46
+ const isBridgeExecution = fromChain.id !== toChain.id
47
+ const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
48
+
49
+ // STEP 2: Get transaction
50
+ let process = this.statusManager.findOrCreateProcess(
51
+ step,
52
+ currentProcessType
53
+ )
54
+
55
+ if (process.status !== 'DONE') {
56
+ try {
57
+ const connection = await getSolanaConnection()
58
+ let txHash: TransactionSignature
59
+ if (process.txHash) {
60
+ txHash = process.txHash as TransactionSignature
61
+ } else {
62
+ process = this.statusManager.updateProcess(
63
+ step,
64
+ process.type,
65
+ 'STARTED'
66
+ )
67
+
68
+ // Check balance
69
+ await checkBalance(this.walletAdapter.publicKey!.toString(), step)
70
+
71
+ // Create new transaction
72
+ if (!step.transactionRequest) {
73
+ const updatedStep = await getStepTransaction(step)
74
+ const comparedStep = await stepComparison(
75
+ this.statusManager,
76
+ step,
77
+ updatedStep,
78
+ this.allowUserInteraction,
79
+ this.executionOptions
80
+ )
81
+ step = {
82
+ ...comparedStep,
83
+ execution: step.execution,
84
+ }
85
+ }
86
+
87
+ if (!step.transactionRequest?.data) {
88
+ throw new TransactionError(
89
+ LiFiErrorCode.TransactionUnprepared,
90
+ 'Unable to prepare transaction.'
91
+ )
92
+ }
93
+
94
+ process = this.statusManager.updateProcess(
95
+ step,
96
+ process.type,
97
+ 'ACTION_REQUIRED'
98
+ )
99
+
100
+ if (!this.allowUserInteraction) {
101
+ return step
102
+ }
103
+
104
+ let transactionRequest: TransactionParameters = {
105
+ data: step.transactionRequest.data,
106
+ }
107
+
108
+ if (this.executionOptions?.updateTransactionRequestHook) {
109
+ const customizedTransactionRequest: TransactionParameters =
110
+ await this.executionOptions.updateTransactionRequestHook({
111
+ requestType: 'transaction',
112
+ ...transactionRequest,
113
+ })
114
+
115
+ transactionRequest = {
116
+ ...transactionRequest,
117
+ ...customizedTransactionRequest,
118
+ }
119
+ }
120
+
121
+ if (!transactionRequest.data) {
122
+ throw new TransactionError(
123
+ LiFiErrorCode.TransactionUnprepared,
124
+ 'Unable to prepare transaction.'
125
+ )
126
+ }
127
+
128
+ const versionedTransaction = VersionedTransaction.deserialize(
129
+ Uint8Array.from(atob(transactionRequest.data), (c) =>
130
+ c.charCodeAt(0)
131
+ )
132
+ )
133
+ txHash = await this.walletAdapter.sendTransaction(
134
+ versionedTransaction,
135
+ connection,
136
+ {
137
+ maxRetries: 5,
138
+ skipPreflight: true,
139
+ }
140
+ )
141
+
142
+ process = this.statusManager.updateProcess(
143
+ step,
144
+ process.type,
145
+ 'PENDING',
146
+ {
147
+ txHash: txHash,
148
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
149
+ }
150
+ )
151
+ }
152
+
153
+ const signatureResult = await connection.confirmTransaction(
154
+ {
155
+ signature: txHash,
156
+ } as TransactionConfirmationStrategy,
157
+ 'confirmed'
158
+ )
159
+
160
+ if (signatureResult.value.err) {
161
+ throw new TransactionError(
162
+ LiFiErrorCode.TransactionFailed,
163
+ `Transaction failed: ${signatureResult.value.err}`
164
+ )
165
+ }
166
+
167
+ if (isBridgeExecution) {
168
+ process = this.statusManager.updateProcess(step, process.type, 'DONE')
169
+ }
170
+ } catch (e: any) {
171
+ const error = await parseError(e, step, process)
172
+ process = this.statusManager.updateProcess(
173
+ step,
174
+ process.type,
175
+ 'FAILED',
176
+ {
177
+ error: {
178
+ message: error.message,
179
+ htmlMessage: error.htmlMessage,
180
+ code: error.code,
181
+ },
182
+ }
183
+ )
184
+ this.statusManager.updateExecution(step, 'FAILED')
185
+ throw error
186
+ }
187
+ }
188
+
189
+ // STEP 5: Wait for the receiving chain
190
+ const processTxHash = process.txHash
191
+ if (isBridgeExecution) {
192
+ process = this.statusManager.findOrCreateProcess(
193
+ step,
194
+ 'RECEIVING_CHAIN',
195
+ 'PENDING'
196
+ )
197
+ }
198
+ let statusResponse: FullStatusData
199
+ try {
200
+ if (!processTxHash) {
201
+ throw new Error('Transaction hash is undefined.')
202
+ }
203
+ statusResponse = (await waitForReceivingTransaction(
204
+ processTxHash,
205
+ this.statusManager,
206
+ process.type,
207
+ step
208
+ )) as FullStatusData
209
+
210
+ const statusReceiving =
211
+ statusResponse.receiving as ExtendedTransactionInfo
212
+
213
+ process = this.statusManager.updateProcess(step, process.type, 'DONE', {
214
+ substatus: statusResponse.substatus,
215
+ substatusMessage:
216
+ statusResponse.substatusMessage ||
217
+ getSubstatusMessage(statusResponse.status, statusResponse.substatus),
218
+ txHash: statusReceiving?.txHash,
219
+ txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
220
+ })
221
+
222
+ this.statusManager.updateExecution(step, 'DONE', {
223
+ fromAmount: statusResponse.sending.amount,
224
+ toAmount: statusReceiving?.amount,
225
+ toToken: statusReceiving?.token,
226
+ gasAmount: statusResponse.sending.gasAmount,
227
+ gasAmountUSD: statusResponse.sending.gasAmountUSD,
228
+ gasPrice: statusResponse.sending.gasPrice,
229
+ gasToken: statusResponse.sending.gasToken,
230
+ gasUsed: statusResponse.sending.gasUsed,
231
+ })
232
+ } catch (e: unknown) {
233
+ const htmlMessage = await getTransactionFailedMessage(
234
+ step,
235
+ process.txLink
236
+ )
237
+
238
+ process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
239
+ error: {
240
+ code: LiFiErrorCode.TransactionFailed,
241
+ message: 'Failed while waiting for receiving chain.',
242
+ htmlMessage,
243
+ },
244
+ })
245
+ this.statusManager.updateExecution(step, 'FAILED')
246
+ console.warn(e)
247
+ throw e
248
+ }
249
+
250
+ // DONE
251
+ return step
252
+ }
253
+ }
@@ -0,0 +1,19 @@
1
+ import { ChainId } from '@lifi/types'
2
+ import { Connection } from '@solana/web3.js'
3
+ import { getRpcUrl } from '../utils.js'
4
+
5
+ const solanaChainProvider: Connection | undefined = undefined
6
+
7
+ /**
8
+ * getSolanaConnection is just a thin wrapper around getting the
9
+ * connection (rpc provider) for Solana
10
+ * @returns - Solana rpc connection
11
+ */
12
+ export const getSolanaConnection = async (): Promise<Connection> => {
13
+ if (!solanaChainProvider) {
14
+ const rpcUrl = await getRpcUrl(ChainId.SOL)
15
+ return new Connection(rpcUrl)
16
+ } else {
17
+ return solanaChainProvider
18
+ }
19
+ }
@@ -0,0 +1,62 @@
1
+ import type { ChainId, Token, TokenAmount } from '@lifi/types'
2
+ import { PublicKey } from '@solana/web3.js'
3
+ import { getSolanaConnection } from './connection.js'
4
+ import { TokenProgramAddress } from './types.js'
5
+
6
+ export const getSolanaBalance = async (
7
+ walletAddress: string,
8
+ tokens: Token[]
9
+ ): Promise<TokenAmount[]> => {
10
+ if (tokens.length === 0) {
11
+ return []
12
+ }
13
+ const { chainId } = tokens[0]
14
+ tokens.forEach((token) => {
15
+ if (token.chainId !== chainId) {
16
+ console.warn(`Requested tokens have to be on the same chain.`)
17
+ }
18
+ })
19
+
20
+ return getSolanaBalanceDefault(chainId, tokens, walletAddress)
21
+ }
22
+
23
+ const getSolanaBalanceDefault = async (
24
+ _chainId: ChainId,
25
+ tokens: Token[],
26
+ walletAddress: string
27
+ ): Promise<TokenAmount[]> => {
28
+ const connection = await getSolanaConnection()
29
+ const blockNumber = await connection.getSlot()
30
+ const accountPublicKey = new PublicKey(walletAddress)
31
+ const tokenProgramPublicKey = new PublicKey(TokenProgramAddress)
32
+ const response = await connection.getParsedTokenAccountsByOwner(
33
+ accountPublicKey,
34
+ {
35
+ programId: tokenProgramPublicKey,
36
+ }
37
+ )
38
+ const walletTokenAmounts = response.value.reduce(
39
+ (tokenAmounts, value) => {
40
+ const amount = BigInt(value.account.data.parsed.info.tokenAmount.amount)
41
+ if (amount > 0n) {
42
+ tokenAmounts[value.account.data.parsed.info.mint] = amount
43
+ }
44
+ return tokenAmounts
45
+ },
46
+ {} as Record<string, bigint>
47
+ )
48
+ const tokenAmounts: TokenAmount[] = tokens.map((token) => {
49
+ if (walletTokenAmounts[token.address]) {
50
+ return {
51
+ ...token,
52
+ amount: walletTokenAmounts[token.address],
53
+ blockNumber: BigInt(blockNumber),
54
+ }
55
+ }
56
+ return {
57
+ ...token,
58
+ blockNumber: BigInt(blockNumber),
59
+ }
60
+ })
61
+ return tokenAmounts
62
+ }
@@ -0,0 +1,18 @@
1
+ import { ChainType, type ChainId } from '@lifi/types'
2
+ import type { WalletAdapter } from '@solana/wallet-adapter-base'
3
+ import { type SDKProvider } from '../types.js'
4
+
5
+ export interface SolanaProviderOptions {
6
+ getWalletAdapter?: () => Promise<WalletAdapter>
7
+ }
8
+
9
+ export interface SolanaProvider extends SDKProvider {
10
+ rpcUrls?: Record<ChainId, string[]>
11
+ setOptions(options: SolanaProviderOptions): void
12
+ }
13
+
14
+ export function isSolana(provider: SDKProvider): provider is SolanaProvider {
15
+ return provider.type === ChainType.SVM
16
+ }
17
+
18
+ export const TokenProgramAddress = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'