@wormhole-foundation/sdk-route-ntt 6.2.0 → 6.3.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.
- package/dist/cjs/executor/executor.d.ts +9 -9
- package/dist/cjs/executor/multiToken.d.ts +8 -8
- package/dist/cjs/executor/multiToken.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -11
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +0 -5
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/executor/executor.d.ts +9 -9
- package/dist/esm/executor/multiToken.d.ts +8 -8
- package/dist/esm/executor/multiToken.d.ts.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +2 -11
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +0 -5
- package/dist/esm/types.js.map +1 -1
- package/package.json +5 -5
- package/dist/cjs/automatic.d.ts +0 -59
- package/dist/cjs/automatic.d.ts.map +0 -1
- package/dist/cjs/automatic.js +0 -324
- package/dist/cjs/automatic.js.map +0 -1
- package/dist/esm/automatic.d.ts +0 -59
- package/dist/esm/automatic.d.ts.map +0 -1
- package/dist/esm/automatic.js +0 -286
- package/dist/esm/automatic.js.map +0 -1
package/dist/esm/automatic.js
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { TransferState, Wormhole, amount, canonicalAddress, chainToPlatform, finality, guardians, isAttested, isDestinationQueued, isNative, isRedeemed, isSourceFinalized, isSourceInitiated, signSendWait, } from "@wormhole-foundation/sdk-connect";
|
|
2
|
-
import * as routes from "@wormhole-foundation/sdk-connect/routes";
|
|
3
|
-
import { NttRoute } from "./types.js";
|
|
4
|
-
export function nttAutomaticRoute(config) {
|
|
5
|
-
class NttRouteImpl extends NttAutomaticRoute {
|
|
6
|
-
static config = config;
|
|
7
|
-
}
|
|
8
|
-
return NttRouteImpl;
|
|
9
|
-
}
|
|
10
|
-
export class NttAutomaticRoute extends routes.AutomaticRoute {
|
|
11
|
-
// ntt does not support gas drop-off currently
|
|
12
|
-
static NATIVE_GAS_DROPOFF_SUPPORTED = false;
|
|
13
|
-
// @ts-ignore
|
|
14
|
-
// Since we set the config on the static class, access it with this param
|
|
15
|
-
// the NttManualRoute.config will always be empty
|
|
16
|
-
staticConfig = this.constructor.config;
|
|
17
|
-
static config = { tokens: {} };
|
|
18
|
-
static meta = { name: "AutomaticNtt" };
|
|
19
|
-
static supportedNetworks() {
|
|
20
|
-
return NttRoute.resolveSupportedNetworks(this.config);
|
|
21
|
-
}
|
|
22
|
-
static supportedChains(network) {
|
|
23
|
-
return NttRoute.resolveSupportedChains(this.config, network);
|
|
24
|
-
}
|
|
25
|
-
static async supportedSourceTokens(fromChain) {
|
|
26
|
-
return NttRoute.resolveSourceTokens(this.config, fromChain);
|
|
27
|
-
}
|
|
28
|
-
static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
|
|
29
|
-
return NttRoute.resolveDestinationTokens(this.config, sourceToken, fromChain, toChain);
|
|
30
|
-
}
|
|
31
|
-
static isProtocolSupported(chain) {
|
|
32
|
-
return chain.supportsProtocol("Ntt");
|
|
33
|
-
}
|
|
34
|
-
getDefaultOptions() {
|
|
35
|
-
return NttRoute.AutomaticOptions;
|
|
36
|
-
}
|
|
37
|
-
async isAvailable(request) {
|
|
38
|
-
const { srcContracts } = NttRoute.resolveNttContracts(this.staticConfig, request.source.id, request.destination.id);
|
|
39
|
-
const ntt = await request.fromChain.getProtocol("Ntt", {
|
|
40
|
-
ntt: srcContracts,
|
|
41
|
-
});
|
|
42
|
-
return ntt.isRelayingAvailable(request.toChain.chain);
|
|
43
|
-
}
|
|
44
|
-
async validate(request, params) {
|
|
45
|
-
const options = params.options ?? this.getDefaultOptions();
|
|
46
|
-
const wrapNative = isNative(request.source.id.address);
|
|
47
|
-
const parsedAmount = amount.parse(params.amount, request.source.decimals);
|
|
48
|
-
// The trimmedAmount may differ from the parsedAmount if the parsedAmount includes dust
|
|
49
|
-
const trimmedAmount = NttRoute.trimAmount(parsedAmount, request.destination.decimals);
|
|
50
|
-
const { srcContracts, dstContracts } = NttRoute.resolveNttContracts(this.staticConfig, request.source.id, request.destination.id);
|
|
51
|
-
const validatedParams = {
|
|
52
|
-
amount: params.amount,
|
|
53
|
-
normalizedParams: {
|
|
54
|
-
amount: trimmedAmount,
|
|
55
|
-
sourceContracts: srcContracts,
|
|
56
|
-
destinationContracts: dstContracts,
|
|
57
|
-
options: {
|
|
58
|
-
queue: false,
|
|
59
|
-
automatic: true,
|
|
60
|
-
wrapNative,
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
options,
|
|
64
|
-
};
|
|
65
|
-
return { valid: true, params: validatedParams };
|
|
66
|
-
}
|
|
67
|
-
async quote(request, params) {
|
|
68
|
-
const { fromChain, toChain } = request;
|
|
69
|
-
const ntt = await fromChain.getProtocol("Ntt", {
|
|
70
|
-
ntt: params.normalizedParams.sourceContracts,
|
|
71
|
-
});
|
|
72
|
-
if (!(await ntt.isRelayingAvailable(toChain.chain))) {
|
|
73
|
-
return {
|
|
74
|
-
success: false,
|
|
75
|
-
error: new Error(`Relaying to chain ${toChain.chain} is not available`),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
const deliveryPrice = await ntt.quoteDeliveryPrice(toChain.chain, params.normalizedParams.options);
|
|
79
|
-
const dstAmount = amount.scale(params.normalizedParams.amount, request.destination.decimals);
|
|
80
|
-
const result = {
|
|
81
|
-
success: true,
|
|
82
|
-
params,
|
|
83
|
-
sourceToken: {
|
|
84
|
-
token: request.source.id,
|
|
85
|
-
amount: params.normalizedParams.amount,
|
|
86
|
-
},
|
|
87
|
-
destinationToken: {
|
|
88
|
-
token: request.destination.id,
|
|
89
|
-
amount: dstAmount,
|
|
90
|
-
},
|
|
91
|
-
relayFee: {
|
|
92
|
-
token: Wormhole.tokenId(fromChain.chain, "native"),
|
|
93
|
-
amount: amount.fromBaseUnits(deliveryPrice, fromChain.config.nativeTokenDecimals),
|
|
94
|
-
},
|
|
95
|
-
eta: params.normalizedParams.sourceContracts.eta ??
|
|
96
|
-
finality.estimateFinalityTime(request.fromChain.chain) +
|
|
97
|
-
guardians.guardianAttestationEta * 1000,
|
|
98
|
-
};
|
|
99
|
-
const dstNtt = await toChain.getProtocol("Ntt", {
|
|
100
|
-
ntt: params.normalizedParams.destinationContracts,
|
|
101
|
-
});
|
|
102
|
-
const duration = await dstNtt.getRateLimitDuration();
|
|
103
|
-
if (duration > 0n) {
|
|
104
|
-
const capacity = await dstNtt.getCurrentInboundCapacity(fromChain.chain);
|
|
105
|
-
if (NttRoute.isCapacityThresholdExceeded(amount.units(dstAmount), capacity)) {
|
|
106
|
-
result.warnings = [
|
|
107
|
-
{
|
|
108
|
-
type: "DestinationCapacityWarning",
|
|
109
|
-
delayDurationSec: Number(duration),
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return result;
|
|
115
|
-
}
|
|
116
|
-
async initiate(request, signer, quote, to) {
|
|
117
|
-
const { params } = quote;
|
|
118
|
-
const { fromChain } = request;
|
|
119
|
-
const sender = Wormhole.parseAddress(signer.chain(), signer.address());
|
|
120
|
-
const ntt = await fromChain.getProtocol("Ntt", {
|
|
121
|
-
ntt: params.normalizedParams.sourceContracts,
|
|
122
|
-
});
|
|
123
|
-
const initXfer = ntt.transfer(sender, amount.units(params.normalizedParams.amount), to, params.normalizedParams.options);
|
|
124
|
-
const txids = await signSendWait(fromChain, initXfer, signer);
|
|
125
|
-
return {
|
|
126
|
-
from: fromChain.chain,
|
|
127
|
-
to: to.chain,
|
|
128
|
-
state: TransferState.SourceInitiated,
|
|
129
|
-
originTxs: txids,
|
|
130
|
-
params,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
async resume(tx) {
|
|
134
|
-
const vaa = await this.wh.getVaa(tx.txid, "Ntt:WormholeTransferStandardRelayer");
|
|
135
|
-
if (!vaa)
|
|
136
|
-
throw new Error("No VAA found for transaction: " + tx.txid);
|
|
137
|
-
const msgId = {
|
|
138
|
-
chain: vaa.emitterChain,
|
|
139
|
-
emitter: vaa.emitterAddress,
|
|
140
|
-
sequence: vaa.sequence,
|
|
141
|
-
};
|
|
142
|
-
const { payload } = vaa.payload;
|
|
143
|
-
const { recipientChain, trimmedAmount } = payload["nttManagerPayload"].payload;
|
|
144
|
-
const token = canonicalAddress({
|
|
145
|
-
chain: vaa.emitterChain,
|
|
146
|
-
address: payload["nttManagerPayload"].payload.sourceToken,
|
|
147
|
-
});
|
|
148
|
-
const manager = canonicalAddress({
|
|
149
|
-
chain: vaa.emitterChain,
|
|
150
|
-
address: payload["sourceNttManager"],
|
|
151
|
-
});
|
|
152
|
-
const whTransceiver = chainToPlatform(vaa.emitterChain) === "Solana"
|
|
153
|
-
? manager
|
|
154
|
-
: canonicalAddress({
|
|
155
|
-
chain: vaa.emitterChain,
|
|
156
|
-
address: vaa.emitterAddress,
|
|
157
|
-
});
|
|
158
|
-
const dstInfo = NttRoute.resolveDestinationNttContracts(this.staticConfig, {
|
|
159
|
-
chain: vaa.emitterChain,
|
|
160
|
-
address: payload["sourceNttManager"],
|
|
161
|
-
}, recipientChain);
|
|
162
|
-
const amt = amount.fromBaseUnits(trimmedAmount.amount, trimmedAmount.decimals);
|
|
163
|
-
return {
|
|
164
|
-
from: vaa.emitterChain,
|
|
165
|
-
to: recipientChain,
|
|
166
|
-
state: TransferState.Attested,
|
|
167
|
-
originTxs: [tx],
|
|
168
|
-
attestation: {
|
|
169
|
-
id: msgId,
|
|
170
|
-
attestation: vaa,
|
|
171
|
-
},
|
|
172
|
-
params: {
|
|
173
|
-
amount: amount.display(amt),
|
|
174
|
-
options: { automatic: true },
|
|
175
|
-
normalizedParams: {
|
|
176
|
-
amount: amt,
|
|
177
|
-
options: { queue: false, automatic: true },
|
|
178
|
-
sourceContracts: {
|
|
179
|
-
token,
|
|
180
|
-
manager,
|
|
181
|
-
transceiver: {
|
|
182
|
-
wormhole: whTransceiver,
|
|
183
|
-
},
|
|
184
|
-
},
|
|
185
|
-
destinationContracts: {
|
|
186
|
-
token: dstInfo.token,
|
|
187
|
-
manager: dstInfo.manager,
|
|
188
|
-
transceiver: {
|
|
189
|
-
wormhole: dstInfo.transceiver["wormhole"],
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
// Even though this is an automatic route, the transfer may need to be
|
|
197
|
-
// manually finalized if it was queued
|
|
198
|
-
async finalize(signer, receipt) {
|
|
199
|
-
if (!isDestinationQueued(receipt)) {
|
|
200
|
-
throw new Error("The transfer must be destination queued in order to finalize");
|
|
201
|
-
}
|
|
202
|
-
const { attestation: { attestation: vaa }, } = receipt;
|
|
203
|
-
const toChain = this.wh.getChain(receipt.to);
|
|
204
|
-
const ntt = await toChain.getProtocol("Ntt", {
|
|
205
|
-
ntt: receipt.params.normalizedParams.destinationContracts,
|
|
206
|
-
});
|
|
207
|
-
const sender = Wormhole.chainAddress(signer.chain(), signer.address());
|
|
208
|
-
const payload = vaa.payloadName === "WormholeTransfer"
|
|
209
|
-
? vaa.payload
|
|
210
|
-
: vaa.payload["payload"];
|
|
211
|
-
const completeTransfer = ntt.completeInboundQueuedTransfer(receipt.from, payload["nttManagerPayload"], sender.address);
|
|
212
|
-
const finalizeTxids = await signSendWait(toChain, completeTransfer, signer);
|
|
213
|
-
return {
|
|
214
|
-
...receipt,
|
|
215
|
-
state: TransferState.DestinationFinalized,
|
|
216
|
-
destinationTxs: [...(receipt.destinationTxs ?? []), ...finalizeTxids],
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
async *track(receipt, timeout) {
|
|
220
|
-
if (isSourceInitiated(receipt) || isSourceFinalized(receipt)) {
|
|
221
|
-
const { txid } = receipt.originTxs[receipt.originTxs.length - 1];
|
|
222
|
-
const isEvmPlatform = (chain) => chainToPlatform(chain) === "Evm";
|
|
223
|
-
const vaaType = isEvmPlatform(receipt.from) && isEvmPlatform(receipt.to)
|
|
224
|
-
? // Automatic NTT transfers between EVM chains use standard relayers
|
|
225
|
-
"Ntt:WormholeTransferStandardRelayer"
|
|
226
|
-
: "Ntt:WormholeTransfer";
|
|
227
|
-
const vaa = await this.wh.getVaa(txid, vaaType, timeout);
|
|
228
|
-
if (!vaa) {
|
|
229
|
-
throw new Error(`No VAA found for transaction: ${txid}`);
|
|
230
|
-
}
|
|
231
|
-
const msgId = {
|
|
232
|
-
chain: vaa.emitterChain,
|
|
233
|
-
emitter: vaa.emitterAddress,
|
|
234
|
-
sequence: vaa.sequence,
|
|
235
|
-
};
|
|
236
|
-
receipt = {
|
|
237
|
-
...receipt,
|
|
238
|
-
state: TransferState.Attested,
|
|
239
|
-
attestation: {
|
|
240
|
-
id: msgId,
|
|
241
|
-
attestation: vaa,
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
|
-
yield receipt;
|
|
245
|
-
}
|
|
246
|
-
const toChain = this.wh.getChain(receipt.to);
|
|
247
|
-
const ntt = await toChain.getProtocol("Ntt", {
|
|
248
|
-
ntt: receipt.params.normalizedParams.destinationContracts,
|
|
249
|
-
});
|
|
250
|
-
if (isAttested(receipt)) {
|
|
251
|
-
const { attestation: { attestation: vaa }, } = receipt;
|
|
252
|
-
if (await ntt.getIsApproved(vaa)) {
|
|
253
|
-
receipt = {
|
|
254
|
-
...receipt,
|
|
255
|
-
state: TransferState.DestinationInitiated,
|
|
256
|
-
// TODO: check for destination event transactions to get dest Txids
|
|
257
|
-
};
|
|
258
|
-
yield receipt;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
if (isRedeemed(receipt) || isDestinationQueued(receipt)) {
|
|
262
|
-
const { attestation: { attestation: vaa }, } = receipt;
|
|
263
|
-
const payload = vaa.payloadName === "WormholeTransfer"
|
|
264
|
-
? vaa.payload
|
|
265
|
-
: vaa.payload["payload"];
|
|
266
|
-
const queuedTransfer = await ntt.getInboundQueuedTransfer(vaa.emitterChain, payload["nttManagerPayload"]);
|
|
267
|
-
if (queuedTransfer !== null) {
|
|
268
|
-
receipt = {
|
|
269
|
-
...receipt,
|
|
270
|
-
state: TransferState.DestinationQueued,
|
|
271
|
-
queueReleaseTime: new Date(queuedTransfer.rateLimitExpiryTimestamp * 1000),
|
|
272
|
-
};
|
|
273
|
-
yield receipt;
|
|
274
|
-
}
|
|
275
|
-
else if (await ntt.getIsExecuted(vaa)) {
|
|
276
|
-
receipt = {
|
|
277
|
-
...receipt,
|
|
278
|
-
state: TransferState.DestinationFinalized,
|
|
279
|
-
};
|
|
280
|
-
yield receipt;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
yield receipt;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
//# sourceMappingURL=automatic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"automatic.js","sourceRoot":"","sources":["../../src/automatic.ts"],"names":[],"mappings":"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"}
|