@layerzerolabs/lz-utilities 3.0.142 → 3.0.143
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/CHANGELOG.md +8 -0
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -251,7 +251,7 @@ function getSuiAccountFromMnemonic(mnemonic, path3 = "m/44'/784'/0'/0'/0'") {
|
|
|
251
251
|
address: signer.toSuiAddress()
|
|
252
252
|
};
|
|
253
253
|
}
|
|
254
|
-
function
|
|
254
|
+
function getIotaL1AccountFromMnemonic(mnemonic, path3 = "m/44'/4218'/0'/0'/0'") {
|
|
255
255
|
const signer = ed25519$1.Ed25519Keypair.deriveKeypair(mnemonic, path3);
|
|
256
256
|
return {
|
|
257
257
|
mnemonic,
|
|
@@ -283,8 +283,8 @@ async function getKeypairFromMnemonic(chainType, mnemonic, path3) {
|
|
|
283
283
|
return getTonAccountFromMnemonic(mnemonic, path3);
|
|
284
284
|
case lzDefinitions.ChainType.SUI:
|
|
285
285
|
return getSuiAccountFromMnemonic(mnemonic, path3);
|
|
286
|
-
case lzDefinitions.ChainType.
|
|
287
|
-
return
|
|
286
|
+
case lzDefinitions.ChainType.IOTAL1:
|
|
287
|
+
return getIotaL1AccountFromMnemonic(mnemonic, path3);
|
|
288
288
|
default:
|
|
289
289
|
throw new Error(`Unsupported chain: ${chainType}`);
|
|
290
290
|
}
|
|
@@ -800,7 +800,7 @@ exports.getBIP044Path = getBIP044Path;
|
|
|
800
800
|
exports.getCircularReplacer = getCircularReplacer;
|
|
801
801
|
exports.getEvmAccountFromMnemonic = getEvmAccountFromMnemonic;
|
|
802
802
|
exports.getInitiaAccountFromMnemonic = getInitiaAccountFromMnemonic;
|
|
803
|
-
exports.
|
|
803
|
+
exports.getIotaL1AccountFromMnemonic = getIotaL1AccountFromMnemonic;
|
|
804
804
|
exports.getKeypairFromMnemonic = getKeypairFromMnemonic;
|
|
805
805
|
exports.getLogger = getLogger;
|
|
806
806
|
exports.getProjectPackageManager = getProjectPackageManager;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pad.ts","../src/types.ts","../src/format.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/assert.ts","../src/promise.ts","../src/array.ts","../src/enum.ts","../src/generic.ts","../src/findup.ts","../src/loader.ts","../src/memoize.ts","../src/combinatorial.ts","../src/index.ts"],"names":["ChainType","path","ethers","aptos","bip39","MnemonicKey","INIT_COIN_TYPE","Keypair","ed25519HdKey","Ed25519Keypair","IotaEd25519Keypair","mnemonicToHDSeed","deriveEd25519Path","keyPairFromSeed","WalletContractV4","pc","dayjs","logger","pino","level","networkToChain","isNetworkEndpointIdSupported","networkToEndpointId","dirname","getStackTrace","getCaller","module","fs","require","memoizee","http"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCa,IAAA,2BAAA,GAAN,cAA0C,KAAM,CAAA;AAAA,EAEnD,WAAY,CAAA,EAAE,IAAM,EAAA,UAAA,EAAY,MAAqE,EAAA;AACjG,IAAA,KAAA;AAAA,MACI,GAAG,IAAK,CAAA,MAAA,CAAO,CAAC,CAAA,CAAE,aAAa,CAAA,EAAG,IAC7B,CAAA,KAAA,CAAM,CAAC,CACP,CAAA,WAAA,EAAa,CAAU,OAAA,EAAA,IAAI,2BAA2B,UAAU,CAAA,CAAA;AAAA,KACzE;AANJ,IAAA,IAAA,CAAS,IAAO,GAAA,6BAAA;AAAA;AAQpB;AAYO,SAAS,MAAA,CACZ,YACA,EAAE,GAAA,EAAK,OAAO,EAAG,EAAA,GAAgB,EACb,EAAA;AACpB,EAAI,IAAA,OAAO,eAAe,QAAU,EAAA;AAChC,IAAA,OAAO,MAAO,CAAA,UAAA,EAAY,EAAE,GAAA,EAAK,MAAM,CAAA;AAAA;AAE3C,EAAA,OAAO,QAAS,CAAA,UAAA,EAAY,EAAE,GAAA,EAAK,MAAM,CAAA;AAC7C;AAYA,SAAS,MAAA,CAAO,KAAU,EAAE,GAAA,EAAK,OAAO,EAAG,EAAA,GAAgB,EAAS,EAAA;AAChE,EAAI,IAAA,IAAA,KAAS,MAAa,OAAA,GAAA;AAC1B,EAAA,MAAM,KAAQ,GAAA,GAAA,CAAI,OAAQ,CAAA,IAAA,EAAM,EAAE,CAAA;AAClC,EAAI,IAAA,KAAA,CAAM,SAAS,IAAO,GAAA,CAAA;AACtB,IAAA,MAAM,IAAI,2BAA4B,CAAA;AAAA,MAClC,IAAM,EAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MAChC,UAAY,EAAA,IAAA;AAAA,MACZ,IAAM,EAAA;AAAA,KACT,CAAA;AAEL,EAAO,OAAA,CAAA,EAAA,EAAK,KAAM,CAAA,GAAA,KAAQ,OAAU,GAAA,QAAA,GAAW,UAAU,CAAE,CAAA,IAAA,GAAO,CAAG,EAAA,GAAG,CAAC,CAAA,CAAA;AAC7E;AAYA,SAAS,QAAA,CAAS,OAAc,EAAE,GAAA,EAAK,OAAO,EAAG,EAAA,GAAgB,EAAW,EAAA;AACxE,EAAI,IAAA,IAAA,KAAS,MAAa,OAAA,KAAA;AAC1B,EAAA,IAAI,MAAM,MAAS,GAAA,IAAA;AACf,IAAA,MAAM,IAAI,2BAA4B,CAAA;AAAA,MAClC,MAAM,KAAM,CAAA,MAAA;AAAA,MACZ,UAAY,EAAA,IAAA;AAAA,MACZ,IAAM,EAAA;AAAA,KACT,CAAA;AACL,EAAM,MAAA,WAAA,GAAc,IAAI,UAAA,CAAW,IAAI,CAAA;AACvC,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,IAAA,EAAM,CAAK,EAAA,EAAA;AAC3B,IAAA,MAAM,SAAS,GAAQ,KAAA,OAAA;AACvB,IAAA,WAAA,CAAY,MAAS,GAAA,CAAA,GAAI,IAAO,GAAA,CAAA,GAAI,CAAC,CAAA,GAAI,KAAM,CAAA,MAAA,GAAS,CAAI,GAAA,KAAA,CAAM,MAAS,GAAA,CAAA,GAAI,CAAC,CAAA;AAAA;AAEpF,EAAO,OAAA,WAAA;AACX;;;AC/FO,SAAS,MAAM,KAA6B,EAAA;AAC/C,EAAO,OAAA,mBAAA,CAAoB,KAAK,KAAK,CAAA;AACzC;AAOO,SAAS,OAAO,KAA8B,EAAA;AACjD,EAAO,OAAA,kBAAA,CAAmB,KAAK,KAAK,CAAA;AACxC;;;ACjBO,SAAS,WAAW,KAA2B,EAAA;AAClD,EAAA,OAAO,OAAO,OAAQ,CAAA,KAAK,CAAC,CAAE,CAAA,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACpD;AAQO,SAAS,WAAW,GAAyB,EAAA;AAChD,EAAA,OAAO,SAAS,GAAG,CAAA;AACvB;AAOO,SAAS,OAAO,GAAqB,EAAA;AACxC,EAAO,OAAA,GAAA,CAAI,OAAQ,CAAA,MAAA,EAAQ,EAAE,CAAA;AACjC;AAQO,SAAS,SAAS,GAAkB,EAAA;AACvC,EAAI,IAAA,CAAC,KAAM,CAAA,GAAG,CAAG,EAAA;AACb,IAAM,MAAA,IAAI,MAAM,oBAAoB,CAAA;AAAA;AAExC,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAG,CAAA;AACxB,EAAM,MAAA,MAAA,GAAS,KAAK,KAAK,CAAA,CAAA;AACzB,EAAO,OAAA,MAAA;AACX;AAQO,SAAS,YAAY,KAAwB,EAAA;AAChD,EAAA,OAAO,MAAM,KAAK,CAAA;AACtB;AAEA,SAAS,UAAU,KAAmE,EAAA;AAClF,EAAA,IAAI,iBAAiB,UAAY,EAAA;AAC7B,IAAO,OAAA,KAAA;AAAA;AAGX,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAI,IAAA,KAAA,CAAM,KAAM,CAAA,mBAAmB,CAAG,EAAA;AAClC,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,EAAQ,EAAE,CAAA;AACpC,MAAA,MAAM,MAAM,GAAI,CAAA,MAAA,GAAS,CAAM,GAAA,CAAA,GAAA,CAAI,SAAS,CAAK,IAAA,CAAA;AACjD,MAAO,OAAA,UAAA,CAAW,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,GAAA,CAAI,SAAS,GAAK,EAAA,GAAG,CAAG,EAAA,KAAK,CAAC,CAAA;AAAA;AAErE,IAAM,MAAA,IAAI,MAAM,oBAAoB,CAAA;AAAA;AAGxC,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAA,IAAI,QAAQ,CAAG,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,6BAA6B,CAAA;AAAA;AAEjD,IAAA,MAAM,YAAY,EAAC;AACnB,IAAA,OAAO,QAAQ,CAAG,EAAA;AACd,MAAU,SAAA,CAAA,IAAA,CAAK,QAAQ,GAAI,CAAA;AAC3B,MAAU,KAAA,KAAA,CAAA;AAAA;AAEd,IAAA,OAAO,IAAI,UAAA,CAAW,SAAU,CAAA,OAAA,EAAS,CAAA;AAAA;AAG7C,EAAA,IAAI,OAAO,MAAW,KAAA,WAAA,IAAe,MAAO,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACzD,IAAO,OAAA,IAAI,WAAW,KAAK,CAAA;AAAA;AAG/B,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC3B,IAAM,MAAA,GAAA,GAAM,KAAM,CAAA,QAAA,CAAS,EAAE,CAAA;AAC7B,IAAA,OAAO,UAAU,GAAG,CAAA;AAAA;AAGxB,EAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA;AACtC;AASO,SAAS,QAAA,CAAS,OAAuD,IAA2B,EAAA;AACvG,EAAM,MAAA,KAAA,GAAQ,UAAU,KAAK,CAAA;AAC7B,EAAA,IAAI,SAAS,KAAW,CAAA,EAAA;AACpB,IAAO,OAAA,KAAA;AAAA;AAEX,EAAA,OAAO,MAAO,CAAA,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA;AACjC;AAQO,SAAS,QAAQ,KAA4D,EAAA;AAChF,EAAA,IAAI,OAAO,KAAU,KAAA,QAAA,IAAY,mBAAoB,CAAA,IAAA,CAAK,KAAK,CAAG,EAAA;AAC9D,IAAM,MAAA,MAAA,GAAS,IAAO,GAAA,MAAA,CAAO,KAAK,CAAA;AAClC,IAAO,OAAA,MAAA;AAAA;AAGX,EAAM,MAAA,KAAA,GAAQ,SAAS,KAAK,CAAA;AAC5B,EAAA,MAAM,MAAM,MAAO,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,KAAK,CAAA;AAC7C,EAAA,OAAO,SAAS,GAAG,CAAA;AACvB;;;AC3EO,SAAS,aAAc,CAAA,SAAA,EAAsB,OAAiB,EAAA,MAAA,EAAgB,KAAuB,EAAA;AAaxG,EAAA,QAAQ,SAAW;AAAA,IACf,KAAKA,uBAAU,CAAA,GAAA;AAEX,MAAA,OAAO,CAAa,UAAA,EAAA,OAAO,CAAK,EAAA,EAAA,MAAM,IAAI,KAAK,CAAA,CAAA;AAAA,IACnD,KAAKA,uBAAU,CAAA,KAAA;AAEX,MAAA,OAAO,CAAc,WAAA,EAAA,OAAO,CAAK,EAAA,EAAA,MAAM,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,IACrD,KAAKA,uBAAU,CAAA,MAAA;AAEX,MAAO,OAAA,CAAA,WAAA,EAAc,OAAO,CAAA,EAAA,EAAK,MAAM,CAAA,CAAA,CAAA;AAAA,IAC3C,KAAKA,uBAAU,CAAA,GAAA;AAEX,MAAA,OAAO,CAAc,WAAA,EAAA,OAAO,CAAK,EAAA,EAAA,MAAM,IAAI,KAAK,CAAA,CAAA;AAAA,IACpD;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAAsB,mBAAA,EAAA,SAAS,CAAE,CAAA,CAAA;AAAA;AAE7D;AASO,SAAS,yBAAA,CAA0B,QAAkBC,EAAAA,KAAAA,GAAO,kBAAqC,EAAA;AACpG,EAAA,MAAM,MAAS,GAAAC,aAAA,CAAO,MAAO,CAAA,YAAA,CAAa,UAAUD,KAAI,CAAA;AACxD,EAAO,OAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAAA,EAAAA,KAAAA;AAAA,IACA,YAAY,MAAO,CAAA,UAAA;AAAA,IACnB,SAAS,MAAO,CAAA;AAAA,GACpB;AACJ;AAUO,SAAS,2BAAA,CAA4B,QAAkBA,EAAAA,KAAAA,GAAO,qBAAwC,EAAA;AAEzG,EAAA,IAAI,CAAOE,gBAAA,CAAA,YAAA,CAAa,WAAYF,CAAAA,KAAI,CAAG,EAAA;AACvC,IAAA,MAAM,IAAI,KAAA,CAAM,CAA4BA,yBAAAA,EAAAA,KAAI,CAAE,CAAA,CAAA;AAAA;AAEtD,EAAA,MAAM,kBAAqB,GAAA,QAAA,CACtB,IAAK,EAAA,CACL,MAAM,KAAK,CAAA,CACX,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,WAAA,EAAa,CAAA,CAChC,KAAK,GAAG,CAAA;AACb,EAAA;AACI,IAAM,MAAA,EAAE,GAAI,EAAA,GAAUE,gBAAWF,CAAAA,UAAAA,CAAAA,KAAAA,EAAM,MAAO,CAAA,OAAA,CAAcG,gBAAmB,CAAA,kBAAA,CAAA,kBAAkB,CAAC,CAAC,CAAC,CAAA;AACpG,IAAM,MAAA,OAAA,GAAU,IAAUD,gBAAa,CAAA,YAAA,CAAA,IAAI,WAAW,GAAG,CAAC,EAAE,kBAAmB,EAAA;AAC/E,IAAO,OAAA;AAAA,MACH,QAAA;AAAA,MACA,IAAAF,EAAAA,KAAAA;AAAA,MACA,YAAY,OAAQ,CAAA,aAAA;AAAA,MACpB,SAAS,OAAQ,CAAA;AAAA,KACrB;AAAA;AAER;AASO,SAAS,4BAAA,CAA6B,QAAkBA,EAAAA,KAAAA,GAAO,mBAAsC,EAAA;AACxG,EAAA,MAAM,CAAC,CAAG,EAAA,QAAA,EAAU,SAAS,EAAI,EAAA,KAAK,IAAIA,KAAK,CAAA,KAAA,CAAM,MAAM,CAAG,EAAA,GAAA,CAAI,MAAM,CAAK,IAAA,CAAC,IAAI,GAAK,EAAA,CAAA,EAAG,GAAG,CAAC,CAAA;AAC9F,EAAA,MAAM,kBAAqB,GAAA,QAAA,CACtB,IAAK,EAAA,CACL,MAAM,KAAK,CAAA,CACX,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,WAAA,EAAa,CAAA,CAChC,KAAK,GAAG,CAAA;AACb,EAAM,MAAA,GAAA,GAAM,IAAII,qBAAY,CAAA;AAAA,IACxB,QAAU,EAAA,kBAAA;AAAA,IACV,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAK,QAAa,KAAAC;AAAA,GACrB,CAAA;AACD,EAAA;AACI,IAAO,OAAA;AAAA,MACH,QAAA;AAAA,MACA,IAAAL,EAAAA,KAAAA;AAAA,MACA,UAAY,EAAA,GAAA,CAAI,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA,MACzC,SAAS,GAAI,CAAA;AAAA,KACjB;AAAA;AAER;AASO,SAAS,4BAAA,CAA6B,QAAkBA,EAAAA,KAAAA,GAAO,kBAAqC,EAAA;AACvG,EAAM,MAAA,IAAA,GAAaG,gBAAmB,CAAA,kBAAA,CAAA,QAAA,EAAU,EAAE,CAAA;AAClD,EAAM,MAAA,OAAA,GAAUG,eAAQ,CAAA,QAAA,CAAsBC,uBAAWP,CAAAA,UAAAA,CAAAA,KAAAA,EAAM,KAAK,QAAS,CAAA,KAAK,CAAC,CAAA,CAAE,GAAG,CAAA;AACxF,EAAO,OAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAAA,EAAAA,KAAAA;AAAA,IACA,UAAY,EAAAC,aAAA,CAAO,KAAM,CAAA,OAAA,CAAQ,QAAQ,SAAS,CAAA;AAAA,IAClD,OAAA,EAAS,OAAQ,CAAA,SAAA,CAAU,QAAS;AAAA,GACxC;AACJ;AAEO,SAAS,yBAAA,CAA0B,QAAkBD,EAAAA,KAAAA,GAAO,qBAAwC,EAAA;AACvG,EAAA,MAAM,MAAS,GAAAQ,sBAAA,CAAe,aAAc,CAAA,QAAA,EAAUR,KAAI,CAAA;AAC1D,EAAO,OAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAAA,EAAAA,KAAAA;AAAA,IACA,UAAA,EAAY,OAAO,YAAa,EAAA;AAAA,IAChC,OAAA,EAAS,OAAO,YAAa;AAAA,GACjC;AACJ;AAEO,SAAS,8BAAA,CAA+B,QAAkBA,EAAAA,KAAAA,GAAO,sBAAyC,EAAA;AAC7G,EAAA,MAAM,MAAS,GAAAS,wBAAA,CAAmB,aAAc,CAAA,QAAA,EAAUT,KAAI,CAAA;AAC9D,EAAO,OAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAAA,EAAAA,KAAAA;AAAA,IACA,UAAA,EAAY,OAAO,YAAa,EAAA;AAAA,IAChC,OAAA,EAAS,OAAO,aAAc;AAAA,GAClC;AACJ;AAUA,eAAsB,yBAClB,CAAA,QAAA,EACAA,KAAO,GAAA,qBAAA,EACP,YAAY,CACY,EAAA;AACxB,EAAM,MAAA,EAAE,QAAQ,OAAQ,EAAA,GAAI,MAAM,wBAAyB,CAAA,QAAA,EAAUA,OAAM,SAAS,CAAA;AACpF,EAAO,OAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAAA,EAAAA,KAAAA;AAAA,IACA,UAAY,EAAAC,aAAA,CAAO,KAAM,CAAA,OAAA,CAAQ,QAAQ,SAAS,CAAA;AAAA,IAClD,OAAA,EAAS,OAAO,OAAQ,CAAA,QAAA,CAAS,EAAE,UAAY,EAAA,KAAA,EAAO,OAAS,EAAA,IAAA,EAAM;AAAA,GACzE;AACJ;AAWA,eAAsB,sBAAA,CAClB,SACA,EAAA,QAAA,EACAD,KACwB,EAAA;AACxB,EAAA,QAAQ,SAAW;AAAA,IACf,KAAKD,uBAAU,CAAA,GAAA;AACX,MAAO,OAAA,yBAAA,CAA0B,UAAUC,KAAI,CAAA;AAAA,IACnD,KAAKD,uBAAU,CAAA,KAAA;AACX,MAAO,OAAA,2BAAA,CAA4B,UAAUC,KAAI,CAAA;AAAA,IACrD,KAAKD,uBAAU,CAAA,MAAA;AACX,MAAO,OAAA,4BAAA,CAA6B,UAAUC,KAAI,CAAA;AAAA,IACtD,KAAKD,uBAAU,CAAA,MAAA;AACX,MAAO,OAAA,4BAAA,CAA6B,UAAUC,KAAI,CAAA;AAAA,IACtD,KAAKD,uBAAU,CAAA,GAAA;AACX,MAAO,OAAA,yBAAA,CAA0B,UAAUC,KAAI,CAAA;AAAA,IACnD,KAAKD,uBAAU,CAAA,GAAA;AACX,MAAO,OAAA,yBAAA,CAA0B,UAAUC,KAAI,CAAA;AAAA,IACnD,KAAKD,uBAAU,CAAA,QAAA;AACX,MAAO,OAAA,8BAAA,CAA+B,UAAUC,KAAI,CAAA;AAAA,IACxD;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAAsB,mBAAA,EAAA,SAAS,CAAE,CAAA,CAAA;AAAA;AAE7D;AAUA,eAAsB,wBAClB,CAAA,QAAA,EACAA,KAAO,GAAA,qBAAA,EACP,YAAY,CAC2C,EAAA;AACvD,EAAA,MAAM,OAAe,MAAMU,uBAAA,CAAiB,QAAS,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AAC/D,EAAM,MAAA,OAAA,GAAoB,YAAYV,KAAI,CAAA;AAC1C,EAAA,MAAM,WAAsB,GAAA,MAAMW,wBAAkB,CAAA,IAAA,EAAM,OAAO,CAAA;AACjE,EAAM,MAAA,OAAA,GAAmBC,uBAAgB,WAAW,CAAA;AACpD,EAAO,OAAA;AAAA,IACH,MAAA,EAAQC,qBAAiB,MAAO,CAAA,EAAE,WAAW,OAAQ,CAAA,SAAA,EAAW,WAAW,CAAA;AAAA,IAC3E;AAAA,GACJ;AACJ;AAUA,SAAS,YAAYb,KAAwB,EAAA;AACzC,EAAA,IAAI,CAAC,SAAA,CAAU,IAAKA,CAAAA,KAAI,CAAG,EAAA;AACvB,IAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA;AAAA;AAErD,EAAA,MAAM,QAAQA,KAAK,CAAA,OAAA,CAAQ,aAAa,EAAE,CAAA,CAAE,MAAM,GAAG,CAAA;AACrD,EAAM,MAAA,GAAA,GAAgB,KAAc,CAAA,KAAA,CAAM,MAAM,CAAA;AAChD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACnC,IAAA,MAAM,GAAM,GAAA,YAAA,CAAa,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,IAAA,IAAI,QAAQ,IAAM,EAAA;AACd,MAAM,MAAA,IAAI,MAAM,eAAe,CAAA;AAAA;AAEnC,IAAA,GAAA,CAAI,CAAC,CAAI,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,GAAG,EAAE,CAAA;AAE5B,IAAI,IAAA,GAAA,CAAI,CAAC,CAAA,IAAK,UAAY,EAAA;AACtB,MAAM,MAAA,IAAI,MAAM,qBAAqB,CAAA;AAAA;AACzC;AAEJ,EAAO,OAAA,GAAA;AACX;AC1SA,IAAI,MAAkC,GAAA,KAAA,CAAA;AAStC,SAAS,aAAoC,GAAA;AACzC,EAAA,MAAM,WAAW,KAAM,CAAA,eAAA;AACvB,EAAA,KAAA,CAAM,eAAkB,GAAA,QAAA;AACxB,EAAM,MAAA,MAAA,GAAS,IAAI,KAAA,EAAQ,CAAA,KAAA;AAC3B,EAAA,KAAA,CAAM,eAAkB,GAAA,QAAA;AACxB,EAAO,OAAA,MAAA;AACX;AAQO,SAAS,mBAAgE,GAAA;AAC5E,EAAA,MAAM,YAAuB,EAAC;AAC9B,EAAO,OAAA,SAAyB,MAAc,KAAgB,EAAA;AAC1D,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,IAAM,EAAA;AAC7C,MAAO,OAAA,KAAA;AAAA;AAIX,IAAA,OAAO,UAAU,MAAS,GAAA,CAAA,IAAK,UAAU,EAAG,CAAA,CAAA,CAAE,MAAM,IAAM,EAAA;AACtD,MAAA,SAAA,CAAU,GAAI,EAAA;AAAA;AAElB,IAAI,IAAA,SAAA,CAAU,QAAS,CAAA,KAAK,CAAG,EAAA;AAC3B,MAAO,OAAA,YAAA;AAAA;AAEX,IAAA,SAAA,CAAU,KAAK,KAAK,CAAA;AACpB,IAAO,OAAA,KAAA;AAAA,GACX;AACJ;AAQA,SAAS,kBAAkB,IAAsB,EAAA;AAC7C,EAAA,KAAA,MAAW,OAAW,IAAA,CAAC,oBAAsB,EAAA,mBAAmB,CAAG,EAAA;AAC/D,IAAM,MAAA,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,OAAO,CAAA;AAC5B,IAAA,IAAI,MAAM,IAAM,EAAA;AACZ,MAAA;AAAA;AAEJ,IAAM,MAAA,GAAG,YAAY,CAAI,GAAA,CAAA;AACzB,IAAO,OAAA,YAAA;AAAA;AAEX,EAAO,OAAA,WAAA;AACX;AAEA,SAAS,UAAU,OAAyB,EAAA;AACxC,EAAM,MAAA,KAAA,GAAQ,eAAmB,IAAA,EAAA;AAEjC,EAAM,MAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,IAAI,CAAA;AAEnC,EAAA,MAAM,KACF,GAAA,UAAA,CAAW,SAAU,CAAA,CAAC,IAAS,KAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,GAC5B,CAAI,GAAA,CAAA;AAET,EAAA,IAAI,QAAW,GAAA,WAAA;AACf,EAAI,IAAA,UAAA,CAAW,SAAS,KAAO,EAAA;AAC3B,IAAM,MAAA,IAAA,GAAO,WAAW,KAAK,CAAA;AAC7B,IAAA,QAAA,GAAW,kBAAkB,IAAI,CAAA;AAAA;AAErC,EAAO,OAAA,QAAA;AACX;AAOO,SAAS,WAAW,KAAqB,EAAA;AAC5C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACT,IAAA,MAAA,GAAS,aAAa,KAAK,CAAA;AAAA;AAEnC;AAGA,IAAM,WAA0D,GAAA;AAAA,EAC5D,OAAOc,mBAAG,CAAA,KAAA;AAAA,EACV,OAAOA,mBAAG,CAAA,KAAA;AAAA,EACV,MAAMA,mBAAG,CAAA,KAAA;AAAA,EACT,MAAMA,mBAAG,CAAA,MAAA;AAAA,EACT,OAAOA,mBAAG,CAAA,GAAA;AAAA,EACV,OAAOA,mBAAG,CAAA;AACd,CAAA;AAGA,IAAM,YAAe,GAAA;AAAA,EACjB,KAAA,EAAO,CAAC,GAAsB,KAAA;AAC1B,IAAI,IAAA;AACA,MAAM,MAAA,YAAA,GAAe,CAAC,MAAmB,KAAA;AACrC,QAAI,IAAA,OAAO,YAAY,WAAa,EAAA;AAChC,UAAQ,OAAA,CAAA,MAAA,CAAO,KAAM,CAAA,MAAA,GAAS,IAAI,CAAA;AAAA,SAC/B,MAAA;AACH,UAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA;AACtB,OACJ;AACA,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAC7B,MAAA,MAAM,EAAE,KAAA,EAAO,GAAK,EAAA,OAAA,EAAS,MAAS,GAAA,MAAA;AAEtC,MAAM,MAAA,OAAA,GAAoB,OAAQ,CAAA,KAAA,CAAM,UAAU,CAAA;AAElD,MAAA,MAAM,aAAgB,GAAAC,sBAAA,CAAM,IAAI,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAG9D,MAAA,MAAM,OAAU,GAAA,WAAA,CAAY,KAAK,CAAA,IAAKD,mBAAG,CAAA,KAAA;AAEzC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AACxB,QAAa,YAAA,CAAA,OAAA,CAAQ,IAAI,aAAa,CAAA,GAAA,EAAM,KAAK,CAAK,EAAA,EAAA,MAAM,EAAE,CAAC,CAAA;AAAA,OAClE,CAAA;AAAA,aACI,KAAO,EAAA;AACZ,MAAQ,OAAA,CAAA,KAAA,CAAM,0BAA0B,GAAG,CAAA;AAAA;AAC/C;AAER,CAAA;AAQO,SAAS,aAAa,KAA4B,EAAA;AACrD,EAAA,MAAME,OAAS,GAAAC,SAAA;AAAA,IACX;AAAA,MACI,KAAA;AAAA,MACA,IAAM,EAAA,KAAA,CAAA;AAAA;AAAA;AAAA,MAGN,UAAY,EAAA;AAAA,QACR,KAAA,CAAM,YAAY,WAAa,EAAA;AAC3B,UAAA,OAAO,EAAE,KAAA,EAAO,UAAW,CAAA,WAAA,IAAe,WAAyB,EAAA;AAAA;AACvE,OACJ;AAAA,MACA,KAAO,EAAA;AAAA,QACH,SAAA,CAAU,SAAW,EAAA,MAAA,EAAQC,MAAO,EAAA;AAChC,UAAA,MAAM,CAAC,GAAA,EAAK,GAAG,IAAI,CAAI,GAAA,SAAA;AACvB,UAAA,IAAI,MAAS,GAAA,GAAA;AACb,UAAA,IAAI,MAAS,GAAA,EAAA;AACb,UAAA,IAAIA,UAAS,EAAI,EAAA;AACb,YAAA,MAAA,GAAS,UAAU,eAAe,CAAA;AAClC,YAAS,MAAA,GAAA,CAAA,EAAG,MAAM,CAAA,QAAA,EAAW,GAAG,CAAA,CAAA,CAAA;AAAA;AAGpC,UAAA,MAAA,CAAO,MAAM,IAAM,EAAA,CAAC,QAAQ,GAAG,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEhD;AACJ,KACJ;AAAA,IACA;AAAA,GACJ;AACA,EAAOF,OAAAA,OAAAA;AACX;AAQO,SAAS,SAAoB,GAAA;AAChC,EAAW,UAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,IAAU,MAAM,CAAA;AACvC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACT,IAAM,MAAA,IAAI,MAAM,2BAA2B,CAAA;AAAA;AAE/C,EAAO,OAAA,MAAA;AACX;AAMA,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,MAAQ,EAAA;ACzI9B,SAAS,cAAA,CACZ,WACA,EAAA,aAAA,EACA,OACU,EAAA;AACV,EAAA,MAAM,MAAS,GAAA,iBAAA,CAAkB,WAAa,EAAA,aAAA,EAAe,OAAO,CAAA;AACpE,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACtB,IAAM,MAAA,IAAI,MAAM,CAAyB,sBAAA,EAAA,aAAa,YAAY,IAAK,CAAA,SAAA,CAAU,OAAO,CAAC,CAAE,CAAA,CAAA;AAAA;AAE/F,EAAO,OAAA,MAAA;AACX;AAcO,SAAS,iBAAA,CACZ,WACA,EAAA,aAAA,EACA,OACsB,EAAA;AACtB,EAAO,OAAA,WAAA,CAAY,IAAK,CAAA,CAAC,UAAe,KAAA;AACpC,IAAI,IAAA,wBAAA,GAA2B,WAAW,IAAS,KAAA,aAAA;AACnD,IAAA,IAAI,CAAC,wBAA4Bf,IAAAA,aAAAA,CAAO,KAAM,CAAA,SAAA,CAAU,aAAa,CAAG,EAAA;AACpE,MAAA,IAAIA,aAAO,CAAA,KAAA,CAAM,SAAU,CAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AAC5C,QACIA,wBAAAA,GAAAA,aAAAA,CAAO,MAAM,UAAW,CAAA,UAAA,CAAW,OAAO,CAAMA,KAAAA,aAAAA,CAAO,KAAM,CAAA,UAAA,CAAW,aAAa,CAAA;AAAA,OACtF,MAAA;AACH,QAAA,wBAAA,GAA2B,UAAW,CAAA,OAAA,KAAYA,aAAO,CAAA,KAAA,CAAM,WAAW,aAAa,CAAA;AAAA;AAC3F;AAEJ,IAAM,MAAA,gBAAA,GAAmB,QAAQ,KAAS,IAAA,IAAA,IAAQ,QAAQ,KAAU,KAAAkB,4BAAA,CAAe,WAAW,OAAO,CAAA;AACrG,IAAA,MAAM,qBAAqB,OAAQ,CAAA,OAAA,KAAY,KAAa,CAAA,IAAA,OAAA,CAAQ,YAAY,UAAW,CAAA,OAAA;AAC3F,IAAA,MAAM,oBAAoB,OAAQ,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,OAAA,CAAQ,WAAW,UAAW,CAAA,MAAA;AACxF,IAAA,IAAI,mBAAsB,GAAA,IAAA;AAC1B,IAAI,IAAA,OAAA,CAAQ,cAAc,IAAM,EAAA;AAC5B,MAAA,MAAM,mBAAsB,GAAA,UAAA,CAAW,kBAAmB,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACjE,QAAA,IAAIC,0CAA6B,CAAA,UAAA,CAAW,OAAS,EAAA,CAAC,CAAG,EAAA;AACrD,UAAO,OAAAC,iCAAA,CAAoB,UAAW,CAAA,OAAA,EAAS,CAAC,CAAA;AAAA;AAEpD,QAAO,OAAA,KAAA,CAAA;AAAA,OACV,CAAA;AACD,MAAsB,mBAAA,GAAA,mBAAA,CAAoB,QAAS,CAAA,OAAA,CAAQ,UAAU,CAAA;AAAA;AAEzE,IACI,OAAA,wBAAA,IACA,gBACA,IAAA,kBAAA,IACA,mBACA,IAAA,iBAAA;AAAA,GAEP,CAAA;AACL;AAUA,IAAM,gBAA8B,EAAC;AAU9B,SAAS,uBAAA,CACZ,YACA,QACC,EAAA;AACD,EAAA,MAAM,MAAM,CAAG,EAAA,UAAA,CAAW,OAAO,CAAA,CAAA,EAAI,WAAW,OAAO,CAAA,CAAA;AACvD,EAAI,IAAA,EAAE,OAAO,aAAgB,CAAA,EAAA;AACzB,IAAA,IAAI,UAAW,CAAA,GAAA,KAAQ,KAAa,CAAA,IAAA,UAAA,CAAW,aAAa,KAAW,CAAA,EAAA;AACnE,MAAM,MAAA,IAAI,MAAM,0CAA0C,CAAA;AAAA;AAE9D,IAAA,MAAM,WAAW,IAAIpB,aAAAA,CAAO,gBAAgB,UAAW,CAAA,GAAA,EAAK,WAAW,QAAQ,CAAA;AAC/E,IAAA,aAAA,CAAc,GAAG,CAAA,GAAI,QAAS,CAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA;AAE3D,EAAA,IAAI,CAAC,QAAU,EAAA;AACX,IAAA,OAAO,cAAc,GAAG,CAAA;AAAA;AAE5B,EAAA,OAAO,aAAc,CAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,QAAQ,CAAA;AAC9C;AAgBO,SAAS,YACZ,CAAA,QAAA,EACA,WACA,EAAA,aAAA,EACA,OACC,EAAA;AACD,EAAA,MAAM,UAAa,GAAA,cAAA,CAAe,WAAa,EAAA,aAAA,EAAe,OAAO,CAAA;AACrE,EAAM,MAAA,MAAA,GAAS,uBAA2B,CAAA,UAAA,EAAY,QAAQ,CAAA;AAC9D,EAAO,OAAA,MAAA;AACX;ACrKO,SAAS,QAAQD,KAAsB,EAAA;AAC1C,EAAM,MAAA,KAAA,GAAQA,KAAK,CAAA,KAAA,CAAM,2BAA2B,CAAA;AACpD,EAAA,MAAM,GAAG,QAAQ,CAAA,GAAI,SAAS,EAAC;AAC/B,EAAA,MAAMsB,QAAU,GAAA,OAAO,QAAa,KAAA,WAAA,GAAc,QAAWtB,GAAAA,KAAAA;AAC7D,EAAOsB,OAAAA,QAAAA;AACX;AAQA,SAASC,cAAAA,CAAc,kBAAkB,QAA8B,EAAA;AACnE,EAAA,MAAM,WAAW,KAAM,CAAA,eAAA;AACvB,EAAA,KAAA,CAAM,eAAkB,GAAA,eAAA;AACxB,EAAM,MAAA,MAAA,GAAS,IAAI,KAAA,EAAQ,CAAA,KAAA;AAC3B,EAAA,KAAA,CAAM,eAAkB,GAAA,QAAA;AACxB,EAAO,OAAA,MAAA;AACX;AAOA,SAASC,UAAgC,GAAA;AACrC,EAAA,MAAM,SAASD,cAAc,CAAA,EAAE,CAAK,IAAA,EAAA,EAAI,MAAM,IAAI,CAAA;AAMlD,EAAA,IAAI,KAAM,CAAA,MAAA,GAAS,CAAI,GAAA,CAAA,GAAI,IAAI,CAAG,EAAA;AAC9B,IAAM,MAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAM,MAAA,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,qBAAqB,CAAA;AAC1C,IAAA,IAAI,CAAG,EAAA;AACH,MAAA,OAAO,EAAE,CAAC,CAAA;AAAA;AACd;AAEJ,EAAO,OAAA,KAAA,CAAA;AACX;AASO,SAAS,OAAA,CAAQ,aAAqB,cAAiC,EAAA;AAC1E,EAAA,IAAI,mBAAmB,KAAW,CAAA,EAAA;AAC9B,IAAA,cAAA,GAAiBC,UAAU,EAAA;AAC3B,IAAA,IAAI,mBAAmB,KAAW,CAAA,EAAA;AAC9B,MAAiB,cAAA,GAAA,UAAA;AAAA;AACrB;AAGJ,EAAM,MAAA,QAAA,GAAWC,yBAAO,aAAc,CAAA,cAAc,EAAE,OAAQ,CAAA,CAAA,EAAG,WAAW,CAAe,aAAA,CAAA,CAAA;AAC3F,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAMpC,EAAO,OAAA,WAAA,CAAY,OAAQ,CAAA,0DAAA,EAA4D,EAAE,CAAA;AAC7F;;;ACnEO,SAAS,MAAA,CAAO,WAAoB,OAAqC,EAAA;AAC5E,EAAA,IAAI,CAAC,SAAW,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAqB,kBAAA,EAAA,OAAA,IAAW,oBAAoB,CAAE,CAAA,CAAA;AAAA;AAE9E;AAcO,SAAS,UAAA,CACZ,KACA,EAAA,WAAA,EACA,OACsB,EAAA;AAEtB,EAAI,IAAA,OAAO,gBAAgB,UAAY,EAAA;AACnC,IAAA,IAAI,WAAiB,KAAA,MAAA,IAAkB,WAAiB,KAAA,MAAA,IAAkB,gBAAiB,OAAiB,EAAA;AACxG,MAAA,IAAI,OAAO,KAAA,KAAU,WAAY,CAAA,IAAA,CAAK,aAAe,EAAA;AACjD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAwB,qBAAA,EAAA,OAAA,IAAW,iBAAiB,CAAE,CAAA,CAAA;AAAA;AAC1E,KACO,MAAA,IAAA,WAAA,IAAe,WAAe,IAAA,WAAA,CAAY,cAAc,KAAW,CAAA,EAAA;AAE1E,MAAI,IAAA,EAAE,iBAAiB,WAAc,CAAA,EAAA;AACjC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAwB,qBAAA,EAAA,OAAA,IAAW,iBAAiB,CAAE,CAAA,CAAA;AAAA;AAC1E,KACG,MAAA;AAEH,MAAI,IAAA,CAAE,WAA6B,CAAA,KAAK,CAAG,EAAA;AACvC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAwB,qBAAA,EAAA,OAAA,IAAW,iBAAiB,CAAE,CAAA,CAAA;AAAA;AAC1E;AACJ;AAER;AASO,SAAS,aAAA,CAAiB,OAAW,OAAmD,EAAA;AAC3F,EAAI,IAAA,KAAA,KAAU,KAAa,CAAA,IAAA,KAAA,KAAU,IAAM,EAAA;AACvC,IAAM,MAAA,IAAI,KAAM,CAAA,OAAA,IAAW,4BAA4B,CAAA;AAAA;AAE/D;AAWO,SAAS,MAAA,CAAa,KAAU,EAAA,EAAA,EAA4B,OAAqB,EAAA;AACpF,EAAI,IAAA,CAAC,EAAG,CAAA,KAAK,CAAG,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAwB,qBAAA,EAAA,OAAA,IAAW,iBAAiB,CAAE,CAAA,CAAA;AAAA;AAE1E,EAAO,OAAA,KAAA;AACX;AAQO,SAAS,WAAc,KAAoC,EAAA;AAAC;;;ACnDtD,IAAA,QAAA,GAAW,OAAU,KAAmC,KAAA;AACjE,EAAA,MAAM,YAAiB,EAAC;AAExB,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACtB,IAAU,SAAA,CAAA,IAAA,CAAK,MAAM,IAAA,EAAM,CAAA;AAAA;AAG/B,EAAO,OAAA,SAAA;AACX;AAUa,IAAA,QAAA,GAAW,OAAU,KAAA,KAAmC,OAAQ,CAAA,GAAA,CAAI,KAAM,CAAA,GAAA,CAAI,OAAO,IAAA,KAAS,IAAK,EAAC,CAAC;AAarG,IAAA,KAAA,GAAQ,OAAU,KAAiC,KAAA;AAC5D,EAAO,MAAA,CAAA,KAAA,CAAM,MAAW,KAAA,CAAA,EAAG,CAAyC,uCAAA,CAAA,CAAA;AAEpE,EAAI,IAAA,SAAA;AAEJ,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACtB,IAAI,IAAA;AACA,MAAA,OAAO,MAAM,IAAK,EAAA;AAAA,aACb,KAAO,EAAA;AACZ,MAAY,SAAA,GAAA,KAAA;AAAA;AAChB;AAGJ,EAAM,MAAA,SAAA;AACV;AASO,IAAM,YACT,GAAA,CAAA,GAAuC,SACvC,KAAA,OAAA,GAAU,UACN,KAAM,CAAA,SAAA,CAAU,GAAI,CAAA,CAAC,YAAY,YAAY,OAAA,CAAQ,GAAG,KAAK,CAAC,CAAC;;;ACnFhE,SAAS,OAAA,CAAc,UAAe,UAAqE,EAAA;AAC9G,EAAA,MAAM,SAAc,EAAC;AACrB,EAAI,IAAA;AACA,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,QAAQ,CAAK,EAAA,EAAA;AACtC,MAAA,MAAM,EAAK,GAAA,UAAA,CAAW,QAAS,CAAA,CAAC,GAAG,CAAC,CAAA;AACpC,MAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA;AAElB,IAAO,OAAA,CAAC,QAAQ,KAAS,CAAA,CAAA;AAAA,WACpB,CAAG,EAAA;AACR,IAAO,OAAA,CAAC,QAAQ,CAAU,CAAA;AAAA;AAElC;;;ACOO,SAAS,MAAA,CAAyB,UAAa,KAAoC,EAAA;AACtF,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAEzC,EAAI,IAAA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAG,EAAA;AAC5B,IAAO,OAAA,KAAA;AAAA,GACJ,MAAA;AACH,IAAA,MAAM,IAAI,KAAA,CAAM,CAAuB,oBAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAEtD;;;ACoBO,SAAS,qBAAA,CAAyB,KAAqB,KAA0B,EAAA;AAEpF,EAAO,OAAA,KAAA,CAAM,KAAM,CAAA,CAACzB,KAAS,KAAA;AACzB,IAAM,MAAA,IAAA,GAAOA,KAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAC3B,IAAA,IAAI,OAAe,GAAA,GAAA;AAEnB,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACpB,MAAI,IAAA,OAAA,KAAY,KAAa,CAAA,IAAA,GAAA,IAAO,OAAS,EAAA;AACzC,QAAA,OAAA,GAAU,QAAQ,GAAG,CAAA;AAAA,OAClB,MAAA;AACH,QAAO,OAAA,KAAA;AAAA;AACX;AAGJ,IAAO,OAAA,IAAA;AAAA,GACV,CAAA;AAEL;AC1DO,SAAS,MACZ,CAAA,YAAA,EACA,OAA4B,GAAA,EACT,EAAA;AACnB,EAAM,MAAA,cAAA,GAAiB,IAAI,GAAA,CAAI,KAAM,CAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,YAAA,GAAe,CAAC,YAAY,CAAC,CAAA;AAC1F,EAAI,IAAA,cAAA,CAAe,SAAS,CAAG,EAAA;AAC3B,IAAA,OAAQ,KAAM,CAAA,OAAA,CAAQ,YAAY,CAAA,GAAI,EAAK,GAAA,KAAA,CAAA;AAAA;AAG/C,EAAA,MAAM,GAAM,GAAA,OAAA,CAAQ,GAAO,IAAA,OAAA,CAAQ,GAAI,EAAA;AACvC,EAAA,IAAI,UAAa,GAAA,GAAA;AAEjB,EAAA,OAAO,eAAe,GAAK,EAAA;AACvB,IAAM,MAAA,QAAA,GAAc0B,0BAAY,UAAU,CAAA;AAC1C,IAAM,MAAA,UAAA,GAAa,SAAS,MAAO,CAAA,CAAC,SAAS,cAAe,CAAA,GAAA,CAAI,IAAI,CAAC,CAAA;AACrE,IAAI,IAAA,UAAA,CAAW,SAAS,CAAG,EAAA;AACvB,MAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,YAAY,CAAG,EAAA;AAC9B,QAAA,OAAY1B,eAAK,CAAA,IAAA,CAAA,UAAA,EAAY,UAAW,CAAA,CAAC,CAAC,CAAA;AAAA;AAE9C,MAAA,OAAO,WAAW,GAAI,CAAA,CAAC,SAAcA,eAAK,CAAA,IAAA,CAAA,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA;AAE/D,IAAA,UAAA,GAAkBA,wBAAQ,UAAU,CAAA;AAAA;AAExC,EAAA,OAAQ,KAAM,CAAA,OAAA,CAAQ,YAAY,CAAA,GAAI,EAAK,GAAA,KAAA,CAAA;AAC/C;ACtBO,SAAS,SAAS,cAA8B,EAAA;AAGnD,EAAA,MAAM,UAAa,GAAA,SAAA;AACnB,EAAM2B,MAAAA,QAAAA,GAAUF,wBAAO,CAAA,aAAA,CAAc,cAAc,CAAA;AACnD,EAAM,MAAA,UAAA,GAAaE,QAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AAG7C,EAAM,MAAA,MAAA,GAASA,SAAQ,UAAU,CAAA;AAGjC,EAAA,MAAA,CAAO,QAAS,CAAA;AAAA,IACZ,aAAe,EAAA,IAAA;AAAA,IACf,SAAW,EAAA;AAAA,GACd,CAAA;AACL;AAgBA,eAAsB,UAAA,CAAW,UAAkB,cAAsC,EAAA;AAErF,EAAMA,MAAAA,QAAAA,GAAUF,wBAAO,CAAA,aAAA,CAAc,cAAc,CAAA;AACnD,EAAM,MAAA,UAAA,GAAaE,QAAQ,CAAA,OAAA,CAAQ,QAAQ,CAAA;AAE3C,EAAI,IAAA,QAAA,CAAS,QAAS,CAAA,KAAK,CAAG,EAAA;AAC1B,IAAA,QAAA,CAAS,cAAc,CAAA;AACvB,IAAA,OAAOA,SAAQ,UAAU,CAAA;AAAA,GAClB,MAAA,IAAA,QAAA,CAAS,QAAS,CAAA,MAAM,CAAG,EAAA;AAClC,IAAA,OAAO,OAAO,UAAA,CAAA;AAAA,GACP,MAAA,IAAA,QAAA,CAAS,QAAS,CAAA,MAAM,CAAG,EAAA;AAClC,IAAA,OAAO,OAAQ,CAAA,OAAA,CAAQA,QAAQ,CAAA,UAAU,CAAC,CAAA;AAAA,GACnC,MAAA,IAAA,QAAA,CAAS,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,IAAI,IAAA;AACA,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAQA,CAAAA,QAAAA,CAAQ,UAAU,CAAC,CAAA;AAAA,aAC3C,YAAc,EAAA;AACnB,MAAI,IAAA;AACA,QAAA,OAAO,MAAM,OAAO,UAAA,CAAA;AAAA,eACf,WAAa,EAAA;AAClB,QAAA,MAAM,IAAI,KAAA;AAAA,UACN,CAA0B,uBAAA,EAAA,QAAQ,CAAoB,iBAAA,EAAA,YAAY,mBAAmB,WAAW,CAAA;AAAA,SACpG;AAAA;AACJ;AACJ,GACG,MAAA;AACH,IAAA,MAAM,IAAI,KAAA,CAAM,CAA+B,4BAAA,EAAA,QAAQ,CAAE,CAAA,CAAA;AAAA;AAGjE;ACxEO,SAAS,SAA4C,OAAuC,EAAA;AAC/F,EAAO,OAAA,SAAU,MAAgB,EAAA,WAAA,EAA8B,UAA8C,EAAA;AACzG,IAAA,MAAM,iBAAiB,UAAW,CAAA,KAAA;AAElC,IAAI,IAAA,OAAO,mBAAmB,UAAY,EAAA;AACtC,MAAM,MAAA,IAAI,MAAM,CAAqD,mDAAA,CAAA,CAAA;AAAA;AAGzE,IAAM,MAAA,eAAA,GAAkB,cAAe,CAAA,WAAA,CAAY,IAAS,KAAA,eAAA;AAC5D,IAAA,MAAM,cAA6B,GAAA;AAAA,MAC/B,GAAG,OAAA;AAAA,MACH,OAAA,EAAS,SAAS,OAAW,IAAA;AAAA,KACjC;AAEA,IAAA,IAAI,CAAC,eAAiB,EAAA;AAElB,MAAM,MAAA,iBAAA,GAAoB,eAAe,QAAS,EAAA;AAClD,MAAA,IAAI,kBAAkB,QAAS,CAAA,UAAU,KAAK,iBAAkB,CAAA,QAAA,CAAS,IAAI,CAAG,EAAA;AAC5E,QAAA,cAAA,CAAe,KAAQ,GAAA,IAAA;AAAA;AAC3B;AAGJ,IAAM,MAAA,UAAA,GAAaC,yBAAS,CAAA,cAAA,EAAgB,cAAc,CAAA;AAC1D,IAAA,MAAM,EAAK,GAAA,UAAA;AACX,IAAA,EAAA,CAAG,QAAQ,MAAY;AACnB,MAAA,UAAA,CAAW,KAAM,EAAA;AAAA,KACrB;AAEA,IAAA,UAAA,CAAW,KAAQ,GAAA,EAAA;AAAA,GACvB;AACJ;;;ACHO,SAAS,oBAAkD,MAAkD,EAAA;AAGhH,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACrB,IAAA,OAAO,EAAC;AAAA;AAKZ,EAAA,MAAM,gBAAmB,GAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAW,KAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAI,GAAA,KAAA,GAAQ,CAAC,KAAK,CAAE,CAAA;AAIvF,EAAA,OAAO,gBAAiB,CAAA,MAAA;AAAA,IACpB,CAAC,YAAc,EAAA,YAAA,KACX,YAAa,CAAA,OAAA,CAAQ,CAAC,WAAgB,KAAA,YAAA,CAAa,GAAI,CAAA,CAAC,YAAY,CAAC,GAAG,WAAa,EAAA,OAAO,CAAC,CAAC,CAAA;AAAA,IAClG,CAAC,EAAE;AAAA,GACP;AAGJ;;;AC1BO,IAAMZ,UAAS,SAAU;AAQhC,eAAsB,MAAM,OAAgC,EAAA;AACxD,EAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAC/D;AASO,SAAS,yBAAyB,GAAuC,EAAA;AAC5E,EAAA,MAAM,IAAO,GAAA,MAAA,CAAW,WAAa,EAAA,EAAE,KAAK,CAAA;AAC5C,EAAI,IAAA,IAAA,KAAS,QAAkB,OAAA,MAAA;AAE/B,EAAA,MAAM,GAAM,GAAA,MAAA,CAAW,mBAAqB,EAAA,EAAE,KAAK,CAAA;AACnD,EAAI,IAAA,GAAA,KAAQ,QAAkB,OAAA,KAAA;AAG9B,EAAA,MAAM,IAAO,GAAA,MAAA,CAAW,gBAAkB,EAAA,EAAE,KAAK,CAAA;AACjD,EAAI,IAAA,IAAA,KAAS,QAAkB,OAAA,MAAA;AAE/B,EAAM,MAAA,IAAI,MAAM,uCAAuC,CAAA;AAC3D;AASO,SAAS,kBAAkB,GAAsB,EAAA;AACpD,EAAA,MAAM,IAAO,GAAA,MAAA,CAAW,WAAa,EAAA,EAAE,KAAK,CAAA;AAC5C,EAAA,IAAI,IAAS,KAAA,KAAA,CAAA,EAAkBhB,OAAAA,uBAAAA,CAAK,QAAQ,IAAI,CAAA;AAEhD,EAAA,MAAM,GAAM,GAAA,MAAA,CAAW,mBAAqB,EAAA,EAAE,KAAK,CAAA;AACnD,EAAA,IAAI,GAAQ,KAAA,KAAA,CAAA,EAAkBA,OAAAA,uBAAAA,CAAK,QAAQ,GAAG,CAAA;AAE9C,EAAA,MAAM,IAAO,GAAA,MAAA,CAAW,gBAAkB,EAAA,EAAE,KAAK,CAAA;AACjD,EAAA,IAAI,IAAS,KAAA,KAAA,CAAA,EAAkBA,OAAAA,uBAAAA,CAAK,QAAQ,IAAI,CAAA;AAEhD,EAAM,MAAA,IAAI,MAAM,8DAA8D,CAAA;AAClF;AAWA,eAAsB,sBAClB,CAAA,IAAA,EACA,IACA,EAAA,OAAA,EACAA,KACgB,EAAA;AAChB,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,OAAY,KAAA;AACrC,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC5B,IAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAAA,EAAAA,KAAAA;AAAA,MACA,MAAQ,EAAA;AAAA,KACZ;AAEA,IAAA,MAAM,OAAU,GAAA6B,qBAAA,CAAK,OAAQ,CAAA,OAAA,EAAS,CAAC,SAAc,KAAA;AACjD,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,KACf,CAAA;AAED,IAAQ,OAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,IAAS,KAAA;AAC1B,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,KAChB,CAAA;AAED,IAAA,OAAA,CAAQ,GAAI,EAAA;AAAA,GACf,CAAA;AACL;AASO,SAAS,eAAe,GAI7B,EAAA;AAEE,EAAM,MAAA,CAAA,GAAI,GAAI,CAAA,KAAA,CAAM,oDAAoD,CAAA;AACxE,EAAI,IAAA,CAAA,EAAG,MAAQ,EAAA,IAAA,KAAS,KAAW,CAAA,EAAA;AAC/B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,GAAG,CAAE,CAAA,CAAA;AAAA;AAGxC,EAAO,OAAA;AAAA,IACH,MAAA,EAAQ,EAAE,MAAO,CAAA,MAAA;AAAA,IACjB,IAAA,EAAM,EAAE,MAAO,CAAA,IAAA;AAAA,IACf,IAAA,EAAM,EAAE,MAAO,CAAA;AAAA,GACnB;AACJ","file":"index.cjs","sourcesContent":["import { Bytes, Hex } from './types'\n\n/**\n * Interface representing the options for padding.\n */\ninterface PadOptions {\n /**\n * The direction of the padding. Defaults to undefined.\n */\n dir?: 'left' | 'right' | undefined\n\n /**\n * The size to pad to. Defaults to 32.\n */\n size?: number | null | undefined\n}\n\n/**\n * Type representing the return type of the padify function.\n */\nexport type PadReturnType<value extends Bytes | Hex> = value extends Hex ? Hex : Bytes\n\n/**\n * Type representing an error when the size exceeds the padding size.\n */\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\n\n/**\n * Class representing an error when the size exceeds the padding size.\n */\nexport class SizeExceedsPaddingSizeError extends Error {\n override name = 'SizeExceedsPaddingSizeError'\n constructor({ size, targetSize, type }: { size: number; targetSize: number; type: 'hex' | 'bytes' }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize})`\n )\n }\n}\n\n/**\n * Pads a hexadecimal string or byte array to a specified size.\n *\n * @param {Bytes | Hex} hexOrBytes - The hexadecimal string or byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {PadReturnType<Bytes | Hex>} The padded hexadecimal string or byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nexport function padify<value extends Bytes | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {}\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string') {\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n }\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\n/**\n * Pads a hexadecimal string to a specified size.\n *\n * @param {Hex} hex - The hexadecimal string to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Hex} The padded hexadecimal string.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padHex(hex: Hex, { dir, size = 32 }: PadOptions = {}): Hex {\n if (size === null) return hex\n const value = hex.replace('0x', '')\n if (value.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(value.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${value[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`\n}\n\n/**\n * Pads a byte array to a specified size.\n *\n * @param {Bytes} bytes - The byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Bytes} The padded byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padBytes(bytes: Bytes, { dir, size = 32 }: PadOptions = {}): Bytes {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","/**\n * Type representing a hexadecimal string prefixed with '0x'.\n */\nexport type Hex = `0x${string}`\n\n/**\n * Type representing a hash string prefixed with '0x'.\n */\nexport type Hash = `0x${string}`\n\n/**\n * Checks if a given string is a valid hexadecimal string.\n * @param value - The string to check.\n * @returns True if the string is a valid hexadecimal string, false otherwise.\n */\nexport function isHex(value: string): value is Hex {\n return /^(0x)?[0-9A-F]+$/i.test(value)\n}\n\n/**\n * Checks if a given string is a valid hash string.\n * @param value - The string to check.\n * @returns True if the string is a valid hash string, false otherwise.\n */\nexport function isHash(value: string): value is Hash {\n return /^(0x)?[0-9A-F]+/i.test(value)\n}\n\n/**\n * Represents a byte array.\n */\nexport type Bytes = Uint8Array\n","import { padify } from './pad'\nimport { Hex, isHex } from './types'\n\n/**\n * A function to convert Uint8Array to hex string.\n * @deprecated use `hexlify` instead.\n * @param {Uint8Array} bytes - The bytes to convert.\n * @returns {string} Hex string without 0x prefix, e.g., '0102030405'.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return trim0x(hexlify(bytes)).replace(/^0x/i, '')\n}\n\n/**\n * A function to convert hex string to Uint8Array.\n * @deprecated use `arrayify` instead.\n * @param {string} hex - Hex string, e.g., '0x0102030405' or '0102030405'.\n * @returns {Uint8Array} The converted Uint8Array.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return arrayify(hex)\n}\n\n/**\n * A function to trim the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {string} Hex string without 0x prefix.\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0x/i, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {Hex} Hex string with 0x prefix.\n * @throws {Error} If the input is not a valid hex string.\n */\nexport function ensure0x(hex: string): Hex {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const value = trim0x(hex)\n const retval = `0x${value}`\n return retval as Hex\n}\n\n/**\n * A function to check if a string is a hex string.\n * @deprecated use `isHex` instead.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string is a hex string, false otherwise.\n */\nexport function isHexString(value: string): boolean {\n return isHex(value)\n}\n\nfunction _arrayify(value: string | number | Uint8Array | Buffer | bigint): Uint8Array {\n if (value instanceof Uint8Array) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.match(/^(0x)?[0-9A-F]*$/i)) {\n const hex = value.replace(/^0x/i, '')\n const len = hex.length + 1 - ((hex.length + 1) % 2)\n return Uint8Array.from(Buffer.from(hex.padStart(len, '0'), 'hex'))\n }\n throw new Error('Invalid hex string')\n }\n\n if (typeof value === 'number') {\n if (value < 0) {\n throw new Error('Number must be non-negative')\n }\n const byteArray = []\n while (value > 0) {\n byteArray.push(value & 0xff)\n value >>= 8\n }\n return new Uint8Array(byteArray.reverse())\n }\n\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\n return new Uint8Array(value)\n }\n\n if (typeof value === 'bigint') {\n const hex = value.toString(16)\n return _arrayify(hex)\n }\n\n throw new Error('unsupported type')\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to Uint8Array.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @param {number} [size] - The size of the Uint8Array to return, if not specified, the size of the input will be returned.\n * @returns {Uint8Array} The converted Uint8Array.\n * @throws {Error} If the input type is unsupported.\n */\nexport function arrayify(value: string | number | Uint8Array | Buffer | bigint, size?: number): Uint8Array {\n const bytes = _arrayify(value)\n if (size === undefined) {\n return bytes\n }\n return padify(bytes, { size })\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to hex string.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @returns {Hex} The converted hex string.\n * @throws {Error} If the input type is unsupported.\n */\nexport function hexlify(value: string | number | Uint8Array | Buffer | bigint): Hex {\n if (typeof value === 'string' && /^(0x)?[0-9A-F]*$/i.test(value)) {\n const retval = '0x' + trim0x(value)\n return retval as Hex\n }\n\n const bytes = arrayify(value)\n const hex = Buffer.from(bytes).toString('hex')\n return ensure0x(hex)\n}\n","import { INIT_COIN_TYPE, MnemonicKey } from '@initia/initia.js'\nimport { Ed25519Keypair as IotaEd25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Keypair } from '@solana/web3.js'\nimport { KeyPair, deriveEd25519Path, keyPairFromSeed, mnemonicToHDSeed } from '@ton/crypto'\nimport { WalletContractV4 } from '@ton/ton'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nimport { hexlify, trim0x } from './format'\n\n/**\n * Interface representing an account mnemonic.\n */\nexport interface AccountMnemonic {\n /**\n * The mnemonic phrase.\n */\n mnemonic: string\n\n /**\n * The derivation path.\n */\n path: string\n\n /**\n * The private key (optional).\n */\n privateKey?: string\n\n /**\n * The address (optional).\n */\n address?: string\n}\n\n/**\n * Gets the BIP-0044 derivation path for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {number} account - The account index.\n * @param {number} change - The change index.\n * @param {number} index - The address index.\n * @returns {string} The BIP-0044 derivation path.\n * @throws {Error} If the chain type is unsupported.\n */\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n case ChainType.TON:\n // https://github.com/satoshilabs/slips/blob/master/slip-0044.md#registered-coin-types\n return `m/44'/607'/${account}'/${change}/${index}`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets an EVM account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/60'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The EVM account mnemonic.\n */\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\n/**\n * Gets an Aptos account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/637'/0'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Aptos account mnemonic.\n * @throws {Error} If the derivation path is invalid.\n */\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, trim0x(hexlify(bip39.mnemonicToSeedSync(normalizeMnemonics))))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\n/**\n * Gets an Initia account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/118'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The Initia account mnemonic.\n */\nexport function getInitiaAccountFromMnemonic(mnemonic: string, path = \"m/44'/118'/0'/0/0\"): AccountMnemonic {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n eth: coinType === INIT_COIN_TYPE,\n })\n {\n return {\n mnemonic,\n path,\n privateKey: key.privateKey.toString('hex'),\n address: key.accAddress,\n }\n }\n}\n\n/**\n * Gets a Solana account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/501'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Solana account mnemonic.\n */\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getSuiAccountFromMnemonic(mnemonic: string, path = \"m/44'/784'/0'/0'/0'\"): AccountMnemonic {\n const signer = Ed25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toSuiAddress(),\n }\n}\n\nexport function getIotamoveAccountFromMnemonic(mnemonic: string, path = \"m/44'/4218'/0'/0'/0'\"): AccountMnemonic {\n const signer = IotaEd25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toIotaAddress(),\n }\n}\n\n/**\n * Gets a TON account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the TON account mnemonic.\n */\nexport async function getTonAccountFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<AccountMnemonic> {\n const { wallet, keyPair } = await getTonWalletFromMnemonic(mnemonic, path, workchain)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: wallet.address.toString({ bounceable: false, urlSafe: true }),\n }\n}\n\n/**\n * Gets a key pair from a mnemonic phrase for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path] - The derivation path.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the account mnemonic.\n * @throws {Error} If the chain type is unsupported.\n */\nexport async function getKeypairFromMnemonic(\n chainType: ChainType,\n mnemonic: string,\n path?: string\n): Promise<AccountMnemonic> {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.INITIA:\n return getInitiaAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n case ChainType.TON:\n return getTonAccountFromMnemonic(mnemonic, path)\n case ChainType.SUI:\n return getSuiAccountFromMnemonic(mnemonic, path)\n case ChainType.IOTAMOVE:\n return getIotamoveAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets a TON wallet from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<{ wallet: WalletContractV4; keyPair: KeyPair }>} A promise that resolves to the TON wallet and key pair.\n */\nexport async function getTonWalletFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<{ wallet: WalletContractV4; keyPair: KeyPair }> {\n const seed: Buffer = await mnemonicToHDSeed(mnemonic.split(' '))\n const indices: number[] = toPathArray(path)\n const derivedSeed: Buffer = await deriveEd25519Path(seed, indices)\n const keyPair: KeyPair = keyPairFromSeed(derivedSeed)\n return {\n wallet: WalletContractV4.create({ publicKey: keyPair.publicKey, workchain }),\n keyPair,\n }\n}\n\n/**\n * Converts a path string to an array of numbers.\n * TON currently supports hardened paths only: https://github.com/ton-org/ton-crypto/blob/master/src/hd/ed25519.ts#L32\n *\n * @param {string} path - The path string to convert.\n * @returns {number[]} An array of numbers representing the path.\n * @throws {Error} If the path is invalid.\n */\nfunction toPathArray(path: string): number[] {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"')\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/')\n const ret: number[] = Array<number>(parts.length)\n for (let i = 0; i < parts.length; i++) {\n const tmp = /(\\d+)[hH']/.exec(parts[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= 0x80000000) {\n throw new Error('Invalid child index')\n }\n }\n return ret\n}\n","import dayjs from 'dayjs'\nimport pc from 'picocolors'\nimport { pino } from 'pino'\n\nlet logger: pino.Logger | undefined = undefined\n\nexport type Logger = pino.Logger\n\n/**\n * Gets the current stack trace.\n *\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Creates a replacer function for handling circular references in JSON.stringify.\n * details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\n *\n * @returns {(key: string, value: unknown) => unknown} The replacer function.\n */\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\n/**\n * Extracts caller information from a stack trace line.\n *\n * @param {string} line - The stack trace line.\n * @returns {string} The extracted caller information.\n */\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nfunction getCaller(pattern: RegExp): string {\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n\n const index =\n stackLines.findIndex((line) => {\n return line.match(pattern)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n return fileInfo\n}\n\n/**\n * Initializes the logger with the specified log level.\n *\n * @param {string} level - The log level.\n */\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\n// Define custom colors for log levels\nconst levelColors: { [key: string]: (msg: string) => string } = {\n TRACE: pc.reset,\n DEBUG: pc.reset,\n INFO: pc.green,\n WARN: pc.yellow,\n ERROR: pc.red,\n FATAL: pc.red,\n}\n\n// Create a custom stream for logging with colors\nconst customStream = {\n write: (msg: string): void => {\n try {\n const customLogger = (output: string) => {\n if (typeof process !== 'undefined') {\n process.stdout.write(output + '\\n') // Works in Node.js\n } else {\n console.log(output) // Works in Browsers\n }\n }\n const logObj = JSON.parse(msg) // Parse the log message\n const { level, msg: message, time } = logObj\n\n const newMsgs: string[] = message.split('#caller#')\n // Format the time\n const formattedTime = dayjs(time).format('YYYY-MM-DD HH:mm:ss')\n\n // Get the appropriate color function (default to reset)\n const colorFn = levelColors[level] || pc.reset\n\n newMsgs.forEach((newMsg) => {\n customLogger(colorFn(`[${formattedTime}] [${level}] ${newMsg}`))\n })\n } catch (error) {\n console.error('Failed to process log:', msg)\n }\n },\n}\n\n/**\n * Creates a new logger with the specified log level.\n *\n * @param {string} level - The log level.\n * @returns {Logger} The created logger.\n */\nexport function createLogger(level: string): pino.Logger {\n const logger = pino(\n {\n level,\n base: undefined,\n // customLevels: customLevels.levels,\n // timestamp: () => `,\"time\":\"${formatTime(Date.now())}\"`,\n formatters: {\n level(levelLabel, levelNumber) {\n return { level: levelLabel.toUpperCase(), levelNumber: levelNumber } // 让日志级别大写\n },\n },\n hooks: {\n logMethod(inputArgs, method, level) {\n const [msg, ...args] = inputArgs\n let newMsg = msg\n let caller = ''\n if (level >= 50) {\n caller = getCaller(/lib\\/tools.js/)\n newMsg = `${caller}#caller#${msg} `\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment\n method.apply(this, [newMsg, ...args, caller])\n // method.apply(this, inputArgs)\n },\n },\n },\n customStream\n )\n return logger\n}\n\n/**\n * Gets the current logger instance.\n *\n * @returns {Logger} The current logger instance.\n * @throws {Error} If the logger is not initialized.\n */\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\n/**\n * Interface representing a contract deployment.\n */\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Finds the matching deployment based on the given options.\n * @todo Use Partial<EndpointSpec> instead of options\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment} The matching deployment.\n * @throws {Error} If the deployment is not found.\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment {\n const retval = tryFindDeployment(deployments, nameOrAddress, options)\n if (retval === undefined) {\n throw new Error(`Deployment not found: ${nameOrAddress} options:${JSON.stringify(options)}`)\n }\n return retval\n}\n\n/**\n * Tries to find the matching deployment based on the given options.\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment | undefined} The matching deployment, or undefined if not found.\n */\nexport function tryFindDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n if (ethers.utils.isAddress(deployment.address)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n } else {\n hasMatchingNameOrAddress = deployment.address === ethers.utils.getAddress(nameOrAddress)\n }\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\n/**\n * Type representing a mapping of contract addresses to EVM contracts.\n */\ntype ContractType = { [key in string]: ethers.Contract }\n\n/**\n * Cache for storing EVM contracts by their network and address.\n */\nconst contractCache: ContractType = {}\n\n/**\n * Converts a deployment to an EVM contract.\n *\n * @param {Deployment} deployment - The deployment to convert.\n * @param {ethers.providers.Provider} [provider] - The provider to use.\n * @returns {T} The EVM contract.\n * @throws {Error} If the deployment does not have ABI or bytecode.\n */\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n\n/**\n * Finds a contract based on the given options.\n *\n * @param {ethers.providers.Provider | undefined} provider - The provider to use.\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {T} The matching contract.\n * @throws {Error} If the deployment is not found.\n */\nexport function findContract<T extends ethers.Contract>(\n provider: ethers.providers.Provider | undefined,\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): T {\n const deployment = findDeployment(deployments, nameOrAddress, options)\n const retval = deploymentToEvmContract<T>(deployment, provider)\n return retval\n}\n","import module from 'module'\n\n/**\n * Returns the directory name of a path.\n *\n * @param {string} path - The path to get the directory name from.\n * @returns {string} The directory name of the path.\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\n/**\n * Gets the current stack trace.\n *\n * @param {number} [stackTraceLimit=Infinity] - The stack trace limit.\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Gets the caller of the current function.\n *\n * @returns {string | undefined} The caller of the current function.\n */\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * Returns the root path of a package.\n *\n * @param {string} packageName - The name of the package.\n * @param {string} [relativeToPath] - The path to resolve the package root relative to.\n * @returns {string} The root path of the package.\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = module.createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","/**\n * Asserts that a condition is true. If the condition is false, throws an error with the provided message.\n *\n * @param {boolean} condition - The condition to assert.\n * @param {string} [message] - The error message to throw if the condition is false.\n * @throws {Error} If the condition is false.\n */\nexport function assert(condition: boolean, message?: string): asserts condition {\n if (!condition) {\n throw new Error(`Assertion Error: ${message ?? 'condition is false'}`)\n }\n}\n\ntype Constructor<T> = new (...args: any[]) => T\ntype TypeGuard<M> = (v: unknown) => v is M\n\n/**\n * Asserts that a value is of a certain type, using a type guard function.\n * assertType can be used to assert that a value is of a certain type, and without naming a new variable explicitly.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function assertType<T, M>(\n value: T,\n typeOrGuard: TypeGuard<M> | Constructor<M>,\n message?: string\n): asserts value is T & M {\n // console.debug(typeOrGuard)\n if (typeof typeOrGuard === 'function') {\n if (typeOrGuard === (String as any) || typeOrGuard === (Number as any) || typeOrGuard === (Boolean as any)) {\n if (typeof value !== typeOrGuard.name.toLowerCase()) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else if ('prototype' in typeOrGuard && typeOrGuard.prototype !== undefined) {\n // It's a constructor\n if (!(value instanceof typeOrGuard)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else {\n // It's a type guard function\n if (!(typeOrGuard as TypeGuard<M>)(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n }\n }\n}\n\n/**\n * Asserts that a value is defined (not undefined or null).\n *\n * @param {T} [value] - The value to assert is defined.\n * @param {string} [message] - The error message to throw if the value is undefined or null.\n * @throws {Error} If the value is undefined or null.\n */\nexport function assertDefined<T>(value?: T, message?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(message ?? 'Value is undefined or null')\n }\n}\n\n/**\n * Asserts that a value is of a certain type, using a type guard function, and returns the value.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @returns {M} The value, asserted to be of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function asType<T, M>(value: T, fn: (v: unknown) => v is M, message?: string): M {\n if (!fn(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n return value\n}\n\n/**\n * Assumes that a value is of a certain type. This function does not perform any runtime checks.\n *\n * @param {unknown} value - The value to assume the type of.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assumeType<T>(value: unknown): asserts value is T {}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport { assert } from './assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * If an error occurs during the execution of the callback function, the function returns the results up to that point and the error.\n *\n * @param {T[]} elements - The array to map over.\n * @param {(item: T, index: number) => R} callbackfn - A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns {[R[], Error | undefined]} A tuple containing the array of results and an optional error.\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * Converts a string or number value to a corresponding enum value.\n *\n * @param {T} enumType - The enum object.\n * @param {string | number} value - The value to convert.\n * @returns {T[keyof T]} The converted enum value.\n * @throws {Error} If the value is not a valid enum value.\n * @example\n * // Usage\n * enum Color {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue'\n * }\n *\n * const color: Color = asEnum(Color, 'red');\n * expect(color).toBe(Color.Red);\n *\n * enum Direction {\n * Up = 1,\n * Down,\n * }\n *\n * const direction: Direction = asEnum(Direction, 1);\n * expect(direction).toBe(Direction.Up);\n */\nexport function asEnum<T extends object>(enumType: T, value: string | number): T[keyof T] {\n const enumValues = Object.values(enumType)\n\n if (enumValues.includes(value)) {\n return value as T[keyof T]\n } else {\n throw new Error(`Invalid enum value: ${value}`)\n }\n}\n","/**\n * Represents a type that allows partial modification of all properties in a given object type.\n * This type is similar to the built-in `Partial` type in TypeScript.\n * However, it supports deep partial modification, allowing partial modification of nested object properties.\n *\n * @typeparam T - The object type to be partially modified.\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\n/**\n * Represents a type that makes all properties of the given type required deeply.\n *\n * This utility type recursively makes all properties of the given type required, including nested properties.\n * If a property is already required, it remains unchanged.\n *\n * @typeParam T - The type to make all properties required.\n * @returns A new type with all properties required.\n *\n * @example\n * ```typescript\n * type Person = {\n * name?: string;\n * age?: number;\n * address?: {\n * street?: string;\n * city?: string;\n * };\n * };\n *\n * type RequiredPerson = DeepRequired<Person>;\n * // Result: {\n * // name: string;\n * // age: number;\n * // address: {\n * // street: string;\n * // city: string;\n * // };\n * // }\n * ```\n */\nexport type DeepRequired<T> = {\n [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P]\n}\n\n/**\n * Checks if an object has all the required properties specified by the given paths.\n *\n * @template T - The type of the object.\n * @param {DeepPartial<T>} obj - The object to check.\n * @param {string[]} paths - The paths of the required properties.\n * @returns {boolean} - Returns true if the object has all the required properties, otherwise returns false.\n */\nexport function hasRequiredProperties<T>(obj: DeepPartial<T>, paths: string[]): boolean {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n return paths.every((path) => {\n const keys = path.split('.')\n let current: any = obj\n\n for (const key of keys) {\n if (current !== undefined && key in current) {\n current = current[key]\n } else {\n return false\n }\n }\n\n return true\n })\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Retrieves the nested keys of an object type.\n *\n * @typeParam T - The object type.\n * @returns The union of all nested keys in the object type.\n *\n * @example\n * // Given the following object type:\n * type Person = {\n * name: string;\n * age: number;\n * address: {\n * street: string;\n * city: string;\n * };\n * };\n *\n * // The `NestedKeys` type will return the following union type:\n * // \"name\" | \"age\" | \"address\" | \"address.street\" | \"address.city\"\n * type AllKeys = NestedKeys<Person>;\n */\nexport type NestedKeys<T> = {\n [K in keyof T]: T[K] extends object ? K | `${K & string}.${NestedKeys<T[K]> & string}` : K\n}[keyof T]\n\n/**\n * Creates a new type that includes only the properties from the input type `T` that are required and not nullable.\n *\n * @typeParam T - The input type.\n * @returns A new type that includes only the required and non-nullable properties from `T`.\n *\n * @example\n * // Define a type with optional and nullable properties\n * type Person = {\n * name?: string;\n * age?: number | null;\n * email: string;\n * };\n *\n * // Create a new type with only the required and non-nullable properties from `Person`\n * type RequiredPerson = RequiredOnly<Person>;\n *\n * // `RequiredPerson` will be:\n * // {\n * // email: string;\n * // }\n */\nexport type RequiredOnly<T> = {\n [K in keyof T as Required<T>[K] extends NonNullable<Required<T>[K]> ? K : never]: T[K]\n}\n\n/**\n * `AtLeast` ensures that at least the specified keys `K` of the type `T` are required,\n * while the rest of the properties are optional.\n *\n * @template T - The original type.\n * @template K - The keys of `T` that should be required.\n *\n * @example\n * interface User {\n * id: string;\n * name: string;\n * email?: string;\n * age?: number;\n * }\n *\n * // At least 'id' and 'name' are required, the rest are optional\n * const user: AtLeast<User, 'email'> = {\n * id: '123',\n * name: 'Alice',\n * email: 'alice@example.com'\n * // age are optional\n * };\n */\nexport type AtLeast<T, K extends keyof T> = Partial<T> & RequiredOnly<T> & Required<Pick<T, K>>\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n * https://learn.microsoft.com/en-us/javascript/api/@azure/keyvault-certificates/requireatleastone?view=azure-node-latest\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>\n}[keyof T]\n","import * as fs from 'fs'\nimport * as path from 'path'\n\ntype FindUpReturnType<T> = T extends string ? string | undefined : string[]\n\n/**\n * Finds files in the current directory and its parent directories.\n *\n * @param {string | string[]} expectations - The expected file names.\n * @param {object} options - Options for the search.\n * @param {string} [options.cwd] - The current working directory.\n * @returns {FindUpReturnType<T>} An array of file paths that match the expectations or a single file path or undefined.\n */\nexport function findUp<T extends string | string[]>(\n expectations: T,\n options: { cwd?: string } = {}\n): FindUpReturnType<T> {\n const expectationSet = new Set(Array.isArray(expectations) ? expectations : [expectations])\n if (expectationSet.size === 0) {\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n }\n\n const cwd = options.cwd ?? process.cwd()\n let currentDir = cwd\n\n while (currentDir !== '/') {\n const dirFiles = fs.readdirSync(currentDir)\n const foundFiles = dirFiles.filter((file) => expectationSet.has(file))\n if (foundFiles.length > 0) {\n if (!Array.isArray(expectations)) {\n return path.join(currentDir, foundFiles[0]) as FindUpReturnType<T>\n }\n return foundFiles.map((file) => path.join(currentDir, file)) as FindUpReturnType<T>\n }\n currentDir = path.dirname(currentDir)\n }\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n}\n","import module from 'module'\n\n/**\n * Enables TypeScript support for the specified file or module.\n *\n * @param relativeToPath - The path relative to which the TypeScript module should be resolved.\n * @returns void\n *\n * @remarks\n * This function enables TypeScript support by registering the 'ts-node' module and configuring it with the provided options.\n * The 'ts-node' module allows for on-the-fly TypeScript transpilation without the need for a separate build step.\n *\n * @example\n * enableTS(process.cwd());\n */\nexport function enableTS(relativeToPath: string): void {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(moduleName)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const tsnode = require(modulePath)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n}\n\n/**\n * Loads a JavaScript or TypeScript module.\n *\n * @param fileName - The name of the file to load.\n * @param relativeToPath - The path relative to which the file should be resolved.\n * @returns The loaded module.\n *\n * @example\n * // Load a JavaScript module\n * const myModule = await loadJSorTS('myModule.js', '/path/to/file.js');\n *\n * // Load a TypeScript module\n * const myModule = await loadJSorTS('myModule.ts', '/path/to/file.js');\n */\nexport async function loadJSorTS(fileName: string, relativeToPath: string): Promise<any> {\n /* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(fileName)\n\n if (fileName.endsWith('.ts')) {\n enableTS(relativeToPath)\n return require(modulePath)\n } else if (fileName.endsWith('.mjs')) {\n return import(modulePath)\n } else if (fileName.endsWith('.cjs')) {\n return Promise.resolve(require(modulePath))\n } else if (fileName.endsWith('.js')) {\n try {\n return await Promise.resolve(require(modulePath))\n } catch (requireError) {\n try {\n return await import(modulePath)\n } catch (importError) {\n throw new Error(\n `Failed to load module: ${fileName}. Require error: ${requireError}. Import error: ${importError}`\n )\n }\n }\n } else {\n throw new Error(`Unsupported file extension: ${fileName}`)\n }\n /* eslint-enable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n}\n","import memoizee, { Options } from 'memoizee'\n\nexport function Memoizee<F extends (...args: any[]) => any>(options?: Options<F>): MethodDecorator {\n return function (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<F>): void {\n const originalMethod = descriptor.value\n\n if (typeof originalMethod !== 'function') {\n throw new Error(`@Memoizee decorator can only be applied to methods.`)\n }\n\n const isAsyncFunction = originalMethod.constructor.name === 'AsyncFunction'\n const memoizeOptions: Options<F> = {\n ...options,\n promise: options?.promise ?? isAsyncFunction,\n }\n\n if (!isAsyncFunction) {\n // Check if the function uses a Node.js-style callback\n const originalMethodStr = originalMethod.toString()\n if (originalMethodStr.includes('callback') || originalMethodStr.includes('cb')) {\n memoizeOptions.async = true\n }\n }\n\n const memoizedFn = memoizee(originalMethod, memoizeOptions)\n const fn = memoizedFn as F & { clear: () => void }\n fn.clear = (): void => {\n memoizedFn.clear()\n }\n\n descriptor.value = fn\n } as MethodDecorator\n}\n","/**\n * Extracts the element type from an array type, or returns the type itself if not an array\n * @template T The input type to extract from\n * @example\n * type A = ElementOf<number[]> // number\n * type B = ElementOf<string> // string\n */\ntype ElementOf<T> = T extends (infer U)[] ? U : T\n\n/**\n * Takes multiple inputs and returns their cartesian product as an array of tuples.\n * Each input can be either a single value or an array of values.\n * @template T Array of input types\n * @param inputs Rest parameter of inputs, where each input can be a single value or array\n * @returns Array of tuples containing all possible combinations of input elements\n * @example\n * cartesianProduct(1, ['a', 'b'], [true])\n * // Returns: [[1, 'a', true], [1, 'b', true]]\n *\n * cartesianProduct(['x', 'y'], [1, 2])\n * // Returns: [['x', 1], ['x', 2], ['y', 1], ['y', 2]]\n *\n * cartesianProduct()\n * // Returns: []\n *\n * cartesianProduct([], [])\n * // Returns: []\n */\n\nexport function cartesianProduct<T extends readonly unknown[]>(...inputs: T): { [K in keyof T]: ElementOf<T[K]> }[] {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n if (inputs.length === 0) {\n return [] as { [K in keyof T]: ElementOf<T[K]> }[]\n }\n\n // Convert single elements into single-element arrays\n // e.g., [1, ['a', 'b'], true] → [[1], ['a', 'b'], [true]]\n const normalizedArrays = inputs.map((input) => (Array.isArray(input) ? input : [input]))\n\n // Build combinations progressively\n // e.g., [[]] → [[1]] → [[1,'a'], [1,'b']] → [[1,'a',true], [1,'b',true]]\n return normalizedArrays.reduce<unknown[][]>(\n (combinations, currentArray) =>\n combinations.flatMap((combination) => currentArray.map((element) => [...combination, element])),\n [[]]\n ) as { [K in keyof T]: ElementOf<T[K]> }[]\n\n /* eslint-enable @typescript-eslint/no-unsafe-return */\n}\n","import http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './assert'\nexport * from './array'\nexport * from './enum'\nexport * from './pad'\nexport * from './format'\nexport * from './generic'\nexport * from './findup'\nexport * from './loader'\nexport * from './memoize'\nexport * from './combinatorial'\n\nimport { findUp as findUpSync } from './findup'\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\n/**\n * Sleeps for the specified timeout.\n *\n * @param {number} timeout - The timeout in milliseconds.\n * @returns {Promise<void>} A promise that resolves after the timeout.\n */\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\n/**\n * Gets the package manager used in the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {'yarn' | 'npm' | 'pnpm'} The package manager used in the project.\n * @throws {Error} If no package manager is found.\n */\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\n/**\n * Gets the root directory of the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {string} The root directory of the project.\n * @throws {Error} If no root directory is found.\n */\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\n/**\n * Checks if an HTTP service is reachable.\n *\n * @param {string} host - The host of the HTTP service.\n * @param {number} port - The port of the HTTP service.\n * @param {number} timeout - The timeout in milliseconds.\n * @param {string} [path] - The path to check.\n * @returns {Promise<boolean>} A promise that resolves to true if the service is reachable, false otherwise.\n */\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\n/**\n * Extracts information from a URL.\n *\n * @param {string} url - The URL to extract information from.\n * @returns {{ schema: 'http' | 'https'; host: string; port: string }} An object containing the schema, host, and port.\n * @throws {Error} If the URL is invalid.\n */\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/pad.ts","../src/types.ts","../src/format.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/assert.ts","../src/promise.ts","../src/array.ts","../src/enum.ts","../src/generic.ts","../src/findup.ts","../src/loader.ts","../src/memoize.ts","../src/combinatorial.ts","../src/index.ts"],"names":["ChainType","path","ethers","aptos","bip39","MnemonicKey","INIT_COIN_TYPE","Keypair","ed25519HdKey","Ed25519Keypair","IotaEd25519Keypair","mnemonicToHDSeed","deriveEd25519Path","keyPairFromSeed","WalletContractV4","pc","dayjs","logger","pino","level","networkToChain","isNetworkEndpointIdSupported","networkToEndpointId","dirname","getStackTrace","getCaller","module","fs","require","memoizee","http"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Bytes, Hex } from './types'\n\n/**\n * Interface representing the options for padding.\n */\ninterface PadOptions {\n /**\n * The direction of the padding. Defaults to undefined.\n */\n dir?: 'left' | 'right' | undefined\n\n /**\n * The size to pad to. Defaults to 32.\n */\n size?: number | null | undefined\n}\n\n/**\n * Type representing the return type of the padify function.\n */\nexport type PadReturnType<value extends Bytes | Hex> = value extends Hex ? Hex : Bytes\n\n/**\n * Type representing an error when the size exceeds the padding size.\n */\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\n\n/**\n * Class representing an error when the size exceeds the padding size.\n */\nexport class SizeExceedsPaddingSizeError extends Error {\n override name = 'SizeExceedsPaddingSizeError'\n constructor({ size, targetSize, type }: { size: number; targetSize: number; type: 'hex' | 'bytes' }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize})`\n )\n }\n}\n\n/**\n * Pads a hexadecimal string or byte array to a specified size.\n *\n * @param {Bytes | Hex} hexOrBytes - The hexadecimal string or byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {PadReturnType<Bytes | Hex>} The padded hexadecimal string or byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nexport function padify<value extends Bytes | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {}\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string') {\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n }\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\n/**\n * Pads a hexadecimal string to a specified size.\n *\n * @param {Hex} hex - The hexadecimal string to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Hex} The padded hexadecimal string.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padHex(hex: Hex, { dir, size = 32 }: PadOptions = {}): Hex {\n if (size === null) return hex\n const value = hex.replace('0x', '')\n if (value.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(value.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${value[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`\n}\n\n/**\n * Pads a byte array to a specified size.\n *\n * @param {Bytes} bytes - The byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Bytes} The padded byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padBytes(bytes: Bytes, { dir, size = 32 }: PadOptions = {}): Bytes {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","/**\n * Type representing a hexadecimal string prefixed with '0x'.\n */\nexport type Hex = `0x${string}`\n\n/**\n * Type representing a hash string prefixed with '0x'.\n */\nexport type Hash = `0x${string}`\n\n/**\n * Checks if a given string is a valid hexadecimal string.\n * @param value - The string to check.\n * @returns True if the string is a valid hexadecimal string, false otherwise.\n */\nexport function isHex(value: string): value is Hex {\n return /^(0x)?[0-9A-F]+$/i.test(value)\n}\n\n/**\n * Checks if a given string is a valid hash string.\n * @param value - The string to check.\n * @returns True if the string is a valid hash string, false otherwise.\n */\nexport function isHash(value: string): value is Hash {\n return /^(0x)?[0-9A-F]+/i.test(value)\n}\n\n/**\n * Represents a byte array.\n */\nexport type Bytes = Uint8Array\n","import { padify } from './pad'\nimport { Hex, isHex } from './types'\n\n/**\n * A function to convert Uint8Array to hex string.\n * @deprecated use `hexlify` instead.\n * @param {Uint8Array} bytes - The bytes to convert.\n * @returns {string} Hex string without 0x prefix, e.g., '0102030405'.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return trim0x(hexlify(bytes)).replace(/^0x/i, '')\n}\n\n/**\n * A function to convert hex string to Uint8Array.\n * @deprecated use `arrayify` instead.\n * @param {string} hex - Hex string, e.g., '0x0102030405' or '0102030405'.\n * @returns {Uint8Array} The converted Uint8Array.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return arrayify(hex)\n}\n\n/**\n * A function to trim the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {string} Hex string without 0x prefix.\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0x/i, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {Hex} Hex string with 0x prefix.\n * @throws {Error} If the input is not a valid hex string.\n */\nexport function ensure0x(hex: string): Hex {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const value = trim0x(hex)\n const retval = `0x${value}`\n return retval as Hex\n}\n\n/**\n * A function to check if a string is a hex string.\n * @deprecated use `isHex` instead.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string is a hex string, false otherwise.\n */\nexport function isHexString(value: string): boolean {\n return isHex(value)\n}\n\nfunction _arrayify(value: string | number | Uint8Array | Buffer | bigint): Uint8Array {\n if (value instanceof Uint8Array) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.match(/^(0x)?[0-9A-F]*$/i)) {\n const hex = value.replace(/^0x/i, '')\n const len = hex.length + 1 - ((hex.length + 1) % 2)\n return Uint8Array.from(Buffer.from(hex.padStart(len, '0'), 'hex'))\n }\n throw new Error('Invalid hex string')\n }\n\n if (typeof value === 'number') {\n if (value < 0) {\n throw new Error('Number must be non-negative')\n }\n const byteArray = []\n while (value > 0) {\n byteArray.push(value & 0xff)\n value >>= 8\n }\n return new Uint8Array(byteArray.reverse())\n }\n\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\n return new Uint8Array(value)\n }\n\n if (typeof value === 'bigint') {\n const hex = value.toString(16)\n return _arrayify(hex)\n }\n\n throw new Error('unsupported type')\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to Uint8Array.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @param {number} [size] - The size of the Uint8Array to return, if not specified, the size of the input will be returned.\n * @returns {Uint8Array} The converted Uint8Array.\n * @throws {Error} If the input type is unsupported.\n */\nexport function arrayify(value: string | number | Uint8Array | Buffer | bigint, size?: number): Uint8Array {\n const bytes = _arrayify(value)\n if (size === undefined) {\n return bytes\n }\n return padify(bytes, { size })\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to hex string.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @returns {Hex} The converted hex string.\n * @throws {Error} If the input type is unsupported.\n */\nexport function hexlify(value: string | number | Uint8Array | Buffer | bigint): Hex {\n if (typeof value === 'string' && /^(0x)?[0-9A-F]*$/i.test(value)) {\n const retval = '0x' + trim0x(value)\n return retval as Hex\n }\n\n const bytes = arrayify(value)\n const hex = Buffer.from(bytes).toString('hex')\n return ensure0x(hex)\n}\n","import { INIT_COIN_TYPE, MnemonicKey } from '@initia/initia.js'\nimport { Ed25519Keypair as IotaEd25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Keypair } from '@solana/web3.js'\nimport { KeyPair, deriveEd25519Path, keyPairFromSeed, mnemonicToHDSeed } from '@ton/crypto'\nimport { WalletContractV4 } from '@ton/ton'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nimport { hexlify, trim0x } from './format'\n\n/**\n * Interface representing an account mnemonic.\n */\nexport interface AccountMnemonic {\n /**\n * The mnemonic phrase.\n */\n mnemonic: string\n\n /**\n * The derivation path.\n */\n path: string\n\n /**\n * The private key (optional).\n */\n privateKey?: string\n\n /**\n * The address (optional).\n */\n address?: string\n}\n\n/**\n * Gets the BIP-0044 derivation path for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {number} account - The account index.\n * @param {number} change - The change index.\n * @param {number} index - The address index.\n * @returns {string} The BIP-0044 derivation path.\n * @throws {Error} If the chain type is unsupported.\n */\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n case ChainType.TON:\n // https://github.com/satoshilabs/slips/blob/master/slip-0044.md#registered-coin-types\n return `m/44'/607'/${account}'/${change}/${index}`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets an EVM account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/60'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The EVM account mnemonic.\n */\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\n/**\n * Gets an Aptos account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/637'/0'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Aptos account mnemonic.\n * @throws {Error} If the derivation path is invalid.\n */\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, trim0x(hexlify(bip39.mnemonicToSeedSync(normalizeMnemonics))))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\n/**\n * Gets an Initia account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/118'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The Initia account mnemonic.\n */\nexport function getInitiaAccountFromMnemonic(mnemonic: string, path = \"m/44'/118'/0'/0/0\"): AccountMnemonic {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n eth: coinType === INIT_COIN_TYPE,\n })\n {\n return {\n mnemonic,\n path,\n privateKey: key.privateKey.toString('hex'),\n address: key.accAddress,\n }\n }\n}\n\n/**\n * Gets a Solana account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/501'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Solana account mnemonic.\n */\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getSuiAccountFromMnemonic(mnemonic: string, path = \"m/44'/784'/0'/0'/0'\"): AccountMnemonic {\n const signer = Ed25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toSuiAddress(),\n }\n}\n\nexport function getIotaL1AccountFromMnemonic(mnemonic: string, path = \"m/44'/4218'/0'/0'/0'\"): AccountMnemonic {\n const signer = IotaEd25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toIotaAddress(),\n }\n}\n\n/**\n * Gets a TON account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the TON account mnemonic.\n */\nexport async function getTonAccountFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<AccountMnemonic> {\n const { wallet, keyPair } = await getTonWalletFromMnemonic(mnemonic, path, workchain)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: wallet.address.toString({ bounceable: false, urlSafe: true }),\n }\n}\n\n/**\n * Gets a key pair from a mnemonic phrase for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path] - The derivation path.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the account mnemonic.\n * @throws {Error} If the chain type is unsupported.\n */\nexport async function getKeypairFromMnemonic(\n chainType: ChainType,\n mnemonic: string,\n path?: string\n): Promise<AccountMnemonic> {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.INITIA:\n return getInitiaAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n case ChainType.TON:\n return getTonAccountFromMnemonic(mnemonic, path)\n case ChainType.SUI:\n return getSuiAccountFromMnemonic(mnemonic, path)\n case ChainType.IOTAL1:\n return getIotaL1AccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets a TON wallet from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<{ wallet: WalletContractV4; keyPair: KeyPair }>} A promise that resolves to the TON wallet and key pair.\n */\nexport async function getTonWalletFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<{ wallet: WalletContractV4; keyPair: KeyPair }> {\n const seed: Buffer = await mnemonicToHDSeed(mnemonic.split(' '))\n const indices: number[] = toPathArray(path)\n const derivedSeed: Buffer = await deriveEd25519Path(seed, indices)\n const keyPair: KeyPair = keyPairFromSeed(derivedSeed)\n return {\n wallet: WalletContractV4.create({ publicKey: keyPair.publicKey, workchain }),\n keyPair,\n }\n}\n\n/**\n * Converts a path string to an array of numbers.\n * TON currently supports hardened paths only: https://github.com/ton-org/ton-crypto/blob/master/src/hd/ed25519.ts#L32\n *\n * @param {string} path - The path string to convert.\n * @returns {number[]} An array of numbers representing the path.\n * @throws {Error} If the path is invalid.\n */\nfunction toPathArray(path: string): number[] {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"')\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/')\n const ret: number[] = Array<number>(parts.length)\n for (let i = 0; i < parts.length; i++) {\n const tmp = /(\\d+)[hH']/.exec(parts[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= 0x80000000) {\n throw new Error('Invalid child index')\n }\n }\n return ret\n}\n","import dayjs from 'dayjs'\nimport pc from 'picocolors'\nimport { pino } from 'pino'\n\nlet logger: pino.Logger | undefined = undefined\n\nexport type Logger = pino.Logger\n\n/**\n * Gets the current stack trace.\n *\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Creates a replacer function for handling circular references in JSON.stringify.\n * details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\n *\n * @returns {(key: string, value: unknown) => unknown} The replacer function.\n */\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\n/**\n * Extracts caller information from a stack trace line.\n *\n * @param {string} line - The stack trace line.\n * @returns {string} The extracted caller information.\n */\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nfunction getCaller(pattern: RegExp): string {\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n\n const index =\n stackLines.findIndex((line) => {\n return line.match(pattern)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n return fileInfo\n}\n\n/**\n * Initializes the logger with the specified log level.\n *\n * @param {string} level - The log level.\n */\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\n// Define custom colors for log levels\nconst levelColors: { [key: string]: (msg: string) => string } = {\n TRACE: pc.reset,\n DEBUG: pc.reset,\n INFO: pc.green,\n WARN: pc.yellow,\n ERROR: pc.red,\n FATAL: pc.red,\n}\n\n// Create a custom stream for logging with colors\nconst customStream = {\n write: (msg: string): void => {\n try {\n const customLogger = (output: string) => {\n if (typeof process !== 'undefined') {\n process.stdout.write(output + '\\n') // Works in Node.js\n } else {\n console.log(output) // Works in Browsers\n }\n }\n const logObj = JSON.parse(msg) // Parse the log message\n const { level, msg: message, time } = logObj\n\n const newMsgs: string[] = message.split('#caller#')\n // Format the time\n const formattedTime = dayjs(time).format('YYYY-MM-DD HH:mm:ss')\n\n // Get the appropriate color function (default to reset)\n const colorFn = levelColors[level] || pc.reset\n\n newMsgs.forEach((newMsg) => {\n customLogger(colorFn(`[${formattedTime}] [${level}] ${newMsg}`))\n })\n } catch (error) {\n console.error('Failed to process log:', msg)\n }\n },\n}\n\n/**\n * Creates a new logger with the specified log level.\n *\n * @param {string} level - The log level.\n * @returns {Logger} The created logger.\n */\nexport function createLogger(level: string): pino.Logger {\n const logger = pino(\n {\n level,\n base: undefined,\n // customLevels: customLevels.levels,\n // timestamp: () => `,\"time\":\"${formatTime(Date.now())}\"`,\n formatters: {\n level(levelLabel, levelNumber) {\n return { level: levelLabel.toUpperCase(), levelNumber: levelNumber } // 让日志级别大写\n },\n },\n hooks: {\n logMethod(inputArgs, method, level) {\n const [msg, ...args] = inputArgs\n let newMsg = msg\n let caller = ''\n if (level >= 50) {\n caller = getCaller(/lib\\/tools.js/)\n newMsg = `${caller}#caller#${msg} `\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment\n method.apply(this, [newMsg, ...args, caller])\n // method.apply(this, inputArgs)\n },\n },\n },\n customStream\n )\n return logger\n}\n\n/**\n * Gets the current logger instance.\n *\n * @returns {Logger} The current logger instance.\n * @throws {Error} If the logger is not initialized.\n */\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\n/**\n * Interface representing a contract deployment.\n */\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Finds the matching deployment based on the given options.\n * @todo Use Partial<EndpointSpec> instead of options\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment} The matching deployment.\n * @throws {Error} If the deployment is not found.\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment {\n const retval = tryFindDeployment(deployments, nameOrAddress, options)\n if (retval === undefined) {\n throw new Error(`Deployment not found: ${nameOrAddress} options:${JSON.stringify(options)}`)\n }\n return retval\n}\n\n/**\n * Tries to find the matching deployment based on the given options.\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment | undefined} The matching deployment, or undefined if not found.\n */\nexport function tryFindDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n if (ethers.utils.isAddress(deployment.address)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n } else {\n hasMatchingNameOrAddress = deployment.address === ethers.utils.getAddress(nameOrAddress)\n }\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\n/**\n * Type representing a mapping of contract addresses to EVM contracts.\n */\ntype ContractType = { [key in string]: ethers.Contract }\n\n/**\n * Cache for storing EVM contracts by their network and address.\n */\nconst contractCache: ContractType = {}\n\n/**\n * Converts a deployment to an EVM contract.\n *\n * @param {Deployment} deployment - The deployment to convert.\n * @param {ethers.providers.Provider} [provider] - The provider to use.\n * @returns {T} The EVM contract.\n * @throws {Error} If the deployment does not have ABI or bytecode.\n */\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n\n/**\n * Finds a contract based on the given options.\n *\n * @param {ethers.providers.Provider | undefined} provider - The provider to use.\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {T} The matching contract.\n * @throws {Error} If the deployment is not found.\n */\nexport function findContract<T extends ethers.Contract>(\n provider: ethers.providers.Provider | undefined,\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): T {\n const deployment = findDeployment(deployments, nameOrAddress, options)\n const retval = deploymentToEvmContract<T>(deployment, provider)\n return retval\n}\n","import module from 'module'\n\n/**\n * Returns the directory name of a path.\n *\n * @param {string} path - The path to get the directory name from.\n * @returns {string} The directory name of the path.\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\n/**\n * Gets the current stack trace.\n *\n * @param {number} [stackTraceLimit=Infinity] - The stack trace limit.\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Gets the caller of the current function.\n *\n * @returns {string | undefined} The caller of the current function.\n */\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * Returns the root path of a package.\n *\n * @param {string} packageName - The name of the package.\n * @param {string} [relativeToPath] - The path to resolve the package root relative to.\n * @returns {string} The root path of the package.\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = module.createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","/**\n * Asserts that a condition is true. If the condition is false, throws an error with the provided message.\n *\n * @param {boolean} condition - The condition to assert.\n * @param {string} [message] - The error message to throw if the condition is false.\n * @throws {Error} If the condition is false.\n */\nexport function assert(condition: boolean, message?: string): asserts condition {\n if (!condition) {\n throw new Error(`Assertion Error: ${message ?? 'condition is false'}`)\n }\n}\n\ntype Constructor<T> = new (...args: any[]) => T\ntype TypeGuard<M> = (v: unknown) => v is M\n\n/**\n * Asserts that a value is of a certain type, using a type guard function.\n * assertType can be used to assert that a value is of a certain type, and without naming a new variable explicitly.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function assertType<T, M>(\n value: T,\n typeOrGuard: TypeGuard<M> | Constructor<M>,\n message?: string\n): asserts value is T & M {\n // console.debug(typeOrGuard)\n if (typeof typeOrGuard === 'function') {\n if (typeOrGuard === (String as any) || typeOrGuard === (Number as any) || typeOrGuard === (Boolean as any)) {\n if (typeof value !== typeOrGuard.name.toLowerCase()) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else if ('prototype' in typeOrGuard && typeOrGuard.prototype !== undefined) {\n // It's a constructor\n if (!(value instanceof typeOrGuard)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else {\n // It's a type guard function\n if (!(typeOrGuard as TypeGuard<M>)(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n }\n }\n}\n\n/**\n * Asserts that a value is defined (not undefined or null).\n *\n * @param {T} [value] - The value to assert is defined.\n * @param {string} [message] - The error message to throw if the value is undefined or null.\n * @throws {Error} If the value is undefined or null.\n */\nexport function assertDefined<T>(value?: T, message?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(message ?? 'Value is undefined or null')\n }\n}\n\n/**\n * Asserts that a value is of a certain type, using a type guard function, and returns the value.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @returns {M} The value, asserted to be of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function asType<T, M>(value: T, fn: (v: unknown) => v is M, message?: string): M {\n if (!fn(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n return value\n}\n\n/**\n * Assumes that a value is of a certain type. This function does not perform any runtime checks.\n *\n * @param {unknown} value - The value to assume the type of.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assumeType<T>(value: unknown): asserts value is T {}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport { assert } from './assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * If an error occurs during the execution of the callback function, the function returns the results up to that point and the error.\n *\n * @param {T[]} elements - The array to map over.\n * @param {(item: T, index: number) => R} callbackfn - A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns {[R[], Error | undefined]} A tuple containing the array of results and an optional error.\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * Converts a string or number value to a corresponding enum value.\n *\n * @param {T} enumType - The enum object.\n * @param {string | number} value - The value to convert.\n * @returns {T[keyof T]} The converted enum value.\n * @throws {Error} If the value is not a valid enum value.\n * @example\n * // Usage\n * enum Color {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue'\n * }\n *\n * const color: Color = asEnum(Color, 'red');\n * expect(color).toBe(Color.Red);\n *\n * enum Direction {\n * Up = 1,\n * Down,\n * }\n *\n * const direction: Direction = asEnum(Direction, 1);\n * expect(direction).toBe(Direction.Up);\n */\nexport function asEnum<T extends object>(enumType: T, value: string | number): T[keyof T] {\n const enumValues = Object.values(enumType)\n\n if (enumValues.includes(value)) {\n return value as T[keyof T]\n } else {\n throw new Error(`Invalid enum value: ${value}`)\n }\n}\n","/**\n * Represents a type that allows partial modification of all properties in a given object type.\n * This type is similar to the built-in `Partial` type in TypeScript.\n * However, it supports deep partial modification, allowing partial modification of nested object properties.\n *\n * @typeparam T - The object type to be partially modified.\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\n/**\n * Represents a type that makes all properties of the given type required deeply.\n *\n * This utility type recursively makes all properties of the given type required, including nested properties.\n * If a property is already required, it remains unchanged.\n *\n * @typeParam T - The type to make all properties required.\n * @returns A new type with all properties required.\n *\n * @example\n * ```typescript\n * type Person = {\n * name?: string;\n * age?: number;\n * address?: {\n * street?: string;\n * city?: string;\n * };\n * };\n *\n * type RequiredPerson = DeepRequired<Person>;\n * // Result: {\n * // name: string;\n * // age: number;\n * // address: {\n * // street: string;\n * // city: string;\n * // };\n * // }\n * ```\n */\nexport type DeepRequired<T> = {\n [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P]\n}\n\n/**\n * Checks if an object has all the required properties specified by the given paths.\n *\n * @template T - The type of the object.\n * @param {DeepPartial<T>} obj - The object to check.\n * @param {string[]} paths - The paths of the required properties.\n * @returns {boolean} - Returns true if the object has all the required properties, otherwise returns false.\n */\nexport function hasRequiredProperties<T>(obj: DeepPartial<T>, paths: string[]): boolean {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n return paths.every((path) => {\n const keys = path.split('.')\n let current: any = obj\n\n for (const key of keys) {\n if (current !== undefined && key in current) {\n current = current[key]\n } else {\n return false\n }\n }\n\n return true\n })\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Retrieves the nested keys of an object type.\n *\n * @typeParam T - The object type.\n * @returns The union of all nested keys in the object type.\n *\n * @example\n * // Given the following object type:\n * type Person = {\n * name: string;\n * age: number;\n * address: {\n * street: string;\n * city: string;\n * };\n * };\n *\n * // The `NestedKeys` type will return the following union type:\n * // \"name\" | \"age\" | \"address\" | \"address.street\" | \"address.city\"\n * type AllKeys = NestedKeys<Person>;\n */\nexport type NestedKeys<T> = {\n [K in keyof T]: T[K] extends object ? K | `${K & string}.${NestedKeys<T[K]> & string}` : K\n}[keyof T]\n\n/**\n * Creates a new type that includes only the properties from the input type `T` that are required and not nullable.\n *\n * @typeParam T - The input type.\n * @returns A new type that includes only the required and non-nullable properties from `T`.\n *\n * @example\n * // Define a type with optional and nullable properties\n * type Person = {\n * name?: string;\n * age?: number | null;\n * email: string;\n * };\n *\n * // Create a new type with only the required and non-nullable properties from `Person`\n * type RequiredPerson = RequiredOnly<Person>;\n *\n * // `RequiredPerson` will be:\n * // {\n * // email: string;\n * // }\n */\nexport type RequiredOnly<T> = {\n [K in keyof T as Required<T>[K] extends NonNullable<Required<T>[K]> ? K : never]: T[K]\n}\n\n/**\n * `AtLeast` ensures that at least the specified keys `K` of the type `T` are required,\n * while the rest of the properties are optional.\n *\n * @template T - The original type.\n * @template K - The keys of `T` that should be required.\n *\n * @example\n * interface User {\n * id: string;\n * name: string;\n * email?: string;\n * age?: number;\n * }\n *\n * // At least 'id' and 'name' are required, the rest are optional\n * const user: AtLeast<User, 'email'> = {\n * id: '123',\n * name: 'Alice',\n * email: 'alice@example.com'\n * // age are optional\n * };\n */\nexport type AtLeast<T, K extends keyof T> = Partial<T> & RequiredOnly<T> & Required<Pick<T, K>>\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n * https://learn.microsoft.com/en-us/javascript/api/@azure/keyvault-certificates/requireatleastone?view=azure-node-latest\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>\n}[keyof T]\n","import * as fs from 'fs'\nimport * as path from 'path'\n\ntype FindUpReturnType<T> = T extends string ? string | undefined : string[]\n\n/**\n * Finds files in the current directory and its parent directories.\n *\n * @param {string | string[]} expectations - The expected file names.\n * @param {object} options - Options for the search.\n * @param {string} [options.cwd] - The current working directory.\n * @returns {FindUpReturnType<T>} An array of file paths that match the expectations or a single file path or undefined.\n */\nexport function findUp<T extends string | string[]>(\n expectations: T,\n options: { cwd?: string } = {}\n): FindUpReturnType<T> {\n const expectationSet = new Set(Array.isArray(expectations) ? expectations : [expectations])\n if (expectationSet.size === 0) {\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n }\n\n const cwd = options.cwd ?? process.cwd()\n let currentDir = cwd\n\n while (currentDir !== '/') {\n const dirFiles = fs.readdirSync(currentDir)\n const foundFiles = dirFiles.filter((file) => expectationSet.has(file))\n if (foundFiles.length > 0) {\n if (!Array.isArray(expectations)) {\n return path.join(currentDir, foundFiles[0]) as FindUpReturnType<T>\n }\n return foundFiles.map((file) => path.join(currentDir, file)) as FindUpReturnType<T>\n }\n currentDir = path.dirname(currentDir)\n }\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n}\n","import module from 'module'\n\n/**\n * Enables TypeScript support for the specified file or module.\n *\n * @param relativeToPath - The path relative to which the TypeScript module should be resolved.\n * @returns void\n *\n * @remarks\n * This function enables TypeScript support by registering the 'ts-node' module and configuring it with the provided options.\n * The 'ts-node' module allows for on-the-fly TypeScript transpilation without the need for a separate build step.\n *\n * @example\n * enableTS(process.cwd());\n */\nexport function enableTS(relativeToPath: string): void {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(moduleName)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const tsnode = require(modulePath)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n}\n\n/**\n * Loads a JavaScript or TypeScript module.\n *\n * @param fileName - The name of the file to load.\n * @param relativeToPath - The path relative to which the file should be resolved.\n * @returns The loaded module.\n *\n * @example\n * // Load a JavaScript module\n * const myModule = await loadJSorTS('myModule.js', '/path/to/file.js');\n *\n * // Load a TypeScript module\n * const myModule = await loadJSorTS('myModule.ts', '/path/to/file.js');\n */\nexport async function loadJSorTS(fileName: string, relativeToPath: string): Promise<any> {\n /* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(fileName)\n\n if (fileName.endsWith('.ts')) {\n enableTS(relativeToPath)\n return require(modulePath)\n } else if (fileName.endsWith('.mjs')) {\n return import(modulePath)\n } else if (fileName.endsWith('.cjs')) {\n return Promise.resolve(require(modulePath))\n } else if (fileName.endsWith('.js')) {\n try {\n return await Promise.resolve(require(modulePath))\n } catch (requireError) {\n try {\n return await import(modulePath)\n } catch (importError) {\n throw new Error(\n `Failed to load module: ${fileName}. Require error: ${requireError}. Import error: ${importError}`\n )\n }\n }\n } else {\n throw new Error(`Unsupported file extension: ${fileName}`)\n }\n /* eslint-enable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n}\n","import memoizee, { Options } from 'memoizee'\n\nexport function Memoizee<F extends (...args: any[]) => any>(options?: Options<F>): MethodDecorator {\n return function (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<F>): void {\n const originalMethod = descriptor.value\n\n if (typeof originalMethod !== 'function') {\n throw new Error(`@Memoizee decorator can only be applied to methods.`)\n }\n\n const isAsyncFunction = originalMethod.constructor.name === 'AsyncFunction'\n const memoizeOptions: Options<F> = {\n ...options,\n promise: options?.promise ?? isAsyncFunction,\n }\n\n if (!isAsyncFunction) {\n // Check if the function uses a Node.js-style callback\n const originalMethodStr = originalMethod.toString()\n if (originalMethodStr.includes('callback') || originalMethodStr.includes('cb')) {\n memoizeOptions.async = true\n }\n }\n\n const memoizedFn = memoizee(originalMethod, memoizeOptions)\n const fn = memoizedFn as F & { clear: () => void }\n fn.clear = (): void => {\n memoizedFn.clear()\n }\n\n descriptor.value = fn\n } as MethodDecorator\n}\n","/**\n * Extracts the element type from an array type, or returns the type itself if not an array\n * @template T The input type to extract from\n * @example\n * type A = ElementOf<number[]> // number\n * type B = ElementOf<string> // string\n */\ntype ElementOf<T> = T extends (infer U)[] ? U : T\n\n/**\n * Takes multiple inputs and returns their cartesian product as an array of tuples.\n * Each input can be either a single value or an array of values.\n * @template T Array of input types\n * @param inputs Rest parameter of inputs, where each input can be a single value or array\n * @returns Array of tuples containing all possible combinations of input elements\n * @example\n * cartesianProduct(1, ['a', 'b'], [true])\n * // Returns: [[1, 'a', true], [1, 'b', true]]\n *\n * cartesianProduct(['x', 'y'], [1, 2])\n * // Returns: [['x', 1], ['x', 2], ['y', 1], ['y', 2]]\n *\n * cartesianProduct()\n * // Returns: []\n *\n * cartesianProduct([], [])\n * // Returns: []\n */\n\nexport function cartesianProduct<T extends readonly unknown[]>(...inputs: T): { [K in keyof T]: ElementOf<T[K]> }[] {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n if (inputs.length === 0) {\n return [] as { [K in keyof T]: ElementOf<T[K]> }[]\n }\n\n // Convert single elements into single-element arrays\n // e.g., [1, ['a', 'b'], true] → [[1], ['a', 'b'], [true]]\n const normalizedArrays = inputs.map((input) => (Array.isArray(input) ? input : [input]))\n\n // Build combinations progressively\n // e.g., [[]] → [[1]] → [[1,'a'], [1,'b']] → [[1,'a',true], [1,'b',true]]\n return normalizedArrays.reduce<unknown[][]>(\n (combinations, currentArray) =>\n combinations.flatMap((combination) => currentArray.map((element) => [...combination, element])),\n [[]]\n ) as { [K in keyof T]: ElementOf<T[K]> }[]\n\n /* eslint-enable @typescript-eslint/no-unsafe-return */\n}\n","import http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './assert'\nexport * from './array'\nexport * from './enum'\nexport * from './pad'\nexport * from './format'\nexport * from './generic'\nexport * from './findup'\nexport * from './loader'\nexport * from './memoize'\nexport * from './combinatorial'\n\nimport { findUp as findUpSync } from './findup'\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\n/**\n * Sleeps for the specified timeout.\n *\n * @param {number} timeout - The timeout in milliseconds.\n * @returns {Promise<void>} A promise that resolves after the timeout.\n */\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\n/**\n * Gets the package manager used in the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {'yarn' | 'npm' | 'pnpm'} The package manager used in the project.\n * @throws {Error} If no package manager is found.\n */\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\n/**\n * Gets the root directory of the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {string} The root directory of the project.\n * @throws {Error} If no root directory is found.\n */\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\n/**\n * Checks if an HTTP service is reachable.\n *\n * @param {string} host - The host of the HTTP service.\n * @param {number} port - The port of the HTTP service.\n * @param {number} timeout - The timeout in milliseconds.\n * @param {string} [path] - The path to check.\n * @returns {Promise<boolean>} A promise that resolves to true if the service is reachable, false otherwise.\n */\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\n/**\n * Extracts information from a URL.\n *\n * @param {string} url - The URL to extract information from.\n * @returns {{ schema: 'http' | 'https'; host: string; port: string }} An object containing the schema, host, and port.\n * @throws {Error} If the URL is invalid.\n */\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -100,7 +100,7 @@ declare function getInitiaAccountFromMnemonic(mnemonic: string, path?: string):
|
|
|
100
100
|
*/
|
|
101
101
|
declare function getSolanaAccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
102
102
|
declare function getSuiAccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
103
|
-
declare function
|
|
103
|
+
declare function getIotaL1AccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
104
104
|
/**
|
|
105
105
|
* Gets a TON account from a mnemonic phrase.
|
|
106
106
|
*
|
|
@@ -762,4 +762,4 @@ declare function extractUrlInfo(url: string): {
|
|
|
762
762
|
port: string;
|
|
763
763
|
};
|
|
764
764
|
|
|
765
|
-
export { type AccountMnemonic, type AtLeast, type Bytes, type DeepPartial, type DeepRequired, type Deployment, type Factory, type Hash, type Hex, type Logger, Memoizee, type NestedKeys, type NonPromise, type PadReturnType, type RequireAtLeastOne, type RequiredOnly, SizeExceedsPaddingSizeError, type SizeExceedsPaddingSizeErrorType, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic,
|
|
765
|
+
export { type AccountMnemonic, type AtLeast, type Bytes, type DeepPartial, type DeepRequired, type Deployment, type Factory, type Hash, type Hex, type Logger, Memoizee, type NestedKeys, type NonPromise, type PadReturnType, type RequireAtLeastOne, type RequiredOnly, SizeExceedsPaddingSizeError, type SizeExceedsPaddingSizeErrorType, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic, getIotaL1AccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, getSuiAccountFromMnemonic, getTonAccountFromMnemonic, getTonWalletFromMnemonic, hasRequiredProperties, hexToBytes, hexlify, initLogger, isHash, isHex, isHexString, isHttpServiceReachable, loadJSorTS, logger, padify, parallel, pkgroot, safeMap, sequence, sleep, trim0x, tryFindDeployment };
|
package/dist/index.d.ts
CHANGED
|
@@ -100,7 +100,7 @@ declare function getInitiaAccountFromMnemonic(mnemonic: string, path?: string):
|
|
|
100
100
|
*/
|
|
101
101
|
declare function getSolanaAccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
102
102
|
declare function getSuiAccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
103
|
-
declare function
|
|
103
|
+
declare function getIotaL1AccountFromMnemonic(mnemonic: string, path?: string): AccountMnemonic;
|
|
104
104
|
/**
|
|
105
105
|
* Gets a TON account from a mnemonic phrase.
|
|
106
106
|
*
|
|
@@ -762,4 +762,4 @@ declare function extractUrlInfo(url: string): {
|
|
|
762
762
|
port: string;
|
|
763
763
|
};
|
|
764
764
|
|
|
765
|
-
export { type AccountMnemonic, type AtLeast, type Bytes, type DeepPartial, type DeepRequired, type Deployment, type Factory, type Hash, type Hex, type Logger, Memoizee, type NestedKeys, type NonPromise, type PadReturnType, type RequireAtLeastOne, type RequiredOnly, SizeExceedsPaddingSizeError, type SizeExceedsPaddingSizeErrorType, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic,
|
|
765
|
+
export { type AccountMnemonic, type AtLeast, type Bytes, type DeepPartial, type DeepRequired, type Deployment, type Factory, type Hash, type Hex, type Logger, Memoizee, type NestedKeys, type NonPromise, type PadReturnType, type RequireAtLeastOne, type RequiredOnly, SizeExceedsPaddingSizeError, type SizeExceedsPaddingSizeErrorType, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic, getIotaL1AccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, getSuiAccountFromMnemonic, getTonAccountFromMnemonic, getTonWalletFromMnemonic, hasRequiredProperties, hexToBytes, hexlify, initLogger, isHash, isHex, isHexString, isHttpServiceReachable, loadJSorTS, logger, padify, parallel, pkgroot, safeMap, sequence, sleep, trim0x, tryFindDeployment };
|
package/dist/index.mjs
CHANGED
|
@@ -219,7 +219,7 @@ function getSuiAccountFromMnemonic(mnemonic, path3 = "m/44'/784'/0'/0'/0'") {
|
|
|
219
219
|
address: signer.toSuiAddress()
|
|
220
220
|
};
|
|
221
221
|
}
|
|
222
|
-
function
|
|
222
|
+
function getIotaL1AccountFromMnemonic(mnemonic, path3 = "m/44'/4218'/0'/0'/0'") {
|
|
223
223
|
const signer = Ed25519Keypair$1.deriveKeypair(mnemonic, path3);
|
|
224
224
|
return {
|
|
225
225
|
mnemonic,
|
|
@@ -251,8 +251,8 @@ async function getKeypairFromMnemonic(chainType, mnemonic, path3) {
|
|
|
251
251
|
return getTonAccountFromMnemonic(mnemonic, path3);
|
|
252
252
|
case ChainType.SUI:
|
|
253
253
|
return getSuiAccountFromMnemonic(mnemonic, path3);
|
|
254
|
-
case ChainType.
|
|
255
|
-
return
|
|
254
|
+
case ChainType.IOTAL1:
|
|
255
|
+
return getIotaL1AccountFromMnemonic(mnemonic, path3);
|
|
256
256
|
default:
|
|
257
257
|
throw new Error(`Unsupported chain: ${chainType}`);
|
|
258
258
|
}
|
|
@@ -741,6 +741,6 @@ function extractUrlInfo(url) {
|
|
|
741
741
|
};
|
|
742
742
|
}
|
|
743
743
|
|
|
744
|
-
export { Memoizee, SizeExceedsPaddingSizeError, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic,
|
|
744
|
+
export { Memoizee, SizeExceedsPaddingSizeError, arrayify, asEnum, asType, assert, assertDefined, assertType, assumeType, bytesToHex, cartesianProduct, createLogger, deploymentToEvmContract, dirname, enableTS, ensure0x, extractUrlInfo, findContract, findDeployment, findUp, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getInitiaAccountFromMnemonic, getIotaL1AccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, getSuiAccountFromMnemonic, getTonAccountFromMnemonic, getTonWalletFromMnemonic, hasRequiredProperties, hexToBytes, hexlify, initLogger, isHash, isHex, isHexString, isHttpServiceReachable, loadJSorTS, logger2 as logger, padify, parallel, pkgroot, safeMap, sequence, sleep, trim0x, tryFindDeployment };
|
|
745
745
|
//# sourceMappingURL=index.mjs.map
|
|
746
746
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pad.ts","../src/types.ts","../src/format.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/assert.ts","../src/promise.ts","../src/array.ts","../src/enum.ts","../src/generic.ts","../src/findup.ts","../src/loader.ts","../src/memoize.ts","../src/combinatorial.ts","../src/index.ts"],"names":["path","IotaEd25519Keypair","logger","level","ethers","dirname","getStackTrace","getCaller","module","require"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Bytes, Hex } from './types'\n\n/**\n * Interface representing the options for padding.\n */\ninterface PadOptions {\n /**\n * The direction of the padding. Defaults to undefined.\n */\n dir?: 'left' | 'right' | undefined\n\n /**\n * The size to pad to. Defaults to 32.\n */\n size?: number | null | undefined\n}\n\n/**\n * Type representing the return type of the padify function.\n */\nexport type PadReturnType<value extends Bytes | Hex> = value extends Hex ? Hex : Bytes\n\n/**\n * Type representing an error when the size exceeds the padding size.\n */\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\n\n/**\n * Class representing an error when the size exceeds the padding size.\n */\nexport class SizeExceedsPaddingSizeError extends Error {\n override name = 'SizeExceedsPaddingSizeError'\n constructor({ size, targetSize, type }: { size: number; targetSize: number; type: 'hex' | 'bytes' }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize})`\n )\n }\n}\n\n/**\n * Pads a hexadecimal string or byte array to a specified size.\n *\n * @param {Bytes | Hex} hexOrBytes - The hexadecimal string or byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {PadReturnType<Bytes | Hex>} The padded hexadecimal string or byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nexport function padify<value extends Bytes | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {}\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string') {\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n }\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\n/**\n * Pads a hexadecimal string to a specified size.\n *\n * @param {Hex} hex - The hexadecimal string to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Hex} The padded hexadecimal string.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padHex(hex: Hex, { dir, size = 32 }: PadOptions = {}): Hex {\n if (size === null) return hex\n const value = hex.replace('0x', '')\n if (value.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(value.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${value[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`\n}\n\n/**\n * Pads a byte array to a specified size.\n *\n * @param {Bytes} bytes - The byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Bytes} The padded byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padBytes(bytes: Bytes, { dir, size = 32 }: PadOptions = {}): Bytes {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","/**\n * Type representing a hexadecimal string prefixed with '0x'.\n */\nexport type Hex = `0x${string}`\n\n/**\n * Type representing a hash string prefixed with '0x'.\n */\nexport type Hash = `0x${string}`\n\n/**\n * Checks if a given string is a valid hexadecimal string.\n * @param value - The string to check.\n * @returns True if the string is a valid hexadecimal string, false otherwise.\n */\nexport function isHex(value: string): value is Hex {\n return /^(0x)?[0-9A-F]+$/i.test(value)\n}\n\n/**\n * Checks if a given string is a valid hash string.\n * @param value - The string to check.\n * @returns True if the string is a valid hash string, false otherwise.\n */\nexport function isHash(value: string): value is Hash {\n return /^(0x)?[0-9A-F]+/i.test(value)\n}\n\n/**\n * Represents a byte array.\n */\nexport type Bytes = Uint8Array\n","import { padify } from './pad'\nimport { Hex, isHex } from './types'\n\n/**\n * A function to convert Uint8Array to hex string.\n * @deprecated use `hexlify` instead.\n * @param {Uint8Array} bytes - The bytes to convert.\n * @returns {string} Hex string without 0x prefix, e.g., '0102030405'.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return trim0x(hexlify(bytes)).replace(/^0x/i, '')\n}\n\n/**\n * A function to convert hex string to Uint8Array.\n * @deprecated use `arrayify` instead.\n * @param {string} hex - Hex string, e.g., '0x0102030405' or '0102030405'.\n * @returns {Uint8Array} The converted Uint8Array.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return arrayify(hex)\n}\n\n/**\n * A function to trim the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {string} Hex string without 0x prefix.\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0x/i, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {Hex} Hex string with 0x prefix.\n * @throws {Error} If the input is not a valid hex string.\n */\nexport function ensure0x(hex: string): Hex {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const value = trim0x(hex)\n const retval = `0x${value}`\n return retval as Hex\n}\n\n/**\n * A function to check if a string is a hex string.\n * @deprecated use `isHex` instead.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string is a hex string, false otherwise.\n */\nexport function isHexString(value: string): boolean {\n return isHex(value)\n}\n\nfunction _arrayify(value: string | number | Uint8Array | Buffer | bigint): Uint8Array {\n if (value instanceof Uint8Array) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.match(/^(0x)?[0-9A-F]*$/i)) {\n const hex = value.replace(/^0x/i, '')\n const len = hex.length + 1 - ((hex.length + 1) % 2)\n return Uint8Array.from(Buffer.from(hex.padStart(len, '0'), 'hex'))\n }\n throw new Error('Invalid hex string')\n }\n\n if (typeof value === 'number') {\n if (value < 0) {\n throw new Error('Number must be non-negative')\n }\n const byteArray = []\n while (value > 0) {\n byteArray.push(value & 0xff)\n value >>= 8\n }\n return new Uint8Array(byteArray.reverse())\n }\n\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\n return new Uint8Array(value)\n }\n\n if (typeof value === 'bigint') {\n const hex = value.toString(16)\n return _arrayify(hex)\n }\n\n throw new Error('unsupported type')\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to Uint8Array.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @param {number} [size] - The size of the Uint8Array to return, if not specified, the size of the input will be returned.\n * @returns {Uint8Array} The converted Uint8Array.\n * @throws {Error} If the input type is unsupported.\n */\nexport function arrayify(value: string | number | Uint8Array | Buffer | bigint, size?: number): Uint8Array {\n const bytes = _arrayify(value)\n if (size === undefined) {\n return bytes\n }\n return padify(bytes, { size })\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to hex string.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @returns {Hex} The converted hex string.\n * @throws {Error} If the input type is unsupported.\n */\nexport function hexlify(value: string | number | Uint8Array | Buffer | bigint): Hex {\n if (typeof value === 'string' && /^(0x)?[0-9A-F]*$/i.test(value)) {\n const retval = '0x' + trim0x(value)\n return retval as Hex\n }\n\n const bytes = arrayify(value)\n const hex = Buffer.from(bytes).toString('hex')\n return ensure0x(hex)\n}\n","import { INIT_COIN_TYPE, MnemonicKey } from '@initia/initia.js'\nimport { Ed25519Keypair as IotaEd25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Keypair } from '@solana/web3.js'\nimport { KeyPair, deriveEd25519Path, keyPairFromSeed, mnemonicToHDSeed } from '@ton/crypto'\nimport { WalletContractV4 } from '@ton/ton'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nimport { hexlify, trim0x } from './format'\n\n/**\n * Interface representing an account mnemonic.\n */\nexport interface AccountMnemonic {\n /**\n * The mnemonic phrase.\n */\n mnemonic: string\n\n /**\n * The derivation path.\n */\n path: string\n\n /**\n * The private key (optional).\n */\n privateKey?: string\n\n /**\n * The address (optional).\n */\n address?: string\n}\n\n/**\n * Gets the BIP-0044 derivation path for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {number} account - The account index.\n * @param {number} change - The change index.\n * @param {number} index - The address index.\n * @returns {string} The BIP-0044 derivation path.\n * @throws {Error} If the chain type is unsupported.\n */\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n case ChainType.TON:\n // https://github.com/satoshilabs/slips/blob/master/slip-0044.md#registered-coin-types\n return `m/44'/607'/${account}'/${change}/${index}`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets an EVM account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/60'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The EVM account mnemonic.\n */\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\n/**\n * Gets an Aptos account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/637'/0'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Aptos account mnemonic.\n * @throws {Error} If the derivation path is invalid.\n */\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, trim0x(hexlify(bip39.mnemonicToSeedSync(normalizeMnemonics))))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\n/**\n * Gets an Initia account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/118'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The Initia account mnemonic.\n */\nexport function getInitiaAccountFromMnemonic(mnemonic: string, path = \"m/44'/118'/0'/0/0\"): AccountMnemonic {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n eth: coinType === INIT_COIN_TYPE,\n })\n {\n return {\n mnemonic,\n path,\n privateKey: key.privateKey.toString('hex'),\n address: key.accAddress,\n }\n }\n}\n\n/**\n * Gets a Solana account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/501'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Solana account mnemonic.\n */\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getSuiAccountFromMnemonic(mnemonic: string, path = \"m/44'/784'/0'/0'/0'\"): AccountMnemonic {\n const signer = Ed25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toSuiAddress(),\n }\n}\n\nexport function getIotamoveAccountFromMnemonic(mnemonic: string, path = \"m/44'/4218'/0'/0'/0'\"): AccountMnemonic {\n const signer = IotaEd25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toIotaAddress(),\n }\n}\n\n/**\n * Gets a TON account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the TON account mnemonic.\n */\nexport async function getTonAccountFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<AccountMnemonic> {\n const { wallet, keyPair } = await getTonWalletFromMnemonic(mnemonic, path, workchain)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: wallet.address.toString({ bounceable: false, urlSafe: true }),\n }\n}\n\n/**\n * Gets a key pair from a mnemonic phrase for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path] - The derivation path.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the account mnemonic.\n * @throws {Error} If the chain type is unsupported.\n */\nexport async function getKeypairFromMnemonic(\n chainType: ChainType,\n mnemonic: string,\n path?: string\n): Promise<AccountMnemonic> {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.INITIA:\n return getInitiaAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n case ChainType.TON:\n return getTonAccountFromMnemonic(mnemonic, path)\n case ChainType.SUI:\n return getSuiAccountFromMnemonic(mnemonic, path)\n case ChainType.IOTAMOVE:\n return getIotamoveAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets a TON wallet from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<{ wallet: WalletContractV4; keyPair: KeyPair }>} A promise that resolves to the TON wallet and key pair.\n */\nexport async function getTonWalletFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<{ wallet: WalletContractV4; keyPair: KeyPair }> {\n const seed: Buffer = await mnemonicToHDSeed(mnemonic.split(' '))\n const indices: number[] = toPathArray(path)\n const derivedSeed: Buffer = await deriveEd25519Path(seed, indices)\n const keyPair: KeyPair = keyPairFromSeed(derivedSeed)\n return {\n wallet: WalletContractV4.create({ publicKey: keyPair.publicKey, workchain }),\n keyPair,\n }\n}\n\n/**\n * Converts a path string to an array of numbers.\n * TON currently supports hardened paths only: https://github.com/ton-org/ton-crypto/blob/master/src/hd/ed25519.ts#L32\n *\n * @param {string} path - The path string to convert.\n * @returns {number[]} An array of numbers representing the path.\n * @throws {Error} If the path is invalid.\n */\nfunction toPathArray(path: string): number[] {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"')\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/')\n const ret: number[] = Array<number>(parts.length)\n for (let i = 0; i < parts.length; i++) {\n const tmp = /(\\d+)[hH']/.exec(parts[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= 0x80000000) {\n throw new Error('Invalid child index')\n }\n }\n return ret\n}\n","import dayjs from 'dayjs'\nimport pc from 'picocolors'\nimport { pino } from 'pino'\n\nlet logger: pino.Logger | undefined = undefined\n\nexport type Logger = pino.Logger\n\n/**\n * Gets the current stack trace.\n *\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Creates a replacer function for handling circular references in JSON.stringify.\n * details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\n *\n * @returns {(key: string, value: unknown) => unknown} The replacer function.\n */\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\n/**\n * Extracts caller information from a stack trace line.\n *\n * @param {string} line - The stack trace line.\n * @returns {string} The extracted caller information.\n */\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nfunction getCaller(pattern: RegExp): string {\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n\n const index =\n stackLines.findIndex((line) => {\n return line.match(pattern)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n return fileInfo\n}\n\n/**\n * Initializes the logger with the specified log level.\n *\n * @param {string} level - The log level.\n */\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\n// Define custom colors for log levels\nconst levelColors: { [key: string]: (msg: string) => string } = {\n TRACE: pc.reset,\n DEBUG: pc.reset,\n INFO: pc.green,\n WARN: pc.yellow,\n ERROR: pc.red,\n FATAL: pc.red,\n}\n\n// Create a custom stream for logging with colors\nconst customStream = {\n write: (msg: string): void => {\n try {\n const customLogger = (output: string) => {\n if (typeof process !== 'undefined') {\n process.stdout.write(output + '\\n') // Works in Node.js\n } else {\n console.log(output) // Works in Browsers\n }\n }\n const logObj = JSON.parse(msg) // Parse the log message\n const { level, msg: message, time } = logObj\n\n const newMsgs: string[] = message.split('#caller#')\n // Format the time\n const formattedTime = dayjs(time).format('YYYY-MM-DD HH:mm:ss')\n\n // Get the appropriate color function (default to reset)\n const colorFn = levelColors[level] || pc.reset\n\n newMsgs.forEach((newMsg) => {\n customLogger(colorFn(`[${formattedTime}] [${level}] ${newMsg}`))\n })\n } catch (error) {\n console.error('Failed to process log:', msg)\n }\n },\n}\n\n/**\n * Creates a new logger with the specified log level.\n *\n * @param {string} level - The log level.\n * @returns {Logger} The created logger.\n */\nexport function createLogger(level: string): pino.Logger {\n const logger = pino(\n {\n level,\n base: undefined,\n // customLevels: customLevels.levels,\n // timestamp: () => `,\"time\":\"${formatTime(Date.now())}\"`,\n formatters: {\n level(levelLabel, levelNumber) {\n return { level: levelLabel.toUpperCase(), levelNumber: levelNumber } // 让日志级别大写\n },\n },\n hooks: {\n logMethod(inputArgs, method, level) {\n const [msg, ...args] = inputArgs\n let newMsg = msg\n let caller = ''\n if (level >= 50) {\n caller = getCaller(/lib\\/tools.js/)\n newMsg = `${caller}#caller#${msg} `\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment\n method.apply(this, [newMsg, ...args, caller])\n // method.apply(this, inputArgs)\n },\n },\n },\n customStream\n )\n return logger\n}\n\n/**\n * Gets the current logger instance.\n *\n * @returns {Logger} The current logger instance.\n * @throws {Error} If the logger is not initialized.\n */\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\n/**\n * Interface representing a contract deployment.\n */\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Finds the matching deployment based on the given options.\n * @todo Use Partial<EndpointSpec> instead of options\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment} The matching deployment.\n * @throws {Error} If the deployment is not found.\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment {\n const retval = tryFindDeployment(deployments, nameOrAddress, options)\n if (retval === undefined) {\n throw new Error(`Deployment not found: ${nameOrAddress} options:${JSON.stringify(options)}`)\n }\n return retval\n}\n\n/**\n * Tries to find the matching deployment based on the given options.\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment | undefined} The matching deployment, or undefined if not found.\n */\nexport function tryFindDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n if (ethers.utils.isAddress(deployment.address)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n } else {\n hasMatchingNameOrAddress = deployment.address === ethers.utils.getAddress(nameOrAddress)\n }\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\n/**\n * Type representing a mapping of contract addresses to EVM contracts.\n */\ntype ContractType = { [key in string]: ethers.Contract }\n\n/**\n * Cache for storing EVM contracts by their network and address.\n */\nconst contractCache: ContractType = {}\n\n/**\n * Converts a deployment to an EVM contract.\n *\n * @param {Deployment} deployment - The deployment to convert.\n * @param {ethers.providers.Provider} [provider] - The provider to use.\n * @returns {T} The EVM contract.\n * @throws {Error} If the deployment does not have ABI or bytecode.\n */\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n\n/**\n * Finds a contract based on the given options.\n *\n * @param {ethers.providers.Provider | undefined} provider - The provider to use.\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {T} The matching contract.\n * @throws {Error} If the deployment is not found.\n */\nexport function findContract<T extends ethers.Contract>(\n provider: ethers.providers.Provider | undefined,\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): T {\n const deployment = findDeployment(deployments, nameOrAddress, options)\n const retval = deploymentToEvmContract<T>(deployment, provider)\n return retval\n}\n","import module from 'module'\n\n/**\n * Returns the directory name of a path.\n *\n * @param {string} path - The path to get the directory name from.\n * @returns {string} The directory name of the path.\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\n/**\n * Gets the current stack trace.\n *\n * @param {number} [stackTraceLimit=Infinity] - The stack trace limit.\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Gets the caller of the current function.\n *\n * @returns {string | undefined} The caller of the current function.\n */\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * Returns the root path of a package.\n *\n * @param {string} packageName - The name of the package.\n * @param {string} [relativeToPath] - The path to resolve the package root relative to.\n * @returns {string} The root path of the package.\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = module.createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","/**\n * Asserts that a condition is true. If the condition is false, throws an error with the provided message.\n *\n * @param {boolean} condition - The condition to assert.\n * @param {string} [message] - The error message to throw if the condition is false.\n * @throws {Error} If the condition is false.\n */\nexport function assert(condition: boolean, message?: string): asserts condition {\n if (!condition) {\n throw new Error(`Assertion Error: ${message ?? 'condition is false'}`)\n }\n}\n\ntype Constructor<T> = new (...args: any[]) => T\ntype TypeGuard<M> = (v: unknown) => v is M\n\n/**\n * Asserts that a value is of a certain type, using a type guard function.\n * assertType can be used to assert that a value is of a certain type, and without naming a new variable explicitly.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function assertType<T, M>(\n value: T,\n typeOrGuard: TypeGuard<M> | Constructor<M>,\n message?: string\n): asserts value is T & M {\n // console.debug(typeOrGuard)\n if (typeof typeOrGuard === 'function') {\n if (typeOrGuard === (String as any) || typeOrGuard === (Number as any) || typeOrGuard === (Boolean as any)) {\n if (typeof value !== typeOrGuard.name.toLowerCase()) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else if ('prototype' in typeOrGuard && typeOrGuard.prototype !== undefined) {\n // It's a constructor\n if (!(value instanceof typeOrGuard)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else {\n // It's a type guard function\n if (!(typeOrGuard as TypeGuard<M>)(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n }\n }\n}\n\n/**\n * Asserts that a value is defined (not undefined or null).\n *\n * @param {T} [value] - The value to assert is defined.\n * @param {string} [message] - The error message to throw if the value is undefined or null.\n * @throws {Error} If the value is undefined or null.\n */\nexport function assertDefined<T>(value?: T, message?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(message ?? 'Value is undefined or null')\n }\n}\n\n/**\n * Asserts that a value is of a certain type, using a type guard function, and returns the value.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @returns {M} The value, asserted to be of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function asType<T, M>(value: T, fn: (v: unknown) => v is M, message?: string): M {\n if (!fn(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n return value\n}\n\n/**\n * Assumes that a value is of a certain type. This function does not perform any runtime checks.\n *\n * @param {unknown} value - The value to assume the type of.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assumeType<T>(value: unknown): asserts value is T {}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport { assert } from './assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * If an error occurs during the execution of the callback function, the function returns the results up to that point and the error.\n *\n * @param {T[]} elements - The array to map over.\n * @param {(item: T, index: number) => R} callbackfn - A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns {[R[], Error | undefined]} A tuple containing the array of results and an optional error.\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * Converts a string or number value to a corresponding enum value.\n *\n * @param {T} enumType - The enum object.\n * @param {string | number} value - The value to convert.\n * @returns {T[keyof T]} The converted enum value.\n * @throws {Error} If the value is not a valid enum value.\n * @example\n * // Usage\n * enum Color {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue'\n * }\n *\n * const color: Color = asEnum(Color, 'red');\n * expect(color).toBe(Color.Red);\n *\n * enum Direction {\n * Up = 1,\n * Down,\n * }\n *\n * const direction: Direction = asEnum(Direction, 1);\n * expect(direction).toBe(Direction.Up);\n */\nexport function asEnum<T extends object>(enumType: T, value: string | number): T[keyof T] {\n const enumValues = Object.values(enumType)\n\n if (enumValues.includes(value)) {\n return value as T[keyof T]\n } else {\n throw new Error(`Invalid enum value: ${value}`)\n }\n}\n","/**\n * Represents a type that allows partial modification of all properties in a given object type.\n * This type is similar to the built-in `Partial` type in TypeScript.\n * However, it supports deep partial modification, allowing partial modification of nested object properties.\n *\n * @typeparam T - The object type to be partially modified.\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\n/**\n * Represents a type that makes all properties of the given type required deeply.\n *\n * This utility type recursively makes all properties of the given type required, including nested properties.\n * If a property is already required, it remains unchanged.\n *\n * @typeParam T - The type to make all properties required.\n * @returns A new type with all properties required.\n *\n * @example\n * ```typescript\n * type Person = {\n * name?: string;\n * age?: number;\n * address?: {\n * street?: string;\n * city?: string;\n * };\n * };\n *\n * type RequiredPerson = DeepRequired<Person>;\n * // Result: {\n * // name: string;\n * // age: number;\n * // address: {\n * // street: string;\n * // city: string;\n * // };\n * // }\n * ```\n */\nexport type DeepRequired<T> = {\n [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P]\n}\n\n/**\n * Checks if an object has all the required properties specified by the given paths.\n *\n * @template T - The type of the object.\n * @param {DeepPartial<T>} obj - The object to check.\n * @param {string[]} paths - The paths of the required properties.\n * @returns {boolean} - Returns true if the object has all the required properties, otherwise returns false.\n */\nexport function hasRequiredProperties<T>(obj: DeepPartial<T>, paths: string[]): boolean {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n return paths.every((path) => {\n const keys = path.split('.')\n let current: any = obj\n\n for (const key of keys) {\n if (current !== undefined && key in current) {\n current = current[key]\n } else {\n return false\n }\n }\n\n return true\n })\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Retrieves the nested keys of an object type.\n *\n * @typeParam T - The object type.\n * @returns The union of all nested keys in the object type.\n *\n * @example\n * // Given the following object type:\n * type Person = {\n * name: string;\n * age: number;\n * address: {\n * street: string;\n * city: string;\n * };\n * };\n *\n * // The `NestedKeys` type will return the following union type:\n * // \"name\" | \"age\" | \"address\" | \"address.street\" | \"address.city\"\n * type AllKeys = NestedKeys<Person>;\n */\nexport type NestedKeys<T> = {\n [K in keyof T]: T[K] extends object ? K | `${K & string}.${NestedKeys<T[K]> & string}` : K\n}[keyof T]\n\n/**\n * Creates a new type that includes only the properties from the input type `T` that are required and not nullable.\n *\n * @typeParam T - The input type.\n * @returns A new type that includes only the required and non-nullable properties from `T`.\n *\n * @example\n * // Define a type with optional and nullable properties\n * type Person = {\n * name?: string;\n * age?: number | null;\n * email: string;\n * };\n *\n * // Create a new type with only the required and non-nullable properties from `Person`\n * type RequiredPerson = RequiredOnly<Person>;\n *\n * // `RequiredPerson` will be:\n * // {\n * // email: string;\n * // }\n */\nexport type RequiredOnly<T> = {\n [K in keyof T as Required<T>[K] extends NonNullable<Required<T>[K]> ? K : never]: T[K]\n}\n\n/**\n * `AtLeast` ensures that at least the specified keys `K` of the type `T` are required,\n * while the rest of the properties are optional.\n *\n * @template T - The original type.\n * @template K - The keys of `T` that should be required.\n *\n * @example\n * interface User {\n * id: string;\n * name: string;\n * email?: string;\n * age?: number;\n * }\n *\n * // At least 'id' and 'name' are required, the rest are optional\n * const user: AtLeast<User, 'email'> = {\n * id: '123',\n * name: 'Alice',\n * email: 'alice@example.com'\n * // age are optional\n * };\n */\nexport type AtLeast<T, K extends keyof T> = Partial<T> & RequiredOnly<T> & Required<Pick<T, K>>\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n * https://learn.microsoft.com/en-us/javascript/api/@azure/keyvault-certificates/requireatleastone?view=azure-node-latest\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>\n}[keyof T]\n","import * as fs from 'fs'\nimport * as path from 'path'\n\ntype FindUpReturnType<T> = T extends string ? string | undefined : string[]\n\n/**\n * Finds files in the current directory and its parent directories.\n *\n * @param {string | string[]} expectations - The expected file names.\n * @param {object} options - Options for the search.\n * @param {string} [options.cwd] - The current working directory.\n * @returns {FindUpReturnType<T>} An array of file paths that match the expectations or a single file path or undefined.\n */\nexport function findUp<T extends string | string[]>(\n expectations: T,\n options: { cwd?: string } = {}\n): FindUpReturnType<T> {\n const expectationSet = new Set(Array.isArray(expectations) ? expectations : [expectations])\n if (expectationSet.size === 0) {\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n }\n\n const cwd = options.cwd ?? process.cwd()\n let currentDir = cwd\n\n while (currentDir !== '/') {\n const dirFiles = fs.readdirSync(currentDir)\n const foundFiles = dirFiles.filter((file) => expectationSet.has(file))\n if (foundFiles.length > 0) {\n if (!Array.isArray(expectations)) {\n return path.join(currentDir, foundFiles[0]) as FindUpReturnType<T>\n }\n return foundFiles.map((file) => path.join(currentDir, file)) as FindUpReturnType<T>\n }\n currentDir = path.dirname(currentDir)\n }\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n}\n","import module from 'module'\n\n/**\n * Enables TypeScript support for the specified file or module.\n *\n * @param relativeToPath - The path relative to which the TypeScript module should be resolved.\n * @returns void\n *\n * @remarks\n * This function enables TypeScript support by registering the 'ts-node' module and configuring it with the provided options.\n * The 'ts-node' module allows for on-the-fly TypeScript transpilation without the need for a separate build step.\n *\n * @example\n * enableTS(process.cwd());\n */\nexport function enableTS(relativeToPath: string): void {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(moduleName)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const tsnode = require(modulePath)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n}\n\n/**\n * Loads a JavaScript or TypeScript module.\n *\n * @param fileName - The name of the file to load.\n * @param relativeToPath - The path relative to which the file should be resolved.\n * @returns The loaded module.\n *\n * @example\n * // Load a JavaScript module\n * const myModule = await loadJSorTS('myModule.js', '/path/to/file.js');\n *\n * // Load a TypeScript module\n * const myModule = await loadJSorTS('myModule.ts', '/path/to/file.js');\n */\nexport async function loadJSorTS(fileName: string, relativeToPath: string): Promise<any> {\n /* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(fileName)\n\n if (fileName.endsWith('.ts')) {\n enableTS(relativeToPath)\n return require(modulePath)\n } else if (fileName.endsWith('.mjs')) {\n return import(modulePath)\n } else if (fileName.endsWith('.cjs')) {\n return Promise.resolve(require(modulePath))\n } else if (fileName.endsWith('.js')) {\n try {\n return await Promise.resolve(require(modulePath))\n } catch (requireError) {\n try {\n return await import(modulePath)\n } catch (importError) {\n throw new Error(\n `Failed to load module: ${fileName}. Require error: ${requireError}. Import error: ${importError}`\n )\n }\n }\n } else {\n throw new Error(`Unsupported file extension: ${fileName}`)\n }\n /* eslint-enable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n}\n","import memoizee, { Options } from 'memoizee'\n\nexport function Memoizee<F extends (...args: any[]) => any>(options?: Options<F>): MethodDecorator {\n return function (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<F>): void {\n const originalMethod = descriptor.value\n\n if (typeof originalMethod !== 'function') {\n throw new Error(`@Memoizee decorator can only be applied to methods.`)\n }\n\n const isAsyncFunction = originalMethod.constructor.name === 'AsyncFunction'\n const memoizeOptions: Options<F> = {\n ...options,\n promise: options?.promise ?? isAsyncFunction,\n }\n\n if (!isAsyncFunction) {\n // Check if the function uses a Node.js-style callback\n const originalMethodStr = originalMethod.toString()\n if (originalMethodStr.includes('callback') || originalMethodStr.includes('cb')) {\n memoizeOptions.async = true\n }\n }\n\n const memoizedFn = memoizee(originalMethod, memoizeOptions)\n const fn = memoizedFn as F & { clear: () => void }\n fn.clear = (): void => {\n memoizedFn.clear()\n }\n\n descriptor.value = fn\n } as MethodDecorator\n}\n","/**\n * Extracts the element type from an array type, or returns the type itself if not an array\n * @template T The input type to extract from\n * @example\n * type A = ElementOf<number[]> // number\n * type B = ElementOf<string> // string\n */\ntype ElementOf<T> = T extends (infer U)[] ? U : T\n\n/**\n * Takes multiple inputs and returns their cartesian product as an array of tuples.\n * Each input can be either a single value or an array of values.\n * @template T Array of input types\n * @param inputs Rest parameter of inputs, where each input can be a single value or array\n * @returns Array of tuples containing all possible combinations of input elements\n * @example\n * cartesianProduct(1, ['a', 'b'], [true])\n * // Returns: [[1, 'a', true], [1, 'b', true]]\n *\n * cartesianProduct(['x', 'y'], [1, 2])\n * // Returns: [['x', 1], ['x', 2], ['y', 1], ['y', 2]]\n *\n * cartesianProduct()\n * // Returns: []\n *\n * cartesianProduct([], [])\n * // Returns: []\n */\n\nexport function cartesianProduct<T extends readonly unknown[]>(...inputs: T): { [K in keyof T]: ElementOf<T[K]> }[] {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n if (inputs.length === 0) {\n return [] as { [K in keyof T]: ElementOf<T[K]> }[]\n }\n\n // Convert single elements into single-element arrays\n // e.g., [1, ['a', 'b'], true] → [[1], ['a', 'b'], [true]]\n const normalizedArrays = inputs.map((input) => (Array.isArray(input) ? input : [input]))\n\n // Build combinations progressively\n // e.g., [[]] → [[1]] → [[1,'a'], [1,'b']] → [[1,'a',true], [1,'b',true]]\n return normalizedArrays.reduce<unknown[][]>(\n (combinations, currentArray) =>\n combinations.flatMap((combination) => currentArray.map((element) => [...combination, element])),\n [[]]\n ) as { [K in keyof T]: ElementOf<T[K]> }[]\n\n /* eslint-enable @typescript-eslint/no-unsafe-return */\n}\n","import http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './assert'\nexport * from './array'\nexport * from './enum'\nexport * from './pad'\nexport * from './format'\nexport * from './generic'\nexport * from './findup'\nexport * from './loader'\nexport * from './memoize'\nexport * from './combinatorial'\n\nimport { findUp as findUpSync } from './findup'\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\n/**\n * Sleeps for the specified timeout.\n *\n * @param {number} timeout - The timeout in milliseconds.\n * @returns {Promise<void>} A promise that resolves after the timeout.\n */\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\n/**\n * Gets the package manager used in the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {'yarn' | 'npm' | 'pnpm'} The package manager used in the project.\n * @throws {Error} If no package manager is found.\n */\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\n/**\n * Gets the root directory of the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {string} The root directory of the project.\n * @throws {Error} If no root directory is found.\n */\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\n/**\n * Checks if an HTTP service is reachable.\n *\n * @param {string} host - The host of the HTTP service.\n * @param {number} port - The port of the HTTP service.\n * @param {number} timeout - The timeout in milliseconds.\n * @param {string} [path] - The path to check.\n * @returns {Promise<boolean>} A promise that resolves to true if the service is reachable, false otherwise.\n */\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\n/**\n * Extracts information from a URL.\n *\n * @param {string} url - The URL to extract information from.\n * @returns {{ schema: 'http' | 'https'; host: string; port: string }} An object containing the schema, host, and port.\n * @throws {Error} If the URL is invalid.\n */\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/pad.ts","../src/types.ts","../src/format.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/assert.ts","../src/promise.ts","../src/array.ts","../src/enum.ts","../src/generic.ts","../src/findup.ts","../src/loader.ts","../src/memoize.ts","../src/combinatorial.ts","../src/index.ts"],"names":["path","IotaEd25519Keypair","logger","level","ethers","dirname","getStackTrace","getCaller","module","require"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Bytes, Hex } from './types'\n\n/**\n * Interface representing the options for padding.\n */\ninterface PadOptions {\n /**\n * The direction of the padding. Defaults to undefined.\n */\n dir?: 'left' | 'right' | undefined\n\n /**\n * The size to pad to. Defaults to 32.\n */\n size?: number | null | undefined\n}\n\n/**\n * Type representing the return type of the padify function.\n */\nexport type PadReturnType<value extends Bytes | Hex> = value extends Hex ? Hex : Bytes\n\n/**\n * Type representing an error when the size exceeds the padding size.\n */\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\n\n/**\n * Class representing an error when the size exceeds the padding size.\n */\nexport class SizeExceedsPaddingSizeError extends Error {\n override name = 'SizeExceedsPaddingSizeError'\n constructor({ size, targetSize, type }: { size: number; targetSize: number; type: 'hex' | 'bytes' }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize})`\n )\n }\n}\n\n/**\n * Pads a hexadecimal string or byte array to a specified size.\n *\n * @param {Bytes | Hex} hexOrBytes - The hexadecimal string or byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {PadReturnType<Bytes | Hex>} The padded hexadecimal string or byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nexport function padify<value extends Bytes | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {}\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string') {\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n }\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\n/**\n * Pads a hexadecimal string to a specified size.\n *\n * @param {Hex} hex - The hexadecimal string to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Hex} The padded hexadecimal string.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padHex(hex: Hex, { dir, size = 32 }: PadOptions = {}): Hex {\n if (size === null) return hex\n const value = hex.replace('0x', '')\n if (value.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(value.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${value[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`\n}\n\n/**\n * Pads a byte array to a specified size.\n *\n * @param {Bytes} bytes - The byte array to pad.\n * @param {PadOptions} [options] - The padding options.\n * @param {'left' | 'right'} [options.dir] - The direction of the padding. Defaults to undefined.\n * @param {number} [options.size=32] - The size to pad to. Defaults to 32.\n * @returns {Bytes} The padded byte array.\n * @throws {SizeExceedsPaddingSizeError} If the size exceeds the padding size.\n */\nfunction padBytes(bytes: Bytes, { dir, size = 32 }: PadOptions = {}): Bytes {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","/**\n * Type representing a hexadecimal string prefixed with '0x'.\n */\nexport type Hex = `0x${string}`\n\n/**\n * Type representing a hash string prefixed with '0x'.\n */\nexport type Hash = `0x${string}`\n\n/**\n * Checks if a given string is a valid hexadecimal string.\n * @param value - The string to check.\n * @returns True if the string is a valid hexadecimal string, false otherwise.\n */\nexport function isHex(value: string): value is Hex {\n return /^(0x)?[0-9A-F]+$/i.test(value)\n}\n\n/**\n * Checks if a given string is a valid hash string.\n * @param value - The string to check.\n * @returns True if the string is a valid hash string, false otherwise.\n */\nexport function isHash(value: string): value is Hash {\n return /^(0x)?[0-9A-F]+/i.test(value)\n}\n\n/**\n * Represents a byte array.\n */\nexport type Bytes = Uint8Array\n","import { padify } from './pad'\nimport { Hex, isHex } from './types'\n\n/**\n * A function to convert Uint8Array to hex string.\n * @deprecated use `hexlify` instead.\n * @param {Uint8Array} bytes - The bytes to convert.\n * @returns {string} Hex string without 0x prefix, e.g., '0102030405'.\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return trim0x(hexlify(bytes)).replace(/^0x/i, '')\n}\n\n/**\n * A function to convert hex string to Uint8Array.\n * @deprecated use `arrayify` instead.\n * @param {string} hex - Hex string, e.g., '0x0102030405' or '0102030405'.\n * @returns {Uint8Array} The converted Uint8Array.\n */\nexport function hexToBytes(hex: string): Uint8Array {\n return arrayify(hex)\n}\n\n/**\n * A function to trim the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {string} Hex string without 0x prefix.\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0x/i, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string.\n * @param {string} hex - Hex string.\n * @returns {Hex} Hex string with 0x prefix.\n * @throws {Error} If the input is not a valid hex string.\n */\nexport function ensure0x(hex: string): Hex {\n if (!isHex(hex)) {\n throw new Error('invalid hex string')\n }\n const value = trim0x(hex)\n const retval = `0x${value}`\n return retval as Hex\n}\n\n/**\n * A function to check if a string is a hex string.\n * @deprecated use `isHex` instead.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string is a hex string, false otherwise.\n */\nexport function isHexString(value: string): boolean {\n return isHex(value)\n}\n\nfunction _arrayify(value: string | number | Uint8Array | Buffer | bigint): Uint8Array {\n if (value instanceof Uint8Array) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.match(/^(0x)?[0-9A-F]*$/i)) {\n const hex = value.replace(/^0x/i, '')\n const len = hex.length + 1 - ((hex.length + 1) % 2)\n return Uint8Array.from(Buffer.from(hex.padStart(len, '0'), 'hex'))\n }\n throw new Error('Invalid hex string')\n }\n\n if (typeof value === 'number') {\n if (value < 0) {\n throw new Error('Number must be non-negative')\n }\n const byteArray = []\n while (value > 0) {\n byteArray.push(value & 0xff)\n value >>= 8\n }\n return new Uint8Array(byteArray.reverse())\n }\n\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\n return new Uint8Array(value)\n }\n\n if (typeof value === 'bigint') {\n const hex = value.toString(16)\n return _arrayify(hex)\n }\n\n throw new Error('unsupported type')\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to Uint8Array.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @param {number} [size] - The size of the Uint8Array to return, if not specified, the size of the input will be returned.\n * @returns {Uint8Array} The converted Uint8Array.\n * @throws {Error} If the input type is unsupported.\n */\nexport function arrayify(value: string | number | Uint8Array | Buffer | bigint, size?: number): Uint8Array {\n const bytes = _arrayify(value)\n if (size === undefined) {\n return bytes\n }\n return padify(bytes, { size })\n}\n\n/**\n * A function to convert a string|number|Uint8Array|Buffer|BigInt to hex string.\n * @param {string | number | Uint8Array | Buffer | bigint} value - The value to convert.\n * @returns {Hex} The converted hex string.\n * @throws {Error} If the input type is unsupported.\n */\nexport function hexlify(value: string | number | Uint8Array | Buffer | bigint): Hex {\n if (typeof value === 'string' && /^(0x)?[0-9A-F]*$/i.test(value)) {\n const retval = '0x' + trim0x(value)\n return retval as Hex\n }\n\n const bytes = arrayify(value)\n const hex = Buffer.from(bytes).toString('hex')\n return ensure0x(hex)\n}\n","import { INIT_COIN_TYPE, MnemonicKey } from '@initia/initia.js'\nimport { Ed25519Keypair as IotaEd25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'\nimport { Keypair } from '@solana/web3.js'\nimport { KeyPair, deriveEd25519Path, keyPairFromSeed, mnemonicToHDSeed } from '@ton/crypto'\nimport { WalletContractV4 } from '@ton/ton'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nimport { hexlify, trim0x } from './format'\n\n/**\n * Interface representing an account mnemonic.\n */\nexport interface AccountMnemonic {\n /**\n * The mnemonic phrase.\n */\n mnemonic: string\n\n /**\n * The derivation path.\n */\n path: string\n\n /**\n * The private key (optional).\n */\n privateKey?: string\n\n /**\n * The address (optional).\n */\n address?: string\n}\n\n/**\n * Gets the BIP-0044 derivation path for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {number} account - The account index.\n * @param {number} change - The change index.\n * @param {number} index - The address index.\n * @returns {string} The BIP-0044 derivation path.\n * @throws {Error} If the chain type is unsupported.\n */\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n case ChainType.TON:\n // https://github.com/satoshilabs/slips/blob/master/slip-0044.md#registered-coin-types\n return `m/44'/607'/${account}'/${change}/${index}`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets an EVM account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/60'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The EVM account mnemonic.\n */\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\n/**\n * Gets an Aptos account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/637'/0'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Aptos account mnemonic.\n * @throws {Error} If the derivation path is invalid.\n */\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, trim0x(hexlify(bip39.mnemonicToSeedSync(normalizeMnemonics))))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\n/**\n * Gets an Initia account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/118'/0'/0/0\"] - The derivation path.\n * @returns {AccountMnemonic} The Initia account mnemonic.\n */\nexport function getInitiaAccountFromMnemonic(mnemonic: string, path = \"m/44'/118'/0'/0/0\"): AccountMnemonic {\n const [_, coinType, account, __, index] = path.match(/\\d+/g)?.map(Number) ?? [44, 118, 0, 0, 0]\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n const key = new MnemonicKey({\n mnemonic: normalizeMnemonics,\n coinType,\n account,\n index,\n eth: coinType === INIT_COIN_TYPE,\n })\n {\n return {\n mnemonic,\n path,\n privateKey: key.privateKey.toString('hex'),\n address: key.accAddress,\n }\n }\n}\n\n/**\n * Gets a Solana account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/501'/0'/0'\"] - The derivation path.\n * @returns {AccountMnemonic} The Solana account mnemonic.\n */\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getSuiAccountFromMnemonic(mnemonic: string, path = \"m/44'/784'/0'/0'/0'\"): AccountMnemonic {\n const signer = Ed25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toSuiAddress(),\n }\n}\n\nexport function getIotaL1AccountFromMnemonic(mnemonic: string, path = \"m/44'/4218'/0'/0'/0'\"): AccountMnemonic {\n const signer = IotaEd25519Keypair.deriveKeypair(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: signer.getSecretKey(),\n address: signer.toIotaAddress(),\n }\n}\n\n/**\n * Gets a TON account from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the TON account mnemonic.\n */\nexport async function getTonAccountFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<AccountMnemonic> {\n const { wallet, keyPair } = await getTonWalletFromMnemonic(mnemonic, path, workchain)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: wallet.address.toString({ bounceable: false, urlSafe: true }),\n }\n}\n\n/**\n * Gets a key pair from a mnemonic phrase for a given chain type.\n *\n * @param {ChainType} chainType - The chain type.\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path] - The derivation path.\n * @returns {Promise<AccountMnemonic>} A promise that resolves to the account mnemonic.\n * @throws {Error} If the chain type is unsupported.\n */\nexport async function getKeypairFromMnemonic(\n chainType: ChainType,\n mnemonic: string,\n path?: string\n): Promise<AccountMnemonic> {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.INITIA:\n return getInitiaAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n case ChainType.TON:\n return getTonAccountFromMnemonic(mnemonic, path)\n case ChainType.SUI:\n return getSuiAccountFromMnemonic(mnemonic, path)\n case ChainType.IOTAL1:\n return getIotaL1AccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\n/**\n * Gets a TON wallet from a mnemonic phrase.\n *\n * @param {string} mnemonic - The mnemonic phrase.\n * @param {string} [path=\"m/44'/607'/0'/0'/0'\"] - The derivation path.\n * @param {number} [workchain=0] - The workChain ID.\n * @returns {Promise<{ wallet: WalletContractV4; keyPair: KeyPair }>} A promise that resolves to the TON wallet and key pair.\n */\nexport async function getTonWalletFromMnemonic(\n mnemonic: string,\n path = \"m/44'/607'/0'/0'/0'\",\n workchain = 0\n): Promise<{ wallet: WalletContractV4; keyPair: KeyPair }> {\n const seed: Buffer = await mnemonicToHDSeed(mnemonic.split(' '))\n const indices: number[] = toPathArray(path)\n const derivedSeed: Buffer = await deriveEd25519Path(seed, indices)\n const keyPair: KeyPair = keyPairFromSeed(derivedSeed)\n return {\n wallet: WalletContractV4.create({ publicKey: keyPair.publicKey, workchain }),\n keyPair,\n }\n}\n\n/**\n * Converts a path string to an array of numbers.\n * TON currently supports hardened paths only: https://github.com/ton-org/ton-crypto/blob/master/src/hd/ed25519.ts#L32\n *\n * @param {string} path - The path string to convert.\n * @returns {number[]} An array of numbers representing the path.\n * @throws {Error} If the path is invalid.\n */\nfunction toPathArray(path: string): number[] {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"')\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/')\n const ret: number[] = Array<number>(parts.length)\n for (let i = 0; i < parts.length; i++) {\n const tmp = /(\\d+)[hH']/.exec(parts[i])\n if (tmp === null) {\n throw new Error('Invalid input')\n }\n ret[i] = parseInt(tmp[1], 10)\n\n if (ret[i] >= 0x80000000) {\n throw new Error('Invalid child index')\n }\n }\n return ret\n}\n","import dayjs from 'dayjs'\nimport pc from 'picocolors'\nimport { pino } from 'pino'\n\nlet logger: pino.Logger | undefined = undefined\n\nexport type Logger = pino.Logger\n\n/**\n * Gets the current stack trace.\n *\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Creates a replacer function for handling circular references in JSON.stringify.\n * details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\n *\n * @returns {(key: string, value: unknown) => unknown} The replacer function.\n */\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\n/**\n * Extracts caller information from a stack trace line.\n *\n * @param {string} line - The stack trace line.\n * @returns {string} The extracted caller information.\n */\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nfunction getCaller(pattern: RegExp): string {\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n\n const index =\n stackLines.findIndex((line) => {\n return line.match(pattern)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n return fileInfo\n}\n\n/**\n * Initializes the logger with the specified log level.\n *\n * @param {string} level - The log level.\n */\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\n// Define custom colors for log levels\nconst levelColors: { [key: string]: (msg: string) => string } = {\n TRACE: pc.reset,\n DEBUG: pc.reset,\n INFO: pc.green,\n WARN: pc.yellow,\n ERROR: pc.red,\n FATAL: pc.red,\n}\n\n// Create a custom stream for logging with colors\nconst customStream = {\n write: (msg: string): void => {\n try {\n const customLogger = (output: string) => {\n if (typeof process !== 'undefined') {\n process.stdout.write(output + '\\n') // Works in Node.js\n } else {\n console.log(output) // Works in Browsers\n }\n }\n const logObj = JSON.parse(msg) // Parse the log message\n const { level, msg: message, time } = logObj\n\n const newMsgs: string[] = message.split('#caller#')\n // Format the time\n const formattedTime = dayjs(time).format('YYYY-MM-DD HH:mm:ss')\n\n // Get the appropriate color function (default to reset)\n const colorFn = levelColors[level] || pc.reset\n\n newMsgs.forEach((newMsg) => {\n customLogger(colorFn(`[${formattedTime}] [${level}] ${newMsg}`))\n })\n } catch (error) {\n console.error('Failed to process log:', msg)\n }\n },\n}\n\n/**\n * Creates a new logger with the specified log level.\n *\n * @param {string} level - The log level.\n * @returns {Logger} The created logger.\n */\nexport function createLogger(level: string): pino.Logger {\n const logger = pino(\n {\n level,\n base: undefined,\n // customLevels: customLevels.levels,\n // timestamp: () => `,\"time\":\"${formatTime(Date.now())}\"`,\n formatters: {\n level(levelLabel, levelNumber) {\n return { level: levelLabel.toUpperCase(), levelNumber: levelNumber } // 让日志级别大写\n },\n },\n hooks: {\n logMethod(inputArgs, method, level) {\n const [msg, ...args] = inputArgs\n let newMsg = msg\n let caller = ''\n if (level >= 50) {\n caller = getCaller(/lib\\/tools.js/)\n newMsg = `${caller}#caller#${msg} `\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment\n method.apply(this, [newMsg, ...args, caller])\n // method.apply(this, inputArgs)\n },\n },\n },\n customStream\n )\n return logger\n}\n\n/**\n * Gets the current logger instance.\n *\n * @returns {Logger} The current logger instance.\n * @throws {Error} If the logger is not initialized.\n */\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\n/**\n * Interface representing a contract deployment.\n */\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Finds the matching deployment based on the given options.\n * @todo Use Partial<EndpointSpec> instead of options\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment} The matching deployment.\n * @throws {Error} If the deployment is not found.\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment {\n const retval = tryFindDeployment(deployments, nameOrAddress, options)\n if (retval === undefined) {\n throw new Error(`Deployment not found: ${nameOrAddress} options:${JSON.stringify(options)}`)\n }\n return retval\n}\n\n/**\n * Tries to find the matching deployment based on the given options.\n *\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {Deployment | undefined} The matching deployment, or undefined if not found.\n */\nexport function tryFindDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n if (ethers.utils.isAddress(deployment.address)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n } else {\n hasMatchingNameOrAddress = deployment.address === ethers.utils.getAddress(nameOrAddress)\n }\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\n/**\n * Type representing a mapping of contract addresses to EVM contracts.\n */\ntype ContractType = { [key in string]: ethers.Contract }\n\n/**\n * Cache for storing EVM contracts by their network and address.\n */\nconst contractCache: ContractType = {}\n\n/**\n * Converts a deployment to an EVM contract.\n *\n * @param {Deployment} deployment - The deployment to convert.\n * @param {ethers.providers.Provider} [provider] - The provider to use.\n * @returns {T} The EVM contract.\n * @throws {Error} If the deployment does not have ABI or bytecode.\n */\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n\n/**\n * Finds a contract based on the given options.\n *\n * @param {ethers.providers.Provider | undefined} provider - The provider to use.\n * @param {Deployment[]} deployments - List of deployments.\n * @param {string} nameOrAddress - Contract name or address.\n * @param {object} options - Options to match against.\n * @param {Chain} [options.chain] - The chain to match.\n * @param {string} [options.source] - The source to match.\n * @param {Network} [options.network] - The network to match.\n * @param {EndpointId} [options.endpointId] - The endpoint ID to match.\n * @returns {T} The matching contract.\n * @throws {Error} If the deployment is not found.\n */\nexport function findContract<T extends ethers.Contract>(\n provider: ethers.providers.Provider | undefined,\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): T {\n const deployment = findDeployment(deployments, nameOrAddress, options)\n const retval = deploymentToEvmContract<T>(deployment, provider)\n return retval\n}\n","import module from 'module'\n\n/**\n * Returns the directory name of a path.\n *\n * @param {string} path - The path to get the directory name from.\n * @returns {string} The directory name of the path.\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\n/**\n * Gets the current stack trace.\n *\n * @param {number} [stackTraceLimit=Infinity] - The stack trace limit.\n * @returns {string | undefined} The current stack trace.\n */\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n/**\n * Gets the caller of the current function.\n *\n * @returns {string | undefined} The caller of the current function.\n */\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * Returns the root path of a package.\n *\n * @param {string} packageName - The name of the package.\n * @param {string} [relativeToPath] - The path to resolve the package root relative to.\n * @returns {string} The root path of the package.\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = module.createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","/**\n * Asserts that a condition is true. If the condition is false, throws an error with the provided message.\n *\n * @param {boolean} condition - The condition to assert.\n * @param {string} [message] - The error message to throw if the condition is false.\n * @throws {Error} If the condition is false.\n */\nexport function assert(condition: boolean, message?: string): asserts condition {\n if (!condition) {\n throw new Error(`Assertion Error: ${message ?? 'condition is false'}`)\n }\n}\n\ntype Constructor<T> = new (...args: any[]) => T\ntype TypeGuard<M> = (v: unknown) => v is M\n\n/**\n * Asserts that a value is of a certain type, using a type guard function.\n * assertType can be used to assert that a value is of a certain type, and without naming a new variable explicitly.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function assertType<T, M>(\n value: T,\n typeOrGuard: TypeGuard<M> | Constructor<M>,\n message?: string\n): asserts value is T & M {\n // console.debug(typeOrGuard)\n if (typeof typeOrGuard === 'function') {\n if (typeOrGuard === (String as any) || typeOrGuard === (Number as any) || typeOrGuard === (Boolean as any)) {\n if (typeof value !== typeOrGuard.name.toLowerCase()) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else if ('prototype' in typeOrGuard && typeOrGuard.prototype !== undefined) {\n // It's a constructor\n if (!(value instanceof typeOrGuard)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n } else {\n // It's a type guard function\n if (!(typeOrGuard as TypeGuard<M>)(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n }\n }\n}\n\n/**\n * Asserts that a value is defined (not undefined or null).\n *\n * @param {T} [value] - The value to assert is defined.\n * @param {string} [message] - The error message to throw if the value is undefined or null.\n * @throws {Error} If the value is undefined or null.\n */\nexport function assertDefined<T>(value?: T, message?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(message ?? 'Value is undefined or null')\n }\n}\n\n/**\n * Asserts that a value is of a certain type, using a type guard function, and returns the value.\n *\n * @param {T} value - The value to assert the type of.\n * @param {(v: unknown) => v is M} fn - The type guard function.\n * @param {string} [message] - The error message to throw if the value is not of the expected type.\n * @returns {M} The value, asserted to be of the expected type.\n * @throws {Error} If the value is not of the expected type.\n */\nexport function asType<T, M>(value: T, fn: (v: unknown) => v is M, message?: string): M {\n if (!fn(value)) {\n throw new Error(`Expected value to be ${message ?? 'of correct type'}`)\n }\n return value\n}\n\n/**\n * Assumes that a value is of a certain type. This function does not perform any runtime checks.\n *\n * @param {unknown} value - The value to assume the type of.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function assumeType<T>(value: unknown): asserts value is T {}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport { assert } from './assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * If an error occurs during the execution of the callback function, the function returns the results up to that point and the error.\n *\n * @param {T[]} elements - The array to map over.\n * @param {(item: T, index: number) => R} callbackfn - A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns {[R[], Error | undefined]} A tuple containing the array of results and an optional error.\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * Converts a string or number value to a corresponding enum value.\n *\n * @param {T} enumType - The enum object.\n * @param {string | number} value - The value to convert.\n * @returns {T[keyof T]} The converted enum value.\n * @throws {Error} If the value is not a valid enum value.\n * @example\n * // Usage\n * enum Color {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue'\n * }\n *\n * const color: Color = asEnum(Color, 'red');\n * expect(color).toBe(Color.Red);\n *\n * enum Direction {\n * Up = 1,\n * Down,\n * }\n *\n * const direction: Direction = asEnum(Direction, 1);\n * expect(direction).toBe(Direction.Up);\n */\nexport function asEnum<T extends object>(enumType: T, value: string | number): T[keyof T] {\n const enumValues = Object.values(enumType)\n\n if (enumValues.includes(value)) {\n return value as T[keyof T]\n } else {\n throw new Error(`Invalid enum value: ${value}`)\n }\n}\n","/**\n * Represents a type that allows partial modification of all properties in a given object type.\n * This type is similar to the built-in `Partial` type in TypeScript.\n * However, it supports deep partial modification, allowing partial modification of nested object properties.\n *\n * @typeparam T - The object type to be partially modified.\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\n/**\n * Represents a type that makes all properties of the given type required deeply.\n *\n * This utility type recursively makes all properties of the given type required, including nested properties.\n * If a property is already required, it remains unchanged.\n *\n * @typeParam T - The type to make all properties required.\n * @returns A new type with all properties required.\n *\n * @example\n * ```typescript\n * type Person = {\n * name?: string;\n * age?: number;\n * address?: {\n * street?: string;\n * city?: string;\n * };\n * };\n *\n * type RequiredPerson = DeepRequired<Person>;\n * // Result: {\n * // name: string;\n * // age: number;\n * // address: {\n * // street: string;\n * // city: string;\n * // };\n * // }\n * ```\n */\nexport type DeepRequired<T> = {\n [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P]\n}\n\n/**\n * Checks if an object has all the required properties specified by the given paths.\n *\n * @template T - The type of the object.\n * @param {DeepPartial<T>} obj - The object to check.\n * @param {string[]} paths - The paths of the required properties.\n * @returns {boolean} - Returns true if the object has all the required properties, otherwise returns false.\n */\nexport function hasRequiredProperties<T>(obj: DeepPartial<T>, paths: string[]): boolean {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n return paths.every((path) => {\n const keys = path.split('.')\n let current: any = obj\n\n for (const key of keys) {\n if (current !== undefined && key in current) {\n current = current[key]\n } else {\n return false\n }\n }\n\n return true\n })\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Retrieves the nested keys of an object type.\n *\n * @typeParam T - The object type.\n * @returns The union of all nested keys in the object type.\n *\n * @example\n * // Given the following object type:\n * type Person = {\n * name: string;\n * age: number;\n * address: {\n * street: string;\n * city: string;\n * };\n * };\n *\n * // The `NestedKeys` type will return the following union type:\n * // \"name\" | \"age\" | \"address\" | \"address.street\" | \"address.city\"\n * type AllKeys = NestedKeys<Person>;\n */\nexport type NestedKeys<T> = {\n [K in keyof T]: T[K] extends object ? K | `${K & string}.${NestedKeys<T[K]> & string}` : K\n}[keyof T]\n\n/**\n * Creates a new type that includes only the properties from the input type `T` that are required and not nullable.\n *\n * @typeParam T - The input type.\n * @returns A new type that includes only the required and non-nullable properties from `T`.\n *\n * @example\n * // Define a type with optional and nullable properties\n * type Person = {\n * name?: string;\n * age?: number | null;\n * email: string;\n * };\n *\n * // Create a new type with only the required and non-nullable properties from `Person`\n * type RequiredPerson = RequiredOnly<Person>;\n *\n * // `RequiredPerson` will be:\n * // {\n * // email: string;\n * // }\n */\nexport type RequiredOnly<T> = {\n [K in keyof T as Required<T>[K] extends NonNullable<Required<T>[K]> ? K : never]: T[K]\n}\n\n/**\n * `AtLeast` ensures that at least the specified keys `K` of the type `T` are required,\n * while the rest of the properties are optional.\n *\n * @template T - The original type.\n * @template K - The keys of `T` that should be required.\n *\n * @example\n * interface User {\n * id: string;\n * name: string;\n * email?: string;\n * age?: number;\n * }\n *\n * // At least 'id' and 'name' are required, the rest are optional\n * const user: AtLeast<User, 'email'> = {\n * id: '123',\n * name: 'Alice',\n * email: 'alice@example.com'\n * // age are optional\n * };\n */\nexport type AtLeast<T, K extends keyof T> = Partial<T> & RequiredOnly<T> & Required<Pick<T, K>>\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n * https://learn.microsoft.com/en-us/javascript/api/@azure/keyvault-certificates/requireatleastone?view=azure-node-latest\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>\n}[keyof T]\n","import * as fs from 'fs'\nimport * as path from 'path'\n\ntype FindUpReturnType<T> = T extends string ? string | undefined : string[]\n\n/**\n * Finds files in the current directory and its parent directories.\n *\n * @param {string | string[]} expectations - The expected file names.\n * @param {object} options - Options for the search.\n * @param {string} [options.cwd] - The current working directory.\n * @returns {FindUpReturnType<T>} An array of file paths that match the expectations or a single file path or undefined.\n */\nexport function findUp<T extends string | string[]>(\n expectations: T,\n options: { cwd?: string } = {}\n): FindUpReturnType<T> {\n const expectationSet = new Set(Array.isArray(expectations) ? expectations : [expectations])\n if (expectationSet.size === 0) {\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n }\n\n const cwd = options.cwd ?? process.cwd()\n let currentDir = cwd\n\n while (currentDir !== '/') {\n const dirFiles = fs.readdirSync(currentDir)\n const foundFiles = dirFiles.filter((file) => expectationSet.has(file))\n if (foundFiles.length > 0) {\n if (!Array.isArray(expectations)) {\n return path.join(currentDir, foundFiles[0]) as FindUpReturnType<T>\n }\n return foundFiles.map((file) => path.join(currentDir, file)) as FindUpReturnType<T>\n }\n currentDir = path.dirname(currentDir)\n }\n return (Array.isArray(expectations) ? [] : undefined) as FindUpReturnType<T>\n}\n","import module from 'module'\n\n/**\n * Enables TypeScript support for the specified file or module.\n *\n * @param relativeToPath - The path relative to which the TypeScript module should be resolved.\n * @returns void\n *\n * @remarks\n * This function enables TypeScript support by registering the 'ts-node' module and configuring it with the provided options.\n * The 'ts-node' module allows for on-the-fly TypeScript transpilation without the need for a separate build step.\n *\n * @example\n * enableTS(process.cwd());\n */\nexport function enableTS(relativeToPath: string): void {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(moduleName)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const tsnode = require(modulePath)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n}\n\n/**\n * Loads a JavaScript or TypeScript module.\n *\n * @param fileName - The name of the file to load.\n * @param relativeToPath - The path relative to which the file should be resolved.\n * @returns The loaded module.\n *\n * @example\n * // Load a JavaScript module\n * const myModule = await loadJSorTS('myModule.js', '/path/to/file.js');\n *\n * // Load a TypeScript module\n * const myModule = await loadJSorTS('myModule.ts', '/path/to/file.js');\n */\nexport async function loadJSorTS(fileName: string, relativeToPath: string): Promise<any> {\n /* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n const require = module.createRequire(relativeToPath)\n const modulePath = require.resolve(fileName)\n\n if (fileName.endsWith('.ts')) {\n enableTS(relativeToPath)\n return require(modulePath)\n } else if (fileName.endsWith('.mjs')) {\n return import(modulePath)\n } else if (fileName.endsWith('.cjs')) {\n return Promise.resolve(require(modulePath))\n } else if (fileName.endsWith('.js')) {\n try {\n return await Promise.resolve(require(modulePath))\n } catch (requireError) {\n try {\n return await import(modulePath)\n } catch (importError) {\n throw new Error(\n `Failed to load module: ${fileName}. Require error: ${requireError}. Import error: ${importError}`\n )\n }\n }\n } else {\n throw new Error(`Unsupported file extension: ${fileName}`)\n }\n /* eslint-enable @typescript-eslint/no-unsafe-return, @typescript-eslint/restrict-template-expressions */\n}\n","import memoizee, { Options } from 'memoizee'\n\nexport function Memoizee<F extends (...args: any[]) => any>(options?: Options<F>): MethodDecorator {\n return function (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<F>): void {\n const originalMethod = descriptor.value\n\n if (typeof originalMethod !== 'function') {\n throw new Error(`@Memoizee decorator can only be applied to methods.`)\n }\n\n const isAsyncFunction = originalMethod.constructor.name === 'AsyncFunction'\n const memoizeOptions: Options<F> = {\n ...options,\n promise: options?.promise ?? isAsyncFunction,\n }\n\n if (!isAsyncFunction) {\n // Check if the function uses a Node.js-style callback\n const originalMethodStr = originalMethod.toString()\n if (originalMethodStr.includes('callback') || originalMethodStr.includes('cb')) {\n memoizeOptions.async = true\n }\n }\n\n const memoizedFn = memoizee(originalMethod, memoizeOptions)\n const fn = memoizedFn as F & { clear: () => void }\n fn.clear = (): void => {\n memoizedFn.clear()\n }\n\n descriptor.value = fn\n } as MethodDecorator\n}\n","/**\n * Extracts the element type from an array type, or returns the type itself if not an array\n * @template T The input type to extract from\n * @example\n * type A = ElementOf<number[]> // number\n * type B = ElementOf<string> // string\n */\ntype ElementOf<T> = T extends (infer U)[] ? U : T\n\n/**\n * Takes multiple inputs and returns their cartesian product as an array of tuples.\n * Each input can be either a single value or an array of values.\n * @template T Array of input types\n * @param inputs Rest parameter of inputs, where each input can be a single value or array\n * @returns Array of tuples containing all possible combinations of input elements\n * @example\n * cartesianProduct(1, ['a', 'b'], [true])\n * // Returns: [[1, 'a', true], [1, 'b', true]]\n *\n * cartesianProduct(['x', 'y'], [1, 2])\n * // Returns: [['x', 1], ['x', 2], ['y', 1], ['y', 2]]\n *\n * cartesianProduct()\n * // Returns: []\n *\n * cartesianProduct([], [])\n * // Returns: []\n */\n\nexport function cartesianProduct<T extends readonly unknown[]>(...inputs: T): { [K in keyof T]: ElementOf<T[K]> }[] {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n if (inputs.length === 0) {\n return [] as { [K in keyof T]: ElementOf<T[K]> }[]\n }\n\n // Convert single elements into single-element arrays\n // e.g., [1, ['a', 'b'], true] → [[1], ['a', 'b'], [true]]\n const normalizedArrays = inputs.map((input) => (Array.isArray(input) ? input : [input]))\n\n // Build combinations progressively\n // e.g., [[]] → [[1]] → [[1,'a'], [1,'b']] → [[1,'a',true], [1,'b',true]]\n return normalizedArrays.reduce<unknown[][]>(\n (combinations, currentArray) =>\n combinations.flatMap((combination) => currentArray.map((element) => [...combination, element])),\n [[]]\n ) as { [K in keyof T]: ElementOf<T[K]> }[]\n\n /* eslint-enable @typescript-eslint/no-unsafe-return */\n}\n","import http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './assert'\nexport * from './array'\nexport * from './enum'\nexport * from './pad'\nexport * from './format'\nexport * from './generic'\nexport * from './findup'\nexport * from './loader'\nexport * from './memoize'\nexport * from './combinatorial'\n\nimport { findUp as findUpSync } from './findup'\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\n/**\n * Sleeps for the specified timeout.\n *\n * @param {number} timeout - The timeout in milliseconds.\n * @returns {Promise<void>} A promise that resolves after the timeout.\n */\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\n/**\n * Gets the package manager used in the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {'yarn' | 'npm' | 'pnpm'} The package manager used in the project.\n * @throws {Error} If no package manager is found.\n */\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\n/**\n * Gets the root directory of the project.\n *\n * @param {string} [cwd] - The current working directory.\n * @returns {string} The root directory of the project.\n * @throws {Error} If no root directory is found.\n */\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\n/**\n * Checks if an HTTP service is reachable.\n *\n * @param {string} host - The host of the HTTP service.\n * @param {number} port - The port of the HTTP service.\n * @param {number} timeout - The timeout in milliseconds.\n * @param {string} [path] - The path to check.\n * @returns {Promise<boolean>} A promise that resolves to true if the service is reachable, false otherwise.\n */\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\n/**\n * Extracts information from a URL.\n *\n * @param {string} url - The URL to extract information from.\n * @returns {{ schema: 'http' | 'https'; host: string; port: string }} An object containing the schema, host, and port.\n * @throws {Error} If the URL is invalid.\n */\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-utilities",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.143",
|
|
4
4
|
"license": "BUSL-1.1",
|
|
5
5
|
"exports": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@ethersproject/bytes": "^5.8.0",
|
|
27
27
|
"@initia/initia.js": "1.0.4",
|
|
28
28
|
"@iota/iota-sdk": "^1.6.1",
|
|
29
|
-
"@layerzerolabs/lz-definitions": "^3.0.
|
|
29
|
+
"@layerzerolabs/lz-definitions": "^3.0.143",
|
|
30
30
|
"@mysten/sui": "^1.33.0",
|
|
31
31
|
"@solana/web3.js": "1.95.8",
|
|
32
32
|
"@ton/core": "^0.59.0",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@jest/globals": "^29.7.0",
|
|
46
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
47
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
46
|
+
"@layerzerolabs/tsup-config-next": "^3.0.143",
|
|
47
|
+
"@layerzerolabs/typescript-config-next": "^3.0.143",
|
|
48
48
|
"@types/jest": "^29.5.10",
|
|
49
49
|
"@types/memoizee": "^0",
|
|
50
50
|
"@types/node": "^20.10.5",
|