@wormhole-foundation/sdk-connect 0.5.0-alpha.3 → 0.5.0-alpha.4

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 (133) 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 +42 -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 +41 -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 +42 -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 +48 -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 +45 -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 +70 -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 +3 -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 +2 -0
  62. package/dist/cjs/routes/portico/utils.d.ts.map +1 -0
  63. package/dist/cjs/routes/portico/utils.js +3 -0
  64. package/dist/cjs/routes/portico/utils.js.map +1 -0
  65. package/dist/cjs/routes/request.d.ts +26 -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 +13 -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 +48 -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 +44 -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 +173 -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/index.d.ts +4 -6
  114. package/dist/esm/index.d.ts.map +1 -1
  115. package/dist/esm/index.js +4 -4
  116. package/dist/esm/index.js.map +1 -1
  117. package/dist/esm/routes/cctp/index.d.ts +2 -2
  118. package/dist/esm/routes/cctp/index.d.ts.map +1 -1
  119. package/dist/esm/routes/cctp/index.js +2 -2
  120. package/dist/esm/routes/cctp/index.js.map +1 -1
  121. package/dist/esm/routes/index.d.ts +8 -10
  122. package/dist/esm/routes/index.d.ts.map +1 -1
  123. package/dist/esm/routes/index.js +8 -7
  124. package/dist/esm/routes/index.js.map +1 -1
  125. package/dist/esm/routes/portico/index.d.ts +2 -2
  126. package/dist/esm/routes/portico/index.d.ts.map +1 -1
  127. package/dist/esm/routes/portico/index.js +1 -1
  128. package/dist/esm/routes/portico/index.js.map +1 -1
  129. package/dist/esm/routes/tokenBridge/index.d.ts +2 -2
  130. package/dist/esm/routes/tokenBridge/index.d.ts.map +1 -1
  131. package/dist/esm/routes/tokenBridge/index.js +2 -2
  132. package/dist/esm/routes/tokenBridge/index.js.map +1 -1
  133. package/package.json +14 -5
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutomaticPorticoRoute = exports.BPS_PER_HUNDRED_PERCENT = exports.SLIPPAGE_BPS = void 0;
4
+ const index_js_1 = require("./../../index.js");
5
+ const route_js_1 = require("../route.js");
6
+ exports.SLIPPAGE_BPS = 15n; // 0.15%
7
+ exports.BPS_PER_HUNDRED_PERCENT = 10000n;
8
+ class AutomaticPorticoRoute extends route_js_1.AutomaticRoute {
9
+ NATIVE_GAS_DROPOFF_SUPPORTED = false;
10
+ static meta = {
11
+ name: "AutomaticPortico",
12
+ };
13
+ static _supportedTokens = ["WETH", "WSTETH"];
14
+ static supportedNetworks() {
15
+ return ["Mainnet"];
16
+ }
17
+ static supportedChains(network) {
18
+ if (index_js_1.contracts.porticoContractChains.has(network)) {
19
+ return index_js_1.contracts.porticoContractChains.get(network);
20
+ }
21
+ return [];
22
+ }
23
+ static async supportedSourceTokens(fromChain) {
24
+ const { chain } = fromChain;
25
+ const supported = this._supportedTokens
26
+ .map((symbol) => {
27
+ return index_js_1.tokens.filters.bySymbol(fromChain.config.tokenMap, symbol) ?? [];
28
+ })
29
+ .flat()
30
+ .filter((td) => {
31
+ const localOrEth = !td.original || td.original === "Ethereum";
32
+ const isAvax = chain === "Avalanche" && (0, index_js_1.isNative)(td.address);
33
+ return localOrEth && !isAvax;
34
+ });
35
+ return supported.map((td) => index_js_1.Wormhole.tokenId(chain, td.address));
36
+ }
37
+ static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
38
+ const [, srcTokenAddress] = (0, index_js_1.resolveWrappedToken)(fromChain.network, fromChain.chain, sourceToken);
39
+ const tokenAddress = (0, index_js_1.canonicalAddress)(srcTokenAddress);
40
+ // The token that will be used to bridge
41
+ const pb = await fromChain.getPorticoBridge();
42
+ const transferrableToken = pb.getTransferrableToken(tokenAddress);
43
+ // The tokens that _will_ be received on redemption
44
+ const redeemToken = await index_js_1.TokenTransfer.lookupDestinationToken(fromChain, toChain, transferrableToken);
45
+ // Grab the symbol for the token that gets redeemed
46
+ const redeemTokenDetails = index_js_1.tokens.filters.byAddress(toChain.config.tokenMap, (0, index_js_1.canonicalAddress)(redeemToken));
47
+ // Find the local/native version of the same token by symbol
48
+ const locallyRedeemable = (index_js_1.tokens.filters.bySymbol(toChain.config.tokenMap, redeemTokenDetails.symbol) ?? [])
49
+ .filter((td) => {
50
+ return !td.original;
51
+ })
52
+ .map((td) => {
53
+ switch (td.symbol) {
54
+ case "ETH":
55
+ case "WETH":
56
+ return index_js_1.Wormhole.tokenId(toChain.chain, td.address);
57
+ case "WSTETH":
58
+ return index_js_1.Wormhole.tokenId(toChain.chain, td.address);
59
+ default:
60
+ throw new Error("Unknown symbol: " + redeemTokenDetails.symbol);
61
+ }
62
+ });
63
+ return locallyRedeemable;
64
+ }
65
+ static isProtocolSupported(chain) {
66
+ return chain.supportsPorticoBridge();
67
+ }
68
+ async isAvailable() {
69
+ // TODO:
70
+ return true;
71
+ }
72
+ getDefaultOptions() {
73
+ return {};
74
+ }
75
+ async validate(params) {
76
+ try {
77
+ if ((0, index_js_1.chainToPlatform)(this.request.from.chain) !== "Evm" ||
78
+ (0, index_js_1.chainToPlatform)(this.request.to.chain) !== "Evm") {
79
+ throw new Error("Only EVM chains are supported");
80
+ }
81
+ const { fromChain, toChain, source, destination } = this.request;
82
+ const { network } = fromChain;
83
+ // This may be "native" but we want the token that can actually be bridged
84
+ const [, sourceToken] = (0, index_js_1.resolveWrappedToken)(network, fromChain.chain, source.id);
85
+ const [, destinationToken] = (0, index_js_1.resolveWrappedToken)(network, toChain.chain, destination.id);
86
+ const fromPb = await fromChain.getPorticoBridge();
87
+ const toPb = await toChain.getPorticoBridge();
88
+ const canonicalSourceToken = fromPb.getTransferrableToken((0, index_js_1.canonicalAddress)(sourceToken));
89
+ const canonicalDestinationToken = toPb.getTransferrableToken((0, index_js_1.canonicalAddress)(destinationToken));
90
+ const validatedParams = {
91
+ amount: params.amount,
92
+ options: params.options ?? this.getDefaultOptions(),
93
+ normalizedParams: {
94
+ amount: this.request.parseAmount(params.amount),
95
+ canonicalSourceToken,
96
+ canonicalDestinationToken,
97
+ sourceToken,
98
+ destinationToken,
99
+ },
100
+ };
101
+ return { valid: true, params: validatedParams };
102
+ }
103
+ catch (e) {
104
+ return { valid: false, error: e, params: params };
105
+ }
106
+ }
107
+ async quote(params) {
108
+ try {
109
+ const swapAmounts = await this.quoteUniswap(params);
110
+ const pb = await this.request.toChain.getPorticoBridge();
111
+ const fee = await pb.quoteRelay(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address);
112
+ const details = {
113
+ swapAmounts,
114
+ relayerFee: fee,
115
+ };
116
+ let destinationAmount = details.swapAmounts.minAmountFinish - fee;
117
+ if (Number(destinationAmount) < 0) {
118
+ return {
119
+ success: false,
120
+ error: new Error(`Amount too low for slippage and fee, would result in negative destination amount (${destinationAmount})`),
121
+ };
122
+ }
123
+ return (await this.request.displayQuote({
124
+ sourceToken: {
125
+ token: params.normalizedParams.sourceToken,
126
+ amount: index_js_1.amount.units(params.normalizedParams.amount),
127
+ },
128
+ destinationToken: {
129
+ token: params.normalizedParams.destinationToken,
130
+ amount: details.swapAmounts.minAmountFinish - fee,
131
+ },
132
+ relayFee: {
133
+ token: params.normalizedParams.destinationToken,
134
+ amount: fee,
135
+ },
136
+ }, params, details));
137
+ }
138
+ catch (e) {
139
+ return {
140
+ success: false,
141
+ error: e,
142
+ };
143
+ }
144
+ }
145
+ async initiate(sender, quote) {
146
+ const { params, details } = quote;
147
+ const sourceToken = this.request.source.id.address;
148
+ const destToken = this.request.destination.id;
149
+ const fromPorticoBridge = await this.request.fromChain.getPorticoBridge();
150
+ const xfer = fromPorticoBridge.transfer(this.request.from.address, this.request.to, sourceToken, index_js_1.amount.units(params.normalizedParams.amount), destToken, details);
151
+ const txids = await (0, index_js_1.signSendWait)(this.request.fromChain, xfer, sender);
152
+ const receipt = {
153
+ originTxs: txids,
154
+ state: index_js_1.TransferState.SourceInitiated,
155
+ from: this.request.from.chain,
156
+ to: this.request.to.chain,
157
+ };
158
+ return receipt;
159
+ }
160
+ async *track(receipt, timeout) {
161
+ if (!(0, index_js_1.isSourceInitiated)(receipt))
162
+ throw new Error("Source must be initiated");
163
+ const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
164
+ const vaa = await this.wh.getVaa(txid, "TokenBridge:TransferWithPayload", timeout);
165
+ if (!vaa)
166
+ throw new Error("No VAA found for transaction: " + txid);
167
+ const parsed = index_js_1.PorticoBridge.deserializePayload(vaa.payload.payload);
168
+ yield { ...receipt, vaa, parsed };
169
+ }
170
+ async complete(signer, receipt) {
171
+ if (!(0, index_js_1.isAttested)(receipt))
172
+ throw new Error("Source must be attested");
173
+ const toPorticoBridge = await this.request.toChain.getPorticoBridge();
174
+ const sender = index_js_1.Wormhole.chainAddress(signer.chain(), signer.address());
175
+ const xfer = toPorticoBridge.redeem(sender.address, receipt.attestation.attestation);
176
+ return await (0, index_js_1.signSendWait)(this.request.toChain, xfer, signer);
177
+ }
178
+ async quoteUniswap(params) {
179
+ const fromPorticoBridge = await this.request.fromChain.getPorticoBridge();
180
+ const startQuote = await fromPorticoBridge.quoteSwap(params.normalizedParams.sourceToken.address, params.normalizedParams.canonicalSourceToken.address, index_js_1.amount.units(params.normalizedParams.amount));
181
+ const startSlippage = (startQuote * exports.SLIPPAGE_BPS) / exports.BPS_PER_HUNDRED_PERCENT;
182
+ if (startSlippage >= startQuote)
183
+ throw new Error("Start slippage too high");
184
+ const toPorticoBridge = await this.request.toChain.getPorticoBridge();
185
+ const minAmountStart = startQuote - startSlippage;
186
+ const finishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, minAmountStart);
187
+ const finishSlippage = (finishQuote * exports.SLIPPAGE_BPS) / exports.BPS_PER_HUNDRED_PERCENT;
188
+ if (finishSlippage >= finishQuote)
189
+ throw new Error("Finish slippage too high");
190
+ const minAmountFinish = finishQuote - finishSlippage;
191
+ const amountFinishQuote = await toPorticoBridge.quoteSwap(params.normalizedParams.canonicalDestinationToken.address, params.normalizedParams.destinationToken.address, startQuote);
192
+ // the expected receive amount is the amount out from the swap
193
+ // minus 5bps slippage
194
+ const amountFinishSlippage = (amountFinishQuote * 5n) / exports.BPS_PER_HUNDRED_PERCENT;
195
+ if (amountFinishSlippage >= amountFinishQuote)
196
+ throw new Error("Amount finish slippage too high");
197
+ const amountFinish = amountFinishQuote - amountFinishSlippage;
198
+ if (amountFinish <= minAmountFinish)
199
+ throw new Error("Amount finish too low");
200
+ return {
201
+ minAmountStart: minAmountStart,
202
+ minAmountFinish: minAmountFinish,
203
+ amountFinish: amountFinish,
204
+ };
205
+ }
206
+ }
207
+ exports.AutomaticPorticoRoute = AutomaticPorticoRoute;
208
+ //# sourceMappingURL=automatic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../../../src/routes/portico/automatic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { PorticoRoute } from "./automatic.js";
2
+ export * from "./automatic.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./automatic.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/routes/portico/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,iDAA+B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/routes/portico/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/routes/portico/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { amount } from "@wormhole-foundation/sdk-base";
3
+ import type { ChainAddress, ChainContext, TokenId } from "@wormhole-foundation/sdk-definitions";
4
+ import type { TransferQuote } from "../types.js";
5
+ import type { Wormhole } from "../wormhole.js";
6
+ import type { TokenDetails } from "./token.js";
7
+ import type { Quote, ValidatedTransferParams } from "./types.js";
8
+ export declare class RouteTransferRequest<N extends Network> {
9
+ from: ChainAddress;
10
+ to: ChainAddress;
11
+ source: TokenDetails;
12
+ destination: TokenDetails;
13
+ fromChain: ChainContext<N>;
14
+ toChain: ChainContext<N>;
15
+ private constructor();
16
+ parseAmount(amt: string): amount.Amount;
17
+ amountFromBaseUnits(amt: bigint): amount.Amount;
18
+ displayQuote<OP, VP extends ValidatedTransferParams<OP> = ValidatedTransferParams<OP>>(quote: TransferQuote, params: VP, details?: any): Promise<Quote<OP, VP>>;
19
+ static create<N extends Network, FC extends Chain, TC extends Chain>(wh: Wormhole<N>, params: {
20
+ from: ChainAddress<FC>;
21
+ to: ChainAddress<TC>;
22
+ source: TokenId<FC>;
23
+ destination: TokenId<TC>;
24
+ }, fromChain?: ChainContext<N, FC>, toChain?: ChainContext<N, TC>): Promise<RouteTransferRequest<N>>;
25
+ }
26
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,OAAO;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,YAAY,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAE1B,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO;IAgBP,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIvC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;IAIzC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACzF,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,EAAE,EACV,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;WAiCZ,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,KAAK,EACvE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EACf,MAAM,EAAE;QACN,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QACvB,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KAC1B,EACD,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;CAmBhC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouteTransferRequest = void 0;
4
+ const sdk_base_1 = require("@wormhole-foundation/sdk-base");
5
+ const token_js_1 = require("./token.js");
6
+ class RouteTransferRequest {
7
+ from;
8
+ to;
9
+ source;
10
+ destination;
11
+ fromChain;
12
+ toChain;
13
+ constructor(from, to, fromChain, toChain, source, destination) {
14
+ this.from = from;
15
+ this.fromChain = fromChain;
16
+ this.to = to;
17
+ this.toChain = toChain;
18
+ this.source = source;
19
+ this.destination = destination;
20
+ }
21
+ parseAmount(amt) {
22
+ return sdk_base_1.amount.parse(amt, this.source.decimals);
23
+ }
24
+ amountFromBaseUnits(amt) {
25
+ return sdk_base_1.amount.fromBaseUnits(amt, this.source.decimals);
26
+ }
27
+ async displayQuote(quote, params, details) {
28
+ let dq = {
29
+ success: true,
30
+ sourceToken: {
31
+ token: quote.sourceToken.token,
32
+ amount: sdk_base_1.amount.fromBaseUnits(quote.sourceToken.amount, this.source.decimals),
33
+ },
34
+ destinationToken: {
35
+ token: quote.destinationToken.token,
36
+ amount: sdk_base_1.amount.fromBaseUnits(quote.destinationToken.amount, this.destination.decimals),
37
+ },
38
+ params,
39
+ };
40
+ if (quote.relayFee) {
41
+ dq.relayFee = {
42
+ token: quote.relayFee.token,
43
+ amount: sdk_base_1.amount.fromBaseUnits(quote.relayFee.amount, this.source.decimals),
44
+ };
45
+ }
46
+ if (quote.destinationNativeGas) {
47
+ const dstDecimals = await this.toChain.getDecimals("native");
48
+ dq.destinationNativeGas = sdk_base_1.amount.fromBaseUnits(quote.destinationNativeGas, dstDecimals);
49
+ }
50
+ if (details) {
51
+ dq.details = details;
52
+ }
53
+ return dq;
54
+ }
55
+ static async create(wh, params, fromChain, toChain) {
56
+ fromChain = fromChain ?? wh.getChain(params.from.chain);
57
+ toChain = toChain ?? wh.getChain(params.to.chain);
58
+ const sourceDetails = await (0, token_js_1.getTokenDetails)(fromChain, params.source);
59
+ const destDetails = await (0, token_js_1.getTokenDetails)(toChain, params.destination);
60
+ const rtr = new RouteTransferRequest(params.from, params.to, fromChain, toChain, sourceDetails, destDetails);
61
+ return rtr;
62
+ }
63
+ }
64
+ exports.RouteTransferRequest = RouteTransferRequest;
65
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/routes/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Network } from "@wormhole-foundation/sdk-base";
2
+ import type { ChainContext, TokenId } from "@wormhole-foundation/sdk-definitions";
3
+ import type { Wormhole } from "../wormhole.js";
4
+ import type { RouteTransferRequest } from "./request.js";
5
+ import type { Route, RouteConstructor } from "./route.js";
6
+ export declare class RouteResolver<N extends Network> {
7
+ wh: Wormhole<N>;
8
+ routeConstructors: RouteConstructor[];
9
+ inputTokenList?: TokenId[];
10
+ constructor(wh: Wormhole<N>, routeConstructors: RouteConstructor[]);
11
+ supportedSourceTokens(chain: ChainContext<Network>): Promise<TokenId[]>;
12
+ supportedDestinationTokens(inputToken: TokenId, fromChain: ChainContext<Network>, toChain: ChainContext<Network>): Promise<TokenId[]>;
13
+ findRoutes(request: RouteTransferRequest<N>): Promise<Route<N>[]>;
14
+ }
15
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/routes/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAMlF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,aAAa,CAAC,CAAC,SAAS,OAAO;IAC1C,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;gBAEf,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IAK5D,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBvE,0BAA0B,CAC9B,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;IAef,UAAU,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CAoExE"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouteResolver = void 0;
4
+ const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
5
+ const route_js_1 = require("./route.js");
6
+ const token_js_1 = require("./token.js");
7
+ class RouteResolver {
8
+ wh;
9
+ routeConstructors;
10
+ inputTokenList;
11
+ constructor(wh, routeConstructors) {
12
+ this.wh = wh;
13
+ this.routeConstructors = routeConstructors;
14
+ }
15
+ async supportedSourceTokens(chain) {
16
+ if (this.inputTokenList)
17
+ return this.inputTokenList;
18
+ const itl = await Promise.all(this.routeConstructors.map(async (rc) => {
19
+ try {
20
+ return await rc.supportedSourceTokens(chain);
21
+ }
22
+ catch (e) {
23
+ console.error(`Failed to get supported source tokens for ${rc.meta.name}: `, e);
24
+ return [];
25
+ }
26
+ }));
27
+ this.inputTokenList = (0, token_js_1.uniqueTokens)(itl.flat());
28
+ return this.inputTokenList;
29
+ }
30
+ async supportedDestinationTokens(inputToken, fromChain, toChain) {
31
+ const [, inputTokenId] = (0, sdk_definitions_1.resolveWrappedToken)(fromChain.network, fromChain.chain, inputToken);
32
+ const tokens = await Promise.all(this.routeConstructors.map(async (rc) => {
33
+ try {
34
+ return await rc.supportedDestinationTokens(inputTokenId, fromChain, toChain);
35
+ }
36
+ catch (e) {
37
+ console.error(`Failed to get supported destination tokens for ${rc.meta.name}: `, e);
38
+ return [];
39
+ }
40
+ }));
41
+ return (0, token_js_1.uniqueTokens)(tokens.flat());
42
+ }
43
+ async findRoutes(request) {
44
+ // First we find all routes which support the request inputs (network, chains, and tokens)
45
+ const supportedRoutes = await Promise.all(this.routeConstructors.map(async (rc) => {
46
+ try {
47
+ const protocolSupported = rc.supportedNetworks().includes(this.wh.network) &&
48
+ rc.supportedChains(this.wh.network).includes(request.to.chain) &&
49
+ rc.supportedChains(this.wh.network).includes(request.from.chain) &&
50
+ rc.isProtocolSupported(request.fromChain) &&
51
+ rc.isProtocolSupported(request.toChain);
52
+ const sourceTokenAddress = (0, sdk_definitions_1.canonicalAddress)((0, sdk_definitions_1.isNative)(request.source.id.address) ? request.source.wrapped : request.source.id);
53
+ const sourceTokenSupported = (await rc.supportedSourceTokens(request.fromChain)).filter((tokenId) => {
54
+ return (0, sdk_definitions_1.canonicalAddress)(tokenId) === sourceTokenAddress;
55
+ }).length > 0;
56
+ const dstTokenAddress = (0, sdk_definitions_1.canonicalAddress)((0, sdk_definitions_1.isNative)(request.destination.id.address)
57
+ ? request.destination.wrapped
58
+ : request.destination.id);
59
+ const destinationTokenSupported = (await rc.supportedDestinationTokens(request.source.id, request.fromChain, request.toChain)).filter((tokenId) => {
60
+ return (0, sdk_definitions_1.canonicalAddress)(tokenId) === dstTokenAddress;
61
+ }).length > 0;
62
+ return protocolSupported && sourceTokenSupported && destinationTokenSupported;
63
+ }
64
+ catch (e) {
65
+ console.error(`failed to find routes for ${rc.meta.name}: `, e);
66
+ return false;
67
+ }
68
+ })).then((routesSupported) => this.routeConstructors.filter((_, index) => routesSupported[index]));
69
+ // Next, we make sure all supported routes are available. For relayed routes, this will ping
70
+ // the relayer to make sure it's online.
71
+ return await Promise.all(supportedRoutes.map(async (rc) => {
72
+ const route = new rc(this.wh, request);
73
+ try {
74
+ const available = (0, route_js_1.isAutomatic)(route) ? await route.isAvailable() : true;
75
+ return [route, available];
76
+ }
77
+ catch (e) {
78
+ console.error(`failed to check if route is available for ${rc.meta.name}: `, e);
79
+ return [route, false];
80
+ }
81
+ }))
82
+ .then((availableRoutes) => availableRoutes.filter(([_, available]) => available))
83
+ .then((availableRoutes) => availableRoutes.map(([route, _]) => route));
84
+ }
85
+ }
86
+ exports.RouteResolver = RouteResolver;
87
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/routes/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import type { ChainContext, Signer, TokenId, TransactionId } from "@wormhole-foundation/sdk-definitions";
3
+ import type { Wormhole } from "../wormhole.js";
4
+ import type { RouteTransferRequest } from "./request.js";
5
+ import type { Options, Quote, QuoteResult, Receipt, TransferParams, ValidatedTransferParams, ValidationResult } from "./types.js";
6
+ export declare abstract class Route<N extends Network, OP extends Options = Options, VP extends ValidatedTransferParams<OP> = ValidatedTransferParams<OP>, R extends Receipt = Receipt> {
7
+ wh: Wormhole<N>;
8
+ request: RouteTransferRequest<N>;
9
+ abstract readonly NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
10
+ abstract readonly IS_AUTOMATIC: boolean;
11
+ constructor(wh: Wormhole<N>, request: RouteTransferRequest<N>);
12
+ abstract validate(params: TransferParams<OP>): Promise<ValidationResult<OP>>;
13
+ abstract quote(params: ValidatedTransferParams<OP>): Promise<QuoteResult<OP, VP>>;
14
+ abstract initiate(sender: Signer, quote: Quote<OP, VP>): Promise<R>;
15
+ abstract track(receipt: R, timeout?: number): AsyncGenerator<R>;
16
+ transferUrl(txid: string): string;
17
+ abstract getDefaultOptions(): OP;
18
+ }
19
+ export interface RouteMeta {
20
+ name: string;
21
+ logo?: string;
22
+ support?: string;
23
+ source?: string;
24
+ }
25
+ export interface RouteConstructor {
26
+ new <N extends Network>(wh: Wormhole<N>, request: RouteTransferRequest<N>): Route<N>;
27
+ readonly meta: RouteMeta;
28
+ supportedNetworks(): Network[];
29
+ supportedChains(network: Network): Chain[];
30
+ isProtocolSupported<N extends Network>(chain: ChainContext<N>): boolean;
31
+ supportedSourceTokens(fromChain: ChainContext<Network>): Promise<TokenId[]>;
32
+ supportedDestinationTokens<N extends Network>(token: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): Promise<TokenId[]>;
33
+ }
34
+ export type StaticRouteMethods<I extends RouteConstructor> = InstanceType<I>;
35
+ export declare abstract class AutomaticRoute<N extends Network, OP extends Options = Options, VP extends ValidatedTransferParams<OP> = ValidatedTransferParams<OP>, R extends Receipt = Receipt> extends Route<N, OP, VP, R> {
36
+ IS_AUTOMATIC: boolean;
37
+ abstract isAvailable(): Promise<boolean>;
38
+ }
39
+ export declare function isAutomatic<N extends Network>(route: Route<N>): route is AutomaticRoute<N>;
40
+ export declare abstract class ManualRoute<N extends Network, OP extends Options = Options, VP extends ValidatedTransferParams<OP> = ValidatedTransferParams<OP>, R extends Receipt = Receipt> extends Route<N, OP, VP, R> {
41
+ NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
42
+ IS_AUTOMATIC: boolean;
43
+ abstract complete(sender: Signer, receipt: R): Promise<TransactionId[]>;
44
+ }
45
+ export declare function isManual<N extends Network>(route: Route<N>): route is ManualRoute<N>;
46
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/routes/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,OAAO,EACP,aAAa,EACd,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAO,EACP,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,8BAAsB,KAAK,CACzB,CAAC,SAAS,OAAO,EACjB,EAAE,SAAS,OAAO,GAAG,OAAO,EAC5B,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACpE,CAAC,SAAS,OAAO,GAAG,OAAO;IAE3B,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAGjC,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAC;IAExD,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;gBAErB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;aAOpD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;aAGnE,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aAGxE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;aAG1D,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;IAGtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;aAKjB,iBAAiB,IAAI,EAAE;CACxC;AAED,MAAM,WAAW,SAAS;IAGxB,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAErF,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAEzB,iBAAiB,IAAI,OAAO,EAAE,CAAC;IAE/B,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC;IAE3C,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAExE,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5E,0BAA0B,CAAC,CAAC,SAAS,OAAO,EAC1C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACvB;AAGD,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,gBAAgB,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAE7E,8BAAsB,cAAc,CAClC,CAAC,SAAS,OAAO,EACjB,EAAE,SAAS,OAAO,GAAG,OAAO,EAC5B,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACpE,CAAC,SAAS,OAAO,GAAG,OAAO,CAC3B,SAAQ,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,YAAY,UAAQ;aACJ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAChD;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAE1F;AAED,8BAAsB,WAAW,CAC/B,CAAC,SAAS,OAAO,EACjB,EAAE,SAAS,OAAO,GAAG,OAAO,EAC5B,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE,CAAC,EACpE,CAAC,SAAS,OAAO,GAAG,OAAO,CAC3B,SAAQ,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,4BAA4B,UAAS;IACrC,YAAY,UAAS;aACL,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAC/E;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEpF"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isManual = exports.ManualRoute = exports.isAutomatic = exports.AutomaticRoute = exports.Route = void 0;
4
+ class Route {
5
+ wh;
6
+ request;
7
+ constructor(wh, request) {
8
+ this.wh = wh;
9
+ this.request = request;
10
+ }
11
+ // Get the url to view the transfer on the explorer for the route provider
12
+ transferUrl(txid) {
13
+ return `https://wormholescan.io/#/tx/${txid}?network=${this.wh.network}`;
14
+ }
15
+ }
16
+ exports.Route = Route;
17
+ class AutomaticRoute extends Route {
18
+ IS_AUTOMATIC = true;
19
+ }
20
+ exports.AutomaticRoute = AutomaticRoute;
21
+ function isAutomatic(route) {
22
+ return route.isAvailable !== undefined && route.IS_AUTOMATIC;
23
+ }
24
+ exports.isAutomatic = isAutomatic;
25
+ class ManualRoute extends Route {
26
+ NATIVE_GAS_DROPOFF_SUPPORTED = false;
27
+ IS_AUTOMATIC = false;
28
+ }
29
+ exports.ManualRoute = ManualRoute;
30
+ function isManual(route) {
31
+ return route.complete !== undefined;
32
+ }
33
+ exports.isManual = isManual;
34
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/routes/route.ts"],"names":[],"mappings":";;;AAmBA,MAAsB,KAAK;IAMzB,EAAE,CAAc;IAChB,OAAO,CAA0B;IAOjC,YAAmB,EAAe,EAAE,OAAgC;QAClE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAeD,0EAA0E;IAC1E,WAAW,CAAC,IAAY;QACtB,OAAO,gCAAgC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;CAIF;AAvCD,sBAuCC;AAqCD,MAAsB,cAKpB,SAAQ,KAAmB;IAC3B,YAAY,GAAG,IAAI,CAAC;CAErB;AARD,wCAQC;AAED,SAAgB,WAAW,CAAoB,KAAe;IAC5D,OAAQ,KAA2B,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;AACtF,CAAC;AAFD,kCAEC;AAED,MAAsB,WAKpB,SAAQ,KAAmB;IAC3B,4BAA4B,GAAG,KAAK,CAAC;IACrC,YAAY,GAAG,KAAK,CAAC;CAEtB;AATD,kCASC;AAED,SAAgB,QAAQ,CAAoB,KAAe;IACzD,OAAQ,KAAwB,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC1D,CAAC;AAFD,4BAEC"}
@@ -0,0 +1,13 @@
1
+ import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { tokens } from "@wormhole-foundation/sdk-base";
3
+ import type { ChainContext, TokenId } from "@wormhole-foundation/sdk-definitions";
4
+ export interface TokenDetails {
5
+ id: TokenId;
6
+ decimals: number;
7
+ symbol?: tokens.TokenSymbol;
8
+ wrapped?: TokenId;
9
+ }
10
+ export declare function uniqueTokens<C extends Chain>(tokens: TokenId<C>[]): TokenId<C>[];
11
+ export declare function tokenAddresses(tokens: TokenId[]): string[];
12
+ export declare function getTokenDetails<N extends Network>(chain: ChainContext<N>, token: TokenId): Promise<TokenDetails>;
13
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/routes/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAIlF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAUhF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,OAAO,EACrD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,YAAY,CAAC,CAiBvB"}