@lifi/sdk 3.0.0-alpha.20 → 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 (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,146 @@
1
+ import type { ChainId, Token } from '@lifi/types'
2
+ import type { Address } from 'viem'
3
+ import { getContract } from 'viem'
4
+ import { MulticallBatchSize } from '../../constants.js'
5
+ import { isNativeTokenAddress } from '../../utils/utils.js'
6
+ import { allowanceAbi } from './abi.js'
7
+ import { getPublicClient } from './publicClient.js'
8
+ import type {
9
+ TokenAllowance,
10
+ TokenSpender,
11
+ TokenSpenderAllowance,
12
+ } from './types.js'
13
+ import { getMulticallAddress } from './utils.js'
14
+
15
+ export const getAllowance = async (
16
+ chainId: ChainId,
17
+ tokenAddress: string,
18
+ ownerAddress: string,
19
+ spenderAddress: string
20
+ ): Promise<bigint> => {
21
+ const client = await getPublicClient(chainId)
22
+ const contract = getContract({
23
+ address: tokenAddress as Address,
24
+ abi: allowanceAbi,
25
+ client: client,
26
+ })
27
+
28
+ try {
29
+ const approved = (await contract.read.allowance([
30
+ ownerAddress,
31
+ spenderAddress,
32
+ ])) as bigint
33
+ return approved
34
+ } catch (e) {
35
+ return 0n
36
+ }
37
+ }
38
+
39
+ export const getAllowanceMulticall = async (
40
+ chainId: ChainId,
41
+ tokens: TokenSpender[],
42
+ ownerAddress: string
43
+ ): Promise<TokenSpenderAllowance[]> => {
44
+ if (!tokens.length) {
45
+ return []
46
+ }
47
+ const multicallAddress = await getMulticallAddress(chainId)
48
+ if (!multicallAddress) {
49
+ throw new Error(`No multicall address configured for chainId ${chainId}.`)
50
+ }
51
+
52
+ const client = await getPublicClient(chainId)
53
+
54
+ const contracts = tokens.map((token) => ({
55
+ address: token.token.address as Address,
56
+ abi: allowanceAbi,
57
+ functionName: 'allowance',
58
+ args: [ownerAddress, token.spenderAddress],
59
+ }))
60
+
61
+ const results = await client.multicall({
62
+ contracts,
63
+ multicallAddress: multicallAddress as Address,
64
+ batchSize: MulticallBatchSize,
65
+ })
66
+
67
+ if (!results.length) {
68
+ throw new Error(
69
+ `Couldn't load allowance from chainId ${chainId} using multicall.`
70
+ )
71
+ }
72
+
73
+ return tokens.map(({ token, spenderAddress }, i: number) => ({
74
+ token,
75
+ spenderAddress,
76
+ allowance: results[i].result as bigint,
77
+ }))
78
+ }
79
+
80
+ /**
81
+ * Get the current allowance for a certain token.
82
+ * @param token - The token that should be checked
83
+ * @param ownerAddress - The owner of the token
84
+ * @param spenderAddress - The spender address that has to be approved
85
+ * @returns Returns allowance
86
+ */
87
+ export const getTokenAllowance = async (
88
+ token: Token,
89
+ ownerAddress: string,
90
+ spenderAddress: string
91
+ ): Promise<bigint | undefined> => {
92
+ // native token don't need approval
93
+ if (isNativeTokenAddress(token.address)) {
94
+ return
95
+ }
96
+
97
+ const approved = await getAllowance(
98
+ token.chainId,
99
+ token.address,
100
+ ownerAddress,
101
+ spenderAddress
102
+ )
103
+ return approved
104
+ }
105
+
106
+ /**
107
+ * Get the current allowance for a list of token/spender address pairs.
108
+ * @param ownerAddress - The owner of the tokens
109
+ * @param tokens - A list of token and spender address pairs
110
+ * @returns Returns array of tokens and their allowance
111
+ */
112
+ export const getTokenAllowanceMulticall = async (
113
+ ownerAddress: string,
114
+ tokens: TokenSpender[]
115
+ ): Promise<TokenAllowance[]> => {
116
+ // filter out native tokens
117
+ const filteredTokens = tokens.filter(
118
+ ({ token }) => !isNativeTokenAddress(token.address)
119
+ )
120
+
121
+ // group by chain
122
+ const tokenDataByChain: { [chainId: number]: TokenSpender[] } = {}
123
+ filteredTokens.forEach((data) => {
124
+ if (!tokenDataByChain[data.token.chainId]) {
125
+ tokenDataByChain[data.token.chainId] = []
126
+ }
127
+ tokenDataByChain[data.token.chainId].push(data)
128
+ })
129
+
130
+ const chainKeys = Object.keys(tokenDataByChain).map(Number.parseInt)
131
+
132
+ const allowances = (
133
+ await Promise.all(
134
+ chainKeys.map(async (chainId) => {
135
+ // get allowances for current chain and token list
136
+ return getAllowanceMulticall(
137
+ chainId,
138
+ tokenDataByChain[chainId],
139
+ ownerAddress
140
+ )
141
+ })
142
+ )
143
+ ).flat()
144
+
145
+ return allowances
146
+ }
@@ -0,0 +1,120 @@
1
+ import type { ChainId, Token, TokenAmount } from '@lifi/types'
2
+ import type { Address } from 'viem'
3
+ import { MulticallBatchSize } from '../../constants.js'
4
+ import { isZeroAddress } from '../../utils/utils.js'
5
+ import { balanceOfAbi, getEthBalanceAbi } from './abi.js'
6
+ import { getPublicClient } from './publicClient.js'
7
+ import { getMulticallAddress } from './utils.js'
8
+
9
+ export const getEVMBalance = async (
10
+ walletAddress: string,
11
+ tokens: Token[]
12
+ ): Promise<TokenAmount[]> => {
13
+ if (tokens.length === 0) {
14
+ return []
15
+ }
16
+ const { chainId } = tokens[0]
17
+ tokens.forEach((token) => {
18
+ if (token.chainId !== chainId) {
19
+ console.warn(`Requested tokens have to be on the same chain.`)
20
+ }
21
+ })
22
+
23
+ const multicallAddress = await getMulticallAddress(chainId)
24
+
25
+ if (multicallAddress && tokens.length > 1) {
26
+ return getEVMBalanceMulticall(
27
+ chainId,
28
+ tokens,
29
+ walletAddress,
30
+ multicallAddress
31
+ )
32
+ } else {
33
+ return getEVMBalanceDefault(chainId, tokens, walletAddress)
34
+ }
35
+ }
36
+
37
+ const getEVMBalanceMulticall = async (
38
+ chainId: ChainId,
39
+ tokens: Token[],
40
+ walletAddress: string,
41
+ multicallAddress: string
42
+ ): Promise<TokenAmount[]> => {
43
+ const client = await getPublicClient(chainId)
44
+
45
+ const contracts = tokens.map((token) => {
46
+ if (isZeroAddress(token.address)) {
47
+ return {
48
+ address: multicallAddress as Address,
49
+ abi: getEthBalanceAbi,
50
+ functionName: 'getEthBalance',
51
+ args: [walletAddress],
52
+ }
53
+ }
54
+ return {
55
+ address: token.address as Address,
56
+ abi: balanceOfAbi,
57
+ functionName: 'balanceOf',
58
+ args: [walletAddress],
59
+ }
60
+ })
61
+ const blockNumber = await client.getBlockNumber()
62
+ const results = await client.multicall({
63
+ contracts,
64
+ multicallAddress: multicallAddress as Address,
65
+ blockNumber,
66
+ batchSize: MulticallBatchSize,
67
+ })
68
+
69
+ if (!results.length) {
70
+ return []
71
+ }
72
+
73
+ return tokens.map((token, i: number) => {
74
+ return {
75
+ ...token,
76
+ amount: results[i].result as bigint,
77
+ blockNumber,
78
+ }
79
+ })
80
+ }
81
+
82
+ const getEVMBalanceDefault = async (
83
+ chainId: ChainId,
84
+ tokens: Token[],
85
+ walletAddress: string
86
+ ): Promise<TokenAmount[]> => {
87
+ const client = await getPublicClient(chainId)
88
+ const blockNumber = await client.getBlockNumber()
89
+ const queue: Promise<bigint>[] = tokens.map((token) => {
90
+ if (isZeroAddress(token.address)) {
91
+ return client.getBalance({
92
+ address: walletAddress as Address,
93
+ })
94
+ }
95
+ return client.readContract({
96
+ address: token.address as Address,
97
+ abi: balanceOfAbi,
98
+ functionName: 'balanceOf',
99
+ args: [walletAddress],
100
+ }) as Promise<bigint>
101
+ })
102
+
103
+ const results = await Promise.allSettled(queue)
104
+
105
+ const tokenAmounts: TokenAmount[] = tokens.map((token, index) => {
106
+ const result = results[index]
107
+ if (result.status === 'rejected') {
108
+ return {
109
+ ...token,
110
+ blockNumber,
111
+ }
112
+ }
113
+ return {
114
+ ...token,
115
+ amount: result.value,
116
+ blockNumber,
117
+ }
118
+ })
119
+ return tokenAmounts
120
+ }
@@ -0,0 +1,53 @@
1
+ import type { ExtendedChain, LiFiStep, ProcessType } from '@lifi/types'
2
+ import type { Hash } from 'viem'
3
+ import { LiFiErrorCode, TransactionError } from '../../utils/errors.js'
4
+ import type { StatusManager } from '../StatusManager.js'
5
+ import type { MultisigConfig, MultisigTxDetails } from './types.js'
6
+
7
+ export const updateMultisigRouteProcess = async (
8
+ internalTxHash: Hash,
9
+ step: LiFiStep,
10
+ processType: ProcessType,
11
+ fromChain: ExtendedChain,
12
+ statusManager: StatusManager,
13
+ multisig?: MultisigConfig
14
+ ) => {
15
+ if (!multisig?.getMultisigTransactionDetails) {
16
+ throw new Error(
17
+ 'getMultisigTransactionDetails is missing in multisig config.'
18
+ )
19
+ }
20
+
21
+ const updateIntermediateMultisigStatus = () => {
22
+ statusManager.updateProcess(step, processType, 'PENDING')
23
+ }
24
+
25
+ const multisigStatusResponse: MultisigTxDetails =
26
+ await multisig?.getMultisigTransactionDetails(
27
+ internalTxHash,
28
+ fromChain.id,
29
+ updateIntermediateMultisigStatus
30
+ )
31
+
32
+ if (multisigStatusResponse.status === 'DONE') {
33
+ statusManager.updateProcess(step, processType, 'PENDING', {
34
+ txHash: multisigStatusResponse.txHash,
35
+ multisigTxHash: undefined,
36
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${multisigStatusResponse.txHash}`,
37
+ })
38
+ }
39
+
40
+ if (multisigStatusResponse.status === 'FAILED') {
41
+ throw new TransactionError(
42
+ LiFiErrorCode.TransactionFailed,
43
+ 'Multisig transaction failed.'
44
+ )
45
+ }
46
+
47
+ if (multisigStatusResponse.status === 'CANCELLED') {
48
+ throw new TransactionError(
49
+ LiFiErrorCode.SignatureRejected,
50
+ 'Transaction was rejected by user.'
51
+ )
52
+ }
53
+ }
@@ -0,0 +1,46 @@
1
+ import type { PublicClient } from 'viem'
2
+ import { createPublicClient, fallback, http } from 'viem'
3
+ import type { Chain } from 'viem/chains'
4
+ import { config } from '../../config.js'
5
+ import { getRpcUrls } from '../utils.js'
6
+
7
+ // cached providers
8
+ const publicClients: Record<number, PublicClient> = {}
9
+
10
+ /**
11
+ * Get an instance of a provider for a specific chain
12
+ * @param chainId - Id of the chain the provider is for
13
+ * @returns The public client for the given chain
14
+ */
15
+ export const getPublicClient = async (
16
+ chainId: number
17
+ ): Promise<PublicClient> => {
18
+ if (!publicClients[chainId]) {
19
+ const urls = await getRpcUrls(chainId)
20
+ const fallbackTransports = urls.map((url) =>
21
+ http(url, {
22
+ batch: true,
23
+ })
24
+ )
25
+ const _chain = await config.getChainById(chainId)
26
+ const chain: Chain = {
27
+ ..._chain,
28
+ ..._chain.metamask,
29
+ name: _chain.metamask.chainName,
30
+ rpcUrls: {
31
+ default: { http: _chain.metamask.rpcUrls },
32
+ public: { http: _chain.metamask.rpcUrls },
33
+ },
34
+ }
35
+ publicClients[chainId] = createPublicClient({
36
+ chain: chain,
37
+ transport: fallback(fallbackTransports),
38
+ })
39
+ }
40
+
41
+ if (!publicClients[chainId]) {
42
+ throw new Error(`Unable to configure provider for chain ${chainId}`)
43
+ }
44
+
45
+ return publicClients[chainId]
46
+ }
@@ -0,0 +1,144 @@
1
+ import type {
2
+ Address,
3
+ Hash,
4
+ PublicClient,
5
+ SendTransactionParameters,
6
+ WalletClient,
7
+ } from 'viem'
8
+ import { encodeFunctionData, maxUint256, publicActions } from 'viem'
9
+ import { isNativeTokenAddress } from '../../utils/utils.js'
10
+ import type { ExecutionOptions, TransactionParameters } from '../types.js'
11
+ import { approveAbi } from './abi.js'
12
+ import { getAllowance } from './getAllowance.js'
13
+ import type { ApproveTokenRequest, RevokeApprovalRequest } from './types.js'
14
+ import { getMaxPriorityFeePerGas } from './utils.js'
15
+
16
+ export const setAllowance = async (
17
+ walletClient: WalletClient,
18
+ tokenAddress: string,
19
+ contractAddress: string,
20
+ amount: bigint,
21
+ settings?: ExecutionOptions,
22
+ returnPopulatedTransaction?: boolean
23
+ ): Promise<Hash> => {
24
+ const data = encodeFunctionData({
25
+ abi: approveAbi,
26
+ functionName: 'approve',
27
+ args: [contractAddress, amount],
28
+ })
29
+
30
+ if (returnPopulatedTransaction) {
31
+ return data
32
+ }
33
+ const client = walletClient.extend(publicActions)
34
+
35
+ let transactionRequest: TransactionParameters = {
36
+ to: tokenAddress,
37
+ data,
38
+ maxPriorityFeePerGas:
39
+ walletClient.account?.type === 'local'
40
+ ? await getMaxPriorityFeePerGas(client as PublicClient)
41
+ : undefined,
42
+ }
43
+
44
+ if (settings?.updateTransactionRequestHook) {
45
+ const customizedTransactionRequest: TransactionParameters =
46
+ await settings.updateTransactionRequestHook({
47
+ requestType: 'approve',
48
+ ...transactionRequest,
49
+ })
50
+
51
+ transactionRequest = {
52
+ ...transactionRequest,
53
+ ...customizedTransactionRequest,
54
+ }
55
+ }
56
+
57
+ return client.sendTransaction({
58
+ to: transactionRequest.to as Address,
59
+ account: walletClient.account!,
60
+ data: transactionRequest.data,
61
+ gas: transactionRequest.gas,
62
+ gasPrice: transactionRequest.gasPrice,
63
+ maxFeePerGas: transactionRequest.maxFeePerGas,
64
+ maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
65
+ chain: null,
66
+ } as SendTransactionParameters)
67
+ }
68
+
69
+ /**
70
+ * Set approval for a certain token and amount.
71
+ * @param request - The approval request
72
+ * @param request.walletClient
73
+ * @param request.token
74
+ * @param request.spenderAddress
75
+ * @param request.amount
76
+ * @param request.infiniteApproval
77
+ * @returns Returns Hash or nothing
78
+ */
79
+ export const setTokenAllowance = async ({
80
+ walletClient,
81
+ token,
82
+ spenderAddress,
83
+ amount,
84
+ infiniteApproval = false,
85
+ }: ApproveTokenRequest): Promise<Hash | void> => {
86
+ // native token don't need approval
87
+ if (isNativeTokenAddress(token.address)) {
88
+ return
89
+ }
90
+ const approvedAmount = await getAllowance(
91
+ token.chainId,
92
+ token.address,
93
+ walletClient.account!.address,
94
+ spenderAddress
95
+ )
96
+
97
+ if (amount > approvedAmount) {
98
+ const approvalAmount = infiniteApproval ? maxUint256 : amount
99
+
100
+ const approveTx = await setAllowance(
101
+ walletClient,
102
+ token.address,
103
+ spenderAddress,
104
+ approvalAmount
105
+ )
106
+
107
+ return approveTx
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Revoke approval for a certain token.
113
+ * @param request - The revoke request
114
+ * @param request.walletClient
115
+ * @param request.token
116
+ * @param request.spenderAddress
117
+ * @returns Returns Hash or nothing
118
+ */
119
+ export const revokeTokenApproval = async ({
120
+ walletClient,
121
+ token,
122
+ spenderAddress,
123
+ }: RevokeApprovalRequest): Promise<Hash | void> => {
124
+ // native token don't need approval
125
+ if (isNativeTokenAddress(token.address)) {
126
+ return
127
+ }
128
+ const approvedAmount = await getAllowance(
129
+ token.chainId,
130
+ token.address,
131
+ walletClient.account!.address,
132
+ spenderAddress
133
+ )
134
+ if (approvedAmount > 0) {
135
+ const approveTx = await setAllowance(
136
+ walletClient,
137
+ token.address,
138
+ spenderAddress,
139
+ 0n
140
+ )
141
+
142
+ return approveTx
143
+ }
144
+ }
@@ -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
+ }