@hyperlane-xyz/rebalancer 26.0.0 → 27.0.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 +18 -2
- package/dist/bridges/LiFiBridge.d.ts.map +1 -1
- package/dist/bridges/LiFiBridge.js +176 -70
- package/dist/bridges/LiFiBridge.js.map +1 -1
- package/dist/bridges/LiFiBridge.test.js +115 -23
- package/dist/bridges/LiFiBridge.test.js.map +1 -1
- package/dist/config/RebalancerConfig.d.ts +4 -2
- package/dist/config/RebalancerConfig.d.ts.map +1 -1
- package/dist/config/RebalancerConfig.js +5 -5
- package/dist/config/RebalancerConfig.js.map +1 -1
- package/dist/config/RebalancerConfig.test.js +74 -6
- package/dist/config/RebalancerConfig.test.js.map +1 -1
- package/dist/config/types.d.ts +45 -5
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +167 -17
- package/dist/config/types.js.map +1 -1
- package/dist/core/InventoryRebalancer.d.ts +15 -4
- package/dist/core/InventoryRebalancer.d.ts.map +1 -1
- package/dist/core/InventoryRebalancer.js +126 -41
- package/dist/core/InventoryRebalancer.js.map +1 -1
- package/dist/core/InventoryRebalancer.test.js +77 -12
- package/dist/core/InventoryRebalancer.test.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.test.js +2 -0
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -1
- package/dist/core/RebalancerService.d.ts +3 -2
- package/dist/core/RebalancerService.d.ts.map +1 -1
- package/dist/core/RebalancerService.js +4 -4
- package/dist/core/RebalancerService.js.map +1 -1
- package/dist/core/RebalancerService.test.js +16 -16
- package/dist/core/RebalancerService.test.js.map +1 -1
- package/dist/e2e/collateral-deficit.e2e-test.js +7 -6
- package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -1
- package/dist/e2e/composite.e2e-test.js +7 -6
- package/dist/e2e/composite.e2e-test.js.map +1 -1
- package/dist/e2e/fixtures/routes.d.ts.map +1 -1
- package/dist/e2e/fixtures/routes.js +5 -0
- package/dist/e2e/fixtures/routes.js.map +1 -1
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts +21 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.js +113 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -0
- package/dist/e2e/harness/MockExternalBridge.d.ts +2 -1
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.js +5 -3
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.d.ts +13 -0
- package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -0
- package/dist/e2e/harness/SnapshotHelper.js +36 -0
- package/dist/e2e/harness/SnapshotHelper.js.map +1 -0
- package/dist/e2e/harness/TestHelpers.d.ts.map +1 -1
- package/dist/e2e/harness/TestHelpers.js +18 -7
- package/dist/e2e/harness/TestHelpers.js.map +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts +0 -1
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
- package/dist/e2e/harness/TestRebalancer.js +14 -24
- package/dist/e2e/harness/TestRebalancer.js.map +1 -1
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.js +7 -11
- package/dist/e2e/inventory-erc20-minAmount.e2e-test.js.map +1 -1
- package/dist/e2e/inventory-erc20-weighted.e2e-test.js +7 -11
- package/dist/e2e/inventory-erc20-weighted.e2e-test.js.map +1 -1
- package/dist/e2e/inventory-minAmount.e2e-test.js +7 -11
- package/dist/e2e/inventory-minAmount.e2e-test.js.map +1 -1
- package/dist/e2e/inventory-weighted.e2e-test.js +9 -12
- package/dist/e2e/inventory-weighted.e2e-test.js.map +1 -1
- package/dist/e2e/minAmount.e2e-test.js +9 -7
- package/dist/e2e/minAmount.e2e-test.js.map +1 -1
- package/dist/e2e/mixed-weighted.e2e-test.d.ts +2 -0
- package/dist/e2e/mixed-weighted.e2e-test.d.ts.map +1 -0
- package/dist/e2e/mixed-weighted.e2e-test.js +189 -0
- package/dist/e2e/mixed-weighted.e2e-test.js.map +1 -0
- package/dist/e2e/weighted.e2e-test.js +7 -6
- package/dist/e2e/weighted.e2e-test.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.d.ts +3 -4
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
- package/dist/factories/RebalancerContextFactory.js +115 -33
- package/dist/factories/RebalancerContextFactory.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.test.js +113 -2
- package/dist/factories/RebalancerContextFactory.test.js.map +1 -1
- package/dist/interfaces/IExternalBridge.d.ts +3 -2
- package/dist/interfaces/IExternalBridge.d.ts.map +1 -1
- package/dist/metrics/scripts/metrics.d.ts +3 -3
- package/dist/monitor/Monitor.d.ts +2 -2
- package/dist/monitor/Monitor.d.ts.map +1 -1
- package/dist/monitor/Monitor.js +6 -1
- package/dist/monitor/Monitor.js.map +1 -1
- package/dist/service.js +84 -25
- package/dist/service.js.map +1 -1
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +4 -1
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/lifiMocks.js +2 -2
- package/dist/test/lifiMocks.js.map +1 -1
- package/dist/tracking/ActionTracker.d.ts +1 -1
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +4 -4
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/utils/ExplorerClient.d.ts +1 -1
- package/dist/utils/ExplorerClient.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.js +5 -3
- package/dist/utils/ExplorerClient.js.map +1 -1
- package/dist/utils/blockTag.d.ts.map +1 -1
- package/dist/utils/blockTag.js +21 -1
- package/dist/utils/blockTag.js.map +1 -1
- package/dist/utils/bridgeUtils.test.js +89 -1
- package/dist/utils/bridgeUtils.test.js.map +1 -1
- package/dist/utils/gasEstimation.d.ts.map +1 -1
- package/dist/utils/gasEstimation.js +31 -1
- package/dist/utils/gasEstimation.js.map +1 -1
- package/dist/utils/solanaKeyParser.d.ts +10 -0
- package/dist/utils/solanaKeyParser.d.ts.map +1 -0
- package/dist/utils/solanaKeyParser.js +87 -0
- package/dist/utils/solanaKeyParser.js.map +1 -0
- package/dist/utils/solanaKeyParser.test.d.ts +2 -0
- package/dist/utils/solanaKeyParser.test.d.ts.map +1 -0
- package/dist/utils/solanaKeyParser.test.js +71 -0
- package/dist/utils/solanaKeyParser.test.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts +2 -2
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/dist/utils/tokenUtils.js +15 -6
- package/dist/utils/tokenUtils.js.map +1 -1
- package/dist/utils/transactionUtils.d.ts +22 -0
- package/dist/utils/transactionUtils.d.ts.map +1 -0
- package/dist/utils/transactionUtils.js +26 -0
- package/dist/utils/transactionUtils.js.map +1 -0
- package/package.json +10 -8
- package/src/bridges/LiFiBridge.test.ts +128 -23
- package/src/bridges/LiFiBridge.ts +235 -78
- package/src/config/RebalancerConfig.test.ts +82 -6
- package/src/config/RebalancerConfig.ts +7 -3
- package/src/config/types.ts +238 -27
- package/src/core/InventoryRebalancer.test.ts +93 -12
- package/src/core/InventoryRebalancer.ts +206 -60
- package/src/core/RebalancerOrchestrator.test.ts +2 -0
- package/src/core/RebalancerService.test.ts +0 -16
- package/src/core/RebalancerService.ts +5 -3
- package/src/e2e/collateral-deficit.e2e-test.ts +7 -11
- package/src/e2e/composite.e2e-test.ts +7 -11
- package/src/e2e/fixtures/routes.ts +5 -0
- package/src/e2e/harness/MixedLocalDeploymentManager.ts +188 -0
- package/src/e2e/harness/MockExternalBridge.ts +5 -3
- package/src/e2e/harness/SnapshotHelper.ts +52 -0
- package/src/e2e/harness/TestHelpers.ts +21 -7
- package/src/e2e/harness/TestRebalancer.ts +14 -40
- package/src/e2e/inventory-erc20-minAmount.e2e-test.ts +7 -16
- package/src/e2e/inventory-erc20-weighted.e2e-test.ts +7 -16
- package/src/e2e/inventory-minAmount.e2e-test.ts +7 -16
- package/src/e2e/inventory-weighted.e2e-test.ts +12 -19
- package/src/e2e/minAmount.e2e-test.ts +9 -12
- package/src/e2e/mixed-weighted.e2e-test.ts +267 -0
- package/src/e2e/weighted.e2e-test.ts +7 -11
- package/src/factories/RebalancerContextFactory.test.ts +157 -4
- package/src/factories/RebalancerContextFactory.ts +183 -41
- package/src/interfaces/IExternalBridge.ts +3 -2
- package/src/monitor/Monitor.ts +12 -5
- package/src/service.ts +116 -33
- package/src/test/helpers.ts +4 -1
- package/src/test/lifiMocks.ts +2 -2
- package/src/tracking/ActionTracker.ts +5 -5
- package/src/utils/ExplorerClient.ts +6 -4
- package/src/utils/blockTag.ts +29 -3
- package/src/utils/bridgeUtils.test.ts +104 -0
- package/src/utils/gasEstimation.ts +35 -1
- package/src/utils/solanaKeyParser.test.ts +103 -0
- package/src/utils/solanaKeyParser.ts +117 -0
- package/src/utils/tokenUtils.ts +20 -6
- package/src/utils/transactionUtils.ts +41 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type LiFiStep } from '@lifi/sdk';
|
|
2
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
2
3
|
import type { Logger } from 'pino';
|
|
3
4
|
import type { BridgeQuote, BridgeQuoteParams, BridgeTransferResult, BridgeTransferStatus, ExternalBridgeConfig, IExternalBridge } from '../interfaces/IExternalBridge.js';
|
|
4
5
|
/**
|
|
@@ -15,9 +16,17 @@ import type { BridgeQuote, BridgeQuoteParams, BridgeTransferResult, BridgeTransf
|
|
|
15
16
|
export declare class LiFiBridge implements IExternalBridge {
|
|
16
17
|
private static readonly NATIVE_TOKEN_ADDRESS;
|
|
17
18
|
readonly externalBridgeId = "lifi";
|
|
19
|
+
/**
|
|
20
|
+
* Convert a Hyperlane domain ID to a LiFi-compatible chain ID.
|
|
21
|
+
* For EVM chains, these are identical (e.g., Arbitrum = 42161 in both).
|
|
22
|
+
* For non-EVM chains like Solana, LiFi uses different chain identifiers.
|
|
23
|
+
*/
|
|
24
|
+
static toLiFiChainId(chainId: number): number;
|
|
18
25
|
readonly logger: Logger;
|
|
19
26
|
private initialized;
|
|
27
|
+
private _executeLock;
|
|
20
28
|
private readonly config;
|
|
29
|
+
private readonly chainMetadataByChainId;
|
|
21
30
|
constructor(config: ExternalBridgeConfig, logger: Logger);
|
|
22
31
|
getNativeTokenAddress(): string;
|
|
23
32
|
private initialize;
|
|
@@ -26,6 +35,13 @@ export declare class LiFiBridge implements IExternalBridge {
|
|
|
26
35
|
* Iterates metadata to find matching chainId and returns first HTTP RPC URL.
|
|
27
36
|
*/
|
|
28
37
|
private getRpcUrlForChainId;
|
|
38
|
+
private getProtocolTypeForChainId;
|
|
39
|
+
private addressesEqual;
|
|
40
|
+
/**
|
|
41
|
+
* Configure LiFi SDK providers from the given private keys.
|
|
42
|
+
* Sets up wallet/signer for each protocol type present in the keys map.
|
|
43
|
+
*/
|
|
44
|
+
private configureLiFiProviders;
|
|
29
45
|
/**
|
|
30
46
|
* Get a quote for bridging tokens.
|
|
31
47
|
* Supports two modes:
|
|
@@ -56,9 +72,9 @@ export declare class LiFiBridge implements IExternalBridge {
|
|
|
56
72
|
* Handles approvals, transaction signing, and execution automatically.
|
|
57
73
|
*
|
|
58
74
|
* @param quote - Quote obtained from quote()
|
|
59
|
-
* @param
|
|
75
|
+
* @param privateKeys - Private keys keyed by protocol type for signing transactions
|
|
60
76
|
*/
|
|
61
|
-
execute(quote: BridgeQuote<LiFiStep>,
|
|
77
|
+
execute(quote: BridgeQuote<LiFiStep>, privateKeys: Partial<Record<ProtocolType, string>>): Promise<BridgeTransferResult>;
|
|
62
78
|
/**
|
|
63
79
|
* Validate that the route returned by LiFi matches the original request parameters.
|
|
64
80
|
* Prevents execution against wrong chains, tokens, or recipients if the bridge API
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiFiBridge.d.ts","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LiFiBridge.d.ts","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EASd,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAwE1C;;;;;;;;;;GAUG;AACH,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACG;IAE/C,QAAQ,CAAC,gBAAgB,UAAU;IAEnC;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAG7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;gBAExD,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAyBxD,qBAAqB,IAAI,MAAM;IAI/B,OAAO,CAAC,UAAU;IAelB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,cAAc;IAStB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA8D9B;;;;;;;OAOG;IACG,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IA8BtE;;;OAGG;YACW,qBAAqB;IAuDnC;;;OAGG;YACW,sBAAsB;IA4EpC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA2BpB;;;;;;OAMG;IACG,OAAO,CACX,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,GACjD,OAAO,CAAC,oBAAoB,CAAC;IAwHhC;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IA+DnC;;;OAGG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;CAiDjC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { EVM, convertQuoteToRoute, createConfig, executeRoute, getQuote, getStatus, config as lifiConfig, } from '@lifi/sdk';
|
|
1
|
+
import { EVM, KeypairWalletAdapter, Solana, convertQuoteToRoute, createConfig, executeRoute, getQuote, getStatus, config as lifiConfig, } from '@lifi/sdk';
|
|
2
|
+
import bs58 from 'bs58';
|
|
3
|
+
import { ProtocolType, assert, ensure0x } from '@hyperlane-xyz/utils';
|
|
2
4
|
import { createWalletClient, http } from 'viem';
|
|
3
5
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
6
|
import { arbitrum, base, mainnet, optimism } from 'viem/chains';
|
|
5
|
-
import {
|
|
7
|
+
import { parseSolanaPrivateKey } from '../utils/solanaKeyParser.js';
|
|
6
8
|
/**
|
|
7
9
|
* LiFi API base URL for REST endpoints.
|
|
8
10
|
* The SDK doesn't support toAmount quotes, so we use REST API directly.
|
|
@@ -18,6 +20,16 @@ const VIEM_CHAINS = {
|
|
|
18
20
|
[base.id]: base,
|
|
19
21
|
[optimism.id]: optimism,
|
|
20
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Mapping from Hyperlane domain IDs to LiFi chain IDs for non-EVM chains.
|
|
25
|
+
* EVM chains use their native chain ID which is the same in both systems.
|
|
26
|
+
* Non-EVM chains (e.g., Solana) have different identifiers in each system.
|
|
27
|
+
*
|
|
28
|
+
* @see https://docs.li.fi/introduction/lifi-architecture/solana-overview
|
|
29
|
+
*/
|
|
30
|
+
const HYPERLANE_TO_LIFI_CHAIN_IDS = {
|
|
31
|
+
1399811149: 1151111081099710, // Solana: Hyperlane domain → LiFi chain ID
|
|
32
|
+
};
|
|
21
33
|
/**
|
|
22
34
|
* Get viem chain config by chain ID.
|
|
23
35
|
* Falls back to a minimal chain config if not found.
|
|
@@ -40,6 +52,22 @@ function getViemChain(chainId, rpcUrl) {
|
|
|
40
52
|
},
|
|
41
53
|
};
|
|
42
54
|
}
|
|
55
|
+
function toBase58SolanaKey(rawKey) {
|
|
56
|
+
const trimmedKey = rawKey.trim();
|
|
57
|
+
if (!trimmedKey.startsWith('[') && !trimmedKey.includes(',')) {
|
|
58
|
+
try {
|
|
59
|
+
const decoded = bs58.decode(trimmedKey);
|
|
60
|
+
if (decoded.length === 64) {
|
|
61
|
+
return trimmedKey;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Not valid base58, continue to parse as byte array
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const bytes = parseSolanaPrivateKey(trimmedKey);
|
|
69
|
+
return bs58.encode(bytes);
|
|
70
|
+
}
|
|
43
71
|
/**
|
|
44
72
|
* LiFi implementation of IExternalBridge using the official @lifi/sdk.
|
|
45
73
|
*
|
|
@@ -54,12 +82,38 @@ function getViemChain(chainId, rpcUrl) {
|
|
|
54
82
|
export class LiFiBridge {
|
|
55
83
|
static NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
56
84
|
externalBridgeId = 'lifi';
|
|
85
|
+
/**
|
|
86
|
+
* Convert a Hyperlane domain ID to a LiFi-compatible chain ID.
|
|
87
|
+
* For EVM chains, these are identical (e.g., Arbitrum = 42161 in both).
|
|
88
|
+
* For non-EVM chains like Solana, LiFi uses different chain identifiers.
|
|
89
|
+
*/
|
|
90
|
+
static toLiFiChainId(chainId) {
|
|
91
|
+
return HYPERLANE_TO_LIFI_CHAIN_IDS[chainId] ?? chainId;
|
|
92
|
+
}
|
|
57
93
|
logger;
|
|
58
94
|
initialized = false;
|
|
95
|
+
_executeLock = Promise.resolve();
|
|
59
96
|
config;
|
|
97
|
+
chainMetadataByChainId;
|
|
60
98
|
constructor(config, logger) {
|
|
61
99
|
this.config = config;
|
|
62
100
|
this.logger = logger;
|
|
101
|
+
// Build chainId -> metadata map for O(1) lookups
|
|
102
|
+
this.chainMetadataByChainId = new Map();
|
|
103
|
+
if (config.chainMetadata) {
|
|
104
|
+
for (const metadata of Object.values(config.chainMetadata)) {
|
|
105
|
+
if (metadata.chainId !== undefined) {
|
|
106
|
+
this.chainMetadataByChainId.set(Number(metadata.chainId), metadata);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Also key by LiFi chain IDs so both Hyperlane domains and LiFi IDs resolve to the same metadata.
|
|
110
|
+
for (const [hyperlaneDomainId, lifiChainId] of Object.entries(HYPERLANE_TO_LIFI_CHAIN_IDS)) {
|
|
111
|
+
const metadata = this.chainMetadataByChainId.get(Number(hyperlaneDomainId));
|
|
112
|
+
if (metadata !== undefined) {
|
|
113
|
+
this.chainMetadataByChainId.set(Number(lifiChainId), metadata);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
63
117
|
}
|
|
64
118
|
getNativeTokenAddress() {
|
|
65
119
|
return LiFiBridge.NATIVE_TOKEN_ADDRESS;
|
|
@@ -79,14 +133,65 @@ export class LiFiBridge {
|
|
|
79
133
|
* Iterates metadata to find matching chainId and returns first HTTP RPC URL.
|
|
80
134
|
*/
|
|
81
135
|
getRpcUrlForChainId(chainId) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
136
|
+
return this.chainMetadataByChainId.get(chainId)?.rpcUrls?.[0]?.http;
|
|
137
|
+
}
|
|
138
|
+
getProtocolTypeForChainId(chainId) {
|
|
139
|
+
return this.chainMetadataByChainId.get(chainId)?.protocol;
|
|
140
|
+
}
|
|
141
|
+
addressesEqual(a, b, chainId) {
|
|
142
|
+
const protocol = this.getProtocolTypeForChainId(chainId);
|
|
143
|
+
// Sealevel uses base58 addresses where case is significant.
|
|
144
|
+
if (protocol === ProtocolType.Sealevel) {
|
|
145
|
+
return a === b;
|
|
146
|
+
}
|
|
147
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Configure LiFi SDK providers from the given private keys.
|
|
151
|
+
* Sets up wallet/signer for each protocol type present in the keys map.
|
|
152
|
+
*/
|
|
153
|
+
configureLiFiProviders(privateKeys, fromChain, fromRpcUrl) {
|
|
154
|
+
const providers = [];
|
|
155
|
+
for (const [protocol, key] of Object.entries(privateKeys)) {
|
|
156
|
+
switch (protocol) {
|
|
157
|
+
case ProtocolType.Ethereum: {
|
|
158
|
+
const account = privateKeyToAccount(ensure0x(key));
|
|
159
|
+
const chain = getViemChain(fromChain, fromRpcUrl);
|
|
160
|
+
const walletClient = createWalletClient({
|
|
161
|
+
account,
|
|
162
|
+
chain,
|
|
163
|
+
transport: http(fromRpcUrl),
|
|
164
|
+
});
|
|
165
|
+
providers.push(EVM({
|
|
166
|
+
getWalletClient: async () => walletClient,
|
|
167
|
+
switchChain: async (requiredChainId) => {
|
|
168
|
+
const switchRpcUrl = this.getRpcUrlForChainId(requiredChainId);
|
|
169
|
+
const requiredChain = getViemChain(requiredChainId, switchRpcUrl);
|
|
170
|
+
return createWalletClient({
|
|
171
|
+
account,
|
|
172
|
+
chain: requiredChain,
|
|
173
|
+
transport: http(switchRpcUrl),
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
}));
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case ProtocolType.Sealevel: {
|
|
180
|
+
const base58Key = toBase58SolanaKey(key);
|
|
181
|
+
providers.push(Solana({
|
|
182
|
+
getWalletAdapter: async () => new KeypairWalletAdapter(base58Key),
|
|
183
|
+
}));
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
default:
|
|
187
|
+
throw new Error(`Unsupported protocol type '${protocol}' for LiFi provider`);
|
|
87
188
|
}
|
|
88
189
|
}
|
|
89
|
-
|
|
190
|
+
lifiConfig.setProviders(providers);
|
|
191
|
+
this.logger.debug({
|
|
192
|
+
fromChain,
|
|
193
|
+
protocols: Object.keys(privateKeys),
|
|
194
|
+
}, 'Configured LiFi providers for route execution');
|
|
90
195
|
}
|
|
91
196
|
/**
|
|
92
197
|
* Get a quote for bridging tokens.
|
|
@@ -121,9 +226,11 @@ export class LiFiBridge {
|
|
|
121
226
|
*/
|
|
122
227
|
async quoteBySpendingAmount(params) {
|
|
123
228
|
this.logger.debug({ params }, 'Requesting LiFi quote by spending amount');
|
|
229
|
+
const lifiFromChain = LiFiBridge.toLiFiChainId(params.fromChain);
|
|
230
|
+
const lifiToChain = LiFiBridge.toLiFiChainId(params.toChain);
|
|
124
231
|
const quote = await getQuote({
|
|
125
|
-
fromChain:
|
|
126
|
-
toChain:
|
|
232
|
+
fromChain: lifiFromChain,
|
|
233
|
+
toChain: lifiToChain,
|
|
127
234
|
fromToken: params.fromToken,
|
|
128
235
|
toToken: params.toToken,
|
|
129
236
|
fromAmount: params.fromAmount.toString(),
|
|
@@ -154,7 +261,11 @@ export class LiFiBridge {
|
|
|
154
261
|
gasCosts,
|
|
155
262
|
feeCosts,
|
|
156
263
|
route: quote, // Store full quote for conversion to route
|
|
157
|
-
requestParams: {
|
|
264
|
+
requestParams: {
|
|
265
|
+
...params,
|
|
266
|
+
fromChain: lifiFromChain,
|
|
267
|
+
toChain: lifiToChain,
|
|
268
|
+
},
|
|
158
269
|
};
|
|
159
270
|
}
|
|
160
271
|
/**
|
|
@@ -163,9 +274,11 @@ export class LiFiBridge {
|
|
|
163
274
|
*/
|
|
164
275
|
async quoteByReceivingAmount(params) {
|
|
165
276
|
this.logger.debug({ params }, 'Requesting LiFi quote by receiving amount');
|
|
277
|
+
const lifiFromChain = LiFiBridge.toLiFiChainId(params.fromChain);
|
|
278
|
+
const lifiToChain = LiFiBridge.toLiFiChainId(params.toChain);
|
|
166
279
|
const queryParams = new URLSearchParams({
|
|
167
|
-
fromChain:
|
|
168
|
-
toChain:
|
|
280
|
+
fromChain: lifiFromChain.toString(),
|
|
281
|
+
toChain: lifiToChain.toString(),
|
|
169
282
|
fromToken: params.fromToken,
|
|
170
283
|
toToken: params.toToken,
|
|
171
284
|
toAmount: params.toAmount.toString(),
|
|
@@ -209,7 +322,11 @@ export class LiFiBridge {
|
|
|
209
322
|
gasCosts,
|
|
210
323
|
feeCosts,
|
|
211
324
|
route: quote, // Store full quote for conversion to route
|
|
212
|
-
requestParams: {
|
|
325
|
+
requestParams: {
|
|
326
|
+
...params,
|
|
327
|
+
fromChain: lifiFromChain,
|
|
328
|
+
toChain: lifiToChain,
|
|
329
|
+
},
|
|
213
330
|
};
|
|
214
331
|
}
|
|
215
332
|
/**
|
|
@@ -242,15 +359,17 @@ export class LiFiBridge {
|
|
|
242
359
|
* Handles approvals, transaction signing, and execution automatically.
|
|
243
360
|
*
|
|
244
361
|
* @param quote - Quote obtained from quote()
|
|
245
|
-
* @param
|
|
362
|
+
* @param privateKeys - Private keys keyed by protocol type for signing transactions
|
|
246
363
|
*/
|
|
247
|
-
async execute(quote,
|
|
364
|
+
async execute(quote, privateKeys) {
|
|
248
365
|
this.initialize();
|
|
249
366
|
// Convert quote to route for execution
|
|
250
367
|
const route = convertQuoteToRoute(quote.route);
|
|
251
368
|
this.validateRouteAgainstRequest(route, quote.requestParams);
|
|
252
369
|
const fromChain = route.fromChainId;
|
|
253
370
|
const toChain = route.toChainId;
|
|
371
|
+
const fromProtocol = this.getProtocolTypeForChainId(fromChain);
|
|
372
|
+
assert(privateKeys[fromProtocol ?? ProtocolType.Ethereum], `Missing private key for source chain protocol ${fromProtocol ?? ProtocolType.Ethereum}`);
|
|
254
373
|
this.logger.info({
|
|
255
374
|
quoteId: quote.id,
|
|
256
375
|
tool: quote.tool,
|
|
@@ -258,54 +377,44 @@ export class LiFiBridge {
|
|
|
258
377
|
toChain,
|
|
259
378
|
fromAmount: quote.fromAmount.toString(),
|
|
260
379
|
}, 'Executing LiFi bridge transfer');
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
const walletClient = createWalletClient({
|
|
266
|
-
account,
|
|
267
|
-
chain,
|
|
268
|
-
transport: http(rpcUrl),
|
|
380
|
+
const fromRpcUrl = this.getRpcUrlForChainId(fromChain);
|
|
381
|
+
let release;
|
|
382
|
+
const acquired = new Promise((resolve) => {
|
|
383
|
+
release = resolve;
|
|
269
384
|
});
|
|
270
|
-
this.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
account: account.address,
|
|
274
|
-
}, 'Created viem WalletClient for LiFi execution');
|
|
275
|
-
// Configure LiFi SDK with EVM provider that has our wallet client
|
|
276
|
-
lifiConfig.setProviders([
|
|
277
|
-
EVM({
|
|
278
|
-
getWalletClient: async () => walletClient,
|
|
279
|
-
switchChain: async (requiredChainId) => {
|
|
280
|
-
const switchRpcUrl = this.getRpcUrlForChainId(requiredChainId);
|
|
281
|
-
const requiredChain = getViemChain(requiredChainId, switchRpcUrl);
|
|
282
|
-
return createWalletClient({
|
|
283
|
-
account,
|
|
284
|
-
chain: requiredChain,
|
|
285
|
-
transport: http(switchRpcUrl),
|
|
286
|
-
});
|
|
287
|
-
},
|
|
288
|
-
}),
|
|
289
|
-
]);
|
|
385
|
+
const prev = this._executeLock;
|
|
386
|
+
this._executeLock = acquired;
|
|
387
|
+
await prev;
|
|
290
388
|
let txHash;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
389
|
+
let executedRoute;
|
|
390
|
+
try {
|
|
391
|
+
this.configureLiFiProviders(privateKeys, fromChain, fromRpcUrl);
|
|
392
|
+
this.logger.debug({
|
|
393
|
+
fromChain,
|
|
394
|
+
protocols: Object.keys(privateKeys),
|
|
395
|
+
}, 'Configured LiFi providers for route execution');
|
|
396
|
+
// Execute route with update callbacks
|
|
397
|
+
executedRoute = await executeRoute(route, {
|
|
398
|
+
// Update callback for route progress
|
|
399
|
+
updateRouteHook: (updatedRoute) => {
|
|
400
|
+
this.logger.debug({ step: updatedRoute.steps[0]?.id }, 'Route step updated');
|
|
401
|
+
// Extract txHash from execution if available (RouteExtended has LiFiStepExtended with execution)
|
|
402
|
+
const execution = updatedRoute.steps[0]?.execution;
|
|
403
|
+
if (execution?.process) {
|
|
404
|
+
for (const process of execution.process) {
|
|
405
|
+
if (process.txHash) {
|
|
406
|
+
txHash = process.txHash;
|
|
407
|
+
}
|
|
302
408
|
}
|
|
303
409
|
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
410
|
+
},
|
|
411
|
+
// Auto-accept rate updates for rebalancing
|
|
412
|
+
acceptExchangeRateUpdateHook: async () => true,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
finally {
|
|
416
|
+
release();
|
|
417
|
+
}
|
|
309
418
|
// Extract txHash from executed route if not captured in callbacks
|
|
310
419
|
if (!txHash) {
|
|
311
420
|
const execution = executedRoute.steps[0]?.execution;
|
|
@@ -352,14 +461,11 @@ export class LiFiBridge {
|
|
|
352
461
|
validateRouteAgainstRequest(route, requestParams) {
|
|
353
462
|
assert(route.fromChainId === requestParams.fromChain, `Route fromChainId ${route.fromChainId} does not match requested ${requestParams.fromChain}`);
|
|
354
463
|
assert(route.toChainId === requestParams.toChain, `Route toChainId ${route.toChainId} does not match requested ${requestParams.toChain}`);
|
|
355
|
-
assert(route.fromToken.address.
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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}`);
|
|
464
|
+
assert(this.addressesEqual(route.fromToken.address, requestParams.fromToken, route.fromChainId), `Route fromToken ${route.fromToken.address} does not match requested ${requestParams.fromToken}`);
|
|
465
|
+
assert(this.addressesEqual(route.toToken.address, requestParams.toToken, route.toChainId), `Route toToken ${route.toToken.address} does not match requested ${requestParams.toToken}`);
|
|
466
|
+
const expectedToAddress = requestParams.toAddress ?? requestParams.fromAddress;
|
|
467
|
+
assert(this.addressesEqual(route.toAddress ?? '', expectedToAddress, route.toChainId), `Route toAddress ${route.toAddress} does not match requested ${expectedToAddress}`);
|
|
468
|
+
assert(this.addressesEqual(route.fromAddress ?? '', requestParams.fromAddress, route.fromChainId), `Route fromAddress ${route.fromAddress} does not match requested ${requestParams.fromAddress}`);
|
|
363
469
|
const routeFromAmount = BigInt(route.fromAmount);
|
|
364
470
|
if (requestParams.fromAmount !== undefined) {
|
|
365
471
|
assert(routeFromAmount === requestParams.fromAmount, `Route fromAmount ${route.fromAmount} does not match requested ${requestParams.fromAmount}`);
|
|
@@ -379,8 +485,8 @@ export class LiFiBridge {
|
|
|
379
485
|
try {
|
|
380
486
|
const status = await getStatus({
|
|
381
487
|
txHash,
|
|
382
|
-
fromChain,
|
|
383
|
-
toChain,
|
|
488
|
+
fromChain: LiFiBridge.toLiFiChainId(fromChain),
|
|
489
|
+
toChain: LiFiBridge.toLiFiChainId(toChain),
|
|
384
490
|
});
|
|
385
491
|
switch (status.status) {
|
|
386
492
|
case 'DONE': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiFiBridge.js","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LiFiBridge.js","sourceRoot":"","sources":["../../src/bridges/LiFiBridge.ts"],"names":[],"mappings":"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"}
|