@lifi/sdk 3.0.0-alpha.20 → 3.0.0-alpha.22

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 (485) hide show
  1. package/dist/_cjs/config.js.map +1 -0
  2. package/dist/_cjs/constants.js.map +1 -0
  3. package/dist/_cjs/core/BaseStepExecutor.js.map +1 -0
  4. package/dist/_cjs/core/EVM/EVM.js.map +1 -0
  5. package/dist/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
  6. package/dist/_cjs/core/EVM/abi.js.map +1 -0
  7. package/dist/_cjs/core/EVM/checkAllowance.js.map +1 -0
  8. package/dist/_cjs/core/EVM/getAllowance.js.map +1 -0
  9. package/dist/_cjs/core/EVM/getEVMBalance.js.map +1 -0
  10. package/dist/_cjs/core/EVM/multisig.js.map +1 -0
  11. package/dist/_cjs/core/EVM/publicClient.js.map +1 -0
  12. package/dist/_cjs/core/EVM/setAllowance.js.map +1 -0
  13. package/dist/_cjs/core/EVM/switchChain.js.map +1 -0
  14. package/dist/_cjs/core/EVM/types.js.map +1 -0
  15. package/dist/_cjs/core/EVM/utils.js.map +1 -0
  16. package/dist/_cjs/core/Solana/Solana.js.map +1 -0
  17. package/dist/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
  18. package/dist/_cjs/core/Solana/connection.js.map +1 -0
  19. package/dist/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
  20. package/dist/_cjs/core/Solana/types.js.map +1 -0
  21. package/dist/_cjs/core/StatusManager.js.map +1 -0
  22. package/dist/_cjs/core/checkBalance.js.map +1 -0
  23. package/dist/_cjs/core/execution.js.map +1 -0
  24. package/dist/_cjs/core/executionState.js.map +1 -0
  25. package/dist/_cjs/core/index.js.map +1 -0
  26. package/dist/_cjs/core/prepareRestart.js.map +1 -0
  27. package/dist/_cjs/core/provider.js.map +1 -0
  28. package/dist/_cjs/core/stepComparison.js.map +1 -0
  29. package/dist/_cjs/core/types.js.map +1 -0
  30. package/dist/_cjs/core/utils.js.map +1 -0
  31. package/dist/_cjs/core/waitForReceivingTransaction.js.map +1 -0
  32. package/dist/_cjs/createConfig.js.map +1 -0
  33. package/dist/_cjs/helpers.js.map +1 -0
  34. package/dist/_cjs/index.js.map +1 -0
  35. package/dist/_cjs/request.js.map +1 -0
  36. package/dist/_cjs/services/api.js.map +1 -0
  37. package/dist/_cjs/services/balance.js.map +1 -0
  38. package/dist/_cjs/typeguards.js.map +1 -0
  39. package/dist/_cjs/types/index.js.map +1 -0
  40. package/dist/_cjs/types/internal.js.map +1 -0
  41. package/dist/_cjs/utils/errors.js.map +1 -0
  42. package/dist/_cjs/utils/getTransactionMessage.js.map +1 -0
  43. package/dist/_cjs/utils/index.js.map +1 -0
  44. package/dist/_cjs/utils/median.js.map +1 -0
  45. package/dist/_cjs/utils/parseBackendError.js.map +1 -0
  46. package/dist/_cjs/utils/parseError.js.map +1 -0
  47. package/dist/_cjs/utils/utils.js.map +1 -0
  48. package/dist/{cjs → _cjs}/version.js +1 -1
  49. package/dist/_cjs/version.js.map +1 -0
  50. package/dist/_esm/config.js.map +1 -0
  51. package/dist/_esm/constants.js.map +1 -0
  52. package/dist/_esm/core/BaseStepExecutor.js.map +1 -0
  53. package/dist/_esm/core/EVM/EVM.js.map +1 -0
  54. package/dist/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
  55. package/dist/_esm/core/EVM/abi.js.map +1 -0
  56. package/dist/_esm/core/EVM/checkAllowance.js.map +1 -0
  57. package/dist/_esm/core/EVM/getAllowance.js.map +1 -0
  58. package/dist/_esm/core/EVM/getEVMBalance.js.map +1 -0
  59. package/dist/_esm/core/EVM/multisig.js.map +1 -0
  60. package/dist/_esm/core/EVM/publicClient.js.map +1 -0
  61. package/dist/_esm/core/EVM/setAllowance.js.map +1 -0
  62. package/dist/_esm/core/EVM/switchChain.js.map +1 -0
  63. package/dist/_esm/core/EVM/types.js.map +1 -0
  64. package/dist/_esm/core/EVM/utils.js.map +1 -0
  65. package/dist/_esm/core/Solana/Solana.js.map +1 -0
  66. package/dist/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
  67. package/dist/_esm/core/Solana/connection.js.map +1 -0
  68. package/dist/_esm/core/Solana/getSolanaBalance.js.map +1 -0
  69. package/dist/_esm/core/Solana/types.js.map +1 -0
  70. package/dist/_esm/core/StatusManager.js.map +1 -0
  71. package/dist/_esm/core/checkBalance.js.map +1 -0
  72. package/dist/_esm/core/execution.js.map +1 -0
  73. package/dist/_esm/core/executionState.js.map +1 -0
  74. package/dist/_esm/core/index.js.map +1 -0
  75. package/dist/_esm/core/prepareRestart.js.map +1 -0
  76. package/dist/_esm/core/provider.js.map +1 -0
  77. package/dist/_esm/core/stepComparison.js.map +1 -0
  78. package/dist/_esm/core/types.js.map +1 -0
  79. package/dist/_esm/core/utils.js.map +1 -0
  80. package/dist/_esm/core/waitForReceivingTransaction.js.map +1 -0
  81. package/dist/_esm/createConfig.js.map +1 -0
  82. package/dist/_esm/helpers.js.map +1 -0
  83. package/dist/_esm/index.js.map +1 -0
  84. package/dist/_esm/request.js.map +1 -0
  85. package/dist/_esm/services/api.js.map +1 -0
  86. package/dist/_esm/services/balance.js.map +1 -0
  87. package/dist/_esm/typeguards.js.map +1 -0
  88. package/dist/_esm/types/index.js.map +1 -0
  89. package/dist/_esm/types/internal.js.map +1 -0
  90. package/dist/_esm/utils/errors.js.map +1 -0
  91. package/dist/_esm/utils/getTransactionMessage.js.map +1 -0
  92. package/dist/_esm/utils/index.js.map +1 -0
  93. package/dist/_esm/utils/median.js.map +1 -0
  94. package/dist/_esm/utils/parseBackendError.js.map +1 -0
  95. package/dist/_esm/utils/parseError.js.map +1 -0
  96. package/dist/_esm/utils/utils.js.map +1 -0
  97. package/dist/_esm/version.js +3 -0
  98. package/dist/_esm/version.js.map +1 -0
  99. package/dist/_types/config.d.ts.map +1 -0
  100. package/dist/_types/constants.d.ts.map +1 -0
  101. package/dist/_types/core/BaseStepExecutor.d.ts.map +1 -0
  102. package/dist/_types/core/EVM/EVM.d.ts.map +1 -0
  103. package/dist/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
  104. package/dist/_types/core/EVM/abi.d.ts.map +1 -0
  105. package/dist/_types/core/EVM/checkAllowance.d.ts.map +1 -0
  106. package/dist/_types/core/EVM/getAllowance.d.ts.map +1 -0
  107. package/dist/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
  108. package/dist/_types/core/EVM/multisig.d.ts.map +1 -0
  109. package/dist/_types/core/EVM/publicClient.d.ts.map +1 -0
  110. package/dist/_types/core/EVM/setAllowance.d.ts.map +1 -0
  111. package/dist/_types/core/EVM/switchChain.d.ts.map +1 -0
  112. package/dist/_types/core/EVM/types.d.ts.map +1 -0
  113. package/dist/_types/core/EVM/utils.d.ts.map +1 -0
  114. package/dist/_types/core/Solana/Solana.d.ts.map +1 -0
  115. package/dist/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
  116. package/dist/_types/core/Solana/connection.d.ts.map +1 -0
  117. package/dist/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
  118. package/dist/_types/core/Solana/types.d.ts.map +1 -0
  119. package/dist/_types/core/StatusManager.d.ts.map +1 -0
  120. package/dist/_types/core/checkBalance.d.ts.map +1 -0
  121. package/dist/_types/core/execution.d.ts.map +1 -0
  122. package/dist/_types/core/executionState.d.ts.map +1 -0
  123. package/dist/_types/core/index.d.ts.map +1 -0
  124. package/dist/_types/core/prepareRestart.d.ts.map +1 -0
  125. package/dist/_types/core/provider.d.ts.map +1 -0
  126. package/dist/_types/core/stepComparison.d.ts.map +1 -0
  127. package/dist/_types/core/types.d.ts.map +1 -0
  128. package/dist/_types/core/utils.d.ts.map +1 -0
  129. package/dist/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
  130. package/dist/_types/createConfig.d.ts.map +1 -0
  131. package/dist/_types/helpers.d.ts.map +1 -0
  132. package/dist/_types/index.d.ts.map +1 -0
  133. package/dist/_types/request.d.ts.map +1 -0
  134. package/dist/_types/services/api.d.ts.map +1 -0
  135. package/dist/_types/services/balance.d.ts.map +1 -0
  136. package/dist/_types/typeguards.d.ts.map +1 -0
  137. package/dist/_types/types/index.d.ts.map +1 -0
  138. package/dist/_types/types/internal.d.ts.map +1 -0
  139. package/dist/_types/utils/errors.d.ts.map +1 -0
  140. package/dist/_types/utils/getTransactionMessage.d.ts.map +1 -0
  141. package/dist/_types/utils/index.d.ts.map +1 -0
  142. package/dist/_types/utils/median.d.ts.map +1 -0
  143. package/dist/_types/utils/parseBackendError.d.ts.map +1 -0
  144. package/dist/_types/utils/parseError.d.ts.map +1 -0
  145. package/dist/_types/utils/utils.d.ts.map +1 -0
  146. package/dist/_types/version.d.ts +3 -0
  147. package/dist/_types/version.d.ts.map +1 -0
  148. package/dist/config.ts +47 -0
  149. package/dist/constants.ts +7 -0
  150. package/dist/core/BaseStepExecutor.ts +40 -0
  151. package/dist/core/EVM/EVM.ts +50 -0
  152. package/dist/core/EVM/EVMStepExecutor.ts +472 -0
  153. package/dist/core/EVM/abi.ts +47 -0
  154. package/dist/core/EVM/checkAllowance.ts +152 -0
  155. package/dist/core/EVM/getAllowance.ts +146 -0
  156. package/dist/core/EVM/getEVMBalance.ts +120 -0
  157. package/dist/core/EVM/multisig.ts +53 -0
  158. package/dist/core/EVM/publicClient.ts +46 -0
  159. package/dist/core/EVM/setAllowance.ts +144 -0
  160. package/dist/core/EVM/switchChain.ts +77 -0
  161. package/dist/core/EVM/types.ts +75 -0
  162. package/dist/core/EVM/utils.ts +43 -0
  163. package/dist/core/Solana/Solana.ts +46 -0
  164. package/dist/core/Solana/SolanaStepExecutor.ts +253 -0
  165. package/dist/core/Solana/connection.ts +19 -0
  166. package/dist/core/Solana/getSolanaBalance.ts +62 -0
  167. package/dist/core/Solana/types.ts +18 -0
  168. package/dist/core/StatusManager.ts +238 -0
  169. package/dist/core/checkBalance.ts +48 -0
  170. package/dist/core/execution.ts +218 -0
  171. package/dist/core/executionState.ts +40 -0
  172. package/dist/core/index.ts +3 -0
  173. package/dist/core/prepareRestart.ts +81 -0
  174. package/dist/core/provider.ts +12 -0
  175. package/dist/core/stepComparison.ts +51 -0
  176. package/dist/core/types.ts +103 -0
  177. package/dist/core/utils.ts +122 -0
  178. package/dist/core/waitForReceivingTransaction.ts +73 -0
  179. package/dist/createConfig.ts +54 -0
  180. package/dist/helpers.ts +97 -0
  181. package/dist/index.ts +11 -0
  182. package/dist/request.ts +79 -0
  183. package/dist/services/api.ts +472 -0
  184. package/dist/services/balance.ts +93 -0
  185. package/dist/typeguards.ts +89 -0
  186. package/dist/types/index.ts +1 -0
  187. package/dist/types/internal.ts +58 -0
  188. package/dist/utils/errors.ts +231 -0
  189. package/dist/utils/getTransactionMessage.ts +46 -0
  190. package/dist/utils/index.ts +5 -0
  191. package/dist/utils/median.ts +11 -0
  192. package/dist/utils/parseBackendError.ts +50 -0
  193. package/dist/utils/parseError.ts +204 -0
  194. package/dist/utils/utils.ts +48 -0
  195. package/dist/version.ts +2 -0
  196. package/package.json +8 -8
  197. package/dist/cjs/config.js.map +0 -1
  198. package/dist/cjs/constants.js.map +0 -1
  199. package/dist/cjs/core/BaseStepExecutor.js.map +0 -1
  200. package/dist/cjs/core/EVM/EVM.js.map +0 -1
  201. package/dist/cjs/core/EVM/EVMStepExecutor.js.map +0 -1
  202. package/dist/cjs/core/EVM/abi.js.map +0 -1
  203. package/dist/cjs/core/EVM/checkAllowance.js.map +0 -1
  204. package/dist/cjs/core/EVM/getAllowance.js.map +0 -1
  205. package/dist/cjs/core/EVM/getEVMBalance.js.map +0 -1
  206. package/dist/cjs/core/EVM/multisig.js.map +0 -1
  207. package/dist/cjs/core/EVM/publicClient.js.map +0 -1
  208. package/dist/cjs/core/EVM/setAllowance.js.map +0 -1
  209. package/dist/cjs/core/EVM/switchChain.js.map +0 -1
  210. package/dist/cjs/core/EVM/types.js.map +0 -1
  211. package/dist/cjs/core/EVM/utils.js.map +0 -1
  212. package/dist/cjs/core/Solana/Solana.js.map +0 -1
  213. package/dist/cjs/core/Solana/SolanaStepExecutor.js.map +0 -1
  214. package/dist/cjs/core/Solana/connection.js.map +0 -1
  215. package/dist/cjs/core/Solana/getSolanaBalance.js.map +0 -1
  216. package/dist/cjs/core/Solana/types.js.map +0 -1
  217. package/dist/cjs/core/StatusManager.js.map +0 -1
  218. package/dist/cjs/core/checkBalance.js.map +0 -1
  219. package/dist/cjs/core/execution.js.map +0 -1
  220. package/dist/cjs/core/executionState.js.map +0 -1
  221. package/dist/cjs/core/index.js.map +0 -1
  222. package/dist/cjs/core/prepareRestart.js.map +0 -1
  223. package/dist/cjs/core/provider.js.map +0 -1
  224. package/dist/cjs/core/stepComparison.js.map +0 -1
  225. package/dist/cjs/core/types.js.map +0 -1
  226. package/dist/cjs/core/utils.js.map +0 -1
  227. package/dist/cjs/core/waitForReceivingTransaction.js.map +0 -1
  228. package/dist/cjs/createConfig.js.map +0 -1
  229. package/dist/cjs/helpers.js.map +0 -1
  230. package/dist/cjs/index.js.map +0 -1
  231. package/dist/cjs/request.js.map +0 -1
  232. package/dist/cjs/services/api.js.map +0 -1
  233. package/dist/cjs/services/balance.js.map +0 -1
  234. package/dist/cjs/typeguards.js.map +0 -1
  235. package/dist/cjs/types/index.js.map +0 -1
  236. package/dist/cjs/types/internal.js.map +0 -1
  237. package/dist/cjs/utils/errors.js.map +0 -1
  238. package/dist/cjs/utils/getTransactionMessage.js.map +0 -1
  239. package/dist/cjs/utils/index.js.map +0 -1
  240. package/dist/cjs/utils/median.js.map +0 -1
  241. package/dist/cjs/utils/parseBackendError.js.map +0 -1
  242. package/dist/cjs/utils/parseError.js.map +0 -1
  243. package/dist/cjs/utils/utils.js.map +0 -1
  244. package/dist/cjs/version.js.map +0 -1
  245. package/dist/esm/config.js.map +0 -1
  246. package/dist/esm/constants.js.map +0 -1
  247. package/dist/esm/core/BaseStepExecutor.js.map +0 -1
  248. package/dist/esm/core/EVM/EVM.js.map +0 -1
  249. package/dist/esm/core/EVM/EVMStepExecutor.js.map +0 -1
  250. package/dist/esm/core/EVM/abi.js.map +0 -1
  251. package/dist/esm/core/EVM/checkAllowance.js.map +0 -1
  252. package/dist/esm/core/EVM/getAllowance.js.map +0 -1
  253. package/dist/esm/core/EVM/getEVMBalance.js.map +0 -1
  254. package/dist/esm/core/EVM/multisig.js.map +0 -1
  255. package/dist/esm/core/EVM/publicClient.js.map +0 -1
  256. package/dist/esm/core/EVM/setAllowance.js.map +0 -1
  257. package/dist/esm/core/EVM/switchChain.js.map +0 -1
  258. package/dist/esm/core/EVM/types.js.map +0 -1
  259. package/dist/esm/core/EVM/utils.js.map +0 -1
  260. package/dist/esm/core/Solana/Solana.js.map +0 -1
  261. package/dist/esm/core/Solana/SolanaStepExecutor.js.map +0 -1
  262. package/dist/esm/core/Solana/connection.js.map +0 -1
  263. package/dist/esm/core/Solana/getSolanaBalance.js.map +0 -1
  264. package/dist/esm/core/Solana/types.js.map +0 -1
  265. package/dist/esm/core/StatusManager.js.map +0 -1
  266. package/dist/esm/core/checkBalance.js.map +0 -1
  267. package/dist/esm/core/execution.js.map +0 -1
  268. package/dist/esm/core/executionState.js.map +0 -1
  269. package/dist/esm/core/index.js.map +0 -1
  270. package/dist/esm/core/prepareRestart.js.map +0 -1
  271. package/dist/esm/core/provider.js.map +0 -1
  272. package/dist/esm/core/stepComparison.js.map +0 -1
  273. package/dist/esm/core/types.js.map +0 -1
  274. package/dist/esm/core/utils.js.map +0 -1
  275. package/dist/esm/core/waitForReceivingTransaction.js.map +0 -1
  276. package/dist/esm/createConfig.js.map +0 -1
  277. package/dist/esm/helpers.js.map +0 -1
  278. package/dist/esm/index.js.map +0 -1
  279. package/dist/esm/request.js.map +0 -1
  280. package/dist/esm/services/api.js.map +0 -1
  281. package/dist/esm/services/balance.js.map +0 -1
  282. package/dist/esm/typeguards.js.map +0 -1
  283. package/dist/esm/types/index.js.map +0 -1
  284. package/dist/esm/types/internal.js.map +0 -1
  285. package/dist/esm/utils/errors.js.map +0 -1
  286. package/dist/esm/utils/getTransactionMessage.js.map +0 -1
  287. package/dist/esm/utils/index.js.map +0 -1
  288. package/dist/esm/utils/median.js.map +0 -1
  289. package/dist/esm/utils/parseBackendError.js.map +0 -1
  290. package/dist/esm/utils/parseError.js.map +0 -1
  291. package/dist/esm/utils/utils.js.map +0 -1
  292. package/dist/esm/version.js +0 -3
  293. package/dist/esm/version.js.map +0 -1
  294. package/dist/types/config.d.ts.map +0 -1
  295. package/dist/types/constants.d.ts.map +0 -1
  296. package/dist/types/core/BaseStepExecutor.d.ts.map +0 -1
  297. package/dist/types/core/EVM/EVM.d.ts.map +0 -1
  298. package/dist/types/core/EVM/EVMStepExecutor.d.ts.map +0 -1
  299. package/dist/types/core/EVM/abi.d.ts.map +0 -1
  300. package/dist/types/core/EVM/checkAllowance.d.ts.map +0 -1
  301. package/dist/types/core/EVM/getAllowance.d.ts.map +0 -1
  302. package/dist/types/core/EVM/getEVMBalance.d.ts.map +0 -1
  303. package/dist/types/core/EVM/multisig.d.ts.map +0 -1
  304. package/dist/types/core/EVM/publicClient.d.ts.map +0 -1
  305. package/dist/types/core/EVM/setAllowance.d.ts.map +0 -1
  306. package/dist/types/core/EVM/switchChain.d.ts.map +0 -1
  307. package/dist/types/core/EVM/types.d.ts.map +0 -1
  308. package/dist/types/core/EVM/utils.d.ts.map +0 -1
  309. package/dist/types/core/Solana/Solana.d.ts.map +0 -1
  310. package/dist/types/core/Solana/SolanaStepExecutor.d.ts.map +0 -1
  311. package/dist/types/core/Solana/connection.d.ts.map +0 -1
  312. package/dist/types/core/Solana/getSolanaBalance.d.ts.map +0 -1
  313. package/dist/types/core/Solana/types.d.ts.map +0 -1
  314. package/dist/types/core/StatusManager.d.ts.map +0 -1
  315. package/dist/types/core/checkBalance.d.ts.map +0 -1
  316. package/dist/types/core/execution.d.ts.map +0 -1
  317. package/dist/types/core/executionState.d.ts.map +0 -1
  318. package/dist/types/core/index.d.ts.map +0 -1
  319. package/dist/types/core/prepareRestart.d.ts.map +0 -1
  320. package/dist/types/core/provider.d.ts.map +0 -1
  321. package/dist/types/core/stepComparison.d.ts.map +0 -1
  322. package/dist/types/core/types.d.ts.map +0 -1
  323. package/dist/types/core/utils.d.ts.map +0 -1
  324. package/dist/types/core/waitForReceivingTransaction.d.ts.map +0 -1
  325. package/dist/types/createConfig.d.ts.map +0 -1
  326. package/dist/types/helpers.d.ts.map +0 -1
  327. package/dist/types/index.d.ts.map +0 -1
  328. package/dist/types/request.d.ts.map +0 -1
  329. package/dist/types/services/api.d.ts.map +0 -1
  330. package/dist/types/services/balance.d.ts.map +0 -1
  331. package/dist/types/typeguards.d.ts.map +0 -1
  332. package/dist/types/types/index.d.ts.map +0 -1
  333. package/dist/types/types/internal.d.ts.map +0 -1
  334. package/dist/types/utils/errors.d.ts.map +0 -1
  335. package/dist/types/utils/getTransactionMessage.d.ts.map +0 -1
  336. package/dist/types/utils/index.d.ts.map +0 -1
  337. package/dist/types/utils/median.d.ts.map +0 -1
  338. package/dist/types/utils/parseBackendError.d.ts.map +0 -1
  339. package/dist/types/utils/parseError.d.ts.map +0 -1
  340. package/dist/types/utils/utils.d.ts.map +0 -1
  341. package/dist/types/version.d.ts +0 -3
  342. package/dist/types/version.d.ts.map +0 -1
  343. /package/dist/{cjs → _cjs}/config.js +0 -0
  344. /package/dist/{cjs → _cjs}/constants.js +0 -0
  345. /package/dist/{cjs → _cjs}/core/BaseStepExecutor.js +0 -0
  346. /package/dist/{cjs → _cjs}/core/EVM/EVM.js +0 -0
  347. /package/dist/{cjs → _cjs}/core/EVM/EVMStepExecutor.js +0 -0
  348. /package/dist/{cjs → _cjs}/core/EVM/abi.js +0 -0
  349. /package/dist/{cjs → _cjs}/core/EVM/checkAllowance.js +0 -0
  350. /package/dist/{cjs → _cjs}/core/EVM/getAllowance.js +0 -0
  351. /package/dist/{cjs → _cjs}/core/EVM/getEVMBalance.js +0 -0
  352. /package/dist/{cjs → _cjs}/core/EVM/multisig.js +0 -0
  353. /package/dist/{cjs → _cjs}/core/EVM/publicClient.js +0 -0
  354. /package/dist/{cjs → _cjs}/core/EVM/setAllowance.js +0 -0
  355. /package/dist/{cjs → _cjs}/core/EVM/switchChain.js +0 -0
  356. /package/dist/{cjs → _cjs}/core/EVM/types.js +0 -0
  357. /package/dist/{cjs → _cjs}/core/EVM/utils.js +0 -0
  358. /package/dist/{cjs → _cjs}/core/Solana/Solana.js +0 -0
  359. /package/dist/{cjs → _cjs}/core/Solana/SolanaStepExecutor.js +0 -0
  360. /package/dist/{cjs → _cjs}/core/Solana/connection.js +0 -0
  361. /package/dist/{cjs → _cjs}/core/Solana/getSolanaBalance.js +0 -0
  362. /package/dist/{cjs → _cjs}/core/Solana/types.js +0 -0
  363. /package/dist/{cjs → _cjs}/core/StatusManager.js +0 -0
  364. /package/dist/{cjs → _cjs}/core/checkBalance.js +0 -0
  365. /package/dist/{cjs → _cjs}/core/execution.js +0 -0
  366. /package/dist/{cjs → _cjs}/core/executionState.js +0 -0
  367. /package/dist/{cjs → _cjs}/core/index.js +0 -0
  368. /package/dist/{cjs → _cjs}/core/prepareRestart.js +0 -0
  369. /package/dist/{cjs → _cjs}/core/provider.js +0 -0
  370. /package/dist/{cjs → _cjs}/core/stepComparison.js +0 -0
  371. /package/dist/{cjs → _cjs}/core/types.js +0 -0
  372. /package/dist/{cjs → _cjs}/core/utils.js +0 -0
  373. /package/dist/{cjs → _cjs}/core/waitForReceivingTransaction.js +0 -0
  374. /package/dist/{cjs → _cjs}/createConfig.js +0 -0
  375. /package/dist/{cjs → _cjs}/helpers.js +0 -0
  376. /package/dist/{cjs → _cjs}/index.js +0 -0
  377. /package/dist/{cjs → _cjs}/package.json +0 -0
  378. /package/dist/{cjs → _cjs}/request.js +0 -0
  379. /package/dist/{cjs → _cjs}/services/api.js +0 -0
  380. /package/dist/{cjs → _cjs}/services/balance.js +0 -0
  381. /package/dist/{cjs → _cjs}/typeguards.js +0 -0
  382. /package/dist/{cjs → _cjs}/types/index.js +0 -0
  383. /package/dist/{cjs → _cjs}/types/internal.js +0 -0
  384. /package/dist/{cjs → _cjs}/utils/errors.js +0 -0
  385. /package/dist/{cjs → _cjs}/utils/getTransactionMessage.js +0 -0
  386. /package/dist/{cjs → _cjs}/utils/index.js +0 -0
  387. /package/dist/{cjs → _cjs}/utils/median.js +0 -0
  388. /package/dist/{cjs → _cjs}/utils/parseBackendError.js +0 -0
  389. /package/dist/{cjs → _cjs}/utils/parseError.js +0 -0
  390. /package/dist/{cjs → _cjs}/utils/utils.js +0 -0
  391. /package/dist/{esm → _esm}/config.js +0 -0
  392. /package/dist/{esm → _esm}/constants.js +0 -0
  393. /package/dist/{esm → _esm}/core/BaseStepExecutor.js +0 -0
  394. /package/dist/{esm → _esm}/core/EVM/EVM.js +0 -0
  395. /package/dist/{esm → _esm}/core/EVM/EVMStepExecutor.js +0 -0
  396. /package/dist/{esm → _esm}/core/EVM/abi.js +0 -0
  397. /package/dist/{esm → _esm}/core/EVM/checkAllowance.js +0 -0
  398. /package/dist/{esm → _esm}/core/EVM/getAllowance.js +0 -0
  399. /package/dist/{esm → _esm}/core/EVM/getEVMBalance.js +0 -0
  400. /package/dist/{esm → _esm}/core/EVM/multisig.js +0 -0
  401. /package/dist/{esm → _esm}/core/EVM/publicClient.js +0 -0
  402. /package/dist/{esm → _esm}/core/EVM/setAllowance.js +0 -0
  403. /package/dist/{esm → _esm}/core/EVM/switchChain.js +0 -0
  404. /package/dist/{esm → _esm}/core/EVM/types.js +0 -0
  405. /package/dist/{esm → _esm}/core/EVM/utils.js +0 -0
  406. /package/dist/{esm → _esm}/core/Solana/Solana.js +0 -0
  407. /package/dist/{esm → _esm}/core/Solana/SolanaStepExecutor.js +0 -0
  408. /package/dist/{esm → _esm}/core/Solana/connection.js +0 -0
  409. /package/dist/{esm → _esm}/core/Solana/getSolanaBalance.js +0 -0
  410. /package/dist/{esm → _esm}/core/Solana/types.js +0 -0
  411. /package/dist/{esm → _esm}/core/StatusManager.js +0 -0
  412. /package/dist/{esm → _esm}/core/checkBalance.js +0 -0
  413. /package/dist/{esm → _esm}/core/execution.js +0 -0
  414. /package/dist/{esm → _esm}/core/executionState.js +0 -0
  415. /package/dist/{esm → _esm}/core/index.js +0 -0
  416. /package/dist/{esm → _esm}/core/prepareRestart.js +0 -0
  417. /package/dist/{esm → _esm}/core/provider.js +0 -0
  418. /package/dist/{esm → _esm}/core/stepComparison.js +0 -0
  419. /package/dist/{esm → _esm}/core/types.js +0 -0
  420. /package/dist/{esm → _esm}/core/utils.js +0 -0
  421. /package/dist/{esm → _esm}/core/waitForReceivingTransaction.js +0 -0
  422. /package/dist/{esm → _esm}/createConfig.js +0 -0
  423. /package/dist/{esm → _esm}/helpers.js +0 -0
  424. /package/dist/{esm → _esm}/index.js +0 -0
  425. /package/dist/{esm → _esm}/package.json +0 -0
  426. /package/dist/{esm → _esm}/request.js +0 -0
  427. /package/dist/{esm → _esm}/services/api.js +0 -0
  428. /package/dist/{esm → _esm}/services/balance.js +0 -0
  429. /package/dist/{esm → _esm}/typeguards.js +0 -0
  430. /package/dist/{esm → _esm}/types/index.js +0 -0
  431. /package/dist/{esm → _esm}/types/internal.js +0 -0
  432. /package/dist/{esm → _esm}/utils/errors.js +0 -0
  433. /package/dist/{esm → _esm}/utils/getTransactionMessage.js +0 -0
  434. /package/dist/{esm → _esm}/utils/index.js +0 -0
  435. /package/dist/{esm → _esm}/utils/median.js +0 -0
  436. /package/dist/{esm → _esm}/utils/parseBackendError.js +0 -0
  437. /package/dist/{esm → _esm}/utils/parseError.js +0 -0
  438. /package/dist/{esm → _esm}/utils/utils.js +0 -0
  439. /package/dist/{types → _types}/config.d.ts +0 -0
  440. /package/dist/{types → _types}/constants.d.ts +0 -0
  441. /package/dist/{types → _types}/core/BaseStepExecutor.d.ts +0 -0
  442. /package/dist/{types → _types}/core/EVM/EVM.d.ts +0 -0
  443. /package/dist/{types → _types}/core/EVM/EVMStepExecutor.d.ts +0 -0
  444. /package/dist/{types → _types}/core/EVM/abi.d.ts +0 -0
  445. /package/dist/{types → _types}/core/EVM/checkAllowance.d.ts +0 -0
  446. /package/dist/{types → _types}/core/EVM/getAllowance.d.ts +0 -0
  447. /package/dist/{types → _types}/core/EVM/getEVMBalance.d.ts +0 -0
  448. /package/dist/{types → _types}/core/EVM/multisig.d.ts +0 -0
  449. /package/dist/{types → _types}/core/EVM/publicClient.d.ts +0 -0
  450. /package/dist/{types → _types}/core/EVM/setAllowance.d.ts +0 -0
  451. /package/dist/{types → _types}/core/EVM/switchChain.d.ts +0 -0
  452. /package/dist/{types → _types}/core/EVM/types.d.ts +0 -0
  453. /package/dist/{types → _types}/core/EVM/utils.d.ts +0 -0
  454. /package/dist/{types → _types}/core/Solana/Solana.d.ts +0 -0
  455. /package/dist/{types → _types}/core/Solana/SolanaStepExecutor.d.ts +0 -0
  456. /package/dist/{types → _types}/core/Solana/connection.d.ts +0 -0
  457. /package/dist/{types → _types}/core/Solana/getSolanaBalance.d.ts +0 -0
  458. /package/dist/{types → _types}/core/Solana/types.d.ts +0 -0
  459. /package/dist/{types → _types}/core/StatusManager.d.ts +0 -0
  460. /package/dist/{types → _types}/core/checkBalance.d.ts +0 -0
  461. /package/dist/{types → _types}/core/execution.d.ts +0 -0
  462. /package/dist/{types → _types}/core/executionState.d.ts +0 -0
  463. /package/dist/{types → _types}/core/index.d.ts +0 -0
  464. /package/dist/{types → _types}/core/prepareRestart.d.ts +0 -0
  465. /package/dist/{types → _types}/core/provider.d.ts +0 -0
  466. /package/dist/{types → _types}/core/stepComparison.d.ts +0 -0
  467. /package/dist/{types → _types}/core/types.d.ts +0 -0
  468. /package/dist/{types → _types}/core/utils.d.ts +0 -0
  469. /package/dist/{types → _types}/core/waitForReceivingTransaction.d.ts +0 -0
  470. /package/dist/{types → _types}/createConfig.d.ts +0 -0
  471. /package/dist/{types → _types}/helpers.d.ts +0 -0
  472. /package/dist/{types → _types}/index.d.ts +0 -0
  473. /package/dist/{types → _types}/request.d.ts +0 -0
  474. /package/dist/{types → _types}/services/api.d.ts +0 -0
  475. /package/dist/{types → _types}/services/balance.d.ts +0 -0
  476. /package/dist/{types → _types}/typeguards.d.ts +0 -0
  477. /package/dist/{types → _types}/types/index.d.ts +0 -0
  478. /package/dist/{types → _types}/types/internal.d.ts +0 -0
  479. /package/dist/{types → _types}/utils/errors.d.ts +0 -0
  480. /package/dist/{types → _types}/utils/getTransactionMessage.d.ts +0 -0
  481. /package/dist/{types → _types}/utils/index.d.ts +0 -0
  482. /package/dist/{types → _types}/utils/median.d.ts +0 -0
  483. /package/dist/{types → _types}/utils/parseBackendError.d.ts +0 -0
  484. /package/dist/{types → _types}/utils/parseError.d.ts +0 -0
  485. /package/dist/{types → _types}/utils/utils.d.ts +0 -0
@@ -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'
@@ -0,0 +1,238 @@
1
+ import type {
2
+ Execution,
3
+ LiFiStep,
4
+ Process,
5
+ ProcessType,
6
+ Status,
7
+ Token,
8
+ } from '@lifi/types'
9
+ import { emptyExecution } from '@lifi/types'
10
+ import { executionState } from './executionState.js'
11
+ import { getProcessMessage } from './utils.js'
12
+
13
+ interface Receipt {
14
+ fromAmount?: string
15
+ toAmount?: string
16
+ toToken?: Token
17
+ gasPrice?: string
18
+ gasUsed?: string
19
+ gasToken?: Token
20
+ gasAmount?: string
21
+ gasAmountUSD?: string
22
+ }
23
+
24
+ type OptionalParameters = Partial<
25
+ Pick<
26
+ Process,
27
+ | 'doneAt'
28
+ | 'failedAt'
29
+ | 'txHash'
30
+ | 'txLink'
31
+ | 'error'
32
+ | 'substatus'
33
+ | 'substatusMessage'
34
+ | 'multisigTxHash'
35
+ >
36
+ >
37
+
38
+ /**
39
+ * Manages status updates of a route and provides various functions for tracking processes
40
+ * @param {string} routeId The route dd this StatusManger belongs to.
41
+ * @returns {StatusManager} An instance of StatusManager.
42
+ */
43
+ export class StatusManager {
44
+ private readonly routeId: string
45
+ private shouldUpdate = true
46
+
47
+ constructor(routeId: string) {
48
+ this.routeId = routeId
49
+ }
50
+
51
+ /**
52
+ * Initializes the execution object of a Step.
53
+ * @param step The current step in execution
54
+ * @returns The initialized execution object for this step and a function to update this step
55
+ */
56
+ initExecutionObject = (step: LiFiStep): Execution => {
57
+ if (!step.execution) {
58
+ step.execution = structuredClone<Execution>(emptyExecution)
59
+ step.execution.status = 'PENDING'
60
+ this.updateStepInRoute(step)
61
+ }
62
+
63
+ // Change status to PENDING after resuming from FAILED
64
+ if (step.execution.status === 'FAILED') {
65
+ step.execution.status = 'PENDING'
66
+ this.updateStepInRoute(step)
67
+ }
68
+
69
+ return step.execution
70
+ }
71
+
72
+ /**
73
+ * Updates the execution object of a Step.
74
+ * @param step The current step in execution
75
+ * @param status The status for the execution
76
+ * @param receipt Optional. Information about received tokens
77
+ * @returns The step with the updated execution object
78
+ */
79
+ updateExecution(step: LiFiStep, status: Status, receipt?: Receipt): LiFiStep {
80
+ if (!step.execution) {
81
+ throw Error("Can't update empty execution.")
82
+ }
83
+ step.execution.status = status
84
+ if (receipt) {
85
+ step.execution = {
86
+ ...step.execution,
87
+ ...receipt,
88
+ }
89
+ }
90
+ this.updateStepInRoute(step)
91
+ return step
92
+ }
93
+
94
+ /**
95
+ * Create and push a new process into the execution.
96
+ * @param step The step that should contain the new process.
97
+ * @param type Type of the process. Used to identify already existing processes.
98
+ * @param status By default created procces is set to the STARTED status. We can override new process with the needed status.
99
+ * @returns Returns process.
100
+ */
101
+ findOrCreateProcess = (
102
+ step: LiFiStep,
103
+ type: ProcessType,
104
+ status?: Status
105
+ ): Process => {
106
+ if (!step.execution?.process) {
107
+ throw new Error("Execution hasn't been initialized.")
108
+ }
109
+
110
+ const process = step.execution.process.find((p) => p.type === type)
111
+
112
+ if (process) {
113
+ if (status && process.status !== status) {
114
+ process.status = status
115
+ this.updateStepInRoute(step)
116
+ }
117
+ return process
118
+ }
119
+
120
+ const newProcess: Process = {
121
+ type: type,
122
+ startedAt: Date.now(),
123
+ message: getProcessMessage(type, status ?? 'STARTED'),
124
+ status: status ?? 'STARTED',
125
+ }
126
+
127
+ step.execution.process.push(newProcess)
128
+ this.updateStepInRoute(step)
129
+ return newProcess
130
+ }
131
+
132
+ /**
133
+ * Update a process object.
134
+ * @param step The step where the process should be updated
135
+ * @param type The process type to update
136
+ * @param status The status the process gets.
137
+ * @param [params] Additional parameters to append to the process.
138
+ * @returns The update process
139
+ */
140
+ updateProcess = (
141
+ step: LiFiStep,
142
+ type: ProcessType,
143
+ status: Status,
144
+ params?: OptionalParameters
145
+ ): Process => {
146
+ if (!step.execution) {
147
+ throw new Error("Can't update an empty step execution.")
148
+ }
149
+ const currentProcess = step?.execution?.process.find((p) => p.type === type)
150
+
151
+ if (!currentProcess) {
152
+ throw new Error("Can't find a process for the given type.")
153
+ }
154
+
155
+ switch (status) {
156
+ case 'CANCELLED':
157
+ currentProcess.doneAt = Date.now()
158
+ break
159
+ case 'FAILED':
160
+ currentProcess.doneAt = Date.now()
161
+ step.execution.status = 'FAILED'
162
+ break
163
+ case 'DONE':
164
+ currentProcess.doneAt = Date.now()
165
+ break
166
+ case 'PENDING':
167
+ step.execution.status = 'PENDING'
168
+ break
169
+ case 'ACTION_REQUIRED':
170
+ step.execution.status = 'ACTION_REQUIRED'
171
+ break
172
+ default:
173
+ break
174
+ }
175
+
176
+ currentProcess.status = status
177
+ currentProcess.message = getProcessMessage(type, status)
178
+ // set extra parameters or overwritte the standard params set in the switch statement
179
+ if (params) {
180
+ for (const [key, value] of Object.entries(params)) {
181
+ currentProcess[key] = value
182
+ }
183
+ }
184
+ // Sort processes, the ones with DONE status go first
185
+ step.execution.process = [
186
+ ...step?.execution?.process.filter(
187
+ (process) => process.status === 'DONE'
188
+ ),
189
+ ...step?.execution?.process.filter(
190
+ (process) => process.status !== 'DONE'
191
+ ),
192
+ ]
193
+ this.updateStepInRoute(step) // updates the step in the route
194
+ return currentProcess
195
+ }
196
+
197
+ /**
198
+ * Remove a process from the execution
199
+ * @param step The step where the process should be removed from
200
+ * @param type The process type to remove
201
+ */
202
+ removeProcess = (step: LiFiStep, type: ProcessType): void => {
203
+ if (!step.execution) {
204
+ throw new Error("Execution hasn't been initialized.")
205
+ }
206
+ const index = step.execution.process.findIndex((p) => p.type === type)
207
+ step.execution.process.splice(index, 1)
208
+ this.updateStepInRoute(step)
209
+ }
210
+
211
+ updateStepInRoute = (step: LiFiStep): LiFiStep => {
212
+ if (!this.shouldUpdate) {
213
+ return step
214
+ }
215
+ const data = executionState.get(this.routeId)
216
+
217
+ if (!data) {
218
+ throw new Error('Execution data not found.')
219
+ }
220
+
221
+ const stepIndex = data.route.steps.findIndex(
222
+ (routeStep) => routeStep.id === step.id
223
+ )
224
+
225
+ if (stepIndex === -1) {
226
+ throw new Error("Couldn't find a step to update.")
227
+ }
228
+
229
+ data.route.steps[stepIndex] = { ...data.route.steps[stepIndex], ...step }
230
+
231
+ data.executionOptions?.updateRouteHook?.(data.route)
232
+ return data.route.steps[stepIndex]
233
+ }
234
+
235
+ allowUpdates(value: boolean): void {
236
+ this.shouldUpdate = value
237
+ }
238
+ }
@@ -0,0 +1,48 @@
1
+ import type { LiFiStep } from '@lifi/types'
2
+ import { formatUnits } from 'viem'
3
+ import { getTokenBalance } from '../services/balance.js'
4
+ import { BalanceError } from '../utils/errors.js'
5
+
6
+ export const checkBalance = async (
7
+ walletAddress: string,
8
+ step: LiFiStep,
9
+ depth = 0
10
+ ): Promise<void> => {
11
+ const token = await getTokenBalance(walletAddress, step.action.fromToken)
12
+ if (token) {
13
+ const currentBalance = token.amount ?? 0n
14
+ const neededBalance = BigInt(step.action.fromAmount)
15
+
16
+ if (currentBalance < neededBalance) {
17
+ if (depth <= 3) {
18
+ await new Promise((resolve) => {
19
+ setTimeout(resolve, 200)
20
+ })
21
+ await checkBalance(walletAddress, step, depth + 1)
22
+ } else if (
23
+ (neededBalance * BigInt((1 - step.action.slippage) * 1_000_000_000)) /
24
+ 1_000_000_000n <=
25
+ currentBalance
26
+ ) {
27
+ // adjust amount in slippage limits
28
+ step.action.fromAmount = currentBalance.toString()
29
+ } else {
30
+ const neeeded = formatUnits(neededBalance, token.decimals)
31
+ const current = formatUnits(currentBalance, token.decimals)
32
+ let errorMessage =
33
+ `Your ${token.symbol} balance is too low, ` +
34
+ `you try to transfer ${neeeded} ${token.symbol}, ` +
35
+ `but your wallet only holds ${current} ${token.symbol}. ` +
36
+ `No funds have been sent.`
37
+
38
+ if (currentBalance !== 0n) {
39
+ errorMessage +=
40
+ `If the problem consists, please delete this transfer and ` +
41
+ `start a new one with a maximum of ${current} ${token.symbol}.`
42
+ }
43
+
44
+ throw new BalanceError('The balance is too low.', errorMessage)
45
+ }
46
+ }
47
+ }
48
+ }