@wormhole-foundation/sdk-connect 0.5.0-beta.0

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 (427) hide show
  1. package/dist/cjs/circle-api.d.ts +16 -0
  2. package/dist/cjs/circle-api.d.ts.map +1 -0
  3. package/dist/cjs/circle-api.js +47 -0
  4. package/dist/cjs/circle-api.js.map +1 -0
  5. package/dist/cjs/common.d.ts +4 -0
  6. package/dist/cjs/common.d.ts.map +1 -0
  7. package/dist/cjs/common.js +40 -0
  8. package/dist/cjs/common.js.map +1 -0
  9. package/dist/cjs/config.d.ts +34 -0
  10. package/dist/cjs/config.d.ts.map +1 -0
  11. package/dist/cjs/config.js +52 -0
  12. package/dist/cjs/config.js.map +1 -0
  13. package/dist/cjs/index.d.ts +15 -0
  14. package/dist/cjs/index.d.ts.map +1 -0
  15. package/dist/cjs/index.js +45 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/protocols/cctp/cctpTransfer.d.ts +41 -0
  18. package/dist/cjs/protocols/cctp/cctpTransfer.d.ts.map +1 -0
  19. package/dist/cjs/protocols/cctp/cctpTransfer.js +459 -0
  20. package/dist/cjs/protocols/cctp/cctpTransfer.js.map +1 -0
  21. package/dist/cjs/protocols/cctp/index.d.ts +2 -0
  22. package/dist/cjs/protocols/cctp/index.d.ts.map +1 -0
  23. package/dist/cjs/protocols/cctp/index.js +18 -0
  24. package/dist/cjs/protocols/cctp/index.js.map +1 -0
  25. package/dist/cjs/protocols/cctpTransfer.d.ts +41 -0
  26. package/dist/cjs/protocols/cctpTransfer.d.ts.map +1 -0
  27. package/dist/cjs/protocols/cctpTransfer.js +459 -0
  28. package/dist/cjs/protocols/cctpTransfer.js.map +1 -0
  29. package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts +38 -0
  30. package/dist/cjs/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
  31. package/dist/cjs/protocols/gateway/gatewayTransfer.js +360 -0
  32. package/dist/cjs/protocols/gateway/gatewayTransfer.js.map +1 -0
  33. package/dist/cjs/protocols/gateway/index.d.ts +2 -0
  34. package/dist/cjs/protocols/gateway/index.d.ts.map +1 -0
  35. package/dist/cjs/protocols/gateway/index.js +18 -0
  36. package/dist/cjs/protocols/gateway/index.js.map +1 -0
  37. package/dist/cjs/protocols/gatewayTransfer.d.ts +40 -0
  38. package/dist/cjs/protocols/gatewayTransfer.d.ts.map +1 -0
  39. package/dist/cjs/protocols/gatewayTransfer.js +406 -0
  40. package/dist/cjs/protocols/gatewayTransfer.js.map +1 -0
  41. package/dist/cjs/protocols/index.d.ts +5 -0
  42. package/dist/cjs/protocols/index.d.ts.map +1 -0
  43. package/dist/cjs/protocols/index.js +21 -0
  44. package/dist/cjs/protocols/index.js.map +1 -0
  45. package/dist/cjs/protocols/tokenBridge/automatic.d.ts +16 -0
  46. package/dist/cjs/protocols/tokenBridge/automatic.d.ts.map +1 -0
  47. package/dist/cjs/protocols/tokenBridge/automatic.js +77 -0
  48. package/dist/cjs/protocols/tokenBridge/automatic.js.map +1 -0
  49. package/dist/cjs/protocols/tokenBridge/index.d.ts +5 -0
  50. package/dist/cjs/protocols/tokenBridge/index.d.ts.map +1 -0
  51. package/dist/cjs/protocols/tokenBridge/index.js +21 -0
  52. package/dist/cjs/protocols/tokenBridge/index.js.map +1 -0
  53. package/dist/cjs/protocols/tokenBridge/manual.d.ts +16 -0
  54. package/dist/cjs/protocols/tokenBridge/manual.d.ts.map +1 -0
  55. package/dist/cjs/protocols/tokenBridge/manual.js +77 -0
  56. package/dist/cjs/protocols/tokenBridge/manual.js.map +1 -0
  57. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts +20 -0
  58. package/dist/cjs/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
  59. package/dist/cjs/protocols/tokenBridge/tokenTransfer.js +24 -0
  60. package/dist/cjs/protocols/tokenBridge/tokenTransfer.js.map +1 -0
  61. package/dist/cjs/protocols/tokenBridge/utils.d.ts +25 -0
  62. package/dist/cjs/protocols/tokenBridge/utils.d.ts.map +1 -0
  63. package/dist/cjs/protocols/tokenBridge/utils.js +331 -0
  64. package/dist/cjs/protocols/tokenBridge/utils.js.map +1 -0
  65. package/dist/cjs/protocols/tokenTransfer.d.ts +40 -0
  66. package/dist/cjs/protocols/tokenTransfer.d.ts.map +1 -0
  67. package/dist/cjs/protocols/tokenTransfer.js +472 -0
  68. package/dist/cjs/protocols/tokenTransfer.js.map +1 -0
  69. package/dist/cjs/protocols/tokenbridge/automatic.d.ts +16 -0
  70. package/dist/cjs/protocols/tokenbridge/automatic.d.ts.map +1 -0
  71. package/dist/cjs/protocols/tokenbridge/automatic.js +76 -0
  72. package/dist/cjs/protocols/tokenbridge/automatic.js.map +1 -0
  73. package/dist/cjs/protocols/tokenbridge/index.d.ts +2 -0
  74. package/dist/cjs/protocols/tokenbridge/index.d.ts.map +1 -0
  75. package/dist/cjs/protocols/tokenbridge/index.js +18 -0
  76. package/dist/cjs/protocols/tokenbridge/index.js.map +1 -0
  77. package/dist/cjs/protocols/tokenbridge/manual.d.ts +16 -0
  78. package/dist/cjs/protocols/tokenbridge/manual.d.ts.map +1 -0
  79. package/dist/cjs/protocols/tokenbridge/manual.js +76 -0
  80. package/dist/cjs/protocols/tokenbridge/manual.js.map +1 -0
  81. package/dist/cjs/protocols/tokenbridge/tokenTransfer.d.ts +37 -0
  82. package/dist/cjs/protocols/tokenbridge/tokenTransfer.d.ts.map +1 -0
  83. package/dist/cjs/protocols/tokenbridge/tokenTransfer.js +345 -0
  84. package/dist/cjs/protocols/tokenbridge/tokenTransfer.js.map +1 -0
  85. package/dist/cjs/protocols/wormholeTransfer.d.ts +20 -0
  86. package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -0
  87. package/dist/cjs/protocols/wormholeTransfer.js +3 -0
  88. package/dist/cjs/protocols/wormholeTransfer.js.map +1 -0
  89. package/dist/cjs/quote.d.ts +17 -0
  90. package/dist/cjs/quote.d.ts.map +1 -0
  91. package/dist/cjs/quote.js +3 -0
  92. package/dist/cjs/quote.js.map +1 -0
  93. package/dist/cjs/receipt.d.ts +51 -0
  94. package/dist/cjs/receipt.d.ts.map +1 -0
  95. package/dist/cjs/receipt.js +31 -0
  96. package/dist/cjs/receipt.js.map +1 -0
  97. package/dist/cjs/routes/automaticTokenBridgeRoute.d.ts +28 -0
  98. package/dist/cjs/routes/automaticTokenBridgeRoute.d.ts.map +1 -0
  99. package/dist/cjs/routes/automaticTokenBridgeRoute.js +82 -0
  100. package/dist/cjs/routes/automaticTokenBridgeRoute.js.map +1 -0
  101. package/dist/cjs/routes/cctp/automatic.d.ts +46 -0
  102. package/dist/cjs/routes/cctp/automatic.d.ts.map +1 -0
  103. package/dist/cjs/routes/cctp/automatic.js +135 -0
  104. package/dist/cjs/routes/cctp/automatic.js.map +1 -0
  105. package/dist/cjs/routes/cctp/index.d.ts +3 -0
  106. package/dist/cjs/routes/cctp/index.d.ts.map +1 -0
  107. package/dist/cjs/routes/cctp/index.js +19 -0
  108. package/dist/cjs/routes/cctp/index.js.map +1 -0
  109. package/dist/cjs/routes/cctp/manual.d.ts +43 -0
  110. package/dist/cjs/routes/cctp/manual.d.ts.map +1 -0
  111. package/dist/cjs/routes/cctp/manual.js +113 -0
  112. package/dist/cjs/routes/cctp/manual.js.map +1 -0
  113. package/dist/cjs/routes/common.d.ts +13 -0
  114. package/dist/cjs/routes/common.d.ts.map +1 -0
  115. package/dist/cjs/routes/common.js +45 -0
  116. package/dist/cjs/routes/common.js.map +1 -0
  117. package/dist/cjs/routes/index.d.ts +9 -0
  118. package/dist/cjs/routes/index.d.ts.map +1 -0
  119. package/dist/cjs/routes/index.js +25 -0
  120. package/dist/cjs/routes/index.js.map +1 -0
  121. package/dist/cjs/routes/mock/automatic.d.ts +25 -0
  122. package/dist/cjs/routes/mock/automatic.d.ts.map +1 -0
  123. package/dist/cjs/routes/mock/automatic.js +88 -0
  124. package/dist/cjs/routes/mock/automatic.js.map +1 -0
  125. package/dist/cjs/routes/mock/index.d.ts +3 -0
  126. package/dist/cjs/routes/mock/index.d.ts.map +1 -0
  127. package/dist/cjs/routes/mock/index.js +19 -0
  128. package/dist/cjs/routes/mock/index.js.map +1 -0
  129. package/dist/cjs/routes/mock/manual.d.ts +24 -0
  130. package/dist/cjs/routes/mock/manual.d.ts.map +1 -0
  131. package/dist/cjs/routes/mock/manual.js +87 -0
  132. package/dist/cjs/routes/mock/manual.js.map +1 -0
  133. package/dist/cjs/routes/portico/automatic.d.ts +68 -0
  134. package/dist/cjs/routes/portico/automatic.d.ts.map +1 -0
  135. package/dist/cjs/routes/portico/automatic.js +208 -0
  136. package/dist/cjs/routes/portico/automatic.js.map +1 -0
  137. package/dist/cjs/routes/portico/index.d.ts +2 -0
  138. package/dist/cjs/routes/portico/index.d.ts.map +1 -0
  139. package/dist/cjs/routes/portico/index.js +18 -0
  140. package/dist/cjs/routes/portico/index.js.map +1 -0
  141. package/dist/cjs/routes/portico/manual.d.ts +61 -0
  142. package/dist/cjs/routes/portico/manual.d.ts.map +1 -0
  143. package/dist/cjs/routes/portico/manual.js +141 -0
  144. package/dist/cjs/routes/portico/manual.js.map +1 -0
  145. package/dist/cjs/routes/portico/porticoRoute.d.ts +56 -0
  146. package/dist/cjs/routes/portico/porticoRoute.d.ts.map +1 -0
  147. package/dist/cjs/routes/portico/porticoRoute.js +160 -0
  148. package/dist/cjs/routes/portico/porticoRoute.js.map +1 -0
  149. package/dist/cjs/routes/portico/protocol/abis.d.ts +4 -0
  150. package/dist/cjs/routes/portico/protocol/abis.d.ts.map +1 -0
  151. package/dist/cjs/routes/portico/protocol/abis.js +12 -0
  152. package/dist/cjs/routes/portico/protocol/abis.js.map +1 -0
  153. package/dist/cjs/routes/portico/protocol/consts.d.ts +18 -0
  154. package/dist/cjs/routes/portico/protocol/consts.d.ts.map +1 -0
  155. package/dist/cjs/routes/portico/protocol/consts.js +48 -0
  156. package/dist/cjs/routes/portico/protocol/consts.js.map +1 -0
  157. package/dist/cjs/routes/portico/protocol/porticoBridge.d.ts +17 -0
  158. package/dist/cjs/routes/portico/protocol/porticoBridge.d.ts.map +1 -0
  159. package/dist/cjs/routes/portico/protocol/porticoBridge.js +119 -0
  160. package/dist/cjs/routes/portico/protocol/porticoBridge.js.map +1 -0
  161. package/dist/cjs/routes/portico/protocol/types.d.ts +88 -0
  162. package/dist/cjs/routes/portico/protocol/types.d.ts.map +1 -0
  163. package/dist/cjs/routes/portico/protocol/types.js +3 -0
  164. package/dist/cjs/routes/portico/protocol/types.js.map +1 -0
  165. package/dist/cjs/routes/portico/protocol/utils.d.ts +18 -0
  166. package/dist/cjs/routes/portico/protocol/utils.d.ts.map +1 -0
  167. package/dist/cjs/routes/portico/protocol/utils.js +167 -0
  168. package/dist/cjs/routes/portico/protocol/utils.js.map +1 -0
  169. package/dist/cjs/routes/portico/utils.d.ts +1 -0
  170. package/dist/cjs/routes/portico/utils.d.ts.map +1 -0
  171. package/dist/cjs/routes/portico/utils.js +2 -0
  172. package/dist/cjs/routes/portico/utils.js.map +1 -0
  173. package/dist/cjs/routes/request.d.ts +25 -0
  174. package/dist/cjs/routes/request.d.ts.map +1 -0
  175. package/dist/cjs/routes/request.js +65 -0
  176. package/dist/cjs/routes/request.js.map +1 -0
  177. package/dist/cjs/routes/resolver.d.ts +15 -0
  178. package/dist/cjs/routes/resolver.d.ts.map +1 -0
  179. package/dist/cjs/routes/resolver.js +87 -0
  180. package/dist/cjs/routes/resolver.js.map +1 -0
  181. package/dist/cjs/routes/route.d.ts +46 -0
  182. package/dist/cjs/routes/route.d.ts.map +1 -0
  183. package/dist/cjs/routes/route.js +34 -0
  184. package/dist/cjs/routes/route.js.map +1 -0
  185. package/dist/cjs/routes/token.d.ts +12 -0
  186. package/dist/cjs/routes/token.d.ts.map +1 -0
  187. package/dist/cjs/routes/token.js +37 -0
  188. package/dist/cjs/routes/token.js.map +1 -0
  189. package/dist/cjs/routes/tokenBridge/automatic.d.ts +46 -0
  190. package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -0
  191. package/dist/cjs/routes/tokenBridge/automatic.js +145 -0
  192. package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -0
  193. package/dist/cjs/routes/tokenBridge/index.d.ts +3 -0
  194. package/dist/cjs/routes/tokenBridge/index.d.ts.map +1 -0
  195. package/dist/cjs/routes/tokenBridge/index.js +19 -0
  196. package/dist/cjs/routes/tokenBridge/index.js.map +1 -0
  197. package/dist/cjs/routes/tokenBridge/manual.d.ts +42 -0
  198. package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -0
  199. package/dist/cjs/routes/tokenBridge/manual.js +87 -0
  200. package/dist/cjs/routes/tokenBridge/manual.js.map +1 -0
  201. package/dist/cjs/routes/tokenBridgeRoute.d.ts +25 -0
  202. package/dist/cjs/routes/tokenBridgeRoute.d.ts.map +1 -0
  203. package/dist/cjs/routes/tokenBridgeRoute.js +78 -0
  204. package/dist/cjs/routes/tokenBridgeRoute.js.map +1 -0
  205. package/dist/cjs/routes/types.d.ts +44 -0
  206. package/dist/cjs/routes/types.d.ts.map +1 -0
  207. package/dist/cjs/routes/types.js +3 -0
  208. package/dist/cjs/routes/types.js.map +1 -0
  209. package/dist/cjs/tasks.d.ts +7 -0
  210. package/dist/cjs/tasks.d.ts.map +1 -0
  211. package/dist/cjs/tasks.js +65 -0
  212. package/dist/cjs/tasks.js.map +1 -0
  213. package/dist/cjs/types.d.ts +73 -0
  214. package/dist/cjs/types.d.ts.map +1 -0
  215. package/dist/cjs/types.js +35 -0
  216. package/dist/cjs/types.js.map +1 -0
  217. package/dist/cjs/whscan-api.d.ts +172 -0
  218. package/dist/cjs/whscan-api.d.ts.map +1 -0
  219. package/dist/cjs/whscan-api.js +243 -0
  220. package/dist/cjs/whscan-api.js.map +1 -0
  221. package/dist/cjs/wormhole.d.ts +198 -0
  222. package/dist/cjs/wormhole.d.ts.map +1 -0
  223. package/dist/cjs/wormhole.js +324 -0
  224. package/dist/cjs/wormhole.js.map +1 -0
  225. package/dist/cjs/wormholeTransfer.d.ts +78 -0
  226. package/dist/cjs/wormholeTransfer.d.ts.map +1 -0
  227. package/dist/cjs/wormholeTransfer.js +27 -0
  228. package/dist/cjs/wormholeTransfer.js.map +1 -0
  229. package/dist/esm/circle-api.d.ts +16 -0
  230. package/dist/esm/circle-api.d.ts.map +1 -0
  231. package/dist/esm/circle-api.js +39 -0
  232. package/dist/esm/circle-api.js.map +1 -0
  233. package/dist/esm/common.d.ts +4 -0
  234. package/dist/esm/common.d.ts.map +1 -0
  235. package/dist/esm/common.js +36 -0
  236. package/dist/esm/common.js.map +1 -0
  237. package/dist/esm/config.d.ts +34 -0
  238. package/dist/esm/config.d.ts.map +1 -0
  239. package/dist/esm/config.js +47 -0
  240. package/dist/esm/config.js.map +1 -0
  241. package/dist/esm/index.d.ts +15 -0
  242. package/dist/esm/index.d.ts.map +1 -0
  243. package/dist/esm/index.js +16 -0
  244. package/dist/esm/index.js.map +1 -0
  245. package/dist/esm/protocols/cctp/cctpTransfer.d.ts +41 -0
  246. package/dist/esm/protocols/cctp/cctpTransfer.d.ts.map +1 -0
  247. package/dist/esm/protocols/cctp/cctpTransfer.js +455 -0
  248. package/dist/esm/protocols/cctp/cctpTransfer.js.map +1 -0
  249. package/dist/esm/protocols/cctp/index.d.ts +2 -0
  250. package/dist/esm/protocols/cctp/index.d.ts.map +1 -0
  251. package/dist/esm/protocols/cctp/index.js +2 -0
  252. package/dist/esm/protocols/cctp/index.js.map +1 -0
  253. package/dist/esm/protocols/cctpTransfer.d.ts +41 -0
  254. package/dist/esm/protocols/cctpTransfer.d.ts.map +1 -0
  255. package/dist/esm/protocols/cctpTransfer.js +455 -0
  256. package/dist/esm/protocols/cctpTransfer.js.map +1 -0
  257. package/dist/esm/protocols/gateway/gatewayTransfer.d.ts +38 -0
  258. package/dist/esm/protocols/gateway/gatewayTransfer.d.ts.map +1 -0
  259. package/dist/esm/protocols/gateway/gatewayTransfer.js +356 -0
  260. package/dist/esm/protocols/gateway/gatewayTransfer.js.map +1 -0
  261. package/dist/esm/protocols/gateway/index.d.ts +2 -0
  262. package/dist/esm/protocols/gateway/index.d.ts.map +1 -0
  263. package/dist/esm/protocols/gateway/index.js +2 -0
  264. package/dist/esm/protocols/gateway/index.js.map +1 -0
  265. package/dist/esm/protocols/gatewayTransfer.d.ts +40 -0
  266. package/dist/esm/protocols/gatewayTransfer.d.ts.map +1 -0
  267. package/dist/esm/protocols/gatewayTransfer.js +402 -0
  268. package/dist/esm/protocols/gatewayTransfer.js.map +1 -0
  269. package/dist/esm/protocols/index.d.ts +5 -0
  270. package/dist/esm/protocols/index.d.ts.map +1 -0
  271. package/dist/esm/protocols/index.js +5 -0
  272. package/dist/esm/protocols/index.js.map +1 -0
  273. package/dist/esm/protocols/tokenBridge/automatic.d.ts +16 -0
  274. package/dist/esm/protocols/tokenBridge/automatic.d.ts.map +1 -0
  275. package/dist/esm/protocols/tokenBridge/automatic.js +73 -0
  276. package/dist/esm/protocols/tokenBridge/automatic.js.map +1 -0
  277. package/dist/esm/protocols/tokenBridge/index.d.ts +5 -0
  278. package/dist/esm/protocols/tokenBridge/index.d.ts.map +1 -0
  279. package/dist/esm/protocols/tokenBridge/index.js +5 -0
  280. package/dist/esm/protocols/tokenBridge/index.js.map +1 -0
  281. package/dist/esm/protocols/tokenBridge/manual.d.ts +16 -0
  282. package/dist/esm/protocols/tokenBridge/manual.d.ts.map +1 -0
  283. package/dist/esm/protocols/tokenBridge/manual.js +73 -0
  284. package/dist/esm/protocols/tokenBridge/manual.js.map +1 -0
  285. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts +20 -0
  286. package/dist/esm/protocols/tokenBridge/tokenTransfer.d.ts.map +1 -0
  287. package/dist/esm/protocols/tokenBridge/tokenTransfer.js +20 -0
  288. package/dist/esm/protocols/tokenBridge/tokenTransfer.js.map +1 -0
  289. package/dist/esm/protocols/tokenBridge/utils.d.ts +25 -0
  290. package/dist/esm/protocols/tokenBridge/utils.d.ts.map +1 -0
  291. package/dist/esm/protocols/tokenBridge/utils.js +323 -0
  292. package/dist/esm/protocols/tokenBridge/utils.js.map +1 -0
  293. package/dist/esm/protocols/tokenTransfer.d.ts +40 -0
  294. package/dist/esm/protocols/tokenTransfer.d.ts.map +1 -0
  295. package/dist/esm/protocols/tokenTransfer.js +468 -0
  296. package/dist/esm/protocols/tokenTransfer.js.map +1 -0
  297. package/dist/esm/protocols/tokenbridge/automatic.d.ts +16 -0
  298. package/dist/esm/protocols/tokenbridge/automatic.d.ts.map +1 -0
  299. package/dist/esm/protocols/tokenbridge/automatic.js +72 -0
  300. package/dist/esm/protocols/tokenbridge/automatic.js.map +1 -0
  301. package/dist/esm/protocols/tokenbridge/index.d.ts +2 -0
  302. package/dist/esm/protocols/tokenbridge/index.d.ts.map +1 -0
  303. package/dist/esm/protocols/tokenbridge/index.js +2 -0
  304. package/dist/esm/protocols/tokenbridge/index.js.map +1 -0
  305. package/dist/esm/protocols/tokenbridge/manual.d.ts +16 -0
  306. package/dist/esm/protocols/tokenbridge/manual.d.ts.map +1 -0
  307. package/dist/esm/protocols/tokenbridge/manual.js +72 -0
  308. package/dist/esm/protocols/tokenbridge/manual.js.map +1 -0
  309. package/dist/esm/protocols/tokenbridge/tokenTransfer.d.ts +37 -0
  310. package/dist/esm/protocols/tokenbridge/tokenTransfer.d.ts.map +1 -0
  311. package/dist/esm/protocols/tokenbridge/tokenTransfer.js +337 -0
  312. package/dist/esm/protocols/tokenbridge/tokenTransfer.js.map +1 -0
  313. package/dist/esm/protocols/wormholeTransfer.d.ts +20 -0
  314. package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -0
  315. package/dist/esm/protocols/wormholeTransfer.js +2 -0
  316. package/dist/esm/protocols/wormholeTransfer.js.map +1 -0
  317. package/dist/esm/routes/automaticTokenBridgeRoute.d.ts +28 -0
  318. package/dist/esm/routes/automaticTokenBridgeRoute.d.ts.map +1 -0
  319. package/dist/esm/routes/automaticTokenBridgeRoute.js +78 -0
  320. package/dist/esm/routes/automaticTokenBridgeRoute.js.map +1 -0
  321. package/dist/esm/routes/cctp/automatic.d.ts +46 -0
  322. package/dist/esm/routes/cctp/automatic.d.ts.map +1 -0
  323. package/dist/esm/routes/cctp/automatic.js +131 -0
  324. package/dist/esm/routes/cctp/automatic.js.map +1 -0
  325. package/dist/esm/routes/cctp/index.d.ts +3 -0
  326. package/dist/esm/routes/cctp/index.d.ts.map +1 -0
  327. package/dist/esm/routes/cctp/index.js +3 -0
  328. package/dist/esm/routes/cctp/index.js.map +1 -0
  329. package/dist/esm/routes/cctp/manual.d.ts +43 -0
  330. package/dist/esm/routes/cctp/manual.d.ts.map +1 -0
  331. package/dist/esm/routes/cctp/manual.js +109 -0
  332. package/dist/esm/routes/cctp/manual.js.map +1 -0
  333. package/dist/esm/routes/common.d.ts +13 -0
  334. package/dist/esm/routes/common.d.ts.map +1 -0
  335. package/dist/esm/routes/common.js +41 -0
  336. package/dist/esm/routes/common.js.map +1 -0
  337. package/dist/esm/routes/index.d.ts +9 -0
  338. package/dist/esm/routes/index.d.ts.map +1 -0
  339. package/dist/esm/routes/index.js +9 -0
  340. package/dist/esm/routes/index.js.map +1 -0
  341. package/dist/esm/routes/mock/automatic.d.ts +25 -0
  342. package/dist/esm/routes/mock/automatic.d.ts.map +1 -0
  343. package/dist/esm/routes/mock/automatic.js +84 -0
  344. package/dist/esm/routes/mock/automatic.js.map +1 -0
  345. package/dist/esm/routes/mock/index.d.ts +3 -0
  346. package/dist/esm/routes/mock/index.d.ts.map +1 -0
  347. package/dist/esm/routes/mock/index.js +3 -0
  348. package/dist/esm/routes/mock/index.js.map +1 -0
  349. package/dist/esm/routes/mock/manual.d.ts +24 -0
  350. package/dist/esm/routes/mock/manual.d.ts.map +1 -0
  351. package/dist/esm/routes/mock/manual.js +83 -0
  352. package/dist/esm/routes/mock/manual.js.map +1 -0
  353. package/dist/esm/routes/portico/automatic.d.ts +68 -0
  354. package/dist/esm/routes/portico/automatic.d.ts.map +1 -0
  355. package/dist/esm/routes/portico/automatic.js +204 -0
  356. package/dist/esm/routes/portico/automatic.js.map +1 -0
  357. package/dist/esm/routes/portico/index.d.ts +2 -0
  358. package/dist/esm/routes/portico/index.d.ts.map +1 -0
  359. package/dist/esm/routes/portico/index.js +2 -0
  360. package/dist/esm/routes/portico/index.js.map +1 -0
  361. package/dist/esm/routes/portico/manual.d.ts +61 -0
  362. package/dist/esm/routes/portico/manual.d.ts.map +1 -0
  363. package/dist/esm/routes/portico/manual.js +137 -0
  364. package/dist/esm/routes/portico/manual.js.map +1 -0
  365. package/dist/esm/routes/portico/utils.d.ts +1 -0
  366. package/dist/esm/routes/portico/utils.d.ts.map +1 -0
  367. package/dist/esm/routes/portico/utils.js +2 -0
  368. package/dist/esm/routes/portico/utils.js.map +1 -0
  369. package/dist/esm/routes/request.d.ts +25 -0
  370. package/dist/esm/routes/request.d.ts.map +1 -0
  371. package/dist/esm/routes/request.js +61 -0
  372. package/dist/esm/routes/request.js.map +1 -0
  373. package/dist/esm/routes/resolver.d.ts +15 -0
  374. package/dist/esm/routes/resolver.d.ts.map +1 -0
  375. package/dist/esm/routes/resolver.js +83 -0
  376. package/dist/esm/routes/resolver.js.map +1 -0
  377. package/dist/esm/routes/route.d.ts +46 -0
  378. package/dist/esm/routes/route.d.ts.map +1 -0
  379. package/dist/esm/routes/route.js +26 -0
  380. package/dist/esm/routes/route.js.map +1 -0
  381. package/dist/esm/routes/token.d.ts +12 -0
  382. package/dist/esm/routes/token.d.ts.map +1 -0
  383. package/dist/esm/routes/token.js +31 -0
  384. package/dist/esm/routes/token.js.map +1 -0
  385. package/dist/esm/routes/tokenBridge/automatic.d.ts +46 -0
  386. package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -0
  387. package/dist/esm/routes/tokenBridge/automatic.js +141 -0
  388. package/dist/esm/routes/tokenBridge/automatic.js.map +1 -0
  389. package/dist/esm/routes/tokenBridge/index.d.ts +3 -0
  390. package/dist/esm/routes/tokenBridge/index.d.ts.map +1 -0
  391. package/dist/esm/routes/tokenBridge/index.js +3 -0
  392. package/dist/esm/routes/tokenBridge/index.js.map +1 -0
  393. package/dist/esm/routes/tokenBridge/manual.d.ts +42 -0
  394. package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -0
  395. package/dist/esm/routes/tokenBridge/manual.js +83 -0
  396. package/dist/esm/routes/tokenBridge/manual.js.map +1 -0
  397. package/dist/esm/routes/tokenBridgeRoute.d.ts +25 -0
  398. package/dist/esm/routes/tokenBridgeRoute.d.ts.map +1 -0
  399. package/dist/esm/routes/tokenBridgeRoute.js +74 -0
  400. package/dist/esm/routes/tokenBridgeRoute.js.map +1 -0
  401. package/dist/esm/routes/types.d.ts +44 -0
  402. package/dist/esm/routes/types.d.ts.map +1 -0
  403. package/dist/esm/routes/types.js +2 -0
  404. package/dist/esm/routes/types.js.map +1 -0
  405. package/dist/esm/tasks.d.ts +7 -0
  406. package/dist/esm/tasks.d.ts.map +1 -0
  407. package/dist/esm/tasks.js +59 -0
  408. package/dist/esm/tasks.js.map +1 -0
  409. package/dist/esm/types.d.ts +73 -0
  410. package/dist/esm/types.d.ts.map +1 -0
  411. package/dist/esm/types.js +27 -0
  412. package/dist/esm/types.js.map +1 -0
  413. package/dist/esm/whscan-api.d.ts +172 -0
  414. package/dist/esm/whscan-api.d.ts.map +1 -0
  415. package/dist/esm/whscan-api.js +222 -0
  416. package/dist/esm/whscan-api.js.map +1 -0
  417. package/dist/esm/wormhole.d.ts +198 -0
  418. package/dist/esm/wormhole.d.ts.map +1 -0
  419. package/dist/esm/wormhole.js +320 -0
  420. package/dist/esm/wormhole.js.map +1 -0
  421. package/dist/esm/wormholeTransfer.d.ts +78 -0
  422. package/dist/esm/wormholeTransfer.d.ts.map +1 -0
  423. package/dist/esm/wormholeTransfer.js +21 -0
  424. package/dist/esm/wormholeTransfer.js.map +1 -0
  425. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  426. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  427. package/package.json +51 -0
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenTransfer = void 0;
4
+ const sdk_base_1 = require("@wormhole-foundation/sdk-base");
5
+ const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
6
+ const common_1 = require("../common");
7
+ const config_1 = require("../config");
8
+ const types_1 = require("../types");
9
+ const whscan_api_1 = require("../whscan-api");
10
+ const wormhole_1 = require("../wormhole");
11
+ // 8 is maximum precision supported by the token bridge VAA
12
+ const TOKEN_BRIDGE_MAX_DECIMALS = 8;
13
+ class TokenTransfer {
14
+ wh;
15
+ fromChain;
16
+ toChain;
17
+ // state machine tracker
18
+ _state;
19
+ // transfer details
20
+ transfer;
21
+ // txids, populated once transactions are submitted
22
+ txids = [];
23
+ // The corresponding vaa representing the TokenTransfer
24
+ // on the source chain (if its been completed and finalized)
25
+ attestations;
26
+ constructor(wh, transfer, fromChain, toChain) {
27
+ this._state = types_1.TransferState.Created;
28
+ this.wh = wh;
29
+ this.transfer = transfer;
30
+ this.fromChain = fromChain ?? wh.getChain(transfer.from.chain);
31
+ this.toChain = toChain ?? wh.getChain(transfer.to.chain);
32
+ }
33
+ getTransferState() {
34
+ return this._state;
35
+ }
36
+ static async from(wh, from, timeout = 6000, fromChain, toChain) {
37
+ if ((0, sdk_definitions_1.isTokenTransferDetails)(from)) {
38
+ fromChain = fromChain ?? wh.getChain(from.from.chain);
39
+ toChain = toChain ?? wh.getChain(from.to.chain);
40
+ // throws if invalid
41
+ TokenTransfer.validateTransferDetails(wh, from, fromChain, toChain);
42
+ // Apply hackery
43
+ from = {
44
+ ...from,
45
+ ...(await TokenTransfer.destinationOverrides(fromChain, toChain, from)),
46
+ };
47
+ return new TokenTransfer(wh, from, fromChain, toChain);
48
+ }
49
+ let tt;
50
+ if ((0, sdk_definitions_1.isWormholeMessageId)(from)) {
51
+ tt = await TokenTransfer.fromIdentifier(wh, from, timeout);
52
+ }
53
+ else if ((0, sdk_definitions_1.isTransactionIdentifier)(from)) {
54
+ tt = await TokenTransfer.fromTransaction(wh, from, timeout, fromChain);
55
+ }
56
+ else {
57
+ throw new Error("Invalid `from` parameter for TokenTransfer");
58
+ }
59
+ tt.fromChain = fromChain ?? wh.getChain(tt.transfer.from.chain);
60
+ tt.toChain = toChain ?? wh.getChain(tt.transfer.to.chain);
61
+ await tt.fetchAttestation(timeout);
62
+ return tt;
63
+ }
64
+ // init from the seq id
65
+ static async fromIdentifier(wh, id, timeout) {
66
+ const vaa = await TokenTransfer.getTransferVaa(wh, id, timeout);
67
+ const automatic = vaa.protocolName === "AutomaticTokenBridge";
68
+ // TODO: the `from.address` here is a lie, but we don't
69
+ // immediately have enough info to get the _correct_ one
70
+ let from = { chain: vaa.emitterChain, address: vaa.emitterAddress };
71
+ let { token, to } = vaa.payload;
72
+ const scaledAmount = sdk_base_1.amount.scale(sdk_base_1.amount.fromBaseUnits(token.amount, TOKEN_BRIDGE_MAX_DECIMALS), await wh.getDecimals(token.chain, token.address));
73
+ let nativeGasAmount = 0n;
74
+ if (automatic) {
75
+ nativeGasAmount = vaa.payload.payload.toNativeTokenAmount;
76
+ from = { chain: vaa.emitterChain, address: vaa.payload.from };
77
+ to = { chain: vaa.payload.to.chain, address: vaa.payload.payload.targetRecipient };
78
+ }
79
+ const details = {
80
+ token: token,
81
+ amount: sdk_base_1.amount.units(scaledAmount),
82
+ from,
83
+ to,
84
+ automatic,
85
+ nativeGas: nativeGasAmount,
86
+ };
87
+ // TODO: grab at least the init tx from the api
88
+ const tt = new TokenTransfer(wh, details);
89
+ tt.attestations = [{ id: id, attestation: vaa }];
90
+ tt._state = types_1.TransferState.Attested;
91
+ return tt;
92
+ }
93
+ static async fromTransaction(wh, from, timeout, fromChain) {
94
+ fromChain = fromChain ?? wh.getChain(from.chain);
95
+ const msg = await TokenTransfer.getTransferMessage(fromChain, from.txid, timeout);
96
+ const tt = await TokenTransfer.fromIdentifier(wh, msg, timeout);
97
+ tt.txids = [from];
98
+ return tt;
99
+ }
100
+ // start the WormholeTransfer by submitting transactions to the source chain
101
+ // returns a transaction hash
102
+ async initiateTransfer(signer) {
103
+ if (this._state !== types_1.TransferState.Created)
104
+ throw new Error("Invalid state transition in `initiateTransfer`");
105
+ this.txids = await TokenTransfer.transfer(this.fromChain, this.transfer, signer);
106
+ this._state = types_1.TransferState.SourceInitiated;
107
+ return this.txids.map(({ txid }) => txid);
108
+ }
109
+ // wait for the VAA to be ready
110
+ // returns the sequence number
111
+ async fetchAttestation(timeout) {
112
+ if (this._state < types_1.TransferState.SourceInitiated || this._state > types_1.TransferState.Attested)
113
+ throw new Error("Invalid state transition in `fetchAttestation`, expected at least `SourceInitiated`");
114
+ if (!this.attestations || this.attestations.length === 0) {
115
+ if (this.txids.length === 0)
116
+ throw new Error("No VAAs set and txids available to look them up");
117
+ // TODO: assuming the _last_ transaction in the list will contain the msg id
118
+ const txid = this.txids[this.txids.length - 1];
119
+ const msgId = await TokenTransfer.getTransferMessage(this.fromChain, txid.txid, timeout);
120
+ this.attestations = [{ id: msgId }];
121
+ }
122
+ for (const idx in this.attestations) {
123
+ // Check if we already have the VAA
124
+ if (this.attestations[idx].attestation)
125
+ continue;
126
+ this.attestations[idx].attestation = await TokenTransfer.getTransferVaa(this.wh, this.attestations[idx].id, timeout);
127
+ }
128
+ this._state = types_1.TransferState.Attested;
129
+ return this.attestations.map((vaa) => vaa.id);
130
+ }
131
+ // finish the WormholeTransfer by submitting transactions to the destination chain
132
+ // returns a transaction hash
133
+ async completeTransfer(signer) {
134
+ if (this._state < types_1.TransferState.Attested)
135
+ throw new Error("Invalid state transition, must be attested prior to calling `completeTransfer`.");
136
+ if (!this.attestations)
137
+ throw new Error("No VAA details available");
138
+ const { attestation } = this.attestations[0];
139
+ if (!attestation)
140
+ throw new Error(`No VAA found for ${this.attestations[0].id.sequence}`);
141
+ const redeemTxids = await TokenTransfer.redeem(this.toChain, attestation, signer);
142
+ this.txids.push(...redeemTxids);
143
+ this._state = types_1.TransferState.DestinationInitiated;
144
+ return redeemTxids.map(({ txid }) => txid);
145
+ }
146
+ // Static method to perform the transfer so a custom RPC may be used
147
+ // Note: this assumes the transfer has already been validated with `validateTransfer`
148
+ static async transfer(fromChain, transfer, signer) {
149
+ const senderAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
150
+ const token = (0, sdk_definitions_1.isTokenId)(transfer.token) ? transfer.token.address : transfer.token;
151
+ let xfer;
152
+ if (transfer.automatic) {
153
+ const tb = await fromChain.getAutomaticTokenBridge();
154
+ xfer = tb.transfer(senderAddress, transfer.to, token, transfer.amount, transfer.nativeGas);
155
+ }
156
+ else {
157
+ const tb = await fromChain.getTokenBridge();
158
+ xfer = tb.transfer(senderAddress, transfer.to, token, transfer.amount, transfer.payload);
159
+ }
160
+ return (0, common_1.signSendWait)(fromChain, xfer, signer);
161
+ }
162
+ // Static method to allow passing a custom RPC
163
+ static async redeem(toChain, vaa, signer) {
164
+ const signerAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
165
+ const xfer = vaa.protocolName === "AutomaticTokenBridge"
166
+ ? (await toChain.getAutomaticTokenBridge()).redeem(signerAddress, vaa)
167
+ : (await toChain.getTokenBridge()).redeem(signerAddress, vaa);
168
+ return (0, common_1.signSendWait)(toChain, xfer, signer);
169
+ }
170
+ static async isTransferComplete(toChain, vaa) {
171
+ // TODO: converter?
172
+ if (vaa.protocolName === "AutomaticTokenBridge")
173
+ vaa = (0, sdk_definitions_1.deserialize)("TokenBridge:TransferWithPayload", (0, sdk_definitions_1.serialize)(vaa));
174
+ const tb = await toChain.getTokenBridge();
175
+ return tb.isTransferCompleted(vaa);
176
+ }
177
+ static async getTransferMessage(chain, txid, timeout) {
178
+ // A Single wormhole message will be returned for a standard token transfer
179
+ const whm = await wormhole_1.Wormhole.parseMessageFromTx(chain, txid, timeout);
180
+ if (whm.length !== 1)
181
+ throw new Error("Expected a single Wormhole Message, got: " + whm.length);
182
+ return whm[0];
183
+ }
184
+ static async getTransferVaa(wh, key, timeout) {
185
+ const vaa = await wh.getVaa(key, sdk_definitions_1.TokenBridge.getTransferDiscriminator(), timeout);
186
+ if (!vaa)
187
+ throw new Error(`No VAA available after retries exhausted`);
188
+ // TODO: converter
189
+ // Check if its automatic and re-de-serialize
190
+ if (vaa.payloadName === "TransferWithPayload") {
191
+ const { chain, address } = vaa.payload.to;
192
+ const { tokenBridgeRelayer } = wh.config.chains[chain].contracts;
193
+ const relayerAddress = tokenBridgeRelayer ? (0, sdk_definitions_1.toUniversal)(chain, tokenBridgeRelayer) : null;
194
+ // If the target address is the relayer address, expect its an automatic token bridge vaa
195
+ if (!!relayerAddress && address.equals(relayerAddress)) {
196
+ return (0, sdk_definitions_1.deserialize)("AutomaticTokenBridge:TransferWithRelay", (0, sdk_definitions_1.serialize)(vaa));
197
+ }
198
+ }
199
+ return vaa;
200
+ }
201
+ // Lookup the token id for the destination chain given the source chain
202
+ // and token id
203
+ static async lookupDestinationToken(srcChain, dstChain, token) {
204
+ // that will be minted when the transfer is redeemed
205
+ let lookup;
206
+ if ((0, sdk_definitions_1.isNative)(token.address)) {
207
+ // if native, get the wrapped asset id
208
+ lookup = await srcChain.getNativeWrappedTokenId();
209
+ }
210
+ else {
211
+ try {
212
+ const tb = await srcChain.getTokenBridge();
213
+ // otherwise, check to see if it is a wrapped token locally
214
+ lookup = await tb.getOriginalAsset(token.address);
215
+ }
216
+ catch (e) {
217
+ // not a from-chain native wormhole-wrapped one
218
+ lookup = token;
219
+ }
220
+ }
221
+ // if the token id is actually native to the destination, return it
222
+ if (lookup.chain === dstChain.chain) {
223
+ return lookup;
224
+ }
225
+ // otherwise, figure out what the token address representing the wormhole-wrapped token we're transferring
226
+ const dstTb = await dstChain.getTokenBridge();
227
+ const dstAddress = await dstTb.getWrappedAsset(lookup);
228
+ return { chain: dstChain.chain, address: dstAddress };
229
+ }
230
+ static validateTransferDetails(wh, transfer, fromChain, toChain) {
231
+ if (transfer.amount === 0n)
232
+ throw new Error("Amount cannot be 0");
233
+ if (transfer.from.chain === transfer.to.chain)
234
+ throw new Error("Cannot transfer to the same chain");
235
+ fromChain = fromChain ?? wh.getChain(transfer.from.chain);
236
+ toChain = toChain ?? wh.getChain(transfer.to.chain);
237
+ if (transfer.automatic) {
238
+ if (transfer.payload)
239
+ throw new Error("Payload with automatic delivery is not supported");
240
+ if (!fromChain.supportsAutomaticTokenBridge())
241
+ throw new Error(`Automatic Token Bridge not supported on ${transfer.from.chain}`);
242
+ if (!toChain.supportsAutomaticTokenBridge())
243
+ throw new Error(`Automatic Token Bridge not supported on ${transfer.to.chain}`);
244
+ const nativeGas = transfer.nativeGas ?? 0n;
245
+ if (nativeGas > transfer.amount)
246
+ throw new Error(`Native gas amount > amount (${nativeGas} > ${transfer.amount})`);
247
+ }
248
+ else {
249
+ if (transfer.nativeGas)
250
+ throw new Error("Gas Dropoff is only supported for automatic transfers");
251
+ if (!fromChain.supportsTokenBridge())
252
+ throw new Error(`Token Bridge not supported on ${transfer.from.chain}`);
253
+ if (!toChain.supportsTokenBridge())
254
+ throw new Error(`Token Bridge not supported on ${transfer.to.chain}`);
255
+ }
256
+ }
257
+ static async quoteTransfer(wh, srcChain, dstChain, transfer) {
258
+ const srcDecimals = await srcChain.getDecimals(transfer.token.address);
259
+ const srcAmount = sdk_base_1.amount.fromBaseUnits(transfer.amount, srcDecimals);
260
+ const srcAmountTruncated = sdk_base_1.amount.truncate(srcAmount, TOKEN_BRIDGE_MAX_DECIMALS);
261
+ const srcToken = (0, sdk_definitions_1.isNative)(transfer.token.address)
262
+ ? await srcChain.getNativeWrappedTokenId()
263
+ : transfer.token;
264
+ const srcTokenUniversalAddress = (0, sdk_definitions_1.universalAddress)(srcToken);
265
+ // Ensure the transfer would not violate governor transfer limits
266
+ const [tokens, limits] = await Promise.all([
267
+ (0, whscan_api_1.getGovernedTokens)(wh.config.api),
268
+ (0, whscan_api_1.getGovernorLimits)(wh.config.api),
269
+ ]);
270
+ if (limits !== null &&
271
+ srcChain.chain in limits &&
272
+ tokens !== null &&
273
+ srcChain.chain in tokens &&
274
+ srcTokenUniversalAddress in tokens[srcChain.chain]) {
275
+ const limit = limits[srcChain.chain];
276
+ const tokenPrice = tokens[srcChain.chain][srcTokenUniversalAddress];
277
+ const notionalTransferAmt = tokenPrice * sdk_base_1.amount.whole(srcAmountTruncated);
278
+ if (limit.maxSize && notionalTransferAmt > limit.maxSize)
279
+ throw new Error(`Transfer amount exceeds maximum size: ${notionalTransferAmt} > ${limit.maxSize}`);
280
+ if (notionalTransferAmt > limit.available)
281
+ throw new Error(`Transfer amount exceeds available governed amount: ${notionalTransferAmt} > ${limit.available}`);
282
+ }
283
+ const dstToken = await this.lookupDestinationToken(srcChain, dstChain, transfer.token);
284
+ const dstDecimals = await dstChain.getDecimals(dstToken.address);
285
+ const dstAmountReceivable = sdk_base_1.amount.scale(srcAmountTruncated, dstDecimals);
286
+ if (!transfer.automatic) {
287
+ return {
288
+ sourceToken: { token: srcToken, amount: sdk_base_1.amount.units(srcAmountTruncated) },
289
+ destinationToken: { token: dstToken, amount: sdk_base_1.amount.units(dstAmountReceivable) },
290
+ };
291
+ }
292
+ // Otherwise automatic
293
+ // The fee is removed from the amount transferred
294
+ // quoted on the source chain
295
+ const stb = await srcChain.getAutomaticTokenBridge();
296
+ const fee = await stb.getRelayerFee(transfer.from.address, transfer.to, srcToken.address);
297
+ const feeAmountDest = sdk_base_1.amount.scale(sdk_base_1.amount.truncate(sdk_base_1.amount.fromBaseUnits(fee, srcDecimals), TOKEN_BRIDGE_MAX_DECIMALS), dstDecimals);
298
+ const dstNativeGasAmountRequested = transfer.nativeGas ?? 0n;
299
+ // The expected destination gas can be pulled from the destination token bridge
300
+ let destinationNativeGas = 0n;
301
+ if (transfer.nativeGas) {
302
+ const dtb = await dstChain.getAutomaticTokenBridge();
303
+ // There is a limit applied to the amount of the source
304
+ // token that may be swapped for native gas on the destination
305
+ const [maxNativeAmountIn, _destinationNativeGas] = await Promise.all([
306
+ dtb.maxSwapAmount(dstToken.address),
307
+ // Get the actual amount we should receive
308
+ dtb.nativeTokenAmount(dstToken.address, dstNativeGasAmountRequested),
309
+ ]);
310
+ if (dstNativeGasAmountRequested > maxNativeAmountIn)
311
+ throw new Error(`Native gas amount exceeds maximum swap amount: ${sdk_base_1.amount.fmt(dstNativeGasAmountRequested, dstDecimals)}>${sdk_base_1.amount.fmt(maxNativeAmountIn, dstDecimals)}`);
312
+ destinationNativeGas = _destinationNativeGas;
313
+ }
314
+ const destAmountLessFee = sdk_base_1.amount.units(dstAmountReceivable) - dstNativeGasAmountRequested - sdk_base_1.amount.units(feeAmountDest);
315
+ return {
316
+ sourceToken: {
317
+ token: srcToken,
318
+ amount: sdk_base_1.amount.units(srcAmountTruncated),
319
+ },
320
+ destinationToken: { token: dstToken, amount: destAmountLessFee },
321
+ relayFee: { token: srcToken, amount: fee },
322
+ destinationNativeGas,
323
+ };
324
+ }
325
+ static async destinationOverrides(srcChain, dstChain, transfer) {
326
+ const _transfer = { ...transfer };
327
+ // Bit of (temporary) hackery until solana contracts support being
328
+ // sent a VAA with the primary address
329
+ // Note: Do _not_ override if automatic or if the destination token is native
330
+ // gas token
331
+ if (transfer.to.chain === "Solana" && !_transfer.automatic) {
332
+ const destinationToken = await TokenTransfer.lookupDestinationToken(srcChain, dstChain, _transfer.token);
333
+ // TODO: If the token is native, no need to overwrite the destination address check for native
334
+ //if (!destinationToken.address.equals((await dstChain.getNativeWrappedTokenId()).address))
335
+ _transfer.to = await dstChain.getTokenAccount(_transfer.to.address, destinationToken.address);
336
+ }
337
+ if (_transfer.to.chain === "Sei") {
338
+ if (_transfer.to.chain === "Sei" && _transfer.payload)
339
+ throw new Error("Arbitrary payloads unsupported for Sei");
340
+ // For sei, we reserve the payload for a token transfer through the sei bridge.
341
+ _transfer.payload = sdk_base_1.encoding.bytes.encode(JSON.stringify({
342
+ basic_recipient: {
343
+ recipient: sdk_base_1.encoding.b64.encode(_transfer.to.address.toString()),
344
+ },
345
+ }));
346
+ const translator = dstChain.config.contracts.translator;
347
+ if (translator === undefined || translator === "")
348
+ throw new Error("Unexpected empty translator address");
349
+ _transfer.to = wormhole_1.Wormhole.chainAddress(_transfer.to.chain, translator);
350
+ }
351
+ return _transfer;
352
+ }
353
+ static getReceipt(xfer) {
354
+ const { transfer } = xfer;
355
+ const from = transfer.from.chain;
356
+ const to = transfer.to.chain;
357
+ let receipt = {
358
+ from: from,
359
+ to: to,
360
+ state: types_1.TransferState.Created,
361
+ };
362
+ const originTxs = xfer.txids.filter((txid) => txid.chain === transfer.from.chain);
363
+ if (originTxs.length > 0) {
364
+ receipt = {
365
+ ...receipt,
366
+ state: types_1.TransferState.SourceInitiated,
367
+ originTxs: originTxs,
368
+ };
369
+ }
370
+ const att = xfer.attestations && xfer.attestations.length > 0 ? xfer.attestations[0] : undefined;
371
+ const attestation = att && att.id ? { id: att.id, attestation: att.attestation } : undefined;
372
+ if (attestation) {
373
+ if (attestation.id) {
374
+ receipt = {
375
+ ...receipt,
376
+ state: types_1.TransferState.SourceFinalized,
377
+ attestation: { id: attestation.id },
378
+ };
379
+ if (attestation.attestation) {
380
+ receipt = {
381
+ ...receipt,
382
+ state: types_1.TransferState.Attested,
383
+ attestation: { id: attestation.id, attestation: attestation.attestation },
384
+ };
385
+ }
386
+ }
387
+ }
388
+ const destinationTxs = xfer.txids.filter((txid) => txid.chain === transfer.to.chain);
389
+ if (destinationTxs.length > 0) {
390
+ receipt = {
391
+ ...receipt,
392
+ state: types_1.TransferState.DestinationInitiated,
393
+ destinationTxs: destinationTxs,
394
+ };
395
+ }
396
+ return receipt;
397
+ }
398
+ // AsyncGenerator fn that produces status updates through an async generator
399
+ // eventually producing a receipt
400
+ // can be called repeatedly so the receipt is updated as it moves through the
401
+ // steps of the transfer
402
+ static async *track(wh, receipt, timeout = config_1.DEFAULT_TASK_TIMEOUT, fromChain, toChain) {
403
+ const start = Date.now();
404
+ const leftover = (start, max) => Math.max(max - (Date.now() - start), 0);
405
+ fromChain = fromChain ?? wh.getChain(receipt.from);
406
+ toChain = toChain ?? wh.getChain(receipt.to);
407
+ // Check the source chain for initiation transaction
408
+ // and capture the message id
409
+ if ((0, types_1.isSourceInitiated)(receipt)) {
410
+ if (receipt.originTxs.length === 0)
411
+ throw "Origin transactions required to fetch message id";
412
+ const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
413
+ const msg = await TokenTransfer.getTransferMessage(fromChain, txid, leftover(start, timeout));
414
+ receipt = {
415
+ ...receipt,
416
+ state: types_1.TransferState.SourceFinalized,
417
+ attestation: { id: msg },
418
+ };
419
+ yield receipt;
420
+ }
421
+ // If the source is finalized, we need to fetch the signed attestation
422
+ // so that we may deliver it to the destination chain
423
+ // or at least track the transfer through its progress
424
+ if ((0, types_1.isSourceFinalized)(receipt)) {
425
+ if (!receipt.attestation.id)
426
+ throw "Attestation id required to fetch attestation";
427
+ const { id } = receipt.attestation;
428
+ const attestation = await TokenTransfer.getTransferVaa(wh, id, leftover(start, timeout));
429
+ receipt = {
430
+ ...receipt,
431
+ attestation: { id, attestation },
432
+ state: types_1.TransferState.Attested,
433
+ };
434
+ yield receipt;
435
+ }
436
+ // First try to grab the tx status from the API
437
+ // Note: this requires a subsequent async step on the backend
438
+ // to have the dest txid populated, so it may be delayed by some time
439
+ if ((0, types_1.isAttested)(receipt) || (0, types_1.isSourceFinalized)(receipt)) {
440
+ if (!receipt.attestation.id)
441
+ throw "Attestation id required to fetch redeem tx";
442
+ const { id } = receipt.attestation;
443
+ const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
444
+ if (txStatus && txStatus.globalTx?.destinationTx?.txHash) {
445
+ const { chainId, txHash } = txStatus.globalTx.destinationTx;
446
+ receipt = {
447
+ ...receipt,
448
+ destinationTxs: [{ chain: (0, sdk_base_1.toChain)(chainId), txid: txHash }],
449
+ state: types_1.TransferState.DestinationFinalized,
450
+ };
451
+ }
452
+ yield receipt;
453
+ }
454
+ // Fall back to asking the destination chain if this VAA has been redeemed
455
+ // Note: We do not get any destinationTxs with this method
456
+ if ((0, types_1.isAttested)(receipt)) {
457
+ if (!receipt.attestation.attestation)
458
+ throw "Signed Attestation required to check for redeem";
459
+ let isComplete = await TokenTransfer.isTransferComplete(toChain, receipt.attestation.attestation);
460
+ if (isComplete) {
461
+ receipt = {
462
+ ...receipt,
463
+ state: types_1.TransferState.DestinationFinalized,
464
+ };
465
+ }
466
+ yield receipt;
467
+ }
468
+ yield receipt;
469
+ }
470
+ }
471
+ exports.TokenTransfer = TokenTransfer;
472
+ //# sourceMappingURL=tokenTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransfer.js","sourceRoot":"","sources":["../../../src/protocols/tokenTransfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Chain, Network, Platform } from "@wormhole-foundation/sdk-base";
2
+ import { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenTransferDetails, TransactionId, TxHash } from "@wormhole-foundation/sdk-definitions";
3
+ import { TransferState } from "../../types";
4
+ import { WormholeTransfer } from "../wormholeTransfer";
5
+ import { TokenTransfer } from "./tokenTransfer";
6
+ type PN = "AutomaticTokenBridge";
7
+ export declare class AutomaticTokenTransfer<N extends Network> extends TokenTransfer<N, PN> implements WormholeTransfer<PN> {
8
+ getTransferState(): TransferState;
9
+ initiateTransfer(signer: Signer): Promise<TxHash[]>;
10
+ fetchAttestation(timeout?: number): Promise<AttestationId[]>;
11
+ completeTransfer(signer: Signer): Promise<TxHash[]>;
12
+ static transfer<N extends Network>(chainCtx: ChainContext<N, Platform, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
13
+ static redeem<N extends Network>(toChain: ChainContext<N, Platform, Chain>, vaa: AutomaticTokenBridge.VAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=automatic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/automatic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,MAAM,EAEP,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAGL,aAAa,EAMd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,KAAK,EAAE,GAAG,sBAAsB,CAAC;AACjC,qBAAa,sBAAsB,CAAC,CAAC,SAAS,OAAO,CACnD,SAAQ,aAAa,CAAC,CAAC,EAAE,EAAE,CAC3B,YAAW,gBAAgB,CAAC,EAAE,CAAC;IAE/B,gBAAgB,IAAI,aAAa;IAI3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWnD,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAkC5D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;WAuB5C,QAAQ,CAAC,CAAC,SAAS,OAAO,EACrC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC1C,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GACvB,OAAO,CAAC,aAAa,EAAE,CAAC;WAad,MAAM,CAAC,CAAC,SAAS,OAAO,EACnC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EACzC,GAAG,EAAE,oBAAoB,CAAC,GAAG,EAC7B,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GACvB,OAAO,CAAC,aAAa,EAAE,CAAC;CAM5B"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutomaticTokenTransfer = void 0;
4
+ const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
5
+ const common_1 = require("../../common");
6
+ const types_1 = require("../../types");
7
+ const tokenTransfer_1 = require("./tokenTransfer");
8
+ class AutomaticTokenTransfer extends tokenTransfer_1.TokenTransfer {
9
+ getTransferState() {
10
+ return this.receipt.state;
11
+ }
12
+ async initiateTransfer(signer) {
13
+ if (!(0, types_1.isCreated)(this.receipt))
14
+ throw (0, types_1.ErrInvalidStateTransition)("Expected transfer details to be created");
15
+ const originTxs = await AutomaticTokenTransfer.transfer(this.fromChain, this.transfer, signer);
16
+ const state = types_1.TransferState.SourceInitiated;
17
+ this.receipt = { ...this.receipt, state, originTxs };
18
+ return originTxs.map(({ txid }) => txid);
19
+ }
20
+ async fetchAttestation(timeout) {
21
+ if (!(0, types_1.hasSourceInitiated)(this.receipt))
22
+ throw (0, types_1.ErrInvalidStateTransition)("Expected source to be initiated");
23
+ // We already have it, just return it
24
+ if ((0, types_1.hasAttested)(this.receipt))
25
+ return [this.receipt.attestation.id];
26
+ // We dont have the message id yet, grab it
27
+ if (!(0, types_1.hasSourceFinalized)(this.receipt)) {
28
+ const { originTxs } = this.receipt;
29
+ const txid = originTxs[originTxs.length - 1];
30
+ const msgId = await tokenTransfer_1.TokenTransfer.getTransferMessage(this.fromChain, txid.txid, timeout);
31
+ this.receipt = {
32
+ ...this.receipt,
33
+ state: types_1.TransferState.SourceFinalized,
34
+ attestation: { id: msgId },
35
+ };
36
+ }
37
+ // No signed attestation yet, try to grab it
38
+ if (!(0, types_1.hasAttested)(this.receipt)) {
39
+ const vaa = await tokenTransfer_1.TokenTransfer.getTransferVaa(this.wh, this.receipt.attestation.id, timeout);
40
+ this.receipt = {
41
+ ...this.receipt,
42
+ state: types_1.TransferState.Attested,
43
+ attestation: { id: this.receipt.attestation.id, attestation: vaa },
44
+ };
45
+ }
46
+ return [this.receipt.attestation.id];
47
+ }
48
+ // finish the WormholeTransfer by submitting transactions to the destination chain
49
+ // returns a transaction hash
50
+ async completeTransfer(signer) {
51
+ if (!(0, types_1.isAttested)(this.receipt))
52
+ throw (0, types_1.ErrInvalidStateTransition)("Expected transfer to be attested");
53
+ const { attestation: { attestation: vaa }, } = this.receipt;
54
+ const destinationTxs = await AutomaticTokenTransfer.redeem(this.toChain, vaa, signer);
55
+ this.receipt = {
56
+ ...this.receipt,
57
+ state: types_1.TransferState.DestinationInitiated,
58
+ destinationTxs,
59
+ };
60
+ return this.receipt.destinationTxs.map(({ txid }) => txid);
61
+ }
62
+ static async transfer(chainCtx, transfer, signer) {
63
+ const senderAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
64
+ const tb = await chainCtx.getAutomaticTokenBridge();
65
+ const xfer = tb.transfer(senderAddress, transfer.to, transfer.token.address, transfer.amount, transfer.nativeGas);
66
+ return (0, common_1.signSendWait)(chainCtx, xfer, signer);
67
+ }
68
+ static async redeem(toChain, vaa, signer) {
69
+ const signerAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
70
+ const tb = await toChain.getAutomaticTokenBridge();
71
+ const xfer = tb.redeem(signerAddress, vaa);
72
+ return (0, common_1.signSendWait)(toChain, xfer, signer);
73
+ }
74
+ }
75
+ exports.AutomaticTokenTransfer = AutomaticTokenTransfer;
76
+ //# sourceMappingURL=automatic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/automatic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./tokenTransfer";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./tokenTransfer"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}