diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42eb62c2..8029e6a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,14 +13,12 @@ jobs: steps: - name: "Check out the repo" - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: submodules: recursive - name: "Install Pnpm" uses: pnpm/action-setup@v6 - with: - version: "10" - name: "Setup Node.js" uses: actions/setup-node@v6 @@ -68,14 +66,12 @@ jobs: steps: - name: "Check out the repo" - uses: "actions/checkout@v6" + uses: "actions/checkout@v7" with: submodules: recursive - name: "Install Pnpm" uses: pnpm/action-setup@v6 - with: - version: "10" - name: "Setup Node.js" uses: actions/setup-node@v6 @@ -109,14 +105,12 @@ jobs: steps: - name: "Check out the repo" - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: submodules: recursive - name: "Install Pnpm" uses: pnpm/action-setup@v6 - with: - version: "10" - name: "Setup Node.js" uses: actions/setup-node@v6 diff --git a/contracts/LiquidityOrchestrator.sol b/contracts/LiquidityOrchestrator.sol index 2838cdc9..9431ba7b 100644 --- a/contracts/LiquidityOrchestrator.sol +++ b/contracts/LiquidityOrchestrator.sol @@ -112,7 +112,7 @@ contract LiquidityOrchestrator is uint256 public pendingProtocolFees; /// @notice Tokens that failed during the current epoch's sell/buy execution (cleared at epoch end) - address[] private _failedEpochTokens; + address[] internal _failedEpochTokens; /// @notice Cached assets hash from last full commitment build bytes32 private _cachedAssetsHash; @@ -159,6 +159,9 @@ contract LiquidityOrchestrator is /// @notice On-chain resume cursor for the active sell/buy minibatch window. uint16 public completedInCurrentMinibatch; + /// @notice Buffer snapshot at BuyingLeg entry (after bufferIncrease apply) [assets] + uint256 public buyingLegEntryBuffer; + /* -------------------------------------------------------------------------- */ /* MODIFIERS */ /* -------------------------------------------------------------------------- */ @@ -474,12 +477,12 @@ contract LiquidityOrchestrator is } else if (currentPhase == LiquidityUpkeepPhase.SellingLeg) { StatesStruct memory states = _verifyPerformData(_publicValues, proofBytes, statesBytes); - if (currentMinibatchIndex == 0) { - bufferAmount = states.bufferAmount; + _processMinibatchSell(states.sellLeg); + if (currentPhase == LiquidityUpkeepPhase.BuyingLeg) { + bufferAmount += states.bufferIncrease; _pendingEpochProtocolFees = states.epochProtocolFees; + buyingLegEntryBuffer = bufferAmount; } - - _processMinibatchSell(states.sellLeg); } else if (currentPhase == LiquidityUpkeepPhase.BuyingLeg) { StatesStruct memory states = _verifyPerformData(_publicValues, proofBytes, statesBytes); _processMinibatchBuy(states.buyLeg); @@ -487,12 +490,10 @@ contract LiquidityOrchestrator is StatesStruct memory states = _verifyPerformData(_publicValues, proofBytes, statesBytes); _processMinibatchVaultsOperations(states.vaults); - if (currentMinibatchIndex == 0) { - // After the final minibatch, currentMinibatchIndex resets to 0, triggering epoch end + if (currentPhase == LiquidityUpkeepPhase.Idle) { address[] memory failedTokens = _failedEpochTokens; delete _failedEpochTokens; config.completeAssetsRemoval(failedTokens); - // Emit epoch end and increment epoch counter. emit EventsLib.EpochEnd(epochCounter, states.nettedRebalanceVolumeUnderlying); ++epochCounter; } @@ -524,6 +525,7 @@ contract LiquidityOrchestrator is // Freeze deterministic proof-input anchor at epoch start. initialEpochBufferAmount = bufferAmount; + buyingLegEntryBuffer = 0; // Reset incremental commitment state for the new epoch _partialVaultsHash = bytes32(0); @@ -1006,5 +1008,5 @@ contract LiquidityOrchestrator is } /// @dev Storage gap to allow for future upgrades - uint256[46] private __gap; + uint256[45] private __gap; } diff --git a/contracts/OrionConfig.sol b/contracts/OrionConfig.sol index ed35b7fd..a981a71b 100644 --- a/contracts/OrionConfig.sol +++ b/contracts/OrionConfig.sol @@ -534,11 +534,6 @@ contract OrionConfig is Initializable, Ownable2StepUpgradeable, UUPSUpgradeable, ILiquidityOrchestrator.LiquidityUpkeepPhase.Idle; } - /// @inheritdoc IOrionConfig - function getTokenDecimals(address token) external view returns (uint8) { - return tokenDecimals[token]; - } - /// @notice Sets the upgrade timelock address. /// @dev If no timelock is set yet, only the owner may call this. Once a timelock is active, /// only the timelock itself may replace it, preventing the owner from bypassing the delay. diff --git a/contracts/access_controllers/WhitelistAccessControl.sol b/contracts/access_controllers/WhitelistAccessControl.sol index f90befee..5e0ab0c8 100644 --- a/contracts/access_controllers/WhitelistAccessControl.sol +++ b/contracts/access_controllers/WhitelistAccessControl.sol @@ -27,7 +27,7 @@ contract WhitelistAccessControl is IOrionAccessControl, Ownable2Step { constructor(address initialOwner_) Ownable(initialOwner_) {} /// @inheritdoc IOrionAccessControl - function canRequestDeposit(address sender) external view override returns (bool) { + function canRequestDeposit(address sender, bytes calldata) external view override returns (bool) { return whitelist[sender]; } diff --git a/contracts/execution/ERC4626ExecutionAdapter.sol b/contracts/execution/ERC4626ExecutionAdapter.sol index 831f561d..258469fd 100644 --- a/contracts/execution/ERC4626ExecutionAdapter.sol +++ b/contracts/execution/ERC4626ExecutionAdapter.sol @@ -59,7 +59,7 @@ contract ERC4626ExecutionAdapter is IExecutionAdapter { try IERC4626(asset).asset() returns (address vaultUnderlying) { // 2. Verify registered vault decimals match config decimals try IERC20Metadata(asset).decimals() returns (uint8 vaultDecimals) { - if (vaultDecimals != CONFIG.getTokenDecimals(asset)) { + if (vaultDecimals != CONFIG.tokenDecimals(asset)) { revert ErrorsLib.InvalidAdapter(asset); } } catch { @@ -69,7 +69,7 @@ contract ERC4626ExecutionAdapter is IExecutionAdapter { // 3. Verify underlying vault decimals match config decimals // (vault underlying must be whitelisted in config) try IERC20Metadata(vaultUnderlying).decimals() returns (uint8 vaultUnderlyingDecimals) { - if (vaultUnderlyingDecimals != CONFIG.getTokenDecimals(vaultUnderlying)) { + if (vaultUnderlyingDecimals != CONFIG.tokenDecimals(vaultUnderlying)) { revert ErrorsLib.InvalidAdapter(asset); } } catch { diff --git a/contracts/interfaces/ILiquidityOrchestrator.sol b/contracts/interfaces/ILiquidityOrchestrator.sol index 4b0cb81f..3926909c 100644 --- a/contracts/interfaces/ILiquidityOrchestrator.sol +++ b/contracts/interfaces/ILiquidityOrchestrator.sol @@ -29,7 +29,7 @@ interface ILiquidityOrchestrator { VaultState[] vaults; SellLegOrders sellLeg; BuyLegOrders buyLeg; - uint256 bufferAmount; + uint256 bufferIncrease; uint256 epochProtocolFees; uint256 nettedRebalanceVolumeUnderlying; } @@ -81,6 +81,10 @@ interface ILiquidityOrchestrator { /// @return The initial epoch buffer amount function initialEpochBufferAmount() external view returns (uint256); + /// @notice Returns the BuyingLeg-entry buffer snapshot (after sell→buy bufferIncrease apply) + /// @return The BuyingLeg entry buffer amount + function buyingLegEntryBuffer() external view returns (uint256); + /// @notice Returns the pending protocol fees /// @return The pending protocol fees function pendingProtocolFees() external view returns (uint256); diff --git a/contracts/interfaces/IOrionAccessControl.sol b/contracts/interfaces/IOrionAccessControl.sol index ca081ae5..4f175320 100644 --- a/contracts/interfaces/IOrionAccessControl.sol +++ b/contracts/interfaces/IOrionAccessControl.sol @@ -10,9 +10,10 @@ pragma solidity ^0.8.34; */ interface IOrionAccessControl { /** - * @notice Check if an address is allowed to request deposits to the vault - * @param sender Address attempting to deposit - * @return True if sender is allowed to deposit, false otherwise + * @notice Check if a deposit request is allowed + * @param sender The address of the sender of the deposit request + * @param data The data of the deposit request + * @return True if the deposit request is allowed, false otherwise */ - function canRequestDeposit(address sender) external view returns (bool); + function canRequestDeposit(address sender, bytes calldata data) external view returns (bool); } diff --git a/contracts/interfaces/IOrionConfig.sol b/contracts/interfaces/IOrionConfig.sol index 63ff1159..2cce26db 100644 --- a/contracts/interfaces/IOrionConfig.sol +++ b/contracts/interfaces/IOrionConfig.sol @@ -189,11 +189,10 @@ interface IOrionConfig { /// @return True if the system is idle, false otherwise function isSystemIdle() external view returns (bool); - /// @notice Returns the number of decimals for a given token - /// @dev This function returns the stored decimals for whitelisted tokens - /// @param token The address of the token + /// @notice Returns the stored decimals for a whitelisted token + /// @param token The token address /// @return The number of decimals for the token - function getTokenDecimals(address token) external view returns (uint8); + function tokenDecimals(address token) external view returns (uint8); /// @notice Returns the minimum deposit amount /// @return The minimum deposit amount in underlying asset units diff --git a/contracts/price/ERC4626PriceAdapter.sol b/contracts/price/ERC4626PriceAdapter.sol index 03ca2def..0ec9f753 100644 --- a/contracts/price/ERC4626PriceAdapter.sol +++ b/contracts/price/ERC4626PriceAdapter.sol @@ -64,7 +64,7 @@ contract ERC4626PriceAdapter is IPriceAdapter { uint256 totalSupply = vault.totalSupply(); if (totalSupply == 0) { - return (0, PRICE_DECIMALS + CONFIG.getTokenDecimals(vaultUnderlying)); + return (0, PRICE_DECIMALS + CONFIG.tokenDecimals(vaultUnderlying)); } uint8 effectiveShareDecimals = _effectiveShareDecimals(totalAssets, totalSupply, vaultAssetDecimals); @@ -81,7 +81,7 @@ contract ERC4626PriceAdapter is IPriceAdapter { 10 ** CONFIG.priceAdapterDecimals() ); - return (vaultPrice, PRICE_DECIMALS + CONFIG.getTokenDecimals(vaultUnderlying)); + return (vaultPrice, PRICE_DECIMALS + CONFIG.tokenDecimals(vaultUnderlying)); } /// @notice Resolves share scale for pricing when reported vault decimals understate per-share value. diff --git a/contracts/test/LiquidityOrchestratorHarness.sol b/contracts/test/LiquidityOrchestratorHarness.sol index 2158d944..ee5ed86f 100644 --- a/contracts/test/LiquidityOrchestratorHarness.sol +++ b/contracts/test/LiquidityOrchestratorHarness.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.34; import { LiquidityOrchestrator } from "../LiquidityOrchestrator.sol"; +import { EventsLib } from "../libraries/EventsLib.sol"; /** * @title LiquidityOrchestratorHarness @@ -39,4 +40,78 @@ contract LiquidityOrchestratorHarness is LiquidityOrchestrator { shares ); } + + /// @notice Test-only: set upkeep phase + function h_setPhase(LiquidityUpkeepPhase phase) external { + currentPhase = phase; + } + + /// @notice Test-only: set PVO/sell/buy minibatch index + function h_setCurrentMinibatchIndex(uint8 index) external { + currentMinibatchIndex = index; + } + + /// @notice Test-only: set fulfill minibatch size (bypasses idle/owner checks) + function h_setMinibatchSize(uint8 size) external { + minibatchSize = size; + } + + /// @notice Test-only: replace vaultsEpoch for the current epoch + function h_setVaultsEpoch(address[] calldata vaults) external { + delete _currentEpoch.vaultsEpoch; + for (uint256 i = 0; i < vaults.length; ++i) { + _currentEpoch.vaultsEpoch.push(vaults[i]); + } + } + + /// @notice Test-only: run PVO minibatch + epoch-end gate (mirrors performUpkeep PVO branch, no ZK verify) + /// @param vaults Vault states aligned with vaultsEpoch indices + /// @param nettedRebalanceVolumeUnderlying Passed through to EpochEnd when completing + function h_processPvoMinibatchWithEpochEnd( + VaultState[] memory vaults, + uint256 nettedRebalanceVolumeUnderlying + ) external { + _processMinibatchVaultsOperations(vaults); + _maybeEpochEndAfterPvo(nettedRebalanceVolumeUnderlying); + } + + /** + * @notice Test-only: advance PVO minibatch index using the same completion predicate as + * `_processMinibatchVaultsOperations`, without vault I/O (avoids gas caps for wrap tests). + * @dev Mirrors: i0/i1 from currentMinibatchIndex*minibatchSize, ++index (uint8 wrap), Idle iff + * i1 >= vaultsEpochLength. Then applies the Idle epoch-end gate. + * @param vaultsEpochLength Simulated `_currentEpoch.vaultsEpoch.length` + * @param nettedRebalanceVolumeUnderlying Passed through to EpochEnd when completing + */ + function h_advancePvoIndexLikeProcessMinibatch( + uint256 vaultsEpochLength, + uint256 nettedRebalanceVolumeUnderlying + ) external { + uint16 i0 = uint16(currentMinibatchIndex) * uint16(minibatchSize); + uint16 i1 = i0 + uint16(minibatchSize); + // Production uses checked ++ (panic at 255); wrap this in unchecked so the test can + // assert the Idle gate ignores a uint8 wrap mid-PVO (the old `index == 0` footgun). + unchecked { + ++currentMinibatchIndex; + } + + if (i1 > vaultsEpochLength || i1 == vaultsEpochLength) { + currentPhase = LiquidityUpkeepPhase.Idle; + currentMinibatchIndex = 0; + completedInCurrentMinibatch = 0; + // Skip _nextUpdateTime (private); not required for epoch-end gate assertions + } + + _maybeEpochEndAfterPvo(nettedRebalanceVolumeUnderlying); + } + + function _maybeEpochEndAfterPvo(uint256 nettedRebalanceVolumeUnderlying) private { + if (currentPhase == LiquidityUpkeepPhase.Idle) { + address[] memory failedTokens = _failedEpochTokens; + delete _failedEpochTokens; + config.completeAssetsRemoval(failedTokens); + emit EventsLib.EpochEnd(epochCounter, nettedRebalanceVolumeUnderlying); + ++epochCounter; + } + } } diff --git a/contracts/test/MockERC4626PriceAdapter.sol b/contracts/test/MockERC4626PriceAdapter.sol index 32505eaf..d23959b2 100644 --- a/contracts/test/MockERC4626PriceAdapter.sol +++ b/contracts/test/MockERC4626PriceAdapter.sol @@ -98,7 +98,7 @@ contract MockERC4626PriceAdapter is IPriceAdapter { // 3. Verify vault decimals are registered in config try IERC20Metadata(asset).decimals() returns (uint8 decimals) { - if (decimals != config.getTokenDecimals(asset)) { + if (decimals != config.tokenDecimals(asset)) { revert ErrorsLib.InvalidAdapter(asset); } } catch { diff --git a/contracts/test/MockOrionConfig.sol b/contracts/test/MockOrionConfig.sol index 85c45a9e..d33cb787 100644 --- a/contracts/test/MockOrionConfig.sol +++ b/contracts/test/MockOrionConfig.sol @@ -13,10 +13,8 @@ contract MockOrionConfig { address public liquidityOrchestrator; address public priceAdapterRegistryAddress; uint256 public slippageTolerance = 200; // 2% in basis points - mapping(address => uint8) private tokenDecimals; + mapping(address => uint8) public tokenDecimals; mapping(address => bool) private whitelisted; - /// @dev When true, return 0 for unset tokens (simulates real OrionConfig where unwhitelisted tokens have no entry) - bool public returnZeroForUnsetTokens; /// @dev Mirrors OrionConfig `isSystemIdle` for adapter tests; default true (idle). bool public systemIdle = true; @@ -42,12 +40,6 @@ contract MockOrionConfig { return 14; // Protocol standard for price adapter decimals } - function getTokenDecimals(address token) external view returns (uint8) { - uint8 decimals = tokenDecimals[token]; - if (returnZeroForUnsetTokens && decimals == 0) return 0; - return decimals == 0 ? 18 : decimals; // Default to 18 if not set - } - // Mock helpers for testing function setSlippageTolerance(uint256 _tolerance) external { slippageTolerance = _tolerance; @@ -73,10 +65,6 @@ contract MockOrionConfig { whitelisted[asset] = _whitelisted; } - function setReturnZeroForUnsetTokens(bool _returnZero) external { - returnZeroForUnsetTokens = _returnZero; - } - function setGuardian(address _guardian) external { guardian = _guardian; } diff --git a/contracts/vaults/OrionVault.sol b/contracts/vaults/OrionVault.sol index 4460a227..54aa622a 100644 --- a/contracts/vaults/OrionVault.sol +++ b/contracts/vaults/OrionVault.sol @@ -227,7 +227,7 @@ abstract contract OrionVault is Initializable, ERC4626Upgradeable, ReentrancyGua if (!config.isSystemIdle()) return 0; if (isDecommissioning || config.isDecommissionedVault(address(this))) return 0; if (depositAccessControl != address(0)) { - if (!IOrionAccessControl(depositAccessControl).canRequestDeposit(receiver)) return 0; + if (!IOrionAccessControl(depositAccessControl).canRequestDeposit(receiver, "")) return 0; } return type(uint256).max; } @@ -316,7 +316,7 @@ abstract contract OrionVault is Initializable, ERC4626Upgradeable, ReentrancyGua /// @inheritdoc IOrionVault function requestDeposit(uint256 assets) external nonReentrant { if (depositAccessControl != address(0)) { - if (!IOrionAccessControl(depositAccessControl).canRequestDeposit(msg.sender)) + if (!IOrionAccessControl(depositAccessControl).canRequestDeposit(msg.sender, msg.data)) revert ErrorsLib.DepositNotAllowed(); } diff --git a/package.json b/package.json index fd0ebb5c..711286c3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@orion-finance/protocol", "description": "Orion Finance Protocol", - "version": "2.5.0", + "version": "2.5.1", "type": "module", "engines": { "node": ">=22.13.0" @@ -46,30 +46,30 @@ "@nomicfoundation/hardhat-network-helpers": "^3.0.10", "@nomicfoundation/hardhat-toolbox-mocha-ethers": "^3.0.7", "@nomicfoundation/hardhat-typechain": "^3.1.1", - "@nomicfoundation/hardhat-verify": "3.0.19", + "@nomicfoundation/hardhat-verify": "3.0.20", "@nomicfoundation/ignition-core": "^3.1.7", "@typechain/ethers-v6": "^0.5.1", "@types/chai": "^5.2.3", "@types/mocha": "^10.0.10", - "@types/node": "^25.9.2", - "@typescript-eslint/eslint-plugin": "^8.60.1", - "@typescript-eslint/parser": "^8.60.1", + "@types/node": "^26.0.1", + "@typescript-eslint/eslint-plugin": "^8.62.0", + "@typescript-eslint/parser": "^8.62.0", "@zama-fhe/oracle-solidity": "^0.2.0", - "@zama-fhe/relayer-sdk": "^0.4.3", + "@zama-fhe/relayer-sdk": "^0.4.4", "chai": "^6.2.2", "chai-as-promised": "^8.0.1", "cross-env": "^10.1.0", "dotenv": "^17.4.2", - "eslint": "^10.4.1", + "eslint": "^10.6.0", "eslint-config-prettier": "^10.1.8", - "ethers": "^6.15.0", - "hardhat": "^3.8.0", + "ethers": "^6.17.0", + "hardhat": "^3.9.0", "hardhat-deploy": "^2.0.8", "mocha": "^11.7.6", - "prettier": "^3.8.3", + "prettier": "^3.9.1", "prettier-plugin-solidity": "^2.3.1", "rimraf": "^6.1.3", - "solhint": "^6.2.1", + "solhint": "^6.2.3", "solhint-plugin-prettier": "^0.1.0", "solidity-docgen": "0.6.0-beta.36", "ts-generator": "^0.1.1", @@ -87,34 +87,5 @@ "@uniswap/v3-periphery": "^1.4.4", "encrypted-types": "^0.0.4" }, - "pnpm": { - "overrides": { - "@nomicfoundation/hardhat-verify": "3.0.19", - "@openzeppelin/contracts-upgradeable@>=4.3.0 <4.8.3": "^4.9.6", - "@openzeppelin/contracts@>=4.3.0 <4.8.3": "^4.9.6", - "lodash": "^4.17.21", - "ws": ">=8.20.1" - }, - "peerDependencyRules": { - "ignoreMissing": [ - "@nomicfoundation/hardhat-ethers", - "@nomicfoundation/hardhat-verify", - "@nomicfoundation/hardhat-network-helpers" - ], - "allowedVersions": { - "hardhat": "^3.0.0", - "chai": "6.x", - "ethers": "6.x", - "@typechain/ethers-v6": "0.x" - } - }, - "allowedDeprecatedVersions": { - "glob": "*", - "inflight": "*", - "rimraf": "*", - "@types/minimatch": "*", - "lodash.isequal": "*", - "zksync-web3": "*" - } - } + "packageManager": "pnpm@11.10.0+sha512.0b7f8b98060031904c017e3a41eb187a16d40eeb829b95c4f8cb03681761fc4ab53dd219115b9b447f4dce1a05a214764461e7d3703392a9f32f9511ce8c86c8" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 685d3b6f..b46e309e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - '@nomicfoundation/hardhat-verify': 3.0.19 + '@nomicfoundation/hardhat-verify': 3.0.20 '@openzeppelin/contracts-upgradeable@>=4.3.0 <4.8.3': ^4.9.6 '@openzeppelin/contracts@>=4.3.0 <4.8.3': ^4.9.6 lodash: ^4.17.21 @@ -44,52 +44,52 @@ importers: devDependencies: '@eslint/eslintrc': specifier: ^3.3.5 - version: 3.3.5 + version: 3.3.5(supports-color@8.1.1) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.4.1) + version: 10.0.1(eslint@10.6.0(supports-color@8.1.1)) '@fhevm/hardhat-plugin': specifier: ^0.4.2 - version: 0.4.2(@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.3)(ethers@6.16.0)(typescript@6.0.3))(@fhevm/solidity@0.11.1)(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@zama-fhe/relayer-sdk@0.4.3)(encrypted-types@0.0.4)(ethers@6.16.0)(hardhat@3.8.0) + version: 0.4.2(@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.4)(ethers@6.17.0)(typescript@6.0.3))(@fhevm/solidity@0.11.1)(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@zama-fhe/relayer-sdk@0.4.4)(encrypted-types@0.0.4)(ethers@6.17.0)(hardhat@3.9.0)(supports-color@8.1.1) '@fhevm/mock-utils': specifier: 0.4.2 - version: 0.4.2(@zama-fhe/relayer-sdk@0.4.3)(ethers@6.16.0)(typescript@6.0.3) + version: 0.4.2(@zama-fhe/relayer-sdk@0.4.4)(ethers@6.17.0)(typescript@6.0.3) '@nomicfoundation/hardhat-ethers': specifier: ^4.0.13 - version: 4.0.13(hardhat@3.8.0) + version: 4.0.13(hardhat@3.9.0) '@nomicfoundation/hardhat-ethers-chai-matchers': specifier: ^3.0.10 - version: 3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(chai@6.2.2)(ethers@6.16.0)(hardhat@3.8.0) + version: 3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(chai@6.2.2)(ethers@6.17.0)(hardhat@3.9.0) '@nomicfoundation/hardhat-ignition': specifier: ^3.1.7 - version: 3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0) + version: 3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0) '@nomicfoundation/hardhat-ignition-ethers': specifier: ^3.1.6 - version: 3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.16.0)(hardhat@3.8.0) + version: 3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.17.0)(hardhat@3.9.0) '@nomicfoundation/hardhat-keystore': specifier: ^3.0.12 - version: 3.0.12(hardhat@3.8.0) + version: 3.0.12(hardhat@3.9.0) '@nomicfoundation/hardhat-mocha': specifier: ^3.0.21 - version: 3.0.21(hardhat@3.8.0)(mocha@11.7.6) + version: 3.0.21(hardhat@3.9.0)(mocha@11.7.6) '@nomicfoundation/hardhat-network-helpers': specifier: ^3.0.10 - version: 3.0.10(hardhat@3.8.0) + version: 3.0.10(hardhat@3.9.0) '@nomicfoundation/hardhat-toolbox-mocha-ethers': specifier: ^3.0.7 - version: 3.0.7(b7e9ae1fc972a5375a8effd2dfcefd42) + version: 3.0.7(163fe70095a37b4e2359d7f04dc2d8ed) '@nomicfoundation/hardhat-typechain': specifier: ^3.1.1 - version: 3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(ethers@6.16.0)(hardhat@3.8.0)(typescript@6.0.3) + version: 3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(ethers@6.17.0)(hardhat@3.9.0)(typescript@6.0.3) '@nomicfoundation/hardhat-verify': - specifier: 3.0.19 - version: 3.0.19(hardhat@3.8.0) + specifier: 3.0.20 + version: 3.0.20(hardhat@3.9.0) '@nomicfoundation/ignition-core': specifier: ^3.1.7 version: 3.1.7 '@typechain/ethers-v6': specifier: ^0.5.1 - version: 0.5.1(ethers@6.16.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3) + version: 0.5.1(ethers@6.17.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3) '@types/chai': specifier: ^5.2.3 version: 5.2.3 @@ -97,20 +97,20 @@ importers: specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^25.9.2 - version: 25.9.2 + specifier: ^26.0.1 + version: 26.0.1 '@typescript-eslint/eslint-plugin': - specifier: ^8.60.1 - version: 8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3) + specifier: ^8.62.0 + version: 8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) '@typescript-eslint/parser': - specifier: ^8.60.1 - version: 8.60.1(eslint@10.4.1)(typescript@6.0.3) + specifier: ^8.62.0 + version: 8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) '@zama-fhe/oracle-solidity': specifier: ^0.2.0 - version: 0.2.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(@openzeppelin/defender-deploy-client-cli@0.0.1-alpha.10)(@openzeppelin/upgrades-core@1.44.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3) + version: 0.2.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(@openzeppelin/defender-deploy-client-cli@0.0.1-alpha.10)(@openzeppelin/upgrades-core@1.44.2)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3) '@zama-fhe/relayer-sdk': - specifier: ^0.4.3 - version: 0.4.3 + specifier: ^0.4.4 + version: 0.4.4 chai: specifier: ^6.2.2 version: 6.2.2 @@ -124,47 +124,47 @@ importers: specifier: ^17.4.2 version: 17.4.2 eslint: - specifier: ^10.4.1 - version: 10.4.1 + specifier: ^10.6.0 + version: 10.6.0(supports-color@8.1.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.4.1) + version: 10.1.8(eslint@10.6.0(supports-color@8.1.1)) ethers: - specifier: ^6.15.0 - version: 6.16.0 + specifier: ^6.17.0 + version: 6.17.0 hardhat: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.9.0 + version: 3.9.0 hardhat-deploy: specifier: ^2.0.8 - version: 2.0.8(@rocketh/node@0.19.4(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76))(typescript@6.0.3)(zod@3.25.76))(hardhat@3.8.0)(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76)) + version: 2.0.8(@rocketh/node@0.19.4(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76))(typescript@6.0.3)(zod@3.25.76))(hardhat@3.9.0)(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76)) mocha: specifier: ^11.7.6 version: 11.7.6 prettier: - specifier: ^3.8.3 - version: 3.8.3 + specifier: ^3.9.1 + version: 3.9.1 prettier-plugin-solidity: specifier: ^2.3.1 - version: 2.3.1(prettier@3.8.3) + version: 2.3.1(prettier@3.9.1) rimraf: specifier: ^6.1.3 version: 6.1.3 solhint: - specifier: ^6.2.1 - version: 6.2.1(typescript@6.0.3) + specifier: ^6.2.3 + version: 6.2.3(typescript@6.0.3) solhint-plugin-prettier: specifier: ^0.1.0 - version: 0.1.0(prettier-plugin-solidity@2.3.1(prettier@3.8.3))(prettier@3.8.3) + version: 0.1.0(prettier-plugin-solidity@2.3.1(prettier@3.9.1))(prettier@3.9.1) solidity-docgen: specifier: 0.6.0-beta.36 - version: 0.6.0-beta.36(hardhat@3.8.0) + version: 0.6.0-beta.36(hardhat@3.9.0) ts-generator: specifier: ^0.1.1 version: 0.1.1 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@25.9.2)(typescript@6.0.3) + version: 10.9.2(@types/node@26.0.1)(typescript@6.0.3) typechain: specifier: ^8.3.2 version: 8.3.2(typescript@6.0.3) @@ -203,87 +203,83 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-lambda@3.1063.0': - resolution: {integrity: sha512-xn2c+C2/le5Iya243PVsH+s4yhs0Oo5wK+CopVJfhZ2uH6WNEWre+wQ6D/q8FkFZaaPP/cwejVBVUEaMsD98Kw==} + '@aws-sdk/client-lambda@3.1075.0': + resolution: {integrity: sha512-S+sy0L7WEouGGys0kJZJ+br0sQGxgWC+0nR/4ySsym/CSg/k+VHXBdD697WJLli+X5a76tFBshx5bjgVKgLg4Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.974.18': - resolution: {integrity: sha512-JDYCPI0j7zGrzXTDFsLB346cxss7J/AxH7+O0MzWlqppJBEyB9Qe6TQXRL6iwLUo/xZkNv9KFmBL2hqElmwW0g==} + '@aws-sdk/core@3.974.23': + resolution: {integrity: sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.44': - resolution: {integrity: sha512-3hKJVrZ7bqXzDAXCQp+OaQ1ASN+vWstaNuEH418wQVl//cRZhqhfR9Bjk1qIWmgUGe8/D3gdO73PgidRj378EQ==} + '@aws-sdk/credential-provider-env@3.972.49': + resolution: {integrity: sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.46': - resolution: {integrity: sha512-VhwC9pGAZHhiQ2xSViyOPDFqvr9aRxGCAXZtADsUhU3R65nad7y//CwynE6mQnWNR+suRlqE79W36IVayL+m1g==} + '@aws-sdk/credential-provider-http@3.972.51': + resolution: {integrity: sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.50': - resolution: {integrity: sha512-09Xi6ovxiK42+De/qBGF71sT5F2bWgYM+1fFyDwSOpy1xpsQ5R/naIu7MVDpH6Dic36QNc8dAv4KADtMGK2JYg==} + '@aws-sdk/credential-provider-ini@3.972.56': + resolution: {integrity: sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.49': - resolution: {integrity: sha512-EfJF/1Fh9mI4pZyoheU2RY9xUhTcugIZNkD63+orXMkYj/QXacJNbKVDUK90Yv5hE+aX+rt9J/EZ9Qr3vKOa7g==} + '@aws-sdk/credential-provider-login@3.972.55': + resolution: {integrity: sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.52': - resolution: {integrity: sha512-7QX+PbyiWBEOVipJq8Nke/TqXT6lAPLE7fvTaopa39/IVWuLfS+Fzdy71sZJONf/mLGgmtj6aU17+REw3+aRrw==} + '@aws-sdk/credential-provider-node@3.972.58': + resolution: {integrity: sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.44': - resolution: {integrity: sha512-V+UUhZpRP7QDRhi+qgBDisM9tUBnYmMje8Bk77A6MZsfeGeGdMsQXmaHP1CDYFcept0o/Rz5g2Y0TMeVlG9dzg==} + '@aws-sdk/credential-provider-process@3.972.49': + resolution: {integrity: sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.49': - resolution: {integrity: sha512-9QqOYGuh5tZ76OzaT68kwI78AH+5lS/uZGGvkfxb3fc8FzRrIz2jOufNTliEBEeSAwmgK2rWLNsK+IB3zbtNPA==} + '@aws-sdk/credential-provider-sso@3.972.55': + resolution: {integrity: sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.49': - resolution: {integrity: sha512-IYx1lN38MnnPXv+NBLpuATu0cZakbZ321TAfjW+aVkw7HIJF38YnEwdeEO55MSl3pl7hIX1IvvnD6EmnAzmAJw==} + '@aws-sdk/credential-provider-web-identity@3.972.55': + resolution: {integrity: sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.17': - resolution: {integrity: sha512-lDRgraoTfKRawUyc176Ow93mrNrOho/x+EoK4C+lKU+vKkHWhNhzvSMVAx0WEJUJoeQxxDN5ZdKMfiGEyNejig==} + '@aws-sdk/nested-clients@3.997.23': + resolution: {integrity: sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.32': - resolution: {integrity: sha512-llvApLcsWtmRFhG2wT3WIp1CmDeRaIYutqty1ZZXoMzK7TiJ6MOLOimk9eXUS8PwgG4ew4pa4QAbt0lfhn++1w==} + '@aws-sdk/signature-v4-multi-region@3.996.35': + resolution: {integrity: sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1063.0': - resolution: {integrity: sha512-nYDaWWdzjKiDP5xj8k4oUgcYd4WPgzfAOgdU5vJsaqH/07Dfvm7ffisHCFJ+NEl7kUC9JEIUxh0kznvenbo3NQ==} + '@aws-sdk/token-providers@3.1074.0': + resolution: {integrity: sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.1': - resolution: {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} + '@aws-sdk/types@3.973.13': + resolution: {integrity: sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.11': - resolution: {integrity: sha512-YjS0qFuECClRh4qhEyW8XagW0fwEPBeZ1cfsW/gU73Kh/ExFILxbzxOfPCmzF/2DwEvhvsHYt0b0qnvStwKYrg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/util-locate-window@3.965.6': - resolution: {integrity: sha512-ZfHjfwSzeXj+Lg9AK5ZNmeDkXev6V+w2tn1t4kgDdRtUaRCthepTQiFwbD06EF9oNGH4LaLg+Mb6U16Ypv5bSw==} + '@aws-sdk/util-locate-window@3.965.8': + resolution: {integrity: sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g==} engines: {node: '>=20.0.0'} '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - '@aws-sdk/xml-builder@3.972.28': - resolution: {integrity: sha512-lI/l3c/vPvsxmspzV63NfS3x9q4CkMmdhJy4QiM+NThAufVkDvi/PZZQ6xETnICL0UD7jI808pY83gllf86RFg==} + '@aws-sdk/xml-builder@3.972.31': + resolution: {integrity: sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.4': resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} '@bytecodealliance/preview2-shim@0.17.0': @@ -303,158 +299,158 @@ packages: '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - '@esbuild/aix-ppc64@0.28.0': - resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.0': - resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.0': - resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.0': - resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.0': - resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.0': - resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.0': - resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.0': - resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.0': - resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.0': - resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.0': - resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.0': - resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.0': - resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.0': - resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.0': - resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.0': - resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.0': - resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.0': - resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.0': - resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.0': - resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.0': - resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.0': - resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.0': - resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.0': - resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.0': - resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.0': - resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -730,9 +726,6 @@ packages: '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - '@nodable/entities@2.1.1': - resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==} - '@nomicfoundation/edr-darwin-arm64@0.12.0': resolution: {integrity: sha512-z/8jU2dgZjhY2iLtJ1DGi3t/N2xbmjgok9K3R0f7+UZxSSJ5LbXCFn5So33fVh47RzGzOqEB+Yk4SdyUq2odqw==} engines: {node: '>= 20'} @@ -818,7 +811,7 @@ packages: peerDependencies: '@nomicfoundation/hardhat-ethers': ^4.0.0 '@nomicfoundation/hardhat-ignition': ^3.1.2 - '@nomicfoundation/hardhat-verify': 3.0.19 + '@nomicfoundation/hardhat-verify': 3.0.20 '@nomicfoundation/ignition-core': ^3.0.7 ethers: ^6.14.0 hardhat: ^3.8.0 @@ -826,7 +819,7 @@ packages: '@nomicfoundation/hardhat-ignition@3.1.7': resolution: {integrity: sha512-VaJpdKzVTKhEWOb9lQdXQcghlF/H1kasyfeOw21i69NaZ49QmFc2kRLhnTcJA+vLj+jV1fYk29fK0NO1Jsnavg==} peerDependencies: - '@nomicfoundation/hardhat-verify': 3.0.19 + '@nomicfoundation/hardhat-verify': 3.0.20 hardhat: ^3.8.0 '@nomicfoundation/hardhat-keystore@3.0.12': @@ -856,7 +849,7 @@ packages: '@nomicfoundation/hardhat-mocha': ^3.0.0 '@nomicfoundation/hardhat-network-helpers': ^3.0.0 '@nomicfoundation/hardhat-typechain': ^3.0.0 - '@nomicfoundation/hardhat-verify': 3.0.19 + '@nomicfoundation/hardhat-verify': 3.0.20 '@nomicfoundation/ignition-core': ^3.0.0 chai: '>=5.1.2 <7' ethers: ^6.14.0 @@ -876,8 +869,8 @@ packages: '@nomicfoundation/hardhat-vendored@3.0.4': resolution: {integrity: sha512-RO8Otj1FvRvxJmXzkxh1vTwK/+cqSVPYLqY6RrWkmzHEEcxnAwAFsBYdW7xyTEyW/pVbSSNd2gs3aoGdGZaoNA==} - '@nomicfoundation/hardhat-verify@3.0.19': - resolution: {integrity: sha512-UB+ZQg283DRAnK2Uej1uyqPy/CtdWkcr9JxJEb1JSIcqQppVTYeUM9X51QC88bXnuROr2xjwvXkMKCe/QRVb0A==} + '@nomicfoundation/hardhat-verify@3.0.20': + resolution: {integrity: sha512-chMhQpnE8FWv5QKmbD9Mn6HvBLuaxkUQ6LlZw4STyubsaXb4pemRh+e5Aqbb07BbMTm7inPUZvUEzmdhGUvE7w==} peerDependencies: hardhat: ^3.8.0 @@ -982,7 +975,7 @@ packages: hasBin: true peerDependencies: '@nomicfoundation/hardhat-ethers': ^3.0.0 - '@nomicfoundation/hardhat-verify': 3.0.19 + '@nomicfoundation/hardhat-verify': 3.0.20 ethers: ^6.6.0 hardhat: ^2.0.2 peerDependenciesMeta: @@ -1022,36 +1015,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.6': resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.6': resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.6': resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.6': resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.6': resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.6': resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} @@ -1087,8 +1086,8 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@3.0.2': - resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} + '@pnpm/npm-conf@3.0.3': + resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} engines: {node: '>=12'} '@prettier/sync@0.3.0': @@ -1165,36 +1164,32 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@smithy/core@3.24.6': - resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} + '@smithy/core@3.26.0': + resolution: {integrity: sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.3.8': - resolution: {integrity: sha512-5cAM+KZC02sTqDt6NaLXyu50M/GNMd1eTzDVR8Lb0BBsVtu7RWHo47VPPEEv1vt3Yub6uzr+M5FHC+GtoT0USg==} + '@smithy/credential-provider-imds@4.4.2': + resolution: {integrity: sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.4.6': - resolution: {integrity: sha512-FEwEYJ1jlBKdhe9TPzfghEi1bP55ZeEImlDkEa62bBBYzUcnB6RUCyuiS2mqKt6ZVjUbBgcNhzfIctH+Hevx9g==} + '@smithy/fetch-http-handler@5.5.2': + resolution: {integrity: sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/node-http-handler@4.7.7': - resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==} + '@smithy/node-http-handler@4.8.2': + resolution: {integrity: sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.4.6': - resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==} + '@smithy/signature-v4@5.5.2': + resolution: {integrity: sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==} engines: {node: '>=18.0.0'} - '@smithy/types@4.12.0': - resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} - engines: {node: '>=18.0.0'} - - '@smithy/types@4.14.3': - resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==} + '@smithy/types@4.15.0': + resolution: {integrity: sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': @@ -1270,8 +1265,8 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/node@25.9.2': - resolution: {integrity: sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==} + '@types/node@26.0.1': + resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==} '@types/pbkdf2@3.1.2': resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} @@ -1291,63 +1286,63 @@ packages: '@types/secp256k1@4.0.7': resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} - '@typescript-eslint/eslint-plugin@8.60.1': - resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} + '@typescript-eslint/eslint-plugin@8.62.0': + resolution: {integrity: sha512-o+mpz7EYiMzXoySXiKmzlabIvTVqUuK5yLrAedRPRDA0IpPFMUV1IXt6OqljIxX/kumN6EjUYp41Hqelh6p/Dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.60.1 + '@typescript-eslint/parser': ^8.62.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.60.1': - resolution: {integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==} + '@typescript-eslint/parser@8.62.0': + resolution: {integrity: sha512-dzHeT2gySzZtLDsuqxU9AkYgIsQoHAHtRBpOqM+Ofzx1Bwrd2RcCjQJ+6iQbsHOIR6NS33bF2W1k3blN1zLDrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.60.1': - resolution: {integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==} + '@typescript-eslint/project-service@8.62.0': + resolution: {integrity: sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.60.1': - resolution: {integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==} + '@typescript-eslint/scope-manager@8.62.0': + resolution: {integrity: sha512-1lX38kNxXIRb8mEc3lbq5mdHq1Pf2+U0nFU65KfT18mtPxxl0fvjuEE92mHuXPuCtElJhOrddOpyMlM3Z0umEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.60.1': - resolution: {integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==} + '@typescript-eslint/tsconfig-utils@8.62.0': + resolution: {integrity: sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.60.1': - resolution: {integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==} + '@typescript-eslint/type-utils@8.62.0': + resolution: {integrity: sha512-+g5O3j0w2ldzC86Pv6fvbO/xhAonbJFIdf/MKQ1d30gndlsVzUOE83ldfSE15Qrl9fhFjK6AovHs5Wpp6vx86w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.60.1': - resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==} + '@typescript-eslint/types@8.62.0': + resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.60.1': - resolution: {integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==} + '@typescript-eslint/typescript-estree@8.62.0': + resolution: {integrity: sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.60.1': - resolution: {integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==} + '@typescript-eslint/utils@8.62.0': + resolution: {integrity: sha512-82r66fi9zYwZ+mTq3vKgwjbZ1PVk/DJzrXFLpG6RnBbdvH8TEGVHIs9H4d2drhkOzf0syZuD/OZvvlu6GDbP4g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.60.1': - resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==} + '@typescript-eslint/visitor-keys@8.62.0': + resolution: {integrity: sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@uniswap/lib@4.0.1-alpha': @@ -1374,8 +1369,8 @@ packages: resolution: {integrity: sha512-C13JGdvCisZJefV3jGiuNcsdxSmoDr5HLXt7yw6zPe9qYGjSUXpnCwH2LTsdQZqHN0RIKmo5Wt2yuaxL4zjEeg==} engines: {node: '>=22'} - '@zama-fhe/relayer-sdk@0.4.3': - resolution: {integrity: sha512-/Lz+yBda4vppMx3FiCnqjRmBWxxEzGrcyOLeFQg1fqadnCWPU5GCmx7pSBQXesJHQz7MJ5hD07ERv2gdNjxv3w==} + '@zama-fhe/relayer-sdk@0.4.4': + resolution: {integrity: sha512-N+ateFbi7Fu9JsxExapfn/SdU3Bye3tvCfIaZQsRNXsZ7ep39S0BUnmljh+JhalUKT11xlMoA4+1TKLx72amcw==} engines: {node: '>=22'} hasBin: true @@ -1420,6 +1415,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + adm-zip@0.4.16: resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} engines: {node: '>=0.3.0'} @@ -1438,11 +1438,6 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ajv-errors@3.0.0: - resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} - peerDependencies: - ajv: ^8.0.1 - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} @@ -1452,6 +1447,9 @@ packages: amazon-cognito-identity-js@6.3.16: resolution: {integrity: sha512-HPGSBGD6Q36t99puWh0LnptxO/4icnk2kqIQ9cTJ2tFQo5NMUnWQIgtrTAk8nm+caqUbjDzXzG56GBjI2tS6jQ==} + amazon-cognito-identity-js@6.3.18: + resolution: {integrity: sha512-tsFGh5sMWvcD0LzDqkfJLZeNAglswtFB2clep7E1xJZpo/djQgrDHvXTzgPmzZuA3oNF2UXynSuENEDNTS56Pg==} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1528,8 +1526,8 @@ packages: axios@1.13.5: resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} - axios@1.17.0: - resolution: {integrity: sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==} + axios@1.18.1: + resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1569,9 +1567,6 @@ packages: bn.js@4.12.3: resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} - bn.js@5.2.2: - resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} - bn.js@5.2.3: resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} @@ -1585,9 +1580,6 @@ packages: brace-expansion@1.1.14: resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} - brace-expansion@2.1.0: - resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} - brace-expansion@2.1.1: resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} @@ -1927,8 +1919,8 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - esbuild@0.28.0: - resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true @@ -1966,8 +1958,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.4.1: - resolution: {integrity: sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==} + eslint@10.6.0: + resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2026,8 +2018,8 @@ packages: resolution: {integrity: sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==} engines: {node: '>=14.0.0'} - ethers@6.16.0: - resolution: {integrity: sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==} + ethers@6.17.0: + resolution: {integrity: sha512-BpyrpIPJ3ydEVow8zGaz1DuPS7YU8DcWxuBnY9a0UA/lvAPwrMr+EPXsfrul628SRaekPNeIM4UFh/91GWZang==} engines: {node: '>=14.0.0'} eventemitter3@5.0.1: @@ -2055,15 +2047,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - - fast-xml-builder@1.2.0: - resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} - - fast-xml-parser@5.7.3: - resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} - hasBin: true + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -2132,6 +2117,10 @@ packages: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} + engines: {node: '>= 6'} + fp-ts@1.19.3: resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} @@ -2250,8 +2239,8 @@ packages: typescript: optional: true - hardhat@3.8.0: - resolution: {integrity: sha512-luWXeLA4dcEoj3QrJhmnf+kRyGn9SrrUN9zf2KlrysXt9U3VIhLYZ8vNIA8HP4fZuvrlKMXHRdLDu0+9Gnmrkg==} + hardhat@3.9.0: + resolution: {integrity: sha512-MjLHYgxCbqhpLfu6FBkHkhTu9igJmtwgILJwdw7XUZ3xjnXLdGeXtwhykPA16hjeRrmWZH4yv5Tv4maw0dJASw==} hasBin: true has-flag@3.0.0: @@ -2288,6 +2277,10 @@ packages: resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -2430,6 +2423,9 @@ packages: js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + js-cookie@3.0.8: + resolution: {integrity: sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==} + js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -2440,6 +2436,10 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2459,6 +2459,10 @@ packages: resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} engines: {node: '>=7.10.1'} + json-stream-stringify@3.1.7: + resolution: {integrity: sha512-F4MWetLtY42YMaAKw5cV4e47zMD5aOT+tjjQWjX18ACtdkQ5Y/vrcfbcQ107Rh+MXjOCIx4KhW0wPmOvG8iQ5w==} + engines: {node: '>=7.10.1'} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -2537,8 +2541,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.3.5: - resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} lru_map@0.3.3: @@ -2768,10 +2772,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-expression-matcher@1.5.0: - resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} - engines: {node: '>=14.0.0'} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2837,8 +2837,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + prettier@3.9.1: + resolution: {integrity: sha512-ppiDo2CSwexck1eyZUwJHg/N3nf1+6IRCv7W/VJ5vaLnVCmB7+3CdRfMwoCHBBX6xTrREDTksZ4OZl5SSf4zXA==} engines: {node: '>=14'} hasBin: true @@ -3008,8 +3008,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.2: - resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -3083,8 +3083,8 @@ packages: prettier: ^3.0.0 prettier-plugin-solidity: ^1.0.0 - solhint@6.2.1: - resolution: {integrity: sha512-+VHSa84CRjm2s+KZWYxIDnI+NokcLsZHOSpRtg5nBFmnVfh6RPmPaFd5TN922Cfrm2i85kNoQtLiapALe26b5w==} + solhint@6.2.3: + resolution: {integrity: sha512-w8prJP3kaf3G9hkmH5RmkCanvTULHWpdn+t4MieMEMZDhC2gFoUbRjS0TmslgxzGIItoOtP/J5PvU0FrvC08wA==} engines: {node: '>=20'} hasBin: true @@ -3120,30 +3120,35 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] solidity-comments-linux-arm64-musl@0.0.2: resolution: {integrity: sha512-guCDbHArcjE+JDXYkxx5RZzY1YF6OnAKCo+sTC5fstyW/KGKaQJNPyBNWuwYsQiaEHpvhW1ha537IvlGek8GqA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] solidity-comments-linux-x64-gnu@0.0.2: resolution: {integrity: sha512-zIqLehBK/g7tvrFmQljrfZXfkEeLt2v6wbe+uFu6kH/qAHZa7ybt8Vc0wYcmjo2U0PeBm15d79ee3AkwbIjFdQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] solidity-comments-linux-x64-gnu@0.1.1: resolution: {integrity: sha512-oiU4yhh1Q9SeGXQ+/sogfTNoOkU8I8IvlIeotBQziTOonUHrxQk4E63kNiYGPDn5ZbB3BhKFmGHNRNrkufsxcQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] solidity-comments-linux-x64-musl@0.0.2: resolution: {integrity: sha512-R9FeDloVlFGTaVkOlELDVC7+1Tjx5WBPI5L8r0AGOPHK3+jOcRh6sKYpI+VskSPDc3vOO46INkpDgUXrKydlIw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] solidity-comments-win32-arm64-msvc@0.0.2: resolution: {integrity: sha512-QnWJoCQcJj+rnutULOihN9bixOtYWDdF5Rfz9fpHejL1BtNjdLW1om55XNVHGAHPqBxV4aeQQ6OirKnp9zKsug==} @@ -3223,9 +3228,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.3.0: - resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -3389,8 +3391,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -3400,8 +3402,8 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} - undici@6.26.0: - resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} + undici@6.27.0: + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} engines: {node: '>=18.17'} unfetch@4.2.0: @@ -3433,8 +3435,8 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - viem@2.52.2: - resolution: {integrity: sha512-HSU12p5aD/kAPZfrlbCUqdiP4P/c6hQ9AhfTS51VbLUQIjkWd1d5EjrCx/SCxZ0zhZVRn4Iv5X5WDqXPG8Ubew==} + viem@2.53.1: + resolution: {integrity: sha512-FhfJ/SW73CVosiyVLmIMVgKDRKYV1AGCLzZoHYvmNayyVff63Qi1ocPCk59LqC/cNw244RbBJjHnmxqXkE7NpA==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -3503,10 +3505,6 @@ packages: utf-8-validate: optional: true - xml-naming@0.1.0: - resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} - engines: {node: '>=16.0.0'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -3557,7 +3555,7 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.11 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': @@ -3565,21 +3563,21 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.11 - '@aws-sdk/util-locate-window': 3.965.6 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/util-locate-window': 3.965.8 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@1.2.2': dependencies: '@aws-crypto/util': 1.2.2 - '@aws-sdk/types': 3.973.1 + '@aws-sdk/types': 3.973.13 tslib: 1.14.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.11 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -3588,164 +3586,159 @@ snapshots: '@aws-crypto/util@1.2.2': dependencies: - '@aws-sdk/types': 3.973.1 + '@aws-sdk/types': 3.973.13 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.11 + '@aws-sdk/types': 3.973.13 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-lambda@3.1063.0': + '@aws-sdk/client-lambda@3.1075.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.18 - '@aws-sdk/credential-provider-node': 3.972.52 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.7 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-node': 3.972.58 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/core@3.974.18': + '@aws-sdk/core@3.974.23': dependencies: - '@aws-sdk/types': 3.973.11 - '@aws-sdk/xml-builder': 3.972.28 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/xml-builder': 3.972.31 '@aws/lambda-invoke-store': 0.2.4 - '@smithy/core': 3.24.6 - '@smithy/signature-v4': 5.4.6 - '@smithy/types': 4.14.3 + '@smithy/core': 3.26.0 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.44': + '@aws-sdk/credential-provider-env@3.972.49': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.46': + '@aws-sdk/credential-provider-http@3.972.51': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.7 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.50': - dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/credential-provider-env': 3.972.44 - '@aws-sdk/credential-provider-http': 3.972.46 - '@aws-sdk/credential-provider-login': 3.972.49 - '@aws-sdk/credential-provider-process': 3.972.44 - '@aws-sdk/credential-provider-sso': 3.972.49 - '@aws-sdk/credential-provider-web-identity': 3.972.49 - '@aws-sdk/nested-clients': 3.997.17 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.8 - '@smithy/types': 4.14.3 + '@aws-sdk/credential-provider-ini@3.972.56': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-login': 3.972.55 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.49': + '@aws-sdk/credential-provider-login@3.972.55': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/nested-clients': 3.997.17 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.52': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.44 - '@aws-sdk/credential-provider-http': 3.972.46 - '@aws-sdk/credential-provider-ini': 3.972.50 - '@aws-sdk/credential-provider-process': 3.972.44 - '@aws-sdk/credential-provider-sso': 3.972.49 - '@aws-sdk/credential-provider-web-identity': 3.972.49 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.8 - '@smithy/types': 4.14.3 + '@aws-sdk/credential-provider-node@3.972.58': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-ini': 3.972.56 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.44': + '@aws-sdk/credential-provider-process@3.972.49': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.49': + '@aws-sdk/credential-provider-sso@3.972.55': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/nested-clients': 3.997.17 - '@aws-sdk/token-providers': 3.1063.0 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/token-providers': 3.1074.0 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.49': + '@aws-sdk/credential-provider-web-identity@3.972.55': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/nested-clients': 3.997.17 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.997.17': + '@aws-sdk/nested-clients@3.997.23': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.18 - '@aws-sdk/signature-v4-multi-region': 3.996.32 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.7 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.32': + '@aws-sdk/signature-v4-multi-region@3.996.35': dependencies: - '@aws-sdk/types': 3.973.11 - '@smithy/signature-v4': 5.4.6 - '@smithy/types': 4.14.3 + '@aws-sdk/types': 3.973.13 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1063.0': + '@aws-sdk/token-providers@3.1074.0': dependencies: - '@aws-sdk/core': 3.974.18 - '@aws-sdk/nested-clients': 3.997.17 - '@aws-sdk/types': 3.973.11 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/types@3.973.1': + '@aws-sdk/types@3.973.13': dependencies: - '@smithy/types': 4.12.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/types@3.973.11': - dependencies: - '@smithy/types': 4.14.3 - tslib: 2.8.1 - - '@aws-sdk/util-locate-window@3.965.6': + '@aws-sdk/util-locate-window@3.965.8': dependencies: tslib: 2.8.1 @@ -3753,21 +3746,20 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.28': + '@aws-sdk/xml-builder@3.972.31': dependencies: - '@smithy/types': 4.14.3 - fast-xml-parser: 5.7.3 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@aws/lambda-invoke-store@0.2.4': {} - '@babel/code-frame@7.29.0': + '@babel/code-frame@7.29.7': dependencies: - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} '@bytecodealliance/preview2-shim@0.17.0': {} @@ -3781,92 +3773,92 @@ snapshots: '@epic-web/invariant@1.0.0': {} - '@esbuild/aix-ppc64@0.28.0': + '@esbuild/aix-ppc64@0.28.1': optional: true - '@esbuild/android-arm64@0.28.0': + '@esbuild/android-arm64@0.28.1': optional: true - '@esbuild/android-arm@0.28.0': + '@esbuild/android-arm@0.28.1': optional: true - '@esbuild/android-x64@0.28.0': + '@esbuild/android-x64@0.28.1': optional: true - '@esbuild/darwin-arm64@0.28.0': + '@esbuild/darwin-arm64@0.28.1': optional: true - '@esbuild/darwin-x64@0.28.0': + '@esbuild/darwin-x64@0.28.1': optional: true - '@esbuild/freebsd-arm64@0.28.0': + '@esbuild/freebsd-arm64@0.28.1': optional: true - '@esbuild/freebsd-x64@0.28.0': + '@esbuild/freebsd-x64@0.28.1': optional: true - '@esbuild/linux-arm64@0.28.0': + '@esbuild/linux-arm64@0.28.1': optional: true - '@esbuild/linux-arm@0.28.0': + '@esbuild/linux-arm@0.28.1': optional: true - '@esbuild/linux-ia32@0.28.0': + '@esbuild/linux-ia32@0.28.1': optional: true - '@esbuild/linux-loong64@0.28.0': + '@esbuild/linux-loong64@0.28.1': optional: true - '@esbuild/linux-mips64el@0.28.0': + '@esbuild/linux-mips64el@0.28.1': optional: true - '@esbuild/linux-ppc64@0.28.0': + '@esbuild/linux-ppc64@0.28.1': optional: true - '@esbuild/linux-riscv64@0.28.0': + '@esbuild/linux-riscv64@0.28.1': optional: true - '@esbuild/linux-s390x@0.28.0': + '@esbuild/linux-s390x@0.28.1': optional: true - '@esbuild/linux-x64@0.28.0': + '@esbuild/linux-x64@0.28.1': optional: true - '@esbuild/netbsd-arm64@0.28.0': + '@esbuild/netbsd-arm64@0.28.1': optional: true - '@esbuild/netbsd-x64@0.28.0': + '@esbuild/netbsd-x64@0.28.1': optional: true - '@esbuild/openbsd-arm64@0.28.0': + '@esbuild/openbsd-arm64@0.28.1': optional: true - '@esbuild/openbsd-x64@0.28.0': + '@esbuild/openbsd-x64@0.28.1': optional: true - '@esbuild/openharmony-arm64@0.28.0': + '@esbuild/openharmony-arm64@0.28.1': optional: true - '@esbuild/sunos-x64@0.28.0': + '@esbuild/sunos-x64@0.28.1': optional: true - '@esbuild/win32-arm64@0.28.0': + '@esbuild/win32-arm64@0.28.1': optional: true - '@esbuild/win32-ia32@0.28.0': + '@esbuild/win32-ia32@0.28.1': optional: true - '@esbuild/win32-x64@0.28.0': + '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.4.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0(supports-color@8.1.1))': dependencies: - eslint: 10.4.1 + eslint: 10.6.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.5': + '@eslint/config-array@0.23.5(supports-color@8.1.1)': dependencies: '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@8.1.1) @@ -3882,7 +3874,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.5(supports-color@8.1.1)': dependencies: ajv: 6.15.0 debug: 4.4.3(supports-color@8.1.1) @@ -3896,9 +3888,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@10.0.1(eslint@10.4.1)': + '@eslint/js@10.0.1(eslint@10.6.0(supports-color@8.1.1))': optionalDependencies: - eslint: 10.4.1 + eslint: 10.6.0(supports-color@8.1.1) '@eslint/object-schema@3.0.5': {} @@ -4179,18 +4171,18 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@fhevm/hardhat-plugin@0.4.2(@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.3)(ethers@6.16.0)(typescript@6.0.3))(@fhevm/solidity@0.11.1)(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@zama-fhe/relayer-sdk@0.4.3)(encrypted-types@0.0.4)(ethers@6.16.0)(hardhat@3.8.0)': + '@fhevm/hardhat-plugin@0.4.2(@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.4)(ethers@6.17.0)(typescript@6.0.3))(@fhevm/solidity@0.11.1)(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@zama-fhe/relayer-sdk@0.4.4)(encrypted-types@0.0.4)(ethers@6.17.0)(hardhat@3.9.0)(supports-color@8.1.1)': dependencies: '@fhevm/host-contracts': 0.10.0 - '@fhevm/mock-utils': 0.4.2(@zama-fhe/relayer-sdk@0.4.3)(ethers@6.16.0)(typescript@6.0.3) + '@fhevm/mock-utils': 0.4.2(@zama-fhe/relayer-sdk@0.4.4)(ethers@6.17.0)(typescript@6.0.3) '@fhevm/solidity': 0.11.1 - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) - '@zama-fhe/relayer-sdk': 0.4.3 + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) + '@zama-fhe/relayer-sdk': 0.4.4 debug: 4.4.3(supports-color@8.1.1) dotenv: 16.6.1 encrypted-types: 0.0.4 - ethers: 6.16.0 - hardhat: 3.8.0 + ethers: 6.17.0 + hardhat: 3.9.0 picocolors: 1.1.1 resolve: 1.22.12 transitivePeerDependencies: @@ -4203,10 +4195,10 @@ snapshots: solidity-comments-darwin-arm64: 0.1.1 solidity-comments-linux-x64-gnu: 0.1.1 - '@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.3)(ethers@6.16.0)(typescript@6.0.3)': + '@fhevm/mock-utils@0.4.2(@zama-fhe/relayer-sdk@0.4.4)(ethers@6.17.0)(typescript@6.0.3)': dependencies: - '@zama-fhe/relayer-sdk': 0.4.3 - ethers: 6.16.0 + '@zama-fhe/relayer-sdk': 0.4.4 + ethers: 6.17.0 optionalDependencies: typescript: 6.0.3 @@ -4262,8 +4254,8 @@ snapshots: '@morpho-org/morpho-blue@1.0.0': dependencies: - ethers: 6.16.0 - ethers-maths: 4.3.0(ethers@6.16.0) + ethers: 6.17.0 + ethers-maths: 4.3.0(ethers@6.17.0) lodash: 4.18.1 transitivePeerDependencies: - bufferutil @@ -4303,8 +4295,6 @@ snapshots: '@noble/secp256k1@1.7.1': {} - '@nodable/entities@2.1.1': {} - '@nomicfoundation/edr-darwin-arm64@0.12.0': {} '@nomicfoundation/edr-darwin-arm64@0.12.0-next.23': {} @@ -4357,104 +4347,104 @@ snapshots: dependencies: '@nomicfoundation/hardhat-utils': 4.1.3 - '@nomicfoundation/hardhat-ethers-chai-matchers@3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(chai@6.2.2)(ethers@6.16.0)(hardhat@3.8.0)': + '@nomicfoundation/hardhat-ethers-chai-matchers@3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(chai@6.2.2)(ethers@6.17.0)(hardhat@3.9.0)': dependencies: - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) '@nomicfoundation/hardhat-utils': 4.1.3 '@types/chai-as-promised': 8.0.2 chai: 6.2.2 chai-as-promised: 8.0.2(chai@6.2.2) deep-eql: 5.0.2 - ethers: 6.16.0 - hardhat: 3.8.0 + ethers: 6.17.0 + hardhat: 3.9.0 - '@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0)': + '@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 ethereum-cryptography: 2.2.1 - ethers: 6.16.0 - hardhat: 3.8.0 + ethers: 6.17.0 + hardhat: 3.9.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@nomicfoundation/hardhat-ignition-ethers@3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.16.0)(hardhat@3.8.0)': + '@nomicfoundation/hardhat-ignition-ethers@3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.17.0)(hardhat@3.9.0)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) - '@nomicfoundation/hardhat-ignition': 3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0) - '@nomicfoundation/hardhat-verify': 3.0.19(hardhat@3.8.0) + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) + '@nomicfoundation/hardhat-ignition': 3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0) + '@nomicfoundation/hardhat-verify': 3.0.20(hardhat@3.9.0) '@nomicfoundation/ignition-core': 3.1.7 - ethers: 6.16.0 - hardhat: 3.8.0 + ethers: 6.17.0 + hardhat: 3.9.0 - '@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0)': + '@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 - '@nomicfoundation/hardhat-verify': 3.0.19(hardhat@3.8.0) + '@nomicfoundation/hardhat-verify': 3.0.20(hardhat@3.9.0) '@nomicfoundation/ignition-core': 3.1.7 '@nomicfoundation/ignition-ui': 3.1.2 - hardhat: 3.8.0 + hardhat: 3.9.0 json5: 2.2.3 prompts: 2.4.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@nomicfoundation/hardhat-keystore@3.0.12(hardhat@3.8.0)': + '@nomicfoundation/hardhat-keystore@3.0.12(hardhat@3.9.0)': dependencies: '@noble/ciphers': 1.2.1 '@noble/hashes': 1.7.1 '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 '@nomicfoundation/hardhat-zod-utils': 3.0.5(zod@3.25.76) - hardhat: 3.8.0 + hardhat: 3.9.0 zod: 3.25.76 - '@nomicfoundation/hardhat-mocha@3.0.21(hardhat@3.8.0)(mocha@11.7.6)': + '@nomicfoundation/hardhat-mocha@3.0.21(hardhat@3.9.0)(mocha@11.7.6)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 '@nomicfoundation/hardhat-zod-utils': 3.0.5(zod@3.25.76) - hardhat: 3.8.0 + hardhat: 3.9.0 mocha: 11.7.6 tsx: 4.22.4 zod: 3.25.76 - '@nomicfoundation/hardhat-network-helpers@3.0.10(hardhat@3.8.0)': + '@nomicfoundation/hardhat-network-helpers@3.0.10(hardhat@3.9.0)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 - hardhat: 3.8.0 - - '@nomicfoundation/hardhat-toolbox-mocha-ethers@3.0.7(b7e9ae1fc972a5375a8effd2dfcefd42)': - dependencies: - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) - '@nomicfoundation/hardhat-ethers-chai-matchers': 3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(chai@6.2.2)(ethers@6.16.0)(hardhat@3.8.0) - '@nomicfoundation/hardhat-ignition': 3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0) - '@nomicfoundation/hardhat-ignition-ethers': 3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.16.0)(hardhat@3.8.0) - '@nomicfoundation/hardhat-keystore': 3.0.12(hardhat@3.8.0) - '@nomicfoundation/hardhat-mocha': 3.0.21(hardhat@3.8.0)(mocha@11.7.6) - '@nomicfoundation/hardhat-network-helpers': 3.0.10(hardhat@3.8.0) - '@nomicfoundation/hardhat-typechain': 3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(ethers@6.16.0)(hardhat@3.8.0)(typescript@6.0.3) - '@nomicfoundation/hardhat-verify': 3.0.19(hardhat@3.8.0) + hardhat: 3.9.0 + + '@nomicfoundation/hardhat-toolbox-mocha-ethers@3.0.7(163fe70095a37b4e2359d7f04dc2d8ed)': + dependencies: + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) + '@nomicfoundation/hardhat-ethers-chai-matchers': 3.0.10(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(chai@6.2.2)(ethers@6.17.0)(hardhat@3.9.0) + '@nomicfoundation/hardhat-ignition': 3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0) + '@nomicfoundation/hardhat-ignition-ethers': 3.1.6(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-ignition@3.1.7(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(@nomicfoundation/ignition-core@3.1.7)(ethers@6.17.0)(hardhat@3.9.0) + '@nomicfoundation/hardhat-keystore': 3.0.12(hardhat@3.9.0) + '@nomicfoundation/hardhat-mocha': 3.0.21(hardhat@3.9.0)(mocha@11.7.6) + '@nomicfoundation/hardhat-network-helpers': 3.0.10(hardhat@3.9.0) + '@nomicfoundation/hardhat-typechain': 3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(ethers@6.17.0)(hardhat@3.9.0)(typescript@6.0.3) + '@nomicfoundation/hardhat-verify': 3.0.20(hardhat@3.9.0) '@nomicfoundation/ignition-core': 3.1.7 chai: 6.2.2 - ethers: 6.16.0 - hardhat: 3.8.0 + ethers: 6.17.0 + hardhat: 3.9.0 mocha: 11.7.6 - '@nomicfoundation/hardhat-typechain@3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(ethers@6.16.0)(hardhat@3.8.0)(typescript@6.0.3)': + '@nomicfoundation/hardhat-typechain@3.1.1(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(ethers@6.17.0)(hardhat@3.9.0)(typescript@6.0.3)': dependencies: '@nomicfoundation/hardhat-errors': 3.0.15 - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) '@nomicfoundation/hardhat-utils': 4.1.3 '@nomicfoundation/hardhat-zod-utils': 3.0.5(zod@3.25.76) - '@typechain/ethers-v6': 0.5.1(ethers@6.16.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3) - ethers: 6.16.0 - hardhat: 3.8.0 + '@typechain/ethers-v6': 0.5.1(ethers@6.17.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3) + ethers: 6.17.0 + hardhat: 3.9.0 typechain: 8.3.2(typescript@6.0.3) zod: 3.25.76 transitivePeerDependencies: @@ -4467,20 +4457,20 @@ snapshots: env-paths: 2.2.1 ethereum-cryptography: 2.2.1 fast-equals: 5.4.0 - json-stream-stringify: 3.1.6 + json-stream-stringify: 3.1.7 rfdc: 1.4.1 - undici: 6.26.0 + undici: 6.27.0 '@nomicfoundation/hardhat-vendored@3.0.4': {} - '@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0)': + '@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0)': dependencies: '@ethersproject/abi': 5.8.0 '@nomicfoundation/hardhat-errors': 3.0.15 '@nomicfoundation/hardhat-utils': 4.1.3 '@nomicfoundation/hardhat-zod-utils': 3.0.5(zod@3.25.76) cbor2: 1.12.0 - hardhat: 3.8.0 + hardhat: 3.9.0 zod: 3.25.76 '@nomicfoundation/hardhat-zod-utils@3.0.5(zod@3.25.76)': @@ -4496,7 +4486,7 @@ snapshots: '@nomicfoundation/hardhat-utils': 4.1.3 '@nomicfoundation/solidity-analyzer': 0.1.2 cbor2: 1.12.0 - ethers: 6.16.0 + ethers: 6.17.0 immer: 10.0.2 lodash-es: 4.17.21 ndjson: 2.0.0 @@ -4580,19 +4570,19 @@ snapshots: '@openzeppelin/defender-sdk-base-client@2.7.1': dependencies: - '@aws-sdk/client-lambda': 3.1063.0 - amazon-cognito-identity-js: 6.3.16 + '@aws-sdk/client-lambda': 3.1075.0 + amazon-cognito-identity-js: 6.3.18 async-retry: 1.3.3 - axios: 1.17.0 + axios: 1.18.1 transitivePeerDependencies: - debug - encoding - supports-color - '@openzeppelin/defender-sdk-deploy-client@1.15.2(debug@4.4.3)': + '@openzeppelin/defender-sdk-deploy-client@1.15.2(debug@4.4.3(supports-color@8.1.1))': dependencies: '@openzeppelin/defender-sdk-base-client': 1.15.2 - axios: 1.13.5(debug@4.4.3) + axios: 1.13.5(debug@4.4.3(supports-color@8.1.1)) lodash: 4.18.1 transitivePeerDependencies: - debug @@ -4601,17 +4591,17 @@ snapshots: '@openzeppelin/defender-sdk-deploy-client@2.7.1': dependencies: '@openzeppelin/defender-sdk-base-client': 2.7.1 - axios: 1.17.0 + axios: 1.18.1 lodash: 4.18.1 transitivePeerDependencies: - debug - encoding - supports-color - '@openzeppelin/defender-sdk-network-client@1.15.2(debug@4.4.3)': + '@openzeppelin/defender-sdk-network-client@1.15.2(debug@4.4.3(supports-color@8.1.1))': dependencies: '@openzeppelin/defender-sdk-base-client': 1.15.2 - axios: 1.13.5(debug@4.4.3) + axios: 1.13.5(debug@4.4.3(supports-color@8.1.1)) lodash: 4.18.1 transitivePeerDependencies: - debug @@ -4620,7 +4610,7 @@ snapshots: '@openzeppelin/defender-sdk-network-client@2.7.1': dependencies: '@openzeppelin/defender-sdk-base-client': 2.7.1 - axios: 1.17.0 + axios: 1.18.1 lodash: 4.18.1 transitivePeerDependencies: - debug @@ -4632,22 +4622,22 @@ snapshots: '@openzeppelin/defender-deploy-client-cli': 0.0.1-alpha.10 '@openzeppelin/upgrades-core': 1.44.2 - '@openzeppelin/hardhat-upgrades@3.5.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(ethers@6.15.0)(hardhat@2.28.6(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3))': + '@openzeppelin/hardhat-upgrades@3.5.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(ethers@6.15.0)(hardhat@2.28.6(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3))(supports-color@8.1.1)': dependencies: - '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.8.0) + '@nomicfoundation/hardhat-ethers': 4.0.13(hardhat@3.9.0) '@openzeppelin/defender-sdk-base-client': 1.15.2 - '@openzeppelin/defender-sdk-deploy-client': 1.15.2(debug@4.4.3) - '@openzeppelin/defender-sdk-network-client': 1.15.2(debug@4.4.3) + '@openzeppelin/defender-sdk-deploy-client': 1.15.2(debug@4.4.3(supports-color@8.1.1)) + '@openzeppelin/defender-sdk-network-client': 1.15.2(debug@4.4.3(supports-color@8.1.1)) '@openzeppelin/upgrades-core': 1.44.2 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) ethereumjs-util: 7.1.5 ethers: 6.15.0 - hardhat: 2.28.6(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3) + hardhat: 2.28.6(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3) proper-lockfile: 4.1.2 undici: 6.23.0 optionalDependencies: - '@nomicfoundation/hardhat-verify': 3.0.19(hardhat@3.8.0) + '@nomicfoundation/hardhat-verify': 3.0.20(hardhat@3.9.0) transitivePeerDependencies: - encoding - supports-color @@ -4737,22 +4727,22 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@3.0.2': + '@pnpm/npm-conf@3.0.3': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@prettier/sync@0.3.0(prettier@3.8.3)': + '@prettier/sync@0.3.0(prettier@3.9.1)': dependencies: - prettier: 3.8.3 + prettier: 3.9.1 '@rocketh/core@0.19.1(typescript@6.0.3)(zod@3.25.76)': dependencies: abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eip-1193: 0.6.5 named-logs: 0.4.1 - viem: 2.52.2(typescript@6.0.3)(zod@3.25.76) + viem: 2.53.1(typescript@6.0.3)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -4772,7 +4762,7 @@ snapshots: prompts: 2.4.2 rocketh: 0.19.4(typescript@6.0.3)(zod@3.25.76) tsx: 4.22.4 - viem: 2.52.2(typescript@6.0.3)(zod@3.25.76) + viem: 2.53.1(typescript@6.0.3)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -4869,45 +4859,41 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@smithy/core@3.24.6': + '@smithy/core@3.26.0': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.14.3 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.3.8': + '@smithy/credential-provider-imds@4.4.2': dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.4.6': + '@smithy/fetch-http-handler@5.5.2': dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - '@smithy/node-http-handler@4.7.7': - dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 - - '@smithy/signature-v4@5.4.6': + '@smithy/node-http-handler@4.8.2': dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/types@4.12.0': + '@smithy/signature-v4@5.5.2': dependencies: + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/types@4.14.3': + '@smithy/types@4.15.0': dependencies: tslib: 2.8.1 @@ -4941,9 +4927,9 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@typechain/ethers-v6@0.5.1(ethers@6.16.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3)': + '@typechain/ethers-v6@0.5.1(ethers@6.17.0)(typechain@8.3.2(typescript@6.0.3))(typescript@6.0.3)': dependencies: - ethers: 6.16.0 + ethers: 6.17.0 lodash: 4.18.1 ts-essentials: 7.0.3(typescript@6.0.3) typechain: 8.3.2(typescript@6.0.3) @@ -4951,7 +4937,7 @@ snapshots: '@types/bn.js@5.2.0': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 '@types/chai-as-promised@8.0.2': dependencies: @@ -4974,7 +4960,7 @@ snapshots: '@types/mkdirp@0.5.2': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 '@types/mocha@10.0.10': {} @@ -4982,40 +4968,40 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@25.9.2': + '@types/node@26.0.1': dependencies: - undici-types: 7.24.6 + undici-types: 8.3.0 '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 '@types/prettier@2.7.3': {} '@types/prompts@2.4.9': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 kleur: 3.0.3 '@types/qs@6.14.0': {} '@types/resolve@0.0.8': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 '@types/secp256k1@4.0.7': dependencies: - '@types/node': 25.9.2 + '@types/node': 26.0.1 - '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.62.0(@typescript-eslint/parser@8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.60.1(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/type-utils': 8.60.1(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.1(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.1 - eslint: 10.4.1 + '@typescript-eslint/parser': 8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.62.0 + '@typescript-eslint/type-utils': 8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(supports-color@8.1.1))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.0 + eslint: 10.6.0(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -5023,79 +5009,79 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.60.1(eslint@10.4.1)(typescript@6.0.3)': + '@typescript-eslint/parser@8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/scope-manager': 8.62.0 + '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/typescript-estree': 8.62.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.62.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.4.1 + eslint: 10.6.0(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.60.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.62.0(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) + '@typescript-eslint/types': 8.62.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.60.1': + '@typescript-eslint/scope-manager@8.62.0': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/visitor-keys': 8.62.0 - '@typescript-eslint/tsconfig-utils@8.60.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.62.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.60.1(eslint@10.4.1)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.62.0(eslint@10.6.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.1(eslint@10.4.1)(typescript@6.0.3) + '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/typescript-estree': 8.62.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.62.0(eslint@10.6.0(supports-color@8.1.1))(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.4.1 + eslint: 10.6.0(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.60.1': {} + '@typescript-eslint/types@8.62.0': {} - '@typescript-eslint/typescript-estree@8.60.1(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.62.0(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.60.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/project-service': 8.62.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) + '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/visitor-keys': 8.62.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 - semver: 7.8.2 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.60.1(eslint@10.4.1)(typescript@6.0.3)': + '@typescript-eslint/utils@8.62.0(eslint@10.6.0(supports-color@8.1.1))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) - eslint: 10.4.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(supports-color@8.1.1)) + '@typescript-eslint/scope-manager': 8.62.0 + '@typescript-eslint/types': 8.62.0 + '@typescript-eslint/typescript-estree': 8.62.0(supports-color@8.1.1)(typescript@6.0.3) + eslint: 10.6.0(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.60.1': + '@typescript-eslint/visitor-keys@8.62.0': dependencies: - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/types': 8.62.0 eslint-visitor-keys: 5.0.1 '@uniswap/lib@4.0.1-alpha': {} @@ -5114,16 +5100,16 @@ snapshots: '@uniswap/v3-core': 1.0.1 base64-sol: 1.0.1 - '@zama-fhe/oracle-solidity@0.2.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(@openzeppelin/defender-deploy-client-cli@0.0.1-alpha.10)(@openzeppelin/upgrades-core@1.44.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3)': + '@zama-fhe/oracle-solidity@0.2.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(@openzeppelin/defender-deploy-client-cli@0.0.1-alpha.10)(@openzeppelin/upgrades-core@1.44.2)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3)': dependencies: '@fhevm/solidity': 0.8.0 '@openzeppelin/contracts': 5.1.0 '@openzeppelin/contracts-upgradeable': 5.1.0(@openzeppelin/contracts@5.1.0) '@openzeppelin/foundry-upgrades': 0.3.8(@openzeppelin/defender-deploy-client-cli@0.0.1-alpha.10)(@openzeppelin/upgrades-core@1.44.2) - '@openzeppelin/hardhat-upgrades': 3.5.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.8.0))(@nomicfoundation/hardhat-verify@3.0.19(hardhat@3.8.0))(ethers@6.15.0)(hardhat@2.28.6(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3)) + '@openzeppelin/hardhat-upgrades': 3.5.0(@nomicfoundation/hardhat-ethers@4.0.13(hardhat@3.9.0))(@nomicfoundation/hardhat-verify@3.0.20(hardhat@3.9.0))(ethers@6.15.0)(hardhat@2.28.6(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3))(supports-color@8.1.1) ethers: 6.15.0 - hardhat: 2.28.6(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3) - hardhat-deploy: 0.11.45 + hardhat: 2.28.6(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3) + hardhat-deploy: 0.11.45(supports-color@8.1.1) hardhat-ignore-warnings: 0.2.12 transitivePeerDependencies: - '@nomicfoundation/hardhat-ethers' @@ -5137,10 +5123,10 @@ snapshots: - typescript - utf-8-validate - '@zama-fhe/relayer-sdk@0.4.3': + '@zama-fhe/relayer-sdk@0.4.4': dependencies: commander: 14.0.3 - ethers: 6.16.0 + ethers: 6.17.0 fetch-retry: 6.0.0 keccak: 3.0.4 node-tfhe: 1.4.0-alpha.3 @@ -5166,6 +5152,10 @@ snapshots: dependencies: acorn: 8.16.0 + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + acorn-walk@8.3.4: dependencies: acorn: 8.15.0 @@ -5174,6 +5164,8 @@ snapshots: acorn@8.16.0: {} + acorn@8.17.0: {} + adm-zip@0.4.16: {} aes-js@3.0.0: {} @@ -5191,10 +5183,6 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-errors@3.0.0(ajv@8.20.0): - dependencies: - ajv: 8.20.0 - ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -5205,7 +5193,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 + fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -5219,6 +5207,16 @@ snapshots: transitivePeerDependencies: - encoding + amazon-cognito-identity-js@6.3.18: + dependencies: + '@aws-crypto/sha256-js': 1.2.2 + buffer: 4.9.2 + fast-base64-decode: 1.0.0 + isomorphic-unfetch: 3.1.0 + js-cookie: 3.0.8 + transitivePeerDependencies: + - encoding + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -5272,24 +5270,24 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@0.21.4(debug@4.4.3): + axios@0.21.4(debug@4.4.3(supports-color@8.1.1)): dependencies: - follow-redirects: 1.16.0(debug@4.4.3) + follow-redirects: 1.16.0(debug@4.4.3(supports-color@8.1.1)) transitivePeerDependencies: - debug - axios@1.13.5(debug@4.4.3): + axios@1.13.5(debug@4.4.3(supports-color@8.1.1)): dependencies: - follow-redirects: 1.16.0(debug@4.4.3) + follow-redirects: 1.16.0(debug@4.4.3(supports-color@8.1.1)) form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axios@1.17.0: + axios@1.18.1: dependencies: - follow-redirects: 1.16.0(debug@4.4.3) - form-data: 4.0.5 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@8.1.1)) + form-data: 4.0.6 https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 transitivePeerDependencies: @@ -5312,7 +5310,7 @@ snapshots: better-ajv-errors@2.0.3(ajv@8.20.0): dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@humanwhocodes/momoa': 2.0.4 ajv: 8.20.0 chalk: 4.1.2 @@ -5327,8 +5325,6 @@ snapshots: bn.js@4.12.3: {} - bn.js@5.2.2: {} - bn.js@5.2.3: {} bowser@2.14.1: {} @@ -5349,10 +5345,6 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.0: - dependencies: - balanced-match: 1.0.2 - brace-expansion@2.1.1: dependencies: balanced-match: 1.0.2 @@ -5555,7 +5547,7 @@ snapshots: cosmiconfig@8.3.6(typescript@6.0.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.2.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -5694,34 +5686,34 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - esbuild@0.28.0: + esbuild@0.28.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.0 - '@esbuild/android-arm': 0.28.0 - '@esbuild/android-arm64': 0.28.0 - '@esbuild/android-x64': 0.28.0 - '@esbuild/darwin-arm64': 0.28.0 - '@esbuild/darwin-x64': 0.28.0 - '@esbuild/freebsd-arm64': 0.28.0 - '@esbuild/freebsd-x64': 0.28.0 - '@esbuild/linux-arm': 0.28.0 - '@esbuild/linux-arm64': 0.28.0 - '@esbuild/linux-ia32': 0.28.0 - '@esbuild/linux-loong64': 0.28.0 - '@esbuild/linux-mips64el': 0.28.0 - '@esbuild/linux-ppc64': 0.28.0 - '@esbuild/linux-riscv64': 0.28.0 - '@esbuild/linux-s390x': 0.28.0 - '@esbuild/linux-x64': 0.28.0 - '@esbuild/netbsd-arm64': 0.28.0 - '@esbuild/netbsd-x64': 0.28.0 - '@esbuild/openbsd-arm64': 0.28.0 - '@esbuild/openbsd-x64': 0.28.0 - '@esbuild/openharmony-arm64': 0.28.0 - '@esbuild/sunos-x64': 0.28.0 - '@esbuild/win32-arm64': 0.28.0 - '@esbuild/win32-ia32': 0.28.0 - '@esbuild/win32-x64': 0.28.0 + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 escalade@3.2.0: {} @@ -5729,9 +5721,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.4.1): + eslint-config-prettier@10.1.8(eslint@10.6.0(supports-color@8.1.1)): dependencies: - eslint: 10.4.1 + eslint: 10.6.0(supports-color@8.1.1) eslint-scope@9.1.2: dependencies: @@ -5746,11 +5738,11 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.4.1: + eslint@10.6.0(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5 + '@eslint/config-array': 0.23.5(supports-color@8.1.1) '@eslint/config-helpers': 0.6.0 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.2 @@ -5789,8 +5781,8 @@ snapshots: espree@11.2.0: dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: @@ -5840,14 +5832,14 @@ snapshots: ethereumjs-util@7.1.5: dependencies: '@types/bn.js': 5.2.0 - bn.js: 5.2.2 + bn.js: 5.2.3 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 rlp: 2.2.7 - ethers-maths@4.3.0(ethers@6.16.0): + ethers-maths@4.3.0(ethers@6.17.0): dependencies: - ethers: 6.16.0 + ethers: 6.17.0 ethers@5.8.0: dependencies: @@ -5898,9 +5890,9 @@ snapshots: - bufferutil - utf-8-validate - ethers@6.16.0: + ethers@6.17.0: dependencies: - '@adraffy/ens-normalize': 1.10.1 + '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@types/node': 22.7.5 @@ -5930,19 +5922,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.0: {} - - fast-xml-builder@1.2.0: - dependencies: - path-expression-matcher: 1.5.0 - xml-naming: 0.1.0 - - fast-xml-parser@5.7.3: - dependencies: - '@nodable/entities': 2.1.1 - fast-xml-builder: 1.2.0 - path-expression-matcher: 1.5.0 - strnum: 2.3.0 + fast-uri@3.1.2: {} fdir@6.5.0(picomatch@4.0.4): optionalDependencies: @@ -5980,7 +5960,7 @@ snapshots: dependencies: imul: 1.0.1 - follow-redirects@1.16.0(debug@4.4.3): + follow-redirects@1.16.0(debug@4.4.3(supports-color@8.1.1)): optionalDependencies: debug: 4.4.3(supports-color@8.1.1) @@ -6003,6 +5983,14 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + fp-ts@1.19.3: {} fs-extra@10.1.0: @@ -6126,7 +6114,7 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - hardhat-deploy@0.11.45: + hardhat-deploy@0.11.45(supports-color@8.1.1): dependencies: '@ethersproject/abi': 5.8.0 '@ethersproject/abstract-signer': 5.8.0 @@ -6140,7 +6128,7 @@ snapshots: '@ethersproject/transactions': 5.8.0 '@ethersproject/wallet': 5.8.0 '@types/qs': 6.14.0 - axios: 0.21.4(debug@4.4.3) + axios: 0.21.4(debug@4.4.3(supports-color@8.1.1)) chalk: 4.1.2 chokidar: 3.6.0 debug: 4.4.3(supports-color@8.1.1) @@ -6157,12 +6145,12 @@ snapshots: - supports-color - utf-8-validate - hardhat-deploy@2.0.8(@rocketh/node@0.19.4(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76))(typescript@6.0.3)(zod@3.25.76))(hardhat@3.8.0)(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76)): + hardhat-deploy@2.0.8(@rocketh/node@0.19.4(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76))(typescript@6.0.3)(zod@3.25.76))(hardhat@3.9.0)(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76)): dependencies: '@nomicfoundation/hardhat-zod-utils': 3.0.5(zod@3.25.76) '@rocketh/node': 0.19.4(rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76))(typescript@6.0.3)(zod@3.25.76) commander: 14.0.3 - hardhat: 3.8.0 + hardhat: 3.9.0 named-logs: 0.4.1 named-logs-console: 0.5.1 rocketh: 0.19.4(typescript@6.0.3)(zod@3.25.76) @@ -6174,7 +6162,7 @@ snapshots: node-interval-tree: 2.1.2 solidity-comments: 0.0.2 - hardhat@2.28.6(ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3))(typescript@6.0.3): + hardhat@2.28.6(supports-color@8.1.1)(ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3))(typescript@6.0.3): dependencies: '@ethereumjs/util': 9.1.0 '@ethersproject/abi': 5.8.0 @@ -6207,7 +6195,7 @@ snapshots: raw-body: 2.5.3 resolve: 1.17.0 semver: 6.3.1 - solc: 0.8.26(debug@4.4.3) + solc: 0.8.26(debug@4.4.3(supports-color@8.1.1)) source-map-support: 0.5.21 stacktrace-parser: 0.1.11 tinyglobby: 0.2.15 @@ -6216,14 +6204,14 @@ snapshots: uuid: 8.3.2 ws: 8.21.0 optionalDependencies: - ts-node: 10.9.2(@types/node@25.9.2)(typescript@6.0.3) + ts-node: 10.9.2(@types/node@26.0.1)(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - hardhat@3.8.0: + hardhat@3.9.0: dependencies: '@nomicfoundation/edr': 0.12.0 '@nomicfoundation/hardhat-errors': 3.0.15 @@ -6239,7 +6227,7 @@ snapshots: micro-eth-signer: 0.14.0 p-map: 7.0.4 resolve.exports: 2.0.3 - semver: 7.8.2 + semver: 7.8.5 tsx: 4.22.4 ws: 8.21.0 zod: 3.25.76 @@ -6281,6 +6269,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + he@1.2.0: {} hmac-drbg@1.0.1: @@ -6406,6 +6398,8 @@ snapshots: js-cookie@2.2.1: {} + js-cookie@3.0.8: {} + js-sha3@0.8.0: {} js-tokens@4.0.0: {} @@ -6414,6 +6408,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -6426,6 +6424,8 @@ snapshots: json-stream-stringify@3.1.6: {} + json-stream-stringify@3.1.7: {} + json-stringify-safe@5.0.1: {} json5@2.2.3: {} @@ -6498,7 +6498,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.3.5: {} + lru-cache@11.5.1: {} lru_map@0.3.3: {} @@ -6554,7 +6554,7 @@ snapshots: minimatch@9.0.9: dependencies: - brace-expansion: 2.1.0 + brace-expansion: 2.1.1 minimist@1.2.8: {} @@ -6581,7 +6581,7 @@ snapshots: find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 4.1.1 + js-yaml: 4.2.0 log-symbols: 4.1.0 minimatch: 5.1.9 ms: 2.1.3 @@ -6698,7 +6698,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@6.0.3)(zod@3.25.76) + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 6.0.3 @@ -6728,7 +6728,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.1 registry-url: 6.0.1 - semver: 7.7.4 + semver: 7.8.5 parent-module@1.0.1: dependencies: @@ -6736,15 +6736,13 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 path-exists@4.0.0: {} - path-expression-matcher@1.5.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -6758,7 +6756,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.3.5 + lru-cache: 11.5.1 minipass: 7.1.3 path-type@4.0.0: {} @@ -6788,16 +6786,16 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-solidity@2.3.1(prettier@3.8.3): + prettier-plugin-solidity@2.3.1(prettier@3.9.1): dependencies: '@nomicfoundation/slang': 1.3.4 '@solidity-parser/parser': 0.20.2 - prettier: 3.8.3 + prettier: 3.9.1 semver: 7.7.4 prettier@2.8.8: {} - prettier@3.8.3: {} + prettier@3.9.1: {} process-nextick-args@2.0.1: {} @@ -6872,7 +6870,7 @@ snapshots: registry-auth-token@5.1.1: dependencies: - '@pnpm/npm-conf': 3.0.2 + '@pnpm/npm-conf': 3.0.3 registry-url@6.0.1: dependencies: @@ -6927,7 +6925,7 @@ snapshots: rlp@2.2.7: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.3 rocketh@0.19.4(typescript@6.0.3)(zod@3.25.76): dependencies: @@ -6964,7 +6962,7 @@ snapshots: semver@7.7.4: {} - semver@7.8.2: {} + semver@7.8.5: {} serialize-javascript@6.0.2: dependencies: @@ -7037,11 +7035,11 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - solc@0.8.26(debug@4.4.3): + solc@0.8.26(debug@4.4.3(supports-color@8.1.1)): dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.16.0(debug@4.4.3) + follow-redirects: 1.16.0(debug@4.4.3(supports-color@8.1.1)) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -7049,18 +7047,17 @@ snapshots: transitivePeerDependencies: - debug - solhint-plugin-prettier@0.1.0(prettier-plugin-solidity@2.3.1(prettier@3.8.3))(prettier@3.8.3): + solhint-plugin-prettier@0.1.0(prettier-plugin-solidity@2.3.1(prettier@3.9.1))(prettier@3.9.1): dependencies: - '@prettier/sync': 0.3.0(prettier@3.8.3) - prettier: 3.8.3 + '@prettier/sync': 0.3.0(prettier@3.9.1) + prettier: 3.9.1 prettier-linter-helpers: 1.0.1 - prettier-plugin-solidity: 2.3.1(prettier@3.8.3) + prettier-plugin-solidity: 2.3.1(prettier@3.9.1) - solhint@6.2.1(typescript@6.0.3): + solhint@6.2.3(typescript@6.0.3): dependencies: '@solidity-parser/parser': 0.20.2 ajv: 8.20.0 - ajv-errors: 3.0.0(ajv@8.20.0) ast-parents: 0.0.1 better-ajv-errors: 2.0.3(ajv@8.20.0) chalk: 4.1.2 @@ -7069,15 +7066,15 @@ snapshots: fast-diff: 1.3.0 glob: 13.0.6 ignore: 5.3.2 - js-yaml: 4.1.1 + js-yaml: 4.2.0 latest-version: 7.0.0 lodash: 4.18.1 pluralize: 8.0.0 - semver: 7.7.4 + semver: 7.8.5 table: 6.9.0 text-table: 0.2.0 optionalDependencies: - prettier: 3.8.3 + prettier: 3.9.1 transitivePeerDependencies: - typescript @@ -7132,10 +7129,10 @@ snapshots: solidity-comments-win32-ia32-msvc: 0.0.2 solidity-comments-win32-x64-msvc: 0.0.2 - solidity-docgen@0.6.0-beta.36(hardhat@3.8.0): + solidity-docgen@0.6.0-beta.36(hardhat@3.9.0): dependencies: handlebars: 4.7.9 - hardhat: 3.8.0 + hardhat: 3.9.0 solidity-ast: 0.4.61 source-map-support@0.5.21: @@ -7189,8 +7186,6 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.3.0: {} - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -7287,14 +7282,14 @@ snapshots: resolve: 1.22.11 ts-essentials: 1.0.4 - ts-node@10.9.2(@types/node@25.9.2)(typescript@6.0.3): + ts-node@10.9.2(@types/node@26.0.1)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.9.2 + '@types/node': 26.0.1 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -7315,7 +7310,7 @@ snapshots: tsx@4.22.4: dependencies: - esbuild: 0.28.0 + esbuild: 0.28.1 optionalDependencies: fsevents: 2.3.3 @@ -7362,7 +7357,7 @@ snapshots: undici-types@6.19.8: {} - undici-types@7.24.6: {} + undici-types@8.3.0: {} undici@5.29.0: dependencies: @@ -7370,7 +7365,7 @@ snapshots: undici@6.23.0: {} - undici@6.26.0: {} + undici@6.27.0: {} unfetch@4.2.0: {} @@ -7390,7 +7385,7 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - viem@2.52.2(typescript@6.0.3)(zod@3.25.76): + viem@2.53.1(typescript@6.0.3)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 @@ -7463,8 +7458,6 @@ snapshots: ws@8.21.0: {} - xml-naming@0.1.0: {} - y18n@5.0.8: {} yargs-parser@20.2.9: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..c7268478 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,32 @@ +overrides: + "@nomicfoundation/hardhat-verify": "3.0.20" + "@openzeppelin/contracts-upgradeable@>=4.3.0 <4.8.3": "^4.9.6" + "@openzeppelin/contracts@>=4.3.0 <4.8.3": "^4.9.6" + lodash: "^4.17.21" + ws: ">=8.20.1" + +peerDependencyRules: + ignoreMissing: + - "@nomicfoundation/hardhat-ethers" + - "@nomicfoundation/hardhat-verify" + - "@nomicfoundation/hardhat-network-helpers" + allowedVersions: + hardhat: "^3.0.0" + chai: "6.x" + ethers: "6.x" + "@typechain/ethers-v6": "0.x" + +allowedDeprecatedVersions: + glob: "*" + inflight: "*" + rimraf: "*" + "@types/minimatch": "*" + lodash.isequal: "*" + zksync-web3: "*" + +allowBuilds: + "@parcel/watcher": true + esbuild: true + hardhat-deploy: true + keccak: true + secp256k1: true diff --git a/test/LiquidityOrchestratorEpochEnd.test.ts b/test/LiquidityOrchestratorEpochEnd.test.ts new file mode 100644 index 00000000..53ce76e4 --- /dev/null +++ b/test/LiquidityOrchestratorEpochEnd.test.ts @@ -0,0 +1,206 @@ +/** + * LiquidityOrchestrator epoch-end gating after ProcessVaultOperations. + * + * Epoch-end must run only when PVO transitions to Idle — not when uint8 + * currentMinibatchIndex wraps to 0 mid-PVO. + */ +import type { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; +import { expect } from "chai"; +import { ethers } from "./helpers/hh"; + +import type { + LiquidityOrchestratorHarness, + MockERC4626Asset, + MockUnderlyingAsset, + MockExecutionAdapter, + OrionConfig, + OrionTransparentVault, + PriceAdapterRegistry, + TransparentVaultFactory, + UpgradeableBeacon, +} from "../typechain-types"; +import { deployUUPSProxy } from "./helpers/deployUpgradeable"; +import { resetNetwork } from "./helpers/resetNetwork"; + +/** ProcessVaultOperations = 4, Idle = 0 */ +const PHASE_IDLE = 0n; +const PHASE_PVO = 4n; + +describe("LiquidityOrchestrator epoch-end gating", function () { + let orionConfig: OrionConfig; + let harness: LiquidityOrchestratorHarness; + let transparentVaultFactory: TransparentVaultFactory; + let underlyingAsset: MockUnderlyingAsset; + + let owner: SignerWithAddress; + let manager: SignerWithAddress; + let strategist: SignerWithAddress; + + async function createVault(name: string, symbol: string): Promise { + const tx = await transparentVaultFactory + .connect(manager) + .createVault(strategist.address, name, symbol, 0, 0, 0, ethers.ZeroAddress); + const receipt = await tx.wait(); + const log = receipt?.logs.find((l) => { + try { + return transparentVaultFactory.interface.parseLog(l)?.name === "OrionVaultCreated"; + } catch { + return false; + } + }); + const vaultAddress = transparentVaultFactory.interface.parseLog(log!)?.args?.[0]; + return ethers.getContractAt("OrionTransparentVault", vaultAddress) as unknown as Promise; + } + + function emptyVaultState() { + return { + processRedeem: false, + totalAssetsForRedeem: 0n, + totalAssetsForDeposit: 0n, + finalTotalAssets: 0n, + managementFee: 0n, + performanceFee: 0n, + tokens: [] as string[], + shares: [] as bigint[], + }; + } + + before(async function () { + await resetNetwork(); + }); + + beforeEach(async function () { + [owner, manager, strategist] = await ethers.getSigners(); + + const MockUnderlyingAssetFactory = await ethers.getContractFactory("MockUnderlyingAsset"); + underlyingAsset = (await MockUnderlyingAssetFactory.deploy(6)) as unknown as MockUnderlyingAsset; + await underlyingAsset.waitForDeployment(); + + orionConfig = await deployUUPSProxy( + "OrionConfig", + [owner.address, await underlyingAsset.getAddress()], + owner, + ); + + const priceAdapterRegistry = await deployUUPSProxy( + "PriceAdapterRegistry", + [owner.address, await orionConfig.getAddress()], + owner, + ); + await orionConfig.setPriceAdapterRegistry(await priceAdapterRegistry.getAddress()); + + const SP1VerifierGatewayFactory = await ethers.getContractFactory("SP1VerifierGateway"); + const sp1VerifierGateway = await SP1VerifierGatewayFactory.deploy(owner.address); + await sp1VerifierGateway.waitForDeployment(); + const SP1VerifierFactory = await ethers.getContractFactory("SP1Verifier"); + const sp1Verifier = await SP1VerifierFactory.deploy(); + await sp1Verifier.waitForDeployment(); + await sp1VerifierGateway.addRoute(await sp1Verifier.getAddress()); + + const vKey = "0x007ccff4696ddd1d62fec2a106aa50309ba0fdee8fc2bcbc9c0b5ea68fe200f3"; + harness = await deployUUPSProxy( + "LiquidityOrchestratorHarness", + [owner.address, await orionConfig.getAddress(), owner.address, await sp1VerifierGateway.getAddress(), vKey], + owner, + ); + await orionConfig.setLiquidityOrchestrator(await harness.getAddress()); + + const VaultImplFactory = await ethers.getContractFactory("OrionTransparentVault"); + const vaultImpl = await VaultImplFactory.deploy(); + await vaultImpl.waitForDeployment(); + const BeaconFactory = await ethers.getContractFactory("OrionUpgradeableBeacon"); + const vaultBeacon = (await BeaconFactory.deploy( + await vaultImpl.getAddress(), + owner.address, + )) as unknown as UpgradeableBeacon; + await vaultBeacon.waitForDeployment(); + + transparentVaultFactory = await deployUUPSProxy( + "TransparentVaultFactory", + [owner.address, await orionConfig.getAddress(), await vaultBeacon.getAddress()], + owner, + ); + await orionConfig.setVaultFactory(await transparentVaultFactory.getAddress()); + await orionConfig.addWhitelistedManager(manager.address); + + const MockPriceAdapterFactory = await ethers.getContractFactory("MockPriceAdapter"); + const priceAdapter = await MockPriceAdapterFactory.deploy(); + await priceAdapter.waitForDeployment(); + + const MockExecutionAdapterFactory = await ethers.getContractFactory("MockExecutionAdapter"); + const executionAdapter = (await MockExecutionAdapterFactory.deploy()) as unknown as MockExecutionAdapter; + await executionAdapter.waitForDeployment(); + + const MockERC4626AssetFactory = await ethers.getContractFactory("MockERC4626Asset"); + const mockVaultAsset = (await MockERC4626AssetFactory.deploy( + await underlyingAsset.getAddress(), + "Mock", + "M", + )) as unknown as MockERC4626Asset; + await mockVaultAsset.waitForDeployment(); + + await orionConfig.addWhitelistedAsset( + await mockVaultAsset.getAddress(), + await priceAdapter.getAddress(), + await executionAdapter.getAddress(), + ); + }); + + it("normal PVO completion transitions to Idle and emits EpochEnd once", async function () { + const vault = await createVault("V1", "V1"); + const vaultAddr = await vault.getAddress(); + + await harness.h_setMinibatchSize(1); + await harness.h_setVaultsEpoch([vaultAddr]); + await harness.h_setCurrentMinibatchIndex(0); + await harness.h_setPhase(PHASE_PVO); + + const epochBefore = await harness.epochCounter(); + const states = [emptyVaultState()]; + + await expect(harness.h_processPvoMinibatchWithEpochEnd(states, 0n)) + .to.emit(harness, "EpochEnd") + .withArgs(epochBefore, 0n); + + expect(await harness.currentPhase()).to.equal(PHASE_IDLE); + expect(await harness.currentMinibatchIndex()).to.equal(0n); + expect(await harness.epochCounter()).to.equal(epochBefore + 1n); + }); + + it("intermediate PVO step stays in ProcessVaultOperations without EpochEnd", async function () { + const vault1 = await createVault("V1", "V1"); + const vault2 = await createVault("V2", "V2"); + + await harness.h_setMinibatchSize(1); + await harness.h_setVaultsEpoch([await vault1.getAddress(), await vault2.getAddress()]); + await harness.h_setCurrentMinibatchIndex(0); + await harness.h_setPhase(PHASE_PVO); + + const epochBefore = await harness.epochCounter(); + // vaults[] aligned with vaultsEpoch indices; only index 0 is processed this step + const states = [emptyVaultState(), emptyVaultState()]; + + await expect(harness.h_processPvoMinibatchWithEpochEnd(states, 0n)).to.not.emit(harness, "EpochEnd"); + + expect(await harness.currentPhase()).to.equal(PHASE_PVO); + expect(await harness.currentMinibatchIndex()).to.equal(1n); + expect(await harness.epochCounter()).to.equal(epochBefore); + }); + + it("uint8 currentMinibatchIndex wrap does not trigger EpochEnd while still in PVO", async function () { + // Full 257-vault PVO exceeds the Hardhat gas cap; this mirrors the exact completion predicate + // from `_processMinibatchVaultsOperations` (i0/i1 vs length, uint8 ++wrap) then the Idle gate. + await harness.h_setMinibatchSize(1); + await harness.h_setCurrentMinibatchIndex(255); + await harness.h_setPhase(PHASE_PVO); + + const epochBefore = await harness.epochCounter(); + + await expect(harness.h_advancePvoIndexLikeProcessMinibatch(257, 0n)).to.not.emit(harness, "EpochEnd"); + + // Index wraps 255 → 0; phase must remain PVO (old gate would have fired EpochEnd here) + expect(await harness.currentPhase()).to.equal(PHASE_PVO); + expect(await harness.currentMinibatchIndex()).to.equal(0n); + expect(await harness.epochCounter()).to.equal(epochBefore); + }); +}); diff --git a/test/crossAsset/ERC4626ExecutionAdapter.atomic.test.ts b/test/crossAsset/ERC4626ExecutionAdapter.atomic.test.ts index c8b4f43b..2ce2c386 100644 --- a/test/crossAsset/ERC4626ExecutionAdapter.atomic.test.ts +++ b/test/crossAsset/ERC4626ExecutionAdapter.atomic.test.ts @@ -415,7 +415,6 @@ describe("ERC4626ExecutionAdapter - Atomic Guarantees (Unit)", function () { const strictConfigFactory = await ethers.getContractFactory("MockOrionConfig"); const strictConfig = (await strictConfigFactory.deploy(await usdc.getAddress())) as unknown as MockOrionConfig; await strictConfig.setLiquidityOrchestrator(await liquidityOrchestrator.getAddress()); - await strictConfig.setReturnZeroForUnsetTokens(true); await strictConfig.setTokenDecimals(await vault.getAddress(), WETH_DECIMALS); // vault shares only; WETH not set => 0 const adapterFactory = await ethers.getContractFactory("ERC4626ExecutionAdapter"); diff --git a/test/crossAsset/ERC4626ExecutionAdapter.test.ts b/test/crossAsset/ERC4626ExecutionAdapter.test.ts index 3f894918..a1c6f371 100644 --- a/test/crossAsset/ERC4626ExecutionAdapter.test.ts +++ b/test/crossAsset/ERC4626ExecutionAdapter.test.ts @@ -143,6 +143,8 @@ describe("ERC4626ExecutionAdapter", function () { const mockConfig = await ethers.getContractAt("MockOrionConfig", await orionConfig.getAddress()); await mockConfig.setPriceAdapterRegistry(await priceAdapterRegistry.getAddress()); await mockConfig.setLiquidityOrchestrator(await liquidityOrchestrator.getAddress()); + await mockConfig.setTokenDecimals(MAINNET.WETH, WETH_DECIMALS); + await mockConfig.setTokenDecimals(MAINNET.MORPHO_WETH, WETH_DECIMALS); // Deploy vault price adapter const VaultPriceAdapterFactory = await ethers.getContractFactory("MockERC4626PriceAdapter"); @@ -393,8 +395,7 @@ describe("ERC4626ExecutionAdapter", function () { const mockVault = await MockERC4626Factory.deploy(MAINNET.WBTC, "Mock WBTC Vault", "mWBTC"); await mockVault.waitForDeployment(); - // MockOrionConfig returns hardcoded 18 decimals for all tokens - // Should fail validation because WBTC has no swap executor registered in LO + // Should fail validation because WBTC underlying is not registered in config (decimals mismatch) await expect(vaultAdapter.validateExecutionAdapter(await mockVault.getAddress())).to.be.revertedWithCustomError( vaultAdapter, "InvalidAdapter", @@ -1203,6 +1204,9 @@ describe("ERC4626ExecutionAdapter", function () { const emptyVault = await MockERC4626Factory.deploy(MAINNET.WETH, "Empty Vault", "eVAULT"); await emptyVault.waitForDeployment(); + const mockConfig = await ethers.getContractAt("MockOrionConfig", await orionConfig.getAddress()); + await mockConfig.setTokenDecimals(await emptyVault.getAddress(), WETH_DECIMALS); + // Register in LO await liquidityOrchestrator.setExecutionAdapter(await emptyVault.getAddress(), await vaultAdapter.getAddress()); diff --git a/test/crossAsset/ERC4626PriceAdapter.test.ts b/test/crossAsset/ERC4626PriceAdapter.test.ts index a446e55a..23e8055c 100644 --- a/test/crossAsset/ERC4626PriceAdapter.test.ts +++ b/test/crossAsset/ERC4626PriceAdapter.test.ts @@ -79,6 +79,8 @@ describe("ERC4626PriceAdapter - Coverage Tests", function () { await orionConfig.setPriceAdapterRegistry(await priceRegistry.getAddress()); await orionConfig.setWhitelisted(MAINNET.WETH, true); await orionConfig.setWhitelisted(MAINNET.WBTC, true); + await orionConfig.setTokenDecimals(MAINNET.WETH, 18); + await orionConfig.setTokenDecimals(MAINNET.MORPHO_WETH, 18); // Deploy ERC4626 price adapter const ERC4626PriceAdapterFactory = await ethers.getContractFactory("ERC4626PriceAdapter"); @@ -155,7 +157,7 @@ describe("ERC4626PriceAdapter - Coverage Tests", function () { it("Should calculate correct composed price for Morpho WETH vault", async function () { const [vaultPrice, priceDecimals] = await vaultPriceAdapter.getPriceData(MAINNET.MORPHO_WETH); - expect(priceDecimals).to.equal(28); // PRICE_DECIMALS (10) + getTokenDecimals(WETH) (18) + expect(priceDecimals).to.equal(28); // PRICE_DECIMALS (10) + tokenDecimals(WETH) (18) const precisionAmount = 10n ** 28n; // PRICE_DECIMALS (10) + vault decimals (18) const wethForPrecisionShares = await morphoWETH.convertToAssets(precisionAmount); diff --git a/test/crossAsset/MorphoBlueSupplyVault.test.ts b/test/crossAsset/MorphoBlueSupplyVault.test.ts index b752acfc..42c08e83 100644 --- a/test/crossAsset/MorphoBlueSupplyVault.test.ts +++ b/test/crossAsset/MorphoBlueSupplyVault.test.ts @@ -703,10 +703,11 @@ describe("MorphoBlueSupplyVault", function () { await liquidityOrchestrator.setExecutionAdapter(await usdcVault.getAddress(), await vaultAdapter.getAddress()); // Token decimals for MockOrionConfig validation + await orionConfig.setTokenDecimals(MAINNET.WETH, WETH_DECIMALS); + await orionConfig.setTokenDecimals(await wethVault.getAddress(), WETH_DECIMALS); // USDC vault: shares have 6 decimals (inherited from USDC) await orionConfig.setTokenDecimals(await usdcVault.getAddress(), USDC_DECIMALS); await orionConfig.setTokenDecimals(MAINNET.USDC, USDC_DECIMALS); - // WETH vault: shares have 18 decimals (default, no explicit set needed) // Impersonate LO as caller for adapter interactions const loAddress = await liquidityOrchestrator.getAddress(); @@ -742,7 +743,7 @@ describe("MorphoBlueSupplyVault", function () { await wethVault.connect(seedDepositor).deposit(ethers.parseUnits("0.1", 18), seedDepositor.address); const [price, decimals] = await erc4626PriceAdapter.getPriceData(await wethVault.getAddress()); - // priceDecimals = PRICE_DECIMALS(10) + getTokenDecimals(WETH)(18) = 28 + // priceDecimals = PRICE_DECIMALS(10) + tokenDecimals(WETH)(18) = 28 expect(decimals).to.equal(28); expect(price).to.be.gt(0n);