@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,72 @@
1
+ import { toNative, } from "@wormhole-foundation/sdk-definitions";
2
+ import { signSendWait } from "../../common";
3
+ import { ErrInvalidStateTransition, TransferState, hasAttested, hasSourceFinalized, hasSourceInitiated, isAttested, isCreated, } from "../../types";
4
+ import { TokenTransfer } from "./tokenTransfer";
5
+ export class ManualTokenTransfer extends TokenTransfer {
6
+ getTransferState() {
7
+ return this.receipt.state;
8
+ }
9
+ async initiateTransfer(signer) {
10
+ if (!isCreated(this.receipt))
11
+ throw ErrInvalidStateTransition("Expected transfer details to be created");
12
+ const originTxs = await ManualTokenTransfer.transfer(this.fromChain, this.transfer, signer);
13
+ const state = TransferState.SourceInitiated;
14
+ this.receipt = { ...this.receipt, state, originTxs };
15
+ return originTxs.map(({ txid }) => txid);
16
+ }
17
+ async fetchAttestation(timeout) {
18
+ if (!hasSourceInitiated(this.receipt))
19
+ throw ErrInvalidStateTransition("Expected source to be initiated");
20
+ // We already have it, just return it
21
+ if (hasAttested(this.receipt))
22
+ return [this.receipt.attestation.id];
23
+ // We dont have the message id yet, grab it
24
+ if (!hasSourceFinalized(this.receipt)) {
25
+ const { originTxs } = this.receipt;
26
+ const txid = originTxs[originTxs.length - 1];
27
+ const msgId = await TokenTransfer.getTransferMessage(this.fromChain, txid.txid, timeout);
28
+ this.receipt = {
29
+ ...this.receipt,
30
+ state: TransferState.SourceFinalized,
31
+ attestation: { id: msgId },
32
+ };
33
+ }
34
+ // No signed attestation yet, try to grab it
35
+ if (!hasAttested(this.receipt)) {
36
+ const vaa = await TokenTransfer.getTransferVaa(this.wh, this.receipt.attestation.id, timeout);
37
+ this.receipt = {
38
+ ...this.receipt,
39
+ state: TransferState.Attested,
40
+ attestation: { id: this.receipt.attestation.id, attestation: vaa },
41
+ };
42
+ }
43
+ return [this.receipt.attestation.id];
44
+ }
45
+ // finish the WormholeTransfer by submitting transactions to the destination chain
46
+ // returns a transaction hash
47
+ async completeTransfer(signer) {
48
+ if (!isAttested(this.receipt))
49
+ throw ErrInvalidStateTransition("Expected transfer to be attested");
50
+ const { attestation: { attestation: vaa }, } = this.receipt;
51
+ const destinationTxs = await ManualTokenTransfer.redeem(this.toChain, vaa, signer);
52
+ this.receipt = {
53
+ ...this.receipt,
54
+ state: TransferState.DestinationInitiated,
55
+ destinationTxs,
56
+ };
57
+ return this.receipt.destinationTxs.map(({ txid }) => txid);
58
+ }
59
+ static async transfer(chainCtx, transfer, signer) {
60
+ const senderAddress = toNative(signer.chain(), signer.address());
61
+ const tb = await chainCtx.getTokenBridge();
62
+ const xfer = tb.transfer(senderAddress, transfer.to, transfer.token.address, transfer.amount, transfer.payload);
63
+ return signSendWait(chainCtx, xfer, signer);
64
+ }
65
+ static async redeem(toChain, vaa, signer) {
66
+ const signerAddress = toNative(signer.chain(), signer.address());
67
+ const tb = await toChain.getTokenBridge();
68
+ const xfer = tb.redeem(signerAddress, vaa);
69
+ return signSendWait(toChain, xfer, signer);
70
+ }
71
+ }
72
+ //# sourceMappingURL=manual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/manual.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Chain, ChainToPlatform, Network, Platform } from "@wormhole-foundation/sdk-base";
2
+ import { AttestationId, AutomaticTokenBridge, ChainContext, ProtocolName, Signer, TokenBridge, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
3
+ import { AttestationReceipt, TransferQuote, TransferReceipt } from "../../types";
4
+ import { Wormhole } from "../../wormhole";
5
+ export type TokenTransferProtocol = "TokenBridge" | "AutomaticTokenBridge";
6
+ export type TokenTransferVAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
7
+ export type TokenTransferAttestationReceipt = AttestationReceipt<TokenTransferProtocol>;
8
+ export type TokenTransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = TransferReceipt<TokenTransferAttestationReceipt, SC, DC>;
9
+ export declare const truncate: (amt: bigint, decimals: bigint) => bigint;
10
+ export declare const scale: (amt: bigint, decimals: bigint) => bigint;
11
+ export declare const _dedust: (decimals: bigint) => (amt: bigint) => bigint;
12
+ export declare const _mintable: (srcDecimals: bigint, dstDecimals: bigint) => (amt: bigint) => bigint;
13
+ export declare abstract class TokenTransfer<N extends Network = Network, PN extends ProtocolName = ProtocolName> {
14
+ wh: Wormhole<N>;
15
+ fromChain: ChainContext<N, Platform, Chain>;
16
+ toChain: ChainContext<N, Platform, Chain>;
17
+ transfer: TokenTransferDetails;
18
+ receipt: TransferReceipt<AttestationReceipt<PN>>;
19
+ constructor(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>);
20
+ abstract initiateTransfer(signer: Signer): Promise<TxHash[]>;
21
+ abstract fetchAttestation(timeout?: number): Promise<AttestationId[]>;
22
+ abstract completeTransfer(signer: Signer): Promise<TxHash[]>;
23
+ static from<N extends Network>(wh: Wormhole<N>, from: TokenTransferDetails, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
24
+ static from<N extends Network>(wh: Wormhole<N>, from: WormholeMessageId, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
25
+ static from<N extends Network>(wh: Wormhole<N>, from: TransactionId, timeout?: number, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): Promise<TokenTransfer<N>>;
26
+ private static fromIdentifier;
27
+ private static fromTransaction;
28
+ static getTransferMessage<N extends Network>(chain: ChainContext<N, Platform, Chain>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
29
+ static getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransferVAA>;
30
+ static lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, ChainToPlatform<SC>, SC>, dstChain: ChainContext<N, ChainToPlatform<DC>, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
31
+ static validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Platform, Chain>, toChain?: ChainContext<N, Platform, Chain>): void;
32
+ static quoteTransfer<N extends Network>(srcChain: ChainContext<N, Platform, Chain>, dstChain: ChainContext<N, Platform, Chain>, transfer: TokenTransferDetails): Promise<TransferQuote>;
33
+ static isTransferComplete<N extends Network>(toChain: ChainContext<N, Platform, Chain>, vaa: TokenTransferVAA): Promise<boolean>;
34
+ static track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, ChainToPlatform<SC>, SC>, toChain?: ChainContext<N, ChainToPlatform<DC>, DC>): AsyncGenerator<TokenTransferReceipt<SC, DC>>;
35
+ static destinationOverrides<N extends Network>(srcChain: ChainContext<N, Platform, Chain>, dstChain: ChainContext<N, Platform, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
36
+ }
37
+ //# sourceMappingURL=tokenTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/tokenTransfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,337 @@
1
+ import { encoding, toChain as toChainName, } from "@wormhole-foundation/sdk-base";
2
+ import { TokenBridge, deserialize, isNative, isTokenTransferDetails, isTransactionIdentifier, isWormholeMessageId, serialize, toUniversal, } from "@wormhole-foundation/sdk-definitions";
3
+ import { DEFAULT_TASK_TIMEOUT } from "../../config";
4
+ import { ErrInvalidStateTransition, TransferState, isAttested, isSourceFinalized, isSourceInitiated, } from "../../types";
5
+ import { Wormhole } from "../../wormhole";
6
+ import { AutomaticTokenTransfer } from "./automatic";
7
+ import { ManualTokenTransfer } from "./manual";
8
+ // truncate the amount for over-the-wire max representation
9
+ export const truncate = (amt, decimals) => decimals > 8 ? amt / 10n ** (decimals - 8n) : amt;
10
+ // scale by number of decimals, pair with truncate
11
+ export const scale = (amt, decimals) => decimals > 8 ? amt * 10n ** (decimals - 8n) : amt;
12
+ // dedust for source using the number of decimals on the source chain
13
+ // but scale back to original decimals
14
+ export const _dedust = (decimals) => (amt) => scale(truncate(amt, decimals), decimals);
15
+ // truncate and rescale to fit destination token
16
+ export const _mintable = (srcDecimals, dstDecimals) => (amt) => scale(truncate(amt, srcDecimals), dstDecimals);
17
+ export class TokenTransfer {
18
+ wh;
19
+ fromChain;
20
+ toChain;
21
+ // transfer details
22
+ transfer;
23
+ receipt;
24
+ constructor(wh, transfer, fromChain, toChain) {
25
+ this.wh = wh;
26
+ this.transfer = transfer;
27
+ this.fromChain = fromChain ?? wh.getChain(transfer.from.chain);
28
+ this.toChain = toChain ?? wh.getChain(transfer.to.chain);
29
+ this.receipt = {
30
+ from: transfer.from.chain,
31
+ to: transfer.to.chain,
32
+ state: TransferState.Created,
33
+ };
34
+ }
35
+ static async from(wh, from, timeout = 6000, fromChain, toChain) {
36
+ if (isTokenTransferDetails(from)) {
37
+ fromChain = fromChain ?? wh.getChain(from.from.chain);
38
+ toChain = toChain ?? wh.getChain(from.to.chain);
39
+ // throws if invalid
40
+ TokenTransfer.validateTransferDetails(wh, from, fromChain, toChain);
41
+ // Apply hackery
42
+ from = {
43
+ ...from,
44
+ ...(await TokenTransfer.destinationOverrides(fromChain, toChain, from)),
45
+ };
46
+ if (from.automatic) {
47
+ return new AutomaticTokenTransfer(wh, from, fromChain, toChain);
48
+ }
49
+ else {
50
+ return new ManualTokenTransfer(wh, from, fromChain, toChain);
51
+ }
52
+ }
53
+ let tt;
54
+ if (isWormholeMessageId(from)) {
55
+ tt = await TokenTransfer.fromIdentifier(wh, from, timeout);
56
+ }
57
+ else if (isTransactionIdentifier(from)) {
58
+ tt = await TokenTransfer.fromTransaction(wh, from, timeout, fromChain);
59
+ }
60
+ else {
61
+ throw new Error("Invalid `from` parameter for TokenTransfer");
62
+ }
63
+ tt.fromChain = fromChain ?? wh.getChain(tt.transfer.from.chain);
64
+ tt.toChain = toChain ?? wh.getChain(tt.transfer.to.chain);
65
+ await tt.fetchAttestation(timeout);
66
+ return tt;
67
+ }
68
+ // init from the seq id
69
+ static async fromIdentifier(wh, id, timeout) {
70
+ const vaa = await TokenTransfer.getTransferVaa(wh, id, timeout);
71
+ const automatic = vaa.protocolName === "AutomaticTokenBridge";
72
+ // TODO: the `from.address` here is a lie, but we don't
73
+ // immediately have enough info to get the _correct_ one
74
+ let from = { chain: vaa.emitterChain, address: vaa.emitterAddress };
75
+ let { token, to } = vaa.payload;
76
+ const rescale = (amt, decimals) => decimals > 8 ? amt * 10n ** (decimals - 8n) : amt;
77
+ const amount = rescale(token.amount, await wh.getDecimals(token.chain, token.address));
78
+ let nativeGasAmount = 0n;
79
+ if (automatic) {
80
+ nativeGasAmount = vaa.payload.payload.toNativeTokenAmount;
81
+ from = { chain: vaa.emitterChain, address: vaa.payload.from };
82
+ to = { chain: vaa.payload.to.chain, address: vaa.payload.payload.targetRecipient };
83
+ }
84
+ const details = {
85
+ token,
86
+ amount,
87
+ from,
88
+ to,
89
+ automatic,
90
+ nativeGas: nativeGasAmount,
91
+ };
92
+ let tt;
93
+ if (automatic) {
94
+ tt = new AutomaticTokenTransfer(wh, details);
95
+ }
96
+ else {
97
+ tt = new ManualTokenTransfer(wh, details);
98
+ }
99
+ tt.receipt = {
100
+ ...tt.receipt,
101
+ state: TransferState.Attested,
102
+ attestation: { id: id, attestation: vaa },
103
+ };
104
+ return tt;
105
+ }
106
+ static async fromTransaction(wh, from, timeout, fromChain) {
107
+ fromChain = fromChain ?? wh.getChain(from.chain);
108
+ const msg = await TokenTransfer.getTransferMessage(fromChain, from.txid, timeout);
109
+ return await TokenTransfer.fromIdentifier(wh, msg, timeout);
110
+ }
111
+ static async getTransferMessage(chain, txid, timeout) {
112
+ const whm = await Wormhole.parseMessageFromTx(chain, txid, timeout);
113
+ if (whm.length !== 1)
114
+ throw new Error("Expected a single Wormhole Message, got: " + whm.length);
115
+ return whm[0];
116
+ }
117
+ static async getTransferVaa(wh, key, timeout) {
118
+ const vaa = typeof key === "string"
119
+ ? await wh.getVaaByTxHash(key, TokenBridge.getTransferDiscriminator(), timeout)
120
+ : await wh.getVaa(key, TokenBridge.getTransferDiscriminator(), timeout);
121
+ if (!vaa)
122
+ throw new Error(`No VAA available after retries exhausted`);
123
+ // Check if its automatic and re-de-serialize
124
+ if (vaa.payloadName === "TransferWithPayload") {
125
+ const { chain, address } = vaa.payload.to;
126
+ const { tokenBridgeRelayer } = wh.config.chains[chain].contracts;
127
+ const relayerAddress = tokenBridgeRelayer ? toUniversal(chain, tokenBridgeRelayer) : null;
128
+ // If the target address is the relayer address, expect its an automatic token bridge vaa
129
+ if (!!relayerAddress && address.equals(relayerAddress)) {
130
+ return deserialize("AutomaticTokenBridge:TransferWithRelay", serialize(vaa));
131
+ }
132
+ }
133
+ return vaa;
134
+ }
135
+ // Lookup the token id for the destination chain given the source chain
136
+ // and token id
137
+ static async lookupDestinationToken(srcChain, dstChain, token) {
138
+ // that will be minted when the transfer is redeemed
139
+ let lookup;
140
+ if (isNative(token.address)) {
141
+ // if native, get the wrapped asset id
142
+ lookup = await srcChain.getNativeWrappedTokenId();
143
+ }
144
+ else {
145
+ try {
146
+ const tb = await srcChain.getTokenBridge();
147
+ // otherwise, check to see if it is a wrapped token locally
148
+ lookup = await tb.getOriginalAsset(token.address);
149
+ }
150
+ catch (e) {
151
+ // not a from-chain native wormhole-wrapped one
152
+ lookup = token;
153
+ }
154
+ }
155
+ // if the token id is actually native to the destination, return it
156
+ if (lookup.chain === dstChain.chain) {
157
+ return lookup;
158
+ }
159
+ // otherwise, figure out what the token address representing the wormhole-wrapped token we're transferring
160
+ const dstTb = await dstChain.getTokenBridge();
161
+ const dstAddress = await dstTb.getWrappedAsset(lookup);
162
+ return { chain: dstChain.chain, address: dstAddress };
163
+ }
164
+ static validateTransferDetails(wh, transfer, fromChain, toChain) {
165
+ if (transfer.amount === 0n)
166
+ throw new Error("Amount cannot be 0");
167
+ if (transfer.from.chain === transfer.to.chain)
168
+ throw new Error("Cannot transfer to the same chain");
169
+ fromChain = fromChain ?? wh.getChain(transfer.from.chain);
170
+ toChain = toChain ?? wh.getChain(transfer.to.chain);
171
+ if (transfer.automatic) {
172
+ if (transfer.payload)
173
+ throw new Error("Payload with automatic delivery is not supported");
174
+ if (!fromChain.supportsAutomaticTokenBridge())
175
+ throw new Error(`Automatic Token Bridge not supported on ${transfer.from.chain}`);
176
+ if (!toChain.supportsAutomaticTokenBridge())
177
+ throw new Error(`Automatic Token Bridge not supported on ${transfer.to.chain}`);
178
+ const nativeGas = transfer.nativeGas ?? 0n;
179
+ if (nativeGas > transfer.amount)
180
+ throw new Error(`Native gas amount > amount (${nativeGas} > ${transfer.amount})`);
181
+ }
182
+ else {
183
+ if (transfer.nativeGas)
184
+ throw new Error("Gas Dropoff is only supported for automatic transfers");
185
+ if (!fromChain.supportsTokenBridge())
186
+ throw new Error(`Token Bridge not supported on ${transfer.from.chain}`);
187
+ if (!toChain.supportsTokenBridge())
188
+ throw new Error(`Token Bridge not supported on ${transfer.to.chain}`);
189
+ }
190
+ }
191
+ static async quoteTransfer(srcChain, dstChain, transfer) {
192
+ const dstToken = await this.lookupDestinationToken(srcChain, dstChain, transfer.token);
193
+ const srcToken = isNative(transfer.token.address)
194
+ ? await srcChain.getNativeWrappedTokenId()
195
+ : transfer.token;
196
+ const dstDecimals = await dstChain.getDecimals(dstToken.address);
197
+ const srcDecimals = await srcChain.getDecimals(srcToken.address);
198
+ const dedust = _dedust(srcDecimals);
199
+ const mintable = _mintable(srcDecimals, dstDecimals);
200
+ // dedust for transfer over the bridge which truncates to 8 decimals
201
+ let srcAmount = dedust(transfer.amount);
202
+ let dstAmount = mintable(transfer.amount);
203
+ if (!transfer.automatic) {
204
+ return {
205
+ sourceToken: { token: srcToken, amount: srcAmount },
206
+ destinationToken: { token: dstToken, amount: dstAmount },
207
+ };
208
+ }
209
+ // Otherwise automatic
210
+ // If a native gas dropoff is requested, remove that from the amount they'll get
211
+ const _nativeGas = transfer.nativeGas ? mintable(transfer.nativeGas) : 0n;
212
+ dstAmount -= _nativeGas;
213
+ // The fee is also removed from the amount transferred
214
+ // quoted on the source chain
215
+ const stb = await srcChain.getAutomaticTokenBridge();
216
+ const fee = await stb.getRelayerFee(transfer.from.address, transfer.to, srcToken.address);
217
+ dstAmount -= mintable(fee);
218
+ // The expected destination gas can be pulled from the destination token bridge
219
+ let destinationNativeGas = 0n;
220
+ if (transfer.nativeGas) {
221
+ const dtb = await dstChain.getAutomaticTokenBridge();
222
+ destinationNativeGas = await dtb.nativeTokenAmount(dstToken.address, _nativeGas);
223
+ }
224
+ return {
225
+ sourceToken: {
226
+ token: srcToken,
227
+ amount: srcAmount,
228
+ },
229
+ destinationToken: { token: dstToken, amount: dstAmount },
230
+ relayFee: { token: srcToken, amount: fee },
231
+ destinationNativeGas,
232
+ };
233
+ }
234
+ static async isTransferComplete(toChain, vaa) {
235
+ const _vaa = deserialize("TokenBridge:TransferWithPayload", serialize(vaa));
236
+ const tb = await toChain.getTokenBridge();
237
+ return tb.isTransferCompleted(_vaa);
238
+ }
239
+ // AsyncGenerator fn that produces status updates through an async generator
240
+ // eventually producing a receipt
241
+ // can be called repeatedly so the receipt is updated as it moves through the
242
+ // steps of the transfer
243
+ static async *track(wh, receipt, timeout = DEFAULT_TASK_TIMEOUT, fromChain, toChain) {
244
+ const start = Date.now();
245
+ const leftover = (start, max) => Math.max(max - (Date.now() - start), 0);
246
+ fromChain = fromChain ?? wh.getChain(receipt.from);
247
+ toChain = toChain ?? wh.getChain(receipt.to);
248
+ // Check the source chain for initiation transaction
249
+ // and capture the message id
250
+ if (isSourceInitiated(receipt)) {
251
+ if (receipt.originTxs.length === 0)
252
+ throw "Origin transactions required to fetch message id";
253
+ const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
254
+ const msg = await TokenTransfer.getTransferMessage(fromChain, txid, leftover(start, timeout));
255
+ receipt = {
256
+ ...receipt,
257
+ state: TransferState.SourceFinalized,
258
+ attestation: { id: msg },
259
+ };
260
+ yield receipt;
261
+ }
262
+ // If the source is finalized, we need to fetch the signed attestation
263
+ // so that we may deliver it to the destination chain
264
+ // or at least track the transfer through its progress
265
+ if (isSourceFinalized(receipt)) {
266
+ if (!receipt.attestation.id)
267
+ throw "Attestation id required to fetch attestation";
268
+ const { id } = receipt.attestation;
269
+ const attestation = await TokenTransfer.getTransferVaa(wh, id, leftover(start, timeout));
270
+ receipt = {
271
+ ...receipt,
272
+ attestation: { id, attestation },
273
+ state: TransferState.Attested,
274
+ };
275
+ yield receipt;
276
+ }
277
+ // First try to grab the tx status from the API
278
+ // Note: this requires a subsequent async step on the backend
279
+ // to have the dest txid populated, so it may be delayed by some time
280
+ if (isAttested(receipt) || isSourceFinalized(receipt)) {
281
+ if (!receipt.attestation.id)
282
+ throw "Attestation id required to fetch redeem tx";
283
+ const { id } = receipt.attestation;
284
+ const txStatus = await wh.getTransactionStatus(id, leftover(start, timeout));
285
+ if (txStatus && txStatus.globalTx?.destinationTx?.txHash) {
286
+ const { chainId, txHash } = txStatus.globalTx.destinationTx;
287
+ receipt = {
288
+ ...receipt,
289
+ destinationTxs: [{ chain: toChainName(chainId), txid: txHash }],
290
+ state: TransferState.DestinationFinalized,
291
+ };
292
+ }
293
+ yield receipt;
294
+ }
295
+ // Fall back to asking the destination chain if this VAA has been redeemed
296
+ // Note: We do not get any destinationTxs with this method
297
+ if (isAttested(receipt)) {
298
+ if (!receipt.attestation.attestation)
299
+ throw ErrInvalidStateTransition("Signed Attestation required to check for redeem");
300
+ let isComplete = await TokenTransfer.isTransferComplete(toChain, receipt.attestation.attestation);
301
+ if (isComplete) {
302
+ receipt = {
303
+ ...receipt,
304
+ state: TransferState.DestinationFinalized,
305
+ };
306
+ }
307
+ yield receipt;
308
+ }
309
+ yield receipt;
310
+ }
311
+ static async destinationOverrides(srcChain, dstChain, transfer) {
312
+ const _transfer = { ...transfer };
313
+ // Bit of (temporary) hackery until solana contracts support being
314
+ // sent a VAA with the primary address
315
+ // Note: Do _not_ override if automatic or if the destination token is native
316
+ // gas token
317
+ if (transfer.to.chain === "Solana" && !_transfer.automatic) {
318
+ const destinationToken = await TokenTransfer.lookupDestinationToken(srcChain, dstChain, _transfer.token);
319
+ // TODO: If the token is native, no need to overwrite the destination address check for native
320
+ //if (!destinationToken.address.equals((await dstChain.getNativeWrappedTokenId()).address))
321
+ _transfer.to = await dstChain.getTokenAccount(_transfer.to.address, destinationToken.address);
322
+ }
323
+ if (_transfer.to.chain === "Sei") {
324
+ if (_transfer.to.chain === "Sei" && _transfer.payload)
325
+ throw new Error("Arbitrary payloads unsupported for Sei");
326
+ // For sei, we reserve the payload for a token transfer through the sei bridge.
327
+ _transfer.payload = encoding.bytes.encode(JSON.stringify({
328
+ basic_recipient: {
329
+ recipient: encoding.b64.encode(_transfer.to.address.toString()),
330
+ },
331
+ }));
332
+ _transfer.to = Wormhole.chainAddress(_transfer.to.chain, dstChain.config.contracts.translator);
333
+ }
334
+ return _transfer;
335
+ }
336
+ }
337
+ //# sourceMappingURL=tokenTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransfer.js","sourceRoot":"","sources":["../../../../src/protocols/tokenbridge/tokenTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,QAAQ,EACR,OAAO,IAAI,WAAW,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAML,WAAW,EAMX,WAAW,EACX,QAAQ,EACR,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,SAAS,EACT,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAIL,yBAAyB,EAKzB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAW/C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,CACxD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,kDAAkD;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,CACrD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAEpD,qEAAqE;AACrE,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAC3D,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AAE3C,gDAAgD;AAChD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAE,WAAmB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CACrF,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;AAEjD,MAAM,OAAgB,aAAa;IAIjC,EAAE,CAAc;IAEhB,SAAS,CAAmC;IAC5C,OAAO,CAAmC;IAE1C,mBAAmB;IACnB,QAAQ,CAAuB;IAE/B,OAAO,CAA0C;IAEjD,YACE,EAAe,EACf,QAA8B,EAC9B,SAA4C,EAC5C,OAA0C;QAE1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YACzB,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK;YACrB,KAAK,EAAE,aAAa,CAAC,OAAO;SAC7B,CAAC;IACJ,CAAC;IA6BD,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,EAAe,EACf,IAA8D,EAC9D,UAAkB,IAAI,EACtB,SAA4C,EAC5C,OAA0C;QAE1C,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;YAChC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAEhD,oBAAoB;YACpB,aAAa,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAEpE,gBAAgB;YAChB,IAAI,GAAG;gBACL,GAAG,IAAI;gBACP,GAAG,CAAC,MAAM,aAAa,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;aACxE,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,IAAI,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;aACjE;iBAAM;gBACL,OAAO,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;aAC9D;SACF;QAED,IAAI,EAAoB,CAAC;QACzB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;YAC7B,EAAE,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SAC5D;aAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE;YACxC,EAAE,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACxE;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;QAED,EAAE,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,EAAE,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uBAAuB;IACf,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,EAAe,EACf,EAAqB,EACrB,OAAgB;QAEhB,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,KAAK,sBAAsB,CAAC;QAE9D,uDAAuD;QACvD,wDAAwD;QACxD,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;QACpE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAEhC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,CAChD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvF,IAAI,eAAe,GAAW,EAAE,CAAC;QACjC,IAAI,SAAS,EAAE;YACb,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC1D,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9D,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;SACpF;QAED,MAAM,OAAO,GAAyB;YACpC,KAAK;YACL,MAAM;YACN,IAAI;YACJ,EAAE;YACF,SAAS;YACT,SAAS,EAAE,eAAe;SAC3B,CAAC;QAEF,IAAI,EAAoB,CAAC;QACzB,IAAI,SAAS,EAAE;YACb,EAAE,GAAG,IAAI,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SAC9C;aAAM;YACL,EAAE,GAAG,IAAI,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SAC3C;QAED,EAAE,CAAC,OAAO,GAAG;YACX,GAAI,EAAE,CAAC,OAA0C;YACjD,KAAK,EAAE,aAAa,CAAC,QAAQ;YAC7B,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;SAC1C,CAAC;QAEF,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAClC,EAAe,EACf,IAAmB,EACnB,OAAe,EACf,SAA4C;QAE5C,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,OAAO,MAAM,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,KAAuC,EACvC,IAAY,EACZ,OAAgB;QAEhB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAChG,OAAO,GAAG,CAAC,CAAC,CAAE,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,EAAe,EACf,GAA+B,EAC/B,OAAgB;QAEhB,MAAM,GAAG,GACP,OAAO,GAAG,KAAK,QAAQ;YACrB,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE,OAAO,CAAC;YAC/E,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE,OAAO,CAAC,CAAC;QAE5E,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAEtE,6CAA6C;QAC7C,IAAI,GAAG,CAAC,WAAW,KAAK,qBAAqB,EAAE;YAC7C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,SAAS,CAAC;YAClE,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1F,yFAAyF;YACzF,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;gBACtD,OAAO,WAAW,CAAC,wCAAwC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;aAC9E;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uEAAuE;IACvE,eAAe;IACf,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACjC,QAAkD,EAClD,QAAkD,EAClD,KAAkB;QAElB,oDAAoD;QACpD,IAAI,MAAe,CAAC;QACpB,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,sCAAsC;YACtC,MAAM,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;SACnD;aAAM;YACL,IAAI;gBACF,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3C,2DAA2D;gBAC3D,MAAM,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,+CAA+C;gBAC/C,MAAM,GAAG,KAAK,CAAC;aAChB;SACF;QAED,mEAAmE;QACnE,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE;YACnC,OAAO,MAAqB,CAAC;SAC9B;QAED,0GAA0G;QAC1G,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,uBAAuB,CAC5B,EAAe,EACf,QAA8B,EAC9B,SAA4C,EAC5C,OAA0C;QAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAElE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC,KAAK;YAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEvD,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,QAAQ,CAAC,SAAS,EAAE;YACtB,IAAI,QAAQ,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAE1F,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEpF,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAElF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3C,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM;gBAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SACtF;aAAM;YACL,IAAI,QAAQ,CAAC,SAAS;gBACpB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAE3E,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAE1E,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,QAA0C,EAC1C,QAA0C,EAC1C,QAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/C,CAAC,CAAC,MAAM,QAAQ,CAAC,uBAAuB,EAAE;YAC1C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEnB,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAErD,oEAAoE;QACpE,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACvB,OAAO;gBACL,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;gBACnD,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;aACzD,CAAC;SACH;QAED,sBAAsB;QAEtB,gFAAgF;QAChF,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,SAAS,IAAI,UAAU,CAAC;QAExB,sDAAsD;QACtD,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1F,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE3B,+EAA+E;QAC/E,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,SAAS,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;YACrD,oBAAoB,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;SAClF;QAED,OAAO;YACL,WAAW,EAAE;gBACX,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,SAAS;aAClB;YACD,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;YACxD,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;YAC1C,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,OAAyC,EACzC,GAAqB;QAErB,MAAM,IAAI,GAAG,WAAW,CAAC,iCAAiC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,iCAAiC;IACjC,6EAA6E;IAC7E,wBAAwB;IACxB,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CACjB,EAAe,EACf,OAAqC,EACrC,UAAkB,oBAAoB,EACtC,SAAoD,EACpD,OAAkD;QAElD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzF,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE7C,oDAAoD;QACpD,6BAA6B;QAC7B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,kDAAkD,CAAC;YAC7F,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAClE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9F,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,KAAK,EAAE,aAAa,CAAC,eAAe;gBACpC,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;aACiD,CAAC;YAC5E,MAAM,OAAO,CAAC;SACf;QAED,sEAAsE;QACtE,qDAAqD;QACrD,sDAAsD;QACtD,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAAE,MAAM,8CAA8C,CAAC;YAClF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;YACnC,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACzF,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAChC,KAAK,EAAE,aAAa,CAAC,QAAQ;aACqC,CAAC;YACrE,MAAM,OAAO,CAAC;SACf;QAED,+CAA+C;QAC/C,6DAA6D;QAC7D,qEAAqE;QACrE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;YACrD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAAE,MAAM,4CAA4C,CAAC;YAChF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7E,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;gBACxD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC5D,OAAO,GAAG;oBACR,GAAG,OAAO;oBACV,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oBACrE,KAAK,EAAE,aAAa,CAAC,oBAAoB;iBAC0B,CAAC;aACvE;YACD,MAAM,OAAO,CAAC;SACf;QAED,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW;gBAClC,MAAM,yBAAyB,CAAC,iDAAiD,CAAC,CAAC;YAErF,IAAI,UAAU,GAAG,MAAM,aAAa,CAAC,kBAAkB,CACrD,OAAO,EACP,OAAO,CAAC,WAAW,CAAC,WAA+B,CACpD,CAAC;YAEF,IAAI,UAAU,EAAE;gBACd,OAAO,GAAG;oBACR,GAAG,OAAO;oBACV,KAAK,EAAE,aAAa,CAAC,oBAAoB;iBAC0B,CAAC;aACvE;YAED,MAAM,OAAO,CAAC;SACf;QAED,MAAM,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,QAA0C,EAC1C,QAA0C,EAC1C,QAA8B;QAE9B,MAAM,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAElC,kEAAkE;QAClE,sCAAsC;QACtC,6EAA6E;QAC7E,YAAY;QACZ,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1D,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,sBAAsB,CACjE,QAAQ,EACR,QAAQ,EACR,SAAS,CAAC,KAAK,CAChB,CAAC;YACF,8FAA8F;YAC9F,2FAA2F;YAC3F,SAAS,CAAC,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;SAC/F;QAED,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE;YAChC,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,OAAO;gBACnD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAE5D,+EAA+E;YAC/E,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACvC,IAAI,CAAC,SAAS,CAAC;gBACb,eAAe,EAAE;oBACf,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;iBAChE;aACF,CAAC,CACH,CAAC;YACF,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,YAAY,CAClC,SAAS,CAAC,EAAE,CAAC,KAAK,EAClB,QAAQ,CAAC,MAAM,CAAC,SAAU,CAAC,UAAW,CACvC,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { AttestationId, ChainContext, CircleTransferDetails, GatewayTransferDetails, ProtocolName, Signer, TokenTransferDetails, TxHash } from "@wormhole-foundation/sdk-definitions";
3
+ import { AttestationReceipt, TransferQuote, TransferReceipt, TransferState } from "../types";
4
+ import { Wormhole } from "../wormhole";
5
+ export type TransferRequest<PN extends ProtocolName = ProtocolName> = PN extends "TokenBridge" | "AutomaticTokenBridge" ? TokenTransferDetails : PN extends "CircleBridge" | "AutomaticCircleBridge" ? CircleTransferDetails : PN extends "IbcBridge" ? GatewayTransferDetails : never;
6
+ export interface TransferProtocol<PN extends ProtocolName> {
7
+ isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, attestation: AttestationId<PN>): Promise<boolean>;
8
+ validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TransferRequest<PN>): Promise<void>;
9
+ quoteTransfer(xfer: WormholeTransfer<PN>): Promise<TransferQuote>;
10
+ getReceipt(xfer: WormholeTransfer<PN>): TransferReceipt<AttestationReceipt<PN>>;
11
+ track<N extends Network>(wh: Wormhole<N>, xfer: TransferReceipt<AttestationReceipt<PN>>, timeout: number): AsyncGenerator<TransferReceipt<AttestationReceipt<PN>>>;
12
+ }
13
+ export interface WormholeTransfer<PN extends ProtocolName> {
14
+ transfer: TransferRequest<PN>;
15
+ getTransferState(): TransferState;
16
+ initiateTransfer(signer: Signer): Promise<TxHash[]>;
17
+ fetchAttestation(timeout?: number): Promise<AttestationId[]>;
18
+ completeTransfer(signer: Signer): Promise<TxHash[]>;
19
+ }
20
+ //# sourceMappingURL=wormholeTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormholeTransfer.d.ts","sourceRoot":"","sources":["../../../src/protocols/wormholeTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,MAAM,EACP,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,YAAY,GAAG,YAAY,IAAI,EAAE,SACpE,aAAa,GACb,sBAAsB,GACtB,oBAAoB,GACpB,EAAE,SAAS,cAAc,GAAG,uBAAuB,GACnD,qBAAqB,GACrB,EAAE,SAAS,WAAW,GACtB,sBAAsB,GACtB,KAAK,CAAC;AAIV,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,KAAK,EACnD,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,uBAAuB,CAAC,CAAC,SAAS,OAAO,EACvC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,CAAC,SAAS,OAAO,EACrB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAC7C,OAAO,EAAE,MAAM,GACd,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5D;AAID,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,YAAY;IACvD,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IAI9B,gBAAgB,IAAI,aAAa,CAAC;IAIlC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAIpD,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAI7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAMrD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wormholeTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormholeTransfer.js","sourceRoot":"","sources":["../../../src/protocols/wormholeTransfer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { Network } from "@wormhole-foundation/sdk-base";
2
+ import { Signer } from "@wormhole-foundation/sdk-definitions";
3
+ import { TransferReceipt } from "../../wormholeTransfer";
4
+ import { AutomaticRoute, ValidationResult } from "../route";
5
+ export declare namespace AutomaticTokenBridgeRoute {
6
+ type Options = {
7
+ nativeGasDropoff?: bigint;
8
+ };
9
+ }
10
+ export declare class AutomaticTokenBridgeRoute<N extends Network> extends AutomaticRoute<
11
+ N,
12
+ AutomaticTokenBridgeRoute.Options
13
+ > {
14
+ NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
15
+ isSupported(): Promise<boolean>;
16
+ isAvailable(): Promise<boolean>;
17
+ getDefaultOptions(): AutomaticTokenBridgeRoute.Options;
18
+ validate(options: AutomaticTokenBridgeRoute.Options): Promise<ValidationResult<Error>>;
19
+ initiate(
20
+ signer: Signer,
21
+ options: AutomaticTokenBridgeRoute.Options,
22
+ ): Promise<TransferReceipt<"AutomaticTokenBridge">>;
23
+ track(
24
+ receipt: TransferReceipt<"AutomaticTokenBridge">,
25
+ ): AsyncGenerator<TransferReceipt<"AutomaticTokenBridge">>;
26
+ private toTransferDetails;
27
+ }
28
+ //# sourceMappingURL=automaticTokenBridgeRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automaticTokenBridgeRoute.d.ts","sourceRoot":"","sources":["../../../src/routes/automaticTokenBridgeRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EACL,MAAM,EAIP,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAiB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D,yBAAiB,yBAAyB,CAAC;IACzC,KAAY,OAAO,GAAG;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,qBAAa,yBAAyB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,cAAc,CAC9E,CAAC,EACD,yBAAyB,CAAC,OAAO,CAClC;IACC,4BAA4B,UAAQ;IAE9B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA6B/B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC,iBAAiB,IAAI,yBAAyB,CAAC,OAAO;IAIhD,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAUtF,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,yBAAyB,CAAC,OAAO,GACzC,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAgB5C,KAAK,CACV,OAAO,EAAE,eAAe,CAAC,sBAAsB,CAAC,GAC/C,cAAc,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAM1D,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -0,0 +1,78 @@
1
+ import { isSameToken, isTokenId, } from "@wormhole-foundation/sdk-definitions";
2
+ import { TokenTransfer } from "../protocols/tokenTransfer";
3
+ import { TransferState } from "../wormholeTransfer";
4
+ import { AutomaticRoute } from "./route";
5
+ export class AutomaticTokenBridgeRoute extends AutomaticRoute {
6
+ NATIVE_GAS_DROPOFF_SUPPORTED = true;
7
+ async isSupported() {
8
+ // No transfers to same chain
9
+ if (this.request.from.chain === this.request.to.chain)
10
+ return false;
11
+ // No transfers to unsupported chains
12
+ const fromChain = this.wh.getChain(this.request.from.chain);
13
+ if (!fromChain.supportsAutomaticTokenBridge())
14
+ return false;
15
+ const toChain = this.wh.getChain(this.request.to.chain);
16
+ if (!toChain.supportsAutomaticTokenBridge())
17
+ return false;
18
+ const atb = await fromChain.getAutomaticTokenBridge();
19
+ if (isTokenId(this.request.source) && !atb.isRegisteredToken(this.request.source.address))
20
+ return false;
21
+ // If the destination token was set, and its different than what
22
+ // we'd get from a token bridge transfer, then this route is not supported
23
+ if (this.request.destination) {
24
+ const destToken = await TokenTransfer.lookupDestinationToken(fromChain, toChain, this.request.source);
25
+ if (!isSameToken(destToken, this.request.destination))
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ async isAvailable() {
31
+ // TODO
32
+ return true;
33
+ }
34
+ getDefaultOptions() {
35
+ return { nativeGasDropoff: 0n };
36
+ }
37
+ async validate(options) {
38
+ const transfer = this.toTransferDetails(options);
39
+ try {
40
+ await TokenTransfer.validateTransferDetails(this.wh, transfer);
41
+ return { valid: true };
42
+ }
43
+ catch (e) {
44
+ return { valid: false, error: e };
45
+ }
46
+ }
47
+ async initiate(signer, options) {
48
+ const fromChain = this.wh.getChain(this.request.from.chain);
49
+ const transfer = this.toTransferDetails(options);
50
+ const txids = await TokenTransfer.transfer(fromChain, transfer, signer);
51
+ const msg = await TokenTransfer.getTransferMessage(fromChain, txids[txids.length - 1].txid);
52
+ return {
53
+ protocol: "AutomaticTokenBridge",
54
+ from: transfer.from.chain,
55
+ to: transfer.to.chain,
56
+ state: TransferState.SourceFinalized,
57
+ request: transfer,
58
+ originTxs: txids,
59
+ attestation: { id: msg },
60
+ };
61
+ }
62
+ async *track(receipt) {
63
+ const tracker = TokenTransfer.track(this.wh, receipt);
64
+ console.log("IN TRACK", receipt, tracker);
65
+ return tracker;
66
+ }
67
+ toTransferDetails(options) {
68
+ return {
69
+ token: this.request.source,
70
+ amount: this.request.amount,
71
+ from: this.request.from,
72
+ to: this.request.to,
73
+ automatic: true,
74
+ ...options,
75
+ };
76
+ }
77
+ }
78
+ //# sourceMappingURL=automaticTokenBridgeRoute.js.map