diff --git a/.changeset/brown-donkeys-trade.md b/.changeset/brown-donkeys-trade.md new file mode 100644 index 0000000000..efa01983f1 --- /dev/null +++ b/.changeset/brown-donkeys-trade.md @@ -0,0 +1,5 @@ +--- +"create-lz-oapp": patch +--- + +Adds OFT composer library diff --git a/.changeset/chilled-fireants-try.md b/.changeset/chilled-fireants-try.md new file mode 100644 index 0000000000..f0440af362 --- /dev/null +++ b/.changeset/chilled-fireants-try.md @@ -0,0 +1,5 @@ +--- +"create-lz-oapp": patch +--- + +Adds lzCompose example diff --git a/examples/oft-composers/.env.example b/examples/oft-composers/.env.example new file mode 100644 index 0000000000..bb044889cb --- /dev/null +++ b/examples/oft-composers/.env.example @@ -0,0 +1,19 @@ +# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.- +# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ +# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' +# +# Example environment configuration +# +# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.- +# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ +# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' + +# By default, the examples support both mnemonic-based and private key-based authentication +# +# You don't need to set both of these values, just pick the one that you prefer and set that one +MNEMONIC= +PRIVATE_KEY= + +# Composer deployment variables +AAVE_V3_POOL_ADDRESS= +STARGATE_POOL_ADDRESS= \ No newline at end of file diff --git a/examples/oft-composers/.eslintignore b/examples/oft-composers/.eslintignore new file mode 100644 index 0000000000..ee9f768fda --- /dev/null +++ b/examples/oft-composers/.eslintignore @@ -0,0 +1,10 @@ +artifacts +cache +dist +node_modules +out +*.log +*.sol +*.yaml +*.lock +package-lock.json \ No newline at end of file diff --git a/examples/oft-composers/.eslintrc.js b/examples/oft-composers/.eslintrc.js new file mode 100644 index 0000000000..f0ea891fdb --- /dev/null +++ b/examples/oft-composers/.eslintrc.js @@ -0,0 +1,10 @@ +require('@rushstack/eslint-patch/modern-module-resolution'); + +module.exports = { + extends: ['@layerzerolabs/eslint-config-next/recommended'], + rules: { + // @layerzerolabs/eslint-config-next defines rules for turborepo-based projects + // that are not relevant for this particular project + 'turbo/no-undeclared-env-vars': 'off', + }, +}; diff --git a/examples/oft-composers/.gitignore b/examples/oft-composers/.gitignore new file mode 100644 index 0000000000..e2face9540 --- /dev/null +++ b/examples/oft-composers/.gitignore @@ -0,0 +1,24 @@ +node_modules +.env +coverage +coverage.json +typechain +typechain-types + +# Hardhat files +cache +artifacts + + +# LayerZero specific files +.layerzero + +# foundry test compilation files +out + +# pnpm +pnpm-error.log + +# Editor and OS files +.DS_Store +.idea diff --git a/examples/oft-composers/.nvmrc b/examples/oft-composers/.nvmrc new file mode 100644 index 0000000000..b714151ef9 --- /dev/null +++ b/examples/oft-composers/.nvmrc @@ -0,0 +1 @@ +v18.18.0 \ No newline at end of file diff --git a/examples/oft-composers/.prettierignore b/examples/oft-composers/.prettierignore new file mode 100644 index 0000000000..6e8232f5a8 --- /dev/null +++ b/examples/oft-composers/.prettierignore @@ -0,0 +1,10 @@ +artifacts/ +cache/ +dist/ +node_modules/ +out/ +*.log +*ignore +*.yaml +*.lock +package-lock.json \ No newline at end of file diff --git a/examples/oft-composers/.prettierrc.js b/examples/oft-composers/.prettierrc.js new file mode 100644 index 0000000000..6f55b4019a --- /dev/null +++ b/examples/oft-composers/.prettierrc.js @@ -0,0 +1,3 @@ +module.exports = { + ...require('@layerzerolabs/prettier-config-next'), +}; diff --git a/examples/oft-composers/README.md b/examples/oft-composers/README.md new file mode 100644 index 0000000000..6c19e02387 --- /dev/null +++ b/examples/oft-composers/README.md @@ -0,0 +1,296 @@ +

+ + LayerZero + +

+ +

+ Homepage | Docs | Developers +

+ +

LayerZero OFT Composer Examples

+ +

+ Quickstart | Configuration | Message Execution Options | Composer Overview +

+ +

+ A set of Composer examples to integrate LayerZero composer contracts with the Omnichain Fungible Token (OFT) standard. +

+ +## Table of Contents + +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [Introduction](#introduction) +- [Requirements](#requirements) +- [Scaffold this Example](#scaffold-this-example) +- [Helper Tasks](#helper-tasks) +- [Setup](#setup) + - [1. Environment Configuration](#1-environment-configuration) + - [2. Network Configuration](#2-network-configuration) + - [3. Composer Deployment Configuration](#3-composer-deployment-configuration) +- [Build](#build) +- [Deploy](#deploy) + - [UniswapV3 Composer Deployment](#uniswapv3-composer-deployment) + - [AaveV3 Composer Deployment](#aavev3-composer-deployment) +- [Enable Messaging (for manually deployed OFTs only)](#enable-messaging-for-manually-deployed-ofts-only) +- [Stargate to Aave Supply Task](#stargate-to-aave-supply-task) +- [Next Steps](#next-steps) +- [Production Deployment Checklist](#production-deployment-checklist) +- [Appendix](#appendix) + - [Running Tests](#running-tests) + - [Adding Other Chains](#adding-other-chains) + - [LayerZero Hardhat Helper Tasks (Detailed)](#layerzero-hardhat-helper-tasks-detailed) + - [Troubleshooting](#troubleshooting) + +## Prerequisite Knowledge + +Before diving into this repository you should understand: + +- [OFT Standard](https://docs.layerzero.network/v2/developers/evm/oft/quickstart) — how omnichain ERC20s are minted/burned across chains. +- [Composer Pattern](https://docs.layerzero.network/v2/developers/evm/composer/overview) — how OFT transfers can be extended with compose payloads. +- [Target Protocols](https://docs.uniswap.org/contracts/v3) — Uniswap V3 swaps and [Aave v3](https://docs.aave.com/developers/core-contracts/pool) lending flow. + +## Introduction + +The OFT Composer library demonstrates how to run **post-bridge workflows** on the destination chain. Two ready-to-run contracts live in `contracts/` and their deployment scripts live in `deploy/`: + +- `UniswapV3Composer` routes bridged tokens into a Uniswap V3 swap. +- `AaveV3Composer` routes bridged tokens through Stargate and supplies them to an Aave v3 pool. + +Learn more about [OFT (Omnichain Fungible Token)](https://docs.layerzero.network/v2/concepts/glossary#oft-omnichain-fungible-token) + +## Requirements + +- git +- Node.js ≥ 18.18 +- pnpm ≥ 8.15 (enable via `corepack enable`) + +## Scaffold this Example + +```bash +LZ_ENABLE_OFT_COMPOSERS=1 npx create-lz-oapp@latest +``` + +## Helper Tasks + +Run `pnpm hardhat` to list every built-in task. The most relevant tasks for this example are: + +- `lz:deploy` — deploy and tag composer contracts per network. +- `lz:oapp:config:init` / `lz:oapp:wire` — bootstrap and apply messaging configs. +- `lz:oft:send` — send OFT tokens without composer logic (useful for smoke tests). +- `aave:supply` — bridge tokens through Stargate and compose into `AaveV3Composer`. + + + +## Setup + +### 1. Environment Configuration + +Copy the template and fill in every value before running builds, deploys, or tasks: + +```bash +cp .env.example .env +``` + +```bash +PRIVATE_KEY="0xyourdeployer" +``` + +- `SWAP_ROUTER_ADDRESS` / `OFT_ADDRESS` are required by `deploy/UniswapV3Composer.ts`. +- `AAVE_V3_POOL_ADDRESS` / `STARGATE_POOL_ADDRESS` are required by `deploy/AaveV3Composer.ts` and by the `aave:supply` task. +- Add any other per-chain secrets (like Tenderly keys) that your Hardhat networks need. + +### 2. Network Configuration + +Edit `hardhat.config.ts` and align networks with the Endpoint IDs you intend to use. Example configuration: + +```ts +const config: HardhatUserConfig = { + networks: { + base: { + eid: EndpointId.BASESEP_V2_TESTNET, + url: process.env.RPC_URL_BASESEP_TESTNET ?? 'https://base-sepolia.gateway.tenderly.co', + accounts, + }, + arbitrum: { + eid: EndpointId.ARBSEP_V2_TESTNET, + url: process.env.RPC_URL_ARBSEP_TESTNET ?? 'https://arbitrum-sepolia.gateway.tenderly.co', + accounts, + }, + }, + // ... +} +``` + +Ensure every network listed here has a matching `RPC_URL_*` entry in `.env`. + +### 3. Composer Deployment Configuration + +Both composers rely on addresses passed through constructor arguments. Decide which chain will host each composer and verify you have the corresponding addresses: + +- **Uniswap:** needs the canonical SwapRouter (per chain) plus the OFT that forwards tokens to it. +- **Aave:** needs the Aave v3 Pool on the hub chain plus the Stargate pool on the source chain you’ll send from. + +## Build + +Install dependencies and compile contracts: + +```bash +pnpm install +pnpm compile # runs both Hardhat + Forge toolchains +``` + +Need a specific tool only? Run `pnpm compile:hardhat` or `pnpm compile:forge`. + +Run unit tests with `pnpm test`, or select suites via `pnpm test:hardhat` / `pnpm test:forge`. + +## Deploy + +### UniswapV3 Composer Deployment + +- Script: `examples/oft-composers/deploy/UniswapV3Composer.ts` +- Required `.env` keys: `PRIVATE_KEY`, `SWAP_ROUTER_ADDRESS`, `OFT_ADDRESS`, the `RPC_URL_*` for the destination network. +- Constructor: `(swapRouter, oft)`. + +```bash +SWAP_ROUTER_ADDRESS="0xUniswapRouterOnBase" \ +OFT_ADDRESS="0xAssetOFTOnBase" \ +pnpm hardhat deploy --tags UniswapV3Composer --network base +``` + +The script validates addresses via `ethers.utils.isAddress` and prints the deployed composer address. Rerun the command whenever you update swap routes or need to redeploy; set `skipIfAlreadyDeployed` to `true` if you want Hardhat Deploy to keep the existing instance. + +### AaveV3 Composer Deployment + +- Script: `examples/oft-composers/deploy/AaveV3Composer.ts` +- Required `.env` keys: `PRIVATE_KEY`, `AAVE_V3_POOL_ADDRESS`, `STARGATE_POOL_ADDRESS`, relevant `RPC_URL_*`. +- Constructor: `(aavePool, stargatePool)`. + +```bash +AAVE_V3_POOL_ADDRESS="0xAavePoolOnBase" \ +STARGATE_POOL_ADDRESS="0xStargatePoolOnArbitrum" \ +pnpm hardhat deploy --tags AaveV3Composer --network base +``` + +The script asserts both addresses exist and belong to deployed contracts before broadcasting. Double-check that the Stargate pool you specify supports the token you’ll bridge (e.g., USDC on Arbitrum Sepolia) and that the Aave pool lives on the hub chain that will execute the supply. + +## Enable Messaging (for manually deployed OFTs only) + +If you manually deployed OFTs (Asset/Share, adapters, or any custom OApp), you still need to wire them with LayerZero. There are two ways to do it—pick the one that matches your tooling: + +### Option A — Use the generated `layerzero.config.ts` (default DVNs & Executors) + +1. This example already ships a `layerzero.config.ts` that targets LayerZero’s default DVNs/Executors. Update the contract names/EIDs if you changed them during deployment. +2. Run wiring directly: + + ```bash + pnpm hardhat lz:oapp:wire --oapp-config layerzero.custom.config.ts + ``` + +This is the quickest path and mirrors the standard OFT example in `EX_README.md`. + +### Option B — Manual configs + +1. Generate per-mesh config scaffolding: + + ```bash + npx hardhat lz:oapp:config:init --contract-name MyOFT --oapp-config layerzero.custom.config.ts + ``` + +2. Fill in DVNs, executors, and enforced gas options using the `TwoWayConfig` helpers. + +3. Wire each config once all contracts exist: + + ```bash + pnpm hardhat lz:oapp:wire --oapp-config layerzero.custom.config.ts + ``` + +Skip this entire section if you are using the Aave/Stargate composer workflow described below—Stargate pools already implement OFT semantics, so no extra wiring is required beyond configuring Stargate itself. + +## Stargate to Aave Supply Task + +File: `examples/oft-composers/tasks/supplyAave.ts` + +This task bridges tokens through Stargate and composes into `AaveV3Composer` to finalize a supply on Base. Example scenario: composer lives on **Base Sepolia (EID 30184)**, and you send USDC from **Arbitrum Sepolia (EID 30110)**. + + +1. Run the task with CLI parameters (replace placeholders with live addresses/amounts): + + ```bash + pnpm hardhat aave:supply \ + --stargate <0xStargatePoolAddress> \ + --dst-eid 30184 \ + --composer <0xComposerAddress> \ + --amount-ld 1000000 \ + --network + ``` + + - `amount-ld` is specified in local decimals (1,000,000 = 1 USDC if the pool uses 6 decimals). + - `compose-gas-limit` defaults to `395000`, which matches the gas used in `Options.newOptions()` inside `supplyAave.ts`. + +2. The task automatically: + - Encodes the compose payload (receiver address). + - Quotes Stargate fees and approves ERC20 transfers when needed. + - Sends the transaction with the correct messaging fee (native or LZ token). + +Monitor progress on [LayerZero Scan](https://testnet.layerzeroscan.com/) if anything fails in-flight. + +## Next Steps + +1. Track composer executions by indexing emitted events (see `OFTComposeMsgCodec` usage). +2. Parameterize gas limits per pathway to control costs tightly. +3. Add slippage controls by extending the compose payload and guarding on-chain execution. + +## Production Deployment Checklist + +- [ ] **Security Stack** + - [ ] Configure DVNs to meet your trust requirements. + - [ ] Set confirmation blocks per pathway (e.g., Base ↔ Arbitrum). + - [ ] Register Executor options with sufficient gas for swaps + lending calls. +- [ ] **Gas & Options** + - [ ] Profile composer gas usage under real traffic. + - [ ] Tune `lzCompose` gas for each workflow (swap vs. supply). + - [ ] Fall back to `lz:oft:send` for simple transfers when compose logic is unnecessary. +- [ ] **Composer Config** + - [ ] Store composer addresses in a registry so tasks can fetch them dynamically. + - [ ] Guard swap/supply logic with allowlists if you expose arbitrary payloads. + - [ ] Monitor Stargate pools for liquidity before large sends. + +## Appendix + +### Running Tests + +```bash +pnpm test +pnpm test:hardhat # only Hardhat +pnpm test:forge # only Forge +``` + +### Adding Other Chains + +1. Append new networks to `hardhat.config.ts` and `.env`. +2. Add composer and OFT addresses for the new chain to your deployment config. +3. Extend `layerzero.*.config.ts` pathways so the new chain can talk to existing hubs/spokes. +4. Re-run `lz:oapp:wire` with the updated config file. + +### LayerZero Hardhat Helper Tasks (Detailed) + +```bash +pnpm hardhat # list every task +pnpm hardhat lz:deploy # deploy tagged contracts +pnpm hardhat lz:oft:send # OFT transfers without compose logic +pnpm hardhat lz:oapp:wire --oapp-config layerzero.composer.config.ts +pnpm hardhat aave:supply # Stargate send + compose into Aave +``` + +### Troubleshooting + +1. **Missing `.env` entries** — double-check every section above; deployments will `assert(...)` if required addresses are absent. +2. **Composer revert (swap or supply)** — inspect the compose payload and ensure gas limits cover both the OFT receive and the protocol action. +3. **Slippage exceeded** — consider passing `--oft-cmd` or extending the payload so the composer can enforce min amounts. +4. **Allowance errors** — rerun `aave:supply` after the script auto-approves the Stargate pool; you may need to increase allowance for repeated sends. + +--- + +Need help? Reach out in the [LayerZero Discord](https://discord-layerzero.netlify.app/discord) or check the [Developer Docs](https://docs.layerzero.network/). diff --git a/examples/oft-composers/contracts/AaveV3Composer.sol b/examples/oft-composers/contracts/AaveV3Composer.sol new file mode 100644 index 0000000000..e4deb396f6 --- /dev/null +++ b/examples/oft-composers/contracts/AaveV3Composer.sol @@ -0,0 +1,181 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.19; + +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +import { OFTComposeMsgCodec } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/libs/OFTComposeMsgCodec.sol"; +import { IOFT, SendParam, MessagingFee } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; +import { ILayerZeroComposer } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol"; +import { IStargateEndpoint } from "./interfaces/IStargateEndpoint.sol"; + +import { IAaveV3Composer } from "./interfaces/IAaveV3Composer.sol"; +import { IAaveV3Pool } from "./interfaces/IAaveV3Pool.sol"; + + +/** + * @title AaveV3Composer + * + * @notice Supplies the received tokens into Aave V3 liquidity pools after an lzCompose call. + * + * @dev The contract enforces strict authentication, decodes lzCompose payloads, and either supplies tokens into Aave + * or refunds the recipient if the supply reverts. + */ +contract AaveV3Composer is ILayerZeroComposer, IAaveV3Composer { + using SafeERC20 for IERC20; + + /// @notice Aave V3 pool that receives supplied liquidity. + IAaveV3Pool public immutable AAVE; + + /// @notice LayerZero Endpoint trusted to invoke `lzCompose`. + address public immutable ENDPOINT; + + /// @notice OFT that is authorized to trigger Aave supplies on this chain. + address public immutable OFT_IN; + + /// @notice Underlying ERC20 token that backs the trusted Stargate OFT. + address public immutable TOKEN_IN; + + // ────────────────────────────────────────────────────────────────────────────── + // 0. Setup & Constructor + // • Validates constructor inputs + // • Caches protocol addresses + // • Grants a one-time approval for Aave supplies + // + // ↳ Docs: https://docs.layerzero.network/v2/developers/evm/composer/overview + // https://docs.layerzero.network/v2/developers/evm/oft/quickstart#send-tokens--call-composer + // ────────────────────────────────────────────────────────────────────────────── + + /** + * @notice Deploys the composer and connects it to Stargate and Aave pools. + * + * @dev Assuming the Stargate contract is already configured with the correct LayerZero Endpoint. + * + * A **one-time `maxApprove`** is granted to the Aave Pool because: + * 1. Funds only arrive via `lzReceive` → `lzCompose` from the trusted Stargate Pool. + * 2. The pool can only transfer what the composeMsg allows. + * 3. Saves ~5k gas on every compose execution. + * + * @param _aavePool Address of the target Aave V3 pool. + * @param _oftIn OFT expected to receive the supplied tokens. + */ + constructor(address _aavePool, address _oftIn) { + if (_aavePool == address(0)) revert InvalidAavePool(); + if (_oftIn == address(0)) revert InvalidStargatePool(); + + // Initialize the Aave pool. + AAVE = IAaveV3Pool(_aavePool); + + // Initialize the OFT address (Stargate Pool / OFT). + OFT_IN = _oftIn; + + // Gran the endpoint from OFT. + ENDPOINT = address(IStargateEndpoint(_oftIn).endpoint()); + + // Grab the underlying token from the OFT. + TOKEN_IN = IOFT(_oftIn).token(); + + // Grant a one-time unlimited allowance so Aave can pull funds during supply. + IERC20(TOKEN_IN).approve(address(AAVE), type(uint256).max); + } + + // ────────────────────────────────────────────────────────────────────────────── + // 1. Compose Logic (`lzCompose`) + // Called by the LayerZero Endpoint after a user sends tokens cross-chain + // with a compose message. Decodes the message and performs a Aave V3 supply + // on behalf of the original sender. + + // Steps: + // 1. Authenticity checks (trusted Stargate Pool & Endpoint) + // 2. Decode recipient address and amount from `_message` + // 3. Try to execute supply on behalf of the recipient → emit `SupplyExecuted` + // • On failure, refund tokens → emit `SupplyFailedAndRefunded` + // ────────────────────────────────────────────────────────────────────────────── + + /** + * @notice Consumes composed messages and supplies the received tokens into the Aave V3 pool. + * @dev `_message` is encoded by the OFT.send() caller on the source chain via + * `OFTComposeMsgCodec.encode()` and has the following layout: + * + * ``` + * | srcNonce (uint64) | srcEid (uint32) | amountLD (uint128) | + * | composeFrom (bytes32) | composeMsg (bytes) | + * ``` + * + * `composeMsg` (last field) is expected to be: + * `abi.encode(address onBehalfOf)`. + * + * + * @param _sender Address of the stargate contract; must equal the trusted `stargate`. + * @dev _guid Message hash (unused, but kept for future extensibility). + * @param _message ABI-encoded compose payload containing recipient address. + * @dev _executor Executor that relayed the message (unused). + * @dev _extraData Extra data from executor (unused). + */ + function lzCompose( + address _sender, + bytes32 _guid, + bytes calldata _message, + address /* _executor */, + bytes calldata /* _extraData */ + ) external payable { + // Authenticate call logic source. + if (_sender != OFT_IN) revert OnlyValidComposerCaller(_sender); + if (msg.sender != ENDPOINT) revert OnlyEndpoint(msg.sender); + + // Decode the amount in local decimals and the compose message from the message. + uint256 amountLD = OFTComposeMsgCodec.amountLD(_message); + + // Try to decompose the message, refund if it fails. + try this.handleCompose{ value: msg.value }(_message, amountLD) { + emit Sent(_guid); + } catch { + _refund(OFT_IN, _message, amountLD, tx.origin, msg.value); + emit Refunded(_guid); + } + } + + /** + * @notice Handles the compose operation for OFT (Omnichain Fungible Token) transactions + * @dev This function can only be called by the contract itself (self-call restriction) + * Decodes the compose message to extract SendParam and minimum message value + * @param _message The original message that was sent + * @param _amountLD The amount of tokens to supply + */ + function handleCompose(bytes calldata _message, uint256 _amountLD) external payable { + if (msg.sender != address(this)) revert OnlySelf(msg.sender); + + address _to = abi.decode(OFTComposeMsgCodec.composeMsg(_message), (address)); + + // Try to execute the supply or refund to target recipient. + try AAVE.supply(TOKEN_IN, _amountLD, _to, 0) { + emit Supplied(_to, _amountLD); + } catch { + _refund(OFT_IN, _message, _amountLD, tx.origin, msg.value); + emit SupplyFailedAndRefunded(_to, _amountLD); + } + } + + /** + * @dev Internal function to refund input tokens to sender on source during a failed transaction + * @param _oftIn The OFT contract address used for refunding + * @param _message The original message that was sent + * @param _amount The amount of tokens to refund + * @param _refundAddress Address to receive the refund + * @param _msgValue The amount of native tokens sent with the transaction + */ + function _refund( + address _oftIn, + bytes calldata _message, + uint256 _amount, + address _refundAddress, + uint256 _msgValue + ) internal virtual { + SendParam memory refundSendParam; + refundSendParam.dstEid = OFTComposeMsgCodec.srcEid(_message); + refundSendParam.to = OFTComposeMsgCodec.composeFrom(_message); + refundSendParam.amountLD = _amount; + + IOFT(_oftIn).send{ value: _msgValue }(refundSendParam, MessagingFee({ nativeFee: _msgValue, lzTokenFee: 0 }), _refundAddress); + } +} diff --git a/examples/oft-composers/contracts/MyOFT.sol b/examples/oft-composers/contracts/MyOFT.sol new file mode 100644 index 0000000000..f8bc7b47f6 --- /dev/null +++ b/examples/oft-composers/contracts/MyOFT.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.22; + +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { OFT } from "@layerzerolabs/oft-evm/contracts/OFT.sol"; + +contract MyOFT is OFT { + constructor( + string memory _name, + string memory _symbol, + address _lzEndpoint, + address _delegate + ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {} +} diff --git a/examples/oft-composers/contracts/UniswapV3Composer.sol b/examples/oft-composers/contracts/UniswapV3Composer.sol new file mode 100644 index 0000000000..9836d8e6f5 --- /dev/null +++ b/examples/oft-composers/contracts/UniswapV3Composer.sol @@ -0,0 +1,182 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +// Import necessary interfaces and libraries +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +import { ISwapRouter } from "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol"; + +import { IOAppComposer } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol"; +import { IOFT } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; +import { OFTComposeMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol"; +import { IOAppCore } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol"; + +import { IUniswapV3Composer } from "./interfaces/IUniswapV3Composer.sol"; + +/** + * @title UniswapV3Composer + * + * @notice Handles cross-chain token swaps using Uniswap V3 upon receiving tokens via LayerZero. + * + * @dev This contract inherits from IOAppComposer and interacts with Uniswap V3's SwapRouter to execute token swaps. + * It is an **educational example** that accompanies the LayerZero V2 docs on Omnichain Composers. + * See: + * • https://docs.layerzero.network/v2/developers/evm/composer/overview + * • https://docs.layerzero.network/v2/developers/evm/oft/quickstart#send-tokens--call-composer + * + * The code is annotated with numbered section dividers to clearly separate: + * 0. Setup & Constructor logic + * 1. Receive business logic (`lzCompose`) + * + * Feel free to replace the Uniswap swap with your own custom business logic in Step 4. + * The overarching pattern (authenticate → decode → act → emit/cleanup) remains the same. + */ +contract UniswapV3Composer is IOAppComposer, IUniswapV3Composer { + using SafeERC20 for IERC20; + /// @notice The Uniswap V3 SwapRouter used to perform token swaps. + /// @dev Must expose the `exactInputSingle` method from the Uniswap V3 Periphery. + ISwapRouter public immutable SWAP_ROUTER; + + /// @notice The trusted Omnichain Fungible Token (OFT) that can trigger `lzCompose` on this contract. + address public immutable OFT; + + /// @notice LayerZero Endpoint V2 used by the trusted OFT on this chain. + address public immutable ENDPOINT; + + /// @notice ERC20 token address that backs the trusted OFT (`tokenIn` for every swap). + address public immutable TOKEN_IN; + + // ────────────────────────────────────────────────────────────────────────────── + // 0. Setup & Constructor + // • Validates inputs + // • Caches Endpoint / Router / Token addresses + // • Grants a one-time max approval to the Uniswap V3 router + // + // ↳ Docs: https://docs.layerzero.network/v2/developers/evm/composer/overview + // https://docs.layerzero.network/v2/developers/evm/oft/quickstart#send-tokens--call-composer + // ────────────────────────────────────────────────────────────────────────────── + + /** + * @notice Deploys the composer and connects it to a trusted OFT and Uniswap V3 router. + * + * @dev The constructor assumes that `_oft` is already configured with the correct + * LayerZero Endpoint. It queries the endpoint from the OFT so the composer + * does not need a redundant constructor param. + * + * A **one-time `maxApprove`** is granted to the router because: + * 1. Funds only arrive via `lzReceive` → `lzCompose` from the trusted OFT. + * 2. The router can only transfer what the composeMsg allows. + * 3. Saves ~5k gas on every compose execution. + * + * @param _swapRouter Address of the Uniswap V3 `SwapRouter`. + * @param _oft Address of the trusted OFT that will source composed messages. + */ + constructor(address _swapRouter, address _oft) { + if (_swapRouter == address(0)) revert InvalidSwapRouter(); + if (_oft == address(0)) revert InvalidOFT(); + + // Get the LayerZero Endpoint address from the OFT. + ENDPOINT = address(IOAppCore(_oft).endpoint()); + + // Initialize the swap router and OFT addresses. + SWAP_ROUTER = ISwapRouter(_swapRouter); + OFT = _oft; + TOKEN_IN = IOFT(OFT).token(); + + // ----------------------------------------------------------------------------- + // Grant an unlimited allowance ("maxApprove") to the Uniswap V3 router. + // + // Safety rationale: + // 1. `SWAP_ROUTER` can only `transferFrom` *this contract* (msg.sender). + // 2. This composer calls `exactInputSingle` **only** after a successful + // `lzCompose`, and for the _exact_ `amountIn` of tokens delivered with + // that message (decoded via `OFTComposeMsgCodec.amountLD`). + // 3. If the swap execution reverts we refund the tokens; if the entire + // transaction runs out of gas the tokens simply remain in the composer + // and are never at risk because the router was never invoked. + // + // Therefore an unlimited approval is safe and saves gas compared to + // approving per message. + IERC20(TOKEN_IN).approve(address(SWAP_ROUTER), type(uint256).max); + } + + // ────────────────────────────────────────────────────────────────────────────── + // 1. Receive Business Logic (`lzCompose`) + // Called by the LayerZero Endpoint after a user sends OFT tokens cross-chain + // with a compose message. Decodes the message and performs a Uniswap V3 swap + // on behalf of the original sender. + // + // Steps: + // 1. Authenticity checks (trusted OFT & Endpoint) + // 2. Decode swap parameters & source sender from `_message` + // 3. Build `ExactInputSingleParams` struct + // 4. Try to execute swap → emit `SwapExecuted` + // • On failure, refund tokens → emit `SwapFailedAndRefunded` + // ────────────────────────────────────────────────────────────────────────────── + + /** + * @notice Consumes a composed message and swaps `TOKEN_IN` → `tokenOut` on Uniswap V3. + * + * @dev `_message` is encoded by the OFT.send() caller on the source chain via + * `OFTComposeMsgCodec.encode()` and has the following layout: + * + * ``` + * | srcNonce (uint64) | srcEid (uint32) | amountLD (uint128) | + * | composeFrom (bytes32) | composeMsg (bytes) | + * ``` + * + * `composeMsg` (last field) is expected to be: + * `abi.encode(tokenOut, fee, recipient, amountOutMin, sqrtPriceLimitX96)`. + * + * - Authentication: ensure caller is the **trusted Endpoint** and `_oft` matches. + * - Safety: on swap failure, funds are **refunded** (no token losses). + * + * @param _oft The originating OFT address (must equal `OFT`). + * @dev _guid Message hash (unused, but kept for future extensibility). + * @param _message ABI-encoded compose message described above. + * @dev _executor Executor that relayed the message (unused). + * @dev _extraData Extra data from executor (unused). + */ + function lzCompose( + address _oft, + bytes32 /*_guid*/, + bytes calldata _message, + address /*_executor*/, + bytes calldata /*_extraData*/ + ) external payable override { + // Step 1️: Authenticate call logic source. + if (_oft != OFT) revert UnauthorizedOFT(); + if (msg.sender != ENDPOINT) revert UnauthorizedEndpoint(); + + // Step 2️: Decode the swap parameters & sender from the compose message included in the OFT.send() call. + (address tokenOut, uint24 fee, address recipient, uint256 amountOutMinimum, uint160 sqrtPriceLimitX96) = abi + .decode(OFTComposeMsgCodec.composeMsg(_message), (address, uint24, address, uint256, uint160)); + + // • Extract the original msg.sender of `OFT.send()` on the source chain. + bytes32 srcSender = OFTComposeMsgCodec.composeFrom(_message); + // • Decode the amount (local decimals) sent with the compose message. + uint256 amountIn = OFTComposeMsgCodec.amountLD(_message); + + // Step 3️: Build Uniswap V3 swap parameters. + ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({ + tokenIn: TOKEN_IN, + tokenOut: tokenOut, + fee: fee, + recipient: recipient, + deadline: block.timestamp + 300, // 5-minute deadline for example purposes. + amountIn: amountIn, + amountOutMinimum: amountOutMinimum, + sqrtPriceLimitX96: sqrtPriceLimitX96 + }); + + // Step 4️: Execute the swap or refund to target recipient. + try SWAP_ROUTER.exactInputSingle(params) returns (uint256 amountOut) { + emit SwapExecuted(srcSender, recipient, TOKEN_IN, tokenOut, amountIn, amountOut); + } catch { + // If the swap fails, refund the exact amount to the recipient so that funds are not stuck in the composer. + IERC20(TOKEN_IN).safeTransfer(recipient, amountIn); + emit SwapFailedAndRefunded(srcSender, TOKEN_IN, recipient, amountIn); + } + } +} diff --git a/examples/oft-composers/contracts/interfaces/IAaveV3Composer.sol b/examples/oft-composers/contracts/interfaces/IAaveV3Composer.sol new file mode 100644 index 0000000000..9ede8fd18e --- /dev/null +++ b/examples/oft-composers/contracts/interfaces/IAaveV3Composer.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/** + * @title IAaveV3Composer + * + * @notice Interface defining events and errors for the AaveV3Composer contract. + * + * @dev This interface helps with code organization, testing, and reusability by separating + * contract definitions from implementation logic. + */ +interface IAaveV3Composer { + /// ========================== Error Messages ===================================== + error InvalidAavePool(); + error InvalidStargatePool(); + error OnlyValidComposerCaller(address sender); + error OnlyEndpoint(address endpoint); + error OnlySelf(address caller); + + /// ========================== EVENTS ===================================== + event Sent(bytes32 guid); + event Refunded(bytes32 guid); + event Supplied(address indexed recipient, uint256 amountLd); + event SupplyFailedAndRefunded(address indexed recipient, uint256 amountLd); +} diff --git a/examples/oft-composers/contracts/interfaces/IAaveV3Pool.sol b/examples/oft-composers/contracts/interfaces/IAaveV3Pool.sol new file mode 100644 index 0000000000..c82c91700a --- /dev/null +++ b/examples/oft-composers/contracts/interfaces/IAaveV3Pool.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/** + * @title IPool + * @author Aave + * @notice Defines the basic interface for an Aave Pool. + */ +interface IAaveV3Pool { + /** + * @notice Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. + * - E.g. User supplies 100 USDC and gets in return 100 aUSDC + * @param asset The address of the underlying asset to supply + * @param amount The amount to be supplied + * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user + * wants to receive them on his own wallet, or a different address if the beneficiary of aTokens + * is a different wallet + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + */ + function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external; +} diff --git a/examples/oft-composers/contracts/interfaces/IStargateEndpoint.sol b/examples/oft-composers/contracts/interfaces/IStargateEndpoint.sol new file mode 100644 index 0000000000..42062f8fd1 --- /dev/null +++ b/examples/oft-composers/contracts/interfaces/IStargateEndpoint.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.19; + +import { ILayerZeroEndpointV2 } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol"; + +interface IStargateEndpoint { + function endpoint() external view returns (ILayerZeroEndpointV2); +} \ No newline at end of file diff --git a/examples/oft-composers/contracts/interfaces/IUniswapV3Composer.sol b/examples/oft-composers/contracts/interfaces/IUniswapV3Composer.sol new file mode 100644 index 0000000000..0f89c429bd --- /dev/null +++ b/examples/oft-composers/contracts/interfaces/IUniswapV3Composer.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/** + * @title IUniswapV3Composer + * + * @notice Interface defining events and errors for the UniswapV3Composer contract. + * + * @dev This interface helps with code organization, testing, and reusability by separating + * contract definitions from implementation logic. + */ +interface IUniswapV3Composer { + /// @notice Custom errors for more gas-efficient reverts. + error InvalidSwapRouter(); + error InvalidEndpoint(); + error InvalidOFT(); + error UnauthorizedOFT(); + error UnauthorizedEndpoint(); + + /** + * @notice Emitted when a token swap is successfully executed. + * + * @param srcSender The bytes32 address of the user initiating the swap on the source chain. + * @param recipient The address of the recipient of the swapped tokens. + * @param tokenIn The address of the ERC20 token being swapped from (OFT). + * @param tokenOut The address of the ERC20 token being swapped to. + * @param amountIn The amount of `tokenIn` being swapped. + * @param amountOut The amount of `tokenOut` received from the swap. + */ + event SwapExecuted( + bytes32 indexed srcSender, + address recipient, + address tokenIn, + address tokenOut, + uint256 amountIn, + uint256 amountOut + ); + + /** + * @notice Emitted when a token swap fails and the OFT tokens are refunded to the recipient. + * + * @param srcSender The bytes32 address of the user initiating the swap on the source chain. + * @param tokenIn The address of the ERC20 token being swapped from (OFT). + * @param recipient The address of the recipient of the OFT tokens. + * @param amountIn The amount of `tokenIn` being refunded. + */ + event SwapFailedAndRefunded(bytes32 indexed srcSender, address tokenIn, address recipient, uint256 amountIn); +} diff --git a/examples/oft-composers/contracts/mocks/MyOFTMock.sol b/examples/oft-composers/contracts/mocks/MyOFTMock.sol new file mode 100644 index 0000000000..3ebb888d4c --- /dev/null +++ b/examples/oft-composers/contracts/mocks/MyOFTMock.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.22; + +import { MyOFT } from "../MyOFT.sol"; + +// @dev WARNING: This is for testing purposes only +contract MyOFTMock is MyOFT { + constructor( + string memory _name, + string memory _symbol, + address _lzEndpoint, + address _delegate + ) MyOFT(_name, _symbol, _lzEndpoint, _delegate) {} + + function mint(address _to, uint256 _amount) public { + _mint(_to, _amount); + } +} diff --git a/examples/oft-composers/deploy/AaveV3Composer.ts b/examples/oft-composers/deploy/AaveV3Composer.ts new file mode 100644 index 0000000000..27d240dd4b --- /dev/null +++ b/examples/oft-composers/deploy/AaveV3Composer.ts @@ -0,0 +1,41 @@ +import assert from 'assert' + +import { type DeployFunction } from 'hardhat-deploy/types' + +const contractName = 'AaveV3Composer' + +const deploy: DeployFunction = async (hre) => { + const { deployments, getNamedAccounts, ethers, network } = hre + const { deploy } = deployments + + const { deployer } = await getNamedAccounts() + assert(deployer, 'Missing named deployer account') + + const aavePool = process.env.AAVE_V3_POOL_ADDRESS + assert(aavePool, 'Missing AAVE_V3_POOL_ADDRESS environment variable') + + const stargatePool = process.env.STARGATE_POOL_ADDRESS + assert(stargatePool, 'Missing STARGATE_POOL_ADDRESS environment variable') + + const { isAddress } = ethers.utils + assert(isAddress(aavePool), `AAVE_V3_POOL_ADDRESS (${aavePool}) is not a valid address`) + assert(isAddress(stargatePool), `STARGATE_POOL_ADDRESS (${stargatePool}) is not a valid address`) + + console.log(`Network: ${network.name}`) + console.log(`Deployer: ${deployer}`) + console.log(`Aave pool: ${aavePool}`) + console.log(`Stargate pool: ${stargatePool}`) + + const { address } = await deploy(contractName, { + from: deployer, + args: [aavePool, stargatePool], + log: true, + skipIfAlreadyDeployed: false, + }) + + console.log(`Deployed contract: ${contractName}, network: ${network.name}, address: ${address}`) +} + +deploy.tags = [contractName] + +export default deploy diff --git a/examples/oft-composers/deploy/MyOFT.ts b/examples/oft-composers/deploy/MyOFT.ts new file mode 100644 index 0000000000..bcbdeb19b1 --- /dev/null +++ b/examples/oft-composers/deploy/MyOFT.ts @@ -0,0 +1,53 @@ +import assert from 'assert' + +import { type DeployFunction } from 'hardhat-deploy/types' + +const contractName = 'MyOFT' + +const deploy: DeployFunction = async (hre) => { + const { getNamedAccounts, deployments } = hre + + const { deploy } = deployments + const { deployer } = await getNamedAccounts() + + assert(deployer, 'Missing named deployer account') + + console.log(`Network: ${hre.network.name}`) + console.log(`Deployer: ${deployer}`) + + // This is an external deployment pulled in from @layerzerolabs/lz-evm-sdk-v2 + // + // @layerzerolabs/toolbox-hardhat takes care of plugging in the external deployments + // from @layerzerolabs packages based on the configuration in your hardhat config + // + // For this to work correctly, your network config must define an eid property + // set to `EndpointId` as defined in @layerzerolabs/lz-definitions + // + // For example: + // + // networks: { + // fuji: { + // ... + // eid: EndpointId.AVALANCHE_V2_TESTNET + // } + // } + const endpointV2Deployment = await hre.deployments.get('EndpointV2') + + const { address } = await deploy(contractName, { + from: deployer, + args: [ + 'MyOFT', // name + 'MOFT', // symbol + endpointV2Deployment.address, // LayerZero's EndpointV2 address + deployer, // owner + ], + log: true, + skipIfAlreadyDeployed: false, + }) + + console.log(`Deployed contract: ${contractName}, network: ${hre.network.name}, address: ${address}`) +} + +deploy.tags = [contractName] + +export default deploy diff --git a/examples/oft-composers/deploy/UniswapV3Composer.ts b/examples/oft-composers/deploy/UniswapV3Composer.ts new file mode 100644 index 0000000000..169048d10b --- /dev/null +++ b/examples/oft-composers/deploy/UniswapV3Composer.ts @@ -0,0 +1,41 @@ +import assert from 'assert' + +import { type DeployFunction } from 'hardhat-deploy/types' + +const contractName = 'UniswapV3Composer' + +const deploy: DeployFunction = async (hre) => { + const { deployments, getNamedAccounts, ethers, network } = hre + const { deploy } = deployments + + const { deployer } = await getNamedAccounts() + assert(deployer, 'Missing named deployer account') + + const swapRouter = process.env.SWAP_ROUTER_ADDRESS + assert(swapRouter, 'Missing SWAP_ROUTER_ADDRESS environment variable') + + const oft = process.env.OFT_ADDRESS + assert(oft, 'Missing OFT_ADDRESS environment variable') + + const { isAddress } = ethers.utils + assert(isAddress(swapRouter), `SWAP_ROUTER_ADDRESS (${swapRouter}) is not a valid address`) + assert(isAddress(oft), `OFT_ADDRESS (${oft}) is not a valid address`) + + console.log(`Network: ${network.name}`) + console.log(`Deployer: ${deployer}`) + console.log(`Swap router: ${swapRouter}`) + console.log(`OFT: ${oft}`) + + const { address } = await deploy(contractName, { + from: deployer, + args: [swapRouter, oft], + log: true, + skipIfAlreadyDeployed: false, + }) + + console.log(`Deployed contract: ${contractName}, network: ${network.name}, address: ${address}`) +} + +deploy.tags = [contractName] + +export default deploy diff --git a/examples/oft-composers/foundry.toml b/examples/oft-composers/foundry.toml new file mode 100644 index 0000000000..3595660e36 --- /dev/null +++ b/examples/oft-composers/foundry.toml @@ -0,0 +1,35 @@ +[profile.default] +solc-version = '0.8.22' +src = 'contracts' +out = 'out' +test = 'test/foundry' +cache_path = 'cache/foundry' +verbosity = 3 +optimizer = true +optimizer_runs = 20_000 +libs = [ + # We provide a set of useful contract utilities + # in the lib directory of @layerzerolabs/toolbox-foundry: + # + # - forge-std + # - ds-test + # - solidity-bytes-utils + 'node_modules/@layerzerolabs/toolbox-foundry/lib', + 'node_modules', +] + +remappings = [ + # Due to a misconfiguration of solidity-bytes-utils, an outdated version + # of forge-std is being dragged in + # + # To remedy this, we'll remap the ds-test and forge-std imports to our own versions + 'ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test', + 'forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std', + '@layerzerolabs/=node_modules/@layerzerolabs/', + '@openzeppelin/=node_modules/@openzeppelin/', + '@uniswap/v3-periphery/=node_modules/@uniswap/v3-periphery/', + '@uniswap/v3-core/=node_modules/@uniswap/v3-core/', +] + +[fuzz] +runs = 1000 diff --git a/examples/oft-composers/hardhat.config.ts b/examples/oft-composers/hardhat.config.ts new file mode 100644 index 0000000000..ad201dc453 --- /dev/null +++ b/examples/oft-composers/hardhat.config.ts @@ -0,0 +1,80 @@ +// Get the environment configuration from .env file +// +// To make use of automatic environment setup: +// - Duplicate .env.example file and name it .env +// - Fill in the environment variables +import 'dotenv/config' + +import 'hardhat-deploy' +import 'hardhat-contract-sizer' +import '@nomiclabs/hardhat-ethers' +import '@layerzerolabs/toolbox-hardhat' + +import './tasks/index' + +import { HardhatUserConfig, HttpNetworkAccountsUserConfig } from 'hardhat/types' + +import { EndpointId } from '@layerzerolabs/lz-definitions' + +// Set your preferred authentication method +// +// If you prefer using a mnemonic, set a MNEMONIC environment variable +// to a valid mnemonic +const MNEMONIC = process.env.MNEMONIC + +// If you prefer to be authenticated using a private key, set a PRIVATE_KEY environment variable +const PRIVATE_KEY = process.env.PRIVATE_KEY + +const accounts: HttpNetworkAccountsUserConfig | undefined = MNEMONIC + ? { mnemonic: MNEMONIC } + : PRIVATE_KEY + ? [PRIVATE_KEY] + : undefined + +if (accounts == null) { + console.warn( + 'Could not find MNEMONIC or PRIVATE_KEY environment variables. It will not be possible to execute transactions in your example.' + ) +} + +const config: HardhatUserConfig = { + paths: { + cache: 'cache/hardhat', + }, + solidity: { + compilers: [ + { + version: '0.8.22', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + ], + }, + networks: { + 'arbitrum-sepolia': { + eid: EndpointId.ARBSEP_V2_TESTNET, + url: process.env.RPC_URL_ARB_SEPOLIA || 'https://arbitrum-sepolia.gateway.tenderly.co', + accounts, + }, + 'ethereum-sepolia': { + eid: EndpointId.SEPOLIA_V2_TESTNET, + url: process.env.RPC_URL_SEPOLIA || 'https://sepolia.gateway.tenderly.co', + accounts, + }, + hardhat: { + // Need this for testing because TestHelperOz5.sol is exceeding the compiled contract size limit + allowUnlimitedContractSize: true, + }, + }, + namedAccounts: { + deployer: { + default: 0, // wallet address of index[0], of the mnemonic in .env + }, + }, +} + +export default config diff --git a/examples/oft-composers/layerzero.config.ts b/examples/oft-composers/layerzero.config.ts new file mode 100644 index 0000000000..7f3380ed90 --- /dev/null +++ b/examples/oft-composers/layerzero.config.ts @@ -0,0 +1,36 @@ +import { EndpointId } from '@layerzerolabs/lz-definitions' + +import type { OAppOmniGraphHardhat, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat' + +const sepoliaContract: OmniPointHardhat = { + eid: EndpointId.SEPOLIA_V2_TESTNET, + contractName: 'MyOFT', +} + +const arbitrumSepoliaContract: OmniPointHardhat = { + eid: EndpointId.ARBSEP_V2_TESTNET, + contractName: 'MyOFT', +} + +const config: OAppOmniGraphHardhat = { + contracts: [ + { + contract: sepoliaContract, + }, + { + contract: arbitrumSepoliaContract, + }, + ], + connections: [ + { + from: sepoliaContract, + to: arbitrumSepoliaContract, + }, + { + from: arbitrumSepoliaContract, + to: sepoliaContract, + }, + ], +} + +export default config diff --git a/examples/oft-composers/package.json b/examples/oft-composers/package.json new file mode 100644 index 0000000000..c6fc2e3666 --- /dev/null +++ b/examples/oft-composers/package.json @@ -0,0 +1,81 @@ +{ + "name": "@layerzerolabs/oft-composer-library-example", + "version": "0.0.1", + "private": true, + "license": "MIT", + "scripts": { + "clean": "rm -rf artifacts cache out", + "compile": "concurrently -c auto --names forge,hardhat '$npm_execpath run compile:forge' '$npm_execpath run compile:hardhat'", + "compile:forge": "forge build", + "compile:hardhat": "hardhat compile", + "lint": "$npm_execpath run lint:js && $npm_execpath run lint:sol", + "lint:fix": "eslint --fix '**/*.{js,ts,json}' && prettier --write . && solhint 'contracts/**/*.sol' --fix --noPrompt", + "lint:js": "eslint '**/*.{js,ts,json}' && prettier --check .", + "lint:sol": "solhint 'contracts/**/*.sol'", + "test": "$npm_execpath run test:forge && $npm_execpath run test:hardhat", + "test:forge": "forge test", + "test:hardhat": "hardhat test" + }, + "resolutions": { + "ethers": "^5.7.2", + "hardhat-deploy": "^0.12.1" + }, + "devDependencies": { + "@babel/core": "^7.23.9", + "@layerzerolabs/devtools-evm-hardhat": "^2.0.1", + "@layerzerolabs/eslint-config-next": "~2.3.39", + "@layerzerolabs/io-devtools": "^0.2.1", + "@layerzerolabs/lz-definitions": "^3.0.12", + "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", + "@layerzerolabs/lz-evm-oapp-v2": "^3.0.145", + "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", + "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", + "@layerzerolabs/lz-v2-utilities": "^3.0.12", + "@layerzerolabs/oapp-evm": "^0.3.0", + "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/prettier-config-next": "^2.3.39", + "@layerzerolabs/solhint-config": "^3.0.12", + "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/toolbox-foundry": "~0.1.9", + "@layerzerolabs/toolbox-hardhat": "~0.6.0", + "@nomicfoundation/hardhat-ethers": "^3.0.5", + "@nomiclabs/hardhat-ethers": "^2.2.3", + "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts-upgradeable": "^5.0.2", + "@rushstack/eslint-patch": "^1.7.0", + "@stargatefinance/stg-evm-v2": "^5.0.3", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "@types/node": "~18.18.14", + "@uniswap/v3-core": "^1.0.1", + "@uniswap/v3-periphery": "^1.4.4", + "chai": "^4.4.1", + "concurrently": "~9.1.0", + "dotenv": "^16.4.1", + "eslint": "^8.55.0", + "eslint-plugin-jest-extended": "~2.0.0", + "ethers": "^5.7.2", + "hardhat": "^2.22.10", + "hardhat-contract-sizer": "^2.10.0", + "hardhat-deploy": "^0.12.1", + "mocha": "^10.2.0", + "prettier": "^3.2.5", + "solhint": "^4.1.1", + "solidity-bytes-utils": "^0.8.2", + "ts-node": "^10.9.2", + "typescript": "^5.4.4" + }, + "engines": { + "node": ">=18.16.0" + }, + "pnpm": { + "overrides": { + "ethers": "^5.7.2", + "hardhat-deploy": "^0.12.1" + } + }, + "overrides": { + "ethers": "^5.7.2", + "hardhat-deploy": "^0.12.1" + } +} diff --git a/examples/oft-composers/scripts/supplyAave.s.sol b/examples/oft-composers/scripts/supplyAave.s.sol new file mode 100644 index 0000000000..650e631ec6 --- /dev/null +++ b/examples/oft-composers/scripts/supplyAave.s.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.19; + +import "forge-std/Script.sol"; +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IStargate } from "@stargatefinance/stg-evm-v2/src/interfaces/IStargate.sol"; +import { SendParam, MessagingFee, OFTReceipt } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/interfaces/IOFT.sol"; +import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; + +contract SupplyAaveScript is Script { + using OptionsBuilder for bytes; + + function run() external { + uint256 pk = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(pk); + + address sender = vm.addr(pk); + + address stargate = vm.envAddress("STARGATE_POOL"); + uint32 dstEid = uint32(vm.envUint("DST_EID")); + address composer = vm.envAddress("COMPOSER"); + uint256 amountLD = vm.envUint("AMOUNT_LD"); + address recipient = sender; + if (vm.envExists("COMPOSE_RECIPIENT")) { + recipient = vm.envAddress("COMPOSE_RECIPIENT"); + } + uint128 composeGas = 200000; + if (vm.envExists("COMPOSE_GAS_LIMIT")) { + composeGas = uint128(vm.envUint("COMPOSE_GAS_LIMIT")); + } + address refund = sender; + if (vm.envExists("REFUND_ADDRESS")) { + refund = vm.envAddress("REFUND_ADDRESS"); + } + bool payInLzToken = false; + if (vm.envExists("PAY_IN_LZ_TOKEN")) { + payInLzToken = vm.envBool("PAY_IN_LZ_TOKEN"); + } + + // Step 1: compose payload + bytes memory composeMsg = abi.encode(recipient, amountLD); + + // Step 2: options (compose index 0, gas limit, no native drop) + bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorLzComposeOption(0, composeGas, 0); + + // Step 3: assemble SendParam with placeholder minAmount + SendParam memory sendParam = SendParam({ + dstEid: dstEid, + to: bytes32(uint256(uint160(composer))), + amountLD: amountLD, + minAmountLD: 0, + extraOptions: extraOptions, + composeMsg: composeMsg, + oftCmd: bytes("") + }); + + // Quote OFT to learn the actual receive amount + (, , OFTReceipt memory oftReceipt) = IStargate(stargate).quoteOFT(sendParam); + sendParam.minAmountLD = oftReceipt.amountReceivedLD; + sendParam.composeMsg = abi.encode(recipient, oftReceipt.amountReceivedLD); + + // Quote LayerZero messaging fee + MessagingFee memory fee = IStargate(stargate).quoteSend(sendParam, payInLzToken); + + // ERC20 approval if required + address token = IStargate(stargate).token(); + if (token != address(0)) { + _ensureApproval(token, sender, stargate, sendParam.amountLD); + } + + // Step 4: compute value (add amount if pool uses native token) + uint256 valueToSend = fee.nativeFee; + + // Step 5: send + (, OFTReceipt memory finalReceipt) = IStargate(stargate).send{ value: valueToSend }(sendParam, fee, refund); + + console.log("message sent; amount received LD =", finalReceipt.amountReceivedLD); + vm.stopBroadcast(); + } + + function _ensureApproval(address token, address owner, address spender, uint256 amount) internal { + IERC20 erc20 = IERC20(token); + if (erc20.allowance(owner, spender) < amount) { + erc20.approve(spender, type(uint256).max); + } + } +} \ No newline at end of file diff --git a/examples/oft-composers/solhint.config.js b/examples/oft-composers/solhint.config.js new file mode 100644 index 0000000000..52efe629c0 --- /dev/null +++ b/examples/oft-composers/solhint.config.js @@ -0,0 +1 @@ +module.exports = require('@layerzerolabs/solhint-config'); diff --git a/examples/oft-composers/tasks/index.ts b/examples/oft-composers/tasks/index.ts new file mode 100644 index 0000000000..b98e822afa --- /dev/null +++ b/examples/oft-composers/tasks/index.ts @@ -0,0 +1 @@ +import './supplyAave' diff --git a/examples/oft-composers/tasks/supplyAave.ts b/examples/oft-composers/tasks/supplyAave.ts new file mode 100644 index 0000000000..a040611234 --- /dev/null +++ b/examples/oft-composers/tasks/supplyAave.ts @@ -0,0 +1,166 @@ +import { BigNumber } from 'ethers' +import { task } from 'hardhat/config' + +import { createModuleLogger } from '@layerzerolabs/io-devtools' +import { Options } from '@layerzerolabs/lz-v2-utilities' + +import type { HardhatRuntimeEnvironment } from 'hardhat/types' + +const logger = createModuleLogger('stargate:supply-aave') + +type SendArgs = { + stargate: string + dstEid: string + composer: string + composeGasLimit: string + amountLd: string + tokenReceiver: string + refundAddress?: string + payInLzToken?: string + oftCmd?: string +} + +const isReceiptObject = (value: unknown): value is { amountReceivedLD?: BigNumber } => { + if (!value || typeof value !== 'object' || value === null) { + return false + } + + const candidate = value as { amountReceivedLD?: unknown } + if (!('amountReceivedLD' in candidate)) { + return false + } + + const { amountReceivedLD } = candidate + return amountReceivedLD === undefined || BigNumber.isBigNumber(amountReceivedLD) +} + +const getAmountFromArray = (values: unknown[]): BigNumber | undefined => { + const candidate = values[1] ?? values[0] + return BigNumber.isBigNumber(candidate) ? candidate : undefined +} + +async function sendSupply(hre: HardhatRuntimeEnvironment, args: SendArgs) { + const { ethers } = hre + const signer = (await ethers.getSigners())[0] + const abiCoder = ethers.utils.defaultAbiCoder + + logger.info( + `Preparing Stargate supply compose send to ${args.tokenReceiver ?? signer.address} on chain ${args.dstEid}` + ) + + // 1. Build compose message payload expected by AaveV3Composer (address) + const composeMsg = abiCoder.encode(['address'], [args.tokenReceiver ?? signer.address]) + + const composeGasLimit = ethers.BigNumber.from(args.composeGasLimit ?? '395000').toString() + + const extraOptions = Options.newOptions() + .addExecutorComposeOption( + 0, // compose index + composeGasLimit, + 0 // no native drop + ) + .toHex() + + const dstEid = Number(args.dstEid) // uint32 destination endpoint + if (!Number.isSafeInteger(dstEid)) { + throw new Error(`dstEid must be a safe integer: got ${args.dstEid}`) + } + + const amountLD = ethers.BigNumber.from(args.amountLd) + const payInLzToken = (args.payInLzToken ?? 'false').toLowerCase() === 'true' + + const refundAddress = args.refundAddress ?? signer.address + + const stargateAbi = await hre.artifacts.readArtifact('IStargate') + const pool = await ethers.getContractAt(stargateAbi.abi, args.stargate, signer) + logger.debug(`Connected to Stargate pool: ${pool.address}`) + + // 2. Assemble initial SendParam tuple (minAmountLD will be filled after quoteOFT) + const sendParamTuple = [ + dstEid, + ethers.utils.hexZeroPad(args.composer, 32), + amountLD, + ethers.constants.Zero, + extraOptions, + composeMsg, + args.oftCmd ?? '0x', + ] + + const [, , receipt] = await pool.quoteOFT(sendParamTuple) + logger.debug(`QuoteOFT receipt: ${receipt}`) + + // 3. Update minAmount + compose payload using quoted amountReceivedLD + const amountReceivedLD = (() => { + if (isReceiptObject(receipt)) { + return receipt.amountReceivedLD + } + + if (Array.isArray(receipt)) { + return getAmountFromArray(receipt) + } + + return undefined + })() + + if (!amountReceivedLD) { + logger.error(`quoteOFT returned an unexpected receipt format: ${receipt}`) + throw new Error('quoteOFT returned an unexpected receipt format') + } + + // Update minAmountLD (index 3) and the compose payload (index 5) + sendParamTuple[3] = amountReceivedLD + logger.debug('Updated send param', { sendParamTuple }) + + const quoteSendResult = await pool.quoteSend(sendParamTuple, payInLzToken) + logger.debug('QuoteSend result', { quoteSendResult }) + + const messagingFee = (() => { + if (Array.isArray(quoteSendResult)) { + return [ + quoteSendResult[0] ?? quoteSendResult[quoteSendResult.length - 2], + quoteSendResult[1] ?? quoteSendResult[quoteSendResult.length - 1], + ] + } + throw new Error('quoteSend returned an unexpected format') + })() + + const valueToSend = messagingFee[0] + + // 4. Ensure ERC20 approval if pool is token-based + const tokenAddress = await pool.token() + + if (tokenAddress !== ethers.constants.AddressZero) { + const erc20Abi = await hre.artifacts.readArtifact('IERC20') + const erc20 = await ethers.getContractAt(erc20Abi.abi, tokenAddress, signer) + + const currentAllowance = await erc20.allowance(signer.address, pool.address) + logger.info(`Checking current allowance.`) + + if (currentAllowance.lt(amountLD)) { + logger.info(`Approving pool to spend tokens.`) + const approveTx = await erc20.approve(pool.address, amountLD) + await approveTx.wait() + logger.info(`Approval confirmed: ${approveTx.hash}`) + } + } + + // 5. Execute Stargate send with computed params and fees + const tx = await pool.send(sendParamTuple, messagingFee, refundAddress, { + value: valueToSend, + }) + + logger.info(`Transaction submitted: ${tx.hash}`) + await tx.wait() + logger.info(`Transaction confirmed.`) +} + +task('aave:supply', 'Sends tokens through Stargate and composes into AaveV3Composer') + .addParam('stargate', 'Stargate pool address') + .addParam('dstEid', 'Destination endpoint ID') + .addParam('composer', 'Composer contract address on the destination chain') + .addParam('amountLd', 'Token amount in local decimals to bridge') + .addOptionalParam('tokenReceiver', 'Recipient address on the destination chain') + .addOptionalParam('composeGasLimit', 'Gas limit to allocate for the compose call') + .addOptionalParam('refundAddress', 'Address receiving any leftover native fee') + .addOptionalParam('payInLzToken', 'Set to true to pay LayerZero fees with the LZ token (default false)', 'false') + .setAction(async (args: SendArgs, hre) => sendSupply(hre, args)) diff --git a/examples/oft-composers/test/foundry/AaveV3Composer.t.sol b/examples/oft-composers/test/foundry/AaveV3Composer.t.sol new file mode 100644 index 0000000000..5651d45b5d --- /dev/null +++ b/examples/oft-composers/test/foundry/AaveV3Composer.t.sol @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +// Testing libraries +import "forge-std/Test.sol"; +import { TestHelperOz5 } from "@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol"; + +// Composer contracts +import { AaveV3Composer } from "../../contracts/AaveV3Composer.sol"; +import { IAaveV3Composer } from "../../contracts/interfaces/IAaveV3Composer.sol"; + +// LayerZero helpers +import { OFTComposeMsgCodec } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/libs/OFTComposeMsgCodec.sol"; + +// Mock dependencies +import { ERC20Mock } from "../mocks/ERC20Mock.sol"; +import { AaveV3PoolMock } from "../mocks/AaveV3PoolMock.sol"; +import { StargatePoolMock } from "../mocks/StargatePoolMock.sol"; + +// OpenZeppelin interfaces +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/** + * @title AaveV3ComposerTest + * @notice Unit tests for the `AaveV3Composer` contract. + */ +contract AaveV3ComposerTest is TestHelperOz5, IAaveV3Composer { + // ---------------------------- + // ============ Setup =========== + // ---------------------------- + + // Endpoint identifiers + uint32 private constant aEid = 1; + uint32 private constant bEid = 2; + + // Token balances + uint256 private constant initialBalance = 100 ether; + uint256 private constant amountLD = 1 ether; + + // Mock contracts + ERC20Mock private token; + AaveV3PoolMock private aave; + StargatePoolMock private stargate; + AaveV3Composer private composer; + + // User addresses + address private userA; + address private receiver; + + /** + * @notice Sets up the testing environment before each test. + * @dev Deploys mocks, configures endpoints, and seeds initial token balances. + */ + function setUp() public override { + super.setUp(); + setUpEndpoints(2, LibraryType.UltraLightNode); + token = new ERC20Mock("TokenIn", "TIN"); + stargate = new StargatePoolMock(address(endpoints[bEid]), address(token)); + aave = new AaveV3PoolMock(address(token)); + composer = new AaveV3Composer(address(aave), address(stargate)); + token.mint(address(composer), initialBalance); + userA = makeAddr("userA"); + receiver = makeAddr("receiver"); + } + + // ---------------------------- + // ========= Constructor ======= + // ---------------------------- + + /** + * @notice Verifies the constructor initializes contract state correctly. + * @dev Asserts dependencies, endpoints, and allowances are configured as expected. + */ + function test_constructor() public view { + assertEq(address(composer.AAVE()), address(aave)); + assertEq(composer.ENDPOINT(), address(endpoints[bEid])); + assertEq(composer.STARGATE(), address(stargate)); + assertEq(composer.TOKEN_IN(), address(token)); + assertEq(IERC20(address(token)).allowance(address(composer), address(aave)), type(uint256).max); + } + + // ---------------------------- + // ========= Test Cases ======= + // ---------------------------- + + /** + * @notice Tests that a successful `lzCompose` call supplies tokens to Aave. + * @dev Confirms the mock pool receives the correct parameters and token balance updates. + */ + function test_lzCompose_supply_emitsEventsAndSupplies() public { + bytes memory fullMessage = _buildMessageForReceiver(receiver); + + vm.expectEmit(true, false, false, true); + emit Supplied(receiver, amountLD); + vm.expectEmit(false, false, false, true); + emit Sent(bytes32(0)); + + vm.prank(address(endpoints[bEid])); + composer.lzCompose(address(stargate), bytes32(0), fullMessage, address(0), bytes("")); + + assertEq(aave.lastAsset(), address(token)); + assertEq(aave.lastAmount(), amountLD); + assertEq(aave.lastOnBehalfOf(), receiver); + assertEq(aave.tokenBalance(), amountLD); + assertEq(token.balanceOf(address(composer)), initialBalance - amountLD); + assertEq(stargate.refundCallCount(), 0); + } + + /** + * @notice Tests the fallback path when the Aave pool reverts. + * @dev Ensures the composer transfers tokens directly to the receiver on failure. + */ + function test_lzCompose_supplyFailureRefundsAndEmits() public { + aave.setShouldRevert(true); + + bytes memory fullMessage = _buildMessageForReceiver(receiver); + address originUser = makeAddr("originUser"); + + vm.expectEmit(true, false, false, true); + emit SupplyFailedAndRefunded(receiver, amountLD); + vm.expectEmit(false, false, false, true); + emit Sent(bytes32(0)); + + vm.startPrank(address(endpoints[bEid]), originUser); + composer.lzCompose(address(stargate), bytes32(0), fullMessage, address(0), bytes("")); + vm.stopPrank(); + + assertEq(aave.tokenBalance(), 0); + assertEq(stargate.refundCallCount(), 1); + assertEq(stargate.lastRefundDstEid(), aEid); + assertEq(stargate.lastRefundTo(), addressToBytes32(userA)); + assertEq(stargate.lastRefundAmount(), amountLD); + assertEq(stargate.lastRefundAddress(), originUser); + } + + function test_lzCompose_handleComposeRevertEmitsRefunded() public { + bytes memory invalidComposeMsg = new bytes(0); + bytes memory fullMessage = OFTComposeMsgCodec.encode( + 1, + aEid, + amountLD, + abi.encodePacked(addressToBytes32(userA), invalidComposeMsg) + ); + + vm.expectEmit(false, false, false, true); + emit Refunded(bytes32(0)); + + vm.prank(address(endpoints[bEid])); + composer.lzCompose(address(stargate), bytes32(0), fullMessage, address(0), bytes("")); + + assertEq(stargate.refundCallCount(), 1); + assertEq(stargate.lastRefundDstEid(), aEid); + assertEq(stargate.lastRefundTo(), addressToBytes32(userA)); + assertEq(stargate.lastRefundAmount(), amountLD); + } + + /** + * @notice Tests `lzCompose` reverts when called by an unauthorized Stargate pool. + * @dev Expects the `UnauthorizedStargatePool` error from `IAaveV3Composer`. + */ + function test_lzCompose_unauthorizedStargate() public { + bytes memory fullMessage = _buildMessageForReceiver(receiver); + vm.startPrank(address(endpoints[bEid])); + vm.expectRevert( + abi.encodeWithSelector(IAaveV3Composer.OnlyValidComposerCaller.selector, address(0x1234)) + ); + composer.lzCompose(address(0x1234), bytes32(0), fullMessage, address(0), bytes("")); + vm.stopPrank(); + } + + /** + * @notice Tests `lzCompose` reverts when invoked from an unauthorized endpoint. + * @dev Expects the `UnauthorizedEndpoint` error from `IAaveV3Composer`. + */ + function test_lzCompose_unauthorizedEndpoint() public { + bytes memory fullMessage = _buildMessageForReceiver(receiver); + vm.expectRevert(abi.encodeWithSelector(IAaveV3Composer.OnlyEndpoint.selector, address(this))); + composer.lzCompose(address(stargate), bytes32(0), fullMessage, address(0), bytes("")); + } + + // --------------------------------------------------------------------- + // Helpers + // --------------------------------------------------------------------- + + function _buildMessageForReceiver(address _receiver) internal view returns (bytes memory) { + bytes memory composeMsg = abi.encode(_receiver); + return + OFTComposeMsgCodec.encode( + 1, + aEid, + amountLD, + abi.encodePacked(addressToBytes32(userA), composeMsg) + ); + } +} diff --git a/examples/oft-composers/test/foundry/MyOFT.t.sol b/examples/oft-composers/test/foundry/MyOFT.t.sol new file mode 100644 index 0000000000..b00e0f449b --- /dev/null +++ b/examples/oft-composers/test/foundry/MyOFT.t.sol @@ -0,0 +1,160 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +// Mock imports +import { OFTMock } from "../mocks/OFTMock.sol"; +import { ERC20Mock } from "../mocks/ERC20Mock.sol"; +import { OFTComposerMock } from "../mocks/OFTComposerMock.sol"; + +// OApp imports +import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol"; + +// OFT imports +import { IOFT, SendParam, OFTReceipt } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; +import { MessagingFee, MessagingReceipt } from "@layerzerolabs/oft-evm/contracts/OFTCore.sol"; +import { OFTMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol"; +import { OFTComposeMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol"; + +// OZ imports +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; + +// Forge imports +import "forge-std/console.sol"; + +// DevTools imports +import { TestHelperOz5 } from "@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol"; + +contract MyOFTTest is TestHelperOz5 { + using OptionsBuilder for bytes; + + uint32 private aEid = 1; + uint32 private bEid = 2; + + OFTMock private aOFT; + OFTMock private bOFT; + + address private userA = makeAddr("userA"); + address private userB = makeAddr("userB"); + uint256 private initialBalance = 100 ether; + + function setUp() public virtual override { + vm.deal(userA, 1000 ether); + vm.deal(userB, 1000 ether); + + super.setUp(); + setUpEndpoints(2, LibraryType.UltraLightNode); + + aOFT = OFTMock( + _deployOApp(type(OFTMock).creationCode, abi.encode("aOFT", "aOFT", address(endpoints[aEid]), address(this))) + ); + + bOFT = OFTMock( + _deployOApp(type(OFTMock).creationCode, abi.encode("bOFT", "bOFT", address(endpoints[bEid]), address(this))) + ); + + // config and wire the ofts + address[] memory ofts = new address[](2); + ofts[0] = address(aOFT); + ofts[1] = address(bOFT); + this.wireOApps(ofts); + + // mint tokens + aOFT.mint(userA, initialBalance); + bOFT.mint(userB, initialBalance); + } + + function test_constructor() public { + assertEq(aOFT.owner(), address(this)); + assertEq(bOFT.owner(), address(this)); + + assertEq(aOFT.balanceOf(userA), initialBalance); + assertEq(bOFT.balanceOf(userB), initialBalance); + + assertEq(aOFT.token(), address(aOFT)); + assertEq(bOFT.token(), address(bOFT)); + } + + function test_send_oft() public { + uint256 tokensToSend = 1 ether; + bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0); + SendParam memory sendParam = SendParam( + bEid, + addressToBytes32(userB), + tokensToSend, + tokensToSend, + options, + "", + "" + ); + MessagingFee memory fee = aOFT.quoteSend(sendParam, false); + + assertEq(aOFT.balanceOf(userA), initialBalance); + assertEq(bOFT.balanceOf(userB), initialBalance); + + vm.prank(userA); + aOFT.send{ value: fee.nativeFee }(sendParam, fee, payable(address(this))); + verifyPackets(bEid, addressToBytes32(address(bOFT))); + + assertEq(aOFT.balanceOf(userA), initialBalance - tokensToSend); + assertEq(bOFT.balanceOf(userB), initialBalance + tokensToSend); + } + + function test_send_oft_compose_msg() public { + uint256 tokensToSend = 1 ether; + + OFTComposerMock composer = new OFTComposerMock(); + + bytes memory options = OptionsBuilder + .newOptions() + .addExecutorLzReceiveOption(200000, 0) + .addExecutorLzComposeOption(0, 500000, 0); + bytes memory composeMsg = hex"1234"; + SendParam memory sendParam = SendParam( + bEid, + addressToBytes32(address(composer)), + tokensToSend, + tokensToSend, + options, + composeMsg, + "" + ); + MessagingFee memory fee = aOFT.quoteSend(sendParam, false); + + assertEq(aOFT.balanceOf(userA), initialBalance); + assertEq(bOFT.balanceOf(address(composer)), 0); + + vm.prank(userA); + (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) = aOFT.send{ value: fee.nativeFee }( + sendParam, + fee, + payable(address(this)) + ); + verifyPackets(bEid, addressToBytes32(address(bOFT))); + + // lzCompose params + uint32 dstEid_ = bEid; + address from_ = address(bOFT); + bytes memory options_ = options; + bytes32 guid_ = msgReceipt.guid; + address to_ = address(composer); + bytes memory composerMsg_ = OFTComposeMsgCodec.encode( + msgReceipt.nonce, + aEid, + oftReceipt.amountReceivedLD, + abi.encodePacked(addressToBytes32(userA), composeMsg) + ); + this.lzCompose(dstEid_, from_, options_, guid_, to_, composerMsg_); + + assertEq(aOFT.balanceOf(userA), initialBalance - tokensToSend); + assertEq(bOFT.balanceOf(address(composer)), tokensToSend); + + assertEq(composer.from(), from_); + assertEq(composer.guid(), guid_); + assertEq(composer.message(), composerMsg_); + assertEq(composer.executor(), address(this)); + assertEq(composer.extraData(), composerMsg_); // default to setting the extraData to the message as well to test + } + + // TODO import the rest of oft tests? +} diff --git a/examples/oft-composers/test/foundry/UniswapV3Composer.t.sol b/examples/oft-composers/test/foundry/UniswapV3Composer.t.sol new file mode 100644 index 0000000000..5ce0678c19 --- /dev/null +++ b/examples/oft-composers/test/foundry/UniswapV3Composer.t.sol @@ -0,0 +1,337 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +// Import necessary testing libraries and contracts +import "forge-std/Test.sol"; +import { UniswapV3Composer } from "../../contracts/UniswapV3Composer.sol"; +import { ISwapRouter } from "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol"; +import { IUniswapV3Composer } from "../../contracts/interfaces/IUniswapV3Composer.sol"; + +// Mock imports +import { OFTMock } from "../mocks/OFTMock.sol"; +import { ERC20Mock } from "../mocks/ERC20Mock.sol"; +import { SwapRouterMock } from "../mocks/SwapRouterMock.sol"; + +// OApp imports +import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol"; + +// OFT imports +import { IOFT, SendParam, OFTReceipt } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; +import { MessagingFee, MessagingReceipt } from "@layerzerolabs/oft-evm/contracts/OFTCore.sol"; +import { OFTComposeMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol"; +import { OFTMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol"; + +// OpenZeppelin imports +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; + +// Forge imports +import "forge-std/console.sol"; + +// DevTools imports +import { TestHelperOz5 } from "@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol"; + +/** + * @title UniswapV3ComposerTest + * @notice Unit tests for the UniswapV3Composer contract. + * @dev Utilizes Forge's testing framework to simulate interactions and verify contract behavior. + */ +contract UniswapV3ComposerTest is TestHelperOz5 { + using OptionsBuilder for bytes; + + // ---------------------------- + // ============ Setup =========== + // ---------------------------- + + // Endpoint Identifiers + uint32 private constant aEid = 1; + uint32 private constant bEid = 2; + + // Mock Contracts + OFTMock private aOFT; + OFTMock private bOFT; + UniswapV3Composer private bComposer; + SwapRouterMock private bSwapRouter; + + // ERC20 Tokens + address bTokenIn; + ERC20Mock private bTokenOut; + + // User Addresses + address private userA = makeAddr("userA"); + address private userB = makeAddr("userB"); + address private otherOFTB = makeAddr("otherOFTB"); + address private receiver = makeAddr("receiver"); + + // Initial Balances and Swap Amounts + uint256 private constant initialBalance = 100 ether; + uint256 private constant swapAmountIn = 1 ether; + uint256 private constant swapAmountOut = 1 ether; // Predefined output for SwapRouterMock + + /** + * @notice Sets up the testing environment before each test. + * + * @dev Deploys mock contracts, initializes token balances, and configures the UniswapV3Composer. + */ + function setUp() public virtual override { + // Allocate Ether to users + vm.deal(userA, 1000 ether); + vm.deal(userB, 1000 ether); + + // Initialize endpoints + super.setUp(); + setUpEndpoints(2, LibraryType.UltraLightNode); + + // Deploy mock ERC20 TokenOut and TokenIn + bTokenOut = new ERC20Mock("TokenOut", "OUT"); + + // Deploy mock OFTs with corresponding endpoints + aOFT = OFTMock( + _deployOApp(type(OFTMock).creationCode, abi.encode("aOFT", "aOFT", address(endpoints[aEid]), address(this))) + ); + + bOFT = OFTMock( + _deployOApp(type(OFTMock).creationCode, abi.encode("bOFT", "bOFT", address(endpoints[bEid]), address(this))) + ); + + // Every OFT variant has token() to distinguish between OFT Adapter and OFT + bTokenIn = address(bOFT.token()); + + // Deploy mock SwapRouter with correct tokenIn and tokenOut addresses + bSwapRouter = new SwapRouterMock(address(bTokenIn), address(bTokenOut), swapAmountOut); + + // Deploy the UniswapV3Composer contract with initialized SwapRouter and OFT + bComposer = new UniswapV3Composer(address(bSwapRouter), address(bOFT)); + + // Configure and link the deployed OFTs + address[] memory ofts = new address[](2); + ofts[0] = address(aOFT); + ofts[1] = address(bOFT); + this.wireOApps(ofts); + + // Mint initial tokens to users and contracts + aOFT.mint(userA, initialBalance); + bOFT.mint(userB, initialBalance); + bOFT.mint(address(bComposer), initialBalance); + // Note: SwapRouterMock handles minting TokenOut during swap execution + } + + // ---------------------------- + // ========= Constructor ======= + // ---------------------------- + + /** + * @notice Tests the constructor of UniswapV3Composer for correct initialization. + * @dev Verifies that SwapRouter, endpoint, and OFT addresses are set as expected. + */ + function test_constructor() public view { + // Assert that the SwapRouter address is correctly set in UniswapV3Composer + assertEq(address(bComposer.SWAP_ROUTER()), address(bSwapRouter), "SwapRouter address mismatch"); + + // Assert that the endpoint address is correctly set in UniswapV3Composer + assertEq(bComposer.ENDPOINT(), address(endpoints[bEid]), "Endpoint address mismatch"); + + // Assert that the OFT address is correctly set in UniswapV3Composer + assertEq(bComposer.OFT(), address(bOFT), "OFT address mismatch"); + + // Assert that the TOKEN_IN address is correctly set in UniswapV3Composer + assertEq(bComposer.TOKEN_IN(), address(bTokenIn), "TOKEN_IN address mismatch"); + } + + // ---------------------------- + // ========= Test Cases ======= + // ---------------------------- + + /** + * @notice Tests the `lzCompose` function to ensure it correctly handles incoming messages and executes swaps. + * @dev Simulates sending a compose message via LayerZero and verifies SwapRouterMock interactions and token balances. + */ + function test_lzCompose() public { + // ------------------------------ + // 1. Prepare the Compose Message + // ------------------------------ + uint24 fee = 3000; // Example fee tier + + // New slippage parameters. + uint256 swapAmountOutMinimum = 100; // Example minimum amount out + uint160 swapSqrtPriceLimitX96 = 0; // Example: no price limit (0) + + // Compose message now encodes: + // (tokenOut, fee, recipient, amountOutMinimum, sqrtPriceLimitX96) + bytes memory composeMsg = abi.encode( + address(bTokenOut), + fee, + receiver, + swapAmountOutMinimum, + swapSqrtPriceLimitX96 + ); + + // The full message now prepends the source sender (userA) to the composed payload. + // Here, addressToBytes32(userA) converts the source sender's address to a bytes32 representation. + bytes memory fullMessage = OFTComposeMsgCodec.encode( + 1, // _nonce: unique identifier + aEid, // _srcEid: source endpoint ID + swapAmountIn, // _amountLD: amount to be swapped + abi.encodePacked(addressToBytes32(userA), composeMsg) + ); + + // ------------------------------ + // 2. Simulate Sending the Message + // ------------------------------ + // Prank as the authorized endpoint to call lzCompose. + vm.prank(address(endpoints[bEid])); + + // Execute lzCompose with the encoded full message. + bComposer.lzCompose( + address(bOFT), // The originating OFT address. + bytes32(0), // guid (unused in this test) + fullMessage, + address(this), // executor (unused in this test) + bytes("") // extraData (unused in this test) + ); + + // ------------------------------ + // 3. Verify SwapRouterMock Interactions + // ------------------------------ + // Verify that the SwapRouter was called with the correct parameters. + // Note: The mock should record the following parameters for inspection. + assertEq(bSwapRouter.lastSender(), address(bComposer), "SwapRouter sender mismatch"); + assertEq(bSwapRouter.lastTokenIn(), address(bTokenIn), "TokenIn address mismatch"); + assertEq(bSwapRouter.lastTokenOut(), address(bTokenOut), "TokenOut address mismatch"); + assertEq(bSwapRouter.lastFee(), fee, "Fee tier mismatch"); + assertEq(bSwapRouter.lastRecipient(), receiver, "Recipient address mismatch"); + assertEq(bSwapRouter.lastAmountIn(), swapAmountIn, "AmountIn mismatch"); + assertEq(bSwapRouter.lastAmountOut(), swapAmountOut, "AmountOut mismatch"); + + // ------------------------------ + // 4. Verify Token Balances After Swap + // ------------------------------ + // Verify that bComposer's tokenIn balance decreased by swapAmountIn. + assertEq( + IERC20(bOFT.token()).balanceOf(address(bComposer)), + initialBalance - swapAmountIn, + "bComposer TokenIn balance incorrect" + ); + + // Verify that the receiver's tokenOut balance increased by swapAmountOut. + assertEq(bTokenOut.balanceOf(receiver), swapAmountOut, "Receiver TokenOut balance incorrect"); + } + + /** + * @notice Tests the fallback logic in `lzCompose` when the swap fails. + * + * This test simulates a swap failure by setting the SwapRouterMock to revert. + * In that case, the fallback logic in the catch block should transfer the full token amount + * from the composer to the specified recipient. + */ + function test_lzCompose_Fallback() public { + // ------------------------------ + // 1. Prepare the Compose Message + // ------------------------------ + uint24 fee = 3000; // Example fee tier + uint256 swapAmountOutMinimum = 100; // Example minimum amount out + uint160 swapSqrtPriceLimitX96 = 0; // Example: no price limit + + // Compose message now encodes: + // (tokenOut, fee, recipient, amountOutMinimum, sqrtPriceLimitX96) + bytes memory composeMsg = abi.encode( + address(bTokenOut), + fee, + receiver, + swapAmountOutMinimum, + swapSqrtPriceLimitX96 + ); + + // The full message now prepends the source sender (userA) to the composed payload. + // addressToBytes32(userA) converts the source sender's address to a bytes32 representation. + bytes memory fullMessage = OFTComposeMsgCodec.encode( + 1, // _nonce: unique identifier + aEid, // _srcEid: source endpoint ID + swapAmountIn, // _amountLD: amount to be swapped + abi.encodePacked(addressToBytes32(userA), composeMsg) + ); + + // ------------------------------ + // 2. Configure the SwapRouterMock to Revert + // ------------------------------ + // Instruct the mock to revert when swapRouter.exactInputSingle() is called. + // This simulates a condition where the swap fails (e.g., slippage exceeded). + bSwapRouter.setShouldRevert(true); + + // Capture initial tokenIn balances for later verification. + uint256 initialComposerBalance = IERC20(bOFT.token()).balanceOf(address(bComposer)); + uint256 initialReceiverBalance = IERC20(bOFT.token()).balanceOf(receiver); + + // ------------------------------ + // 3. Simulate Sending the Message + // ------------------------------ + // Prank as the authorized endpoint to call lzCompose. + vm.prank(address(endpoints[bEid])); + + // Execute lzCompose with the encoded full message. + bComposer.lzCompose( + address(bOFT), // The originating OFT address. + bytes32(0), // guid (unused in this test) + fullMessage, + address(this), // executor (unused in this test) + bytes("") // extraData (unused in this test) + ); + + // ------------------------------ + // 4. Verify Fallback Logic Execution + // ------------------------------ + // Since the swap reverted, the catch block should have transferred swapAmountIn of tokenIn + // directly from bComposer to the receiver. + assertEq( + IERC20(bOFT.token()).balanceOf(address(bComposer)), + initialComposerBalance - swapAmountIn, + "bComposer TokenIn balance incorrect after fallback transfer" + ); + + assertEq( + IERC20(bOFT.token()).balanceOf(receiver), + initialReceiverBalance + swapAmountIn, + "Receiver TokenIn balance incorrect after fallback transfer" + ); + } + + /** + * @notice Tests that `lzCompose` reverts when called with an unauthorized OFT. + * @dev Attempts to invoke `lzCompose` with a different OFT address and expects a revert. + */ + function test_lzCompose_UnauthorizedOFT() public { + // ------------------------------ + // 1. Prepare the Unauthorized Compose Message + // ------------------------------ + uint24 fee = 3000; // Example fee tier + + // Encode the compose message with (userA, bTokenOut, fee, receiver) + bytes memory composeMsg = abi.encode(userA, address(bTokenOut), fee, receiver); + + // Encode the full message using OFTComposeMsgCodec + bytes memory fullMessage = OFTComposeMsgCodec.encode( + 1, // _nonce + aEid, // _srcEid + swapAmountIn, // _amountLD + composeMsg // _composeMsg + ); + + // ------------------------------ + // 2. Attempt Unauthorized lzCompose + // ------------------------------ + // Prank as the authorized endpoint to call lzCompose + vm.prank(address(endpoints[bEid])); + + // Expect the transaction to revert with "Unauthorized OFT" + vm.expectRevert(IUniswapV3Composer.UnauthorizedOFT.selector); + + // Attempt to execute lzCompose with an unauthorized OFT address + bComposer.lzCompose( + address(otherOFTB), + bytes32(0), // guid (unused in this test) + fullMessage, + address(0), // executor + bytes("") // extraData (unused in this test) + ); + } +} diff --git a/examples/oft-composers/test/mocks/AaveV3PoolMock.sol b/examples/oft-composers/test/mocks/AaveV3PoolMock.sol new file mode 100644 index 0000000000..997a157c7c --- /dev/null +++ b/examples/oft-composers/test/mocks/AaveV3PoolMock.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IAaveV3Pool } from "../../contracts/interfaces/IAaveV3Pool.sol"; + +contract AaveV3PoolMock is IAaveV3Pool { + address public lastAsset; + uint256 public lastAmount; + address public lastOnBehalfOf; + uint16 public lastReferralCode; + bool public shouldRevert; + IERC20 private immutable _token; + + constructor(address token_) { + _token = IERC20(token_); + } + + function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external override { + if (shouldRevert) revert(); + lastAsset = asset; + lastAmount = amount; + lastOnBehalfOf = onBehalfOf; + lastReferralCode = referralCode; + _token.transferFrom(msg.sender, address(this), amount); + } + + function setShouldRevert(bool value) external { + shouldRevert = value; + } + + function tokenBalance() external view returns (uint256) { + return _token.balanceOf(address(this)); + } +} diff --git a/examples/oft-composers/test/mocks/ERC20Mock.sol b/examples/oft-composers/test/mocks/ERC20Mock.sol new file mode 100644 index 0000000000..6ce17e4184 --- /dev/null +++ b/examples/oft-composers/test/mocks/ERC20Mock.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract ERC20Mock is ERC20 { + constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} + + function mint(address _to, uint256 _amount) public { + _mint(_to, _amount); + } +} diff --git a/examples/oft-composers/test/mocks/OFTComposerMock.sol b/examples/oft-composers/test/mocks/OFTComposerMock.sol new file mode 100644 index 0000000000..fdd5c24264 --- /dev/null +++ b/examples/oft-composers/test/mocks/OFTComposerMock.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import { IOAppComposer } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol"; + +contract OFTComposerMock is IOAppComposer { + // default empty values for testing a lzCompose received message + address public from; + bytes32 public guid; + bytes public message; + address public executor; + bytes public extraData; + + function lzCompose( + address _from, + bytes32 _guid, + bytes calldata _message, + address _executor, + bytes calldata /*_extraData*/ + ) external payable { + from = _from; + guid = _guid; + message = _message; + executor = _executor; + extraData = _message; + } +} diff --git a/examples/oft-composers/test/mocks/OFTMock.sol b/examples/oft-composers/test/mocks/OFTMock.sol new file mode 100644 index 0000000000..cef8770f55 --- /dev/null +++ b/examples/oft-composers/test/mocks/OFTMock.sol @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { OFT } from "@layerzerolabs/oft-evm/contracts/OFT.sol"; +import { SendParam } from "@layerzerolabs/oft-evm/contracts/OFTCore.sol"; + +contract OFTMock is OFT { + constructor( + string memory _name, + string memory _symbol, + address _lzEndpoint, + address _delegate + ) Ownable(_delegate) OFT(_name, _symbol, _lzEndpoint, _delegate) {} + + function mint(address _to, uint256 _amount) public { + _mint(_to, _amount); + } + + // @dev expose internal functions for testing purposes + function debit( + uint256 _amountToSendLD, + uint256 _minAmountToCreditLD, + uint32 _dstEid + ) public returns (uint256 amountDebitedLD, uint256 amountToCreditLD) { + return _debit(msg.sender, _amountToSendLD, _minAmountToCreditLD, _dstEid); + } + + function debitView( + uint256 _amountToSendLD, + uint256 _minAmountToCreditLD, + uint32 _dstEid + ) public view returns (uint256 amountDebitedLD, uint256 amountToCreditLD) { + return _debitView(_amountToSendLD, _minAmountToCreditLD, _dstEid); + } + + function removeDust(uint256 _amountLD) public view returns (uint256 amountLD) { + return _removeDust(_amountLD); + } + + function toLD(uint64 _amountSD) public view returns (uint256 amountLD) { + return _toLD(_amountSD); + } + + function toSD(uint256 _amountLD) public view returns (uint64 amountSD) { + return _toSD(_amountLD); + } + + function credit(address _to, uint256 _amountToCreditLD, uint32 _srcEid) public returns (uint256 amountReceivedLD) { + return _credit(_to, _amountToCreditLD, _srcEid); + } + + function buildMsgAndOptions( + SendParam calldata _sendParam, + uint256 _amountToCreditLD + ) public view returns (bytes memory message, bytes memory options) { + return _buildMsgAndOptions(_sendParam, _amountToCreditLD); + } +} diff --git a/examples/oft-composers/test/mocks/StargatePoolMock.sol b/examples/oft-composers/test/mocks/StargatePoolMock.sol new file mode 100644 index 0000000000..e6f02da580 --- /dev/null +++ b/examples/oft-composers/test/mocks/StargatePoolMock.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import { ILayerZeroEndpointV2 } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol"; +import { MessagingFee, MessagingReceipt, OFTReceipt, SendParam } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; + +/** + * @dev Minimal mock that exposes the pieces of the Stargate/OFT contract the composer interacts with. + * It records every `send` invocation so tests can assert refund behaviour without needing a full OFT. + */ +contract StargatePoolMock { + ILayerZeroEndpointV2 private immutable _endpoint; + address private immutable _token; + + uint32 public lastRefundDstEid; + bytes32 public lastRefundTo; + uint256 public lastRefundAmount; + address public lastRefundAddress; + uint256 public lastRefundMsgValue; + uint256 public refundCallCount; + + event MockSend( + address indexed caller, + uint32 dstEid, + bytes32 to, + uint256 amountLD, + address refundAddress, + uint256 msgValue + ); + + constructor(address endpoint_, address token_) { + _endpoint = ILayerZeroEndpointV2(endpoint_); + _token = token_; + } + + function endpoint() external view returns (ILayerZeroEndpointV2) { + return _endpoint; + } + + function token() external view returns (address) { + return _token; + } + + function send( + SendParam calldata _sendParam, + MessagingFee calldata _fee, + address _refundAddress + ) external payable returns (MessagingReceipt memory receipt, OFTReceipt memory oftReceipt) { + lastRefundDstEid = _sendParam.dstEid; + lastRefundTo = _sendParam.to; + lastRefundAmount = _sendParam.amountLD; + lastRefundAddress = _refundAddress; + lastRefundMsgValue = msg.value; + refundCallCount++; + + emit MockSend(msg.sender, _sendParam.dstEid, _sendParam.to, _sendParam.amountLD, _refundAddress, msg.value); + + receipt = MessagingReceipt({ guid: bytes32(0), nonce: 0, fee: _fee }); + oftReceipt = OFTReceipt({ amountSentLD: _sendParam.amountLD, amountReceivedLD: _sendParam.amountLD }); + } +} diff --git a/examples/oft-composers/test/mocks/SwapRouterMock.sol b/examples/oft-composers/test/mocks/SwapRouterMock.sol new file mode 100644 index 0000000000..25c201a2c4 --- /dev/null +++ b/examples/oft-composers/test/mocks/SwapRouterMock.sol @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +// Import the ISwapRouter interface from Uniswap V3 Periphery +import { ISwapRouter } from "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol"; +import { IOFT } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol"; +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { ERC20Mock } from "../mocks/ERC20Mock.sol"; + +/** + * @title SwapRouterMock + * @notice A mock implementation of Uniswap V3's ISwapRouter for testing purposes. + * @dev This contract records the parameters of the last swap and returns a predefined amountOut. + */ +contract SwapRouterMock is ISwapRouter { + // State variables to record the parameters of the last swap + address public lastSender; + address public lastTokenIn; + address public lastTokenOut; + uint24 public lastFee; + address public lastRecipient; + uint256 public lastAmountIn; + uint256 public lastAmountOut; + + // ERC20 tokens used for swapping + IERC20 public tokenIn; + ERC20Mock public tokenOut; + + // Predefined amountOut to return on swaps + uint256 private predefinedAmountOut; + + // Flag to simulate revert behavior + bool public shouldRevert; + + /** + * @notice Initializes the SwapRouterMock with predefined tokens and amountOut. + * @param _oftIn The OFT address being swapped from. + * @param _tokenOut The ERC20 token address being swapped to. + * @param _predefinedAmountOut The amount of tokenOut to return on swaps. + */ + constructor(address _oftIn, address _tokenOut, uint256 _predefinedAmountOut) { + tokenIn = IERC20(IOFT(_oftIn).token()); + tokenOut = ERC20Mock(_tokenOut); + predefinedAmountOut = _predefinedAmountOut; + } + + /** + * @notice Allows setting a new predefined amountOut for subsequent swaps. + * @param _newAmountOut The new amountOut to return. + */ + function setPredefinedAmountOut(uint256 _newAmountOut) external { + predefinedAmountOut = _newAmountOut; + } + + /** + * @notice Sets whether the swap should revert to simulate failure conditions. + * @param _shouldRevert If true, the swap will revert. + */ + function setShouldRevert(bool _shouldRevert) external { + shouldRevert = _shouldRevert; + } + + /** + * @notice Mocks the exactInputSingle function of Uniswap V3's ISwapRouter. + * @param params The parameters for the swap, as defined in ISwapRouter.ExactInputSingleParams. + * @return amountOut The amount of tokenOut received from the swap. + * + * @dev This function records the swap parameters and returns a predefined amountOut. + * It simulates the token transfer by minting tokenOut to the recipient. + * If shouldRevert is true, it reverts to simulate a swap failure. + */ + function exactInputSingle( + ExactInputSingleParams calldata params + ) external payable override returns (uint256 amountOut) { + // Simulate a swap failure if requested. + if (shouldRevert) { + revert("SwapRouterMock: swap reverted as requested"); + } + + // Validate amountIn. + require(params.amountIn > 0, "SwapRouterMock: amountIn must be greater than zero"); + + // Record the parameters of the swap. + lastSender = msg.sender; + lastTokenIn = params.tokenIn; + lastTokenOut = params.tokenOut; + lastFee = params.fee; + lastRecipient = params.recipient; + lastAmountIn = params.amountIn; + lastAmountOut = predefinedAmountOut; + + // Simulate the transfer of tokenIn from the sender to the SwapRouterMock. + tokenIn.transferFrom(msg.sender, address(this), params.amountIn); + + // Simulate minting tokenOut to the recipient. + tokenOut.mint(params.recipient, predefinedAmountOut); + + // Return the predefined amountOut. + return predefinedAmountOut; + } + + // The following functions are not implemented in this mock and will revert if called. + + function exactInput( + ISwapRouter.ExactInputParams calldata /*params*/ + ) external payable override returns (uint256 /*amountOut*/) { + revert("SwapRouterMock: exactInput not implemented"); + } + + function exactOutputSingle( + ISwapRouter.ExactOutputSingleParams calldata /*params*/ + ) external payable override returns (uint256 /*amountIn*/) { + revert("SwapRouterMock: exactOutputSingle not implemented"); + } + + function exactOutput( + ISwapRouter.ExactOutputParams calldata /*params*/ + ) external payable override returns (uint256 /*amountIn*/) { + revert("SwapRouterMock: exactOutput not implemented"); + } + + function uniswapV3SwapCallback( + int256 /*amount0Delta*/, + int256 /*amount1Delta*/, + bytes calldata /*data*/ + ) external pure override { + revert("SwapRouterMock: uniswapV3SwapCallback not implemented"); + } +} diff --git a/examples/oft-composers/tsconfig.json b/examples/oft-composers/tsconfig.json new file mode 100644 index 0000000000..027ad0f3f1 --- /dev/null +++ b/examples/oft-composers/tsconfig.json @@ -0,0 +1,13 @@ +{ + "exclude": ["node_modules"], + "include": ["deploy", "tasks", "test", "hardhat.config.ts"], + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} diff --git a/packages/create-lz-oapp/src/config.ts b/packages/create-lz-oapp/src/config.ts index 009f551b5f..4a06671502 100644 --- a/packages/create-lz-oapp/src/config.ts +++ b/packages/create-lz-oapp/src/config.ts @@ -214,6 +214,17 @@ export const getExamples = (): Example[] => { }, ] : []), + ...(process.env.LZ_ENABLE_OFT_COMPOSERS + ? [ + { + id: 'oft-composers', + label: 'OFT Composers', + repository, + directory: 'examples/oft-composers', + ref, + }, + ] + : []), ...(process.env.LZ_ENABLE_EXPERIMENTAL_OMNI_CALL_EXAMPLE ? [ { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62f4c41801..5d08ac49fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,7 +81,7 @@ importers: dependencies: '@layerzerolabs/devtools': specifier: ^1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ^3.1.0 version: link:../../packages/devtools-evm-hardhat @@ -93,7 +93,7 @@ importers: version: link:../../packages/export-deployments '@layerzerolabs/io-devtools': specifier: ^0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-evm-sdk-v1': specifier: ^3.0.49 version: 3.0.59 @@ -178,7 +178,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -190,10 +190,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -295,10 +295,10 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -310,10 +310,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -409,10 +409,10 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -424,10 +424,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -526,7 +526,7 @@ importers: version: link:../../packages/metadata-tools '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -538,10 +538,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -628,7 +628,7 @@ importers: version: link:../../packages/devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../../packages/devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) @@ -664,13 +664,13 @@ importers: version: 3.0.59 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-move': specifier: ^1.1.0 - version: link:../../packages/oft-move + version: 1.1.2 '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -682,10 +682,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -808,7 +808,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -820,10 +820,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -920,7 +920,7 @@ importers: version: 0.29.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ^3.1.0 version: link:../../packages/devtools-evm-hardhat @@ -932,7 +932,7 @@ importers: version: 2.3.44(typescript@5.5.3) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.86 version: 3.0.86 @@ -956,7 +956,7 @@ importers: version: link:../../packages/metadata-tools '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -974,10 +974,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../../packages/ua-devtools @@ -1130,10 +1130,10 @@ importers: version: link:../../packages/metadata-tools '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1145,10 +1145,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1244,10 +1244,10 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1259,10 +1259,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1352,7 +1352,7 @@ importers: version: link:../../packages/devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../../packages/devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) @@ -1388,13 +1388,13 @@ importers: version: 3.0.59 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-move': specifier: ^1.1.0 - version: link:../../packages/oft-move + version: 1.1.2 '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1406,10 +1406,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1523,7 +1523,7 @@ importers: version: link:../../packages/devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../../packages/devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) @@ -1559,13 +1559,13 @@ importers: version: 3.0.59 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-move': specifier: ^1.1.0 - version: link:../../packages/oft-move + version: 1.1.2 '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1577,10 +1577,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1706,13 +1706,13 @@ importers: version: link:../../packages/oapp-alt-evm '@layerzerolabs/oapp-evm': specifier: ^0.3.0 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-alt-evm': specifier: ^0.0.3 version: link:../../packages/oft-alt-evm '@layerzerolabs/oft-evm': specifier: ^3.0.0 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1724,10 +1724,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1814,7 +1814,7 @@ importers: version: link:../../packages/devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../../packages/devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) @@ -1850,13 +1850,13 @@ importers: version: 3.0.59 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-move': specifier: ^1.1.0 - version: link:../../packages/oft-move + version: 1.1.2 '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -1868,10 +1868,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -1966,6 +1966,138 @@ importers: specifier: ^2.6.1 version: 2.7.0 + examples/oft-composers: + devDependencies: + '@babel/core': + specifier: ^7.23.9 + version: 7.23.9 + '@layerzerolabs/devtools-evm-hardhat': + specifier: ^2.0.1 + version: 2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@1.0.6)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) + '@layerzerolabs/eslint-config-next': + specifier: ~2.3.39 + version: 2.3.44(typescript@5.5.3) + '@layerzerolabs/io-devtools': + specifier: ^0.2.1 + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': + specifier: ^3.0.12 + version: 3.0.86 + '@layerzerolabs/lz-evm-messagelib-v2': + specifier: ^3.0.12 + version: 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-oapp-v2': + specifier: ^3.0.145 + version: 3.0.145(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': + specifier: ^3.0.12 + version: 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': + specifier: ^3.0.12 + version: 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@layerzerolabs/lz-v2-utilities': + specifier: ^3.0.12 + version: 3.0.86 + '@layerzerolabs/oapp-evm': + specifier: ^0.3.0 + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@layerzerolabs/oft-evm': + specifier: ^3.0.0 + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@layerzerolabs/prettier-config-next': + specifier: ^2.3.39 + version: 2.3.44 + '@layerzerolabs/solhint-config': + specifier: ^3.0.12 + version: 3.0.12(typescript@5.5.3) + '@layerzerolabs/test-devtools-evm-foundry': + specifier: ~5.1.0 + version: 5.1.0(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@layerzerolabs/oft-evm@3.2.1)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@layerzerolabs/toolbox-foundry': + specifier: ~0.1.9 + version: 0.1.13 + '@layerzerolabs/toolbox-hardhat': + specifier: ~0.6.0 + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.5 + version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) + '@nomiclabs/hardhat-ethers': + specifier: ^2.2.3 + version: 2.2.3(ethers@5.7.2)(hardhat@2.22.12) + '@openzeppelin/contracts': + specifier: ^5.0.2 + version: 5.1.0 + '@openzeppelin/contracts-upgradeable': + specifier: ^5.0.2 + version: 5.1.0(@openzeppelin/contracts@5.1.0) + '@rushstack/eslint-patch': + specifier: ^1.7.0 + version: 1.7.0 + '@stargatefinance/stg-evm-v2': + specifier: ^5.0.3 + version: 5.0.3(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(@types/node@18.18.14)(chai@4.5.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)(typescript@5.5.3) + '@types/chai': + specifier: ^4.3.11 + version: 4.3.20 + '@types/mocha': + specifier: ^10.0.6 + version: 10.0.6 + '@types/node': + specifier: ~18.18.14 + version: 18.18.14 + '@uniswap/v3-core': + specifier: ^1.0.1 + version: 1.0.1 + '@uniswap/v3-periphery': + specifier: ^1.4.4 + version: 1.4.4 + chai: + specifier: ^4.4.1 + version: 4.5.0 + concurrently: + specifier: ~9.1.0 + version: 9.1.0 + dotenv: + specifier: ^16.4.1 + version: 16.4.7 + eslint: + specifier: ^8.55.0 + version: 8.57.1 + eslint-plugin-jest-extended: + specifier: ~2.0.0 + version: 2.0.0(eslint@8.57.1)(typescript@5.5.3) + ethers: + specifier: ^5.7.2 + version: 5.7.2 + hardhat: + specifier: ^2.22.10 + version: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-contract-sizer: + specifier: ^2.10.0 + version: 2.10.0(hardhat@2.22.12) + hardhat-deploy: + specifier: ^0.12.1 + version: 0.12.4 + mocha: + specifier: ^10.2.0 + version: 10.2.0 + prettier: + specifier: ^3.2.5 + version: 3.5.3 + solhint: + specifier: ^4.1.1 + version: 4.1.1(typescript@5.5.3) + solidity-bytes-utils: + specifier: ^0.8.2 + version: 0.8.2 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + typescript: + specifier: ^5.4.4 + version: 5.5.3 + examples/oft-hyperliquid: devDependencies: '@babel/core': @@ -2000,10 +2132,10 @@ importers: version: 3.0.86 '@layerzerolabs/oapp-evm': specifier: ^0.3.1 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.2 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -2015,10 +2147,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -2118,7 +2250,7 @@ importers: version: link:../../packages/devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../../packages/devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) @@ -2154,13 +2286,13 @@ importers: version: 3.0.59 '@layerzerolabs/oapp-evm': specifier: ^0.3.0 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.0.0 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-move': specifier: ^1.1.0 - version: link:../../packages/oft-move + version: 1.1.2 '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -2172,10 +2304,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.3 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -2280,10 +2412,10 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ^3.1.0 version: link:../../packages/devtools-evm-hardhat @@ -2295,7 +2427,7 @@ importers: version: 2.3.44(typescript@5.5.3) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.86 version: 3.0.86 @@ -2319,10 +2451,10 @@ importers: version: link:../../packages/metadata-tools '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-v2-solana-sdk': specifier: ^3.0.86 version: 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(chai@4.4.1)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) @@ -2349,10 +2481,10 @@ importers: version: link:../../packages/test-devtools-evm-hardhat '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../../packages/ua-devtools @@ -2529,16 +2661,16 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oapp-evm-upgradeable': specifier: ^0.1.2 version: link:../../packages/oapp-evm-upgradeable '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../../packages/oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm-upgradeable': specifier: ^3.0.2 - version: link:../../packages/oft-evm-upgradeable + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -2550,10 +2682,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomiclabs/hardhat-ethers': specifier: ^2.2.3 version: 2.2.3(ethers@5.7.2)(hardhat@2.22.12) @@ -2658,7 +2790,7 @@ importers: version: 0.0.2(@layerzerolabs/devtools-evm-hardhat@2.0.9)(@layerzerolabs/ua-devtools@3.0.6) '@layerzerolabs/oapp-evm': specifier: ^0.3.0 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -2670,10 +2802,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.3 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -2772,7 +2904,7 @@ importers: version: link:../../packages/metadata-tools '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/onft-evm': specifier: ^0.2.3 version: link:../../packages/onft-evm @@ -2787,10 +2919,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -2883,7 +3015,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/onft-evm': specifier: ^0.2.3 version: link:../../packages/onft-evm @@ -2898,10 +3030,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@matterlabs/hardhat-zksync-deploy': specifier: ~0.9.0 version: 0.9.0(ethers@5.7.2)(hardhat@2.22.12)(zksync-ethers@5.9.0) @@ -3006,7 +3138,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -3018,10 +3150,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -3120,7 +3252,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -3132,10 +3264,10 @@ importers: version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 - version: link:../../packages/toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.9 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -3244,13 +3376,13 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.75 version: 3.0.75 @@ -3299,7 +3431,7 @@ importers: devDependencies: '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@swc/core': specifier: ^1.4.0 version: 1.4.0 @@ -3378,13 +3510,13 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.75 version: 3.0.75 @@ -3445,7 +3577,7 @@ importers: version: 5.7.0 '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3494,10 +3626,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../ua-devtools @@ -3582,10 +3714,10 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3667,13 +3799,13 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3776,7 +3908,7 @@ importers: version: link:../devtools-extensible-cli '@layerzerolabs/io-devtools': specifier: ^0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3791,7 +3923,7 @@ importers: version: 3.0.75 '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.10 - version: link:../toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@types/argparse': specifier: ^2.0.17 version: 2.0.17 @@ -3855,10 +3987,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3937,10 +4069,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -3986,7 +4118,7 @@ importers: devDependencies: '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@swc/core': specifier: ^1.4.0 version: 1.4.0 @@ -4010,7 +4142,7 @@ importers: version: 2.16.2 jest: specifier: ^29.6.2 - version: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.18.14) tsup: specifier: ~8.0.1 version: 8.0.1(@swc/core@1.4.0)(typescript@5.5.3) @@ -4035,7 +4167,7 @@ importers: devDependencies: '@layerzerolabs/io-devtools': specifier: ^0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.81 version: 3.0.86 @@ -4050,10 +4182,10 @@ importers: version: 3.0.86(@types/node@22.15.3)(typescript@5.5.3) '@layerzerolabs/oapp-evm': specifier: ^0.3.1 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.2 - version: link:../oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 version: 2.3.44 @@ -4062,10 +4194,10 @@ importers: version: 3.0.12(typescript@5.5.3) '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@layerzerolabs/toolbox-hardhat': specifier: ^0.6.10 - version: link:../toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@msgpack/msgpack': specifier: ^3.0.0-beta2 version: 3.1.1 @@ -4195,7 +4327,7 @@ importers: version: 29.5.12 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.18.14) tslib: specifier: ~2.6.2 version: 2.6.3 @@ -4223,13 +4355,13 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.1.0 @@ -4257,7 +4389,7 @@ importers: version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4282,13 +4414,13 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4312,16 +4444,16 @@ importers: version: link:../oapp-alt-evm '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.1.0 @@ -4342,13 +4474,13 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4372,19 +4504,19 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oapp-evm-upgradeable': specifier: ^0.1.2 version: link:../oapp-evm-upgradeable '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4405,10 +4537,10 @@ importers: version: link:../devtools-extensible-cli '@layerzerolabs/devtools-move': specifier: ^1.0.9 - version: link:../devtools-move + version: 1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3) '@layerzerolabs/io-devtools': specifier: ^0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -4447,7 +4579,7 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -4490,10 +4622,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -4556,13 +4688,13 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/test-devtools-evm-foundry': specifier: ~6.0.3 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4577,10 +4709,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -4644,13 +4776,13 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -4711,25 +4843,25 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-solana': specifier: ~2.1.0 version: link:../devtools-solana '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 '@layerzerolabs/lz-solana-sdk-v2': specifier: ^3.0.0 - version: 3.0.0(typescript@5.5.3) + version: 3.0.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.75 version: 3.0.75 '@layerzerolabs/oft-v2-solana-sdk': specifier: ^3.0.38 - version: 3.0.38(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + version: 3.0.38(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/protocol-devtools': specifier: ~2.0.0 version: link:../protocol-devtools @@ -4820,10 +4952,10 @@ importers: dependencies: '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) devDependencies: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.75 @@ -4836,7 +4968,7 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) '@layerzerolabs/toolbox-foundry': specifier: ^0.1.12 - version: link:../toolbox-foundry + version: 0.1.13 '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -4869,10 +5001,10 @@ importers: version: 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4) '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5) '@layerzerolabs/oft-evm': specifier: ^3.1.3 - version: link:../oft-evm + version: 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5) '@openzeppelin/contracts': specifier: ^4.9.5 version: 4.9.5 @@ -4998,16 +5130,16 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5098,10 +5230,10 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5171,13 +5303,13 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5253,16 +5385,16 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5338,25 +5470,25 @@ importers: devDependencies: '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-solana': specifier: ~2.1.0 version: link:../devtools-solana '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 '@layerzerolabs/lz-solana-sdk-v2': specifier: ^3.0.59 - version: 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + version: 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.75 version: 3.0.75 '@layerzerolabs/oft-v2-solana-sdk': specifier: ^3.0.59 - version: 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + version: 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/protocol-devtools': specifier: ~2.0.0 version: link:../protocol-devtools @@ -5431,7 +5563,7 @@ importers: version: 5.7.0 '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@solidity-parser/parser': specifier: ^0.16.1 version: 0.16.2 @@ -5461,7 +5593,7 @@ importers: version: 12.6.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.18.14) tsup: specifier: ^8.0.1 version: 8.0.1(@swc/core@1.4.0)(typescript@5.5.3) @@ -5500,19 +5632,19 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-cli': specifier: ~0.0.6 - version: link:../../packages/devtools-cli + version: 0.0.7 '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5533,7 +5665,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/omnicounter-devtools': specifier: ~4.0.0 version: link:../../packages/omnicounter-devtools @@ -5554,7 +5686,7 @@ importers: version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../../packages/ua-devtools @@ -5641,16 +5773,16 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5692,7 +5824,7 @@ importers: version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -5761,10 +5893,10 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5815,13 +5947,13 @@ importers: version: link:../../packages/export-deployments '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/test-setup-devtools-evm-hardhat': specifier: ~8.0.0 version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 version: 3.0.5(ethers@5.7.2)(hardhat@2.22.12) @@ -5893,16 +6025,16 @@ importers: version: 5.7.2 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -5971,16 +6103,16 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -6001,7 +6133,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/omnicounter-devtools': specifier: ~4.0.0 version: link:../../packages/omnicounter-devtools @@ -6022,7 +6154,7 @@ importers: version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../../packages/ua-devtools @@ -6109,16 +6241,16 @@ importers: version: 5.7.0 '@layerzerolabs/devtools': specifier: ~1.0.0 - version: link:../../packages/devtools + version: 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) '@layerzerolabs/devtools-evm': specifier: ~2.0.0 - version: link:../../packages/devtools-evm + version: 2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/devtools-evm-hardhat': specifier: ~3.1.0 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': specifier: ~0.2.0 - version: link:../../packages/io-devtools + version: 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': specifier: ^3.0.75 version: 3.0.75 @@ -6145,7 +6277,7 @@ importers: version: 3.0.75 '@layerzerolabs/oapp-evm': specifier: ^0.3.2 - version: link:../../packages/oapp-evm + version: 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2) '@layerzerolabs/omnicounter-devtools': specifier: ~4.0.0 version: link:../../packages/omnicounter-devtools @@ -6166,7 +6298,7 @@ importers: version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': specifier: ~0.6.11 - version: link:../../packages/toolbox-hardhat + version: 0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) '@layerzerolabs/ua-devtools': specifier: ~4.0.0 version: link:../../packages/ua-devtools @@ -8957,7 +9089,56 @@ packages: '@kinobi-so/visitors-core': 0.21.5 dev: false - /@layerzerolabs/devtools-evm-hardhat@2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@1.0.6)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12): + /@layerzerolabs/devtools-cli@0.0.7: + resolution: {integrity: sha512-AijfRxDj7pRjme+Ida0bGTIPx54CIy1E01jyS8+NMwlDIe67I4WbEUcjX895XoF2tOu8w15TD3iq//DCe7s8gQ==} + engines: {node: '>=18'} + hasBin: true + dependencies: + yoga-layout-prebuilt: 1.10.0 + dev: true + + /@layerzerolabs/devtools-evm-hardhat@2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@1.0.6)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12): + resolution: {integrity: sha512-7vNPHtypjx3IjLV5+wPHq1nOOt5FWy2Bw4pBmPBt5XMsz8uIFuVtrYMr7CraICkwMOZUYYeu5EnJeT6erhRDIA==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~0.4.8 + '@layerzerolabs/devtools-evm': ~1.0.6 + '@layerzerolabs/io-devtools': ~0.1.16 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@nomiclabs/hardhat-ethers': ^2.2.3 + fp-ts: ^2.16.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 1.0.6(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/export-deployments': 0.0.16 + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.12) + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + fp-ts: 2.16.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.4 + micro-memoize: 4.1.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - ethers + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm-hardhat@2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12): resolution: {integrity: sha512-7vNPHtypjx3IjLV5+wPHq1nOOt5FWy2Bw4pBmPBt5XMsz8uIFuVtrYMr7CraICkwMOZUYYeu5EnJeT6erhRDIA==} peerDependencies: '@ethersproject/abi': ^5.7.0 @@ -8977,10 +9158,92 @@ packages: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/contracts': 5.7.0 '@ethersproject/providers': 5.7.2 - '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) - '@layerzerolabs/devtools-evm': 1.0.6(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/export-deployments': 0.0.16 + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.12) + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + fp-ts: 2.16.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.4 + micro-memoize: 4.1.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - ethers + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm-hardhat@4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12): + resolution: {integrity: sha512-RqF6hrVhkJ/O83cYXi744TPOaqBzi4W4+daVHpZsp1W32hDbojYNcXwHi7jldt7BOL0KT/t4A5lBVIcGzCh0YQ==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@nomiclabs/hardhat-ethers': ^2.2.3 + fp-ts: ^2.16.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/export-deployments': 0.0.16 + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.12) + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + fp-ts: 2.16.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.1 + micro-memoize: 4.1.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - ethers + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm-hardhat@4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12): + resolution: {integrity: sha512-RqF6hrVhkJ/O83cYXi744TPOaqBzi4W4+daVHpZsp1W32hDbojYNcXwHi7jldt7BOL0KT/t4A5lBVIcGzCh0YQ==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@nomiclabs/hardhat-ethers': ^2.2.3 + fp-ts: ^2.16.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) '@layerzerolabs/export-deployments': 0.0.16 - '@layerzerolabs/io-devtools': 0.1.17(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': 3.0.86 '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.12) '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) @@ -8998,7 +9261,7 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/devtools-evm@1.0.6(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4): + /@layerzerolabs/devtools-evm@1.0.6(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4): resolution: {integrity: sha512-9sHP5l2IGu2ccZnMkyh5zu5sCQLBOYYlU+9gziMCH5CsrnVCeP9/MvOumxpVWxxi76sEaajJGsTgEkjJ17aBPA==} peerDependencies: '@ethersproject/abi': ^5.7.0 @@ -9023,8 +9286,8 @@ packages: '@ethersproject/constants': 5.7.0 '@ethersproject/contracts': 5.7.0 '@ethersproject/providers': 5.7.2 - '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) - '@layerzerolabs/io-devtools': 0.1.17(zod@3.22.4) + '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': 3.0.86 '@safe-global/api-kit': 1.3.1 '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) @@ -9039,27 +9302,321 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/devtools@0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): - resolution: {integrity: sha512-Y9kjUQuyNfm9Vs07+Mk0+KkqHPwHN2cLSzKhe5Tp+52R7d4fI5zsn33IaJsqqGWxSDL1sKq7gFMTdtglTdsA8A==} + /@layerzerolabs/devtools-evm@2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4): + resolution: {integrity: sha512-Tt1I+QZu9/0Do8CXb4l3w3gNyPYbfYwU16DgrNtBorzeCNlud7irLE+VMvTzE5lWa8EakHg5cRkaxuumD1dAew==} peerDependencies: - '@ethersproject/bytes': ~5.7.0 - '@layerzerolabs/io-devtools': ~0.1.16 + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/address': ~5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~1.0.0 + '@layerzerolabs/io-devtools': ~0.2.0 '@layerzerolabs/lz-definitions': ^3.0.75 + fp-ts: ^2.16.2 zod: ^3.22.4 dependencies: - '@ethersproject/bytes': 5.7.0 - '@layerzerolabs/io-devtools': 0.1.17(zod@3.22.4) - '@layerzerolabs/lz-definitions': 3.0.86 - bs58: 6.0.0 - exponential-backoff: 3.1.1 - js-yaml: 4.1.0 - zod: 3.22.4 - dev: true - - /@layerzerolabs/eslint-config-next@2.3.44(typescript@5.5.3): - resolution: {integrity: sha512-WlBSy47LGPILdrNgzPiRtQf/hAY62IN37ncUsQwcr8T7cyX1HZREx2qljuXpvduLDAKn5otsm0XIqHuCRUHEFg==} - dependencies: - '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.1)(typescript@5.5.3) + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@safe-global/api-kit': 1.3.1 + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + ethers: 5.7.2 + fp-ts: 2.16.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@layerzerolabs/devtools-evm@2.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4): + resolution: {integrity: sha512-Tt1I+QZu9/0Do8CXb4l3w3gNyPYbfYwU16DgrNtBorzeCNlud7irLE+VMvTzE5lWa8EakHg5cRkaxuumD1dAew==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/address': ~5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~1.0.0 + '@layerzerolabs/io-devtools': ~0.2.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + fp-ts: ^2.16.2 + zod: ^3.22.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@safe-global/api-kit': 1.3.1 + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + ethers: 5.7.2 + fp-ts: 2.16.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm@3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4): + resolution: {integrity: sha512-k3oqoB8f4eQf111WtrFQOhzLaxsjEZn/N3o7Bbyn8HlNPPWCyockAfXZfTiJ5p5YXRBDJVO2RkwxsqE00wHnOw==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/address': ~5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + fp-ts: ^2.16.2 + zod: ^3.22.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@safe-global/api-kit': 1.3.1 + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + ethers: 5.7.2 + fp-ts: 2.16.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm@3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4): + resolution: {integrity: sha512-k3oqoB8f4eQf111WtrFQOhzLaxsjEZn/N3o7Bbyn8HlNPPWCyockAfXZfTiJ5p5YXRBDJVO2RkwxsqE00wHnOw==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/address': ~5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + fp-ts: ^2.16.2 + zod: ^3.22.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@safe-global/api-kit': 1.3.1 + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + ethers: 5.7.2 + fp-ts: 2.16.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-evm@3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(fp-ts@2.16.2)(zod@3.22.4): + resolution: {integrity: sha512-k3oqoB8f4eQf111WtrFQOhzLaxsjEZn/N3o7Bbyn8HlNPPWCyockAfXZfTiJ5p5YXRBDJVO2RkwxsqE00wHnOw==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/address': ~5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + fp-ts: ^2.16.2 + zod: ^3.22.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@safe-global/api-kit': 1.3.1 + '@safe-global/protocol-kit': 1.3.0(ethers@5.7.2) + ethers: 5.7.2 + fp-ts: 2.16.2 + p-memoize: 4.0.4 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/devtools-move@1.0.14(@babel/core@7.23.9)(@types/node@18.18.14)(esbuild@0.19.11)(ts-node@10.9.2)(typescript@5.5.3): + resolution: {integrity: sha512-7uXYeIPlyWCzxH0DM+XnUH2nKdDE3Ut+lyySmHq7/rzX271RQpSh/z5SvYLYLpIFH5DH83AtfFcep89ogOOe2Q==} + engines: {node: '>=18.16.0'} + dependencies: + '@types/chai': 4.3.20 + chai: 4.5.0 + inquirer: 12.4.1(@types/node@18.18.14) + jest: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + ts-jest: 29.2.5(@babel/core@7.23.9)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.5.3) + transitivePeerDependencies: + - '@babel/core' + - '@jest/transform' + - '@jest/types' + - '@types/node' + - babel-jest + - babel-plugin-macros + - esbuild + - node-notifier + - supports-color + - ts-node + - typescript + dev: true + + /@layerzerolabs/devtools@0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): + resolution: {integrity: sha512-Y9kjUQuyNfm9Vs07+Mk0+KkqHPwHN2cLSzKhe5Tp+52R7d4fI5zsn33IaJsqqGWxSDL1sKq7gFMTdtglTdsA8A==} + peerDependencies: + '@ethersproject/bytes': ~5.7.0 + '@layerzerolabs/io-devtools': ~0.1.16 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@ethersproject/bytes': 5.7.0 + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + bs58: 6.0.0 + exponential-backoff: 3.1.1 + js-yaml: 4.1.0 + zod: 3.22.4 + dev: true + + /@layerzerolabs/devtools@1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4): + resolution: {integrity: sha512-oz7zXqGSCkuTVe5wpoFF1gNtzQmJLBwCir+t32MbTlG7jamj6Zs9LL8x8/+LXvRNMOVOabTgdIpdEgWLRNVbhg==} + peerDependencies: + '@ethersproject/bytes': ~5.7.0 + '@layerzerolabs/io-devtools': ~0.2.1 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@ethersproject/bytes': 5.7.0 + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + bs58: 6.0.0 + exponential-backoff: 3.1.1 + js-yaml: 4.1.0 + zod: 3.22.4 + + /@layerzerolabs/devtools@1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): + resolution: {integrity: sha512-oz7zXqGSCkuTVe5wpoFF1gNtzQmJLBwCir+t32MbTlG7jamj6Zs9LL8x8/+LXvRNMOVOabTgdIpdEgWLRNVbhg==} + peerDependencies: + '@ethersproject/bytes': ~5.7.0 + '@layerzerolabs/io-devtools': ~0.2.1 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@ethersproject/bytes': 5.7.0 + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + bs58: 6.0.0 + exponential-backoff: 3.1.1 + js-yaml: 4.1.0 + zod: 3.22.4 + dev: true + + /@layerzerolabs/devtools@2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4): + resolution: {integrity: sha512-YwXVZ8fdfyJ3oc2nEVbaAs+vLkc0CuCwcWuTuhMy0GkySoW5kAZyJ3rANUNvOLdhq09VTev2hvlo9q5WeMdy9g==} + peerDependencies: + '@ethersproject/bytes': ~5.7.0 + '@layerzerolabs/io-devtools': ~0.3.1 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@ethersproject/bytes': 5.7.0 + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + bs58: 6.0.0 + exponential-backoff: 3.1.1 + js-yaml: 4.1.0 + zod: 3.22.4 + dev: true + + /@layerzerolabs/devtools@2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): + resolution: {integrity: sha512-YwXVZ8fdfyJ3oc2nEVbaAs+vLkc0CuCwcWuTuhMy0GkySoW5kAZyJ3rANUNvOLdhq09VTev2hvlo9q5WeMdy9g==} + peerDependencies: + '@ethersproject/bytes': ~5.7.0 + '@layerzerolabs/io-devtools': ~0.3.1 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@ethersproject/bytes': 5.7.0 + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + bs58: 6.0.0 + exponential-backoff: 3.1.1 + js-yaml: 4.1.0 + zod: 3.22.4 + dev: true + + /@layerzerolabs/eslint-config-next@2.3.44(typescript@5.5.3): + resolution: {integrity: sha512-WlBSy47LGPILdrNgzPiRtQf/hAY62IN37ncUsQwcr8T7cyX1HZREx2qljuXpvduLDAKn5otsm0XIqHuCRUHEFg==} + dependencies: + '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.1)(typescript@5.5.3) '@typescript-eslint/parser': 7.7.1(eslint@8.57.1)(typescript@5.5.3) eslint: 8.57.1 eslint-config-prettier: 9.1.0(eslint@8.57.1) @@ -9102,8 +9659,74 @@ packages: typescript: 5.5.3 dev: true - /@layerzerolabs/io-devtools@0.1.17(zod@3.22.4): - resolution: {integrity: sha512-3Todi2pGZFNlkKGb758AQ4inZOcxiiZHMLRfZyfNIyjslHa2vna2yOh4fQNvfIAZVKjZ0y80XNf6jkgPXz5RsQ==} + /@layerzerolabs/io-devtools@0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4): + resolution: {integrity: sha512-NqENU8ixAhAyN2Wv8x7n/FVqjnY0Q2J0dIE64aSYNeLCyatINxsg8YSNVu2g7CjShTcqVPOtrU2zydxExDJ2Kw==} + peerDependencies: + ink: ^3.2.0 + ink-gradient: ^2.0.0 + ink-table: ^3.1.0 + react: ^17.0.2 + yoga-layout-prebuilt: ^1.9.6 + zod: ^3.22.4 + peerDependenciesMeta: + ink: + optional: true + ink-gradient: + optional: true + ink-table: + optional: true + react: + optional: true + yoga-layout-prebuilt: + optional: true + dependencies: + chalk: 4.1.2 + ink: 3.2.0(@types/react@17.0.75)(react@17.0.2) + ink-gradient: 2.0.0(ink@3.2.0)(react@17.0.2) + ink-table: 3.1.0(ink@3.2.0)(react@17.0.2) + logform: 2.6.0 + prompts: 2.4.2 + react: 17.0.2 + table: 6.8.2 + winston: 3.11.0 + yoga-layout-prebuilt: 1.10.0 + zod: 3.22.4 + + /@layerzerolabs/io-devtools@0.2.1(ink-gradient@2.0.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4): + resolution: {integrity: sha512-NqENU8ixAhAyN2Wv8x7n/FVqjnY0Q2J0dIE64aSYNeLCyatINxsg8YSNVu2g7CjShTcqVPOtrU2zydxExDJ2Kw==} + peerDependencies: + ink: ^3.2.0 + ink-gradient: ^2.0.0 + ink-table: ^3.1.0 + react: ^17.0.2 + yoga-layout-prebuilt: ^1.9.6 + zod: ^3.22.4 + peerDependenciesMeta: + ink: + optional: true + ink-gradient: + optional: true + ink-table: + optional: true + react: + optional: true + yoga-layout-prebuilt: + optional: true + dependencies: + chalk: 4.1.2 + ink: 3.2.0(@types/react@17.0.75)(react@17.0.2) + ink-gradient: 2.0.0(ink@3.2.0)(react@17.0.2) + logform: 2.6.0 + prompts: 2.4.2 + react: 17.0.2 + table: 6.8.2 + winston: 3.11.0 + yoga-layout-prebuilt: 1.10.0 + zod: 3.22.4 + dev: true + + /@layerzerolabs/io-devtools@0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4): + resolution: {integrity: sha512-sP65pO9Op7vLJV2nd5us3ip30S+ylOvT1JiISZineP6Bj1PaPWlXRmjbbznue1VYnF629l+VJ1nYN7a3f1UOTQ==} peerDependencies: ink: ^3.2.0 ink-gradient: ^2.0.0 @@ -9124,10 +9747,15 @@ packages: optional: true dependencies: chalk: 4.1.2 + ink: 3.2.0(@types/react@17.0.75)(react@17.0.2) + ink-gradient: 2.0.0(ink@3.2.0)(react@17.0.2) + ink-table: 3.1.0(ink@3.2.0)(react@17.0.2) logform: 2.6.0 prompts: 2.4.2 + react: 17.0.2 table: 6.8.2 winston: 3.11.0 + yoga-layout-prebuilt: 1.10.0 zod: 3.22.4 dev: true @@ -9355,11 +9983,33 @@ packages: tiny-invariant: 1.3.3 dev: true - /@layerzerolabs/lz-definitions@3.0.86: - resolution: {integrity: sha512-+x9BpBCzFFSEZMtHZm3B8WX0tSbCfUBS9IrmwbNDuZz1pNwv7evPvtYHZ/JF3O1OJW5K7Kr1pON3sNtPXXL16A==} - dependencies: - tiny-invariant: 1.3.3 - + /@layerzerolabs/lz-definitions@3.0.86: + resolution: {integrity: sha512-+x9BpBCzFFSEZMtHZm3B8WX0tSbCfUBS9IrmwbNDuZz1pNwv7evPvtYHZ/JF3O1OJW5K7Kr1pON3sNtPXXL16A==} + dependencies: + tiny-invariant: 1.3.3 + + /@layerzerolabs/lz-evm-messagelib-v2@2.0.11(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@layerzerolabs/lz-evm-protocol-v2@2.0.11)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-i6nZvzxzH+3bMzGRxIzf6fFXTzxQIZ1vyduAoFTy3U2zK9xZUHunKFfpC+vqCY1goNzjBquX4VnClWMWlc5ZIA==} + peerDependencies: + '@axelar-network/axelar-gmp-sdk-solidity': ^5.6.3 + '@chainlink/contracts-ccip': ^0.7.6 + '@layerzerolabs/lz-evm-protocol-v2': ^2.0.11 + '@layerzerolabs/lz-evm-v1-0.7': ^2.0.11 + '@openzeppelin/contracts': ^4.8.1 + '@openzeppelin/contracts-upgradeable': ^4.8.1 + hardhat-deploy: ^0.12.1 + solidity-bytes-utils: ^0.8.0 + dependencies: + '@axelar-network/axelar-gmp-sdk-solidity': 5.10.0 + '@chainlink/contracts-ccip': 0.7.6(ethers@5.7.2) + '@layerzerolabs/lz-evm-protocol-v2': 2.0.11(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + hardhat-deploy: 0.12.4 + solidity-bytes-utils: 0.8.2 + dev: true + /@layerzerolabs/lz-evm-messagelib-v2@3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-CYcZiAqcQkFKf+pxkigFBQCOU60jNeIpnEBMDkIx75hVSazbftqJ/wx9Jv3fVCxr2vQ6nw990b0mbjNBtOY1lw==} peerDependencies: @@ -9470,7 +10120,6 @@ packages: '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 solidity-bytes-utils: 0.8.2 - dev: true /@layerzerolabs/lz-evm-messagelib-v2@3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-CYcZiAqcQkFKf+pxkigFBQCOU60jNeIpnEBMDkIx75hVSazbftqJ/wx9Jv3fVCxr2vQ6nw990b0mbjNBtOY1lw==} @@ -9688,6 +10337,58 @@ packages: - utf-8-validate dev: true + /@layerzerolabs/lz-evm-oapp-v2@2.3.44(@layerzerolabs/lz-evm-messagelib-v2@2.0.11)(@layerzerolabs/lz-evm-protocol-v2@2.0.11)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-FNm9+OFKOl+/5JvpV6rMUoHZSePOcLtNJ+GHJuf38xPmEe0ehxFVQBw3iIfaH2dsWzRn/T7ZizV5ouId35FLdg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.44 + '@layerzerolabs/lz-evm-protocol-v2': ^2.3.44 + '@layerzerolabs/lz-evm-v1-0.7': ^2.3.44 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + hardhat-deploy: ^0.12.1 + solidity-bytes-utils: ^0.8.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 2.0.11(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@layerzerolabs/lz-evm-protocol-v2@2.0.11)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 2.0.11(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + hardhat-deploy: 0.12.4 + solidity-bytes-utils: 0.8.2 + dev: true + + /@layerzerolabs/lz-evm-oapp-v2@3.0.145(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-nvRBArgNBuAXUxiOMC3vr95HcnsACp+ZsqPMT7nkAl3EBZj1nacPcd6IDxmDToNQYq6OP/7Pzc3C8PCE6VDOPA==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.145 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.145 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.145 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + hardhat-deploy: ^0.12.1 + solidity-bytes-utils: ^0.8.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + hardhat-deploy: 0.12.4 + solidity-bytes-utils: 0.8.2 + dev: true + + /@layerzerolabs/lz-evm-protocol-v2@2.0.11(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-hkcNheUjTOYNxoAnBTSatLLzLe71Y7kcmw1+56aazezyUb6SCu330V4sJg+jsp8Ag6Sb7y1tLLYn1Sa5EWgCxg==} + peerDependencies: + '@openzeppelin/contracts': ^4.8.1 + hardhat-deploy: ^0.12.1 + solidity-bytes-utils: ^0.8.0 + dependencies: + '@openzeppelin/contracts': 5.1.0 + hardhat-deploy: 0.12.4 + solidity-bytes-utils: 0.8.2 + dev: true + /@layerzerolabs/lz-evm-protocol-v2@3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-x0rY7XRu9YU5tFjHBWxofdEsWFZ4dDjHGzNYaPKQIpTcoXZbVqnxZhJVcf0YBOpg7phrEOLWWhPXmNLz2nxUTQ==} peerDependencies: @@ -9770,7 +10471,6 @@ packages: '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 solidity-bytes-utils: 0.8.2 - dev: true /@layerzerolabs/lz-evm-protocol-v2@3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-x0rY7XRu9YU5tFjHBWxofdEsWFZ4dDjHGzNYaPKQIpTcoXZbVqnxZhJVcf0YBOpg7phrEOLWWhPXmNLz2nxUTQ==} @@ -9857,6 +10557,16 @@ packages: - bufferutil - utf-8-validate + /@layerzerolabs/lz-evm-sdk-v2@3.0.30: + resolution: {integrity: sha512-UMP/Z8MWrKeklK7zjjbjn+GS9dPUcZsa1Y70uFXGq1j9V/xkLGIH+T9IltKndLR/W+Z/t3UhgjswUVMPd+OSsw==} + dependencies: + '@layerzerolabs/evm-sdks-core': 3.0.75 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@layerzerolabs/lz-evm-sdk-v2@3.0.75: resolution: {integrity: sha512-GoSMjRCtrwoQrwANc8Bpe/rpdoYIPU0zJWLCrFrh9/70wkIhprH1A7/t3I8lHg2dMcHCxtYjo5eJsFzbu1+OVw==} dependencies: @@ -9912,7 +10622,6 @@ packages: '@openzeppelin/contracts': 5.0.2 '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 - dev: true /@layerzerolabs/lz-evm-v1-0.7@3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4): resolution: {integrity: sha512-6+ZbDYp9Ss2f14qwC8Wm/RNukBFjSw9lNpe96ai2iRyjlKCkd0pXo5/aonXneya7nQL3Gl5hGtOhVyuqHm405Q==} @@ -10291,7 +11000,7 @@ packages: - typescript - utf-8-validate - /@layerzerolabs/lz-solana-sdk-v2@3.0.0(typescript@5.5.3): + /@layerzerolabs/lz-solana-sdk-v2@3.0.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3): resolution: {integrity: sha512-sPvLXeQUO9QLpjOuWE7V+V8yfoI4E/NBYsH9lO2aPx0LYkQa+88ACgPq43B/zFROUD8238WuSb+doGrn3PKtJQ==} dependencies: '@ethersproject/abi': 5.7.0 @@ -10322,7 +11031,7 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/lz-solana-sdk-v2@3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3): + /@layerzerolabs/lz-solana-sdk-v2@3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3): resolution: {integrity: sha512-zyuqBYxaVtSa+STdcbO/uzzQV2kyxmBX3flNbvOq7kS2QHBivuaYd/XDbNLE54/egQ63yMtFcilqwy3VzNpclw==} dependencies: '@layerzerolabs/lz-corekit-solana': 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) @@ -10430,7 +11139,7 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/lz-solana-sdk-v2@3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3): + /@layerzerolabs/lz-solana-sdk-v2@3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3): resolution: {integrity: sha512-FfZLkFHIOPIFLkevQD0QSrfVR2UgREG6YF6oSR92XPViuVpAq0LAyCTXQi915bdiSdQ/Mwd+9eU/9ZPlk9f6sA==} dependencies: '@layerzerolabs/lz-corekit-solana': 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) @@ -10624,145 +11333,396 @@ packages: dayjs: 1.11.13 ed25519-hd-key: 1.3.0 ethers: 5.7.2 - memoizee: 0.4.17 - picocolors: 1.0.0 - pino: 8.21.0 + memoizee: 0.4.17 + picocolors: 1.0.0 + pino: 8.21.0 + transitivePeerDependencies: + - '@jest/globals' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - chai + - debug + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@layerzerolabs/lz-utilities@3.0.86(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3): + resolution: {integrity: sha512-wyKya1LwJGnOZaaPliKeKQS70Z3M0sUJbNDPi/niDxELB8/mhj0nwcfdvk6jEE5A4ROj/3wzrIUX3J1/jtItSg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@initia/initia.js': 1.0.5(typescript@5.5.3) + '@layerzerolabs/lz-definitions': 3.0.86 + '@solana/web3.js': 1.98.0 + '@ton/core': 0.59.0(@ton/crypto@3.3.0) + '@ton/crypto': 3.3.0 + '@ton/ton': /@layerzerolabs/ton@15.2.0-rc.3(@jest/globals@29.7.0)(@layerzerolabs/ton@15.2.0-rc.3)(@ton/core@0.59.0)(@ton/crypto@3.3.0)(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3) + aptos: 1.21.0 + bip39: 3.1.0 + dayjs: 1.11.13 + ed25519-hd-key: 1.3.0 + ethers: 5.7.2 + memoizee: 0.4.17 + picocolors: 1.0.0 + pino: 8.21.0 + transitivePeerDependencies: + - '@jest/globals' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - chai + - debug + - encoding + - supports-color + - typescript + - utf-8-validate + + /@layerzerolabs/lz-utilities@3.0.86(@types/node@22.15.3)(typescript@5.5.3): + resolution: {integrity: sha512-wyKya1LwJGnOZaaPliKeKQS70Z3M0sUJbNDPi/niDxELB8/mhj0nwcfdvk6jEE5A4ROj/3wzrIUX3J1/jtItSg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@initia/initia.js': 1.0.5(typescript@5.5.3) + '@layerzerolabs/lz-definitions': 3.0.86 + '@solana/web3.js': 1.98.0 + '@ton/core': 0.59.0(@ton/crypto@3.3.0) + '@ton/crypto': 3.3.0 + '@ton/ton': /@layerzerolabs/ton@15.2.0-rc.3(@layerzerolabs/ton@15.2.0-rc.3)(@ton/core@0.59.0)(@ton/crypto@3.3.0)(@types/node@22.15.3)(typescript@5.5.3) + aptos: 1.21.0 + bip39: 3.1.0 + dayjs: 1.11.13 + ed25519-hd-key: 1.3.0 + ethers: 5.7.2 + memoizee: 0.4.17 + picocolors: 1.0.0 + pino: 8.21.0 + transitivePeerDependencies: + - '@jest/globals' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - chai + - debug + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@layerzerolabs/lz-v2-utilities@3.0.75: + resolution: {integrity: sha512-6172reYvXMjBnpQZYlAz+wkxjBJzpBfL5IzAkB0Swc9t27L/ZqDS9e4HLG+lIXqcVaC7jc5cprUw0exbk1002A==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/solidity': 5.7.0 + bs58: 5.0.0 + tiny-invariant: 1.3.3 + + /@layerzerolabs/lz-v2-utilities@3.0.81: + resolution: {integrity: sha512-83PpNCjwlaQUEEKqXYAnoTnGUFj2wjxioGrW/s9PmzwqREtNzJ+ZE5oAW85T/psZy+4fK79cDwARCQx6XJP3jg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/solidity': 5.7.0 + bs58: 5.0.0 + tiny-invariant: 1.3.3 + dev: true + + /@layerzerolabs/lz-v2-utilities@3.0.86: + resolution: {integrity: sha512-DJp6WplpUtHxmwI5n5tpJ4tEVZmCnLmOqPEdXWng1zBKsa8hOm8KuHiiMyH9z29srPBxTZrzlZBNfmPGYt5ORA==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/solidity': 5.7.0 + bs58: 5.0.0 + tiny-invariant: 1.3.3 + + /@layerzerolabs/metadata-tools@0.0.2(@layerzerolabs/devtools-evm-hardhat@2.0.9)(@layerzerolabs/ua-devtools@3.0.6): + resolution: {integrity: sha512-AB9TefhJ0sQyTeiwXMAccdXNS9ozeQ7wJkhP9iUzIb2gSVSsz9ZV5MrzREw7CiAZNVoUSjNf+UfYC15gPfqFvQ==} + peerDependencies: + '@layerzerolabs/devtools-evm-hardhat': ~2.0.4 + '@layerzerolabs/ua-devtools': ~3.0.2 + dependencies: + '@layerzerolabs/devtools-evm-hardhat': 2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) + '@layerzerolabs/ua-devtools': 3.0.6(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + dev: true + + /@layerzerolabs/move-definitions@3.0.59: + resolution: {integrity: sha512-6cuvePiKpZ7OOgZEbX7keE0bQM3+HGzr7suqfb1LSYwfpcZKYICnB5fnbwXyC1Wa3qUx+/9ZlnhckKvUoUiwAA==} + dependencies: + '@layerzerolabs/lz-definitions': 3.0.75 + dev: true + + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 4.9.5 + '@openzeppelin/contracts-upgradeable': 4.9.5 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 4.9.5 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 4.9.5 + ethers: 5.7.2 transitivePeerDependencies: - - '@jest/globals' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - - chai - - debug - - encoding - - supports-color - - typescript - utf-8-validate dev: true - /@layerzerolabs/lz-utilities@3.0.86(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3): - resolution: {integrity: sha512-wyKya1LwJGnOZaaPliKeKQS70Z3M0sUJbNDPi/niDxELB8/mhj0nwcfdvk6jEE5A4ROj/3wzrIUX3J1/jtItSg==} + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@ethersproject/bytes': 5.7.0 - '@initia/initia.js': 1.0.5(typescript@5.5.3) - '@layerzerolabs/lz-definitions': 3.0.86 - '@solana/web3.js': 1.98.0 - '@ton/core': 0.59.0(@ton/crypto@3.3.0) - '@ton/crypto': 3.3.0 - '@ton/ton': /@layerzerolabs/ton@15.2.0-rc.3(@jest/globals@29.7.0)(@layerzerolabs/ton@15.2.0-rc.3)(@ton/core@0.59.0)(@ton/crypto@3.3.0)(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3) - aptos: 1.21.0 - bip39: 3.1.0 - dayjs: 1.11.13 - ed25519-hd-key: 1.3.0 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) ethers: 5.7.2 - memoizee: 0.4.17 - picocolors: 1.0.0 - pino: 8.21.0 transitivePeerDependencies: - - '@jest/globals' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - - chai - - debug - - encoding - - supports-color - - typescript - utf-8-validate + dev: true - /@layerzerolabs/lz-utilities@3.0.86(@types/node@22.15.3)(typescript@5.5.3): - resolution: {integrity: sha512-wyKya1LwJGnOZaaPliKeKQS70Z3M0sUJbNDPi/niDxELB8/mhj0nwcfdvk6jEE5A4ROj/3wzrIUX3J1/jtItSg==} + /@layerzerolabs/oapp-evm@0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0): + resolution: {integrity: sha512-P8uxe9A0T3G7WIQEw0dNCpUwUo4m3OFu5yQ3RsTrzX1BrSggTCUy8LgiNqxKVm56A3xMJVLsjzaB3zjXShXi8A==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@ethersproject/bytes': 5.7.0 - '@initia/initia.js': 1.0.5(typescript@5.5.3) - '@layerzerolabs/lz-definitions': 3.0.86 - '@solana/web3.js': 1.98.0 - '@ton/core': 0.59.0(@ton/crypto@3.3.0) - '@ton/crypto': 3.3.0 - '@ton/ton': /@layerzerolabs/ton@15.2.0-rc.3(@layerzerolabs/ton@15.2.0-rc.3)(@ton/core@0.59.0)(@ton/crypto@3.3.0)(@types/node@22.15.3)(typescript@5.5.3) - aptos: 1.21.0 - bip39: 3.1.0 - dayjs: 1.11.13 - ed25519-hd-key: 1.3.0 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) ethers: 5.7.2 - memoizee: 0.4.17 - picocolors: 1.0.0 - pino: 8.21.0 transitivePeerDependencies: - - '@jest/globals' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - - chai - - debug - - encoding - - supports-color - - typescript - utf-8-validate dev: true - /@layerzerolabs/lz-v2-utilities@3.0.75: - resolution: {integrity: sha512-6172reYvXMjBnpQZYlAz+wkxjBJzpBfL5IzAkB0Swc9t27L/ZqDS9e4HLG+lIXqcVaC7jc5cprUw0exbk1002A==} + /@layerzerolabs/oft-evm-upgradeable@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-s2X7qttIkDLcVCef2w/hDPgegPiCguuT1xcOrI0FpMg9mwl/FdoF8B+oj5r8cbqB8DSWleLt5Miu3IeOzXvayg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/solidity': 5.7.0 - bs58: 5.0.0 - tiny-invariant: 1.3.3 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) + dev: true - /@layerzerolabs/lz-v2-utilities@3.0.81: - resolution: {integrity: sha512-83PpNCjwlaQUEEKqXYAnoTnGUFj2wjxioGrW/s9PmzwqREtNzJ+ZE5oAW85T/psZy+4fK79cDwARCQx6XJP3jg==} + /@layerzerolabs/oft-evm@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5): + resolution: {integrity: sha512-Fps4jL9Vg8eBu4A5bvRBYxUYNbycMIRvBqOaIkIbaZSdSx5uMt7C3t1U89cBKQkED1Zh6zyhh1TR2HyCHnvkFg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/solidity': 5.7.0 - bs58: 5.0.0 - tiny-invariant: 1.3.3 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5) + '@openzeppelin/contracts': 4.9.5 + '@openzeppelin/contracts-upgradeable': 4.9.5 dev: true - /@layerzerolabs/lz-v2-utilities@3.0.86: - resolution: {integrity: sha512-DJp6WplpUtHxmwI5n5tpJ4tEVZmCnLmOqPEdXWng1zBKsa8hOm8KuHiiMyH9z29srPBxTZrzlZBNfmPGYt5ORA==} + /@layerzerolabs/oft-evm@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-Fps4jL9Vg8eBu4A5bvRBYxUYNbycMIRvBqOaIkIbaZSdSx5uMt7C3t1U89cBKQkED1Zh6zyhh1TR2HyCHnvkFg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/solidity': 5.7.0 - bs58: 5.0.0 - tiny-invariant: 1.3.3 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - /@layerzerolabs/metadata-tools@0.0.2(@layerzerolabs/devtools-evm-hardhat@2.0.9)(@layerzerolabs/ua-devtools@3.0.6): - resolution: {integrity: sha512-AB9TefhJ0sQyTeiwXMAccdXNS9ozeQ7wJkhP9iUzIb2gSVSsz9ZV5MrzREw7CiAZNVoUSjNf+UfYC15gPfqFvQ==} + /@layerzerolabs/oft-evm@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0): + resolution: {integrity: sha512-Fps4jL9Vg8eBu4A5bvRBYxUYNbycMIRvBqOaIkIbaZSdSx5uMt7C3t1U89cBKQkED1Zh6zyhh1TR2HyCHnvkFg==} peerDependencies: - '@layerzerolabs/devtools-evm-hardhat': ~2.0.4 - '@layerzerolabs/ua-devtools': ~3.0.2 + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@layerzerolabs/devtools-evm-hardhat': 2.0.9(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@1.0.6)(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) - '@layerzerolabs/ua-devtools': 3.0.6(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@1.1.7)(zod@3.22.4) + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.75(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.75(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.75)(@layerzerolabs/lz-evm-protocol-v2@3.0.75)(@layerzerolabs/lz-evm-v1-0.7@3.0.75)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) dev: true - /@layerzerolabs/move-definitions@3.0.59: - resolution: {integrity: sha512-6cuvePiKpZ7OOgZEbX7keE0bQM3+HGzr7suqfb1LSYwfpcZKYICnB5fnbwXyC1Wa3qUx+/9ZlnhckKvUoUiwAA==} + /@layerzerolabs/oft-evm@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2): + resolution: {integrity: sha512-Fps4jL9Vg8eBu4A5bvRBYxUYNbycMIRvBqOaIkIbaZSdSx5uMt7C3t1U89cBKQkED1Zh6zyhh1TR2HyCHnvkFg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 dependencies: - '@layerzerolabs/lz-definitions': 3.0.75 + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2) + '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) + dev: true + + /@layerzerolabs/oft-evm@3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0): + resolution: {integrity: sha512-Fps4jL9Vg8eBu4A5bvRBYxUYNbycMIRvBqOaIkIbaZSdSx5uMt7C3t1U89cBKQkED1Zh6zyhh1TR2HyCHnvkFg==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.75 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.75 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.75 + '@layerzerolabs/oapp-evm': ^0.3.2 + '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + dev: true + + /@layerzerolabs/oft-move@1.1.2: + resolution: {integrity: sha512-dlvRYHWJvvUz2VaaIAuMD00w9pfyYNGwqcv/YJHj+fdxCHM5T9d694N7OGhmEkk7HUxoeZoPEOu4Z9HVkslQ7Q==} + engines: {node: '>=18.16.0'} dev: true - /@layerzerolabs/oft-v2-solana-sdk@3.0.38(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3): + /@layerzerolabs/oft-v2-solana-sdk@3.0.38(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3): resolution: {integrity: sha512-P06/a5+ixph0u1AQkDZ0P0oFaIAdfGPl/UezMfWXUpiWLth428RT0rrMR6qI7z6X1uxqlUFNIotz2ET1fyFcpQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@layerzerolabs/lz-foundation': 3.0.38(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) - '@layerzerolabs/lz-solana-sdk-v2': 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + '@layerzerolabs/lz-solana-sdk-v2': 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/lz-v2-utilities': 3.0.86 '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1 @@ -10788,12 +11748,12 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/oft-v2-solana-sdk@3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3): + /@layerzerolabs/oft-v2-solana-sdk@3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3): resolution: {integrity: sha512-ijbvj6/Gc4O4WLHfqnrBuKUtIhpaYws/ORj2apZFT1RKSgAX8CCJ9aZmn0ClamEG98i+PpXoroPPU46LMOMZyA==} dependencies: '@ethersproject/bytes': 5.7.0 '@layerzerolabs/lz-foundation': 3.0.66(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) - '@layerzerolabs/lz-solana-sdk-v2': 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3) + '@layerzerolabs/lz-solana-sdk-v2': 3.0.86(@swc/core@1.4.0)(@types/node@18.18.14)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3) '@layerzerolabs/lz-v2-utilities': 3.0.86 '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1 @@ -10881,6 +11841,29 @@ packages: - utf-8-validate dev: true + /@layerzerolabs/onesig-core@0.1.0: + resolution: {integrity: sha512-2D4agVrwTxZmWzp8xwOxwQHS28U/IJyvSHadfozHuilSDu2A9KQDFCI5CCppnXYXe7YeTEeUvdeNm4dAVPCiWQ==} + engines: {node: '>=20.10.0'} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + ethers: 5.7.2 + merkletreejs: 0.3.11 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@layerzerolabs/onesig-evm@0.0.12: + resolution: {integrity: sha512-s2N93IUUr6y16LTy7TZXC93RyeSUacexd5QpEDfXjKDgmDN/JWb9dyZjTzh0JcCk2emAyw5jmiuYhPwRJ+/NrA==} + engines: {node: '>=20.10.0'} + dependencies: + '@layerzerolabs/onesig-core': 0.1.0 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@layerzerolabs/prettier-config-next@2.3.44: resolution: {integrity: sha512-mIsxKLaelXHXXXvMEAE6Jc8IVydra0PesHquHYwvxFKwDhMhzfrnoRLLzbgCX/Zi1q0GGET/oMAKJTs6OWFPxQ==} dependencies: @@ -10889,16 +11872,92 @@ packages: prettier-plugin-solidity: 1.3.1(prettier@3.2.5) dev: true - /@layerzerolabs/protocol-devtools@1.1.7(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): - resolution: {integrity: sha512-hY1VqFhBmGHDDCcsc6y0gYWlPd7pMMHp2EmZ01lzFdTnbYkF6rwC23EhSnb+AlMBxGpBwyFaNYRGTOZQx78ytA==} + /@layerzerolabs/protocol-devtools-evm@5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@packages+protocol-devtools)(zod@3.22.4): + resolution: {integrity: sha512-g2RwxOWJITuEKU/j04UscEc57OcU03+vEsS7i3jyz+AKKq2vjXFMf6s9rbeQmu548/8LppnHg/t5QH5R33TPkQ==} peerDependencies: - '@layerzerolabs/devtools': ~0.4.8 - '@layerzerolabs/io-devtools': ~0.1.16 + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.1 + zod: ^3.22.4 + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 1.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.2.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@layerzerolabs/protocol-devtools': link:packages/protocol-devtools + p-memoize: 4.0.4 + zod: 3.22.4 + dev: true + + /@layerzerolabs/protocol-devtools-evm@5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4): + resolution: {integrity: sha512-g2RwxOWJITuEKU/j04UscEc57OcU03+vEsS7i3jyz+AKKq2vjXFMf6s9rbeQmu548/8LppnHg/t5QH5R33TPkQ==} + peerDependencies: + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/providers': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.1 + zod: ^3.22.4 + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + p-memoize: 4.0.4 + zod: 3.22.4 + dev: true + + /@layerzerolabs/protocol-devtools@3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4): + resolution: {integrity: sha512-5LndY2OD0PdodEv5IuhSP3RzbThxmE2B8twcrMGuPixrD1PjiIYqLvm2wznUMV/2NLiQrDdY1bOpd+5q9weibw==} + peerDependencies: + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 '@layerzerolabs/lz-definitions': ^3.0.75 zod: ^3.22.4 dependencies: - '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) - '@layerzerolabs/io-devtools': 0.1.17(zod@3.22.4) + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + zod: 3.22.4 + dev: true + + /@layerzerolabs/protocol-devtools@3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4): + resolution: {integrity: sha512-5LndY2OD0PdodEv5IuhSP3RzbThxmE2B8twcrMGuPixrD1PjiIYqLvm2wznUMV/2NLiQrDdY1bOpd+5q9weibw==} + peerDependencies: + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + zod: ^3.22.4 + dependencies: + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': 3.0.86 zod: 3.22.4 dev: true @@ -10942,6 +12001,36 @@ packages: - utf-8-validate dev: false + /@layerzerolabs/test-devtools-evm-foundry@5.1.0(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@layerzerolabs/oft-evm@3.2.1)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0): + resolution: {integrity: sha512-LDfBMeb5VQRMRXadpNgUe5Knib5FdCQ24S2o+kWMS/qPS6ZbPGe7fnhFPhcifautuhMS8i9Rk7cMjoAxRGFdfQ==} + peerDependencies: + '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.12 + '@layerzerolabs/lz-evm-protocol-v2': ^3.0.12 + '@layerzerolabs/lz-evm-v1-0.7': ^3.0.12 + '@layerzerolabs/oapp-evm': ^0.3.0 + '@layerzerolabs/oft-evm': ^3.0.0 + '@openzeppelin/contracts': ^4.9.5 || ^5.0.0 + '@openzeppelin/contracts-upgradeable': ^4.9.5 || ^5.0.0 + dependencies: + '@layerzerolabs/lz-evm-messagelib-v2': 3.0.86(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': 0.3.3(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@layerzerolabs/oft-evm': 3.2.1(@layerzerolabs/lz-evm-messagelib-v2@3.0.86)(@layerzerolabs/lz-evm-protocol-v2@3.0.86)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@layerzerolabs/oapp-evm@0.3.3)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) + dev: true + + /@layerzerolabs/test-devtools-evm-hardhat@0.5.2(hardhat@2.22.12)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-mBZRczjNJdMSsHUjl2EQCCXutS4Yo6s6K0Bc32kSl3MNKIHZZMOEf6Hkj1guVSx/m3l3VZBr+3s0xc9FiyoQgQ==} + peerDependencies: + hardhat: ^2.22.10 + solidity-bytes-utils: ^0.8.2 + dependencies: + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + solidity-bytes-utils: 0.8.2 + dev: true + /@layerzerolabs/ton@15.2.0-rc.3(@jest/globals@29.7.0)(@layerzerolabs/ton@15.2.0-rc.3)(@ton/core@0.59.0)(@ton/crypto@3.3.0)(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3): resolution: {integrity: sha512-Aq7htcWn31DxSYs8l0sJcQ76uAJRPy50lg6M2G+qNLSXpO01sPcUSb8oK/TmCKo+S+rDIFWUNKFjT0B/rll1YQ==} peerDependencies: @@ -10953,7 +12042,7 @@ packages: '@ton/crypto': 3.3.0 '@ton/sandbox': 0.22.0(@ton/core@0.59.0)(@ton/crypto@3.3.0) '@ton/test-utils': 0.4.2(@jest/globals@29.7.0)(@ton/core@0.59.0)(chai@4.5.0) - axios: 1.7.9 + axios: 1.8.4 dataloader: 2.2.2 symbol.inspect: 1.0.1 teslabot: 1.5.0 @@ -10981,7 +12070,7 @@ packages: '@ton/crypto': 3.3.0 '@ton/sandbox': 0.22.0(@ton/core@0.59.0)(@ton/crypto@3.3.0) '@ton/test-utils': 0.4.2(@ton/core@0.59.0)(chai@4.4.1) - axios: 1.7.9 + axios: 1.8.4 dataloader: 2.2.2 symbol.inspect: 1.0.1 teslabot: 1.5.0 @@ -11038,7 +12127,7 @@ packages: '@ton/crypto': 3.3.0 '@ton/sandbox': 0.22.0(@ton/core@0.59.0)(@ton/crypto@3.3.0) '@ton/test-utils': 0.4.2(@jest/globals@29.7.0)(@ton/core@0.59.0)(chai@4.5.0) - axios: 1.7.9 + axios: 1.8.4 dataloader: 2.2.2 symbol.inspect: 1.0.1 teslabot: 1.5.0 @@ -11056,6 +12145,116 @@ packages: - typescript dev: true + /@layerzerolabs/toolbox-foundry@0.1.13: + resolution: {integrity: sha512-3rC+BVEPgcHLHPO4qn3KqYUG1vhDtr1m/gsaI1S635MK+19475U8HYATznAzHKwi09cf9uEv5C7fdtHXgIw8sQ==} + dev: true + + /@layerzerolabs/toolbox-hardhat@0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-vw1bfm8q12ZpQ+k0dB58FFWtHuYmPKPxIb9M6nKkLikgpFWeL3/tLg4sXzr/rNTSGrxR7Ut5IY0FTUVx5lI3HQ==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.2 + ethers: ^5.7.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/devtools-evm-hardhat': 4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/lz-evm-sdk-v1': 3.0.75 + '@layerzerolabs/lz-evm-sdk-v2': 3.0.75 + '@layerzerolabs/lz-v2-utilities': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/test-devtools-evm-hardhat': 0.5.2(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm': 7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm-hardhat': 9.0.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@layerzerolabs/devtools-evm-hardhat@4.0.1)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools-evm@7.0.0)(@layerzerolabs/ua-devtools@5.0.1)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12) + '@nomicfoundation/hardhat-ethers': 3.0.5(ethers@5.7.2)(hardhat@2.22.12) + ethers: 5.7.2 + fp-ts: 2.16.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.1 + ink: 3.2.0(@types/react@17.0.75)(react@17.0.2) + ink-gradient: 2.0.0(ink@3.2.0)(react@17.0.2) + ink-table: 3.1.0(ink@3.2.0)(react@17.0.2) + react: 17.0.2 + yoga-layout-prebuilt: 1.10.0 + zod: 3.22.4 + transitivePeerDependencies: + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/constants' + - '@ethersproject/providers' + - '@nomiclabs/hardhat-ethers' + - '@types/react' + - bufferutil + - encoding + - solidity-bytes-utils + - supports-color + - utf-8-validate + dev: true + + /@layerzerolabs/toolbox-hardhat@0.6.12(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/providers@5.7.2)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12)(solidity-bytes-utils@0.8.2): + resolution: {integrity: sha512-vw1bfm8q12ZpQ+k0dB58FFWtHuYmPKPxIb9M6nKkLikgpFWeL3/tLg4sXzr/rNTSGrxR7Ut5IY0FTUVx5lI3HQ==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.2 + ethers: ^5.7.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/devtools-evm-hardhat': 4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/lz-evm-sdk-v1': 3.0.75 + '@layerzerolabs/lz-evm-sdk-v2': 3.0.75 + '@layerzerolabs/lz-v2-utilities': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@packages+protocol-devtools)(zod@3.22.4) + '@layerzerolabs/test-devtools-evm-hardhat': 0.5.2(hardhat@2.22.12)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm': 7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm-hardhat': 9.0.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@layerzerolabs/devtools-evm-hardhat@4.0.1)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools-evm@7.0.0)(@layerzerolabs/ua-devtools@5.0.1)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) + '@nomicfoundation/hardhat-ethers': 3.0.5(ethers@5.7.2)(hardhat@2.22.12) + ethers: 5.7.2 + fp-ts: 2.16.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.4 + ink: 3.2.0(@types/react@17.0.75)(react@17.0.2) + ink-gradient: 2.0.0(ink@3.2.0)(react@17.0.2) + ink-table: 3.1.0(ink@3.2.0)(react@17.0.2) + react: 17.0.2 + yoga-layout-prebuilt: 1.10.0 + zod: 3.22.4 + transitivePeerDependencies: + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/constants' + - '@ethersproject/providers' + - '@nomiclabs/hardhat-ethers' + - '@types/react' + - bufferutil + - encoding + - solidity-bytes-utils + - supports-color + - utf-8-validate + dev: true + /@layerzerolabs/tron-utilities@3.0.81(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3): resolution: {integrity: sha512-bWv3GJJ6J/Wu79zlYEe6Cqv7UwzxC8tkA4rcHv6REnrbR/7iEaLcqLrVA/G1KWhOiUj5Rjqdws0bFpjJHdxXxQ==} dependencies: @@ -11139,7 +12338,145 @@ packages: - typescript - utf-8-validate - /@layerzerolabs/ua-devtools@3.0.6(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@1.1.7)(zod@3.22.4): + /@layerzerolabs/ua-devtools-evm-hardhat@9.0.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@layerzerolabs/devtools-evm-hardhat@4.0.1)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools-evm@7.0.0)(@layerzerolabs/ua-devtools@5.0.1)(ethers@5.7.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12): + resolution: {integrity: sha512-Wm/88JToOgFAJO0nKnpGMxQDD8mN37VFhz/ejE0DWbXsukp7IdX4ld4gQKM0MU7Yiajardhlvpa3Mwg+xHi8KQ==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/bytes': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/hash': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/devtools-evm-hardhat': ~4.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.0 + '@layerzerolabs/protocol-devtools-evm': ~5.0.0 + '@layerzerolabs/ua-devtools': ~5.0.0 + '@layerzerolabs/ua-devtools-evm': ~7.0.0 + ethers: ^5.7.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/devtools-evm-hardhat': 4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.1)(hardhat@2.22.12) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm': 7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4) + ethers: 5.7.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.1 + p-memoize: 4.0.4 + typescript: 5.5.3 + dev: true + + /@layerzerolabs/ua-devtools-evm-hardhat@9.0.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@layerzerolabs/devtools-evm-hardhat@4.0.1)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools-evm@7.0.0)(@layerzerolabs/ua-devtools@5.0.1)(ethers@5.7.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12): + resolution: {integrity: sha512-Wm/88JToOgFAJO0nKnpGMxQDD8mN37VFhz/ejE0DWbXsukp7IdX4ld4gQKM0MU7Yiajardhlvpa3Mwg+xHi8KQ==} + peerDependencies: + '@ethersproject/abi': ^5.7.0 + '@ethersproject/bytes': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@ethersproject/hash': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/devtools-evm-hardhat': ~4.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.0 + '@layerzerolabs/protocol-devtools-evm': ~5.0.0 + '@layerzerolabs/ua-devtools': ~5.0.0 + '@layerzerolabs/ua-devtools-evm': ~7.0.0 + ethers: ^5.7.2 + hardhat: ^2.22.10 + hardhat-deploy: ^0.12.1 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/devtools-evm-hardhat': 4.0.1(@ethersproject/abi@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(fp-ts@2.16.2)(hardhat-deploy@0.12.4)(hardhat@2.22.12) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@packages+protocol-devtools)(zod@3.22.4) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools-evm': 7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4) + ethers: 5.7.2 + hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3) + hardhat-deploy: 0.12.4 + p-memoize: 4.0.4 + typescript: 5.5.3 + dev: true + + /@layerzerolabs/ua-devtools-evm@7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4): + resolution: {integrity: sha512-FPm6ESqm2SBOJjCbRnkWCMg6o5zlkoeLUavD8v1hlZeiY4i33wIHccQPtxMz8Yz/ZD8leQ8TiKJJJ9sdVGk7tQ==} + peerDependencies: + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/lz-v2-utilities': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.0 + '@layerzerolabs/protocol-devtools-evm': ~5.0.0 + '@layerzerolabs/ua-devtools': ~5.0.0 + zod: ^3.22.4 + dependencies: + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@layerzerolabs/lz-v2-utilities': 3.0.75 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + p-memoize: 4.0.4 + zod: 3.22.4 + dev: true + + /@layerzerolabs/ua-devtools-evm@7.0.0(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools-evm@5.0.1)(@layerzerolabs/protocol-devtools@3.0.1)(@layerzerolabs/ua-devtools@5.0.1)(zod@3.22.4): + resolution: {integrity: sha512-FPm6ESqm2SBOJjCbRnkWCMg6o5zlkoeLUavD8v1hlZeiY4i33wIHccQPtxMz8Yz/ZD8leQ8TiKJJJ9sdVGk7tQ==} + peerDependencies: + '@ethersproject/constants': ^5.7.0 + '@ethersproject/contracts': ^5.7.0 + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/devtools-evm': ~3.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/lz-v2-utilities': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.0 + '@layerzerolabs/protocol-devtools-evm': ~5.0.0 + '@layerzerolabs/ua-devtools': ~5.0.0 + zod: ^3.22.4 + dependencies: + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/devtools-evm': 3.0.0(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(fp-ts@2.16.2)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/lz-v2-utilities': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/protocol-devtools-evm': 5.0.1(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/constants@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/providers@5.7.2)(@layerzerolabs/devtools-evm@3.0.0)(@layerzerolabs/devtools@1.0.1)(@layerzerolabs/io-devtools@0.2.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/protocol-devtools@packages+protocol-devtools)(zod@3.22.4) + '@layerzerolabs/ua-devtools': 5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4) + p-memoize: 4.0.4 + zod: 3.22.4 + dev: true + + /@layerzerolabs/ua-devtools@3.0.6(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4): resolution: {integrity: sha512-hZbhNB7iIrKrrkOvDMF74niBCBj5icHmmlYbCSV3S6BKeLuKnX5i6zvlMTq/v5kgU0CZ0kNS37PFHfhSkW+oMw==} peerDependencies: '@layerzerolabs/devtools': ~0.4.8 @@ -11149,11 +12486,47 @@ packages: '@layerzerolabs/protocol-devtools': ~1.1.6 zod: ^3.22.4 dependencies: - '@layerzerolabs/devtools': 0.4.10(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) - '@layerzerolabs/io-devtools': 0.1.17(zod@3.22.4) + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/lz-v2-utilities': 3.0.86 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + zod: 3.22.4 + dev: true + + /@layerzerolabs/ua-devtools@5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(@layerzerolabs/lz-v2-utilities@3.0.75)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4): + resolution: {integrity: sha512-acoxyJAYqF+di2/akGuWLa5Gdt7Z/8LLZD0LqOui34yjPuHYH88L4xxmKxqrs4Ga/uQnRKcF6Cauy9pjlQCj1A==} + peerDependencies: + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/lz-v2-utilities': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.1 + zod: ^3.22.4 + dependencies: + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) + '@layerzerolabs/lz-definitions': 3.0.75 + '@layerzerolabs/lz-v2-utilities': 3.0.75 + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.75)(zod@3.22.4) + zod: 3.22.4 + dev: true + + /@layerzerolabs/ua-devtools@5.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(@layerzerolabs/lz-v2-utilities@3.0.86)(@layerzerolabs/protocol-devtools@3.0.1)(zod@3.22.4): + resolution: {integrity: sha512-acoxyJAYqF+di2/akGuWLa5Gdt7Z/8LLZD0LqOui34yjPuHYH88L4xxmKxqrs4Ga/uQnRKcF6Cauy9pjlQCj1A==} + peerDependencies: + '@layerzerolabs/devtools': ~2.0.0 + '@layerzerolabs/io-devtools': ~0.3.0 + '@layerzerolabs/lz-definitions': ^3.0.75 + '@layerzerolabs/lz-v2-utilities': ^3.0.75 + '@layerzerolabs/protocol-devtools': ~3.0.1 + zod: ^3.22.4 + dependencies: + '@layerzerolabs/devtools': 2.0.1(@ethersproject/bytes@5.7.0)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/io-devtools': 0.3.1(ink-gradient@2.0.0)(ink-table@3.1.0)(ink@3.2.0)(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.22.4) '@layerzerolabs/lz-definitions': 3.0.86 '@layerzerolabs/lz-v2-utilities': 3.0.86 - '@layerzerolabs/protocol-devtools': 1.1.7(@layerzerolabs/devtools@0.4.10)(@layerzerolabs/io-devtools@0.1.17)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) + '@layerzerolabs/protocol-devtools': 3.0.1(@layerzerolabs/devtools@2.0.1)(@layerzerolabs/io-devtools@0.3.1)(@layerzerolabs/lz-definitions@3.0.86)(zod@3.22.4) zod: 3.22.4 dev: true @@ -11976,7 +13349,6 @@ packages: '@openzeppelin/contracts': 5.0.2 dependencies: '@openzeppelin/contracts': 5.0.2 - dev: true /@openzeppelin/contracts-upgradeable@5.1.0(@openzeppelin/contracts@5.1.0): resolution: {integrity: sha512-AIElwP5Ck+cslNE+Hkemf5SxjJoF4wBvvjxc27Rp+9jaPs/CLIaUBMYe1FNzhdiN0cYuwGRmYaRHmmntuiju4Q==} @@ -11999,7 +13371,6 @@ packages: /@openzeppelin/contracts@5.0.2: resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - dev: true /@openzeppelin/contracts@5.1.0: resolution: {integrity: sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==} @@ -13176,6 +14547,53 @@ packages: - utf-8-validate dev: true + /@stargatefinance/stg-definitions-v2@5.0.2: + resolution: {integrity: sha512-FWK2JQdeoXOeH+hAZ3d+jDcVOcjHy+nXPXThHUrPE4BbE+xlx2W63bqaSm7LvnhJKSGucfb2iVaj4HWyswFPUg==} + dev: true + + /@stargatefinance/stg-evm-v1@1.0.33: + resolution: {integrity: sha512-funR7QssJn+9m8tAO+2nMB2+9ke1FplY5/Jt1RGReFR4ZXhlMKWvbos4KNh7L6k6tu2c+9oQOjn8bPiGnGwmew==} + dependencies: + exponential-backoff: 3.1.1 + dev: true + + /@stargatefinance/stg-evm-v2@5.0.3(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(@types/node@18.18.14)(chai@4.5.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)(typescript@5.5.3): + resolution: {integrity: sha512-5kHuAPniRH25GC74R/JjLyQtOBfDJtIXXtqyt2pONwq9QOgmooxpLZ9WKbDc0lRmm1P4Sm5s1d+FR7XAt7noJQ==} + dependencies: + '@layerzerolabs/lz-definitions': 3.0.86 + '@layerzerolabs/lz-evm-messagelib-v2': 2.0.11(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@layerzerolabs/lz-evm-protocol-v2@2.0.11)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-oapp-v2': 2.3.44(@layerzerolabs/lz-evm-messagelib-v2@2.0.11)(@layerzerolabs/lz-evm-protocol-v2@2.0.11)(@layerzerolabs/lz-evm-v1-0.7@3.0.86)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-protocol-v2': 2.0.11(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) + '@layerzerolabs/lz-evm-sdk-v2': 3.0.30 + '@layerzerolabs/lz-evm-v1-0.7': 3.0.86(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4) + '@layerzerolabs/lz-utilities': 3.0.86(@types/node@18.18.14)(chai@4.5.0)(typescript@5.5.3) + '@layerzerolabs/lz-v2-utilities': 3.0.86 + '@layerzerolabs/onesig-core': 0.1.0 + '@layerzerolabs/onesig-evm': 0.0.12 + '@stargatefinance/stg-definitions-v2': 5.0.2 + '@stargatefinance/stg-evm-v1': 1.0.33 + '@types/sinon': 17.0.3 + ethers: 5.7.2 + transitivePeerDependencies: + - '@axelar-network/axelar-gmp-sdk-solidity' + - '@chainlink/contracts-ccip' + - '@jest/globals' + - '@openzeppelin/contracts' + - '@openzeppelin/contracts-upgradeable' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - chai + - debug + - encoding + - hardhat-deploy + - solidity-bytes-utils + - supports-color + - typescript + - utf-8-validate + dev: true + /@swc/core-darwin-arm64@1.4.0: resolution: {integrity: sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==} engines: {node: '>=10'} @@ -15110,6 +16528,10 @@ packages: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} + /buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + dev: true + /buffer-to-arraybuffer@0.0.5: resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} @@ -15959,6 +17381,10 @@ packages: resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} engines: {node: '>=8'} + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: true + /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -19720,6 +21146,34 @@ packages: - babel-plugin-macros - supports-color + /jest-cli@29.7.0(@types/node@18.18.14): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest-cli@29.7.0(@types/node@18.18.14)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20132,6 +21586,27 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 + /jest@29.7.0(@types/node@18.18.14): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.18.14) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest@29.7.0(@types/node@18.18.14)(ts-node@10.9.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20827,6 +22302,17 @@ packages: semaphore-async-await: 1.5.1 dev: true + /merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + dev: true + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -21940,7 +23426,6 @@ packages: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true - dev: false /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} @@ -23863,6 +25348,11 @@ packages: hasBin: true dev: true + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: true + /triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'}