@hyperlane-xyz/rebalancer 3.2.1 → 25.5.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/bridges/LiFiBridge.d.ts +12 -2
- package/dist/bridges/LiFiBridge.d.ts.map +1 -1
- package/dist/bridges/LiFiBridge.js +36 -1
- package/dist/bridges/LiFiBridge.js.map +1 -1
- package/dist/bridges/LiFiBridge.test.d.ts +2 -0
- package/dist/bridges/LiFiBridge.test.d.ts.map +1 -0
- package/dist/bridges/LiFiBridge.test.js +412 -0
- package/dist/bridges/LiFiBridge.test.js.map +1 -0
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.js +20 -0
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -1
- package/dist/interfaces/IExternalBridge.d.ts +3 -2
- package/dist/interfaces/IExternalBridge.d.ts.map +1 -1
- package/dist/service.js +0 -0
- package/dist/test/lifiMocks.d.ts +1 -0
- package/dist/test/lifiMocks.d.ts.map +1 -1
- package/dist/test/lifiMocks.js +36 -6
- package/dist/test/lifiMocks.js.map +1 -1
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +44 -4
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/tracking/ActionTracker.test.js +284 -1
- package/dist/tracking/ActionTracker.test.js.map +1 -1
- package/dist/tracking/types.d.ts +3 -0
- package/dist/tracking/types.d.ts.map +1 -1
- package/package.json +7 -10
- package/src/bridges/LiFiBridge.test.ts +510 -0
- package/src/bridges/LiFiBridge.ts +84 -48
- package/src/config/types.ts +2 -0
- package/src/e2e/harness/MockExternalBridge.ts +32 -0
- package/src/interfaces/IExternalBridge.ts +3 -2
- package/src/test/lifiMocks.ts +43 -6
- package/src/tracking/ActionTracker.test.ts +336 -1
- package/src/tracking/ActionTracker.ts +53 -4
- package/src/tracking/types.ts +3 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type LiFiStep } from '@lifi/sdk';
|
|
1
2
|
import type { Logger } from 'pino';
|
|
2
3
|
import type { BridgeQuote, BridgeQuoteParams, BridgeTransferResult, BridgeTransferStatus, ExternalBridgeConfig, IExternalBridge } from '../interfaces/IExternalBridge.js';
|
|
3
4
|
/**
|
|
@@ -33,7 +34,7 @@ export declare class LiFiBridge implements IExternalBridge {
|
|
|
33
34
|
*
|
|
34
35
|
* Returns route data ready for execution.
|
|
35
36
|
*/
|
|
36
|
-
quote(params: BridgeQuoteParams): Promise<BridgeQuote
|
|
37
|
+
quote(params: BridgeQuoteParams): Promise<BridgeQuote<LiFiStep>>;
|
|
37
38
|
/**
|
|
38
39
|
* Get a quote by specifying the amount to send (standard quote).
|
|
39
40
|
* Uses the LiFi SDK.
|
|
@@ -57,7 +58,16 @@ export declare class LiFiBridge implements IExternalBridge {
|
|
|
57
58
|
* @param quote - Quote obtained from quote()
|
|
58
59
|
* @param privateKey - Private key hex string (0x-prefixed) for signing the transaction
|
|
59
60
|
*/
|
|
60
|
-
execute(quote: BridgeQuote
|
|
61
|
+
execute(quote: BridgeQuote<LiFiStep>, privateKey: string): Promise<BridgeTransferResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Validate that the route returned by LiFi matches the original request parameters.
|
|
64
|
+
* Prevents execution against wrong chains, tokens, or recipients if the bridge API
|
|
65
|
+
* returns a route that diverges from what was originally requested.
|
|
66
|
+
*
|
|
67
|
+
* TODO: Layer 2 validation — validate transaction calldata in route.steps[].transactionRequest
|
|
68
|
+
* and route.steps[0].estimate.approvalAddress against a known whitelist.
|
|
69
|
+
*/
|
|
70
|
+
private validateRouteAgainstRequest;
|
|
61
71
|
/**
|
|
62
72
|
* Get the status of a bridge transfer.
|
|
63
73
|
* Uses SDK's built-in status tracking.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiFiBridge.d.ts","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LiFiBridge.d.ts","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EASd,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAMnC,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AA2C1C;;;;;;;;;;GAUG;AACH,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACG;IAE/C,QAAQ,CAAC,gBAAgB,UAAU;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKxD,qBAAqB,IAAI,MAAM;IAI/B,OAAO,CAAC,UAAU;IAelB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IA8BtE;;;OAGG;YACW,qBAAqB;IAgDnC;;;OAGG;YACW,sBAAsB;IAqEpC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA2BpB;;;;;;OAMG;IACG,OAAO,CACX,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC;IA8HhC;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IAmDnC;;;OAGG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;CAiDjC"}
|
|
@@ -2,6 +2,7 @@ import { EVM, convertQuoteToRoute, createConfig, executeRoute, getQuote, getStat
|
|
|
2
2
|
import { createWalletClient, http } from 'viem';
|
|
3
3
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
4
|
import { arbitrum, base, mainnet, optimism } from 'viem/chains';
|
|
5
|
+
import { assert } from '@hyperlane-xyz/utils';
|
|
5
6
|
/**
|
|
6
7
|
* LiFi API base URL for REST endpoints.
|
|
7
8
|
* The SDK doesn't support toAmount quotes, so we use REST API directly.
|
|
@@ -51,7 +52,7 @@ function getViemChain(chainId, rpcUrl) {
|
|
|
51
52
|
* @see https://docs.li.fi/integrate-li.fi-sdk
|
|
52
53
|
*/
|
|
53
54
|
export class LiFiBridge {
|
|
54
|
-
static NATIVE_TOKEN_ADDRESS = '
|
|
55
|
+
static NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
55
56
|
externalBridgeId = 'lifi';
|
|
56
57
|
logger;
|
|
57
58
|
initialized = false;
|
|
@@ -104,6 +105,8 @@ export class LiFiBridge {
|
|
|
104
105
|
if (params.fromAmount === undefined && params.toAmount === undefined) {
|
|
105
106
|
throw new Error('Must specify either fromAmount or toAmount');
|
|
106
107
|
}
|
|
108
|
+
assert(params.fromAmount === undefined || params.fromAmount > 0n, 'fromAmount must be positive');
|
|
109
|
+
assert(params.toAmount === undefined || params.toAmount > 0n, 'toAmount must be positive');
|
|
107
110
|
// Dispatch to appropriate quote method
|
|
108
111
|
if (params.toAmount !== undefined) {
|
|
109
112
|
return this.quoteByReceivingAmount(params);
|
|
@@ -151,6 +154,7 @@ export class LiFiBridge {
|
|
|
151
154
|
gasCosts,
|
|
152
155
|
feeCosts,
|
|
153
156
|
route: quote, // Store full quote for conversion to route
|
|
157
|
+
requestParams: { ...params },
|
|
154
158
|
};
|
|
155
159
|
}
|
|
156
160
|
/**
|
|
@@ -205,6 +209,7 @@ export class LiFiBridge {
|
|
|
205
209
|
gasCosts,
|
|
206
210
|
feeCosts,
|
|
207
211
|
route: quote, // Store full quote for conversion to route
|
|
212
|
+
requestParams: { ...params },
|
|
208
213
|
};
|
|
209
214
|
}
|
|
210
215
|
/**
|
|
@@ -243,6 +248,7 @@ export class LiFiBridge {
|
|
|
243
248
|
this.initialize();
|
|
244
249
|
// Convert quote to route for execution
|
|
245
250
|
const route = convertQuoteToRoute(quote.route);
|
|
251
|
+
this.validateRouteAgainstRequest(route, quote.requestParams);
|
|
246
252
|
const fromChain = route.fromChainId;
|
|
247
253
|
const toChain = route.toChainId;
|
|
248
254
|
this.logger.info({
|
|
@@ -335,6 +341,35 @@ export class LiFiBridge {
|
|
|
335
341
|
transferId,
|
|
336
342
|
};
|
|
337
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Validate that the route returned by LiFi matches the original request parameters.
|
|
346
|
+
* Prevents execution against wrong chains, tokens, or recipients if the bridge API
|
|
347
|
+
* returns a route that diverges from what was originally requested.
|
|
348
|
+
*
|
|
349
|
+
* TODO: Layer 2 validation — validate transaction calldata in route.steps[].transactionRequest
|
|
350
|
+
* and route.steps[0].estimate.approvalAddress against a known whitelist.
|
|
351
|
+
*/
|
|
352
|
+
validateRouteAgainstRequest(route, requestParams) {
|
|
353
|
+
assert(route.fromChainId === requestParams.fromChain, `Route fromChainId ${route.fromChainId} does not match requested ${requestParams.fromChain}`);
|
|
354
|
+
assert(route.toChainId === requestParams.toChain, `Route toChainId ${route.toChainId} does not match requested ${requestParams.toChain}`);
|
|
355
|
+
assert(route.fromToken.address.toLowerCase() ===
|
|
356
|
+
requestParams.fromToken.toLowerCase(), `Route fromToken ${route.fromToken.address} does not match requested ${requestParams.fromToken}`);
|
|
357
|
+
assert(route.toToken.address.toLowerCase() ===
|
|
358
|
+
requestParams.toToken.toLowerCase(), `Route toToken ${route.toToken.address} does not match requested ${requestParams.toToken}`);
|
|
359
|
+
const expectedToAddress = (requestParams.toAddress ?? requestParams.fromAddress).toLowerCase();
|
|
360
|
+
assert(route.toAddress?.toLowerCase() === expectedToAddress, `Route toAddress ${route.toAddress} does not match requested ${expectedToAddress}`);
|
|
361
|
+
assert(route.fromAddress?.toLowerCase() ===
|
|
362
|
+
requestParams.fromAddress.toLowerCase(), `Route fromAddress ${route.fromAddress} does not match requested ${requestParams.fromAddress}`);
|
|
363
|
+
const routeFromAmount = BigInt(route.fromAmount);
|
|
364
|
+
if (requestParams.fromAmount !== undefined) {
|
|
365
|
+
assert(routeFromAmount === requestParams.fromAmount, `Route fromAmount ${route.fromAmount} does not match requested ${requestParams.fromAmount}`);
|
|
366
|
+
}
|
|
367
|
+
if (requestParams.toAmount !== undefined) {
|
|
368
|
+
const routeToAmount = BigInt(route.toAmount);
|
|
369
|
+
assert(routeToAmount >= requestParams.toAmount, `Route toAmount ${route.toAmount} is less than requested ${requestParams.toAmount}`);
|
|
370
|
+
}
|
|
371
|
+
assert(routeFromAmount > 0n, 'Route fromAmount must be positive');
|
|
372
|
+
}
|
|
338
373
|
/**
|
|
339
374
|
* Get the status of a bridge transfer.
|
|
340
375
|
* Uses SDK's built-in status tracking.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiFiBridge.js","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAEH,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,IAAI,UAAU,GACrB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAc,kBAAkB,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAWhE;;;GAGG;AACH,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAqC5C;;;GAGG;AACH,MAAM,WAAW,GAA0B;IACzC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO;IACrB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ;IACvB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI;IACf,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ;CACxB,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,MAAe;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,SAAS,OAAO,EAAE;QACxB,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5D,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;SAC1C;KACO,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAU,oBAAoB,GAC1C,4CAA4C,CAAC;IAEtC,gBAAgB,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAS;IAChB,WAAW,GAAG,KAAK,CAAC;IACX,MAAM,CAAuB;IAE9C,YAAY,MAA4B,EAAE,MAAc;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,qBAAqB;QACnB,OAAO,UAAU,CAAC,oBAAoB,CAAC;IACzC,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,YAAY,CAAC;YACX,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EACtC,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,OAAe;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QACjD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,MAAyB;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,kEAAkE;QAClE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB,CACjC,MAAyB;QAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,0CAA0C,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAW,CAAC,QAAQ,EAAE;YACzC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW;YACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK;YACjE,uCAAuC;YACvC,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QAEH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAC9C,KAAqC,CACtC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;YACjC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YACvC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB;YACnD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;SAC9B,EACD,kCAAkC,CACnC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAC3C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/C,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB;YACnD,QAAQ;YACR,QAAQ;YACR,KAAK,EAAE,KAAK,EAAE,2CAA2C;SAC1D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAClC,MAAyB;QAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,2CAA2C,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAS,CAAC,QAAQ,EAAE;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW;YACjD,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;iBAChE,OAAO,CAAC,CAAC,CAAC;iBACV,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,aAAa,mBAAmB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,EAClD,8BAA8B,CAC/B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAsB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;YACjC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YACvC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB;YACnD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;SAC9B,EACD,gCAAgC,CACjC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAC3C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/C,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB;YACnD,QAAQ;YACR,QAAQ;YACR,KAAK,EAAE,KAAK,EAAE,2CAA2C;SAC1D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,KAAwB;QAI3C,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,mBAAmB;QACnB,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC3C,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,oFAAoF;QACpF,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,KAAkB,EAClB,UAAkB;QAElB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,uCAAuC;QACvC,MAAM,KAAK,GAAG,mBAAmB,CAC/B,KAAK,CAAC,KAAkD,CACzD,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS;YACT,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;SACxC,EACD,gCAAgC,CACjC,CAAC;QAEF,6DAA6D;QAC7D,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAA2B,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9C,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,OAAO;YACP,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CACf;YACE,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,EACD,8CAA8C,CAC/C,CAAC;QAEF,kEAAkE;QAClE,UAAU,CAAC,YAAY,CAAC;YACtB,GAAG,CAAC;gBACF,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY;gBACzC,WAAW,EAAE,KAAK,EAAE,eAAuB,EAAE,EAAE;oBAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;oBAC/D,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;oBAClE,OAAO,kBAAkB,CAAC;wBACxB,OAAO;wBACP,KAAK,EAAE,aAAa;wBACpB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;qBAC9B,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,MAA0B,CAAC;QAE/B,sCAAsC;QACtC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE;YAC9C,qCAAqC;YACrC,eAAe,EAAE,CAAC,YAA2B,EAAE,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EACnC,oBAAoB,CACrB,CAAC;gBAEF,iGAAiG;gBACjG,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;gBACnD,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC;oBACvB,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;wBACxC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,2CAA2C;YAC3C,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;SAC/C,CAAC,CAAC;QAEH,kEAAkE;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;YACpD,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC;gBACvB,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACxC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBACxB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,EAC7B,kCAAkC,CACnC,CAAC;QAEF,+DAA+D;QAC/D,IAAI,UAA8B,CAAC;QACnC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC;QAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC3D,IAAI,MAAM,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAC;YAC3C,sDAAsD;YACtD,MAAM,IAAI,GAAI,MAAwC,CAAC,gBAAgB,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM;YACN,SAAS;YACT,OAAO;YACP,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CACb,MAAc,EACd,SAAiB,EACjB,OAAe;QAEf,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;gBAC7B,MAAM;gBACN,SAAS;gBACT,OAAO;aACR,CAAC,CAAC;YAEH,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,uGAAuG;oBACvG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBACnC,MAAM,eAAe,GACnB,SAAS,IAAI,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,MAAM,cAAc,GAClB,SAAS,IAAI,QAAQ,IAAI,SAAS;wBAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC;wBACjC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,OAAO;wBACL,MAAM,EAAE,UAAU;wBAClB,eAAe;wBACf,cAAc;qBACf,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ;oBACX,OAAO;wBACL,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,MAAM,CAAC,SAAS;qBACxB,CAAC;gBAEJ,KAAK,WAAW,CAAC;gBACjB,KAAK,SAAS;oBACZ,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBAEjC,KAAK,SAAS,CAAC;gBACf;oBACE,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YACjE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjC,CAAC;IACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"LiFiBridge.js","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiFiBridge.test.d.ts","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { pino } from 'pino';
|
|
3
|
+
import { LiFiBridge } from './LiFiBridge.js';
|
|
4
|
+
const testLogger = pino({ level: 'silent' });
|
|
5
|
+
const TEST_PRIVATE_KEY = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80';
|
|
6
|
+
const BRIDGE_CONFIG = {
|
|
7
|
+
integrator: 'test-rebalancer',
|
|
8
|
+
};
|
|
9
|
+
// Use all-digit hex addresses to avoid EIP-55 checksum case mutations
|
|
10
|
+
const TOKEN_ADDR = '0x1234567890123456789012345678901234567890';
|
|
11
|
+
const SENDER_ADDR = '0x9876543210987654321098765432109876543210';
|
|
12
|
+
const BAD_ADDR = '0x1111111111111111111111111111111111111111';
|
|
13
|
+
/**
|
|
14
|
+
* Creates a LiFiStep object that convertQuoteToRoute can consume.
|
|
15
|
+
* The SDK's convertQuoteToRoute reads action.fromToken.chainId, action.toToken.chainId, etc.
|
|
16
|
+
*/
|
|
17
|
+
function createLiFiStep(overrides) {
|
|
18
|
+
const fromChainId = overrides?.fromChainId ?? 42161;
|
|
19
|
+
const toChainId = overrides?.toChainId ?? 1399811149;
|
|
20
|
+
const fromTokenAddress = overrides?.fromTokenAddress ?? TOKEN_ADDR;
|
|
21
|
+
const toTokenAddress = overrides?.toTokenAddress ?? TOKEN_ADDR;
|
|
22
|
+
const fromAmount = overrides?.fromAmount ?? '10000000000';
|
|
23
|
+
const fromAddress = overrides?.fromAddress ?? SENDER_ADDR;
|
|
24
|
+
const toAddress = overrides?.toAddress ?? SENDER_ADDR;
|
|
25
|
+
return {
|
|
26
|
+
id: 'quote-123',
|
|
27
|
+
type: 'lifi',
|
|
28
|
+
tool: 'across',
|
|
29
|
+
toolDetails: { key: 'across', name: 'Across', logoURI: '' },
|
|
30
|
+
includedSteps: [],
|
|
31
|
+
action: {
|
|
32
|
+
fromToken: {
|
|
33
|
+
chainId: fromChainId,
|
|
34
|
+
address: fromTokenAddress,
|
|
35
|
+
symbol: 'USDC',
|
|
36
|
+
decimals: 6,
|
|
37
|
+
name: 'USD Coin',
|
|
38
|
+
priceUSD: '1',
|
|
39
|
+
},
|
|
40
|
+
toToken: {
|
|
41
|
+
chainId: toChainId,
|
|
42
|
+
address: toTokenAddress,
|
|
43
|
+
symbol: 'USDC',
|
|
44
|
+
decimals: 6,
|
|
45
|
+
name: 'USD Coin',
|
|
46
|
+
priceUSD: '1',
|
|
47
|
+
},
|
|
48
|
+
fromAmount,
|
|
49
|
+
fromAddress,
|
|
50
|
+
toAddress,
|
|
51
|
+
fromChainId,
|
|
52
|
+
toChainId,
|
|
53
|
+
slippage: 0.005,
|
|
54
|
+
},
|
|
55
|
+
estimate: {
|
|
56
|
+
tool: 'across',
|
|
57
|
+
fromAmount,
|
|
58
|
+
fromAmountUSD: '10000',
|
|
59
|
+
toAmount: overrides?.toAmount ?? '9950000000',
|
|
60
|
+
toAmountMin: '9900000000',
|
|
61
|
+
toAmountUSD: '9950',
|
|
62
|
+
approvalAddress: '0x0000000000000000000000000000000000000000',
|
|
63
|
+
executionDuration: 300,
|
|
64
|
+
gasCosts: [
|
|
65
|
+
{
|
|
66
|
+
type: 'SEND',
|
|
67
|
+
price: '50',
|
|
68
|
+
estimate: '21000',
|
|
69
|
+
limit: '26250',
|
|
70
|
+
amount: '50000000',
|
|
71
|
+
amountUSD: '5',
|
|
72
|
+
token: {
|
|
73
|
+
chainId: fromChainId,
|
|
74
|
+
address: '0x0000000000000000000000000000000000000000',
|
|
75
|
+
symbol: 'ETH',
|
|
76
|
+
decimals: 18,
|
|
77
|
+
name: 'Ethereum',
|
|
78
|
+
priceUSD: '3000',
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Creates a BridgeQuote with matching requestParams for the default LiFi step.
|
|
87
|
+
*/
|
|
88
|
+
function createTestQuote(routeOverrides, paramOverrides) {
|
|
89
|
+
const lifiStep = createLiFiStep(routeOverrides);
|
|
90
|
+
const defaultParams = {
|
|
91
|
+
fromChain: 42161,
|
|
92
|
+
toChain: 1399811149,
|
|
93
|
+
fromToken: TOKEN_ADDR,
|
|
94
|
+
toToken: TOKEN_ADDR,
|
|
95
|
+
fromAddress: SENDER_ADDR,
|
|
96
|
+
toAddress: SENDER_ADDR,
|
|
97
|
+
fromAmount: 10000000000n,
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
id: 'quote-123',
|
|
101
|
+
tool: 'across',
|
|
102
|
+
fromAmount: 10000000000n,
|
|
103
|
+
toAmount: 9950000000n,
|
|
104
|
+
toAmountMin: 9900000000n,
|
|
105
|
+
executionDuration: 300,
|
|
106
|
+
gasCosts: 50000000n,
|
|
107
|
+
feeCosts: 0n,
|
|
108
|
+
route: lifiStep,
|
|
109
|
+
requestParams: { ...defaultParams, ...paramOverrides },
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validation regex patterns used by LiFiBridge.execute() assertion messages.
|
|
114
|
+
* If an error message matches any of these, it came from route validation.
|
|
115
|
+
*/
|
|
116
|
+
const VALIDATION_PATTERNS = [
|
|
117
|
+
/Route fromChainId .* does not match requested/,
|
|
118
|
+
/Route toChainId .* does not match requested/,
|
|
119
|
+
/Route fromToken .* does not match requested/,
|
|
120
|
+
/Route toToken .* does not match requested/,
|
|
121
|
+
/Route toAddress .* does not match requested/,
|
|
122
|
+
/Route fromAddress .* does not match requested/,
|
|
123
|
+
/Route fromAmount .* does not match requested/,
|
|
124
|
+
/Route toAmount .* is less than requested/,
|
|
125
|
+
/Route fromAmount must be positive/,
|
|
126
|
+
];
|
|
127
|
+
function isValidationError(msg) {
|
|
128
|
+
return VALIDATION_PATTERNS.some((pattern) => pattern.test(msg));
|
|
129
|
+
}
|
|
130
|
+
describe('LiFiBridge.execute() route validation', function () {
|
|
131
|
+
// Allow extra time for tests that pass validation and reach SDK execution
|
|
132
|
+
this.timeout(15000);
|
|
133
|
+
let bridge;
|
|
134
|
+
beforeEach(() => {
|
|
135
|
+
bridge = new LiFiBridge(BRIDGE_CONFIG, testLogger);
|
|
136
|
+
});
|
|
137
|
+
it('should pass validation when all route fields match requestParams', async () => {
|
|
138
|
+
const quote = createTestQuote();
|
|
139
|
+
try {
|
|
140
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
141
|
+
// If it resolves, validation definitely passed
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
const msg = error.message;
|
|
145
|
+
// Post-validation error (SDK/RPC). Verify it is NOT a route validation error.
|
|
146
|
+
expect(isValidationError(msg), `Expected non-validation error but got: ${msg}`).to.equal(false);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
it('should throw when route fromChainId does not match requested', async () => {
|
|
150
|
+
const quote = createTestQuote({ fromChainId: 999 }, { fromChain: 42161 });
|
|
151
|
+
try {
|
|
152
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
153
|
+
expect.fail('Expected execute to throw');
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const msg = error.message;
|
|
157
|
+
expect(msg).to.include('999');
|
|
158
|
+
expect(msg).to.include('42161');
|
|
159
|
+
expect(msg).to.include('fromChainId');
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
it('should throw when route toChainId does not match requested', async () => {
|
|
163
|
+
const quote = createTestQuote({ toChainId: 888 }, { toChain: 1399811149 });
|
|
164
|
+
try {
|
|
165
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
166
|
+
expect.fail('Expected execute to throw');
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
const msg = error.message;
|
|
170
|
+
expect(msg).to.include('888');
|
|
171
|
+
expect(msg).to.include('1399811149');
|
|
172
|
+
expect(msg).to.include('toChainId');
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
it('should throw when route fromToken does not match requested', async () => {
|
|
176
|
+
const quote = createTestQuote({ fromTokenAddress: BAD_ADDR }, { fromToken: TOKEN_ADDR });
|
|
177
|
+
try {
|
|
178
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
179
|
+
expect.fail('Expected execute to throw');
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const msg = error.message;
|
|
183
|
+
expect(msg).to.include('fromToken');
|
|
184
|
+
// Error message should contain the mismatched address value
|
|
185
|
+
expect(msg.toLowerCase()).to.include(BAD_ADDR.toLowerCase());
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
it('should throw when route toToken does not match requested', async () => {
|
|
189
|
+
const quote = createTestQuote({ toTokenAddress: BAD_ADDR }, { toToken: TOKEN_ADDR });
|
|
190
|
+
try {
|
|
191
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
192
|
+
expect.fail('Expected execute to throw');
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const msg = error.message;
|
|
196
|
+
expect(msg).to.include('toToken');
|
|
197
|
+
expect(msg.toLowerCase()).to.include(BAD_ADDR.toLowerCase());
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
it('should throw when route toAddress does not match requested', async () => {
|
|
201
|
+
const quote = createTestQuote({ toAddress: BAD_ADDR }, { toAddress: SENDER_ADDR });
|
|
202
|
+
try {
|
|
203
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
204
|
+
expect.fail('Expected execute to throw');
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
const msg = error.message;
|
|
208
|
+
expect(msg).to.include('toAddress');
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
it('should throw when route fromAddress does not match requested', async () => {
|
|
212
|
+
const quote = createTestQuote({ fromAddress: BAD_ADDR }, { fromAddress: SENDER_ADDR });
|
|
213
|
+
try {
|
|
214
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
215
|
+
expect.fail('Expected execute to throw');
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
const msg = error.message;
|
|
219
|
+
expect(msg).to.include('fromAddress');
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
it('should pass validation when fromAmount is omitted in requestParams', async () => {
|
|
223
|
+
// Route has fromAmount='99999' but requestParams has no fromAmount.
|
|
224
|
+
// The fromAmount assertion is skipped when requestParams.fromAmount is undefined.
|
|
225
|
+
// The positive amount check still passes (99999 > 0).
|
|
226
|
+
const quote = createTestQuote({ fromAmount: '99999' }, { fromAmount: undefined });
|
|
227
|
+
try {
|
|
228
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
const msg = error.message;
|
|
232
|
+
expect(isValidationError(msg), `Expected non-validation error but got: ${msg}`).to.equal(false);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
it('should throw when route fromAmount does not match requested', async () => {
|
|
236
|
+
const quote = createTestQuote({ fromAmount: '9999999999' }, { fromAmount: 10000000000n });
|
|
237
|
+
try {
|
|
238
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
239
|
+
expect.fail('Expected execute to throw');
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
const msg = error.message;
|
|
243
|
+
expect(msg).to.include('9999999999');
|
|
244
|
+
expect(msg).to.include('10000000000');
|
|
245
|
+
expect(msg).to.include('fromAmount');
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
it('should throw when route fromAmount is zero', async () => {
|
|
249
|
+
// fromAmount=0n is falsy, so the mismatch assertion is skipped.
|
|
250
|
+
// But the positive amount check catches it.
|
|
251
|
+
const quote = createTestQuote({ fromAmount: '0' }, { fromAmount: undefined });
|
|
252
|
+
try {
|
|
253
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
254
|
+
expect.fail('Expected execute to throw');
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
const msg = error.message;
|
|
258
|
+
expect(msg).to.include('must be positive');
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
it('should match addresses case-insensitively (mixed vs uppercase)', async () => {
|
|
262
|
+
// Route uses lowercase a-f, requestParams uses uppercase A-F
|
|
263
|
+
// Both should match after toLowerCase()
|
|
264
|
+
const mixedCaseToken = '0xaabb000000000000000000000000000000001122';
|
|
265
|
+
const upperCaseToken = '0xAABB000000000000000000000000000000001122';
|
|
266
|
+
const mixedCaseSender = '0xddee000000000000000000000000000000003344';
|
|
267
|
+
const upperCaseSender = '0xDDEE000000000000000000000000000000003344';
|
|
268
|
+
const quote = createTestQuote({
|
|
269
|
+
fromTokenAddress: mixedCaseToken,
|
|
270
|
+
toTokenAddress: mixedCaseToken,
|
|
271
|
+
fromAddress: mixedCaseSender,
|
|
272
|
+
toAddress: mixedCaseSender,
|
|
273
|
+
}, {
|
|
274
|
+
fromToken: upperCaseToken,
|
|
275
|
+
toToken: upperCaseToken,
|
|
276
|
+
fromAddress: upperCaseSender,
|
|
277
|
+
toAddress: upperCaseSender,
|
|
278
|
+
});
|
|
279
|
+
try {
|
|
280
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
const msg = error.message;
|
|
284
|
+
expect(isValidationError(msg), `Expected non-validation error but got: ${msg}`).to.equal(false);
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
it('should throw when requestParams.fromAmount is 0n and route has positive amount', async () => {
|
|
288
|
+
// Validates the fix for the fromAmount=0n truthiness bypass:
|
|
289
|
+
// 0n was falsy so `if (requestParams.fromAmount)` would skip the comparison.
|
|
290
|
+
// With `!== undefined`, a 0n request is correctly compared against the route amount.
|
|
291
|
+
const quote = createTestQuote({ fromAmount: '1' }, { fromAmount: 0n });
|
|
292
|
+
try {
|
|
293
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
294
|
+
expect.fail('Expected execute to throw');
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
const msg = error.message;
|
|
298
|
+
expect(msg).to.include('fromAmount');
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
it('should pass validation for toAmount quote path (fromAmount undefined, toAmount present)', async () => {
|
|
302
|
+
// Tests reverse-quote pattern where toAmount is set and fromAmount is undefined.
|
|
303
|
+
// The fromAmount equality check is skipped when requestParams.fromAmount is undefined.
|
|
304
|
+
// The toAmount equality check passes because route.toAmount matches requestParams.toAmount.
|
|
305
|
+
const quote = createTestQuote({ fromAmount: '5000000000', toAmount: '5000000000' }, { fromAmount: undefined, toAmount: 5000000000n });
|
|
306
|
+
try {
|
|
307
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
const msg = error.message;
|
|
311
|
+
expect(isValidationError(msg), `Expected non-validation error but got: ${msg}`).to.equal(false);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
it('should throw when route toAmount is less than requested for reverse quote', async () => {
|
|
315
|
+
// Route estimate.toAmount='100' but requestParams.toAmount=123n -> 100 < 123, should throw
|
|
316
|
+
const quote = createTestQuote({ toAmount: '100' }, { fromAmount: undefined, toAmount: 123n });
|
|
317
|
+
try {
|
|
318
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
319
|
+
expect.fail('Expected execute to throw');
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
const msg = error.message;
|
|
323
|
+
expect(msg).to.include('toAmount');
|
|
324
|
+
expect(msg).to.include('100');
|
|
325
|
+
expect(msg).to.include('123');
|
|
326
|
+
expect(msg).to.include('is less than');
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
it('should pass validation when route toAmount exceeds requested (reverse quote)', async () => {
|
|
330
|
+
// paulbalaji reproduction: requested 1000000, LiFi returned 1000002.
|
|
331
|
+
// >= semantics: 1000002 >= 1000000 passes validation.
|
|
332
|
+
const quote = createTestQuote({ toAmount: '1000002' }, { fromAmount: undefined, toAmount: 1000000n });
|
|
333
|
+
try {
|
|
334
|
+
await bridge.execute(quote, TEST_PRIVATE_KEY);
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
const msg = error.message;
|
|
338
|
+
expect(isValidationError(msg), `Expected non-validation error but got: ${msg}`).to.equal(false);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
describe('LiFiBridge.quote() input validation', function () {
|
|
343
|
+
let bridge;
|
|
344
|
+
beforeEach(() => {
|
|
345
|
+
bridge = new LiFiBridge(BRIDGE_CONFIG, testLogger);
|
|
346
|
+
});
|
|
347
|
+
it('should throw when fromAmount is 0n', async () => {
|
|
348
|
+
try {
|
|
349
|
+
await bridge.quote({
|
|
350
|
+
fromChain: 42161,
|
|
351
|
+
toChain: 1399811149,
|
|
352
|
+
fromToken: TOKEN_ADDR,
|
|
353
|
+
toToken: TOKEN_ADDR,
|
|
354
|
+
fromAddress: SENDER_ADDR,
|
|
355
|
+
fromAmount: 0n,
|
|
356
|
+
});
|
|
357
|
+
expect.fail('Expected quote to throw');
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
expect(error.message).to.include('fromAmount must be positive');
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
it('should throw when toAmount is 0n', async () => {
|
|
364
|
+
try {
|
|
365
|
+
await bridge.quote({
|
|
366
|
+
fromChain: 42161,
|
|
367
|
+
toChain: 1399811149,
|
|
368
|
+
fromToken: TOKEN_ADDR,
|
|
369
|
+
toToken: TOKEN_ADDR,
|
|
370
|
+
fromAddress: SENDER_ADDR,
|
|
371
|
+
toAmount: 0n,
|
|
372
|
+
});
|
|
373
|
+
expect.fail('Expected quote to throw');
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
expect(error.message).to.include('toAmount must be positive');
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
it('should throw when both fromAmount and toAmount are provided', async () => {
|
|
380
|
+
try {
|
|
381
|
+
await bridge.quote({
|
|
382
|
+
fromChain: 42161,
|
|
383
|
+
toChain: 1399811149,
|
|
384
|
+
fromToken: TOKEN_ADDR,
|
|
385
|
+
toToken: TOKEN_ADDR,
|
|
386
|
+
fromAddress: SENDER_ADDR,
|
|
387
|
+
fromAmount: 10000000000n,
|
|
388
|
+
toAmount: 5000000000n,
|
|
389
|
+
});
|
|
390
|
+
expect.fail('Expected quote to throw');
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
expect(error.message).to.include('Cannot specify both');
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
it('should throw when neither fromAmount nor toAmount is provided', async () => {
|
|
397
|
+
try {
|
|
398
|
+
await bridge.quote({
|
|
399
|
+
fromChain: 42161,
|
|
400
|
+
toChain: 1399811149,
|
|
401
|
+
fromToken: TOKEN_ADDR,
|
|
402
|
+
toToken: TOKEN_ADDR,
|
|
403
|
+
fromAddress: SENDER_ADDR,
|
|
404
|
+
});
|
|
405
|
+
expect.fail('Expected quote to throw');
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
expect(error.message).to.include('Must specify either');
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
//# sourceMappingURL=LiFiBridge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiFiBridge.test.js","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1652,6 +1652,7 @@ export declare const RebalancerStrategySchema: z.ZodEffects<z.ZodUnion<[z.ZodDis
|
|
|
1652
1652
|
})[]>;
|
|
1653
1653
|
export declare const DEFAULT_INTENT_TTL_S = 604800;
|
|
1654
1654
|
export declare const DEFAULT_INTENT_TTL_MS: number;
|
|
1655
|
+
export declare const DEFAULT_MOVEMENT_STALENESS_MS: number;
|
|
1655
1656
|
export declare const LiFiBridgeConfigSchema: z.ZodObject<{
|
|
1656
1657
|
integrator: z.ZodString;
|
|
1657
1658
|
defaultSlippage: z.ZodOptional<z.ZodNumber>;
|