@hyperlane-xyz/cli 34.0.0 → 35.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/bundle/build/Release/bigint_buffer.node +0 -0
- package/bundle/index.js +1056 -584
- package/package.json +15 -15
package/bundle/index.js
CHANGED
|
@@ -128363,7 +128363,7 @@ __webpack_unused_export__ = ({ value: true });
|
|
|
128363
128363
|
let converter;
|
|
128364
128364
|
{
|
|
128365
128365
|
try {
|
|
128366
|
-
converter =
|
|
128366
|
+
converter = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(__nccwpck_require__.ab + "build/Release/bigint_buffer.node");
|
|
128367
128367
|
}
|
|
128368
128368
|
catch (e) {
|
|
128369
128369
|
// Silently fall back to pure JS implementation
|
|
@@ -128436,234 +128436,6 @@ function toBufferBE(num, width) {
|
|
|
128436
128436
|
exports.zy = toBufferBE;
|
|
128437
128437
|
|
|
128438
128438
|
|
|
128439
|
-
/***/ }),
|
|
128440
|
-
|
|
128441
|
-
/***/ 8441:
|
|
128442
|
-
/***/ ((module, exports, __nccwpck_require__) => {
|
|
128443
|
-
|
|
128444
|
-
/**
|
|
128445
|
-
* Module dependencies.
|
|
128446
|
-
*/
|
|
128447
|
-
|
|
128448
|
-
var fs = __nccwpck_require__(79896),
|
|
128449
|
-
path = __nccwpck_require__(16928),
|
|
128450
|
-
fileURLToPath = __nccwpck_require__(53904),
|
|
128451
|
-
join = path.join,
|
|
128452
|
-
dirname = path.dirname,
|
|
128453
|
-
exists =
|
|
128454
|
-
(fs.accessSync &&
|
|
128455
|
-
function(path) {
|
|
128456
|
-
try {
|
|
128457
|
-
fs.accessSync(path);
|
|
128458
|
-
} catch (e) {
|
|
128459
|
-
return false;
|
|
128460
|
-
}
|
|
128461
|
-
return true;
|
|
128462
|
-
}) ||
|
|
128463
|
-
fs.existsSync ||
|
|
128464
|
-
path.existsSync,
|
|
128465
|
-
defaults = {
|
|
128466
|
-
arrow: process.env.NODE_BINDINGS_ARROW || ' → ',
|
|
128467
|
-
compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',
|
|
128468
|
-
platform: process.platform,
|
|
128469
|
-
arch: process.arch,
|
|
128470
|
-
nodePreGyp:
|
|
128471
|
-
'node-v' +
|
|
128472
|
-
process.versions.modules +
|
|
128473
|
-
'-' +
|
|
128474
|
-
process.platform +
|
|
128475
|
-
'-' +
|
|
128476
|
-
process.arch,
|
|
128477
|
-
version: process.versions.node,
|
|
128478
|
-
bindings: 'bindings.node',
|
|
128479
|
-
try: [
|
|
128480
|
-
// node-gyp's linked version in the "build" dir
|
|
128481
|
-
['module_root', 'build', 'bindings'],
|
|
128482
|
-
// node-waf and gyp_addon (a.k.a node-gyp)
|
|
128483
|
-
['module_root', 'build', 'Debug', 'bindings'],
|
|
128484
|
-
['module_root', 'build', 'Release', 'bindings'],
|
|
128485
|
-
// Debug files, for development (legacy behavior, remove for node v0.9)
|
|
128486
|
-
['module_root', 'out', 'Debug', 'bindings'],
|
|
128487
|
-
['module_root', 'Debug', 'bindings'],
|
|
128488
|
-
// Release files, but manually compiled (legacy behavior, remove for node v0.9)
|
|
128489
|
-
['module_root', 'out', 'Release', 'bindings'],
|
|
128490
|
-
['module_root', 'Release', 'bindings'],
|
|
128491
|
-
// Legacy from node-waf, node <= 0.4.x
|
|
128492
|
-
['module_root', 'build', 'default', 'bindings'],
|
|
128493
|
-
// Production "Release" buildtype binary (meh...)
|
|
128494
|
-
['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],
|
|
128495
|
-
// node-qbs builds
|
|
128496
|
-
['module_root', 'addon-build', 'release', 'install-root', 'bindings'],
|
|
128497
|
-
['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],
|
|
128498
|
-
['module_root', 'addon-build', 'default', 'install-root', 'bindings'],
|
|
128499
|
-
// node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}
|
|
128500
|
-
['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']
|
|
128501
|
-
]
|
|
128502
|
-
};
|
|
128503
|
-
|
|
128504
|
-
/**
|
|
128505
|
-
* The main `bindings()` function loads the compiled bindings for a given module.
|
|
128506
|
-
* It uses V8's Error API to determine the parent filename that this function is
|
|
128507
|
-
* being invoked from, which is then used to find the root directory.
|
|
128508
|
-
*/
|
|
128509
|
-
|
|
128510
|
-
function bindings(opts) {
|
|
128511
|
-
// Argument surgery
|
|
128512
|
-
if (typeof opts == 'string') {
|
|
128513
|
-
opts = { bindings: opts };
|
|
128514
|
-
} else if (!opts) {
|
|
128515
|
-
opts = {};
|
|
128516
|
-
}
|
|
128517
|
-
|
|
128518
|
-
// maps `defaults` onto `opts` object
|
|
128519
|
-
Object.keys(defaults).map(function(i) {
|
|
128520
|
-
if (!(i in opts)) opts[i] = defaults[i];
|
|
128521
|
-
});
|
|
128522
|
-
|
|
128523
|
-
// Get the module root
|
|
128524
|
-
if (!opts.module_root) {
|
|
128525
|
-
opts.module_root = exports.getRoot(exports.getFileName());
|
|
128526
|
-
}
|
|
128527
|
-
|
|
128528
|
-
// Ensure the given bindings name ends with .node
|
|
128529
|
-
if (path.extname(opts.bindings) != '.node') {
|
|
128530
|
-
opts.bindings += '.node';
|
|
128531
|
-
}
|
|
128532
|
-
|
|
128533
|
-
// https://github.com/webpack/webpack/issues/4175#issuecomment-342931035
|
|
128534
|
-
var requireFunc =
|
|
128535
|
-
true
|
|
128536
|
-
? eval("require")
|
|
128537
|
-
: 0;
|
|
128538
|
-
|
|
128539
|
-
var tries = [],
|
|
128540
|
-
i = 0,
|
|
128541
|
-
l = opts.try.length,
|
|
128542
|
-
n,
|
|
128543
|
-
b,
|
|
128544
|
-
err;
|
|
128545
|
-
|
|
128546
|
-
for (; i < l; i++) {
|
|
128547
|
-
n = join.apply(
|
|
128548
|
-
null,
|
|
128549
|
-
opts.try[i].map(function(p) {
|
|
128550
|
-
return opts[p] || p;
|
|
128551
|
-
})
|
|
128552
|
-
);
|
|
128553
|
-
tries.push(n);
|
|
128554
|
-
try {
|
|
128555
|
-
b = opts.path ? requireFunc.resolve(n) : requireFunc(n);
|
|
128556
|
-
if (!opts.path) {
|
|
128557
|
-
b.path = n;
|
|
128558
|
-
}
|
|
128559
|
-
return b;
|
|
128560
|
-
} catch (e) {
|
|
128561
|
-
if (e.code !== 'MODULE_NOT_FOUND' &&
|
|
128562
|
-
e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&
|
|
128563
|
-
!/not find/i.test(e.message)) {
|
|
128564
|
-
throw e;
|
|
128565
|
-
}
|
|
128566
|
-
}
|
|
128567
|
-
}
|
|
128568
|
-
|
|
128569
|
-
err = new Error(
|
|
128570
|
-
'Could not locate the bindings file. Tried:\n' +
|
|
128571
|
-
tries
|
|
128572
|
-
.map(function(a) {
|
|
128573
|
-
return opts.arrow + a;
|
|
128574
|
-
})
|
|
128575
|
-
.join('\n')
|
|
128576
|
-
);
|
|
128577
|
-
err.tries = tries;
|
|
128578
|
-
throw err;
|
|
128579
|
-
}
|
|
128580
|
-
module.exports = exports = bindings;
|
|
128581
|
-
|
|
128582
|
-
/**
|
|
128583
|
-
* Gets the filename of the JavaScript file that invokes this function.
|
|
128584
|
-
* Used to help find the root directory of a module.
|
|
128585
|
-
* Optionally accepts an filename argument to skip when searching for the invoking filename
|
|
128586
|
-
*/
|
|
128587
|
-
|
|
128588
|
-
exports.getFileName = function getFileName(calling_file) {
|
|
128589
|
-
var origPST = Error.prepareStackTrace,
|
|
128590
|
-
origSTL = Error.stackTraceLimit,
|
|
128591
|
-
dummy = {},
|
|
128592
|
-
fileName;
|
|
128593
|
-
|
|
128594
|
-
Error.stackTraceLimit = 10;
|
|
128595
|
-
|
|
128596
|
-
Error.prepareStackTrace = function(e, st) {
|
|
128597
|
-
for (var i = 0, l = st.length; i < l; i++) {
|
|
128598
|
-
fileName = st[i].getFileName();
|
|
128599
|
-
if (fileName !== __filename) {
|
|
128600
|
-
if (calling_file) {
|
|
128601
|
-
if (fileName !== calling_file) {
|
|
128602
|
-
return;
|
|
128603
|
-
}
|
|
128604
|
-
} else {
|
|
128605
|
-
return;
|
|
128606
|
-
}
|
|
128607
|
-
}
|
|
128608
|
-
}
|
|
128609
|
-
};
|
|
128610
|
-
|
|
128611
|
-
// run the 'prepareStackTrace' function above
|
|
128612
|
-
Error.captureStackTrace(dummy);
|
|
128613
|
-
dummy.stack;
|
|
128614
|
-
|
|
128615
|
-
// cleanup
|
|
128616
|
-
Error.prepareStackTrace = origPST;
|
|
128617
|
-
Error.stackTraceLimit = origSTL;
|
|
128618
|
-
|
|
128619
|
-
// handle filename that starts with "file://"
|
|
128620
|
-
var fileSchema = 'file://';
|
|
128621
|
-
if (fileName.indexOf(fileSchema) === 0) {
|
|
128622
|
-
fileName = fileURLToPath(fileName);
|
|
128623
|
-
}
|
|
128624
|
-
|
|
128625
|
-
return fileName;
|
|
128626
|
-
};
|
|
128627
|
-
|
|
128628
|
-
/**
|
|
128629
|
-
* Gets the root directory of a module, given an arbitrary filename
|
|
128630
|
-
* somewhere in the module tree. The "root directory" is the directory
|
|
128631
|
-
* containing the `package.json` file.
|
|
128632
|
-
*
|
|
128633
|
-
* In: /home/nate/node-native-module/lib/index.js
|
|
128634
|
-
* Out: /home/nate/node-native-module
|
|
128635
|
-
*/
|
|
128636
|
-
|
|
128637
|
-
exports.getRoot = function getRoot(file) {
|
|
128638
|
-
var dir = dirname(file),
|
|
128639
|
-
prev;
|
|
128640
|
-
while (true) {
|
|
128641
|
-
if (dir === '.') {
|
|
128642
|
-
// Avoids an infinite loop in rare cases, like the REPL
|
|
128643
|
-
dir = process.cwd();
|
|
128644
|
-
}
|
|
128645
|
-
if (
|
|
128646
|
-
exists(join(dir, 'package.json')) ||
|
|
128647
|
-
exists(join(dir, 'node_modules'))
|
|
128648
|
-
) {
|
|
128649
|
-
// Found the 'package.json' file or 'node_modules' dir; we're done
|
|
128650
|
-
return dir;
|
|
128651
|
-
}
|
|
128652
|
-
if (prev === dir) {
|
|
128653
|
-
// Got to the top
|
|
128654
|
-
throw new Error(
|
|
128655
|
-
'Could not find module root given file: "' +
|
|
128656
|
-
file +
|
|
128657
|
-
'". Do you have a `package.json` file? '
|
|
128658
|
-
);
|
|
128659
|
-
}
|
|
128660
|
-
// Try the parent dir next
|
|
128661
|
-
prev = dir;
|
|
128662
|
-
dir = join(dir, '..');
|
|
128663
|
-
}
|
|
128664
|
-
};
|
|
128665
|
-
|
|
128666
|
-
|
|
128667
128439
|
/***/ }),
|
|
128668
128440
|
|
|
128669
128441
|
/***/ 73258:
|
|
@@ -205000,79 +204772,6 @@ module.exports.main = main;
|
|
|
205000
204772
|
module.exports.windows = windows;
|
|
205001
204773
|
|
|
205002
204774
|
|
|
205003
|
-
/***/ }),
|
|
205004
|
-
|
|
205005
|
-
/***/ 53904:
|
|
205006
|
-
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
205007
|
-
|
|
205008
|
-
|
|
205009
|
-
/**
|
|
205010
|
-
* Module dependencies.
|
|
205011
|
-
*/
|
|
205012
|
-
|
|
205013
|
-
var sep = (__nccwpck_require__(16928).sep) || '/';
|
|
205014
|
-
|
|
205015
|
-
/**
|
|
205016
|
-
* Module exports.
|
|
205017
|
-
*/
|
|
205018
|
-
|
|
205019
|
-
module.exports = fileUriToPath;
|
|
205020
|
-
|
|
205021
|
-
/**
|
|
205022
|
-
* File URI to Path function.
|
|
205023
|
-
*
|
|
205024
|
-
* @param {String} uri
|
|
205025
|
-
* @return {String} path
|
|
205026
|
-
* @api public
|
|
205027
|
-
*/
|
|
205028
|
-
|
|
205029
|
-
function fileUriToPath (uri) {
|
|
205030
|
-
if ('string' != typeof uri ||
|
|
205031
|
-
uri.length <= 7 ||
|
|
205032
|
-
'file://' != uri.substring(0, 7)) {
|
|
205033
|
-
throw new TypeError('must pass in a file:// URI to convert to a file path');
|
|
205034
|
-
}
|
|
205035
|
-
|
|
205036
|
-
var rest = decodeURI(uri.substring(7));
|
|
205037
|
-
var firstSlash = rest.indexOf('/');
|
|
205038
|
-
var host = rest.substring(0, firstSlash);
|
|
205039
|
-
var path = rest.substring(firstSlash + 1);
|
|
205040
|
-
|
|
205041
|
-
// 2. Scheme Definition
|
|
205042
|
-
// As a special case, <host> can be the string "localhost" or the empty
|
|
205043
|
-
// string; this is interpreted as "the machine from which the URL is
|
|
205044
|
-
// being interpreted".
|
|
205045
|
-
if ('localhost' == host) host = '';
|
|
205046
|
-
|
|
205047
|
-
if (host) {
|
|
205048
|
-
host = sep + sep + host;
|
|
205049
|
-
}
|
|
205050
|
-
|
|
205051
|
-
// 3.2 Drives, drive letters, mount points, file system root
|
|
205052
|
-
// Drive letters are mapped into the top of a file URI in various ways,
|
|
205053
|
-
// depending on the implementation; some applications substitute
|
|
205054
|
-
// vertical bar ("|") for the colon after the drive letter, yielding
|
|
205055
|
-
// "file:///c|/tmp/test.txt". In some cases, the colon is left
|
|
205056
|
-
// unchanged, as in "file:///c:/tmp/test.txt". In other cases, the
|
|
205057
|
-
// colon is simply omitted, as in "file:///c/tmp/test.txt".
|
|
205058
|
-
path = path.replace(/^(.+)\|/, '$1:');
|
|
205059
|
-
|
|
205060
|
-
// for Windows, we need to invert the path separators from what a URI uses
|
|
205061
|
-
if (sep == '\\') {
|
|
205062
|
-
path = path.replace(/\//g, '\\');
|
|
205063
|
-
}
|
|
205064
|
-
|
|
205065
|
-
if (/^.+\:/.test(path)) {
|
|
205066
|
-
// has Windows drive at beginning of path
|
|
205067
|
-
} else {
|
|
205068
|
-
// unix path…
|
|
205069
|
-
path = sep + path;
|
|
205070
|
-
}
|
|
205071
|
-
|
|
205072
|
-
return host + path;
|
|
205073
|
-
}
|
|
205074
|
-
|
|
205075
|
-
|
|
205076
204775
|
/***/ }),
|
|
205077
204776
|
|
|
205078
204777
|
/***/ 18970:
|
|
@@ -672786,6 +672485,18 @@ class AleoBase {
|
|
|
672786
672485
|
programManager.setAccount(account);
|
|
672787
672486
|
return programManager;
|
|
672788
672487
|
}
|
|
672488
|
+
get networkPath() {
|
|
672489
|
+
return this.chainId === _utils_types_js__WEBPACK_IMPORTED_MODULE_3__/* .AleoNetworkId */ .lH.TESTNET ? 'testnet' : 'mainnet';
|
|
672490
|
+
}
|
|
672491
|
+
async findBlockHashByTxId(txId) {
|
|
672492
|
+
const url = `${this.rpcUrls[0]}/${this.networkPath}/find/blockHash/${txId}`;
|
|
672493
|
+
return (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .retryAsync */ .tH)(async () => {
|
|
672494
|
+
const res = await fetch(url);
|
|
672495
|
+
if (!res.ok)
|
|
672496
|
+
throw new Error(`HTTP ${res.status}`);
|
|
672497
|
+
return JSON.parse(await res.text());
|
|
672498
|
+
}, _utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .RETRY_ATTEMPTS */ .Km, _utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .RETRY_DELAY_MS */ .k);
|
|
672499
|
+
}
|
|
672789
672500
|
async queryMappingValue(programId, mappingName, key) {
|
|
672790
672501
|
try {
|
|
672791
672502
|
const result = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .retryAsync */ .tH)(() => this.aleoClient.getProgramMappingValue(programId, mappingName, key), _utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .RETRY_ATTEMPTS */ .Km, _utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .RETRY_DELAY_MS */ .k);
|
|
@@ -672979,6 +672690,16 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_pro
|
|
|
672979
672690
|
|
|
672980
672691
|
class AleoProvider extends _base_js__WEBPACK_IMPORTED_MODULE_6__/* .AleoBase */ .N {
|
|
672981
672692
|
transactionFeeCache = {};
|
|
672693
|
+
signerTransferCache = new Map();
|
|
672694
|
+
async hasSignerTransferFunctions(programId) {
|
|
672695
|
+
if (this.signerTransferCache.has(programId)) {
|
|
672696
|
+
return this.signerTransferCache.get(programId);
|
|
672697
|
+
}
|
|
672698
|
+
const program = await this.aleoClient.getProgram(programId);
|
|
672699
|
+
const hasSigner = program.toString().includes('transfer_remote_as_signer');
|
|
672700
|
+
this.signerTransferCache.set(programId, hasSigner);
|
|
672701
|
+
return hasSigner;
|
|
672702
|
+
}
|
|
672982
672703
|
static async connect(rpcUrls, chainId) {
|
|
672983
672704
|
return new AleoProvider(rpcUrls, chainId);
|
|
672984
672705
|
}
|
|
@@ -673178,6 +672899,28 @@ class AleoProvider extends _base_js__WEBPACK_IMPORTED_MODULE_6__/* .AleoBase */
|
|
|
673178
672899
|
}
|
|
673179
672900
|
}
|
|
673180
672901
|
}
|
|
672902
|
+
// ### QUERY DISPATCH ###
|
|
672903
|
+
async getDispatchNonceForTx(mailboxAddress, txId) {
|
|
672904
|
+
const { programId } = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .fromAleoAddress */ .kz)(mailboxAddress);
|
|
672905
|
+
const blockHash = await this.findBlockHashByTxId(txId);
|
|
672906
|
+
const block = await this.aleoClient.getBlockByHash(blockHash);
|
|
672907
|
+
const blockHeight = Number(block.header.metadata.height);
|
|
672908
|
+
const nonce = await this.queryMappingValue(programId, 'dispatch_event_index', `${blockHeight}u32`);
|
|
672909
|
+
return nonce != null ? nonce : null;
|
|
672910
|
+
}
|
|
672911
|
+
async getDispatchedMessageId(mailboxAddress, nonce) {
|
|
672912
|
+
const { programId } = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .fromAleoAddress */ .kz)(mailboxAddress);
|
|
672913
|
+
const raw = await this.queryMappingString(programId, 'dispatch_id_events', `${nonce}u32`);
|
|
672914
|
+
return (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .u128PairToBytes32 */ .Gb)(raw);
|
|
672915
|
+
}
|
|
672916
|
+
async getDispatchedDestinationDomain(mailboxAddress, nonce) {
|
|
672917
|
+
const { programId } = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .fromAleoAddress */ .kz)(mailboxAddress);
|
|
672918
|
+
const result = await this.queryMappingValue(programId, 'dispatch_events', `${nonce}u32`);
|
|
672919
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(result != null, `No dispatch_events entry at nonce ${nonce} (mailbox=${mailboxAddress})`);
|
|
672920
|
+
const domain = result['destination_domain'];
|
|
672921
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .assert */ .v)(typeof domain === 'number', `destination_domain is not a number: ${domain}`);
|
|
672922
|
+
return domain;
|
|
672923
|
+
}
|
|
673181
672924
|
async getQuotes(gasLimit, destinationDomainId, hooks) {
|
|
673182
672925
|
let total_quote = new bignumber_js__WEBPACK_IMPORTED_MODULE_1__/* .BigNumber */ .g(0);
|
|
673183
672926
|
const quotes = [];
|
|
@@ -673294,13 +673037,16 @@ class AleoProvider extends _base_js__WEBPACK_IMPORTED_MODULE_6__/* .AleoBase */
|
|
|
673294
673037
|
required_hook:${mailbox.requiredHook ? (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .fromAleoAddress */ .kz)(mailbox.requiredHook).address : _utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .ALEO_NULL_ADDRESS */ .B$}
|
|
673295
673038
|
}`;
|
|
673296
673039
|
const amount = `${req.amount}${tokenType === _hyperlane_xyz_provider_sdk__WEBPACK_IMPORTED_MODULE_2__/* .AltVM.TokenType */ .bx.ks.native ? 'u64' : 'u128'}`;
|
|
673040
|
+
const useSignerVariant = await this.hasSignerTransferFunctions(programId);
|
|
673297
673041
|
if (req.customHookAddress) {
|
|
673298
673042
|
const metadataBytes = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_3__/* .fillArray */ .R2)([...Buffer.from((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_8__/* .strip0x */ .LL)(req.customHookMetadata || ''), 'hex')], 64, 0);
|
|
673299
673043
|
const gasLimit = _provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .U128 */ .xQ.fromBytesLe(Uint8Array.from(metadataBytes.slice(0, 16))).toString();
|
|
673300
673044
|
const hookMetadata = `{gas_limit:${gasLimit},extra_data:[${metadataBytes.map((b) => `${b}u8`).join(',')}]}`;
|
|
673301
673045
|
return {
|
|
673302
673046
|
programName: programId,
|
|
673303
|
-
functionName:
|
|
673047
|
+
functionName: useSignerVariant
|
|
673048
|
+
? 'transfer_remote_with_hook_as'
|
|
673049
|
+
: 'transfer_remote_with_hook',
|
|
673304
673050
|
priorityFee: 0,
|
|
673305
673051
|
privateFee: false,
|
|
673306
673052
|
inputs: [
|
|
@@ -673318,7 +673064,9 @@ class AleoProvider extends _base_js__WEBPACK_IMPORTED_MODULE_6__/* .AleoBase */
|
|
|
673318
673064
|
}
|
|
673319
673065
|
return {
|
|
673320
673066
|
programName: programId,
|
|
673321
|
-
functionName:
|
|
673067
|
+
functionName: useSignerVariant
|
|
673068
|
+
? 'transfer_remote_as_signer'
|
|
673069
|
+
: 'transfer_remote',
|
|
673322
673070
|
priorityFee: 0,
|
|
673323
673071
|
privateFee: false,
|
|
673324
673072
|
inputs: [
|
|
@@ -673346,24 +673094,26 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
673346
673094
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
673347
673095
|
/* harmony export */ C: () => (/* binding */ AleoSigner)
|
|
673348
673096
|
/* harmony export */ });
|
|
673349
|
-
/* harmony import */ var
|
|
673350
|
-
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(
|
|
673351
|
-
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(
|
|
673352
|
-
/* harmony import */ var
|
|
673353
|
-
/* harmony import */ var
|
|
673354
|
-
var
|
|
673355
|
-
|
|
673097
|
+
/* harmony import */ var _hyperlane_xyz_provider_sdk_warp__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(17791);
|
|
673098
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(21387);
|
|
673099
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(73689);
|
|
673100
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(14918);
|
|
673101
|
+
/* harmony import */ var _utils_helper_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(86255);
|
|
673102
|
+
/* harmony import */ var _provider_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(18269);
|
|
673103
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_helper_js__WEBPACK_IMPORTED_MODULE_1__, _provider_js__WEBPACK_IMPORTED_MODULE_2__]);
|
|
673104
|
+
([_utils_helper_js__WEBPACK_IMPORTED_MODULE_1__, _provider_js__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
673105
|
+
|
|
673356
673106
|
|
|
673357
673107
|
|
|
673358
673108
|
|
|
673359
|
-
class AleoSigner extends
|
|
673109
|
+
class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_2__/* .AleoProvider */ .t {
|
|
673360
673110
|
static WARP_SUFFIX_ALREADY_DEPLOYED_ERROR = 'already deployed, please choose another suffix';
|
|
673361
673111
|
programManager;
|
|
673362
673112
|
static async connectWithSigner(rpcUrls, privateKey, extraParams) {
|
|
673363
|
-
(0,
|
|
673113
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .v)(extraParams, `extra params not defined`);
|
|
673364
673114
|
const metadata = extraParams.metadata;
|
|
673365
|
-
(0,
|
|
673366
|
-
(0,
|
|
673115
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .v)(metadata, `metadata not defined in extra params`);
|
|
673116
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .v)(!(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .isNullish */ .u)(metadata.chainId), `chainId not defined in metadata extra params`);
|
|
673367
673117
|
const chainId = parseInt(metadata.chainId.toString());
|
|
673368
673118
|
return new AleoSigner(rpcUrls, chainId, privateKey);
|
|
673369
673119
|
}
|
|
@@ -673377,7 +673127,7 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
|
|
|
673377
673127
|
// Check if it's already deployed
|
|
673378
673128
|
const isDeployed = await this.isProgramDeployed(ismManagerProgramId);
|
|
673379
673129
|
if (!isDeployed) {
|
|
673380
|
-
const suffix = (0,
|
|
673130
|
+
const suffix = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_1__/* .getProgramSuffix */ .GC)(ismManagerProgramId);
|
|
673381
673131
|
await this.deployProgram('ism_manager', suffix);
|
|
673382
673132
|
}
|
|
673383
673133
|
return ismManagerProgramId;
|
|
@@ -673397,16 +673147,19 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
|
|
|
673397
673147
|
err.message.includes(programId));
|
|
673398
673148
|
}
|
|
673399
673149
|
async getWarpTokenSuffix(tokenType, preferredSuffix, maxAttempts = 20) {
|
|
673150
|
+
if (tokenType === _hyperlane_xyz_provider_sdk_warp__WEBPACK_IMPORTED_MODULE_0__/* .TokenType */ .ks.native) {
|
|
673151
|
+
return 'credits';
|
|
673152
|
+
}
|
|
673400
673153
|
const configuredSuffix = preferredSuffix || this.warpSuffix;
|
|
673401
673154
|
if (configuredSuffix) {
|
|
673402
|
-
const tokenProgramId = `${this.prefix}
|
|
673155
|
+
const tokenProgramId = `${this.prefix}_warp_token_${configuredSuffix}.aleo`;
|
|
673403
673156
|
const isAlreadyDeployed = await this.isProgramDeployed(tokenProgramId);
|
|
673404
|
-
(0,
|
|
673157
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .v)(!isAlreadyDeployed, `Warp route with suffix ${configuredSuffix} ${AleoSigner.WARP_SUFFIX_ALREADY_DEPLOYED_ERROR}`);
|
|
673405
673158
|
return configuredSuffix;
|
|
673406
673159
|
}
|
|
673407
673160
|
for (let i = 0; i < maxAttempts; i++) {
|
|
673408
|
-
const suffix = this.generateSuffix(
|
|
673409
|
-
const tokenProgramId = `${this.prefix}
|
|
673161
|
+
const suffix = this.generateSuffix(_utils_helper_js__WEBPACK_IMPORTED_MODULE_1__/* .SUFFIX_LENGTH_LONG */ .SO);
|
|
673162
|
+
const tokenProgramId = `${this.prefix}_warp_token_${suffix}.aleo`;
|
|
673410
673163
|
if (!(await this.isProgramDeployed(tokenProgramId))) {
|
|
673411
673164
|
return suffix;
|
|
673412
673165
|
}
|
|
@@ -673414,7 +673167,7 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
|
|
|
673414
673167
|
throw new Error(`Could not find an unused suffix for ${tokenType} after ${maxAttempts} attempts`);
|
|
673415
673168
|
}
|
|
673416
673169
|
async deployProgram(programName, coreSuffix, warpSuffix) {
|
|
673417
|
-
const programs = (0,
|
|
673170
|
+
const programs = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_1__/* .loadProgramsInDeployOrder */ .wR)(this.prefix, programName, coreSuffix, warpSuffix);
|
|
673418
673171
|
for (const { id, program } of programs) {
|
|
673419
673172
|
if (await this.isProgramDeployed(id)) {
|
|
673420
673173
|
continue;
|
|
@@ -673455,7 +673208,7 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
|
|
|
673455
673208
|
async getHookManager(suffix) {
|
|
673456
673209
|
const programs = await this.deployProgram('hook_manager', suffix);
|
|
673457
673210
|
const hookManagerProgramId = programs['hook_manager'];
|
|
673458
|
-
(0,
|
|
673211
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .assert */ .v)(hookManagerProgramId, `hook_manager program not deployed`);
|
|
673459
673212
|
return hookManagerProgramId;
|
|
673460
673213
|
}
|
|
673461
673214
|
supportsTransactionBatching() {
|
|
@@ -673468,7 +673221,7 @@ class AleoSigner extends _provider_js__WEBPACK_IMPORTED_MODULE_1__/* .AleoProvid
|
|
|
673468
673221
|
const tx = this.skipProofs
|
|
673469
673222
|
? await this.programManager.buildDevnodeExecutionTransaction(transaction)
|
|
673470
673223
|
: await this.programManager.buildExecutionTransaction(transaction);
|
|
673471
|
-
const txId = await (0,
|
|
673224
|
+
const txId = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .retryAsync */ .tH)(() => this.programManager.networkClient.submitTransaction(tx), _utils_helper_js__WEBPACK_IMPORTED_MODULE_1__/* .RETRY_ATTEMPTS */ .Km, _utils_helper_js__WEBPACK_IMPORTED_MODULE_1__/* .RETRY_DELAY_MS */ .k);
|
|
673472
673225
|
const receipt = await this.aleoClient.waitForTransactionConfirmation(txId);
|
|
673473
673226
|
return {
|
|
673474
673227
|
...receipt,
|
|
@@ -675297,6 +675050,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
675297
675050
|
/* harmony export */ B$: () => (/* binding */ ALEO_NULL_ADDRESS),
|
|
675298
675051
|
/* harmony export */ ED: () => (/* binding */ getUnusedSuffix),
|
|
675299
675052
|
/* harmony export */ GC: () => (/* binding */ getProgramSuffix),
|
|
675053
|
+
/* harmony export */ Gb: () => (/* binding */ u128PairToBytes32),
|
|
675300
675054
|
/* harmony export */ Km: () => (/* binding */ RETRY_ATTEMPTS),
|
|
675301
675055
|
/* harmony export */ M0: () => (/* binding */ formatAddress),
|
|
675302
675056
|
/* harmony export */ NL: () => (/* binding */ providerWarpTokenTypeFromAleoTokenType),
|
|
@@ -675321,10 +675075,12 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
675321
675075
|
/* harmony export */ wR: () => (/* binding */ loadProgramsInDeployOrder),
|
|
675322
675076
|
/* harmony export */ zg: () => (/* binding */ formatIsmAddress)
|
|
675323
675077
|
/* harmony export */ });
|
|
675324
|
-
/* unused harmony exports MAINNET_PREFIX, TESTNET_PREFIX, getProgramPrefix, isProgramDeployed */
|
|
675078
|
+
/* unused harmony exports MAINNET_PREFIX, TESTNET_PREFIX, getProgramPrefix, toKeyId, isProgramDeployed */
|
|
675325
675079
|
/* harmony import */ var _provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(73565);
|
|
675326
675080
|
/* harmony import */ var _hyperlane_xyz_provider_sdk_warp__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(17791);
|
|
675327
675081
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(93142);
|
|
675082
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(21387);
|
|
675083
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(18508);
|
|
675328
675084
|
/* harmony import */ var _artifacts_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(29026);
|
|
675329
675085
|
/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(96602);
|
|
675330
675086
|
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__]);
|
|
@@ -675383,7 +675139,13 @@ function loadProgramsInDeployOrder(prefix, programName, coreSuffix, warpSuffix)
|
|
|
675383
675139
|
programs = programs.map((p) => _provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .Program */ .BP.fromString(p
|
|
675384
675140
|
.toString()
|
|
675385
675141
|
.replaceAll(/(mailbox|hook_manager|dispatch_proxy|validator_announce).aleo/g, (_, p1) => (coreSuffix ? `${p1}_${coreSuffix}.aleo` : `${p1}.aleo`))
|
|
675386
|
-
.replaceAll(/(hyp_native|hyp_collateral|hyp_synthetic).aleo/g, (_, p1) =>
|
|
675142
|
+
.replaceAll(/(hyp_native|hyp_collateral|hyp_synthetic).aleo/g, (_, p1) => {
|
|
675143
|
+
if (p1 === 'hyp_native') {
|
|
675144
|
+
return `hyp_warp_token_credits.aleo`;
|
|
675145
|
+
}
|
|
675146
|
+
const effectiveSuffix = getCustomWarpSuffixFromEnv() || warpSuffix || coreSuffix;
|
|
675147
|
+
return `hyp_warp_token_${effectiveSuffix}.aleo`;
|
|
675148
|
+
})));
|
|
675387
675149
|
if (customIsmSuffix) {
|
|
675388
675150
|
programs = programs.map((p) => _provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .Program */ .BP.fromString(p
|
|
675389
675151
|
.toString()
|
|
@@ -675436,7 +675198,18 @@ constructor:
|
|
|
675436
675198
|
}
|
|
675437
675199
|
return programs.map((p) => ({
|
|
675438
675200
|
id: p.id(),
|
|
675439
|
-
name: Object.keys(_artifacts_js__WEBPACK_IMPORTED_MODULE_2__/* .programRegistry */ .aE).find((r) =>
|
|
675201
|
+
name: Object.keys(_artifacts_js__WEBPACK_IMPORTED_MODULE_2__/* .programRegistry */ .aE).find((r) => {
|
|
675202
|
+
if (r === 'hyp_native') {
|
|
675203
|
+
return p.id() === `${prefix}_warp_token_credits.aleo`;
|
|
675204
|
+
}
|
|
675205
|
+
if ((r === 'hyp_collateral' || r === 'hyp_synthetic') &&
|
|
675206
|
+
r === programName &&
|
|
675207
|
+
p.id().startsWith(`${prefix}_warp_token_`) &&
|
|
675208
|
+
p.id() !== `${prefix}_warp_token_credits.aleo`) {
|
|
675209
|
+
return true;
|
|
675210
|
+
}
|
|
675211
|
+
return p.id().startsWith(`${prefix}_${r.replaceAll('hyp_', '')}`);
|
|
675212
|
+
}) || '',
|
|
675440
675213
|
program: p.toString(),
|
|
675441
675214
|
}));
|
|
675442
675215
|
}
|
|
@@ -675550,11 +675323,74 @@ function bytes32ToU128String(input) {
|
|
|
675550
675323
|
const highBytes = Uint8Array.from(bytes.subarray(16, 32));
|
|
675551
675324
|
return `[${_provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .U128 */ .xQ.fromBytesLe(lowBytes).toString()},${_provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .U128 */ .xQ.fromBytesLe(highBytes).toString()}]`;
|
|
675552
675325
|
}
|
|
675326
|
+
// Inverse of bytes32ToU128String: parses "[lowU128u128, highU128u128]" from dispatch_id_events
|
|
675327
|
+
// and converts back to a 0x-prefixed 32-byte hex string.
|
|
675328
|
+
function u128PairToBytes32(u128PairStr) {
|
|
675329
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .assert */ .v)(u128PairStr.startsWith('[') && u128PairStr.endsWith(']'), `u128PairToBytes32: expected "[low,high]" format, got: ${u128PairStr}`);
|
|
675330
|
+
const inner = u128PairStr.slice(1, -1);
|
|
675331
|
+
const parts = inner.split(',').map((s) => s.trim().replace(/u128$/, ''));
|
|
675332
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .assert */ .v)(parts.length === 2, `u128PairToBytes32: expected exactly 2 comma-separated parts, got ${parts.length}: ${inner}`);
|
|
675333
|
+
const low = BigInt(parts[0]);
|
|
675334
|
+
const high = BigInt(parts[1]);
|
|
675335
|
+
const u128Max = 2n ** 128n;
|
|
675336
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .assert */ .v)(low >= 0n && low < u128Max, `u128PairToBytes32: low value out of u128 range: ${low}`);
|
|
675337
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .assert */ .v)(high >= 0n && high < u128Max, `u128PairToBytes32: high value out of u128 range: ${high}`);
|
|
675338
|
+
const bytes = new Uint8Array(32);
|
|
675339
|
+
let tempLow = low;
|
|
675340
|
+
for (let i = 0; i < 16; i++) {
|
|
675341
|
+
bytes[i] = Number(tempLow & 0xffn);
|
|
675342
|
+
tempLow >>= 8n;
|
|
675343
|
+
}
|
|
675344
|
+
let tempHigh = high;
|
|
675345
|
+
for (let i = 0; i < 16; i++) {
|
|
675346
|
+
bytes[16 + i] = Number(tempHigh & 0xffn);
|
|
675347
|
+
tempHigh >>= 8n;
|
|
675348
|
+
}
|
|
675349
|
+
return (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .toHexString */ .U5)(Buffer.from(bytes));
|
|
675350
|
+
}
|
|
675553
675351
|
function getBalanceKey(address, denom) {
|
|
675554
675352
|
return new _provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .BHP256 */ .I_()
|
|
675555
675353
|
.hash(_provablehq_sdk_mainnet_js__WEBPACK_IMPORTED_MODULE_0__/* .Plaintext */ .wN.fromString(`{account:${address},token_id:${denom}}`).toBitsLe())
|
|
675556
675354
|
.toString();
|
|
675557
675355
|
}
|
|
675356
|
+
// Aleo scalar field (BLS12-377 Fr) is 253 bits.
|
|
675357
|
+
const ALEO_FIELD_BITS = 253;
|
|
675358
|
+
// Encodes an Aleo Identifier to its snarkVM LE bit representation.
|
|
675359
|
+
// Identifier stores ASCII bytes packed into a field element: chars → LE bits → zero-padded to 253 bits.
|
|
675360
|
+
function identifierToBitsLe(name) {
|
|
675361
|
+
const bits = [];
|
|
675362
|
+
for (let i = 0; i < name.length; i++) {
|
|
675363
|
+
const byte = name.charCodeAt(i);
|
|
675364
|
+
for (let b = 0; b < 8; b++)
|
|
675365
|
+
bits.push(((byte >> b) & 1) === 1);
|
|
675366
|
+
}
|
|
675367
|
+
while (bits.length < ALEO_FIELD_BITS)
|
|
675368
|
+
bits.push(false);
|
|
675369
|
+
return bits;
|
|
675370
|
+
}
|
|
675371
|
+
// Encodes an Aleo ProgramID (e.g., "mailbox.aleo") as LE bits.
|
|
675372
|
+
// ProgramID serializes as: name identifier bits || network identifier bits.
|
|
675373
|
+
function programIdToBitsLe(programId) {
|
|
675374
|
+
const dot = programId.lastIndexOf('.');
|
|
675375
|
+
return [
|
|
675376
|
+
...identifierToBitsLe(programId.slice(0, dot)),
|
|
675377
|
+
...identifierToBitsLe(programId.slice(dot + 1)),
|
|
675378
|
+
];
|
|
675379
|
+
}
|
|
675380
|
+
// Computes the Aleo mapping key_id used in FinalizeJSON.
|
|
675381
|
+
// Matches the Rust `to_key_id` in hyperlane-aleo/src/utils.rs:
|
|
675382
|
+
// BHP1024(programId_bits | false | mappingName_bits | false | plaintextKey_bits)
|
|
675383
|
+
// key must be a valid Aleo plaintext string, e.g. "0u32".
|
|
675384
|
+
function toKeyId(programId, mappingName, key) {
|
|
675385
|
+
const bits = [
|
|
675386
|
+
...programIdToBitsLe(programId),
|
|
675387
|
+
false,
|
|
675388
|
+
...identifierToBitsLe(mappingName),
|
|
675389
|
+
false,
|
|
675390
|
+
...Plaintext.fromString(key).toBitsLe(),
|
|
675391
|
+
];
|
|
675392
|
+
return new BHP1024().hash(bits).toString();
|
|
675393
|
+
}
|
|
675558
675394
|
/**
|
|
675559
675395
|
* Convert AleoTokenType to provider-sdk TokenType
|
|
675560
675396
|
*/
|
|
@@ -676141,9 +675977,11 @@ class AleoNativeTokenWriter extends AleoNativeTokenReader {
|
|
|
676141
675977
|
// Get mailbox suffix for deployment
|
|
676142
675978
|
const { programId: mailboxProgramId } = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .fromAleoAddress */ .kz)(config.mailbox);
|
|
676143
675979
|
const mailboxSuffix = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .getProgramSuffix */ .GC)(mailboxProgramId);
|
|
676144
|
-
// Resolve token suffix from preferred setting or generate a collision-free one
|
|
675980
|
+
// Resolve token suffix from preferred setting or generate a collision-free one.
|
|
675981
|
+
// Native tokens always use the fixed 'credits' suffix, so the program may
|
|
675982
|
+
// already be deployed and initialized from a previous warp deploy run.
|
|
676145
675983
|
const tokenSuffix = await this.signer.getWarpTokenSuffix('native');
|
|
676146
|
-
// Deploy native token program
|
|
675984
|
+
// Deploy native token program (idempotent if already on-chain)
|
|
676147
675985
|
const programs = await this.signer
|
|
676148
675986
|
.deployProgram('hyp_native', mailboxSuffix, tokenSuffix)
|
|
676149
675987
|
.catch((error) => {
|
|
@@ -676151,6 +675989,15 @@ class AleoNativeTokenWriter extends AleoNativeTokenReader {
|
|
|
676151
675989
|
});
|
|
676152
675990
|
const tokenProgramId = programs['hyp_native'];
|
|
676153
675991
|
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .assert */ .v)(tokenProgramId, 'Expected native token program to be deployed but none was found in deployment mapping');
|
|
675992
|
+
const tokenAddress = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .toAleoAddress */ .j2)(tokenProgramId);
|
|
675993
|
+
// Native tokens use a fixed program name (no random suffix), so only one
|
|
675994
|
+
// native warp token can exist per network. If it's already initialized,
|
|
675995
|
+
// fail early with a clear message instead of letting init fail on-chain.
|
|
675996
|
+
const existingArtifact = await this.read(tokenAddress).catch(() => null);
|
|
675997
|
+
if (existingArtifact) {
|
|
675998
|
+
throw new Error(`Native warp token ${tokenProgramId} is already deployed at ${tokenAddress}. ` +
|
|
675999
|
+
`Native tokens cannot be redeployed. Use \`hyperlane warp apply\` to update the existing deployment.`);
|
|
676000
|
+
}
|
|
676154
676001
|
// Initialize token
|
|
676155
676002
|
const initTx = (0,_warp_tx_js__WEBPACK_IMPORTED_MODULE_5__/* .getCreateNativeTokenTx */ .zf)(tokenProgramId);
|
|
676156
676003
|
const initReceipt = await this.signer
|
|
@@ -676159,7 +676006,6 @@ class AleoNativeTokenWriter extends AleoNativeTokenReader {
|
|
|
676159
676006
|
throw withErrorContext(`Failed to initialize native warp token program ${tokenProgramId} (signer=${signerAddress})`, error);
|
|
676160
676007
|
});
|
|
676161
676008
|
allReceipts.push(initReceipt);
|
|
676162
|
-
const tokenAddress = (0,_utils_helper_js__WEBPACK_IMPORTED_MODULE_2__/* .toAleoAddress */ .j2)(tokenProgramId);
|
|
676163
676009
|
// Perform post-deployment updates (ISM setup and router enrollment)
|
|
676164
676010
|
const postDeploymentTxs = (0,_warp_tx_js__WEBPACK_IMPORTED_MODULE_5__/* .getPostDeploymentUpdateTxs */ .UL)(tokenAddress, config);
|
|
676165
676011
|
for (const tx of postDeploymentTxs) {
|
|
@@ -677362,6 +677208,160 @@ async function getOperatorSignature(domain, serviceManager, avsDirectory, operat
|
|
|
677362
677208
|
|
|
677363
677209
|
/***/ }),
|
|
677364
677210
|
|
|
677211
|
+
/***/ 46761:
|
|
677212
|
+
/***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
677213
|
+
|
|
677214
|
+
__nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
677215
|
+
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
677216
|
+
/* harmony export */ u: () => (/* binding */ runWarpRouteBalances)
|
|
677217
|
+
/* harmony export */ });
|
|
677218
|
+
/* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(9035);
|
|
677219
|
+
/* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(4879);
|
|
677220
|
+
/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(54321);
|
|
677221
|
+
/* harmony import */ var _utils_files_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(17468);
|
|
677222
|
+
/* harmony import */ var _utils_warp_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(85361);
|
|
677223
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_warp_js__WEBPACK_IMPORTED_MODULE_1__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_2__]);
|
|
677224
|
+
([_utils_warp_js__WEBPACK_IMPORTED_MODULE_1__, _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
677225
|
+
|
|
677226
|
+
|
|
677227
|
+
|
|
677228
|
+
|
|
677229
|
+
function formatBigIntBalance(raw, decimals) {
|
|
677230
|
+
const str = raw.toString().padStart(decimals + 1, '0');
|
|
677231
|
+
const intPart = str.slice(0, str.length - decimals);
|
|
677232
|
+
const fracFull = str.slice(str.length - decimals);
|
|
677233
|
+
const fracTrimmed = fracFull.replace(/0+$/, '');
|
|
677234
|
+
const intFormatted = new Intl.NumberFormat().format(BigInt(intPart));
|
|
677235
|
+
return fracTrimmed ? `${intFormatted}.${fracTrimmed}` : intFormatted;
|
|
677236
|
+
}
|
|
677237
|
+
async function runWarpRouteBalances({ context, warpRouteId, chains, out, address, raw, }) {
|
|
677238
|
+
const warpCoreConfig = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_1__/* .getWarpCoreConfigOrExit */ .ff)({
|
|
677239
|
+
context,
|
|
677240
|
+
warpRouteId,
|
|
677241
|
+
chains,
|
|
677242
|
+
});
|
|
677243
|
+
const registryAddresses = await context.registry.getAddresses();
|
|
677244
|
+
const mailboxMetadata = {};
|
|
677245
|
+
for (const token of warpCoreConfig.tokens) {
|
|
677246
|
+
const chainAddresses = registryAddresses[token.chainName];
|
|
677247
|
+
if (chainAddresses?.mailbox) {
|
|
677248
|
+
mailboxMetadata[token.chainName] = { mailbox: chainAddresses.mailbox };
|
|
677249
|
+
}
|
|
677250
|
+
}
|
|
677251
|
+
const multiProvider = context.multiProtocolProvider.extendChainMetadata(mailboxMetadata);
|
|
677252
|
+
const warpCore = _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_2__/* .WarpCore */ .u.FromConfig(multiProvider, warpCoreConfig);
|
|
677253
|
+
const collateralizedSet = new Set([
|
|
677254
|
+
..._hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__/* .TOKEN_COLLATERALIZED_STANDARDS */ .PP,
|
|
677255
|
+
..._hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_3__/* .ERC4626_COLLATERAL_STANDARDS */ .eB,
|
|
677256
|
+
]);
|
|
677257
|
+
const chainsSet = chains && chains.length > 0 ? new Set(chains) : undefined;
|
|
677258
|
+
const filteredTokens = chainsSet
|
|
677259
|
+
? warpCore.tokens.filter((t) => chainsSet.has(t.chainName))
|
|
677260
|
+
: warpCore.tokens;
|
|
677261
|
+
const tokenEntries = await Promise.all(filteredTokens.map(async (token) => {
|
|
677262
|
+
const isCollateral = collateralizedSet.has(token.standard);
|
|
677263
|
+
try {
|
|
677264
|
+
let balanceRaw;
|
|
677265
|
+
if (address) {
|
|
677266
|
+
const adapter = token.getAdapter(multiProvider);
|
|
677267
|
+
balanceRaw = await adapter.getBalance(address);
|
|
677268
|
+
}
|
|
677269
|
+
else if (isCollateral) {
|
|
677270
|
+
balanceRaw = await warpCore.getTokenCollateral(token);
|
|
677271
|
+
}
|
|
677272
|
+
else {
|
|
677273
|
+
const adapter = token.getAdapter(multiProvider);
|
|
677274
|
+
balanceRaw = await adapter.getTotalSupply();
|
|
677275
|
+
}
|
|
677276
|
+
const balance = balanceRaw !== undefined
|
|
677277
|
+
? raw
|
|
677278
|
+
? balanceRaw.toString()
|
|
677279
|
+
: formatBigIntBalance(balanceRaw, token.decimals)
|
|
677280
|
+
: 'N/A';
|
|
677281
|
+
return {
|
|
677282
|
+
chain: token.chainName,
|
|
677283
|
+
row: {
|
|
677284
|
+
Symbol: token.symbol,
|
|
677285
|
+
Standard: token.standard,
|
|
677286
|
+
Address: token.addressOrDenom,
|
|
677287
|
+
Balance: balance,
|
|
677288
|
+
},
|
|
677289
|
+
rawBalance: balanceRaw,
|
|
677290
|
+
isCollateral,
|
|
677291
|
+
decimals: token.decimals,
|
|
677292
|
+
};
|
|
677293
|
+
}
|
|
677294
|
+
catch (e) {
|
|
677295
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .warnYellow */ .dE)(`Could not fetch balance for ${token.symbol} on ${token.chainName}: ${e instanceof Error ? e.message : String(e)}`);
|
|
677296
|
+
return {
|
|
677297
|
+
chain: token.chainName,
|
|
677298
|
+
row: {
|
|
677299
|
+
Symbol: token.symbol,
|
|
677300
|
+
Standard: token.standard,
|
|
677301
|
+
Address: token.addressOrDenom,
|
|
677302
|
+
Balance: 'Error',
|
|
677303
|
+
},
|
|
677304
|
+
rawBalance: undefined,
|
|
677305
|
+
isCollateral,
|
|
677306
|
+
decimals: token.decimals,
|
|
677307
|
+
};
|
|
677308
|
+
}
|
|
677309
|
+
}));
|
|
677310
|
+
const tableData = {};
|
|
677311
|
+
for (const { chain, row } of tokenEntries) {
|
|
677312
|
+
let key = chain;
|
|
677313
|
+
let i = 2;
|
|
677314
|
+
while (key in tableData) {
|
|
677315
|
+
key = `${chain} (${i++})`;
|
|
677316
|
+
}
|
|
677317
|
+
tableData[key] = row;
|
|
677318
|
+
}
|
|
677319
|
+
if (address) {
|
|
677320
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .logBlue */ .RK)(`\nWarp route balances for ${address}:`);
|
|
677321
|
+
}
|
|
677322
|
+
else {
|
|
677323
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .logBlue */ .RK)('\nWarp route balances:');
|
|
677324
|
+
}
|
|
677325
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .logTable */ .Jn)(tableData);
|
|
677326
|
+
if (!address) {
|
|
677327
|
+
const collateralEntries = tokenEntries.filter((e) => e.isCollateral);
|
|
677328
|
+
const syntheticEntries = tokenEntries.filter((e) => !e.isCollateral);
|
|
677329
|
+
if (collateralEntries.length > 0 && syntheticEntries.length > 0) {
|
|
677330
|
+
const hasErrors = tokenEntries.some((e) => e.rawBalance === undefined);
|
|
677331
|
+
if (hasErrors) {
|
|
677332
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .warnYellow */ .dE)('\nStatus: INCONCLUSIVE — some balances unavailable, cannot compare collateral vs synthetic supply');
|
|
677333
|
+
}
|
|
677334
|
+
else {
|
|
677335
|
+
const commonDecimals = Math.max(...collateralEntries.map((e) => e.decimals), ...syntheticEntries.map((e) => e.decimals));
|
|
677336
|
+
const scale = (e) => 10n ** BigInt(commonDecimals - e.decimals);
|
|
677337
|
+
const totalCollateral = collateralEntries.reduce((sum, e) => sum + (e.rawBalance ?? 0n) * scale(e), 0n);
|
|
677338
|
+
const totalSynthetic = syntheticEntries.reduce((sum, e) => sum + (e.rawBalance ?? 0n) * scale(e), 0n);
|
|
677339
|
+
const fmt = (v) => raw ? v.toString() : formatBigIntBalance(v, commonDecimals);
|
|
677340
|
+
if (totalCollateral === totalSynthetic) {
|
|
677341
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .logGreen */ .In)(`\nStatus: collateral matches synthetic supply (${fmt(totalCollateral)})`);
|
|
677342
|
+
}
|
|
677343
|
+
else {
|
|
677344
|
+
const diff = totalCollateral > totalSynthetic
|
|
677345
|
+
? totalCollateral - totalSynthetic
|
|
677346
|
+
: totalSynthetic - totalCollateral;
|
|
677347
|
+
const sign = totalCollateral > totalSynthetic ? '+' : '-';
|
|
677348
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .warnYellow */ .dE)(`\nStatus: MISMATCH — collateral ${fmt(totalCollateral)} vs synthetic ${fmt(totalSynthetic)} (diff: ${sign}${fmt(diff)})`);
|
|
677349
|
+
}
|
|
677350
|
+
}
|
|
677351
|
+
}
|
|
677352
|
+
}
|
|
677353
|
+
if (out) {
|
|
677354
|
+
const jsonData = tokenEntries.map(({ chain, row }) => ({ chain, ...row }));
|
|
677355
|
+
(0,_utils_files_js__WEBPACK_IMPORTED_MODULE_0__/* .writeYamlOrJson */ .o9)(out, jsonData);
|
|
677356
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_4__/* .logGreen */ .In)(`\nBalances written to ${out}`);
|
|
677357
|
+
}
|
|
677358
|
+
}
|
|
677359
|
+
//# sourceMappingURL=warp.js.map
|
|
677360
|
+
__webpack_async_result__();
|
|
677361
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
677362
|
+
|
|
677363
|
+
/***/ }),
|
|
677364
|
+
|
|
677365
677365
|
/***/ 53994:
|
|
677366
677366
|
/***/ ((__webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
677367
677367
|
|
|
@@ -679474,29 +679474,31 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
679474
679474
|
/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(39023);
|
|
679475
679475
|
/* harmony import */ var yaml__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(10684);
|
|
679476
679476
|
/* harmony import */ var _hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(97772);
|
|
679477
|
-
/* harmony import */ var
|
|
679478
|
-
/* harmony import */ var
|
|
679479
|
-
/* harmony import */ var
|
|
679480
|
-
/* harmony import */ var
|
|
679481
|
-
/* harmony import */ var
|
|
679482
|
-
/* harmony import */ var
|
|
679477
|
+
/* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_22__ = __nccwpck_require__(47265);
|
|
679478
|
+
/* harmony import */ var _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_24__ = __nccwpck_require__(17023);
|
|
679479
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(21387);
|
|
679480
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(52193);
|
|
679481
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_21__ = __nccwpck_require__(16639);
|
|
679482
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_23__ = __nccwpck_require__(94523);
|
|
679483
679483
|
/* harmony import */ var _check_warp_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(53994);
|
|
679484
679484
|
/* harmony import */ var _config_warp_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(10392);
|
|
679485
679485
|
/* harmony import */ var _deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(41687);
|
|
679486
|
-
/* harmony import */ var
|
|
679487
|
-
/* harmony import */ var
|
|
679488
|
-
/* harmony import */ var
|
|
679489
|
-
/* harmony import */ var
|
|
679490
|
-
/* harmony import */ var
|
|
679491
|
-
/* harmony import */ var
|
|
679492
|
-
/* harmony import */ var
|
|
679493
|
-
/* harmony import */ var
|
|
679494
|
-
/* harmony import */ var
|
|
679495
|
-
/* harmony import */ var
|
|
679496
|
-
/* harmony import */ var
|
|
679497
|
-
/* harmony import */ var
|
|
679498
|
-
|
|
679499
|
-
([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_2__, _check_warp_js__WEBPACK_IMPORTED_MODULE_3__, _config_warp_js__WEBPACK_IMPORTED_MODULE_4__, _deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__,
|
|
679486
|
+
/* harmony import */ var _balances_warp_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(46761);
|
|
679487
|
+
/* harmony import */ var _fees_warp_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(89717);
|
|
679488
|
+
/* harmony import */ var _fork_fork_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(51908);
|
|
679489
|
+
/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(54321);
|
|
679490
|
+
/* harmony import */ var _read_warp_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(59794);
|
|
679491
|
+
/* harmony import */ var _send_transfer_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(67793);
|
|
679492
|
+
/* harmony import */ var _submitters_types_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(17555);
|
|
679493
|
+
/* harmony import */ var _utils_files_js__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(17468);
|
|
679494
|
+
/* harmony import */ var _utils_warp_send_js__WEBPACK_IMPORTED_MODULE_20__ = __nccwpck_require__(96192);
|
|
679495
|
+
/* harmony import */ var _utils_warp_js__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(85361);
|
|
679496
|
+
/* harmony import */ var _verify_warp_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(56661);
|
|
679497
|
+
/* harmony import */ var _options_js__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(89438);
|
|
679498
|
+
/* harmony import */ var _send_js__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(56148);
|
|
679499
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_2__, _check_warp_js__WEBPACK_IMPORTED_MODULE_3__, _config_warp_js__WEBPACK_IMPORTED_MODULE_4__, _deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__, _balances_warp_js__WEBPACK_IMPORTED_MODULE_6__, _fees_warp_js__WEBPACK_IMPORTED_MODULE_7__, _fork_fork_js__WEBPACK_IMPORTED_MODULE_8__, _read_warp_js__WEBPACK_IMPORTED_MODULE_9__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_10__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_11__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_13__, _verify_warp_js__WEBPACK_IMPORTED_MODULE_14__, _options_js__WEBPACK_IMPORTED_MODULE_15__, _send_js__WEBPACK_IMPORTED_MODULE_16__]);
|
|
679500
|
+
([_hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_2__, _check_warp_js__WEBPACK_IMPORTED_MODULE_3__, _config_warp_js__WEBPACK_IMPORTED_MODULE_4__, _deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__, _balances_warp_js__WEBPACK_IMPORTED_MODULE_6__, _fees_warp_js__WEBPACK_IMPORTED_MODULE_7__, _fork_fork_js__WEBPACK_IMPORTED_MODULE_8__, _read_warp_js__WEBPACK_IMPORTED_MODULE_9__, _send_transfer_js__WEBPACK_IMPORTED_MODULE_10__, _submitters_types_js__WEBPACK_IMPORTED_MODULE_11__, _utils_warp_js__WEBPACK_IMPORTED_MODULE_13__, _verify_warp_js__WEBPACK_IMPORTED_MODULE_14__, _options_js__WEBPACK_IMPORTED_MODULE_15__, _send_js__WEBPACK_IMPORTED_MODULE_16__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
679501
|
+
|
|
679500
679502
|
|
|
679501
679503
|
|
|
679502
679504
|
|
|
@@ -679525,6 +679527,7 @@ const warpCommand = {
|
|
|
679525
679527
|
describe: 'Manage Hyperlane warp routes',
|
|
679526
679528
|
builder: (yargs) => yargs
|
|
679527
679529
|
.command(apply)
|
|
679530
|
+
.command(balances)
|
|
679528
679531
|
.command(check)
|
|
679529
679532
|
.command(combine)
|
|
679530
679533
|
.command(deploy)
|
|
@@ -679537,10 +679540,10 @@ const warpCommand = {
|
|
|
679537
679540
|
.command(verify)
|
|
679538
679541
|
.version(false)
|
|
679539
679542
|
.demandCommand(),
|
|
679540
|
-
handler: () => (0,
|
|
679543
|
+
handler: () => (0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .log */ .Rm)('Command required'),
|
|
679541
679544
|
};
|
|
679542
679545
|
const WARP_ROUTE_OPTIONS = {
|
|
679543
|
-
'warp-route-id':
|
|
679546
|
+
'warp-route-id': _options_js__WEBPACK_IMPORTED_MODULE_15__/* .warpRouteIdCommandOption */ .N$,
|
|
679544
679547
|
};
|
|
679545
679548
|
async function getWarpConfigsFromContextOrRegistry({ context, warpRouteId, }) {
|
|
679546
679549
|
if (context.warpCoreConfig && context.warpDeployConfig) {
|
|
@@ -679552,7 +679555,7 @@ async function getWarpConfigsFromContextOrRegistry({ context, warpRouteId, }) {
|
|
|
679552
679555
|
}
|
|
679553
679556
|
// If cache is partial, refresh both configs together to avoid mixing stale+fresh routes.
|
|
679554
679557
|
const requestedWarpRouteId = context.resolvedWarpRouteId ?? warpRouteId;
|
|
679555
|
-
const fetchedConfigs = await (0,
|
|
679558
|
+
const fetchedConfigs = await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_13__/* .getWarpConfigs */ .Yb)({
|
|
679556
679559
|
context,
|
|
679557
679560
|
warpRouteId: requestedWarpRouteId,
|
|
679558
679561
|
});
|
|
@@ -679567,17 +679570,47 @@ async function getWarpConfigsFromContextOrRegistry({ context, warpRouteId, }) {
|
|
|
679567
679570
|
resolvedWarpRouteId,
|
|
679568
679571
|
};
|
|
679569
679572
|
}
|
|
679573
|
+
const balances = {
|
|
679574
|
+
command: 'balances',
|
|
679575
|
+
describe: 'Display token balances for each leg of a warp route',
|
|
679576
|
+
builder: {
|
|
679577
|
+
...WARP_ROUTE_OPTIONS,
|
|
679578
|
+
chains: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .stringArrayOptionConfig */ .om)({
|
|
679579
|
+
description: 'Filter to specific chains',
|
|
679580
|
+
demandOption: false,
|
|
679581
|
+
}),
|
|
679582
|
+
out: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .outputFileCommandOption */ .Ym)(undefined, false, 'Output file path (JSON or YAML)'),
|
|
679583
|
+
address: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .addressCommandOption */ .Fs)("User address to check balances for. When provided, shows the user's token balance on each chain instead of collateral/supply."),
|
|
679584
|
+
raw: {
|
|
679585
|
+
type: 'boolean',
|
|
679586
|
+
description: 'Show balances in base units (without decimal formatting)',
|
|
679587
|
+
default: false,
|
|
679588
|
+
},
|
|
679589
|
+
},
|
|
679590
|
+
handler: async ({ context, warpRouteId, chains, out, address, raw }) => {
|
|
679591
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Balances');
|
|
679592
|
+
await (0,_balances_warp_js__WEBPACK_IMPORTED_MODULE_6__/* .runWarpRouteBalances */ .u)({
|
|
679593
|
+
context,
|
|
679594
|
+
warpRouteId,
|
|
679595
|
+
chains,
|
|
679596
|
+
out,
|
|
679597
|
+
address,
|
|
679598
|
+
raw,
|
|
679599
|
+
});
|
|
679600
|
+
process.exit(0);
|
|
679601
|
+
},
|
|
679602
|
+
};
|
|
679570
679603
|
const apply = {
|
|
679571
679604
|
command: 'apply',
|
|
679572
679605
|
describe: 'Update Warp Route contracts',
|
|
679573
679606
|
builder: {
|
|
679574
679607
|
...WARP_ROUTE_OPTIONS,
|
|
679575
|
-
strategy: { ...
|
|
679608
|
+
strategy: { ..._options_js__WEBPACK_IMPORTED_MODULE_15__/* .strategyCommandOption */ .sB, demandOption: false },
|
|
679576
679609
|
'receipts-dir': {
|
|
679577
679610
|
type: 'string',
|
|
679578
679611
|
description: 'The directory to output transaction receipts.',
|
|
679579
679612
|
default: './generated/transactions',
|
|
679580
|
-
coerce: (dir) => (0,
|
|
679613
|
+
coerce: (dir) => (0,_utils_files_js__WEBPACK_IMPORTED_MODULE_12__/* .removeTrailingSlash */ .UC)(dir),
|
|
679581
679614
|
},
|
|
679582
679615
|
relay: {
|
|
679583
679616
|
type: 'boolean',
|
|
@@ -679586,9 +679619,9 @@ const apply = {
|
|
|
679586
679619
|
},
|
|
679587
679620
|
},
|
|
679588
679621
|
handler: async ({ context, strategy: strategyUrl, receiptsDir, relay, warpRouteId, }) => {
|
|
679589
|
-
(0,
|
|
679622
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Apply');
|
|
679590
679623
|
if (strategyUrl)
|
|
679591
|
-
|
|
679624
|
+
_submitters_types_js__WEBPACK_IMPORTED_MODULE_11__/* .ExtendedChainSubmissionStrategySchema */ .VH.parse((0,_utils_files_js__WEBPACK_IMPORTED_MODULE_12__/* .readYamlOrJson */ .xQ)(strategyUrl));
|
|
679592
679625
|
await (0,_deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__/* .runWarpRouteApply */ .RT)({
|
|
679593
679626
|
context,
|
|
679594
679627
|
warpDeployConfig: context.warpDeployConfig,
|
|
@@ -679606,7 +679639,7 @@ const deploy = {
|
|
|
679606
679639
|
describe: 'Deploy Warp Route contracts',
|
|
679607
679640
|
builder: WARP_ROUTE_OPTIONS,
|
|
679608
679641
|
handler: async ({ context, warpRouteId }) => {
|
|
679609
|
-
(0,
|
|
679642
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)(`Hyperlane Warp Route Deployment`);
|
|
679610
679643
|
await (0,_deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__/* .runWarpRouteDeploy */ .e9)({
|
|
679611
679644
|
context,
|
|
679612
679645
|
warpDeployConfig: context.warpDeployConfig,
|
|
@@ -679631,13 +679664,13 @@ const combine = {
|
|
|
679631
679664
|
},
|
|
679632
679665
|
},
|
|
679633
679666
|
handler: async ({ context, routes, 'output-warp-route-id': outputId }) => {
|
|
679634
|
-
(0,
|
|
679667
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Combine');
|
|
679635
679668
|
const routeIds = routes
|
|
679636
679669
|
.split(',')
|
|
679637
679670
|
.map((r) => r.trim())
|
|
679638
679671
|
.filter((r) => r.length > 0);
|
|
679639
|
-
(0,
|
|
679640
|
-
(0,
|
|
679672
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(routeIds.length >= 2, 'At least 2 route IDs are required to combine');
|
|
679673
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(outputId.trim().length > 0, 'Output warp route ID must be non-empty');
|
|
679641
679674
|
await (0,_deploy_warp_js__WEBPACK_IMPORTED_MODULE_5__/* .runWarpRouteCombine */ .Iw)({
|
|
679642
679675
|
context,
|
|
679643
679676
|
routeIds,
|
|
@@ -679655,10 +679688,10 @@ const init = {
|
|
|
679655
679688
|
describe: 'Create an advanced ISM',
|
|
679656
679689
|
default: false,
|
|
679657
679690
|
},
|
|
679658
|
-
out: (0,
|
|
679691
|
+
out: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .outputFileCommandOption */ .Ym)(),
|
|
679659
679692
|
},
|
|
679660
679693
|
handler: async ({ context, advanced, out }) => {
|
|
679661
|
-
(0,
|
|
679694
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Configure');
|
|
679662
679695
|
await (0,_config_warp_js__WEBPACK_IMPORTED_MODULE_4__/* .createWarpRouteDeployConfig */ .ft)({
|
|
679663
679696
|
context,
|
|
679664
679697
|
outPath: out,
|
|
@@ -679673,28 +679706,28 @@ const read = {
|
|
|
679673
679706
|
builder: {
|
|
679674
679707
|
...WARP_ROUTE_OPTIONS,
|
|
679675
679708
|
chain: {
|
|
679676
|
-
...
|
|
679709
|
+
..._options_js__WEBPACK_IMPORTED_MODULE_15__/* .chainCommandOption */ .mF,
|
|
679677
679710
|
demandOption: false,
|
|
679678
679711
|
},
|
|
679679
|
-
address: (0,
|
|
679680
|
-
out: (0,
|
|
679712
|
+
address: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .addressCommandOption */ .Fs)('Address of the router contract to read.', false),
|
|
679713
|
+
out: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .outputFileCommandOption */ .Ym)(),
|
|
679681
679714
|
},
|
|
679682
679715
|
handler: async ({ context, chain, address, warpRouteId, out }) => {
|
|
679683
|
-
(0,
|
|
679684
|
-
const config = await (0,
|
|
679716
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Reader');
|
|
679717
|
+
const config = await (0,_read_warp_js__WEBPACK_IMPORTED_MODULE_9__/* .runWarpRouteRead */ .bb)({
|
|
679685
679718
|
context,
|
|
679686
679719
|
chain,
|
|
679687
679720
|
address,
|
|
679688
679721
|
warpRouteId,
|
|
679689
679722
|
});
|
|
679690
679723
|
if (out) {
|
|
679691
|
-
(0,
|
|
679692
|
-
(0,
|
|
679724
|
+
(0,_utils_files_js__WEBPACK_IMPORTED_MODULE_12__/* .writeYamlOrJson */ .o9)(out, config, 'yaml');
|
|
679725
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logGreen */ .In)(`✅ Warp route config written successfully to ${out}:\n`);
|
|
679693
679726
|
}
|
|
679694
679727
|
else {
|
|
679695
|
-
(0,
|
|
679728
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logGreen */ .In)(`✅ Warp route config read successfully:\n`);
|
|
679696
679729
|
}
|
|
679697
|
-
(0,
|
|
679730
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .log */ .Rm)((0,_utils_files_js__WEBPACK_IMPORTED_MODULE_12__/* .indentYamlOrJson */ .R7)((0,yaml__WEBPACK_IMPORTED_MODULE_1__/* .stringify */ .As)(config, null, 2), 4));
|
|
679698
679731
|
process.exit(0);
|
|
679699
679732
|
},
|
|
679700
679733
|
};
|
|
@@ -679710,8 +679743,8 @@ const getFees = {
|
|
|
679710
679743
|
},
|
|
679711
679744
|
},
|
|
679712
679745
|
handler: async ({ context, warpRouteId, amount }) => {
|
|
679713
|
-
(0,
|
|
679714
|
-
await (0,
|
|
679746
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Route Fees');
|
|
679747
|
+
await (0,_fees_warp_js__WEBPACK_IMPORTED_MODULE_7__/* .runWarpRouteFees */ .A)({
|
|
679715
679748
|
context,
|
|
679716
679749
|
warpRouteId,
|
|
679717
679750
|
amount: amount,
|
|
@@ -679723,7 +679756,7 @@ const send = {
|
|
|
679723
679756
|
command: 'send',
|
|
679724
679757
|
describe: 'Send a test token transfer on a warp route',
|
|
679725
679758
|
builder: {
|
|
679726
|
-
...
|
|
679759
|
+
..._send_js__WEBPACK_IMPORTED_MODULE_16__/* .messageSendOptions */ .eC,
|
|
679727
679760
|
...WARP_ROUTE_OPTIONS,
|
|
679728
679761
|
amount: {
|
|
679729
679762
|
type: 'string',
|
|
@@ -679734,7 +679767,7 @@ const send = {
|
|
|
679734
679767
|
type: 'string',
|
|
679735
679768
|
description: 'Token recipient address. Required for non-EVM destinations. Defaults to destination signer for EVM destinations.',
|
|
679736
679769
|
},
|
|
679737
|
-
chains: (0,
|
|
679770
|
+
chains: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .stringArrayOptionConfig */ .om)({
|
|
679738
679771
|
description: 'List of chains to send messages to',
|
|
679739
679772
|
demandOption: false,
|
|
679740
679773
|
conflicts: ['origin', 'destination'],
|
|
@@ -679784,7 +679817,7 @@ const send = {
|
|
|
679784
679817
|
.filter((v) => Boolean(v))
|
|
679785
679818
|
.filter((v, i, a) => a.indexOf(v) === i);
|
|
679786
679819
|
const warpCoreConfig = context.warpCoreConfig ??
|
|
679787
|
-
(await (0,
|
|
679820
|
+
(await (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_13__/* .getWarpCoreConfigOrExit */ .ff)({
|
|
679788
679821
|
warpRouteId,
|
|
679789
679822
|
context,
|
|
679790
679823
|
chains: filterChains.length > 0 ? filterChains : undefined,
|
|
@@ -679796,8 +679829,8 @@ const send = {
|
|
|
679796
679829
|
}
|
|
679797
679830
|
const supportedChains = new Set(warpCoreConfig.tokens.map((t) => t.chainName));
|
|
679798
679831
|
// Check if any of the chain selection through --chains or --origin & --destination are not in the warp core
|
|
679799
|
-
const unsupportedChains = (0,
|
|
679800
|
-
(0,
|
|
679832
|
+
const unsupportedChains = (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_19__/* .difference */ .iv)(new Set([...(chainsArg || []), origin, destination].filter(Boolean)), supportedChains);
|
|
679833
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(unsupportedChains.size === 0, `Chain(s) ${[...unsupportedChains].join(', ')} are not part of the warp route.`);
|
|
679801
679834
|
// When origin & destination are explicitly provided, preserve duplicates
|
|
679802
679835
|
// for same-chain transfers (e.g., origin=anvil2, destination=anvil2).
|
|
679803
679836
|
// Only deduplicate when using --chains or auto-selecting from config.
|
|
@@ -679805,24 +679838,24 @@ const send = {
|
|
|
679805
679838
|
chains = [origin, destination];
|
|
679806
679839
|
}
|
|
679807
679840
|
else {
|
|
679808
|
-
const orderedDefaultChains = (0,
|
|
679841
|
+
const orderedDefaultChains = (0,_utils_warp_send_js__WEBPACK_IMPORTED_MODULE_20__/* .getOrderedWarpSendChains */ .M)(supportedChains, context.multiProvider);
|
|
679809
679842
|
chains =
|
|
679810
679843
|
chains.length === 0
|
|
679811
679844
|
? orderedDefaultChains
|
|
679812
|
-
: [...(0,
|
|
679845
|
+
: [...(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_19__/* .intersection */ .E$)(new Set(chains), supportedChains)];
|
|
679813
679846
|
}
|
|
679814
679847
|
if (roundTrip) {
|
|
679815
679848
|
// Round-trip requires all chains to be EVM-like since non-EVM chains
|
|
679816
679849
|
// become intermediate origins in the reversed path.
|
|
679817
|
-
const nonEvmChains = chains.filter((chain) => !(0,
|
|
679818
|
-
(0,
|
|
679850
|
+
const nonEvmChains = chains.filter((chain) => !(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_21__/* .isEVMLike */ .Us)(context.multiProvider.getProtocol(chain)));
|
|
679851
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(nonEvmChains.length === 0, `--round-trip is not supported with non-EVM chains (${nonEvmChains.join(', ')}). ` +
|
|
679819
679852
|
`Non-EVM chains cannot be intermediate hop origins.`);
|
|
679820
679853
|
// Appends the reverse of the array, excluding the 1st (e.g. [1,2,3] becomes [1,2,3,2,1])
|
|
679821
679854
|
const reversed = [...chains].reverse().slice(1, chains.length + 1);
|
|
679822
679855
|
chains = [...chains, ...reversed];
|
|
679823
679856
|
}
|
|
679824
|
-
(0,
|
|
679825
|
-
await (0,
|
|
679857
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logBlue */ .RK)(`🚀 Sending a message for chains: ${chains.join(' ➡️ ')}`);
|
|
679858
|
+
await (0,_send_transfer_js__WEBPACK_IMPORTED_MODULE_10__/* .sendTestTransfer */ .P)({
|
|
679826
679859
|
context,
|
|
679827
679860
|
warpCoreConfig,
|
|
679828
679861
|
chains,
|
|
@@ -679840,7 +679873,7 @@ const send = {
|
|
|
679840
679873
|
feeQuotingUrl,
|
|
679841
679874
|
feeQuotingApiKey,
|
|
679842
679875
|
});
|
|
679843
|
-
(0,
|
|
679876
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logGreen */ .In)(`✅ Successfully sent messages for chains: ${chains.join(' ➡️ ')}`);
|
|
679844
679877
|
process.exit(0);
|
|
679845
679878
|
},
|
|
679846
679879
|
};
|
|
@@ -679864,18 +679897,18 @@ const check = {
|
|
|
679864
679897
|
description: 'Override the origin owner address instead of reading from warp deploy config.',
|
|
679865
679898
|
implies: 'origin',
|
|
679866
679899
|
},
|
|
679867
|
-
chains: (0,
|
|
679900
|
+
chains: (0,_options_js__WEBPACK_IMPORTED_MODULE_15__/* .stringArrayOptionConfig */ .om)({
|
|
679868
679901
|
description: 'List of chains to check. Defaults to all chains except origin when using --ica.',
|
|
679869
679902
|
implies: 'ica',
|
|
679870
679903
|
}),
|
|
679871
679904
|
},
|
|
679872
679905
|
handler: async ({ context, warpRouteId, ica, origin, originOwner, chains, }) => {
|
|
679873
|
-
(0,
|
|
679906
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Check');
|
|
679874
679907
|
// CROSS route case: resolver set warpCoreConfig but not warpDeployConfig
|
|
679875
679908
|
// (combined CROSS routes have no deploy config of their own)
|
|
679876
679909
|
if (context.warpCoreConfig && !context.warpDeployConfig) {
|
|
679877
|
-
(0,
|
|
679878
|
-
(0,
|
|
679910
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(!ica, 'Cannot perform ICA owner check for combined CROSS routes (no deploy config)');
|
|
679911
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(context.resolvedWarpRouteId, 'resolvedWarpRouteId must be set for CROSS routes');
|
|
679879
679912
|
const result = await (0,_check_warp_js__WEBPACK_IMPORTED_MODULE_3__/* .checkCrossCollateralWarpRoute */ .l$)({
|
|
679880
679913
|
context,
|
|
679881
679914
|
warpCoreConfig: context.warpCoreConfig,
|
|
@@ -679891,7 +679924,7 @@ const check = {
|
|
|
679891
679924
|
// If --ica flag is set, run ICA owner check instead of the regular config check
|
|
679892
679925
|
// Note: ICA check uses full warpDeployConfig (not filtered) to support pre-deployed chains
|
|
679893
679926
|
if (ica) {
|
|
679894
|
-
(0,
|
|
679927
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__/* .assert */ .v)(origin, '--origin is required when using --ica');
|
|
679895
679928
|
await (0,_check_warp_js__WEBPACK_IMPORTED_MODULE_3__/* .runWarpIcaOwnerCheck */ .WN)({
|
|
679896
679929
|
context,
|
|
679897
679930
|
warpDeployConfig,
|
|
@@ -679901,8 +679934,8 @@ const check = {
|
|
|
679901
679934
|
});
|
|
679902
679935
|
process.exit(0);
|
|
679903
679936
|
}
|
|
679904
|
-
({ warpCoreConfig, warpDeployConfig } = (0,
|
|
679905
|
-
const result = await (0,
|
|
679937
|
+
({ warpCoreConfig, warpDeployConfig } = (0,_utils_warp_js__WEBPACK_IMPORTED_MODULE_13__/* .filterWarpConfigsToMatchingChains */ .mg)(warpDeployConfig, warpCoreConfig));
|
|
679938
|
+
const result = await (0,_hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_22__/* .checkWarpRouteDeployConfig */ .TU)({
|
|
679906
679939
|
multiProvider: context.multiProvider,
|
|
679907
679940
|
warpCoreConfig,
|
|
679908
679941
|
warpDeployConfig,
|
|
@@ -679968,7 +680001,7 @@ const rebalancer = {
|
|
|
679968
680001
|
},
|
|
679969
680002
|
handler: async (args) => {
|
|
679970
680003
|
const { context, config: configPath, checkFrequency, withMetrics, monitorOnly, manual, origin, destination, amount, } = args;
|
|
679971
|
-
(0,
|
|
680004
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Route Rebalancer');
|
|
679972
680005
|
try {
|
|
679973
680006
|
// Load rebalancer configuration
|
|
679974
680007
|
const rebalancerConfig = _hyperlane_xyz_rebalancer__WEBPACK_IMPORTED_MODULE_2__/* .RebalancerConfig */ .Wo.load(configPath);
|
|
@@ -679981,12 +680014,12 @@ const rebalancer = {
|
|
|
679981
680014
|
withMetrics,
|
|
679982
680015
|
monitorOnly,
|
|
679983
680016
|
coingeckoApiKey: process.env.COINGECKO_API_KEY,
|
|
679984
|
-
logger:
|
|
680017
|
+
logger: _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_23__/* .rootLogger */ .Jk.child({ module: 'rebalancer' }),
|
|
679985
680018
|
});
|
|
679986
680019
|
// Execute based on mode
|
|
679987
680020
|
if (manual) {
|
|
679988
680021
|
if (!origin || !destination || !amount) {
|
|
679989
|
-
(0,
|
|
680022
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .errorRed */ .aq)('Origin, destination, and amount are required for manual rebalance');
|
|
679990
680023
|
process.exit(1);
|
|
679991
680024
|
}
|
|
679992
680025
|
await service.executeManual({
|
|
@@ -679994,7 +680027,7 @@ const rebalancer = {
|
|
|
679994
680027
|
destination,
|
|
679995
680028
|
amount,
|
|
679996
680029
|
});
|
|
679997
|
-
(0,
|
|
680030
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logGreen */ .In)('✅ Manual rebalance completed successfully');
|
|
679998
680031
|
}
|
|
679999
680032
|
else {
|
|
680000
680033
|
// Start daemon mode
|
|
@@ -680002,7 +680035,7 @@ const rebalancer = {
|
|
|
680002
680035
|
}
|
|
680003
680036
|
}
|
|
680004
680037
|
catch (e) {
|
|
680005
|
-
(0,
|
|
680038
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .errorRed */ .aq)(`Rebalancer error: ${util__WEBPACK_IMPORTED_MODULE_0__.format(e)}`);
|
|
680006
680039
|
process.exit(1);
|
|
680007
680040
|
}
|
|
680008
680041
|
},
|
|
@@ -680012,25 +680045,25 @@ const verify = {
|
|
|
680012
680045
|
describe: 'Verify deployed contracts on explorers',
|
|
680013
680046
|
builder: WARP_ROUTE_OPTIONS,
|
|
680014
680047
|
handler: async ({ context, warpRouteId }) => {
|
|
680015
|
-
(0,
|
|
680048
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logCommandHeader */ .dp)('Hyperlane Warp Verify');
|
|
680016
680049
|
const { warpCoreConfig } = await getWarpConfigsFromContextOrRegistry({
|
|
680017
680050
|
context,
|
|
680018
680051
|
warpRouteId,
|
|
680019
680052
|
});
|
|
680020
|
-
return (0,
|
|
680053
|
+
return (0,_verify_warp_js__WEBPACK_IMPORTED_MODULE_14__/* .runVerifyWarpRoute */ .c)({ context, warpCoreConfig });
|
|
680021
680054
|
},
|
|
680022
680055
|
};
|
|
680023
680056
|
const fork = {
|
|
680024
680057
|
command: 'fork',
|
|
680025
680058
|
describe: 'Fork a Hyperlane chain on a compatible Anvil/Hardhat node',
|
|
680026
680059
|
builder: {
|
|
680027
|
-
...
|
|
680060
|
+
..._options_js__WEBPACK_IMPORTED_MODULE_15__/* .forkCommandOptions */ .im,
|
|
680028
680061
|
...WARP_ROUTE_OPTIONS,
|
|
680029
680062
|
},
|
|
680030
680063
|
handler: async ({ context, warpRouteId, port, kill, forkConfig: forkConfigPath, }) => {
|
|
680031
680064
|
let forkConfig;
|
|
680032
680065
|
if (forkConfigPath) {
|
|
680033
|
-
forkConfig =
|
|
680066
|
+
forkConfig = _hyperlane_xyz_sdk__WEBPACK_IMPORTED_MODULE_24__/* .RawForkedChainConfigByChainSchema */ .uE.parse((0,_utils_files_js__WEBPACK_IMPORTED_MODULE_12__/* .readYamlOrJson */ .xQ)(forkConfigPath));
|
|
680034
680067
|
}
|
|
680035
680068
|
else {
|
|
680036
680069
|
forkConfig = {};
|
|
@@ -680040,8 +680073,8 @@ const fork = {
|
|
|
680040
680073
|
warpRouteId,
|
|
680041
680074
|
});
|
|
680042
680075
|
const chainsToFork = new Set(Object.keys(warpDeployConfig));
|
|
680043
|
-
(0,
|
|
680044
|
-
await (0,
|
|
680076
|
+
(0,_logger_js__WEBPACK_IMPORTED_MODULE_17__/* .logBlue */ .RK)(`Forking chains from warp deploy config: ${Array.from(chainsToFork).join(', ')}`);
|
|
680077
|
+
await (0,_fork_fork_js__WEBPACK_IMPORTED_MODULE_8__/* .runForkCommand */ .x)({
|
|
680045
680078
|
context,
|
|
680046
680079
|
chainsToFork,
|
|
680047
680080
|
forkConfig,
|
|
@@ -685581,6 +685614,7 @@ const SUPPORTED_PROTOCOLS = new Set([
|
|
|
685581
685614
|
_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.CosmosNative,
|
|
685582
685615
|
_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Starknet,
|
|
685583
685616
|
_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Radix,
|
|
685617
|
+
_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .ProtocolType */ .Hb.Aleo,
|
|
685584
685618
|
]);
|
|
685585
685619
|
const EXPLORER_GRAPHQL_URL = process.env.HYPERLANE_EXPLORER_GRAPHQL_URL ??
|
|
685586
685620
|
process.env.EXPLORER_GRAPHQL_URL ??
|
|
@@ -685973,7 +686007,7 @@ async function executeDelivery({ context, origin, destination, warpCoreConfig, a
|
|
|
685973
686007
|
if (!transferReceipt) {
|
|
685974
686008
|
throw new Error('No transfer transaction receipt found');
|
|
685975
686009
|
}
|
|
685976
|
-
const extracted = core.extractMessageIds(origin, transferReceipt);
|
|
686010
|
+
const extracted = await core.extractMessageIds(origin, transferReceipt);
|
|
685977
686011
|
const messageId = extracted[0]?.messageId;
|
|
685978
686012
|
if (!messageId) {
|
|
685979
686013
|
// Same-chain transfers don't dispatch an interchain message.
|
|
@@ -694193,7 +694227,7 @@ __webpack_async_result__();
|
|
|
694193
694227
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
694194
694228
|
/* harmony export */ x: () => (/* binding */ VERSION)
|
|
694195
694229
|
/* harmony export */ });
|
|
694196
|
-
const VERSION = '
|
|
694230
|
+
const VERSION = '35.0.0';
|
|
694197
694231
|
//# sourceMappingURL=version.js.map
|
|
694198
694232
|
|
|
694199
694233
|
/***/ }),
|
|
@@ -745467,6 +745501,10 @@ const DEFAULT_BLOCKPI_VALIDATOR = {
|
|
|
745467
745501
|
address: '0x6d113ae51bfea7b63a8828f97e9dce393b25c189',
|
|
745468
745502
|
alias: 'BlockPI',
|
|
745469
745503
|
};
|
|
745504
|
+
const DEFAULT_POPS_VALIDATOR = {
|
|
745505
|
+
address: '0xa6c998f0db2b56d7a63faf30a9b677c8b9b6faab',
|
|
745506
|
+
alias: 'P-OPS Team',
|
|
745507
|
+
};
|
|
745470
745508
|
// TODO: consider migrating these to the registry too
|
|
745471
745509
|
const defaultMultisigConfigs = {
|
|
745472
745510
|
abstract: {
|
|
@@ -745850,21 +745888,14 @@ const defaultMultisigConfigs = {
|
|
|
745850
745888
|
],
|
|
745851
745889
|
},
|
|
745852
745890
|
celestia: {
|
|
745853
|
-
threshold:
|
|
745891
|
+
threshold: 3,
|
|
745854
745892
|
validators: [
|
|
745855
745893
|
{
|
|
745856
745894
|
address: '0x6dbc192c06907784fb0af0c0c2d8809ea50ba675',
|
|
745857
745895
|
alias: AW_VALIDATOR_ALIAS,
|
|
745858
745896
|
},
|
|
745859
745897
|
DEFAULT_ZKV_VALIDATOR,
|
|
745860
|
-
|
|
745861
|
-
address: '0x885a8c1ef7f7eea8955c8f116fc1fbe1113c4a78',
|
|
745862
|
-
alias: 'P2P.ORG',
|
|
745863
|
-
},
|
|
745864
|
-
{
|
|
745865
|
-
address: '0xa6c998f0db2b56d7a63faf30a9b677c8b9b6faab',
|
|
745866
|
-
alias: 'P-OPS Team',
|
|
745867
|
-
},
|
|
745898
|
+
DEFAULT_POPS_VALIDATOR,
|
|
745868
745899
|
{
|
|
745869
745900
|
address: '0x21e93a81920b73c0e98aed8e6b058dae409e4909',
|
|
745870
745901
|
alias: 'Binary Builders',
|
|
@@ -746046,12 +746077,25 @@ const defaultMultisigConfigs = {
|
|
|
746046
746077
|
],
|
|
746047
746078
|
},
|
|
746048
746079
|
eden: {
|
|
746049
|
-
threshold:
|
|
746080
|
+
threshold: 3,
|
|
746050
746081
|
validators: [
|
|
746051
746082
|
{
|
|
746052
746083
|
address: '0x1c61e6379443e2842d3e9db28e962b6c717fdab1',
|
|
746053
746084
|
alias: AW_VALIDATOR_ALIAS,
|
|
746054
746085
|
},
|
|
746086
|
+
DEFAULT_POPS_VALIDATOR,
|
|
746087
|
+
{
|
|
746088
|
+
address: '0xE95a08Ef009be3Fbc7FDfa4739AB2428910C285f',
|
|
746089
|
+
alias: 'Substance Labs',
|
|
746090
|
+
},
|
|
746091
|
+
{
|
|
746092
|
+
address: '0x359042Ade900d465e96C9c7A9BF975b061c1e8f7',
|
|
746093
|
+
alias: 'Cosmostation',
|
|
746094
|
+
},
|
|
746095
|
+
{
|
|
746096
|
+
address: '0xa3f19CDFa6B684b44da3cF1e2D19d5Cb916cA0EF',
|
|
746097
|
+
alias: 'Qubelabs',
|
|
746098
|
+
},
|
|
746055
746099
|
],
|
|
746056
746100
|
},
|
|
746057
746101
|
electroneum: {
|
|
@@ -746582,7 +746626,7 @@ const defaultMultisigConfigs = {
|
|
|
746582
746626
|
],
|
|
746583
746627
|
},
|
|
746584
746628
|
mantapacific: {
|
|
746585
|
-
threshold:
|
|
746629
|
+
threshold: 3,
|
|
746586
746630
|
validators: [
|
|
746587
746631
|
{
|
|
746588
746632
|
address: '0x8e668c97ad76d0e28375275c41ece4972ab8a5bc',
|
|
@@ -746592,7 +746636,6 @@ const defaultMultisigConfigs = {
|
|
|
746592
746636
|
address: '0x521a3e6bf8d24809fde1c1fd3494a859a16f132c',
|
|
746593
746637
|
alias: 'Cosmostation',
|
|
746594
746638
|
},
|
|
746595
|
-
{ address: '0x14025fe092f5f8a401dd9819704d9072196d2125', alias: 'P2P' },
|
|
746596
746639
|
{
|
|
746597
746640
|
address: '0x25b9a0961c51e74fd83295293bc029131bf1e05a',
|
|
746598
746641
|
alias: 'Neutron',
|
|
@@ -746851,8 +746894,17 @@ const defaultMultisigConfigs = {
|
|
|
746851
746894
|
DEFAULT_MITOSIS_VALIDATOR,
|
|
746852
746895
|
],
|
|
746853
746896
|
},
|
|
746897
|
+
nesa: {
|
|
746898
|
+
threshold: 1,
|
|
746899
|
+
validators: [
|
|
746900
|
+
{
|
|
746901
|
+
address: '0x990f548e766b830f69642d36cdd47fb20a2aa405',
|
|
746902
|
+
alias: AW_VALIDATOR_ALIAS,
|
|
746903
|
+
},
|
|
746904
|
+
],
|
|
746905
|
+
},
|
|
746854
746906
|
neutron: {
|
|
746855
|
-
threshold:
|
|
746907
|
+
threshold: 3,
|
|
746856
746908
|
validators: [
|
|
746857
746909
|
{
|
|
746858
746910
|
address: '0xa9b8c1f4998f781f958c63cfcd1708d02f004ff0',
|
|
@@ -746862,7 +746914,6 @@ const defaultMultisigConfigs = {
|
|
|
746862
746914
|
address: '0xb65438a014fb05fbadcfe35bc6e25d372b6ba460',
|
|
746863
746915
|
alias: 'Cosmostation',
|
|
746864
746916
|
},
|
|
746865
|
-
{ address: '0x42fa752defe92459370a052b6387a87f7de9b80c', alias: 'P2P' },
|
|
746866
746917
|
{
|
|
746867
746918
|
address: '0xc79503a3e3011535a9c60f6d21f76f59823a38bd',
|
|
746868
746919
|
alias: 'Neutron',
|
|
@@ -747826,7 +747877,7 @@ const SEALEVEL_PRIORITY_FEES = {
|
|
|
747826
747877
|
/* harmony export */ g: () => (/* binding */ multiProtocolTestChainMetadata),
|
|
747827
747878
|
/* harmony export */ hR: () => (/* binding */ testChainMetadata)
|
|
747828
747879
|
/* harmony export */ });
|
|
747829
|
-
/* unused harmony exports TestChainName, test1, test2, test3, test4, testXERC20, testVSXERC20, testXERC20Lockbox, testScale1, testScale2, testCollateralFiat, testCosmosChain, testSealevelChain, testStarknetChain, KNOWN_ETHEREUM_TIMELOCK_CONTRACT, ethereumTestChain, multiProtocolTestChains */
|
|
747880
|
+
/* unused harmony exports TestChainName, test1, test2, test3, test4, testXERC20, testVSXERC20, testXERC20Lockbox, testOwnerCollateral, testRebaseCollateral, testScale1, testScale2, testCollateralFiat, testCosmosChain, testSealevelChain, testStarknetChain, KNOWN_ETHEREUM_TIMELOCK_CONTRACT, ethereumTestChain, multiProtocolTestChains */
|
|
747830
747881
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(16639);
|
|
747831
747882
|
/* harmony import */ var _metadata_chainMetadataTypes_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(1430);
|
|
747832
747883
|
|
|
@@ -747915,6 +747966,20 @@ const testXERC20Lockbox = {
|
|
|
747915
747966
|
displayName: 'Test XERC20Lockbox',
|
|
747916
747967
|
name: 'testxerc20lockbox',
|
|
747917
747968
|
};
|
|
747969
|
+
const testOwnerCollateral = {
|
|
747970
|
+
...test1,
|
|
747971
|
+
chainId: 9913380,
|
|
747972
|
+
domainId: 9913380,
|
|
747973
|
+
displayName: 'Test OwnerCollateral',
|
|
747974
|
+
name: 'testownercollateral',
|
|
747975
|
+
};
|
|
747976
|
+
const testRebaseCollateral = {
|
|
747977
|
+
...test1,
|
|
747978
|
+
chainId: 9913381,
|
|
747979
|
+
domainId: 9913381,
|
|
747980
|
+
displayName: 'Test RebaseCollateral',
|
|
747981
|
+
name: 'testrebasecollateral',
|
|
747982
|
+
};
|
|
747918
747983
|
const testScale1 = {
|
|
747919
747984
|
...test1,
|
|
747920
747985
|
chainId: 9913377,
|
|
@@ -748049,6 +748114,8 @@ const multiProtocolTestChainMetadata = {
|
|
|
748049
748114
|
testscale1: testScale1,
|
|
748050
748115
|
testscale2: testScale2,
|
|
748051
748116
|
testcollateralfiat: testCollateralFiat,
|
|
748117
|
+
testownercollateral: testOwnerCollateral,
|
|
748118
|
+
testrebasecollateral: testRebaseCollateral,
|
|
748052
748119
|
};
|
|
748053
748120
|
const multiProtocolTestChains = Object.keys(multiProtocolTestChainMetadata);
|
|
748054
748121
|
//# sourceMappingURL=testChains.js.map
|
|
@@ -749937,10 +750004,10 @@ var logging = __nccwpck_require__(94523);
|
|
|
749937
750004
|
var types = __nccwpck_require__(16639);
|
|
749938
750005
|
// EXTERNAL MODULE: ../sdk/dist/app/MultiProtocolApp.js
|
|
749939
750006
|
var MultiProtocolApp = __nccwpck_require__(48381);
|
|
749940
|
-
// EXTERNAL MODULE: ../utils/dist/validation.js
|
|
749941
|
-
var validation = __nccwpck_require__(21387);
|
|
749942
750007
|
// EXTERNAL MODULE: ../utils/dist/async.js
|
|
749943
750008
|
var dist_async = __nccwpck_require__(14918);
|
|
750009
|
+
// EXTERNAL MODULE: ../utils/dist/validation.js
|
|
750010
|
+
var validation = __nccwpck_require__(21387);
|
|
749944
750011
|
// EXTERNAL MODULE: ../sdk/dist/providers/ProviderType.js
|
|
749945
750012
|
var ProviderType = __nccwpck_require__(25047);
|
|
749946
750013
|
;// CONCATENATED MODULE: ../sdk/dist/core/adapters/AleoCoreAdapter.js
|
|
@@ -749957,9 +750024,41 @@ class AleoCoreAdapter extends MultiProtocolApp/* BaseAleoAdapter */.Ki {
|
|
|
749957
750024
|
this.multiProvider = multiProvider;
|
|
749958
750025
|
this.addresses = addresses;
|
|
749959
750026
|
}
|
|
749960
|
-
extractMessageIds(sourceTx) {
|
|
749961
|
-
|
|
749962
|
-
|
|
750027
|
+
async extractMessageIds(sourceTx) {
|
|
750028
|
+
if (sourceTx.type !== ProviderType/* ProviderType */.c.Aleo) {
|
|
750029
|
+
return [];
|
|
750030
|
+
}
|
|
750031
|
+
if (!this.addresses.mailbox) {
|
|
750032
|
+
this.logger.debug('No Aleo mailbox address configured; skipping message ID extraction');
|
|
750033
|
+
return [];
|
|
750034
|
+
}
|
|
750035
|
+
if (sourceTx.receipt.type !== 'execute') {
|
|
750036
|
+
this.logger.warn(`Aleo dispatch transaction was rejected (type=${sourceTx.receipt.type}); no message dispatched`);
|
|
750037
|
+
return [];
|
|
750038
|
+
}
|
|
750039
|
+
const provider = this.multiProvider.getAleoProvider(this.chainName);
|
|
750040
|
+
const txId = sourceTx.receipt.transactionHash;
|
|
750041
|
+
// Use dispatch_event_index[block_height] to find the exact nonce for this
|
|
750042
|
+
// transaction's block — same approach as the Rust relayer's block-level anchor.
|
|
750043
|
+
const dispatchNonce = await provider.getDispatchNonceForTx(this.addresses.mailbox, txId);
|
|
750044
|
+
if (dispatchNonce == null) {
|
|
750045
|
+
this.logger.warn(`No dispatch_event_index entry for tx ${txId}; no message dispatched`);
|
|
750046
|
+
return [];
|
|
750047
|
+
}
|
|
750048
|
+
const [messageId, destinationDomain] = await Promise.all([
|
|
750049
|
+
provider.getDispatchedMessageId(this.addresses.mailbox, dispatchNonce),
|
|
750050
|
+
provider.getDispatchedDestinationDomain(this.addresses.mailbox, dispatchNonce),
|
|
750051
|
+
]);
|
|
750052
|
+
if (!messageId || destinationDomain == null) {
|
|
750053
|
+
this.logger.warn(`Could not fetch message ID or destination for nonce ${dispatchNonce}`);
|
|
750054
|
+
return [];
|
|
750055
|
+
}
|
|
750056
|
+
const destination = this.multiProvider.tryGetChainName(destinationDomain);
|
|
750057
|
+
if (!destination) {
|
|
750058
|
+
this.logger.warn(`Unknown destination domain ${destinationDomain}`);
|
|
750059
|
+
return [];
|
|
750060
|
+
}
|
|
750061
|
+
return [{ messageId, destination }];
|
|
749963
750062
|
}
|
|
749964
750063
|
async waitForMessageProcessed(messageId, destination, delayMs, maxAttempts) {
|
|
749965
750064
|
const provider = this.multiProvider.getAleoProvider(destination);
|
|
@@ -750014,7 +750113,7 @@ class CosmNativeCoreAdapter extends MultiProtocolApp/* BaseCosmosAdapter */.L_ {
|
|
|
750014
750113
|
this.multiProvider = multiProvider;
|
|
750015
750114
|
this.addresses = addresses;
|
|
750016
750115
|
}
|
|
750017
|
-
extractMessageIds(sourceTx) {
|
|
750116
|
+
async extractMessageIds(sourceTx) {
|
|
750018
750117
|
(0,validation/* assert */.v)(sourceTx.type === ProviderType/* ProviderType */.c.CosmJsNative, `Unsupported provider type for CosmNativeCoreAdapter ${sourceTx.type}`);
|
|
750019
750118
|
const dispatchEvents = sourceTx.receipt.events.filter((e) => MESSAGE_DISPATCH_EVENT_TYPES.includes(e.type));
|
|
750020
750119
|
return dispatchEvents.map((event) => {
|
|
@@ -750172,7 +750271,7 @@ class CosmWasmCoreAdapter extends MultiProtocolApp/* BaseCosmWasmAdapter */.J {
|
|
|
750172
750271
|
});
|
|
750173
750272
|
return response.delivered;
|
|
750174
750273
|
}
|
|
750175
|
-
extractMessageIds(sourceTx) {
|
|
750274
|
+
async extractMessageIds(sourceTx) {
|
|
750176
750275
|
if (sourceTx.type !== ProviderType/* ProviderType */.c.CosmJsWasm) {
|
|
750177
750276
|
throw new Error(`Unsupported provider type for CosmosCoreAdapter ${sourceTx.type}`);
|
|
750178
750277
|
}
|
|
@@ -750229,7 +750328,7 @@ class EvmCoreAdapter extends MultiProtocolApp/* BaseEvmAdapter */.zl {
|
|
|
750229
750328
|
}; // Core only uses mailbox so cast to keep adapter interface simple
|
|
750230
750329
|
this.core = new HyperlaneCore/* HyperlaneCore */.K(contractsMap, multiProvider.toMultiProvider());
|
|
750231
750330
|
}
|
|
750232
|
-
extractMessageIds(sourceTx) {
|
|
750331
|
+
async extractMessageIds(sourceTx) {
|
|
750233
750332
|
if (sourceTx.type !== ProviderType/* ProviderType */.c.EthersV5 &&
|
|
750234
750333
|
sourceTx.type !== ProviderType/* ProviderType */.c.Tron) {
|
|
750235
750334
|
throw new Error(`Unsupported provider type for EvmCoreAdapter ${sourceTx.type}`);
|
|
@@ -750266,7 +750365,7 @@ class RadixCoreAdapter extends MultiProtocolApp/* BaseRadixAdapter */.v5 {
|
|
|
750266
750365
|
this.multiProvider = multiProvider;
|
|
750267
750366
|
this.addresses = addresses;
|
|
750268
750367
|
}
|
|
750269
|
-
extractMessageIds(sourceTx) {
|
|
750368
|
+
async extractMessageIds(sourceTx) {
|
|
750270
750369
|
(0,validation/* assert */.v)(sourceTx.type === ProviderType/* ProviderType */.c.Radix, `Unsupported provider type for RadixCoreAdapter ${sourceTx.type}`);
|
|
750271
750370
|
const events = sourceTx.receipt.transaction.receipt?.events ?? [];
|
|
750272
750371
|
if (events.length === 0) {
|
|
@@ -750333,7 +750432,7 @@ class StarknetCoreAdapter extends MultiProtocolApp/* BaseStarknetAdapter */.Rn {
|
|
|
750333
750432
|
this.multiProvider = multiProvider;
|
|
750334
750433
|
this.addresses = addresses;
|
|
750335
750434
|
}
|
|
750336
|
-
extractMessageIds(sourceTx) {
|
|
750435
|
+
async extractMessageIds(sourceTx) {
|
|
750337
750436
|
if (sourceTx.type !== ProviderType/* ProviderType */.c.Starknet) {
|
|
750338
750437
|
throw new Error(`Unsupported provider type for StarknetCoreAdapter ${sourceTx.type}`);
|
|
750339
750438
|
}
|
|
@@ -750427,11 +750526,11 @@ class MultiProtocolCore extends MultiProtocolApp/* MultiProtocolApp */.ff {
|
|
|
750427
750526
|
return AleoCoreAdapter;
|
|
750428
750527
|
throw new Error(`No adapter for protocol ${protocol}`);
|
|
750429
750528
|
}
|
|
750430
|
-
extractMessageIds(origin, sourceTx) {
|
|
750529
|
+
async extractMessageIds(origin, sourceTx) {
|
|
750431
750530
|
return this.adapter(origin).extractMessageIds(sourceTx);
|
|
750432
750531
|
}
|
|
750433
750532
|
async waitForMessagesProcessed(origin, destination, sourceTx, delayMs, maxAttempts) {
|
|
750434
|
-
const messages = this.adapter(origin).extractMessageIds(sourceTx);
|
|
750533
|
+
const messages = await this.adapter(origin).extractMessageIds(sourceTx);
|
|
750435
750534
|
await Promise.all(messages.map((msg) => this.adapter(destination).waitForMessageProcessed(msg.messageId, msg.destination, delayMs, maxAttempts)));
|
|
750436
750535
|
return true;
|
|
750437
750536
|
}
|
|
@@ -750588,7 +750687,7 @@ class SealevelCoreAdapter extends MultiProtocolApp/* BaseSealevelAdapter */.OR {
|
|
|
750588
750687
|
this.multiProvider = multiProvider;
|
|
750589
750688
|
this.addresses = addresses;
|
|
750590
750689
|
}
|
|
750591
|
-
extractMessageIds(sourceTx) {
|
|
750690
|
+
async extractMessageIds(sourceTx) {
|
|
750592
750691
|
if (sourceTx.type !== ProviderType/* ProviderType */.c.SolanaWeb3) {
|
|
750593
750692
|
throw new Error(`Unsupported provider type for SealevelCoreAdapter ${sourceTx.type}`);
|
|
750594
750693
|
}
|
|
@@ -752853,6 +752952,8 @@ var objects = __nccwpck_require__(73938);
|
|
|
752853
752952
|
var types = __nccwpck_require__(16639);
|
|
752854
752953
|
// EXTERNAL MODULE: ../utils/dist/logging.js
|
|
752855
752954
|
var logging = __nccwpck_require__(94523);
|
|
752955
|
+
// EXTERNAL MODULE: ../utils/dist/validation.js
|
|
752956
|
+
var validation = __nccwpck_require__(21387);
|
|
752856
752957
|
// EXTERNAL MODULE: ../utils/dist/addresses.js
|
|
752857
752958
|
var addresses = __nccwpck_require__(93142);
|
|
752858
752959
|
// EXTERNAL MODULE: ../utils/dist/sets.js
|
|
@@ -752863,8 +752964,6 @@ var contracts = __nccwpck_require__(15570);
|
|
|
752863
752964
|
var AbstractHyperlaneModule = __nccwpck_require__(53387);
|
|
752864
752965
|
// EXTERNAL MODULE: ../sdk/dist/utils/ism.js
|
|
752865
752966
|
var ism = __nccwpck_require__(764);
|
|
752866
|
-
// EXTERNAL MODULE: ../utils/dist/validation.js
|
|
752867
|
-
var validation = __nccwpck_require__(21387);
|
|
752868
752967
|
// EXTERNAL MODULE: ../sdk/dist/deploy/HyperlaneDeployer.js
|
|
752869
752968
|
var HyperlaneDeployer = __nccwpck_require__(6609);
|
|
752870
752969
|
// EXTERNAL MODULE: ../sdk/dist/fee/EvmTokenFeeReader.js
|
|
@@ -753280,7 +753379,8 @@ class EvmTokenFeeModule extends AbstractHyperlaneModule/* HyperlaneModule */.x {
|
|
|
753280
753379
|
if (targetConfig.type === fee_types/* TokenFeeType */.cA.OffchainQuotedLinearFee) {
|
|
753281
753380
|
mutableFields.quoteSigners = true;
|
|
753282
753381
|
}
|
|
753283
|
-
if (targetConfig.type === fee_types/* TokenFeeType */.cA.RoutingFee
|
|
753382
|
+
if (targetConfig.type === fee_types/* TokenFeeType */.cA.RoutingFee ||
|
|
753383
|
+
targetConfig.type === fee_types/* TokenFeeType */.cA.CrossCollateralRoutingFee) {
|
|
753284
753384
|
mutableFields.feeContracts = true;
|
|
753285
753385
|
}
|
|
753286
753386
|
return !(0,objects/* deepEquals */.c2)((0,objects/* objOmit */.Xi)(actualConfig, mutableFields), (0,objects/* objOmit */.Xi)(targetConfig, mutableFields));
|
|
@@ -753336,6 +753436,58 @@ class EvmTokenFeeModule extends AbstractHyperlaneModule/* HyperlaneModule */.x {
|
|
|
753336
753436
|
...this.createOwnershipUpdateTxs(normalizedActualConfig, normalizedTargetConfig),
|
|
753337
753437
|
];
|
|
753338
753438
|
}
|
|
753439
|
+
// CrossCollateralRoutingFee: update sub-fee contracts (nested structure)
|
|
753440
|
+
if (normalizedTargetConfig.type === fee_types/* TokenFeeType */.cA.CrossCollateralRoutingFee &&
|
|
753441
|
+
normalizedActualConfig.type === fee_types/* TokenFeeType */.cA.CrossCollateralRoutingFee &&
|
|
753442
|
+
actualConfig.type === fee_types/* TokenFeeType */.cA.CrossCollateralRoutingFee) {
|
|
753443
|
+
const targetFeeContracts = normalizedTargetConfig.feeContracts ?? {};
|
|
753444
|
+
// Carry actual addresses into target entries, but limit to target keys only so
|
|
753445
|
+
// orphan entries from actualConfig don't get re-injected into the update loop.
|
|
753446
|
+
const merged = (0,objects/* objMerge */._J)(actualConfig, normalizedTargetConfig, 10, true);
|
|
753447
|
+
if (merged.feeContracts) {
|
|
753448
|
+
for (const chainName of Object.keys(merged.feeContracts)) {
|
|
753449
|
+
if (!(chainName in targetFeeContracts)) {
|
|
753450
|
+
delete merged.feeContracts[chainName];
|
|
753451
|
+
}
|
|
753452
|
+
else {
|
|
753453
|
+
for (const routerBytes32 of Object.keys(merged.feeContracts[chainName])) {
|
|
753454
|
+
if (!(routerBytes32 in targetFeeContracts[chainName])) {
|
|
753455
|
+
delete merged.feeContracts[chainName][routerBytes32];
|
|
753456
|
+
}
|
|
753457
|
+
}
|
|
753458
|
+
}
|
|
753459
|
+
}
|
|
753460
|
+
}
|
|
753461
|
+
// Emit clearing transactions for entries removed from target.
|
|
753462
|
+
const removalDestinations = [];
|
|
753463
|
+
const removalRouterKeys = [];
|
|
753464
|
+
const zeroAddresses = [];
|
|
753465
|
+
for (const [chainName, routerConfigs] of Object.entries(actualConfig.feeContracts ?? {})) {
|
|
753466
|
+
const targetRouterConfigs = targetFeeContracts[chainName] ?? {};
|
|
753467
|
+
for (const routerBytes32 of Object.keys(routerConfigs)) {
|
|
753468
|
+
if (!(routerBytes32 in targetRouterConfigs)) {
|
|
753469
|
+
removalDestinations.push(this.multiProvider.getDomainId(chainName));
|
|
753470
|
+
removalRouterKeys.push(routerBytes32);
|
|
753471
|
+
zeroAddresses.push(lib.constants.AddressZero);
|
|
753472
|
+
}
|
|
753473
|
+
}
|
|
753474
|
+
}
|
|
753475
|
+
const removalTxs = removalDestinations.length > 0
|
|
753476
|
+
? [
|
|
753477
|
+
{
|
|
753478
|
+
annotation: 'Clearing removed CrossCollateralRoutingFee sub-contract pointers',
|
|
753479
|
+
chainId: this.chainId,
|
|
753480
|
+
to: this.args.addresses.deployedFee,
|
|
753481
|
+
data: dist/* CrossCollateralRoutingFee__factory */.gv3.createInterface().encodeFunctionData('setCrossCollateralRouterFeeContracts', [removalDestinations, removalRouterKeys, zeroAddresses]),
|
|
753482
|
+
},
|
|
753483
|
+
]
|
|
753484
|
+
: [];
|
|
753485
|
+
return [
|
|
753486
|
+
...(await this.updateCrossCollateralRoutingFee(merged)),
|
|
753487
|
+
...removalTxs,
|
|
753488
|
+
...this.createOwnershipUpdateTxs(normalizedActualConfig, normalizedTargetConfig),
|
|
753489
|
+
];
|
|
753490
|
+
}
|
|
753339
753491
|
// Routing fee: update sub-fee contracts
|
|
753340
753492
|
if (normalizedTargetConfig.type === fee_types/* TokenFeeType */.cA.RoutingFee &&
|
|
753341
753493
|
normalizedActualConfig.type === fee_types/* TokenFeeType */.cA.RoutingFee) {
|
|
@@ -753346,6 +753498,114 @@ class EvmTokenFeeModule extends AbstractHyperlaneModule/* HyperlaneModule */.x {
|
|
|
753346
753498
|
}
|
|
753347
753499
|
return this.createOwnershipUpdateTxs(normalizedActualConfig, normalizedTargetConfig);
|
|
753348
753500
|
}
|
|
753501
|
+
async updateCrossCollateralRoutingFee(targetConfig) {
|
|
753502
|
+
const updateTransactions = [];
|
|
753503
|
+
if (!targetConfig.feeContracts)
|
|
753504
|
+
return [];
|
|
753505
|
+
const currentRoutingAddress = this.args.addresses.deployedFee;
|
|
753506
|
+
// Validate all destination chains and collect domain IDs upfront so that an unknown
|
|
753507
|
+
// chain name fails before any sub-fee deployments are attempted.
|
|
753508
|
+
const domainIdByChain = new Map();
|
|
753509
|
+
for (const chainName of Object.keys(targetConfig.feeContracts)) {
|
|
753510
|
+
domainIdByChain.set(chainName, this.multiProvider.getDomainId(chainName));
|
|
753511
|
+
}
|
|
753512
|
+
// Deduplicate update work for shared addresses (old address → deployed address after update).
|
|
753513
|
+
// Multiple (chainName, routerBytes32) pairs may point to the same physical contract; we only
|
|
753514
|
+
// run the update once per (address, config) pair. If two entries share an address but have
|
|
753515
|
+
// divergent target configs (split case), each gets its own deployment.
|
|
753516
|
+
const updatedByAddress = new Map();
|
|
753517
|
+
// Per-entry deployed address, keyed by "chainName:routerBytes32".
|
|
753518
|
+
const entryDeployedAddr = new Map();
|
|
753519
|
+
for (const [chainName, routerConfigs] of Object.entries(targetConfig.feeContracts)) {
|
|
753520
|
+
for (const [routerBytes32, subFeeConfig] of Object.entries(routerConfigs)) {
|
|
753521
|
+
(0,validation/* assert */.v)(/^0x[0-9a-fA-F]{64}$/.test(routerBytes32), `routerBytes32 key "${routerBytes32}" for chain ${chainName} is not a valid 32-byte hex string`);
|
|
753522
|
+
const address = subFeeConfig.address;
|
|
753523
|
+
const entryKey = `${chainName}:${routerBytes32}`;
|
|
753524
|
+
if (!address) {
|
|
753525
|
+
// No existing sub-fee contract — deploy a new one
|
|
753526
|
+
this.logger.info(`No existing sub-fee contract for ${chainName}/${routerBytes32}, deploying new one`);
|
|
753527
|
+
const subFeeModule = await EvmTokenFeeModule.create({
|
|
753528
|
+
multiProvider: this.multiProvider,
|
|
753529
|
+
chain: this.chainName,
|
|
753530
|
+
config: subFeeConfig,
|
|
753531
|
+
contractVerifier: this.contractVerifier,
|
|
753532
|
+
});
|
|
753533
|
+
const deployedSubFee = subFeeModule.serialize().deployedFee;
|
|
753534
|
+
this.logger.debug(`New cross-collateral sub-fee contract deployed at ${deployedSubFee} for ${chainName}/${routerBytes32}`);
|
|
753535
|
+
entryDeployedAddr.set(entryKey, deployedSubFee);
|
|
753536
|
+
}
|
|
753537
|
+
else {
|
|
753538
|
+
const addrKey = address.toLowerCase();
|
|
753539
|
+
const cached = updatedByAddress.get(addrKey);
|
|
753540
|
+
const configMatches = cached && (0,objects/* deepEquals */.c2)(cached.config, subFeeConfig);
|
|
753541
|
+
if (!cached || !configMatches) {
|
|
753542
|
+
if (cached && !configMatches) {
|
|
753543
|
+
// Same physical address but divergent target config — this is a route split.
|
|
753544
|
+
// Deploy a fresh sub-fee contract rather than reusing the other entry's result.
|
|
753545
|
+
this.logger.info(`Cross-collateral sub-fee config diverged for ${chainName}/${routerBytes32} at ${address}, deploying new contract`);
|
|
753546
|
+
const subFeeModule = await EvmTokenFeeModule.create({
|
|
753547
|
+
multiProvider: this.multiProvider,
|
|
753548
|
+
chain: this.chainName,
|
|
753549
|
+
config: subFeeConfig,
|
|
753550
|
+
contractVerifier: this.contractVerifier,
|
|
753551
|
+
});
|
|
753552
|
+
const deployedSubFee = subFeeModule.serialize().deployedFee;
|
|
753553
|
+
this.logger.debug(`New cross-collateral sub-fee contract deployed at ${deployedSubFee} for ${chainName}/${routerBytes32}`);
|
|
753554
|
+
entryDeployedAddr.set(entryKey, deployedSubFee);
|
|
753555
|
+
continue;
|
|
753556
|
+
}
|
|
753557
|
+
// First time we see this address — run the update
|
|
753558
|
+
const subFeeModule = new EvmTokenFeeModule(this.multiProvider, {
|
|
753559
|
+
addresses: { deployedFee: address },
|
|
753560
|
+
chain: this.chainName,
|
|
753561
|
+
config: subFeeConfig,
|
|
753562
|
+
}, this.contractVerifier);
|
|
753563
|
+
const subFeeUpdateTransactions = await subFeeModule.update(subFeeConfig, { address });
|
|
753564
|
+
updateTransactions.push(...subFeeUpdateTransactions);
|
|
753565
|
+
const deployedSubFeeAddr = subFeeModule.serialize().deployedFee;
|
|
753566
|
+
if (!(0,addresses/* eqAddress */.fv)(deployedSubFeeAddr, address)) {
|
|
753567
|
+
this.logger.debug(`Cross-collateral sub-fee redeployed: ${address} → ${deployedSubFeeAddr} for ${chainName}/${routerBytes32}`);
|
|
753568
|
+
}
|
|
753569
|
+
updatedByAddress.set(addrKey, {
|
|
753570
|
+
config: subFeeConfig,
|
|
753571
|
+
deployedAddr: deployedSubFeeAddr,
|
|
753572
|
+
});
|
|
753573
|
+
}
|
|
753574
|
+
const entry = updatedByAddress.get(addrKey);
|
|
753575
|
+
(0,validation/* assert */.v)(entry !== undefined, `Missing deployed fee for ${addrKey}`);
|
|
753576
|
+
entryDeployedAddr.set(entryKey, entry.deployedAddr);
|
|
753577
|
+
}
|
|
753578
|
+
}
|
|
753579
|
+
}
|
|
753580
|
+
// Build setCrossCollateralRouterFeeContracts args for entries whose pointer changed
|
|
753581
|
+
const destinations = [];
|
|
753582
|
+
const routerKeys = [];
|
|
753583
|
+
const newAddresses = [];
|
|
753584
|
+
for (const [chainName, routerConfigs] of Object.entries(targetConfig.feeContracts)) {
|
|
753585
|
+
const domainId = domainIdByChain.get(chainName);
|
|
753586
|
+
(0,validation/* assert */.v)(domainId !== undefined, `Domain ID not found for ${chainName}`);
|
|
753587
|
+
for (const [routerBytes32, subFeeConfig] of Object.entries(routerConfigs)) {
|
|
753588
|
+
const entryKey = `${chainName}:${routerBytes32}`;
|
|
753589
|
+
const deployedSubFee = entryDeployedAddr.get(entryKey);
|
|
753590
|
+
(0,validation/* assert */.v)(deployedSubFee !== undefined, `Missing deployed fee for entry ${entryKey}`);
|
|
753591
|
+
const oldAddr = subFeeConfig.address;
|
|
753592
|
+
if (!oldAddr || !(0,addresses/* eqAddress */.fv)(deployedSubFee, oldAddr)) {
|
|
753593
|
+
destinations.push(domainId);
|
|
753594
|
+
routerKeys.push(routerBytes32);
|
|
753595
|
+
newAddresses.push(deployedSubFee);
|
|
753596
|
+
}
|
|
753597
|
+
}
|
|
753598
|
+
}
|
|
753599
|
+
if (destinations.length > 0) {
|
|
753600
|
+
updateTransactions.push({
|
|
753601
|
+
annotation: 'Updating CrossCollateralRoutingFee sub-contract pointers',
|
|
753602
|
+
chainId: this.chainId,
|
|
753603
|
+
to: currentRoutingAddress,
|
|
753604
|
+
data: dist/* CrossCollateralRoutingFee__factory */.gv3.createInterface().encodeFunctionData('setCrossCollateralRouterFeeContracts', [destinations, routerKeys, newAddresses]),
|
|
753605
|
+
});
|
|
753606
|
+
}
|
|
753607
|
+
return updateTransactions;
|
|
753608
|
+
}
|
|
753349
753609
|
async updateRoutingFee(targetConfig) {
|
|
753350
753610
|
const updateTransactions = [];
|
|
753351
753611
|
if (!targetConfig.feeContracts)
|
|
@@ -756583,22 +756843,50 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756583
756843
|
switch (config.type) {
|
|
756584
756844
|
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.FALLBACK_ROUTING:
|
|
756585
756845
|
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.ROUTING:
|
|
756586
|
-
config.domains = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .promiseObjAll */ .a1)((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .objMap */ .Yp)(config.domains, async (_, hook) =>
|
|
756587
|
-
|
|
756588
|
-
|
|
756846
|
+
config.domains = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .promiseObjAll */ .a1)((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_5__/* .objMap */ .Yp)(config.domains, async (_, hook) => {
|
|
756847
|
+
const derived = await this.deriveHookConfig(hook);
|
|
756848
|
+
return this.preserveUnredeployable(hook, derived);
|
|
756849
|
+
}));
|
|
756850
|
+
if (config.type === _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.FALLBACK_ROUTING) {
|
|
756851
|
+
const derived = await this.deriveHookConfig(config.fallback);
|
|
756852
|
+
config.fallback = this.preserveUnredeployable(config.fallback, derived);
|
|
756853
|
+
}
|
|
756589
756854
|
break;
|
|
756855
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.CCTP:
|
|
756856
|
+
return config;
|
|
756590
756857
|
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.AGGREGATION:
|
|
756591
|
-
config.hooks = await Promise.all(config.hooks.map(async (hook) =>
|
|
756858
|
+
config.hooks = await Promise.all(config.hooks.map(async (hook) => {
|
|
756859
|
+
const derived = await this.deriveHookConfig(hook);
|
|
756860
|
+
return this.preserveUnredeployable(hook, derived);
|
|
756861
|
+
}));
|
|
756592
756862
|
break;
|
|
756593
|
-
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.AMOUNT_ROUTING:
|
|
756594
|
-
|
|
756595
|
-
|
|
756596
|
-
|
|
756863
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.AMOUNT_ROUTING: {
|
|
756864
|
+
const lowerOrig = config.lowerHook;
|
|
756865
|
+
const upperOrig = config.upperHook;
|
|
756866
|
+
const [lowerDerived, upperDerived] = await Promise.all([
|
|
756867
|
+
this.deriveHookConfig(lowerOrig),
|
|
756868
|
+
this.deriveHookConfig(upperOrig),
|
|
756597
756869
|
]);
|
|
756870
|
+
config.lowerHook = this.preserveUnredeployable(lowerOrig, lowerDerived);
|
|
756871
|
+
config.upperHook = this.preserveUnredeployable(upperOrig, upperDerived);
|
|
756598
756872
|
break;
|
|
756873
|
+
}
|
|
756599
756874
|
}
|
|
756600
756875
|
return config;
|
|
756601
756876
|
}
|
|
756877
|
+
// Returns original HookConfig for non-redeployable types (CCTP, PREDICATE) so that
|
|
756878
|
+
// normalizeConfig — which strips 'address' from all objects — does not discard
|
|
756879
|
+
// the address. Returns the address as a bare string so it survives normalizeConfig
|
|
756880
|
+
// and deploy() reaches the string branch intact, regardless of whether the original
|
|
756881
|
+
// was already a string or an object with an address field.
|
|
756882
|
+
preserveUnredeployable(original, derived) {
|
|
756883
|
+
if (derived.type !== _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.CCTP && derived.type !== _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.PREDICATE) {
|
|
756884
|
+
return derived;
|
|
756885
|
+
}
|
|
756886
|
+
if (typeof original === 'string')
|
|
756887
|
+
return original;
|
|
756888
|
+
return derived.address;
|
|
756889
|
+
}
|
|
756602
756890
|
async deriveMailboxDefaultHookConfig(address) {
|
|
756603
756891
|
const hook = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .DefaultHook__factory */ .hR3.connect(address, this.provider);
|
|
756604
756892
|
this.assertHookType(await hook.hookType(), _types_js__WEBPACK_IMPORTED_MODULE_4__/* .OnchainHookType */ .c0.MAILBOX_DEFAULT_HOOK);
|
|
@@ -756677,7 +756965,10 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756677
756965
|
hook.hooks(ethers__WEBPACK_IMPORTED_MODULE_6__.ethers.constants.AddressZero),
|
|
756678
756966
|
]);
|
|
756679
756967
|
this.assertHookType(hookType, _types_js__WEBPACK_IMPORTED_MODULE_4__/* .OnchainHookType */ .c0.AGGREGATION);
|
|
756680
|
-
const hookConfigs = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .concurrentMap */ .q1)(this.concurrency, hooks, (
|
|
756968
|
+
const hookConfigs = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_7__/* .concurrentMap */ .q1)(this.concurrency, hooks, async (hookAddress) => {
|
|
756969
|
+
const derived = await this.deriveHookConfigFromAddress(hookAddress);
|
|
756970
|
+
return this.preserveUnredeployable(hookAddress, derived);
|
|
756971
|
+
});
|
|
756681
756972
|
const config = {
|
|
756682
756973
|
address,
|
|
756683
756974
|
type: _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.AGGREGATION,
|
|
@@ -756806,7 +757097,8 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756806
757097
|
hook.childHook(),
|
|
756807
757098
|
]);
|
|
756808
757099
|
const destinationChainName = this.multiProvider.getChainName(destinationDomain);
|
|
756809
|
-
const
|
|
757100
|
+
const derivedChild = await this.deriveHookConfigFromAddress(childHookAddress);
|
|
757101
|
+
const childHookConfig = this.preserveUnredeployable(childHookAddress, derivedChild);
|
|
756810
757102
|
const config = {
|
|
756811
757103
|
address,
|
|
756812
757104
|
type: _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.ARB_L2_TO_L1,
|
|
@@ -756845,7 +757137,8 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756845
757137
|
this.fetchDomainHooks(hook),
|
|
756846
757138
|
]);
|
|
756847
757139
|
this.assertHookType(hookType, _types_js__WEBPACK_IMPORTED_MODULE_4__/* .OnchainHookType */ .c0.FALLBACK_ROUTING);
|
|
756848
|
-
const
|
|
757140
|
+
const derivedFallback = await this.deriveHookConfigFromAddress(fallbackHookAddress);
|
|
757141
|
+
const fallbackHookConfig = this.preserveUnredeployable(fallbackHookAddress, derivedFallback);
|
|
756849
757142
|
const config = {
|
|
756850
757143
|
owner,
|
|
756851
757144
|
address,
|
|
@@ -756863,7 +757156,8 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756863
757156
|
try {
|
|
756864
757157
|
const domainHook = await hook.hooks(domainId);
|
|
756865
757158
|
if (domainHook !== ethers__WEBPACK_IMPORTED_MODULE_6__.ethers.constants.AddressZero) {
|
|
756866
|
-
|
|
757159
|
+
const derived = await this.deriveHookConfigFromAddress(domainHook);
|
|
757160
|
+
domainHooks[chainName] = this.preserveUnredeployable(domainHook, derived);
|
|
756867
757161
|
}
|
|
756868
757162
|
}
|
|
756869
757163
|
catch {
|
|
@@ -756901,10 +757195,12 @@ class EvmHookReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1
|
|
|
756901
757195
|
]);
|
|
756902
757196
|
this.assertHookType(hookType, _types_js__WEBPACK_IMPORTED_MODULE_4__/* .OnchainHookType */ .c0.AMOUNT_ROUTING);
|
|
756903
757197
|
// Parallelize hook config derivation
|
|
756904
|
-
const [
|
|
756905
|
-
this.
|
|
756906
|
-
this.
|
|
757198
|
+
const [lowerDerived, upperDerived] = await Promise.all([
|
|
757199
|
+
this.deriveHookConfigFromAddress(lowerHookAddress),
|
|
757200
|
+
this.deriveHookConfigFromAddress(upperHookAddress),
|
|
756907
757201
|
]);
|
|
757202
|
+
const lowerHookConfig = this.preserveUnredeployable(lowerHookAddress, lowerDerived);
|
|
757203
|
+
const upperHookConfig = this.preserveUnredeployable(upperHookAddress, upperDerived);
|
|
756908
757204
|
const config = {
|
|
756909
757205
|
address,
|
|
756910
757206
|
type: _types_js__WEBPACK_IMPORTED_MODULE_4__/* .HookType */ .WD.AMOUNT_ROUTING,
|
|
@@ -757705,16 +758001,16 @@ class EvmIsmModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MO
|
|
|
757705
758001
|
/* harmony export */ });
|
|
757706
758002
|
/* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(61934);
|
|
757707
758003
|
/* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(50653);
|
|
757708
|
-
/* harmony import */ var
|
|
758004
|
+
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(94523);
|
|
757709
758005
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(73938);
|
|
757710
758006
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(14918);
|
|
757711
758007
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(21387);
|
|
757712
758008
|
/* harmony import */ var _ccip_utils_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(93035);
|
|
757713
|
-
/* harmony import */ var
|
|
757714
|
-
/* harmony import */ var
|
|
757715
|
-
/* harmony import */ var
|
|
758009
|
+
/* harmony import */ var _consts_concurrency_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(92573);
|
|
758010
|
+
/* harmony import */ var _metadata_chainMetadataTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(1430);
|
|
758011
|
+
/* harmony import */ var _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(49680);
|
|
757716
758012
|
/* harmony import */ var _utils_contract_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(76709);
|
|
757717
|
-
/* harmony import */ var
|
|
758013
|
+
/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(69352);
|
|
757718
758014
|
|
|
757719
758015
|
|
|
757720
758016
|
|
|
@@ -757725,14 +758021,19 @@ class EvmIsmModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MO
|
|
|
757725
758021
|
|
|
757726
758022
|
|
|
757727
758023
|
const INCREMENTAL_REVERT_STRING = 'IncrementalDomainRoutingIsm: removal not supported';
|
|
757728
|
-
|
|
758024
|
+
// ISM types that cannot be deployed by HyperlaneIsmFactory — preserve as address strings.
|
|
758025
|
+
const NON_REDEPLOYABLE_ISM_TYPES = new Set([
|
|
758026
|
+
_types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.OFFCHAIN_LOOKUP,
|
|
758027
|
+
_types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INTERCHAIN_ACCOUNT_ROUTING,
|
|
758028
|
+
]);
|
|
758029
|
+
class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_2__/* .HyperlaneReader */ .S {
|
|
757729
758030
|
multiProvider;
|
|
757730
758031
|
chain;
|
|
757731
758032
|
concurrency;
|
|
757732
758033
|
messageContext;
|
|
757733
|
-
logger =
|
|
758034
|
+
logger = _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .rootLogger */ .Jk.child({ module: 'EvmIsmReader' });
|
|
757734
758035
|
isZkSyncChain;
|
|
757735
|
-
constructor(multiProvider, chain, concurrency = multiProvider.tryGetRpcConcurrency(chain) ??
|
|
758036
|
+
constructor(multiProvider, chain, concurrency = multiProvider.tryGetRpcConcurrency(chain) ?? _consts_concurrency_js__WEBPACK_IMPORTED_MODULE_4__/* .DEFAULT_CONTRACT_READ_CONCURRENCY */ .M, messageContext) {
|
|
757736
758037
|
super(multiProvider, chain);
|
|
757737
758038
|
this.multiProvider = multiProvider;
|
|
757738
758039
|
this.chain = chain;
|
|
@@ -757740,7 +758041,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757740
758041
|
this.messageContext = messageContext;
|
|
757741
758042
|
// So we can distinguish between Storage/Static ISMs
|
|
757742
758043
|
const chainTechnicalStack = this.multiProvider.getChainMetadata(this.chain).technicalStack;
|
|
757743
|
-
this.isZkSyncChain = chainTechnicalStack ===
|
|
758044
|
+
this.isZkSyncChain = chainTechnicalStack === _metadata_chainMetadataTypes_js__WEBPACK_IMPORTED_MODULE_5__/* .ChainTechnicalStack */ .DU.ZkSync;
|
|
757744
758045
|
}
|
|
757745
758046
|
async deriveIsmConfigFromAddress(address) {
|
|
757746
758047
|
let moduleType = undefined;
|
|
@@ -757753,28 +758054,28 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757753
758054
|
this.setSmartProviderLogLevel('silent');
|
|
757754
758055
|
moduleType = await ism.moduleType();
|
|
757755
758056
|
switch (moduleType) {
|
|
757756
|
-
case
|
|
758057
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.UNUSED:
|
|
757757
758058
|
throw new Error('UNUSED does not have a corresponding IsmType');
|
|
757758
|
-
case
|
|
758059
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.ROUTING:
|
|
757759
758060
|
// IsmType is either ROUTING or FALLBACK_ROUTING, but that's determined inside deriveRoutingConfig
|
|
757760
758061
|
derivedIsmConfig = await this.deriveRoutingConfig(address);
|
|
757761
758062
|
break;
|
|
757762
|
-
case
|
|
758063
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.AGGREGATION:
|
|
757763
758064
|
derivedIsmConfig = await this.deriveAggregationConfig(address);
|
|
757764
758065
|
break;
|
|
757765
|
-
case
|
|
758066
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.LEGACY_MULTISIG:
|
|
757766
758067
|
throw new Error('LEGACY_MULTISIG is deprecated and not supported');
|
|
757767
|
-
case
|
|
757768
|
-
case
|
|
758068
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MERKLE_ROOT_MULTISIG:
|
|
758069
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MESSAGE_ID_MULTISIG:
|
|
757769
758070
|
derivedIsmConfig = await this.deriveMultisigConfig(address);
|
|
757770
758071
|
break;
|
|
757771
|
-
case
|
|
758072
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.NULL:
|
|
757772
758073
|
derivedIsmConfig = await this.deriveNullConfig(address);
|
|
757773
758074
|
break;
|
|
757774
|
-
case
|
|
758075
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.CCIP_READ:
|
|
757775
758076
|
derivedIsmConfig = await this.deriveOffchainLookupConfig(address);
|
|
757776
758077
|
break;
|
|
757777
|
-
case
|
|
758078
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.ARB_L2_TO_L1:
|
|
757778
758079
|
return this.deriveArbL2ToL1Config(address);
|
|
757779
758080
|
default:
|
|
757780
758081
|
throw new Error(`Unknown ISM ModuleType: ${moduleType}`);
|
|
@@ -757786,17 +758087,17 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757786
758087
|
throw new Error(errorMessage);
|
|
757787
758088
|
}
|
|
757788
758089
|
finally {
|
|
757789
|
-
this.setSmartProviderLogLevel((0,
|
|
758090
|
+
this.setSmartProviderLogLevel((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_3__/* .getLogLevel */ .XM)()); // returns to original level defined by rootLogger
|
|
757790
758091
|
}
|
|
757791
758092
|
return derivedIsmConfig;
|
|
757792
758093
|
}
|
|
757793
758094
|
async deriveOffchainLookupConfig(address) {
|
|
757794
758095
|
const ism = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .AbstractCcipReadIsm__factory */ .RWQ.connect(address, this.provider);
|
|
757795
|
-
this.assertModuleType(await ism.moduleType(),
|
|
758096
|
+
this.assertModuleType(await ism.moduleType(), _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.CCIP_READ);
|
|
757796
758097
|
const [urls, owner] = await Promise.all([ism.urls(), ism.owner()]);
|
|
757797
758098
|
return {
|
|
757798
758099
|
address,
|
|
757799
|
-
type:
|
|
758100
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.OFFCHAIN_LOOKUP,
|
|
757800
758101
|
urls,
|
|
757801
758102
|
owner,
|
|
757802
758103
|
};
|
|
@@ -757808,26 +758109,48 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757808
758109
|
return this.deriveIsmConfigFromAddress(config);
|
|
757809
758110
|
// Extend the inner isms
|
|
757810
758111
|
switch (config.type) {
|
|
757811
|
-
case
|
|
757812
|
-
case
|
|
757813
|
-
config.domains = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .promiseObjAll */ .a1)((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .objMap */ .Yp)(config.domains, async (_, ism) =>
|
|
758112
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.FALLBACK_ROUTING:
|
|
758113
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.ROUTING:
|
|
758114
|
+
config.domains = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .promiseObjAll */ .a1)((0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_6__/* .objMap */ .Yp)(config.domains, async (_, ism) => {
|
|
758115
|
+
const derived = await this.deriveIsmConfig(ism);
|
|
758116
|
+
return this.preserveUnredeployableIsm(ism, derived);
|
|
758117
|
+
}));
|
|
757814
758118
|
break;
|
|
757815
|
-
case
|
|
757816
|
-
case
|
|
757817
|
-
config.modules = await Promise.all(config.modules.map(async (ism) =>
|
|
758119
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.AGGREGATION:
|
|
758120
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.STORAGE_AGGREGATION:
|
|
758121
|
+
config.modules = await Promise.all(config.modules.map(async (ism) => {
|
|
758122
|
+
const derived = await this.deriveIsmConfig(ism);
|
|
758123
|
+
return this.preserveUnredeployableIsm(ism, derived);
|
|
758124
|
+
}));
|
|
757818
758125
|
break;
|
|
757819
|
-
case
|
|
757820
|
-
|
|
757821
|
-
|
|
757822
|
-
|
|
758126
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.AMOUNT_ROUTING: {
|
|
758127
|
+
const lowerOrig = config.lowerIsm;
|
|
758128
|
+
const upperOrig = config.upperIsm;
|
|
758129
|
+
const [lowerDerived, upperDerived] = await Promise.all([
|
|
758130
|
+
this.deriveIsmConfig(lowerOrig),
|
|
758131
|
+
this.deriveIsmConfig(upperOrig),
|
|
757823
758132
|
]);
|
|
758133
|
+
config.lowerIsm = this.preserveUnredeployableIsm(lowerOrig, lowerDerived);
|
|
758134
|
+
config.upperIsm = this.preserveUnredeployableIsm(upperOrig, upperDerived);
|
|
757824
758135
|
break;
|
|
758136
|
+
}
|
|
757825
758137
|
}
|
|
757826
758138
|
return config;
|
|
757827
758139
|
}
|
|
758140
|
+
// Returns the original IsmConfig for non-redeployable ISM types (e.g. OFFCHAIN_LOOKUP,
|
|
758141
|
+
// INTERCHAIN_ACCOUNT_ROUTING) so normalizeConfig and deploy() handle them correctly.
|
|
758142
|
+
// The original is typically a string address that survives normalizeConfig intact and
|
|
758143
|
+
// reaches deploy()'s string branch; an object config is also preserved via derived.address.
|
|
758144
|
+
preserveUnredeployableIsm(original, derived) {
|
|
758145
|
+
if (!NON_REDEPLOYABLE_ISM_TYPES.has(derived.type))
|
|
758146
|
+
return derived;
|
|
758147
|
+
if (typeof original === 'string')
|
|
758148
|
+
return original;
|
|
758149
|
+
return derived.address;
|
|
758150
|
+
}
|
|
757828
758151
|
async deriveRoutingConfig(address) {
|
|
757829
758152
|
const abstractRoutingIsm = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .AbstractRoutingIsm__factory */ .cYN.connect(address, this.provider);
|
|
757830
|
-
this.assertModuleType(await abstractRoutingIsm.moduleType(),
|
|
758153
|
+
this.assertModuleType(await abstractRoutingIsm.moduleType(), _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.ROUTING);
|
|
757831
758154
|
// OPTIMIZATION: When we have messageContext, we only need to derive
|
|
757832
758155
|
// the specific ISM that will verify this message, not the full routing table.
|
|
757833
758156
|
// Just call route(message) and derive that single ISM directly.
|
|
@@ -757848,7 +758171,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757848
758171
|
if (!owner) {
|
|
757849
758172
|
if (isIca) {
|
|
757850
758173
|
return {
|
|
757851
|
-
type:
|
|
758174
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INTERCHAIN_ACCOUNT_ROUTING,
|
|
757852
758175
|
isms: {},
|
|
757853
758176
|
address,
|
|
757854
758177
|
owner: ethers__WEBPACK_IMPORTED_MODULE_7__.ethers.constants.AddressZero,
|
|
@@ -757862,7 +758185,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757862
758185
|
if (isIca) {
|
|
757863
758186
|
const icaRouter = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .InterchainAccountRouter__factory */ .ojJ.connect(address, this.provider);
|
|
757864
758187
|
return {
|
|
757865
|
-
type:
|
|
758188
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INTERCHAIN_ACCOUNT_ROUTING,
|
|
757866
758189
|
isms: await this.deriveRemoteIsmConfigs(domainIds, abstractRoutingIsm, icaRouter.isms,
|
|
757867
758190
|
// The isms here are deployed on remote chains and can't be derived
|
|
757868
758191
|
false),
|
|
@@ -757872,18 +758195,18 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757872
758195
|
}
|
|
757873
758196
|
const domains = await this.deriveRemoteIsmConfigs(domainIds, abstractRoutingIsm, defaultFallbackIsmInstance.module, true);
|
|
757874
758197
|
// Fallback routing ISM extends from MailboxClient, default routing
|
|
757875
|
-
let ismType =
|
|
758198
|
+
let ismType = _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.FALLBACK_ROUTING;
|
|
757876
758199
|
try {
|
|
757877
758200
|
await defaultFallbackIsmInstance.mailbox();
|
|
757878
758201
|
}
|
|
757879
758202
|
catch {
|
|
757880
|
-
ismType =
|
|
758203
|
+
ismType = _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.ROUTING;
|
|
757881
758204
|
this.logger.debug('Error accessing mailbox property, implying this is not a fallback routing ISM.', address);
|
|
757882
758205
|
}
|
|
757883
758206
|
// Check if it's an incremental routing ISM by looking for the unique error message in bytecode
|
|
757884
|
-
if (ismType ===
|
|
758207
|
+
if (ismType === _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.ROUTING) {
|
|
757885
758208
|
if (await (0,_utils_contract_js__WEBPACK_IMPORTED_MODULE_8__/* .contractHasString */ .u)(this.provider, address, INCREMENTAL_REVERT_STRING)) {
|
|
757886
|
-
ismType =
|
|
758209
|
+
ismType = _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INCREMENTAL_ROUTING;
|
|
757887
758210
|
this.logger.debug({ address }, 'Detected incremental routing ISM');
|
|
757888
758211
|
}
|
|
757889
758212
|
}
|
|
@@ -757925,12 +758248,14 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757925
758248
|
const moduleAddress = this.messageContext
|
|
757926
758249
|
? await contractInstance.route(this.messageContext.message)
|
|
757927
758250
|
: await addressDeriveFunc(domainId);
|
|
757928
|
-
|
|
757929
|
-
|
|
757930
|
-
|
|
757931
|
-
|
|
757932
|
-
|
|
757933
|
-
|
|
758251
|
+
if (deriveConfig) {
|
|
758252
|
+
const derived = await this.deriveIsmConfigFromAddress(moduleAddress);
|
|
758253
|
+
return [
|
|
758254
|
+
chainName,
|
|
758255
|
+
this.preserveUnredeployableIsm(moduleAddress, derived),
|
|
758256
|
+
];
|
|
758257
|
+
}
|
|
758258
|
+
return [chainName, moduleAddress];
|
|
757934
758259
|
});
|
|
757935
758260
|
return Object.fromEntries(res.filter((curr) => curr));
|
|
757936
758261
|
}
|
|
@@ -757951,29 +758276,36 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757951
758276
|
this.logger.debug('Error accessing AmountRoutingIsm properties, treating as legacy InterchainAccountIsm.', address);
|
|
757952
758277
|
// return a basic ICA routing config for legacy contracts
|
|
757953
758278
|
return {
|
|
757954
|
-
type:
|
|
758279
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INTERCHAIN_ACCOUNT_ROUTING,
|
|
757955
758280
|
isms: {},
|
|
757956
758281
|
address,
|
|
757957
758282
|
owner: ethers__WEBPACK_IMPORTED_MODULE_7__.ethers.constants.AddressZero,
|
|
757958
758283
|
};
|
|
757959
758284
|
}
|
|
758285
|
+
const [lowerDerived, upperDerived] = await Promise.all([
|
|
758286
|
+
this.deriveIsmConfigFromAddress(lowerIsm),
|
|
758287
|
+
this.deriveIsmConfigFromAddress(upperIsm),
|
|
758288
|
+
]);
|
|
757960
758289
|
return {
|
|
757961
|
-
type:
|
|
758290
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.AMOUNT_ROUTING,
|
|
757962
758291
|
address,
|
|
757963
|
-
lowerIsm:
|
|
757964
|
-
upperIsm:
|
|
758292
|
+
lowerIsm: this.preserveUnredeployableIsm(lowerIsm, lowerDerived),
|
|
758293
|
+
upperIsm: this.preserveUnredeployableIsm(upperIsm, upperDerived),
|
|
757965
758294
|
threshold: threshold.toNumber(),
|
|
757966
758295
|
};
|
|
757967
758296
|
}
|
|
757968
758297
|
async deriveAggregationConfig(address) {
|
|
757969
758298
|
const ism = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .StaticAggregationIsm__factory */ .UMv.connect(address, this.provider);
|
|
757970
|
-
this.assertModuleType(await ism.moduleType(),
|
|
758299
|
+
this.assertModuleType(await ism.moduleType(), _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.AGGREGATION);
|
|
757971
758300
|
const [modules, threshold] = await ism.modulesAndThreshold(ethers__WEBPACK_IMPORTED_MODULE_7__.ethers.constants.AddressZero);
|
|
757972
|
-
const ismConfigs = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .concurrentMap */ .q1)(this.concurrency, modules, async (module) =>
|
|
758301
|
+
const ismConfigs = await (0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_9__/* .concurrentMap */ .q1)(this.concurrency, modules, async (module) => {
|
|
758302
|
+
const derived = await this.deriveIsmConfigFromAddress(module);
|
|
758303
|
+
return this.preserveUnredeployableIsm(module, derived);
|
|
758304
|
+
});
|
|
757973
758305
|
// If it's a zkSync chain, it must be a StorageAggregationIsm
|
|
757974
758306
|
const ismType = this.isZkSyncChain
|
|
757975
|
-
?
|
|
757976
|
-
:
|
|
758307
|
+
? _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.STORAGE_AGGREGATION
|
|
758308
|
+
: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.AGGREGATION;
|
|
757977
758309
|
return {
|
|
757978
758310
|
address,
|
|
757979
758311
|
type: ismType,
|
|
@@ -757984,17 +758316,17 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
757984
758316
|
async deriveMultisigConfig(address) {
|
|
757985
758317
|
const ism = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .IMultisigIsm__factory */ .jku.connect(address, this.provider);
|
|
757986
758318
|
const moduleType = await ism.moduleType();
|
|
757987
|
-
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_10__/* .assert */ .v)(moduleType ===
|
|
757988
|
-
moduleType ===
|
|
757989
|
-
let ismType = moduleType ===
|
|
757990
|
-
?
|
|
757991
|
-
:
|
|
758319
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_10__/* .assert */ .v)(moduleType === _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MERKLE_ROOT_MULTISIG ||
|
|
758320
|
+
moduleType === _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MESSAGE_ID_MULTISIG, `expected module type to be ${_types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MERKLE_ROOT_MULTISIG} or ${_types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MESSAGE_ID_MULTISIG}, got ${moduleType}`);
|
|
758321
|
+
let ismType = moduleType === _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MERKLE_ROOT_MULTISIG
|
|
758322
|
+
? _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.MERKLE_ROOT_MULTISIG
|
|
758323
|
+
: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.MESSAGE_ID_MULTISIG;
|
|
757992
758324
|
// If it's a zkSync chain, it must be a StorageMultisigIsm
|
|
757993
758325
|
if (this.isZkSyncChain) {
|
|
757994
758326
|
ismType =
|
|
757995
|
-
moduleType ===
|
|
757996
|
-
?
|
|
757997
|
-
:
|
|
758327
|
+
moduleType === _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.MERKLE_ROOT_MULTISIG
|
|
758328
|
+
? _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.STORAGE_MERKLE_ROOT_MULTISIG
|
|
758329
|
+
: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.STORAGE_MESSAGE_ID_MULTISIG;
|
|
757998
758330
|
}
|
|
757999
758331
|
const [validators, threshold] = await ism.validatorsAndThreshold(ethers__WEBPACK_IMPORTED_MODULE_7__.ethers.constants.AddressZero);
|
|
758000
758332
|
return {
|
|
@@ -758006,7 +758338,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758006
758338
|
}
|
|
758007
758339
|
async deriveNullConfig(address) {
|
|
758008
758340
|
const ism = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .IInterchainSecurityModule__factory */ .Die.connect(address, this.provider);
|
|
758009
|
-
this.assertModuleType(await ism.moduleType(),
|
|
758341
|
+
this.assertModuleType(await ism.moduleType(), _types_js__WEBPACK_IMPORTED_MODULE_1__/* .ModuleType */ .nR.NULL);
|
|
758010
758342
|
// if it has trustedRelayer() property --> TRUSTED_RELAYER
|
|
758011
758343
|
const trustedRelayerIsm = _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_0__/* .TrustedRelayerIsm__factory */ .tdx.connect(address, this.provider);
|
|
758012
758344
|
try {
|
|
@@ -758014,7 +758346,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758014
758346
|
return {
|
|
758015
758347
|
address,
|
|
758016
758348
|
relayer,
|
|
758017
|
-
type:
|
|
758349
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.TRUSTED_RELAYER,
|
|
758018
758350
|
};
|
|
758019
758351
|
}
|
|
758020
758352
|
catch {
|
|
@@ -758028,7 +758360,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758028
758360
|
return {
|
|
758029
758361
|
address,
|
|
758030
758362
|
owner,
|
|
758031
|
-
type:
|
|
758363
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.PAUSABLE,
|
|
758032
758364
|
paused,
|
|
758033
758365
|
};
|
|
758034
758366
|
}
|
|
@@ -758045,7 +758377,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758045
758377
|
}
|
|
758046
758378
|
return {
|
|
758047
758379
|
address,
|
|
758048
|
-
type:
|
|
758380
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.CCIP,
|
|
758049
758381
|
originChain,
|
|
758050
758382
|
};
|
|
758051
758383
|
}
|
|
@@ -758058,7 +758390,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758058
758390
|
await opStackIsm.VERIFIED_MASK_INDEX();
|
|
758059
758391
|
return {
|
|
758060
758392
|
address,
|
|
758061
|
-
type:
|
|
758393
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.OP_STACK,
|
|
758062
758394
|
origin: address,
|
|
758063
758395
|
nativeBridge: '', // no way to extract native bridge from the ism
|
|
758064
758396
|
};
|
|
@@ -758077,7 +758409,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758077
758409
|
const owner = await rateLimitedIsm.owner();
|
|
758078
758410
|
return {
|
|
758079
758411
|
address,
|
|
758080
|
-
type:
|
|
758412
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.RATE_LIMITED,
|
|
758081
758413
|
recipient,
|
|
758082
758414
|
maxCapacity,
|
|
758083
758415
|
owner,
|
|
@@ -758089,7 +758421,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758089
758421
|
// no specific properties, must be Test ISM
|
|
758090
758422
|
return {
|
|
758091
758423
|
address,
|
|
758092
|
-
type:
|
|
758424
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.TEST_ISM,
|
|
758093
758425
|
};
|
|
758094
758426
|
}
|
|
758095
758427
|
async deriveArbL2ToL1Config(address) {
|
|
@@ -758099,7 +758431,7 @@ class EvmIsmReader extends _utils_HyperlaneReader_js__WEBPACK_IMPORTED_MODULE_1_
|
|
|
758099
758431
|
const bridge = await outboxContract.bridge();
|
|
758100
758432
|
return {
|
|
758101
758433
|
address,
|
|
758102
|
-
type:
|
|
758434
|
+
type: _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.ARB_L2_TO_L1,
|
|
758103
758435
|
bridge,
|
|
758104
758436
|
};
|
|
758105
758437
|
}
|
|
@@ -758293,6 +758625,9 @@ class HyperlaneIsmFactory extends _app_HyperlaneApp_js__WEBPACK_IMPORTED_MODULE_
|
|
|
758293
758625
|
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.CCIP:
|
|
758294
758626
|
contract = await this.deployCCIPIsm(destination, config);
|
|
758295
758627
|
break;
|
|
758628
|
+
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.OFFCHAIN_LOOKUP:
|
|
758629
|
+
throw new Error(`OFFCHAIN_LOOKUP ISM cannot be deployed — it must already be deployed. ` +
|
|
758630
|
+
`Pass its contract address as a string instead of a config object.`);
|
|
758296
758631
|
case _types_js__WEBPACK_IMPORTED_MODULE_1__/* .IsmType */ .GO.INTERCHAIN_ACCOUNT_ROUTING:
|
|
758297
758632
|
throw new Error('Interchain Account ISM is not supported in this context');
|
|
758298
758633
|
default:
|
|
@@ -765041,6 +765376,8 @@ class EvmIcaTxSubmitter {
|
|
|
765041
765376
|
chain: config.chain,
|
|
765042
765377
|
destinationChain: config.destinationChain,
|
|
765043
765378
|
originInterchainAccountRouter: interchainAccountRouterAddress,
|
|
765379
|
+
destinationInterchainAccountRouter: config.destinationInterchainAccountRouter,
|
|
765380
|
+
interchainSecurityModule: config.interchainSecurityModule,
|
|
765044
765381
|
}, internalSubmitter, multiProvider, interchainAccountApp);
|
|
765045
765382
|
}
|
|
765046
765383
|
async submit(...txs) {
|
|
@@ -765068,18 +765405,28 @@ class EvmIcaTxSubmitter {
|
|
|
765068
765405
|
return { data, to, value: value?.toString() };
|
|
765069
765406
|
});
|
|
765070
765407
|
const refundAddress = (0,addresses/* bytes32ToAddress */.ov)(this.config.owner);
|
|
765071
|
-
const
|
|
765408
|
+
const icaConfig = {
|
|
765409
|
+
origin: this.config.chain,
|
|
765410
|
+
owner: this.config.owner,
|
|
765411
|
+
ismOverride: this.config.interchainSecurityModule,
|
|
765412
|
+
routerOverride: this.config.destinationInterchainAccountRouter,
|
|
765413
|
+
localRouter: this.config.originInterchainAccountRouter,
|
|
765414
|
+
};
|
|
765415
|
+
const gasLimit = await this.interchainAccountApp.estimateIcaHandleGas({
|
|
765416
|
+
origin: this.config.chain,
|
|
765417
|
+
destination: this.config.destinationChain,
|
|
765418
|
+
innerCalls,
|
|
765419
|
+
config: icaConfig,
|
|
765420
|
+
});
|
|
765421
|
+
const hookMetadata = (0,messages/* formatStandardHookMetadata */.NE)({
|
|
765422
|
+
refundAddress,
|
|
765423
|
+
gasLimit: gasLimit.toBigInt(),
|
|
765424
|
+
});
|
|
765072
765425
|
const icaTx = await this.interchainAccountApp.getCallRemote({
|
|
765073
765426
|
chain: this.config.chain,
|
|
765074
765427
|
destination: this.config.destinationChain,
|
|
765075
765428
|
innerCalls,
|
|
765076
|
-
config:
|
|
765077
|
-
origin: this.config.chain,
|
|
765078
|
-
owner: this.config.owner,
|
|
765079
|
-
ismOverride: this.config.interchainSecurityModule,
|
|
765080
|
-
routerOverride: this.config.destinationInterchainAccountRouter,
|
|
765081
|
-
localRouter: this.config.originInterchainAccountRouter,
|
|
765082
|
-
},
|
|
765429
|
+
config: icaConfig,
|
|
765083
765430
|
hookMetadata,
|
|
765084
765431
|
});
|
|
765085
765432
|
return this.submitter.submit({
|
|
@@ -799885,34 +800232,70 @@ var index_default = SafeApiKit_default;
|
|
|
799885
800232
|
|
|
799886
800233
|
const SAFE_API_RETRIES = 10;
|
|
799887
800234
|
const SAFE_API_BASE_RETRY_MS = 1000;
|
|
800235
|
+
function isSafeApiKitConstructor(value) {
|
|
800236
|
+
return typeof value === 'function';
|
|
800237
|
+
}
|
|
799888
800238
|
function safeApiKeyRequired(txServiceUrl) {
|
|
799889
800239
|
return /safe\.global|5afe\.dev/.test(txServiceUrl);
|
|
799890
800240
|
}
|
|
800241
|
+
function normalizeSafeTxServiceUrl(txServiceUrl) {
|
|
800242
|
+
const trimmedUrl = txServiceUrl.replace(/\/+$/, '');
|
|
800243
|
+
if (trimmedUrl.endsWith('/api'))
|
|
800244
|
+
return trimmedUrl;
|
|
800245
|
+
return `${trimmedUrl}/api`;
|
|
800246
|
+
}
|
|
800247
|
+
function isSafeGlobalTxServiceUrl(txServiceUrl) {
|
|
800248
|
+
try {
|
|
800249
|
+
const url = new URL(normalizeSafeTxServiceUrl(txServiceUrl));
|
|
800250
|
+
return (['api.safe.global', 'api.5afe.dev'].includes(url.hostname) &&
|
|
800251
|
+
/^\/tx-service\/[^/]+\/api$/.test(url.pathname));
|
|
800252
|
+
}
|
|
800253
|
+
catch {
|
|
800254
|
+
return false;
|
|
800255
|
+
}
|
|
800256
|
+
}
|
|
800257
|
+
function getSafeApiKitConfig(chainId, txServiceUrl, gnosisSafeApiKey) {
|
|
800258
|
+
const normalizedTxServiceUrl = normalizeSafeTxServiceUrl(txServiceUrl);
|
|
800259
|
+
const apiKey = safeApiKeyRequired(normalizedTxServiceUrl)
|
|
800260
|
+
? gnosisSafeApiKey
|
|
800261
|
+
: undefined;
|
|
800262
|
+
const baseConfig = {
|
|
800263
|
+
chainId: BigInt(chainId),
|
|
800264
|
+
apiKey,
|
|
800265
|
+
};
|
|
800266
|
+
// Safe's hosted gateway authenticates API-key traffic correctly when API Kit
|
|
800267
|
+
// derives the service URL from chainId. Supplying txServiceUrl can hit lower
|
|
800268
|
+
// unauthenticated rate limits on some endpoints.
|
|
800269
|
+
if (apiKey && isSafeGlobalTxServiceUrl(normalizedTxServiceUrl)) {
|
|
800270
|
+
return baseConfig;
|
|
800271
|
+
}
|
|
800272
|
+
return {
|
|
800273
|
+
...baseConfig,
|
|
800274
|
+
txServiceUrl: normalizedTxServiceUrl,
|
|
800275
|
+
};
|
|
800276
|
+
}
|
|
799891
800277
|
function getSafeService(chain, multiProvider) {
|
|
799892
800278
|
const { gnosisSafeTransactionServiceUrl, gnosisSafeApiKey } = multiProvider.getChainMetadata(chain);
|
|
799893
|
-
|
|
799894
|
-
if (!txServiceUrl) {
|
|
799895
|
-
throw new Error(`must provide tx service url for ${chain}`);
|
|
799896
|
-
}
|
|
799897
|
-
// Ensure txServiceUrl ends with /api
|
|
799898
|
-
if (!txServiceUrl.endsWith('/api') &&
|
|
799899
|
-
!txServiceUrl.endsWith('/api/') &&
|
|
799900
|
-
!txServiceUrl.endsWith('api')) {
|
|
799901
|
-
// Remove trailing slash if present to avoid double slashes
|
|
799902
|
-
txServiceUrl = txServiceUrl.replace(/\/+$/, '');
|
|
799903
|
-
txServiceUrl = `${txServiceUrl}/api`;
|
|
799904
|
-
}
|
|
800279
|
+
(0,validation/* assert */.v)(gnosisSafeTransactionServiceUrl, `must provide tx service url for ${chain}`);
|
|
799905
800280
|
const chainId = multiProvider.getEvmChainId(chain);
|
|
799906
|
-
|
|
799907
|
-
|
|
800281
|
+
(0,validation/* assert */.v)(chainId, `Chain is not an EVM chain: ${chain}`);
|
|
800282
|
+
const config = getSafeApiKitConfig(chainId, gnosisSafeTransactionServiceUrl, gnosisSafeApiKey);
|
|
800283
|
+
(0,validation/* assert */.v)(isSafeApiKitConstructor(index_default), '@safe-global/api-kit default export is not a constructor');
|
|
800284
|
+
try {
|
|
800285
|
+
return new index_default(config);
|
|
800286
|
+
}
|
|
800287
|
+
catch (error) {
|
|
800288
|
+
if (error instanceof TypeError &&
|
|
800289
|
+
error.message.includes('There is no transaction service available for chainId') &&
|
|
800290
|
+
!config.txServiceUrl &&
|
|
800291
|
+
isSafeGlobalTxServiceUrl(gnosisSafeTransactionServiceUrl)) {
|
|
800292
|
+
return new index_default({
|
|
800293
|
+
...config,
|
|
800294
|
+
txServiceUrl: normalizeSafeTxServiceUrl(gnosisSafeTransactionServiceUrl),
|
|
800295
|
+
});
|
|
800296
|
+
}
|
|
800297
|
+
throw error;
|
|
799908
800298
|
}
|
|
799909
|
-
// @ts-ignore
|
|
799910
|
-
return new index_default({
|
|
799911
|
-
chainId: BigInt(chainId),
|
|
799912
|
-
txServiceUrl,
|
|
799913
|
-
// Only provide apiKey if the url contains safe.global or 5afe.dev
|
|
799914
|
-
apiKey: safeApiKeyRequired(txServiceUrl) ? gnosisSafeApiKey : undefined,
|
|
799915
|
-
});
|
|
799916
800299
|
}
|
|
799917
800300
|
// This is the version of the Safe contracts that the SDK is compatible with.
|
|
799918
800301
|
// Copied the MVP fields from https://github.com/safe-global/safe-core-sdk/blob/4d1c0e14630f951c2498e1d4dd521403af91d6e1/packages/protocol-kit/src/contracts/config.ts#L19
|
|
@@ -800013,7 +800396,13 @@ async function canProposeSafeTransactions(proposer, chain, multiProvider, safeAd
|
|
|
800013
800396
|
try {
|
|
800014
800397
|
safeService = getSafeService(chain, multiProvider);
|
|
800015
800398
|
}
|
|
800016
|
-
catch {
|
|
800399
|
+
catch (e) {
|
|
800400
|
+
logging/* rootLogger */.Jk.error('Failed to get Safe service for chain', {
|
|
800401
|
+
chain,
|
|
800402
|
+
chainName: multiProvider.tryGetChainName(chain),
|
|
800403
|
+
knownChains: multiProvider.getKnownChainNames(),
|
|
800404
|
+
error: e,
|
|
800405
|
+
});
|
|
800017
800406
|
return false;
|
|
800018
800407
|
}
|
|
800019
800408
|
const safe = await getSafe(chain, multiProvider, safeAddress);
|
|
@@ -801730,7 +802119,7 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
801730
802119
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
801731
802120
|
/* harmony export */ N: () => (/* binding */ EvmWarpModule)
|
|
801732
802121
|
/* harmony export */ });
|
|
801733
|
-
/* harmony import */ var
|
|
802122
|
+
/* harmony import */ var compare_versions__WEBPACK_IMPORTED_MODULE_31__ = __nccwpck_require__(95416);
|
|
801734
802123
|
/* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_21__ = __nccwpck_require__(61934);
|
|
801735
802124
|
/* harmony import */ var starknet__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(98954);
|
|
801736
802125
|
/* harmony import */ var _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(50653);
|
|
@@ -801742,26 +802131,28 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
|
|
|
801742
802131
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(52193);
|
|
801743
802132
|
/* harmony import */ var _hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(73689);
|
|
801744
802133
|
/* harmony import */ var _block_explorer_etherscan_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(26492);
|
|
801745
|
-
/* harmony import */ var
|
|
802134
|
+
/* harmony import */ var _contracts_contracts_js__WEBPACK_IMPORTED_MODULE_28__ = __nccwpck_require__(15570);
|
|
801746
802135
|
/* harmony import */ var _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(53387);
|
|
801747
802136
|
/* harmony import */ var _deploy_proxy_js__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(83697);
|
|
801748
802137
|
/* harmony import */ var _deploy_verify_ContractVerifier_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(76939);
|
|
801749
802138
|
/* harmony import */ var _fee_EvmTokenFeeModule_js__WEBPACK_IMPORTED_MODULE_25__ = __nccwpck_require__(43313);
|
|
802139
|
+
/* harmony import */ var _fee_crossCollateralUtils_js__WEBPACK_IMPORTED_MODULE_27__ = __nccwpck_require__(66630);
|
|
802140
|
+
/* harmony import */ var _fee_types_js__WEBPACK_IMPORTED_MODULE_26__ = __nccwpck_require__(52555);
|
|
801750
802141
|
/* harmony import */ var _hook_updates_js__WEBPACK_IMPORTED_MODULE_20__ = __nccwpck_require__(69203);
|
|
801751
802142
|
/* harmony import */ var _hook_utils_js__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(13912);
|
|
801752
802143
|
/* harmony import */ var _hook_types_js__WEBPACK_IMPORTED_MODULE_22__ = __nccwpck_require__(52116);
|
|
801753
|
-
/* harmony import */ var
|
|
802144
|
+
/* harmony import */ var _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_29__ = __nccwpck_require__(3612);
|
|
801754
802145
|
/* harmony import */ var _predicate_PredicateDeployer_js__WEBPACK_IMPORTED_MODULE_23__ = __nccwpck_require__(550);
|
|
801755
802146
|
/* harmony import */ var _router_types_js__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(38230);
|
|
801756
|
-
/* harmony import */ var
|
|
802147
|
+
/* harmony import */ var _utils_decimals_js__WEBPACK_IMPORTED_MODULE_32__ = __nccwpck_require__(27043);
|
|
801757
802148
|
/* harmony import */ var _ism_types_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(69352);
|
|
801758
802149
|
/* harmony import */ var _utils_ism_js__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(764);
|
|
801759
802150
|
/* harmony import */ var _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(40945);
|
|
801760
802151
|
/* harmony import */ var _EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(5715);
|
|
801761
|
-
/* harmony import */ var
|
|
802152
|
+
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_30__ = __nccwpck_require__(4169);
|
|
801762
802153
|
/* harmony import */ var _configUtils_js__WEBPACK_IMPORTED_MODULE_24__ = __nccwpck_require__(63776);
|
|
801763
|
-
/* harmony import */ var
|
|
801764
|
-
/* harmony import */ var
|
|
802154
|
+
/* harmony import */ var _contracts_js__WEBPACK_IMPORTED_MODULE_34__ = __nccwpck_require__(81504);
|
|
802155
|
+
/* harmony import */ var _deploy_js__WEBPACK_IMPORTED_MODULE_33__ = __nccwpck_require__(19186);
|
|
801765
802156
|
/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(38466);
|
|
801766
802157
|
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_13__]);
|
|
801767
802158
|
_EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_13__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
@@ -801791,6 +802182,8 @@ _EvmXERC20Module_js__WEBPACK_IMPORTED_MODULE_13__ = (__webpack_async_dependencie
|
|
|
801791
802182
|
|
|
801792
802183
|
|
|
801793
802184
|
|
|
802185
|
+
|
|
802186
|
+
|
|
801794
802187
|
|
|
801795
802188
|
|
|
801796
802189
|
|
|
@@ -802623,6 +803016,16 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802623
803016
|
*/
|
|
802624
803017
|
async createTokenFeeUpdateTxs(actualConfig, expectedConfig, tokenReaderParams) {
|
|
802625
803018
|
if (!expectedConfig.tokenFee) {
|
|
803019
|
+
if (actualConfig.tokenFee) {
|
|
803020
|
+
return [
|
|
803021
|
+
{
|
|
803022
|
+
annotation: 'Removing fee recipient...',
|
|
803023
|
+
chainId: this.chainId,
|
|
803024
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
803025
|
+
data: _hyperlane_xyz_core__WEBPACK_IMPORTED_MODULE_1__/* .TokenRouter__factory */ .NgW.createInterface().encodeFunctionData('setFeeRecipient(address)', [ethers__WEBPACK_IMPORTED_MODULE_21__.constants.AddressZero]),
|
|
803026
|
+
},
|
|
803027
|
+
];
|
|
803028
|
+
}
|
|
802626
803029
|
return [];
|
|
802627
803030
|
}
|
|
802628
803031
|
const routerAddress = this.args.addresses.deployedTokenRoute;
|
|
@@ -802670,7 +803073,21 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802670
803073
|
deployedFee: currentTokenFee.address,
|
|
802671
803074
|
},
|
|
802672
803075
|
}, this.contractVerifier);
|
|
802673
|
-
|
|
803076
|
+
// For CCR fee updates, forward the on-chain enrolled router keys as hints so the
|
|
803077
|
+
// reader can observe orphan feeContracts entries not present in the target config.
|
|
803078
|
+
// Without these hints, the removal loop in EvmTokenFeeModule.update() never sees
|
|
803079
|
+
// stale (dest, router) entries and the on-chain pointer stays wired.
|
|
803080
|
+
let effectiveTokenReaderParams = tokenReaderParams;
|
|
803081
|
+
if ((0,_types_js__WEBPACK_IMPORTED_MODULE_12__/* .isCrossCollateralTokenConfig */ .v3)(actualConfig) &&
|
|
803082
|
+
actualConfig.crossCollateralRouters &&
|
|
803083
|
+
resolvedTokenFee.type === _fee_types_js__WEBPACK_IMPORTED_MODULE_26__/* .TokenFeeType */ .cA.CrossCollateralRoutingFee) {
|
|
803084
|
+
const onchainRoutersByDomain = (0,_router_types_js__WEBPACK_IMPORTED_MODULE_17__/* .resolveRouterMapConfig */ .c0)(this.multiProvider, actualConfig.crossCollateralRouters);
|
|
803085
|
+
effectiveTokenReaderParams = {
|
|
803086
|
+
...tokenReaderParams,
|
|
803087
|
+
crossCollateralRouters: (0,_fee_crossCollateralUtils_js__WEBPACK_IMPORTED_MODULE_27__/* .mergeCrossCollateralRouters */ .wC)(tokenReaderParams?.crossCollateralRouters, onchainRoutersByDomain),
|
|
803088
|
+
};
|
|
803089
|
+
}
|
|
803090
|
+
const updateTransactions = await tokenFeeModule.update(resolvedTokenFee, effectiveTokenReaderParams);
|
|
802674
803091
|
const { deployedFee } = tokenFeeModule.serialize();
|
|
802675
803092
|
// Only call setFeeRecipient if the fee recipient address has changed
|
|
802676
803093
|
if (!(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .eqAddress */ .fv)(currentTokenFee.address, deployedFee)) {
|
|
@@ -802691,7 +803108,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802691
803108
|
* @returns Ethereum transaction that need to be executed to update the owner.
|
|
802692
803109
|
*/
|
|
802693
803110
|
createOwnershipUpdateTxs(actualConfig, expectedConfig) {
|
|
802694
|
-
return (0,
|
|
803111
|
+
return (0,_contracts_contracts_js__WEBPACK_IMPORTED_MODULE_28__/* .transferOwnershipTransactions */ .Yg)(this.multiProvider.getEvmChainId(this.args.chain), this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig, `${expectedConfig.type} Warp Route`);
|
|
802695
803112
|
}
|
|
802696
803113
|
/**
|
|
802697
803114
|
* Updates or deploys the ISM using the provided configuration.
|
|
@@ -802727,7 +803144,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802727
803144
|
(typeof onChainOwner === 'string' ? onChainOwner : undefined);
|
|
802728
803145
|
expectedIsm = (0,_utils_ism_js__WEBPACK_IMPORTED_MODULE_11__/* .setRateLimitedIsmRecipient */ .re)(expectedIsm, this.args.addresses.deployedTokenRoute, defaultOwner);
|
|
802729
803146
|
}
|
|
802730
|
-
const ismModule = new
|
|
803147
|
+
const ismModule = new _ism_EvmIsmModule_js__WEBPACK_IMPORTED_MODULE_29__/* .EvmIsmModule */ .a(this.multiProvider, {
|
|
802731
803148
|
chain: this.args.chain,
|
|
802732
803149
|
config: actualConfig.interchainSecurityModule,
|
|
802733
803150
|
addresses: {
|
|
@@ -802750,7 +803167,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802750
803167
|
*/
|
|
802751
803168
|
async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
|
|
802752
803169
|
const updateTransactions = [];
|
|
802753
|
-
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .assert */ .v)(expectedConfig.type !==
|
|
803170
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .assert */ .v)(expectedConfig.type !== _config_js__WEBPACK_IMPORTED_MODULE_30__/* .TokenType */ .ks.unknown, 'Cannot upgrade warp route with unknown token type');
|
|
802754
803171
|
// This should be impossible since we try catch the call to `PACKAGE_VERSION`
|
|
802755
803172
|
// in `EvmWarpRouteReader.fetchPackageVersion`
|
|
802756
803173
|
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .assert */ .v)(actualConfig.contractVersion, 'Actual contract version is undefined');
|
|
@@ -802758,7 +803175,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802758
803175
|
if (!expectedConfig.contractVersion) {
|
|
802759
803176
|
return [];
|
|
802760
803177
|
}
|
|
802761
|
-
const comparisonValue = (0,
|
|
803178
|
+
const comparisonValue = (0,compare_versions__WEBPACK_IMPORTED_MODULE_31__.compareVersions)(expectedConfig.contractVersion, actualConfig.contractVersion);
|
|
802762
803179
|
// Expected version is lower than actual version, no upgrade is possible
|
|
802763
803180
|
if (comparisonValue === -1) {
|
|
802764
803181
|
throw new Error(`Expected contract version ${expectedConfig.contractVersion} is lower than actual contract version ${actualConfig.contractVersion}`);
|
|
@@ -802773,13 +803190,13 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802773
803190
|
// Scale values are immutables baked into the implementation bytecode.
|
|
802774
803191
|
// Changing the effective scale during an upgrade would cause in-flight
|
|
802775
803192
|
// messages to be decoded with incorrect scaling.
|
|
802776
|
-
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .assert */ .v)((0,
|
|
803193
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_15__/* .assert */ .v)((0,_utils_decimals_js__WEBPACK_IMPORTED_MODULE_32__/* .scalesEqual */ .gm)(actualConfig.scale, expectedConfig.scale), `Scale change detected during upgrade. ` +
|
|
802777
803194
|
`Changing scale on an existing deployment may cause in-flight messages to be decoded incorrectly.`);
|
|
802778
803195
|
this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
|
|
802779
|
-
const deployer = new
|
|
803196
|
+
const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_33__/* .HypERC20Deployer */ .A7(this.multiProvider);
|
|
802780
803197
|
const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
|
|
802781
803198
|
const tokenType = expectedConfig.type;
|
|
802782
|
-
const implementation = await deployer.deployContractWithName(this.chainName, tokenType,
|
|
803199
|
+
const implementation = await deployer.deployContractWithName(this.chainName, tokenType, _contracts_js__WEBPACK_IMPORTED_MODULE_34__/* .hypERC20contracts */ .LW[tokenType], constructorArgs, undefined, false);
|
|
802783
803200
|
const provider = this.multiProvider.getProvider(this.domainId);
|
|
802784
803201
|
const proxyAddress = this.args.addresses.deployedTokenRoute;
|
|
802785
803202
|
const proxyAdminAddress = await (0,_deploy_proxy_js__WEBPACK_IMPORTED_MODULE_14__/* .proxyAdmin */ .Ey)(provider, proxyAddress);
|
|
@@ -802808,9 +803225,9 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802808
803225
|
// proxy upgrade. Always emit setMaxFeePpm in this case.
|
|
802809
803226
|
const crossingPpmBoundary = actualConfig.contractVersion &&
|
|
802810
803227
|
expectedConfig.contractVersion &&
|
|
802811
|
-
(0,
|
|
803228
|
+
(0,compare_versions__WEBPACK_IMPORTED_MODULE_31__.compareVersions)(actualConfig.contractVersion, _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_7__/* .CCTP_PPM_STORAGE_VERSION */ .EY) <
|
|
802812
803229
|
0 &&
|
|
802813
|
-
(0,
|
|
803230
|
+
(0,compare_versions__WEBPACK_IMPORTED_MODULE_31__.compareVersions)(expectedConfig.contractVersion, _EvmWarpRouteReader_js__WEBPACK_IMPORTED_MODULE_7__/* .CCTP_PPM_STORAGE_VERSION */ .EY) >= 0;
|
|
802814
803231
|
if (!crossingPpmBoundary && actualMaxFeeBps === expectedConfig.maxFeeBps) {
|
|
802815
803232
|
return [];
|
|
802816
803233
|
}
|
|
@@ -802835,7 +803252,7 @@ class EvmWarpModule extends _core_AbstractHyperlaneModule_js__WEBPACK_IMPORTED_M
|
|
|
802835
803252
|
static async create(params) {
|
|
802836
803253
|
const { chain, config, multiProvider, ccipContractCache, contractVerifier, proxyFactoryFactories, } = params;
|
|
802837
803254
|
const chainName = multiProvider.getChainName(chain);
|
|
802838
|
-
const deployer = new
|
|
803255
|
+
const deployer = new _deploy_js__WEBPACK_IMPORTED_MODULE_33__/* .HypERC20Deployer */ .A7(multiProvider);
|
|
802839
803256
|
const deployedContracts = await deployer.deployContracts(chainName, config);
|
|
802840
803257
|
const warpModule = new EvmWarpModule(multiProvider, {
|
|
802841
803258
|
addresses: {
|
|
@@ -803130,7 +803547,7 @@ class EvmWarpRouteReader extends EvmRouterReader/* EvmRouterReader */.V {
|
|
|
803130
803547
|
'interchainSecurityModule' in routerConfig) {
|
|
803131
803548
|
routerConfig.interchainSecurityModule = lib.constants.AddressZero;
|
|
803132
803549
|
}
|
|
803133
|
-
const predicateWrapper = await this.derivePredicateWrapperConfig(routerConfig.hook);
|
|
803550
|
+
const predicateWrapper = await this.derivePredicateWrapperConfig(routerConfig.hook, warpRouteAddress);
|
|
803134
803551
|
const derivedConfig = {
|
|
803135
803552
|
...routerConfig,
|
|
803136
803553
|
...tokenConfig,
|
|
@@ -803146,9 +803563,37 @@ class EvmWarpRouteReader extends EvmRouterReader/* EvmRouterReader */.V {
|
|
|
803146
803563
|
/**
|
|
803147
803564
|
* Searches the derived hook tree for a PredicateRouterWrapper and, if found,
|
|
803148
803565
|
* reads its on-chain config (registry, policyId, owner).
|
|
803566
|
+
*
|
|
803567
|
+
* EvmHookReader.preserveUnredeployable() stores PREDICATE sub-hooks as bare address
|
|
803568
|
+
* strings (to survive normalizeConfig and deploy's string branch). The sync
|
|
803569
|
+
* findPredicateAddressInHook() returns undefined for bare strings, so we fall back to
|
|
803570
|
+
* an on-chain hookType() probe on bare string sub-hooks of aggregation hooks.
|
|
803149
803571
|
*/
|
|
803150
|
-
async derivePredicateWrapperConfig(hook) {
|
|
803151
|
-
|
|
803572
|
+
async derivePredicateWrapperConfig(hook, warpRouteAddress) {
|
|
803573
|
+
let predicateAddress = this.findPredicateAddressInHook(hook);
|
|
803574
|
+
if (!predicateAddress &&
|
|
803575
|
+
typeof hook !== 'string' &&
|
|
803576
|
+
hook?.type === types/* HookType */.WD.AGGREGATION) {
|
|
803577
|
+
for (const sub of hook.hooks) {
|
|
803578
|
+
if (typeof sub !== 'string')
|
|
803579
|
+
continue;
|
|
803580
|
+
try {
|
|
803581
|
+
const candidate = dist/* PredicateRouterWrapper__factory */.sYb.connect(sub, this.provider);
|
|
803582
|
+
const [hookType, warpRoute] = await Promise.all([
|
|
803583
|
+
candidate.hookType(),
|
|
803584
|
+
candidate.warpRoute(),
|
|
803585
|
+
]);
|
|
803586
|
+
if (hookType === types/* OnchainHookType */.c0.PREDICATE_ROUTER_WRAPPER &&
|
|
803587
|
+
(0,addresses/* eqAddress */.fv)(warpRoute, warpRouteAddress)) {
|
|
803588
|
+
predicateAddress = sub;
|
|
803589
|
+
break;
|
|
803590
|
+
}
|
|
803591
|
+
}
|
|
803592
|
+
catch {
|
|
803593
|
+
// Not a PredicateRouterWrapper — continue
|
|
803594
|
+
}
|
|
803595
|
+
}
|
|
803596
|
+
}
|
|
803152
803597
|
if (!predicateAddress)
|
|
803153
803598
|
return undefined;
|
|
803154
803599
|
const wrapper = dist/* PredicateRouterWrapper__factory */.sYb.connect(predicateAddress, this.provider);
|
|
@@ -804887,6 +805332,7 @@ class TokenMetadata {
|
|
|
804887
805332
|
/* harmony export */ Zz: () => (/* binding */ PROTOCOL_TO_HYP_NATIVE_STANDARD),
|
|
804888
805333
|
/* harmony export */ _T: () => (/* binding */ tokenTypeToStandard),
|
|
804889
805334
|
/* harmony export */ c_: () => (/* binding */ LOCKBOX_STANDARDS),
|
|
805335
|
+
/* harmony export */ eB: () => (/* binding */ ERC4626_COLLATERAL_STANDARDS),
|
|
804890
805336
|
/* harmony export */ kK: () => (/* binding */ TOKEN_CROSS_COLLATERAL_STANDARDS),
|
|
804891
805337
|
/* harmony export */ ph: () => (/* binding */ TokenStandard),
|
|
804892
805338
|
/* harmony export */ ro: () => (/* binding */ TOKEN_STANDARD_TO_PROVIDER_TYPE)
|
|
@@ -805077,6 +805523,7 @@ const TOKEN_NFT_STANDARDS = [
|
|
|
805077
805523
|
const TOKEN_COLLATERALIZED_STANDARDS = [
|
|
805078
805524
|
TokenStandard.EvmHypCollateral,
|
|
805079
805525
|
TokenStandard.EvmHypOwnerCollateral,
|
|
805526
|
+
TokenStandard.EvmHypRebaseCollateral,
|
|
805080
805527
|
TokenStandard.EvmHypNative,
|
|
805081
805528
|
TokenStandard.SealevelHypCollateral,
|
|
805082
805529
|
TokenStandard.SealevelHypNative,
|
|
@@ -805089,6 +805536,8 @@ const TOKEN_COLLATERALIZED_STANDARDS = [
|
|
|
805089
805536
|
TokenStandard.AleoHypCollateral,
|
|
805090
805537
|
TokenStandard.TronHypNative,
|
|
805091
805538
|
TokenStandard.TronHypCollateral,
|
|
805539
|
+
TokenStandard.TronHypOwnerCollateral,
|
|
805540
|
+
TokenStandard.TronHypRebaseCollateral,
|
|
805092
805541
|
TokenStandard.TronHypXERC20Lockbox,
|
|
805093
805542
|
TokenStandard.TronHypVSXERC20Lockbox,
|
|
805094
805543
|
TokenStandard.RadixHypCollateral,
|
|
@@ -805119,6 +805568,12 @@ const LOCKBOX_STANDARDS = [
|
|
|
805119
805568
|
TokenStandard.TronHypXERC20Lockbox,
|
|
805120
805569
|
TokenStandard.TronHypVSXERC20Lockbox,
|
|
805121
805570
|
];
|
|
805571
|
+
const ERC4626_COLLATERAL_STANDARDS = [
|
|
805572
|
+
TokenStandard.EvmHypOwnerCollateral,
|
|
805573
|
+
TokenStandard.EvmHypRebaseCollateral,
|
|
805574
|
+
TokenStandard.TronHypOwnerCollateral,
|
|
805575
|
+
TokenStandard.TronHypRebaseCollateral,
|
|
805576
|
+
];
|
|
805122
805577
|
const MINT_LIMITED_STANDARDS = [
|
|
805123
805578
|
TokenStandard.EvmHypXERC20,
|
|
805124
805579
|
TokenStandard.EvmHypXERC20Lockbox,
|
|
@@ -806131,6 +806586,7 @@ __nccwpck_require__.d(__webpack_exports__, {
|
|
|
806131
806586
|
u$: () => (/* binding */ EvmHypCollateralAdapter),
|
|
806132
806587
|
OR: () => (/* binding */ EvmHypCollateralFiatAdapter),
|
|
806133
806588
|
uc: () => (/* binding */ EvmHypNativeAdapter),
|
|
806589
|
+
dv: () => (/* binding */ EvmHypOwnerCollateralAdapter),
|
|
806134
806590
|
aT: () => (/* binding */ EvmHypRebaseCollateralAdapter),
|
|
806135
806591
|
Qn: () => (/* binding */ EvmHypSyntheticAdapter),
|
|
806136
806592
|
kL: () => (/* binding */ EvmHypSyntheticRebaseAdapter),
|
|
@@ -806715,8 +807171,20 @@ class EvmHypRebaseCollateralAdapter extends BaseEvmHypCollateralAdapter {
|
|
|
806715
807171
|
async getBridgedSupply(options) {
|
|
806716
807172
|
const vault = dist/* ERC4626__factory */.RTL.connect(await this.collateralContract.vault(), this.getProvider());
|
|
806717
807173
|
const overrides = buildBlockTagOverrides(options?.blockTag);
|
|
806718
|
-
const
|
|
806719
|
-
return
|
|
807174
|
+
const assets = await vault.maxWithdraw(this.addresses.token, overrides);
|
|
807175
|
+
return assets.toBigInt();
|
|
807176
|
+
}
|
|
807177
|
+
}
|
|
807178
|
+
class EvmHypOwnerCollateralAdapter extends EvmHypRebaseCollateralAdapter {
|
|
807179
|
+
collateralContract;
|
|
807180
|
+
constructor(chainName, multiProvider, addresses) {
|
|
807181
|
+
super(chainName, multiProvider, addresses);
|
|
807182
|
+
this.collateralContract = dist/* HypERC4626OwnerCollateral__factory */.uhc.connect(addresses.token, this.getProvider());
|
|
807183
|
+
}
|
|
807184
|
+
async getBridgedSupply(options) {
|
|
807185
|
+
const overrides = buildBlockTagOverrides(options?.blockTag);
|
|
807186
|
+
const assetDeposited = await this.collateralContract.assetDeposited(overrides);
|
|
807187
|
+
return assetDeposited.toBigInt();
|
|
806720
807188
|
}
|
|
806721
807189
|
}
|
|
806722
807190
|
class EvmHypSyntheticRebaseAdapter extends EvmHypSyntheticAdapter {
|
|
@@ -812579,10 +813047,8 @@ function createEvmHypAdapter(multiProvider, token) {
|
|
|
812579
813047
|
return (0,_evmLikeHyp_js__WEBPACK_IMPORTED_MODULE_0__/* .createEvmLikeHypAdapter */ .a)(multiProvider, token, {
|
|
812580
813048
|
native: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmNative,
|
|
812581
813049
|
hypNative: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypNative,
|
|
812582
|
-
hypCollateral: [
|
|
812583
|
-
|
|
812584
|
-
_TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypOwnerCollateral,
|
|
812585
|
-
],
|
|
813050
|
+
hypCollateral: [_TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypCollateral],
|
|
813051
|
+
hypOwnerCollateral: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypOwnerCollateral,
|
|
812586
813052
|
hypCrossCollateralRouter: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypCrossCollateralRouter,
|
|
812587
813053
|
hypRebaseCollateral: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypRebaseCollateral,
|
|
812588
813054
|
hypCollateralFiat: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.EvmHypCollateralFiat,
|
|
@@ -812723,6 +813189,12 @@ function createEvmLikeHypAdapter(multiProvider, token, standards) {
|
|
|
812723
813189
|
token: addressOrDenom,
|
|
812724
813190
|
});
|
|
812725
813191
|
}
|
|
813192
|
+
if (standards.hypOwnerCollateral &&
|
|
813193
|
+
standard === standards.hypOwnerCollateral) {
|
|
813194
|
+
return new EvmTokenAdapter/* EvmHypOwnerCollateralAdapter */.dv(chainName, multiProvider, {
|
|
813195
|
+
token: addressOrDenom,
|
|
813196
|
+
});
|
|
813197
|
+
}
|
|
812726
813198
|
if (standards.hypCollateral.some((candidate) => candidate === standard)) {
|
|
812727
813199
|
return new EvmTokenAdapter/* EvmMovableCollateralAdapter */.vo(chainName, multiProvider, {
|
|
812728
813200
|
token: addressOrDenom,
|
|
@@ -813870,10 +814342,8 @@ function createTronHypAdapter(multiProvider, token) {
|
|
|
813870
814342
|
return (0,_evmLikeHyp_js__WEBPACK_IMPORTED_MODULE_0__/* .createEvmLikeHypAdapter */ .a)(multiProvider, token, {
|
|
813871
814343
|
native: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronNative,
|
|
813872
814344
|
hypNative: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypNative,
|
|
813873
|
-
hypCollateral: [
|
|
813874
|
-
|
|
813875
|
-
_TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypOwnerCollateral,
|
|
813876
|
-
],
|
|
814345
|
+
hypCollateral: [_TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypCollateral],
|
|
814346
|
+
hypOwnerCollateral: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypOwnerCollateral,
|
|
813877
814347
|
hypCrossCollateralRouter: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypCrossCollateralRouter,
|
|
813878
814348
|
hypRebaseCollateral: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypRebaseCollateral,
|
|
813879
814349
|
hypCollateralFiat: _TokenStandard_js__WEBPACK_IMPORTED_MODULE_1__/* .TokenStandard */ .ph.TronHypCollateralFiat,
|
|
@@ -815403,7 +815873,7 @@ const PROTOCOL_TO_DEFAULT_NATIVE_TOKEN = {
|
|
|
815403
815873
|
},
|
|
815404
815874
|
[_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_0__/* .ProtocolType */ .Hb.Aleo]: {
|
|
815405
815875
|
decimals: 6,
|
|
815406
|
-
denom: '
|
|
815876
|
+
denom: 'credits',
|
|
815407
815877
|
name: 'Aleo',
|
|
815408
815878
|
symbol: 'ALEO',
|
|
815409
815879
|
},
|
|
@@ -818886,9 +819356,11 @@ class WarpCore {
|
|
|
818886
819356
|
return originToken.amount(0);
|
|
818887
819357
|
}
|
|
818888
819358
|
async getTokenCollateral(token) {
|
|
818889
|
-
if (_token_TokenStandard_js__WEBPACK_IMPORTED_MODULE_13__/* .LOCKBOX_STANDARDS */ .c_.includes(token.standard)
|
|
818890
|
-
|
|
819359
|
+
if (_token_TokenStandard_js__WEBPACK_IMPORTED_MODULE_13__/* .LOCKBOX_STANDARDS */ .c_.includes(token.standard) ||
|
|
819360
|
+
_token_TokenStandard_js__WEBPACK_IMPORTED_MODULE_13__/* .ERC4626_COLLATERAL_STANDARDS */ .eB.includes(token.standard)) {
|
|
819361
|
+
const adapter = token.getHypAdapter(this.multiProvider);
|
|
818891
819362
|
const tokenCollateral = await adapter.getBridgedSupply();
|
|
819363
|
+
(0,_hyperlane_xyz_utils__WEBPACK_IMPORTED_MODULE_4__/* .assert */ .v)(tokenCollateral !== undefined, `getBridgedSupply returned undefined for ${token.symbol} on ${token.chainName}`);
|
|
818892
819364
|
return tokenCollateral;
|
|
818893
819365
|
}
|
|
818894
819366
|
else {
|
|
@@ -907327,7 +907799,7 @@ module.exports = /*#__PURE__*/JSON.parse('[{"type":"function","name":"proveL2Lea
|
|
|
907327
907799
|
/***/ 99468:
|
|
907328
907800
|
/***/ ((module) => {
|
|
907329
907801
|
|
|
907330
|
-
module.exports = {"rE":"
|
|
907802
|
+
module.exports = {"rE":"35.0.0"};
|
|
907331
907803
|
|
|
907332
907804
|
/***/ })
|
|
907333
907805
|
|