diff --git a/README.md b/README.md index eeb54af..bbb1bac 100644 --- a/README.md +++ b/README.md @@ -105,10 +105,33 @@ More information about available CLI arguments can be found using the `--help` f npx hardhat lz:deploy --help ``` -By following these steps, you can focus more on creating innovative omnichain solutions and less on the complexities of cross-chain communication. +## 3) Wire -

+```bash +npx hardhat lz:oapp:wire --oapp-config +``` -

- Join our community! | Follow us on X (formerly Twitter) -

+where `LZOAPP_CONFIG_FILE` is `layerzero.config.testnet.ts` or `layerzero.config.mainnet.ts`, respectively for testnet or mainnet. + +## 4) Send + +```bash +npx hardhat lz:oft:send --oapp-config --amount --src-eid --to --dst-eid +``` + +where: + +- `LZOAPP_CONFIG_FILE` is `layerzero.config.testnet.ts` or `layerzero.config.mainnet.ts`, respectively for testnet or mainnet. +- `HR_AMOUNT` is the amount to be sent, in human readable format (e.g. `1.75`) + +Upon a successful send, the script will provide you with the link to the message on LayerZero Scan. + +Once the message is delivered, you will be able to click on the destination transaction hash to verify that the OFT was sent. + +## Contract Verification + +You can verify EVM chain contracts using the LayerZero helper package: + +```bash +pnpm dlx @layerzerolabs/verify-contract -n -u -k --contracts +``` diff --git a/hardhat.config.ts b/hardhat.config.ts index d1465b8..393f985 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -12,6 +12,7 @@ import '@layerzerolabs/toolbox-hardhat' import { HardhatUserConfig, HttpNetworkAccountsUserConfig } from 'hardhat/types' import { EndpointId } from '@layerzerolabs/lz-definitions' +import './tasks/sendOFT' // Set your preferred authentication method // diff --git a/package.json b/package.json index 602d100..bcbfe0f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,9 @@ }, "devDependencies": { "@babel/core": "^7.28.4", + "@layerzerolabs/devtools-evm-hardhat": "^4.0.0", "@layerzerolabs/eslint-config-next": "~2.3.44", + "@layerzerolabs/io-devtools": "^0.3.1", "@layerzerolabs/lz-definitions": "^3.0.134", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.134", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.134", @@ -67,6 +69,9 @@ "overrides": { "ethers": "^5.7.2", "hardhat-deploy": "^0.12.1" + }, + "patchedDependencies": { + "micro-eth-signer@0.14.0": "patches/micro-eth-signer@0.14.0.patch" } }, "overrides": { diff --git a/patches/micro-eth-signer@0.14.0.patch b/patches/micro-eth-signer@0.14.0.patch new file mode 100644 index 0000000..7345165 --- /dev/null +++ b/patches/micro-eth-signer@0.14.0.patch @@ -0,0 +1,25 @@ +diff --git a/tx.js b/tx.js +index 428ee34d54cb7137fb5a96cd42b20b2f4c310186..1769339a5fc9ae7729f1e1d8185787bbe73e5075 100644 +--- a/tx.js ++++ b/tx.js +@@ -397,9 +397,10 @@ const validators = { + if (strict && address === '0x' && !data.data) + throw new Error('Empty address (0x) without contract deployment code'); + }, +- value(num) { ++ value(num, { strict }) { + abig(num); +- minmax(num, _0n, utils_ts_1.amounts.maxAmount, '>= 0 and < 100M eth'); ++ if (strict) ++ minmax(num, _0n, utils_ts_1.amounts.maxAmount, '>= 0 and < 1M eth'); + }, + data(val, { strict, data }) { + if (typeof val !== 'string') +diff --git a/tx.js.map b/tx.js.map +index 213544490e2d2f011705fe819dbae1c10032e18e..c0d5826ef949457e347b30f82f466cb42e9b630d 100644 +--- a/tx.js.map ++++ b/tx.js.map +@@ -1 +1 @@ +-{"version":3,"file":"tx.js","sourceRoot":"","sources":["src/tx.ts"],"names":[],"mappings":"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"} +\ No newline at end of file ++{"version":3,"file":"tx.js","sourceRoot":"","sources":["src/tx.ts"],"names":[],"mappings":";;;AAmQA,8BAKC;AA0QD,wCA6CC;AAWD,kCAQC;AAED,sCAEC;AAtlBD,kCAAkC;AAClC,6CAAoC;AACpC,qCAA+B;AAC/B,yCAAgE;AAEhE,sBAAsB;AAEtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAetB,MAAM,WAAW,GAAG,CAA2B,QAAW,EAA+B,EAAE;IACzF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,4BAA4B;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,CAAC,IAAI,CAAC;QACZ,YAAY,CAAC,CAAW,EAAE,KAAqB;YAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAc,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,QAAQ;gBAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,YAAY,CAAC,CAAW;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzD,qEAAqE;YACrE,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAChF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACrC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACtC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC1E,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;AAErE,SAAS,kBAAkB,CAAC,GAAW;IACrC,0CAA0C;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,GAAG,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC;AAC5F,CAAC;AACD,uDAAuD;AACvD,MAAM,SAAS,GAAG,iBAAM,CAAC;AACzB,wCAAwC;AACxC,SAAS,QAAQ,CAAC,CAAa;IAC7B,IAAI,CAAC,IAAA,kBAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC;AACD,MAAM,OAAO,GAAgC;IAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC5C,CAAC;AAKF,kEAAkE;AAClE,yCAAyC;AACzC,gCAAgC;AAChC,0EAA0E;AAC1E,kFAAkF;AAClF,6CAA6C;AAC7C,0EAA0E;AAC7D,QAAA,SAAS,GAAG;IACvB,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;QACpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACnD,qCAAqC;QACrC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;QACpB,IAAI,CAAC,IAAI,CAAC,CAAC;QACX,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,OAAO,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;YACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC;oBAClE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YACxC,CAAC;YACD,sCAAsC;YACtC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,qDAAqD;QACrD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzF,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,GACL,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACrB,CAAC;CACmB,CAAC;AAEvB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEnE,oBAAoB;AACpB,8GAA8G;AAC9G,oBAAoB;AACpB,MAAM,KAAK,GAAG,CAAO,KAAoB,EAAqB,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,IAAS;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,EAAO;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;CACF,CAAC,CAAC;AACH,kBAAkB;AAClB,MAAM,MAAM,GAAG,CAOb,MAAc,EACgB,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,IAAe;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,EAAY;QACjB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,IAAA,mBAAQ,EAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAc,CAAC;IACjE,CAAC;CACF,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CACnC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;IAChD,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CACH,CAAC;AAGF,MAAM,cAAc,GAMhB,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAGnD,QAAA,oBAAoB,GAO7B,MAAM,CAAC;IACT,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,KAAK;CACb,CAAC,CAAC;AACH,6CAA6C;AAC7C,MAAM,iBAAiB,GAUnB,MAAM,CAAC;IACT,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,YAAY;IACrB,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;CACV,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,MAAM,EAAE,qEAAqE;IACtF,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,MAAM;IAChB,oBAAoB,EAAE,MAAM;IAC5B,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,MAAM,EAAE,4DAA4D;IAC3E,IAAI,EAAE,iBAAM;IACZ,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACjC,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC;IACnC,OAAO,EAAE,YAAY;IACrB,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;CAC5C,CAAC;AAGF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAYrE,+CAA+C;AAC/C,SAAgB,SAAS,CAAC,GAAiB;IACzC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CACf,IAAO,EACP,IAAQ,EAGR,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,0CAA0C;IAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,qEAAqE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,IAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACtE,gGAAgG;IAChG,+CAA+C;IAC/C,MAAM,MAAM,GAAQ,CAAC,CAAC,IAAI,CAAC;QACzB,YAAY,CAAC,CAAC,EAAE,GAAwB;YACtC,uEAAuE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,YAAG,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,YAAY,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,YAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;gBACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,uDAAuD;YACvD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAQ,CAAC,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAkB;AAClB,MAAM,cAAc,GAWd,QAAQ,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;CAAU,EAChE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAK5B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;IACnB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE;QAClC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACnC,GAAW,CAAC,OAAO,GAAG,SAAS,CAAC;YACjC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,iBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,GAAa,CAAC;QACvB,CAAC;KACF,CAAuB,CAAC;IACzB,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAU,CAAC,CAAC;IAChE,2BAA2B;IAC3B,4BAA4B;IAC5B,GAAG,CAAC,cAAc,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,GAAG,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,MAAM,CAAQ,CAAC,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,EAAE,CAAC;AAEL,kBAAkB;AAClB,MAAM,OAAO,GAAG,QAAQ,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY;CAAU,EACzF,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAElC,kBAAkB;AAClB,MAAM,OAAO,GAAG,QAAQ,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY;CAAU,EACrH,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAClC,kBAAkB;AAClB,MAAM,OAAO,GAAG,QAAQ,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY;IAC3G,kBAAkB,EAAE,qBAAqB;CAAU,EACnD,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAClC,kBAAkB;AAClB,MAAM,OAAO,GAAG,QAAQ,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY;IAC3G,mBAAmB;CAAU,EAC7B,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC,CAAC;AAErB,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEW,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAU,CAAC,EAAE;IACpD,0FAA0F;IAC1F,+EAA+E;IAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,iBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,GAAG,iBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,GAAG,iBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,mDAAmD;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;CACvB,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,KAAK,GAGb,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAKnF,kBAAkB;AAClB,kFAAkF;AAClF,kCAAkC;AAClC,8FAA8F;AAC9F,cAAc;AAEd,SAAS,IAAI,CAAC,GAAW;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACvE,CAAC;AACD,SAAS,IAAI,CAAC,GAAwB;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAGD,SAAS,MAAM,CACb,GAAoB,EACpB,GAAoB,EACpB,GAAoB,EACpB,GAAY;IAEZ,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,MAAM,GAAG,WAAW,GAAG,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;AACjG,CAAC;AAOD,8GAA8G;AAC9G,0DAA0D;AAC1D,sGAAsG;AACtG,MAAM,UAAU,GAA+E;IAC7F,KAAK,CAAC,GAAW,EAAE,EAAE,MAAM,EAAkB;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,QAAQ,CAAC,CAAC;;YAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,oBAAoB;IACtF,CAAC;IACD,YAAY,CAAC,GAAW,EAAE,EAAE,MAAM,EAAkB;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAO,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;;YAChF,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,oBAAoB,CAAC,GAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAkB;QAChE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;;YAC1E,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACtE,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,GAAW,EAAE,EAAE,MAAM,EAAkB;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,kBAAO,CAAC,WAAW,EAAE,kBAAO,CAAC,WAAW,CAAC,CAAC;;YAC7D,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,EAAE,CAAC,OAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAkB;QAClD,IAAI,CAAC,iBAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrF,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAC1C,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,GAAW,EAAE,EAAE,MAAM,EAAkB;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,GAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAkB;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,MAAM,GAAG,kBAAO,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1F,CAAC;QACD,yBAAyB;QACzB,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAO,CAAC,eAAe;YAC9D,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,GAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAkB;QACnD,8CAA8C;QAC9C,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QACnD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAChF,CAAC;IACD,UAAU,CAAC,IAAgB;QACzB,2GAA2G;QAC3G,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,iBAAiB,CAAC,IAAyB,EAAE,IAAoB;QAC/D,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,iBAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC/E,gEAAgE;YAChE,IAAI,CAAC,OAAO,CAAC,CAAC;YACd,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF,CAAC;AAIF,MAAa,eAAgB,SAAQ,KAAK;IAGxC,YAAY,OAAe,EAAE,MAAgB;QAC3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,0CAQC;AAED,SAAgB,cAAc,CAC5B,IAAY,EACZ,IAAyB,EACzB,MAAM,GAAG,IAAI,EACb,oBAAoB,GAAG,IAAI;IAE3B,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,IAAI,CAAC,kBAAU,CAAC,cAAc,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,kBAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,SAAS,UAAU,CAAC,KAAgB;QAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,iCAAiC,IAAI,EAAE,EAAE,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,6CAA6C;YAC9E,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAY,CAAC,CAAC,CAAC,8BAA8B;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6EAA6E;YAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,wDAAwD;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjG,2CAA2C;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAY,CAAC;YAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,KAAK,iBAAiB,IAAI,EAAE,EAAE,CAAC;QAC1E,IAAI,CAAC,oBAAoB,IAAI,eAAe,CAAC,GAAG,CAAC,KAAY,CAAC;YAC5D,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,UAAU,KAAK,iDAAiD;aACxE,CAAC;QACJ,OAAO;IACT,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAI,OAAkC;SAC/C,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;SAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAa,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,kBAAkB;AAClB,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,OAAO,EAAE,OAAO;IACtB,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU;IAClF,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IACnF,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;CAChB,CAAC;AAEX,mBAAmB;AACnB,SAAgB,WAAW,CAAC,GAAiB;IAC3C,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,gBAAgB;SACb,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5C,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACL,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa,CAAC,GAAiB;IAC7C,OAAO,iBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,kCAAkC;AACrB,QAAA,OAAO,GAAQ,EAAE,SAAS,EAAT,iBAAS,EAAE,UAAU,EAAV,kBAAU,EAAE,CAAC"} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36bb905..cd93cd7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,11 @@ overrides: ethers: ^5.7.2 hardhat-deploy: ^0.12.1 +patchedDependencies: + micro-eth-signer@0.14.0: + hash: 97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10 + path: patches/micro-eth-signer@0.14.0.patch + importers: .: @@ -15,9 +20,15 @@ importers: '@babel/core': specifier: ^7.28.4 version: 7.28.4 + '@layerzerolabs/devtools-evm-hardhat': + specifier: ^4.0.0 + version: 4.0.0(9b0fa8327da86e3b7fba509046ea0f4c) '@layerzerolabs/eslint-config-next': specifier: ~2.3.44 version: 2.3.44(typescript@5.9.2) + '@layerzerolabs/io-devtools': + specifier: ^0.3.1 + version: 0.3.1(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76) '@layerzerolabs/lz-definitions': specifier: ^3.0.134 version: 3.0.134 @@ -4830,10 +4841,10 @@ snapshots: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-config-prettier: 9.1.2(eslint@8.57.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-autofix: 2.2.0(eslint@8.57.1) eslint-plugin-compat: 4.2.0(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-prettier: 5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) prettier: 3.6.2 @@ -6485,7 +6496,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) @@ -6496,18 +6507,18 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -6530,7 +6541,7 @@ snapshots: lodash.memoize: 4.1.2 semver: 7.7.2 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6541,7 +6552,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7202,7 +7213,7 @@ snapshots: json-stream-stringify: 3.1.6 keccak: 3.0.4 lodash: 4.17.21 - micro-eth-signer: 0.14.0 + micro-eth-signer: 0.14.0(patch_hash=97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10) mnemonist: 0.38.5 mocha: 10.8.2 p-map: 4.0.0 @@ -7700,7 +7711,7 @@ snapshots: methods@1.1.2: {} - micro-eth-signer@0.14.0: + micro-eth-signer@0.14.0(patch_hash=97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10): dependencies: '@noble/curves': 1.8.2 '@noble/hashes': 1.7.2 diff --git a/tasks/sendEvm.ts b/tasks/sendEvm.ts new file mode 100644 index 0000000..1916887 --- /dev/null +++ b/tasks/sendEvm.ts @@ -0,0 +1,311 @@ +import path from 'path' + +import { BigNumber, Contract, ContractTransaction } from 'ethers' +import { parseUnits } from 'ethers/lib/utils' +import { HardhatRuntimeEnvironment } from 'hardhat/types' + +import { OmniPointHardhat, createGetHreByEid } from '@layerzerolabs/devtools-evm-hardhat' +import { createLogger, promptToContinue } from '@layerzerolabs/io-devtools' +import { ChainType, endpointIdToChainType, endpointIdToNetwork } from '@layerzerolabs/lz-definitions' +import { Options, addressToBytes32 } from '@layerzerolabs/lz-v2-utilities' + +import { SendResult } from './types' +import { DebugLogger, KnownErrors, MSG_TYPE, getLayerZeroScanLink, isEmptyOptionsEvm } from './utils' + +const logger = createLogger() + +export interface EvmArgs { + srcEid: number + dstEid: number + amount: string + to: string + oappConfig: string + minAmount?: string + extraLzReceiveOptions?: string[] + extraLzComposeOptions?: string[] + extraNativeDropOptions?: string[] + composeMsg?: string + oftAddress?: string +} + +/** + * Get OApp contract address by EID from LayerZero config + */ +async function getOAppAddressByEid( + eid: number, + oappConfig: string, + hre: HardhatRuntimeEnvironment, + overrideAddress?: string +): Promise { + if (overrideAddress) { + return overrideAddress + } + + const layerZeroConfig = (await import(path.resolve('./', oappConfig))).default + const { contracts } = typeof layerZeroConfig === 'function' ? await layerZeroConfig() : layerZeroConfig + const wrapper = contracts.find((c: { contract: OmniPointHardhat }) => c.contract.eid === eid) + if (!wrapper) throw new Error(`No config for EID ${eid}`) + + return wrapper.contract.contractName + ? (await hre.deployments.get(wrapper.contract.contractName)).address + : wrapper.contract.address || '' +} + +export async function sendEvm( + { + srcEid, + dstEid, + amount, + to, + oappConfig, + minAmount, + extraLzReceiveOptions, + extraLzComposeOptions, + extraNativeDropOptions, + composeMsg, + oftAddress, + }: EvmArgs, + hre: HardhatRuntimeEnvironment +): Promise { + if (endpointIdToChainType(srcEid) !== ChainType.EVM) { + throw new Error(`non-EVM srcEid (${srcEid}) not supported here`) + } + + const getHreByEid = createGetHreByEid(hre) + let srcEidHre: HardhatRuntimeEnvironment + try { + srcEidHre = await getHreByEid(srcEid) + } catch (error) { + DebugLogger.printErrorAndFixSuggestion( + KnownErrors.ERROR_GETTING_HRE, + `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}` + ) + throw error + } + const signer = (await srcEidHre.ethers.getSigners())[0] + + // 1️⃣ resolve the OFT wrapper address + const wrapperAddress = await getOAppAddressByEid(srcEid, oappConfig, srcEidHre, oftAddress) + + // 2️⃣ load OFT ABI (enforcedOptions needed), extends token() + const oftArtifact = await srcEidHre.artifacts.readArtifact('OFT') + + // now attach + const oft = await srcEidHre.ethers.getContractAt(oftArtifact.abi, wrapperAddress, signer) + + // 🔗 Get LayerZero endpoint contract + // This is used to read the outbound nonce prior to sending, so we can report it back to the user + const endpointDep = await srcEidHre.deployments.get('EndpointV2') + const _endpointContract = new Contract(endpointDep.address, endpointDep.abi, signer) + + // Get destination OApp address for outboundNonce call + const dstEidHre = await getHreByEid(dstEid) + const dstWrapperAddress = await getOAppAddressByEid(dstEid, oappConfig, dstEidHre, oftAddress) + const dstWrapperBytes32 = addressToBytes32(dstWrapperAddress) + + // 3️⃣ fetch the underlying ERC-20 + const underlying = await oft.token() + + // 4️⃣ Check if this is a NativeOFTAdapter (token() returns address(0)) + // NativeOFTAdapter adapts the chain's native token; it doesn't require ERC20 approvals, and msg.value must include + // both the LayerZero fee and the amount being sent. We'll assume 18 decimals for native tokens. + const isNativeOFT = underlying === '0x0000000000000000000000000000000000000000' + + let decimals: number + let erc20: Contract | null = null + + if (isNativeOFT) { + logger.info('NativeOFTAdapter detected - handling native token transfer') + // Native tokens typically have 18 decimals + decimals = 18 + // No ERC20 contract needed for native tokens + } else { + erc20 = await srcEidHre.ethers.getContractAt('ERC20', underlying, signer) + // throw if no contract found + decimals = await erc20.decimals() + } + + // 5️⃣ normalize the user-supplied amount + const amountUnits: BigNumber = parseUnits(amount, decimals) + + // 6️⃣ Check if approval is required (for OFT Adapters) and handle approval — + // Skip approval check for NativeOFTAdapter since it doesn't need ERC20 approval. + if (!isNativeOFT) { + if (erc20 === null) { + throw new Error('ERC20 contract not found') + } + try { + const approvalRequired = await oft.approvalRequired() + if (approvalRequired) { + logger.info('OFT Adapter detected - checking ERC20 allowance...') + + const currentAllowance = await erc20.allowance(signer.address, wrapperAddress) + logger.info(`Current allowance: ${currentAllowance.toString()}`) + logger.info(`Required amount: ${amountUnits.toString()}`) + + if (currentAllowance.lt(amountUnits)) { + logger.info('Insufficient allowance - approving ERC20 tokens...') + const approveTx = await erc20.approve(wrapperAddress, amountUnits) + logger.info(`Approval transaction hash: ${approveTx.hash}`) + await approveTx.wait() + logger.info('ERC20 approval confirmed') + } else { + logger.info('Sufficient allowance already exists') + } + } + } catch (error) { + logger.info('No approval required (regular OFT detected)') + } + } + + // 7️⃣ hex string → Uint8Array → zero-pad to 32 bytes + const toBytes = addressToBytes32(to) + + // 8️⃣ Build options dynamically using Options.newOptions() + let options = Options.newOptions() + + if (extraLzReceiveOptions && extraLzReceiveOptions.length > 0) { + if (extraLzReceiveOptions.length % 2 !== 0) { + throw new Error( + `Invalid lzReceive options: received ${extraLzReceiveOptions.length} values, but expected pairs of gas,value` + ) + } + + for (let i = 0; i < extraLzReceiveOptions.length; i += 2) { + const gas = Number(extraLzReceiveOptions[i]) + const value = Number(extraLzReceiveOptions[i + 1]) || 0 + options = options.addExecutorLzReceiveOption(gas, value) + logger.info(`Added lzReceive option: ${gas} gas, ${value} value`) + } + } + + if (extraLzComposeOptions && extraLzComposeOptions.length > 0) { + if (extraLzComposeOptions.length % 3 !== 0) { + throw new Error( + `Invalid lzCompose options: received ${extraLzComposeOptions.length} values, but expected triplets of index,gas,value` + ) + } + + for (let i = 0; i < extraLzComposeOptions.length; i += 3) { + const index = Number(extraLzComposeOptions[i]) + const gas = Number(extraLzComposeOptions[i + 1]) + const value = Number(extraLzComposeOptions[i + 2]) || 0 + options = options.addExecutorComposeOption(index, gas, value) + logger.info(`Added lzCompose option: index ${index}, ${gas} gas, ${value} value`) + } + } + + if (extraNativeDropOptions && extraNativeDropOptions.length > 0) { + if (extraNativeDropOptions.length % 2 !== 0) { + throw new Error( + `Invalid native drop options: received ${extraNativeDropOptions.length} values, but expected pairs of amount,recipient` + ) + } + + for (let i = 0; i < extraNativeDropOptions.length; i += 2) { + const amountStr = extraNativeDropOptions[i] + const recipient = extraNativeDropOptions[i + 1] + + if (!amountStr || !recipient) { + throw new Error( + `Invalid native drop option: Both amount and recipient must be provided. Got amount="${amountStr}", recipient="${recipient}"` + ) + } + + try { + options = options.addExecutorNativeDropOption(amountStr.trim(), recipient.trim()) + logger.info(`Added native drop option: ${amountStr.trim()} wei to ${recipient.trim()}`) + } catch (error) { + const maxUint128 = BigInt('340282366920938463463374607431768211455') + const maxUint128Ether = Number(maxUint128) / 1e18 + + throw new Error( + `Failed to add native drop option with amount ${amountStr.trim()} wei. ` + + `LayerZero protocol constrains native drop amounts to uint128 maximum ` + + `(${maxUint128.toString()} wei ≈ ${maxUint128Ether.toFixed(2)} ETH). ` + + `Original error: ${error instanceof Error ? error.message : String(error)}` + ) + } + } + } + + const extraOptions = options.toHex() + + // Check whether there are extra options or enforced options. If not, warn the user. + // Read about Message Options: https://docs.layerzero.network/v2/concepts/message-options + if (isEmptyOptionsEvm(extraOptions)) { + try { + const enforcedOptions = composeMsg + ? await oft.enforcedOptions(dstEid, MSG_TYPE.SEND_AND_CALL) + : await oft.enforcedOptions(dstEid, MSG_TYPE.SEND) + + if (isEmptyOptionsEvm(enforcedOptions)) { + const proceed = await promptToContinue( + 'No extra options were included and OFT has no set enforced options. Your quote / send will most likely fail. Continue?' + ) + if (!proceed) { + throw new Error('Aborted due to missing options') + } + } + } catch (error) { + logger.debug(`Failed to check enforced options: ${error}`) + } + } + + // 9️⃣ build sendParam and dispatch + const sendParam = { + dstEid, + to: toBytes, + amountLD: amountUnits.toString(), + minAmountLD: minAmount ? parseUnits(minAmount, decimals).toString() : amountUnits.toString(), + extraOptions: extraOptions, + composeMsg: composeMsg ? composeMsg.toString() : '0x', + oftCmd: '0x', + } + + // 10️⃣ Quote + logger.info('Quoting the native gas cost for the send transaction...') + let msgFee: { nativeFee: BigNumber; lzTokenFee: BigNumber } + try { + msgFee = await oft.quoteSend(sendParam, false) + } catch (error) { + DebugLogger.printErrorAndFixSuggestion( + KnownErrors.ERROR_QUOTING_NATIVE_GAS_COST, + `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}` + ) + throw error + } + // Get the outbound nonce that will be used for this transaction (before sending) + // This is helpful for correlating the eventual receive/compose processing on the destination. + const outboundNonce = (await _endpointContract.outboundNonce(wrapperAddress, dstEid, dstWrapperBytes32)).add(1) + + logger.info('Sending the transaction...') + let tx: ContractTransaction + try { + if (isNativeOFT) { + const totalValue = msgFee.nativeFee.add(amountUnits) + logger.info( + `NativeOFTAdapter: sending with msg.value = ${totalValue.toString()} (fees: ${msgFee.nativeFee.toString()} + amount: ${amountUnits.toString()})` + ) + tx = await oft.send(sendParam, msgFee, signer.address, { + value: totalValue, + }) + } else { + tx = await oft.send(sendParam, msgFee, signer.address, { + value: msgFee.nativeFee, + }) + } + } catch (error) { + DebugLogger.printErrorAndFixSuggestion( + KnownErrors.ERROR_SENDING_TRANSACTION, + `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}` + ) + throw error + } + const receipt = await tx.wait() + + const txHash = receipt.transactionHash + const scanLink = getLayerZeroScanLink(txHash, srcEid >= 40_000 && srcEid < 50_000) + + return { txHash, scanLink, outboundNonce: outboundNonce.toString(), extraOptions } +} diff --git a/tasks/sendOFT.ts b/tasks/sendOFT.ts new file mode 100644 index 0000000..4b279bb --- /dev/null +++ b/tasks/sendOFT.ts @@ -0,0 +1,105 @@ +import { task, types } from 'hardhat/config' +import { HardhatRuntimeEnvironment } from 'hardhat/types' + +import { types as devtoolsTypes } from '@layerzerolabs/devtools-evm-hardhat' +import { ChainType, endpointIdToChainType, endpointIdToNetwork } from '@layerzerolabs/lz-definitions' + +import { EvmArgs, sendEvm } from './sendEvm' +import { SendResult } from './types' +import { DebugLogger, KnownOutputs, KnownWarnings, getBlockExplorerLink } from './utils' + +interface MasterArgs { + srcEid: number + dstEid: number + amount: string + to: string + /** Path to LayerZero config file (default: layerzero.config.ts) */ + oappConfig: string + /** Minimum amount to receive in case of custom slippage or fees (human readable units, e.g. "1.5") */ + minAmount?: string + /** Array of lzReceive options as comma-separated values "gas,value" - e.g. --extra-lz-receive-options "200000,0" */ + extraLzReceiveOptions?: string[] + /** Array of lzCompose options as comma-separated values "`gas,value" - e.g. --extra-lz-compose-options "0,500000,0" */ + extraLzComposeOptions?: string[] + /** Array of native drop options as comma-separated values "amount,recipient" - e.g. --extra-native-drop-options "1000000000000000000,0x1234..." */ + extraNativeDropOptions?: string[] + /** Arbitrary bytes message to deliver alongside the OFT */ + composeMsg?: string + /** EVM: 20-byte hex address */ + oftAddress?: string +} + +task('lz:oft:send', 'Sends OFT tokens cross‐chain from EVM chains') + .addParam('srcEid', 'Source endpoint ID', undefined, types.int) + .addParam('dstEid', 'Destination endpoint ID', undefined, types.int) + .addParam('amount', 'Amount to send (human readable units, e.g. "1.5")', undefined, types.string) + .addParam('to', 'Recipient address (20-byte hex for EVM)', undefined, types.string) + .addOptionalParam('oappConfig', 'Path to LayerZero config file', 'layerzero.config.ts', types.string) + .addOptionalParam( + 'minAmount', + 'Minimum amount to receive in case of custom slippage or fees (human readable units, e.g. "1.5")', + undefined, + types.string + ) + .addOptionalParam( + 'extraLzReceiveOptions', + 'Array of lzReceive options as comma-separated values "gas,value"', + undefined, + devtoolsTypes.csv + ) + .addOptionalParam( + 'extraLzComposeOptions', + 'Array of lzCompose options as comma-separated values "index,gas,value"', + undefined, + devtoolsTypes.csv + ) + .addOptionalParam( + 'extraNativeDropOptions', + 'Array of native drop options as comma-separated values "amount,recipient"', + undefined, + devtoolsTypes.csv + ) + .addOptionalParam('composeMsg', 'Arbitrary bytes message to deliver alongside the OFT', undefined, types.string) + .addOptionalParam( + 'oftAddress', + 'Override the source local deployment OFT address (20-byte hex for EVM)', + undefined, + types.string + ) + .setAction(async (args: MasterArgs, hre: HardhatRuntimeEnvironment) => { + const chainType = endpointIdToChainType(args.srcEid) + let result: SendResult + + if (args.oftAddress) { + DebugLogger.printWarning( + KnownWarnings.USING_OVERRIDE_OFT, + `For network: ${endpointIdToNetwork(args.srcEid)}, OFT: ${args.oftAddress}` + ) + } + + if (chainType === ChainType.EVM) { + result = await sendEvm(args as EvmArgs, hre) + } else { + throw new Error( + `The chain type ${chainType} is not supported in this OFT example. Only EVM chains are supported.` + ) + } + + DebugLogger.printLayerZeroOutput( + KnownOutputs.SENT_VIA_OFT, + `Successfully sent ${args.amount} tokens from ${endpointIdToNetwork(args.srcEid)} to ${endpointIdToNetwork(args.dstEid)}` + ) + + const explorerLink = await getBlockExplorerLink(args.srcEid, result.txHash) + if (explorerLink) { + DebugLogger.printLayerZeroOutput( + KnownOutputs.TX_HASH, + `Explorer link for source chain ${endpointIdToNetwork(args.srcEid)}: ${explorerLink}` + ) + } + + DebugLogger.printLayerZeroOutput( + KnownOutputs.EXPLORER_LINK, + `LayerZero Scan link for tracking all cross-chain transaction details: ${result.scanLink}` + ) + }) diff --git a/tasks/types.ts b/tasks/types.ts new file mode 100644 index 0000000..6d9c6a4 --- /dev/null +++ b/tasks/types.ts @@ -0,0 +1,6 @@ +export interface SendResult { + txHash: string // EVM: receipt.transactionHash + scanLink: string // LayerZeroScan link for cross-chain tracking + outboundNonce?: string + extraOptions?: string +} diff --git a/tasks/utils.ts b/tasks/utils.ts new file mode 100644 index 0000000..81c22f5 --- /dev/null +++ b/tasks/utils.ts @@ -0,0 +1,51 @@ +import { endpointIdToNetwork } from '@layerzerolabs/lz-definitions' +import { Options } from '@layerzerolabs/lz-v2-utilities' + +export const deploymentMetadataUrl = 'https://metadata.layerzero-api.com/v1/metadata/deployments' + +export async function getBlockExplorerLink(srcEid: number, txHash: string): Promise { + const network = endpointIdToNetwork(srcEid) + const res = await fetch(deploymentMetadataUrl) + if (!res.ok) return + const all = (await res.json()) as Record + const meta = all[network] + const explorer = meta?.blockExplorers?.[0]?.url + if (explorer) { + return `${explorer.replace(/\/+$/, '')}/tx/${txHash}` + } + return +} + +function formatBigIntForDisplay(n: bigint) { + return n.toLocaleString().replace(/,/g, '_') +} + +export function decodeLzReceiveOptions(hex: string): string { + try { + if (!hex || hex === '0x') return 'No options set' + const options = Options.fromOptions(hex) + const lzReceiveOpt = options.decodeExecutorLzReceiveOption() + return lzReceiveOpt + ? `gas: ${formatBigIntForDisplay(lzReceiveOpt.gas)} , value: ${formatBigIntForDisplay(lzReceiveOpt.value)} wei` + : 'No executor options' + } catch (e) { + return `Invalid options (${hex.slice(0, 12)}...)` + } +} + +export function getLayerZeroScanLink(txHash: string, isTestnet = false): string { + const baseUrl = isTestnet ? 'https://testnet.layerzeroscan.com' : 'https://layerzeroscan.com' + return `${baseUrl}/tx/${txHash}` +} + +// Local util: treat empty/absent options and the minimal type-3 header as empty +export function isEmptyOptionsEvm(optionsHex?: string): boolean { + return !optionsHex || optionsHex === '0x' || optionsHex === '0x0003' +} + +export { DebugLogger, KnownErrors, KnownOutputs, KnownWarnings } from '@layerzerolabs/io-devtools' + +export const MSG_TYPE = { + SEND: 1, + SEND_AND_CALL: 2, +}