@wormhole-foundation/sdk-connect 0.5.0-alpha.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 (225) 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/cctpTransfer.d.ts +41 -0
  18. package/dist/cjs/protocols/cctpTransfer.d.ts.map +1 -0
  19. package/dist/cjs/protocols/cctpTransfer.js +459 -0
  20. package/dist/cjs/protocols/cctpTransfer.js.map +1 -0
  21. package/dist/cjs/protocols/gatewayTransfer.d.ts +40 -0
  22. package/dist/cjs/protocols/gatewayTransfer.d.ts.map +1 -0
  23. package/dist/cjs/protocols/gatewayTransfer.js +406 -0
  24. package/dist/cjs/protocols/gatewayTransfer.js.map +1 -0
  25. package/dist/cjs/protocols/tokenTransfer.d.ts +40 -0
  26. package/dist/cjs/protocols/tokenTransfer.d.ts.map +1 -0
  27. package/dist/cjs/protocols/tokenTransfer.js +472 -0
  28. package/dist/cjs/protocols/tokenTransfer.js.map +1 -0
  29. package/dist/cjs/protocols/wormholeTransfer.d.ts +20 -0
  30. package/dist/cjs/protocols/wormholeTransfer.d.ts.map +1 -0
  31. package/dist/cjs/protocols/wormholeTransfer.js +3 -0
  32. package/dist/cjs/protocols/wormholeTransfer.js.map +1 -0
  33. package/dist/cjs/routes/cctp/automatic.d.ts +46 -0
  34. package/dist/cjs/routes/cctp/automatic.d.ts.map +1 -0
  35. package/dist/cjs/routes/cctp/automatic.js +135 -0
  36. package/dist/cjs/routes/cctp/automatic.js.map +1 -0
  37. package/dist/cjs/routes/cctp/index.d.ts +3 -0
  38. package/dist/cjs/routes/cctp/index.d.ts.map +1 -0
  39. package/dist/cjs/routes/cctp/index.js +19 -0
  40. package/dist/cjs/routes/cctp/index.js.map +1 -0
  41. package/dist/cjs/routes/cctp/manual.d.ts +43 -0
  42. package/dist/cjs/routes/cctp/manual.d.ts.map +1 -0
  43. package/dist/cjs/routes/cctp/manual.js +113 -0
  44. package/dist/cjs/routes/cctp/manual.js.map +1 -0
  45. package/dist/cjs/routes/common.d.ts +13 -0
  46. package/dist/cjs/routes/common.d.ts.map +1 -0
  47. package/dist/cjs/routes/common.js +45 -0
  48. package/dist/cjs/routes/common.js.map +1 -0
  49. package/dist/cjs/routes/index.d.ts +9 -0
  50. package/dist/cjs/routes/index.d.ts.map +1 -0
  51. package/dist/cjs/routes/index.js +25 -0
  52. package/dist/cjs/routes/index.js.map +1 -0
  53. package/dist/cjs/routes/portico/automatic.d.ts +68 -0
  54. package/dist/cjs/routes/portico/automatic.d.ts.map +1 -0
  55. package/dist/cjs/routes/portico/automatic.js +208 -0
  56. package/dist/cjs/routes/portico/automatic.js.map +1 -0
  57. package/dist/cjs/routes/portico/index.d.ts +2 -0
  58. package/dist/cjs/routes/portico/index.d.ts.map +1 -0
  59. package/dist/cjs/routes/portico/index.js +18 -0
  60. package/dist/cjs/routes/portico/index.js.map +1 -0
  61. package/dist/cjs/routes/portico/utils.d.ts +1 -0
  62. package/dist/cjs/routes/portico/utils.d.ts.map +1 -0
  63. package/dist/cjs/routes/portico/utils.js +2 -0
  64. package/dist/cjs/routes/portico/utils.js.map +1 -0
  65. package/dist/cjs/routes/request.d.ts +25 -0
  66. package/dist/cjs/routes/request.d.ts.map +1 -0
  67. package/dist/cjs/routes/request.js +65 -0
  68. package/dist/cjs/routes/request.js.map +1 -0
  69. package/dist/cjs/routes/resolver.d.ts +15 -0
  70. package/dist/cjs/routes/resolver.d.ts.map +1 -0
  71. package/dist/cjs/routes/resolver.js +87 -0
  72. package/dist/cjs/routes/resolver.js.map +1 -0
  73. package/dist/cjs/routes/route.d.ts +46 -0
  74. package/dist/cjs/routes/route.d.ts.map +1 -0
  75. package/dist/cjs/routes/route.js +34 -0
  76. package/dist/cjs/routes/route.js.map +1 -0
  77. package/dist/cjs/routes/token.d.ts +12 -0
  78. package/dist/cjs/routes/token.d.ts.map +1 -0
  79. package/dist/cjs/routes/token.js +37 -0
  80. package/dist/cjs/routes/token.js.map +1 -0
  81. package/dist/cjs/routes/tokenBridge/automatic.d.ts +46 -0
  82. package/dist/cjs/routes/tokenBridge/automatic.d.ts.map +1 -0
  83. package/dist/cjs/routes/tokenBridge/automatic.js +145 -0
  84. package/dist/cjs/routes/tokenBridge/automatic.js.map +1 -0
  85. package/dist/cjs/routes/tokenBridge/index.d.ts +3 -0
  86. package/dist/cjs/routes/tokenBridge/index.d.ts.map +1 -0
  87. package/dist/cjs/routes/tokenBridge/index.js +19 -0
  88. package/dist/cjs/routes/tokenBridge/index.js.map +1 -0
  89. package/dist/cjs/routes/tokenBridge/manual.d.ts +42 -0
  90. package/dist/cjs/routes/tokenBridge/manual.d.ts.map +1 -0
  91. package/dist/cjs/routes/tokenBridge/manual.js +87 -0
  92. package/dist/cjs/routes/tokenBridge/manual.js.map +1 -0
  93. package/dist/cjs/routes/types.d.ts +44 -0
  94. package/dist/cjs/routes/types.d.ts.map +1 -0
  95. package/dist/cjs/routes/types.js +3 -0
  96. package/dist/cjs/routes/types.js.map +1 -0
  97. package/dist/cjs/tasks.d.ts +7 -0
  98. package/dist/cjs/tasks.d.ts.map +1 -0
  99. package/dist/cjs/tasks.js +65 -0
  100. package/dist/cjs/tasks.js.map +1 -0
  101. package/dist/cjs/types.d.ts +73 -0
  102. package/dist/cjs/types.d.ts.map +1 -0
  103. package/dist/cjs/types.js +35 -0
  104. package/dist/cjs/types.js.map +1 -0
  105. package/dist/cjs/whscan-api.d.ts +172 -0
  106. package/dist/cjs/whscan-api.d.ts.map +1 -0
  107. package/dist/cjs/whscan-api.js +243 -0
  108. package/dist/cjs/whscan-api.js.map +1 -0
  109. package/dist/cjs/wormhole.d.ts +198 -0
  110. package/dist/cjs/wormhole.d.ts.map +1 -0
  111. package/dist/cjs/wormhole.js +324 -0
  112. package/dist/cjs/wormhole.js.map +1 -0
  113. package/dist/esm/circle-api.d.ts +16 -0
  114. package/dist/esm/circle-api.d.ts.map +1 -0
  115. package/dist/esm/circle-api.js +39 -0
  116. package/dist/esm/circle-api.js.map +1 -0
  117. package/dist/esm/common.d.ts +4 -0
  118. package/dist/esm/common.d.ts.map +1 -0
  119. package/dist/esm/common.js +36 -0
  120. package/dist/esm/common.js.map +1 -0
  121. package/dist/esm/config.d.ts +34 -0
  122. package/dist/esm/config.d.ts.map +1 -0
  123. package/dist/esm/config.js +47 -0
  124. package/dist/esm/config.js.map +1 -0
  125. package/dist/esm/index.d.ts +15 -0
  126. package/dist/esm/index.d.ts.map +1 -0
  127. package/dist/esm/index.js +16 -0
  128. package/dist/esm/index.js.map +1 -0
  129. package/dist/esm/protocols/cctpTransfer.d.ts +41 -0
  130. package/dist/esm/protocols/cctpTransfer.d.ts.map +1 -0
  131. package/dist/esm/protocols/cctpTransfer.js +455 -0
  132. package/dist/esm/protocols/cctpTransfer.js.map +1 -0
  133. package/dist/esm/protocols/gatewayTransfer.d.ts +40 -0
  134. package/dist/esm/protocols/gatewayTransfer.d.ts.map +1 -0
  135. package/dist/esm/protocols/gatewayTransfer.js +402 -0
  136. package/dist/esm/protocols/gatewayTransfer.js.map +1 -0
  137. package/dist/esm/protocols/tokenTransfer.d.ts +40 -0
  138. package/dist/esm/protocols/tokenTransfer.d.ts.map +1 -0
  139. package/dist/esm/protocols/tokenTransfer.js +468 -0
  140. package/dist/esm/protocols/tokenTransfer.js.map +1 -0
  141. package/dist/esm/protocols/wormholeTransfer.d.ts +20 -0
  142. package/dist/esm/protocols/wormholeTransfer.d.ts.map +1 -0
  143. package/dist/esm/protocols/wormholeTransfer.js +2 -0
  144. package/dist/esm/protocols/wormholeTransfer.js.map +1 -0
  145. package/dist/esm/routes/cctp/automatic.d.ts +46 -0
  146. package/dist/esm/routes/cctp/automatic.d.ts.map +1 -0
  147. package/dist/esm/routes/cctp/automatic.js +131 -0
  148. package/dist/esm/routes/cctp/automatic.js.map +1 -0
  149. package/dist/esm/routes/cctp/index.d.ts +3 -0
  150. package/dist/esm/routes/cctp/index.d.ts.map +1 -0
  151. package/dist/esm/routes/cctp/index.js +3 -0
  152. package/dist/esm/routes/cctp/index.js.map +1 -0
  153. package/dist/esm/routes/cctp/manual.d.ts +43 -0
  154. package/dist/esm/routes/cctp/manual.d.ts.map +1 -0
  155. package/dist/esm/routes/cctp/manual.js +109 -0
  156. package/dist/esm/routes/cctp/manual.js.map +1 -0
  157. package/dist/esm/routes/common.d.ts +13 -0
  158. package/dist/esm/routes/common.d.ts.map +1 -0
  159. package/dist/esm/routes/common.js +41 -0
  160. package/dist/esm/routes/common.js.map +1 -0
  161. package/dist/esm/routes/index.d.ts +9 -0
  162. package/dist/esm/routes/index.d.ts.map +1 -0
  163. package/dist/esm/routes/index.js +9 -0
  164. package/dist/esm/routes/index.js.map +1 -0
  165. package/dist/esm/routes/portico/automatic.d.ts +68 -0
  166. package/dist/esm/routes/portico/automatic.d.ts.map +1 -0
  167. package/dist/esm/routes/portico/automatic.js +204 -0
  168. package/dist/esm/routes/portico/automatic.js.map +1 -0
  169. package/dist/esm/routes/portico/index.d.ts +2 -0
  170. package/dist/esm/routes/portico/index.d.ts.map +1 -0
  171. package/dist/esm/routes/portico/index.js +2 -0
  172. package/dist/esm/routes/portico/index.js.map +1 -0
  173. package/dist/esm/routes/portico/utils.d.ts +1 -0
  174. package/dist/esm/routes/portico/utils.d.ts.map +1 -0
  175. package/dist/esm/routes/portico/utils.js +2 -0
  176. package/dist/esm/routes/portico/utils.js.map +1 -0
  177. package/dist/esm/routes/request.d.ts +25 -0
  178. package/dist/esm/routes/request.d.ts.map +1 -0
  179. package/dist/esm/routes/request.js +61 -0
  180. package/dist/esm/routes/request.js.map +1 -0
  181. package/dist/esm/routes/resolver.d.ts +15 -0
  182. package/dist/esm/routes/resolver.d.ts.map +1 -0
  183. package/dist/esm/routes/resolver.js +83 -0
  184. package/dist/esm/routes/resolver.js.map +1 -0
  185. package/dist/esm/routes/route.d.ts +46 -0
  186. package/dist/esm/routes/route.d.ts.map +1 -0
  187. package/dist/esm/routes/route.js +26 -0
  188. package/dist/esm/routes/route.js.map +1 -0
  189. package/dist/esm/routes/token.d.ts +12 -0
  190. package/dist/esm/routes/token.d.ts.map +1 -0
  191. package/dist/esm/routes/token.js +31 -0
  192. package/dist/esm/routes/token.js.map +1 -0
  193. package/dist/esm/routes/tokenBridge/automatic.d.ts +46 -0
  194. package/dist/esm/routes/tokenBridge/automatic.d.ts.map +1 -0
  195. package/dist/esm/routes/tokenBridge/automatic.js +141 -0
  196. package/dist/esm/routes/tokenBridge/automatic.js.map +1 -0
  197. package/dist/esm/routes/tokenBridge/index.d.ts +3 -0
  198. package/dist/esm/routes/tokenBridge/index.d.ts.map +1 -0
  199. package/dist/esm/routes/tokenBridge/index.js +3 -0
  200. package/dist/esm/routes/tokenBridge/index.js.map +1 -0
  201. package/dist/esm/routes/tokenBridge/manual.d.ts +42 -0
  202. package/dist/esm/routes/tokenBridge/manual.d.ts.map +1 -0
  203. package/dist/esm/routes/tokenBridge/manual.js +83 -0
  204. package/dist/esm/routes/tokenBridge/manual.js.map +1 -0
  205. package/dist/esm/routes/types.d.ts +44 -0
  206. package/dist/esm/routes/types.d.ts.map +1 -0
  207. package/dist/esm/routes/types.js +2 -0
  208. package/dist/esm/routes/types.js.map +1 -0
  209. package/dist/esm/tasks.d.ts +7 -0
  210. package/dist/esm/tasks.d.ts.map +1 -0
  211. package/dist/esm/tasks.js +59 -0
  212. package/dist/esm/tasks.js.map +1 -0
  213. package/dist/esm/types.d.ts +73 -0
  214. package/dist/esm/types.d.ts.map +1 -0
  215. package/dist/esm/types.js +27 -0
  216. package/dist/esm/types.js.map +1 -0
  217. package/dist/esm/whscan-api.d.ts +172 -0
  218. package/dist/esm/whscan-api.d.ts.map +1 -0
  219. package/dist/esm/whscan-api.js +222 -0
  220. package/dist/esm/whscan-api.js.map +1 -0
  221. package/dist/esm/wormhole.d.ts +198 -0
  222. package/dist/esm/wormhole.d.ts.map +1 -0
  223. package/dist/esm/wormhole.js +320 -0
  224. package/dist/esm/wormhole.js.map +1 -0
  225. package/package.json +52 -0
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GatewayTransfer = 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 tasks_1 = require("../tasks");
8
+ const types_1 = require("../types");
9
+ const wormhole_1 = require("../wormhole");
10
+ class GatewayTransfer {
11
+ static chain = "Wormchain";
12
+ wh;
13
+ // Wormchain context
14
+ gateway;
15
+ // Wormchain IBC Bridge
16
+ gatewayIbcBridge;
17
+ // Contract address
18
+ gatewayAddress;
19
+ // state machine tracker
20
+ _state;
21
+ // cached message derived from transfer details
22
+ // note: we dont want to create multiple different ones since
23
+ // the nonce may change and we want to keep it consistent
24
+ msg;
25
+ // Initial Transfer Settings
26
+ transfer;
27
+ // Transaction Ids from source chain
28
+ transactions = [];
29
+ // The corresponding vaa representing the GatewayTransfer
30
+ // on the source chain (if it came from outside cosmos and if its been completed and finalized)
31
+ vaas;
32
+ // Any transfers we do over ibc
33
+ ibcTransfers = [];
34
+ constructor(wh, transfer, gateway, gatewayIbc) {
35
+ this._state = types_1.TransferState.Created;
36
+ this.wh = wh;
37
+ this.transfer = transfer;
38
+ // reference from conf instead of asking the module
39
+ // so we can prevent weird imports
40
+ this.gatewayAddress = {
41
+ chain: GatewayTransfer.chain,
42
+ address: (0, sdk_definitions_1.toNative)(GatewayTransfer.chain, this.wh.config.chains[GatewayTransfer.chain].contracts.gateway),
43
+ };
44
+ // cache the wormchain chain context since we need it for checks
45
+ this.gateway = gateway;
46
+ this.gatewayIbcBridge = gatewayIbc;
47
+ // cache the message since we don't want to regenerate it any time we need it
48
+ this.msg = (0, sdk_definitions_1.gatewayTransferMsg)(this.transfer);
49
+ }
50
+ getTransferState() {
51
+ return this._state;
52
+ }
53
+ static async from(wh, from, timeout) {
54
+ // we need this regardless of the type of `from`
55
+ const wc = wh.getChain(GatewayTransfer.chain);
56
+ const wcibc = await wc.getIbcBridge();
57
+ // Fresh new transfer
58
+ if ((0, sdk_definitions_1.isGatewayTransferDetails)(from)) {
59
+ const fromChain = wh.getChain(from.from.chain);
60
+ const toChain = wh.getChain(from.to.chain);
61
+ const overrides = await GatewayTransfer.destinationOverrides(fromChain, toChain, wc, from);
62
+ // Override transfer params if necessary
63
+ from = { ...from, ...overrides };
64
+ return new GatewayTransfer(wh, from, wc, wcibc);
65
+ }
66
+ // Picking up where we left off
67
+ let gtd;
68
+ let txns = [];
69
+ if ((0, sdk_definitions_1.isTransactionIdentifier)(from)) {
70
+ txns.push(from);
71
+ gtd = await GatewayTransfer._fromTransaction(wh, from);
72
+ }
73
+ else if ((0, sdk_definitions_1.isWormholeMessageId)(from)) {
74
+ // TODO: we're missing the transaction that created this
75
+ // get it from transaction status search on wormholescan?
76
+ gtd = await GatewayTransfer._fromMsgId(wh, from);
77
+ }
78
+ else {
79
+ throw new Error("Invalid `from` parameter for GatewayTransfer");
80
+ }
81
+ const gt = new GatewayTransfer(wh, gtd, wc, wcibc);
82
+ gt.transactions = txns;
83
+ // Since we're picking up from somewhere we can move the
84
+ // state maching to initiated
85
+ gt._state = types_1.TransferState.SourceInitiated;
86
+ // Wait for what _can_ complete to complete
87
+ await gt.fetchAttestation(timeout);
88
+ return gt;
89
+ }
90
+ // Recover Transfer info from VAA details
91
+ static async _fromMsgId(wh, from, timeout) {
92
+ // Starting with the VAA
93
+ const vaa = await GatewayTransfer.getTransferVaa(wh, from, timeout);
94
+ // The VAA may have a payload which may have a nested GatewayTransferMessage
95
+ let payload = vaa.payloadName === "TransferWithPayload" ? vaa.payload.payload : undefined;
96
+ // Nonce for GatewayTransferMessage may be in the payload
97
+ // and since we use the payload to find the Wormchain transacton
98
+ // we need to preserve it
99
+ let nonce;
100
+ let to = { ...vaa.payload.to };
101
+ // The payload here may be the message for Gateway
102
+ // Lets be sure to pull the real payload if its set
103
+ // Otherwise revert to undefined
104
+ if (payload) {
105
+ try {
106
+ const maybeWithPayload = (0, sdk_definitions_1.toGatewayMsg)(sdk_base_1.encoding.bytes.decode(payload));
107
+ nonce = maybeWithPayload.nonce;
108
+ payload = maybeWithPayload.payload
109
+ ? sdk_base_1.encoding.bytes.encode(maybeWithPayload.payload)
110
+ : undefined;
111
+ const destChain = (0, sdk_base_1.toChain)(maybeWithPayload.chain);
112
+ // b64 decode the address to its string representation
113
+ const recipientAddress = sdk_base_1.encoding.bytes.decode(sdk_base_1.encoding.b64.decode(maybeWithPayload.recipient));
114
+ to = wormhole_1.Wormhole.chainAddress(destChain, recipientAddress);
115
+ }
116
+ catch {
117
+ /*Ignoring, throws if not the payload isnt JSON*/
118
+ }
119
+ }
120
+ const { chain, address, amount } = vaa.payload.token;
121
+ // Reconstruct the details
122
+ const details = {
123
+ token: { chain, address },
124
+ amount: amount,
125
+ // TODO: the `from.address` here is a lie, but we don't
126
+ // immediately have enough info to get the _correct_ one
127
+ from: { chain: from.chain, address: from.emitter },
128
+ to,
129
+ nonce,
130
+ payload: payload,
131
+ };
132
+ return details;
133
+ }
134
+ // Init from source tx hash, depending on the source chain
135
+ // we pull Transfer info from either IBC or a wh message
136
+ static async _fromTransaction(wh, from, timeout) {
137
+ const { chain, txid } = from;
138
+ const originChain = wh.getChain(chain);
139
+ // If its origin chain supports IBC, it should be an IBC message
140
+ if (originChain.supportsIbcBridge()) {
141
+ // Get the ibc tx info from the origin
142
+ const ibcBridge = await originChain.getIbcBridge();
143
+ const [xfer] = await ibcBridge.lookupTransferFromTx(from.txid);
144
+ return GatewayTransfer.ibcTransfertoGatewayTransfer(xfer);
145
+ }
146
+ // Otherwise grab the vaa details from the origin tx
147
+ const msgs = await wormhole_1.Wormhole.parseMessageFromTx(originChain, txid);
148
+ if (!msgs)
149
+ throw new Error("No messages found in transaction");
150
+ return await GatewayTransfer._fromMsgId(wh, msgs[0], timeout);
151
+ }
152
+ // Recover transfer info the first step in the transfer
153
+ static ibcTransfertoGatewayTransfer(xfer) {
154
+ const token = wormhole_1.Wormhole.tokenId(xfer.id.chain, xfer.data.denom);
155
+ const msg = (0, sdk_definitions_1.toGatewayMsg)(xfer.data.memo);
156
+ const destChain = (0, sdk_base_1.toChain)(msg.chain);
157
+ const _recip = sdk_base_1.encoding.b64.decode(msg.recipient);
158
+ const recipient = (0, sdk_base_1.chainToPlatform)(destChain) === "Cosmwasm"
159
+ ? wormhole_1.Wormhole.chainAddress(destChain, sdk_base_1.encoding.bytes.decode(_recip))
160
+ : {
161
+ chain: destChain,
162
+ address: new sdk_definitions_1.UniversalAddress(_recip).toNative(destChain),
163
+ };
164
+ const payload = msg.payload ? sdk_base_1.encoding.bytes.encode(msg.payload) : undefined;
165
+ const details = {
166
+ token,
167
+ amount: BigInt(xfer.data.amount),
168
+ from: {
169
+ chain: xfer.id.chain,
170
+ address: (0, sdk_definitions_1.toNative)(xfer.id.chain, xfer.data.sender),
171
+ },
172
+ to: recipient,
173
+ fee: BigInt(msg.fee),
174
+ payload,
175
+ };
176
+ return details;
177
+ }
178
+ // start the WormholeTransfer by submitting transactions to the source chain
179
+ // returns a transaction hash
180
+ async initiateTransfer(signer) {
181
+ /*
182
+ 0) Check current `state` is valid to call this (eg: state == Created)
183
+ 1) Figure out where to call and issue transactions
184
+ 2) Update state
185
+ 3) return transaction ids
186
+ */
187
+ if (this._state !== types_1.TransferState.Created)
188
+ throw new Error("Invalid state transition in `start`");
189
+ this.transactions = await (this.fromGateway()
190
+ ? this._transferIbc(signer)
191
+ : this._transfer(signer));
192
+ // Update State Machine
193
+ this._state = types_1.TransferState.SourceInitiated;
194
+ return this.transactions.map((tx) => tx.txid);
195
+ }
196
+ async _transfer(signer) {
197
+ const tokenAddress = this.transfer.token.address;
198
+ const fromChain = this.wh.getChain(this.transfer.from.chain);
199
+ // Build the message needed to send a transfer through the gateway
200
+ const tb = await fromChain.getTokenBridge();
201
+ const xfer = tb.transfer(this.transfer.from.address, this.gatewayAddress, tokenAddress, this.transfer.amount, sdk_base_1.encoding.bytes.encode(JSON.stringify(this.msg)));
202
+ return (0, common_1.signSendWait)(fromChain, xfer, signer);
203
+ }
204
+ async _transferIbc(signer) {
205
+ if ((0, sdk_definitions_1.isNative)(this.transfer.token.address))
206
+ throw new Error("Native not supported for IBC transfers");
207
+ const fromChain = this.wh.getChain(this.transfer.from.chain);
208
+ const ibcBridge = await fromChain.getIbcBridge();
209
+ const xfer = ibcBridge.transfer(this.transfer.from.address, this.transfer.to, this.transfer.token.address, this.transfer.amount);
210
+ return (0, common_1.signSendWait)(fromChain, xfer, signer);
211
+ }
212
+ // wait for the Attestations to be ready
213
+ async fetchAttestation(timeout) {
214
+ // Note: this method probably does too much
215
+ if (this._state < types_1.TransferState.SourceInitiated || this._state > types_1.TransferState.Attested)
216
+ throw new Error("Invalid state transition in `fetchAttestation`");
217
+ const attestations = [];
218
+ const chain = this.wh.getChain(this.transfer.from.chain);
219
+ // collect ibc transfers and additional transaction ids
220
+ if (this.fromGateway()) {
221
+ // assume all the txs are from the same chain
222
+ // and get the ibc bridge once
223
+ const originIbcbridge = await chain.getIbcBridge();
224
+ // Ultimately we need to find the corresponding Wormchain transaction
225
+ // from the intitiating cosmos chain, this will contain the details of the
226
+ // outbound transaction to the destination chain
227
+ // start by getting the IBC transfers into wormchain
228
+ // from the cosmos chain
229
+ this.ibcTransfers = (await Promise.all(this.transactions.map((tx) => originIbcbridge.lookupTransferFromTx(tx.txid)))).flat();
230
+ // I don't know why this would happen so lmk if you see this
231
+ if (this.ibcTransfers.length != 1)
232
+ throw new Error("why?");
233
+ const [xfer] = this.ibcTransfers;
234
+ if (!this.toGateway()) {
235
+ // If we're leaving cosmos, grab the VAA from the gateway
236
+ // now find the corresponding wormchain transaction given the ibcTransfer info
237
+ const retryInterval = 5000;
238
+ const task = () => this.gatewayIbcBridge.lookupMessageFromIbcMsgId(xfer.id);
239
+ const whm = await (0, tasks_1.retry)(task, retryInterval, timeout, "Gateway:IbcBridge:LookupWormholeMessageFromIncomingIbcMessage");
240
+ if (!whm)
241
+ throw new Error("Matching wormhole message not found after retries exhausted");
242
+ const vaa = await GatewayTransfer.getTransferVaa(this.wh, whm);
243
+ this.vaas = [{ id: whm, vaa }];
244
+ attestations.push(whm);
245
+ }
246
+ else {
247
+ // Otherwise we need to get the transfer on the destination chain
248
+ // using the transfer from wormchain
249
+ const gatewayTransferTask = () => (0, tasks_1.fetchIbcXfer)(this.gatewayIbcBridge, xfer.id);
250
+ const gatewayIbcTransfers = await (0, tasks_1.retry)(gatewayTransferTask, 5000, timeout, "Gateway:IbcBridge:LookupWormchainIbcTransfer");
251
+ if (gatewayIbcTransfers === null)
252
+ throw new Error("Gateway IBC transfer not found after retries exhausted");
253
+ const toDestChainIbcTransfer = gatewayIbcTransfers[1];
254
+ const dstChain = this.wh.getChain(this.transfer.to.chain);
255
+ const dstIbcBridge = await dstChain.getIbcBridge();
256
+ const dstMsgTask = () => (0, tasks_1.fetchIbcXfer)(dstIbcBridge, toDestChainIbcTransfer.id);
257
+ const dstIbcTransfers = await (0, tasks_1.retry)(dstMsgTask, 5000, timeout, "Gateway:IbcBridge:LookupDestinationIbcTransfer");
258
+ if (!dstIbcTransfers)
259
+ throw new Error("Destination IBC transfer not found after retries exhausted");
260
+ this.ibcTransfers.push(dstIbcTransfers[0]);
261
+ }
262
+ }
263
+ else {
264
+ // Otherwise, we're coming from outside cosmos and
265
+ // we need to find the wormchain ibc transaction information
266
+ // by searching for the transaction containing the
267
+ // GatewayTransferMsg
268
+ const transferTransaction = this.transactions[this.transactions.length - 1];
269
+ const [whm] = await wormhole_1.Wormhole.parseMessageFromTx(chain, transferTransaction.txid);
270
+ const vaa = await GatewayTransfer.getTransferVaa(this.wh, whm);
271
+ this.vaas = [{ id: whm, vaa }];
272
+ attestations.push(whm);
273
+ // TODO: conf for these settings? how do we choose them?
274
+ const vaaRedeemedRetryInterval = 2000;
275
+ const transferCompleteInterval = 5000;
276
+ // Wait until the vaa is redeemed before trying to look up the
277
+ // transfer message
278
+ const wcTb = await this.gateway.getTokenBridge();
279
+ // Since we want to retry until its redeemed, return null
280
+ // in the case that its not redeemed
281
+ const isRedeemedTask = () => (0, tasks_1.isTokenBridgeVaaRedeemed)(wcTb, vaa);
282
+ const redeemed = await (0, tasks_1.retry)(isRedeemedTask, vaaRedeemedRetryInterval, timeout, "Gateway:TokenBridge:IsVaaRedeemed");
283
+ if (!redeemed)
284
+ throw new Error("VAA not redeemed after retries exhausted");
285
+ // Next, get the IBC transactions from wormchain
286
+ // Note: Because we search by GatewayTransferMsg payload
287
+ // there is a possibility of dupe messages being returned
288
+ // using a nonce should help
289
+ const wcTransferTask = () => (0, tasks_1.fetchIbcXfer)(this.gatewayIbcBridge, this.msg);
290
+ const wcTransfers = await (0, tasks_1.retry)(wcTransferTask, vaaRedeemedRetryInterval, timeout, "Gateway:IbcBridge:WormchainTransferInitiated");
291
+ if (!wcTransfers)
292
+ throw new Error("Wormchain transfer not found after retries exhausted");
293
+ const [wcTransfer] = wcTransfers;
294
+ if (wcTransfer.pending) {
295
+ // TODO: check if pending and bail(?) if so
296
+ }
297
+ this.ibcTransfers.push(wcTransfer);
298
+ // Finally, get the IBC transfer to the destination chain
299
+ const destChain = this.wh.getChain(this.transfer.to.chain);
300
+ const destIbcBridge = await destChain.getIbcBridge();
301
+ const destTransferTask = () => (0, tasks_1.fetchIbcXfer)(destIbcBridge, wcTransfer.id);
302
+ const destTransfer = await (0, tasks_1.retry)(destTransferTask, transferCompleteInterval, timeout, "Destination:IbcBridge:WormchainTransferCompleted");
303
+ if (!destTransfer)
304
+ throw new Error("IBC Transfer into destination not found after retries exhausted" +
305
+ JSON.stringify(wcTransfer));
306
+ this.ibcTransfers.push(destTransfer[0]);
307
+ }
308
+ // Add transfers to attestations we return
309
+ // Note: there is no ordering guarantee here
310
+ attestations.push(...this.ibcTransfers.map((xfer) => xfer.id));
311
+ this._state = types_1.TransferState.Attested;
312
+ return attestations;
313
+ }
314
+ // finish the WormholeTransfer by submitting transactions to the destination chain
315
+ // returns a transaction hash
316
+ async completeTransfer(signer) {
317
+ /*
318
+ 0) check that the current `state` is valid to call this (eg: state == Ready)
319
+ 1) prepare the transactions and sign them given the signer
320
+ 2) submit the VAA and transactions on chain
321
+ 3) return txid of submission
322
+ */
323
+ if (this._state < types_1.TransferState.Attested)
324
+ throw new Error("Invalid state transition in `finish`. Be sure to call `fetchAttestation`.");
325
+ if (this.toGateway())
326
+ // TODO: assuming the last transaction captured is the one from gateway to the destination
327
+ return [this.transactions[this.transactions.length - 1].txid];
328
+ if (!this.vaas)
329
+ throw new Error("No VAA details available to redeem");
330
+ if (this.vaas.length > 1)
331
+ throw new Error("Expected 1 vaa");
332
+ const toChain = this.wh.getChain(signer.chain());
333
+ const toAddress = (0, sdk_definitions_1.toNative)(signer.chain(), signer.address());
334
+ const tb = await toChain.getTokenBridge();
335
+ const { vaa } = this.vaas[0];
336
+ if (!vaa)
337
+ throw new Error(`No VAA found for ${this.vaas[0].id.sequence}`);
338
+ const xfer = tb.redeem(toAddress, vaa);
339
+ const redeemTxs = await (0, common_1.signSendWait)(toChain, xfer, signer);
340
+ this.transactions.push(...redeemTxs);
341
+ this._state = types_1.TransferState.DestinationInitiated;
342
+ return redeemTxs.map(({ txid }) => txid);
343
+ }
344
+ static async getTransferVaa(wh, whm, timeout) {
345
+ const vaa = await wh.getVaa(whm, sdk_definitions_1.TokenBridge.getTransferDiscriminator(), timeout);
346
+ if (!vaa)
347
+ throw new Error(`No VAA Available: ${whm.chain}/${whm.emitter}/${whm.sequence}`);
348
+ return vaa;
349
+ }
350
+ static async destinationOverrides(srcChain, dstChain, gatewayChain, transfer) {
351
+ const _transfer = { ...transfer };
352
+ // Bit of (temporary) hackery until solana contracts support being
353
+ // sent a VAA with the primary address
354
+ if (transfer.to.chain === "Solana") {
355
+ const destinationToken = await GatewayTransfer.lookupDestinationToken(srcChain, dstChain, gatewayChain, _transfer.token);
356
+ _transfer.to = await dstChain.getTokenAccount(_transfer.to.address, destinationToken.address);
357
+ }
358
+ return _transfer;
359
+ }
360
+ // Lookup the token id for the destination chain given the source chain
361
+ // and token id
362
+ static async lookupDestinationToken(srcChain, dstChain, gatewayChain, token) {
363
+ // that will be minted when the transfer is redeemed
364
+ let lookup;
365
+ if ((0, sdk_definitions_1.isNative)(token.address)) {
366
+ // if native, get the wrapped asset id
367
+ lookup = await srcChain.getNativeWrappedTokenId();
368
+ }
369
+ else {
370
+ try {
371
+ // otherwise, check to see if it is a wrapped token locally
372
+ const tb = await srcChain.getTokenBridge();
373
+ lookup = await tb.getOriginalAsset(token.address);
374
+ }
375
+ catch (e) {
376
+ // not a from-chain native token, check the gateway chain
377
+ try {
378
+ const gtb = await gatewayChain.getTokenBridge();
379
+ lookup = await gtb.getOriginalAsset(token.address);
380
+ }
381
+ catch (e) {
382
+ lookup = token;
383
+ }
384
+ }
385
+ }
386
+ // if the token id is actually native to the destination, return it
387
+ if (lookup.chain === dstChain.chain) {
388
+ return lookup;
389
+ }
390
+ // otherwise, figure out what the token address representing the wormhole-wrapped token we're transferring
391
+ const dstTb = await dstChain.getTokenBridge();
392
+ const dstAddress = await dstTb.getWrappedAsset(lookup);
393
+ return { chain: dstChain.chain, address: dstAddress };
394
+ }
395
+ // Implicitly determine if the chain is Gateway enabled by
396
+ // checking to see if the Gateway IBC bridge has a transfer channel setup
397
+ // If this is a new chain, add the channels to the constants file
398
+ fromGateway() {
399
+ return this.gatewayIbcBridge.getTransferChannel(this.transfer.from.chain) !== null;
400
+ }
401
+ toGateway() {
402
+ return this.gatewayIbcBridge.getTransferChannel(this.transfer.to.chain) !== null;
403
+ }
404
+ }
405
+ exports.GatewayTransfer = GatewayTransfer;
406
+ //# sourceMappingURL=gatewayTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gatewayTransfer.js","sourceRoot":"","sources":["../../../src/protocols/gatewayTransfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { AttestationId, AutomaticTokenBridge, ChainContext, Signer, TokenBridge, TokenId, TokenTransferDetails, TransactionId, TxHash, WormholeMessageId } from "@wormhole-foundation/sdk-definitions";
3
+ import { AttestationReceipt, TransferQuote, TransferReceipt, TransferState } from "../types";
4
+ import { Wormhole } from "../wormhole";
5
+ import { WormholeTransfer } from "./wormholeTransfer";
6
+ export type TokenTransferProtocol = "TokenBridge" | "AutomaticTokenBridge";
7
+ export type TokenTransferVAA = TokenBridge.TransferVAA | AutomaticTokenBridge.VAA;
8
+ export type TokenTransferAttestationReceipt = AttestationReceipt<TokenTransferProtocol>;
9
+ export type TokenTransferReceipt<SC extends Chain = Chain, DC extends Chain = Chain> = TransferReceipt<TokenTransferAttestationReceipt, SC, DC>;
10
+ export declare class TokenTransfer<N extends Network = Network> implements WormholeTransfer<TokenTransferProtocol> {
11
+ private readonly wh;
12
+ fromChain: ChainContext<N, Chain>;
13
+ toChain: ChainContext<N, Chain>;
14
+ private _state;
15
+ transfer: TokenTransferDetails;
16
+ txids: TransactionId[];
17
+ attestations?: AttestationReceipt<TokenTransferProtocol>[];
18
+ private constructor();
19
+ getTransferState(): TransferState;
20
+ static from<N extends Network>(wh: Wormhole<N>, from: TokenTransferDetails, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
21
+ static from<N extends Network>(wh: Wormhole<N>, from: WormholeMessageId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
22
+ static from<N extends Network>(wh: Wormhole<N>, from: TransactionId, timeout?: number, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): Promise<TokenTransfer<N>>;
23
+ private static fromIdentifier;
24
+ private static fromTransaction;
25
+ initiateTransfer(signer: Signer): Promise<TxHash[]>;
26
+ fetchAttestation(timeout?: number): Promise<AttestationId[]>;
27
+ completeTransfer(signer: Signer): Promise<TxHash[]>;
28
+ static transfer<N extends Network>(fromChain: ChainContext<N, Chain>, transfer: TokenTransferDetails, signer: Signer<N, Chain>): Promise<TransactionId[]>;
29
+ static redeem<N extends Network>(toChain: ChainContext<N, Chain>, vaa: TokenTransferVAA, signer: Signer<N, Chain>): Promise<TransactionId[]>;
30
+ static isTransferComplete<N extends Network, C extends Chain>(toChain: ChainContext<N, C>, vaa: TokenTransferVAA): Promise<boolean>;
31
+ static getTransferMessage<N extends Network, C extends Chain>(chain: ChainContext<N, C>, txid: TxHash, timeout?: number): Promise<WormholeMessageId>;
32
+ static getTransferVaa<N extends Network>(wh: Wormhole<N>, key: WormholeMessageId | TxHash, timeout?: number): Promise<TokenTransferVAA>;
33
+ static lookupDestinationToken<N extends Network, SC extends Chain, DC extends Chain>(srcChain: ChainContext<N, SC>, dstChain: ChainContext<N, DC>, token: TokenId<SC>): Promise<TokenId<DC>>;
34
+ static validateTransferDetails<N extends Network>(wh: Wormhole<N>, transfer: TokenTransferDetails, fromChain?: ChainContext<N, Chain>, toChain?: ChainContext<N, Chain>): void;
35
+ static quoteTransfer<N extends Network>(wh: Wormhole<N>, srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TransferQuote>;
36
+ static destinationOverrides<N extends Network>(srcChain: ChainContext<N, Chain>, dstChain: ChainContext<N, Chain>, transfer: TokenTransferDetails): Promise<TokenTransferDetails>;
37
+ static getReceipt<N extends Network>(xfer: TokenTransfer<N>): TokenTransferReceipt;
38
+ static track<N extends Network, SC extends Chain, DC extends Chain>(wh: Wormhole<N>, receipt: TokenTransferReceipt<SC, DC>, timeout?: number, fromChain?: ChainContext<N, SC>, toChain?: ChainContext<N, DC>): AsyncGenerator<TokenTransferReceipt<SC, DC>>;
39
+ }
40
+ //# sourceMappingURL=tokenTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransfer.d.ts","sourceRoot":"","sources":["../../../src/protocols/tokenTransfer.ts"],"names":[],"mappings":"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"}