diff --git a/.gitignore b/.gitignore index 48cb62f1..a23d44a0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ artifacts #Generated files RolloverBatch.json RedeemBatch.json + +.claude +CLAUDE.md \ No newline at end of file diff --git a/spot-contracts/package.json b/spot-contracts/package.json index 54d85765..8cd429e6 100644 --- a/spot-contracts/package.json +++ b/spot-contracts/package.json @@ -26,7 +26,7 @@ "@ethersproject/providers": "^5.6.8", "@nomicfoundation/hardhat-chai-matchers": "latest", "@nomicfoundation/hardhat-ethers": "^3.0.0", - "@nomicfoundation/hardhat-verify": "latest", + "@nomicfoundation/hardhat-verify": "^2.0.0", "@nomiclabs/hardhat-waffle": "^2.0.6", "@openzeppelin/hardhat-upgrades": "^3.0.4", "@openzeppelin/upgrades-core": "latest", diff --git a/spot-vaults/contracts/DRBalancerVault.sol b/spot-vaults/contracts/DRBalancerVault.sol new file mode 100644 index 00000000..9608ba40 --- /dev/null +++ b/spot-vaults/contracts/DRBalancerVault.sol @@ -0,0 +1,607 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.24; + +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import { PausableUpgradeable } from "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; +import { ReentrancyGuardUpgradeable } from "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; +import { MathUpgradeable } from "@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol"; +import { SafeERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol"; +import { ERC20BurnableUpgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; +import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; +import { IERC20MetadataUpgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; + +import { IPerpetualTranche } from "@ampleforthorg/spot-contracts/contracts/_interfaces/IPerpetualTranche.sol"; +import { IRolloverVault } from "@ampleforthorg/spot-contracts/contracts/_interfaces/IRolloverVault.sol"; +import { ERC20Helpers } from "@ampleforthorg/spot-contracts/contracts/_utils/ERC20Helpers.sol"; +import { Range } from "./_interfaces/types/CommonTypes.sol"; +import { UnauthorizedCall, InvalidPerc, InvalidRange } from "./_interfaces/errors/CommonErrors.sol"; +import { InvalidDRBound, LastRebalanceTooRecent, SlippageTooHigh } from "./_interfaces/errors/DRBalancerErrors.sol"; + +/** + * @title DRBalancerVault + * + * @notice A vault that holds underlying (e.g., AMPL) and perp (SPOT) tokens as liquidity, + * and auto-rebalances to help maintain the SYSTEM's target deviation ratio + * via IRolloverVault swaps. + * + * The system's deviation ratio (DR) is defined by FeePolicy. + * When DR < 1 (under-subscribed): perpTVL is higher than it needs to be + * When DR > 1 (over-subscribed): perpTVL is lower than it needs to be + * + * This vault monitors the system DR and: + * - When DR is below equilibrium: redeems perps to decrease perpTVL + * - When DR is above equilibrium: mints perps to increase perpTVL + * + * LPs deposit underlying tokens and receive vault notes. They can redeem their notes + * for a proportional share of the vault's underlying and perp holdings. + */ +contract DRBalancerVault is + ERC20BurnableUpgradeable, + OwnableUpgradeable, + PausableUpgradeable, + ReentrancyGuardUpgradeable +{ + //------------------------------------------------------------------------- + // Libraries + + using SafeERC20Upgradeable for IERC20Upgradeable; + using SafeERC20Upgradeable for IPerpetualTranche; + using ERC20Helpers for IERC20Upgradeable; + using MathUpgradeable for uint256; + + //------------------------------------------------------------------------- + // Constants + + uint256 public constant DECIMALS = 18; + uint256 public constant ONE = (10 ** DECIMALS); + + /// @dev DR values use 8 decimals to match FeePolicy. + uint256 public constant DR_DECIMALS = 8; + uint256 public constant DR_ONE = (10 ** DR_DECIMALS); + + //------------------------------------------------------------------------- + // Storage + + /// @notice The underlying rebasing token (e.g., AMPL). + IERC20Upgradeable public underlying; + + /// @notice The perpetual tranche token (SPOT). + IPerpetualTranche public perp; + + /// @notice The rollover vault used for underlying<->perp swaps. + IRolloverVault public rolloverVault; + + /// @notice The fixed-point amount of underlying tokens equivalent to 1.0. + uint256 public underlyingUnitAmt; + + /// @notice The fixed-point amount of perp tokens equivalent to 1.0. + uint256 public perpUnitAmt; + + /// @notice Reference to the address that has the ability to pause/unpause operations. + address public keeper; + + /// @notice The target system deviation ratio (typically 1.0 = DR_ONE, using 8 decimals). + uint256 public targetDR; + + /// @notice The equilibrium DR range where no rebalancing occurs (using 8 decimals). + /// @dev When system DR is within this range, the system is considered balanced. + Range public equilibriumDR; + + /// @notice The lag factor for underlying->perp swaps (when DR is low). + uint256 public lagFactorUnderlyingToPerp; + + /// @notice The lag factor for perp->underlying swaps (when DR is high). + uint256 public lagFactorPerpToUnderlying; + + /// @notice The min/max percentage of TVL for underlying->perp swaps. + Range public rebalancePercLimitsUnderlyingToPerp; + + /// @notice The min/max percentage of TVL for perp->underlying swaps. + Range public rebalancePercLimitsPerpToUnderlying; + + /// @notice Minimum seconds between rebalances. + uint256 public rebalanceFreqSec; + + /// @notice Timestamp of the last rebalance. + uint256 public lastRebalanceTimestampSec; + + /// @notice Maximum swap fee percentage allowed during rebalance (slippage protection). + uint256 public maxSwapFeePerc; + + //-------------------------------------------------------------------------- + // Events + + /// @notice Emitted when a user deposits underlying tokens. + event Deposit( + address indexed depositor, + uint256 underlyingAmtIn, + uint256 notesMinted + ); + + /// @notice Emitted when a user redeems vault notes. + event Redeem( + address indexed redeemer, + uint256 notesBurnt, + uint256 underlyingAmtOut, + uint256 perpAmtOut + ); + + /// @notice Emitted when the vault rebalances to adjust system DR. + /// @param drBefore The system deviation ratio before rebalance. + /// @param drAfter The system deviation ratio after rebalance. + /// @param underlyingAmt The amount of underlying involved in the swap. + /// @param isUnderlyingIntoPerp True if underlying was swapped for perps, false if perps were swapped for underlying. + event Rebalance( + uint256 drBefore, + uint256 drAfter, + uint256 underlyingAmt, + bool isUnderlyingIntoPerp + ); + + //-------------------------------------------------------------------------- + // Modifiers + + /// @dev Throws if called by any account other than the keeper. + modifier onlyKeeper() { + if (msg.sender != keeper) { + revert UnauthorizedCall(); + } + _; + } + + //----------------------------------------------------------------------------- + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @notice Contract initializer. + /// @param name ERC-20 Name of the vault LP token. + /// @param symbol ERC-20 Symbol of the vault LP token. + /// @param underlying_ Address of the underlying token. + /// @param perp_ Address of the perp token. + /// @param rolloverVault_ Address of the rollover vault for swaps. + function init( + string memory name, + string memory symbol, + IERC20Upgradeable underlying_, + IPerpetualTranche perp_, + IRolloverVault rolloverVault_ + ) public initializer { + __ERC20_init(name, symbol); + __ERC20Burnable_init(); + __Ownable_init(); + __Pausable_init(); + __ReentrancyGuard_init(); + + underlying = underlying_; + perp = perp_; + rolloverVault = rolloverVault_; + + underlyingUnitAmt = + 10 ** IERC20MetadataUpgradeable(address(underlying_)).decimals(); + perpUnitAmt = 10 ** IERC20MetadataUpgradeable(address(perp_)).decimals(); + + updateKeeper(owner()); + + // Default configuration + // Target DR is 1.0 (system in balance) with 8 decimals + targetDR = DR_ONE; + // Equilibrium zone: 95% - 105% (matches FeePolicy defaults) with 8 decimals + equilibriumDR = Range({ + lower: (DR_ONE * 95) / 100, + upper: (DR_ONE * 105) / 100 + }); + // Default lag factors + lagFactorUnderlyingToPerp = 3; + lagFactorPerpToUnderlying = 3; + // Min/max percentage of this vault's TVL per rebalance: 10% - 50% + rebalancePercLimitsUnderlyingToPerp = Range({ lower: ONE / 10, upper: ONE / 2 }); + rebalancePercLimitsPerpToUnderlying = Range({ lower: ONE / 10, upper: ONE / 2 }); + rebalanceFreqSec = 86400; // 1 day + maxSwapFeePerc = ONE / 100; // 1% default max fee + } + + //-------------------------------------------------------------------------- + // Owner only methods + + /// @notice Updates the reference to the keeper. + /// @param keeper_ The address of the new keeper. + function updateKeeper(address keeper_) public onlyOwner { + keeper = keeper_; + } + + /// @notice Updates the target system deviation ratio. + /// @param targetDR_ The new target DR as a fixed point number with 8 decimals. + function updateTargetDR(uint256 targetDR_) external onlyOwner { + targetDR = targetDR_; + } + + /// @notice Updates the equilibrium DR range. + /// @param equilibriumDR_ The new equilibrium DR range. + function updateEquilibriumDR(Range memory equilibriumDR_) external onlyOwner { + if (equilibriumDR_.lower > equilibriumDR_.upper) { + revert InvalidDRBound(); + } + equilibriumDR = equilibriumDR_; + } + + /// @notice Updates the rebalance configuration for underlying->perp swaps (when DR is low). + /// @param lagFactor_ The new lag factor. + /// @param rebalancePercLimits_ The new min/max rebalance percentage limits. + function updateRebalanceConfigUnderlyingToPerp( + uint256 lagFactor_, + Range memory rebalancePercLimits_ + ) external onlyOwner { + if (rebalancePercLimits_.lower > rebalancePercLimits_.upper) { + revert InvalidRange(); + } + lagFactorUnderlyingToPerp = lagFactor_; + rebalancePercLimitsUnderlyingToPerp = rebalancePercLimits_; + } + + /// @notice Updates the rebalance configuration for perp->underlying swaps (when DR is high). + /// @param lagFactor_ The new lag factor. + /// @param rebalancePercLimits_ The new min/max rebalance percentage limits. + function updateRebalanceConfigPerpToUnderlying( + uint256 lagFactor_, + Range memory rebalancePercLimits_ + ) external onlyOwner { + if (rebalancePercLimits_.lower > rebalancePercLimits_.upper) { + revert InvalidRange(); + } + lagFactorPerpToUnderlying = lagFactor_; + rebalancePercLimitsPerpToUnderlying = rebalancePercLimits_; + } + + /// @notice Updates the rebalance frequency. + /// @param rebalanceFreqSec_ The new rebalance frequency in seconds. + function updateRebalanceFreqSec(uint256 rebalanceFreqSec_) external onlyOwner { + rebalanceFreqSec = rebalanceFreqSec_; + } + + /// @notice Updates the maximum swap fee percentage allowed during rebalance. + /// @param maxSwapFeePerc_ The new maximum swap fee percentage. + function updateMaxSwapFeePerc(uint256 maxSwapFeePerc_) external onlyOwner { + if (maxSwapFeePerc_ > ONE) { + revert InvalidPerc(); + } + maxSwapFeePerc = maxSwapFeePerc_; + } + + //-------------------------------------------------------------------------- + // Keeper only methods + + /// @notice Pauses deposits, withdrawals and rebalances. + function pause() external onlyKeeper { + _pause(); + } + + /// @notice Unpauses deposits, withdrawals and rebalances. + function unpause() external onlyKeeper { + _unpause(); + } + + //-------------------------------------------------------------------------- + // External & Public write methods + + /// @notice Deposits underlying tokens and mints vault notes (LP tokens). + /// @param underlyingAmtIn The amount of underlying tokens to deposit. + /// @return notesMinted The amount of vault notes minted. + function deposit( + uint256 underlyingAmtIn + ) external nonReentrant whenNotPaused returns (uint256 notesMinted) { + if (underlyingAmtIn <= 0) { + return 0; + } + + notesMinted = computeMintAmt(underlyingAmtIn); + if (notesMinted <= 0) { + return 0; + } + + // Transfer underlying tokens from the user + underlying.safeTransferFrom(msg.sender, address(this), underlyingAmtIn); + + // Mint vault notes to the user + _mint(msg.sender, notesMinted); + + emit Deposit(msg.sender, underlyingAmtIn, notesMinted); + } + + /// @notice Burns vault notes and returns proportional underlying and perp tokens. + /// @param notesAmt The amount of vault notes to burn. + /// @return underlyingAmtOut The amount of underlying tokens returned. + /// @return perpAmtOut The amount of perp tokens returned. + function redeem( + uint256 notesAmt + ) + external + nonReentrant + whenNotPaused + returns (uint256 underlyingAmtOut, uint256 perpAmtOut) + { + (underlyingAmtOut, perpAmtOut) = computeRedemptionAmts(notesAmt); + if (underlyingAmtOut <= 0 && perpAmtOut <= 0) { + return (0, 0); + } + + // Burn vault notes + _burn(msg.sender, notesAmt); + + // Return funds + if (underlyingAmtOut > 0) { + underlying.safeTransfer(msg.sender, underlyingAmtOut); + } + if (perpAmtOut > 0) { + perp.safeTransfer(msg.sender, perpAmtOut); + } + + emit Redeem(msg.sender, notesAmt, underlyingAmtOut, perpAmtOut); + } + + /// @notice Rebalances to help maintain the system's target deviation ratio. + /// @dev Can only be called after rebalance frequency period has elapsed. + /// Swaps underlying<->perps via the rollover vault to push system DR toward equilibrium. + function rebalance() external nonReentrant whenNotPaused { + // Enforce rebalance frequency + if (block.timestamp < lastRebalanceTimestampSec + rebalanceFreqSec) { + revert LastRebalanceTooRecent(); + } + + // Query perp state once before any swaps + uint256 perpTVL = perp.getTVL(); + uint256 perpTotalSupply = perp.totalSupply(); + + uint256 drBefore = getSystemDeviationRatio(); + ( + uint256 underlyingValSwapped, + bool isUnderlyingIntoPerp + ) = _computeRebalanceAmount(drBefore, perpTVL, perpTotalSupply); + + if (underlyingValSwapped <= 0) { + lastRebalanceTimestampSec = block.timestamp; + emit Rebalance(drBefore, drBefore, 0, isUnderlyingIntoPerp); + return; + } + + uint256 underlyingValOut; + if (isUnderlyingIntoPerp) { + // DR too high: perpTVL is too low, mint perps to increase it + underlying.checkAndApproveMax(address(rolloverVault), underlyingValSwapped); + uint256 perpAmtOut = rolloverVault.swapUnderlyingForPerps( + underlyingValSwapped + ); + // Convert perp output to underlying value using pre-swap price + underlyingValOut = perpAmtOut.mulDiv(perpTVL, perpTotalSupply); + } else { + // DR too low: perpTVL is too high, redeem perps to decrease it + // Convert underlying value to perp amount using pre-swap price + uint256 perpAmtIn = underlyingValSwapped.mulDiv(perpTotalSupply, perpTVL); + IERC20Upgradeable(address(perp)).checkAndApproveMax( + address(rolloverVault), + perpAmtIn + ); + underlyingValOut = rolloverVault.swapPerpsForUnderlying(perpAmtIn); + } + + // Check slippage: compare underlying value out to underlying value in + uint256 feePerc = ONE - underlyingValOut.mulDiv(ONE, underlyingValSwapped); + if (feePerc > maxSwapFeePerc) { + revert SlippageTooHigh(); + } + + uint256 drAfter = getSystemDeviationRatio(); + lastRebalanceTimestampSec = block.timestamp; + + emit Rebalance(drBefore, drAfter, underlyingValSwapped, isUnderlyingIntoPerp); + } + + //----------------------------------------------------------------------------- + // Public methods + + /// @notice Computes the amount of vault notes minted for a given underlying deposit. + /// @param underlyingAmtIn The amount of underlying tokens to deposit. + /// @return notesMinted The amount of vault notes that would be minted. + function computeMintAmt( + uint256 underlyingAmtIn + ) public returns (uint256 notesMinted) { + uint256 totalSupply_ = totalSupply(); + + if (underlyingAmtIn <= 0) { + return 0; + } + + notesMinted = (totalSupply_ > 0) + ? totalSupply_.mulDiv(underlyingAmtIn, getTVL()) + : underlyingAmtIn.mulDiv(ONE, underlyingUnitAmt); + } + + /// @notice Computes the amounts of underlying and perp tokens returned for burning vault notes. + /// @param notesAmt The amount of vault notes to burn. + /// @return underlyingAmtOut The amount of underlying tokens returned. + /// @return perpAmtOut The amount of perp tokens returned. + function computeRedemptionAmts( + uint256 notesAmt + ) public view returns (uint256 underlyingAmtOut, uint256 perpAmtOut) { + if (notesAmt <= 0) { + return (0, 0); + } + + uint256 totalSupply_ = totalSupply(); + if (totalSupply_ <= 0) { + return (0, 0); + } + + underlyingAmtOut = underlying.balanceOf(address(this)).mulDiv( + notesAmt, + totalSupply_ + ); + perpAmtOut = perp.balanceOf(address(this)).mulDiv(notesAmt, totalSupply_); + } + + /// @notice Returns this vault's total value locked in underlying denomination. + /// @return tvl The TVL of this vault (underlying + perp value). + function getTVL() public returns (uint256 tvl) { + uint256 underlyingBal = underlying.balanceOf(address(this)); + uint256 perpBal = perp.balanceOf(address(this)); + + // Perp value = perpBalance * perpTVL / perpTotalSupply + uint256 perpValue = 0; + uint256 perpTotalSupply = perp.totalSupply(); + if (perpTotalSupply > 0 && perpBal > 0) { + perpValue = perpBal.mulDiv(perp.getTVL(), perpTotalSupply); + } + + tvl = underlyingBal + perpValue; + } + + /// @notice Returns the current SYSTEM deviation ratio from the rollover vault. + /// @dev DR = vaultTVL / perpTVL / targetSystemRatio (as defined in FeePolicy) + /// @return The system deviation ratio as a fixed point number with 8 decimals. + function getSystemDeviationRatio() public returns (uint256) { + return rolloverVault.deviationRatio(); + } + + /// @notice Computes the amount of underlying to swap for rebalancing the system DR. + /// @return underlyingAmt The amount of underlying involved in the swap. + /// @return isUnderlyingIntoPerp True if should swap underlying for perps, false otherwise. + function computeRebalanceAmount() + public + returns (uint256 underlyingAmt, bool isUnderlyingIntoPerp) + { + return + _computeRebalanceAmount( + getSystemDeviationRatio(), + perp.getTVL(), + perp.totalSupply() + ); + } + + /// @dev Computes rebalance amount based on perpTVL. + /// + /// System context: + /// DR = rolloverVaultTVL / perpTVL / targetSystemRatio + /// When DR < 1: perpTVL is too high, redeem perps to decrease it + /// When DR > 1: perpTVL is too low, mint perps to increase it + /// + /// Formula: + /// Since rolloverVaultTVL doesn't change during flash mint/redeem: + /// requiredChange = perpTVL × |dr - targetDR| + /// + /// Liquidity limits are based on swap direction: + /// - DR < 1 (redeem perps): limit by perpValue held by this vault + /// - DR > 1 (mint perps): limit by underlying balance held by this vault + /// + /// Example 1: DR = 0.80 (too low, redeem perps) + /// Given: perpTVL = 10,000, perpValue = 2,000 (this vault's perp holdings) + /// - drDelta = 1.0 - 0.80 = 0.20 + /// - requiredChange = 10,000 × 0.20 = 2,000 + /// - adjustedChange = 2,000 / 3 (lagFactor) = 666 + /// - availableLiquidity = 2,000 (perpValue) + /// - minAmt = 2,000 × 10% = 200, maxAmt = 2,000 × 50% = 1,000 + /// - 666 is within [200, 1,000], so underlyingAmt = 666 + /// - Result: Redeem 666 AMPL worth of perps + /// + /// Example 2: DR = 1.20 (too high, mint perps) + /// Given: perpTVL = 10,000, underlyingBalance = 5,000 + /// - drDelta = 1.20 - 1.0 = 0.20 + /// - requiredChange = 10,000 × 0.20 = 2,000 + /// - adjustedChange = 2,000 / 3 = 666 + /// - availableLiquidity = 5,000 (underlyingBalance) + /// - minAmt = 500, maxAmt = 2,500 + /// - 666 is within [500, 2,500], so underlyingAmt = 666 + /// - Result: Swap 666 AMPL for perps + /// + /// Example 3: Large perp holdings with overshoot prevention + /// Given: perpTVL = 10,000, perpValue = 50,000, DR = 0.80 + /// - requiredChange = 2,000, adjustedChange = 2,000 / 3 = 666 + /// - availableLiquidity = 50,000 (perpValue) + /// - minAmt = 5,000, maxAmt = 25,000 + /// - 666 < 5,000, so underlyingAmt = 5,000 (clipped to min) + /// - But 5,000 > requiredChange (2,000), so underlyingAmt = 2,000 (overshoot prevention) + /// - Result: Redeem 2,000 AMPL worth of perps + /// + function _computeRebalanceAmount( + uint256 dr, + uint256 perpTVL, + uint256 perpTotalSupply + ) private view returns (uint256 underlyingAmt, bool isUnderlyingIntoPerp) { + // Skip if in equilibrium zone + if (dr >= equilibriumDR.lower && dr <= equilibriumDR.upper) { + return (0, true); + } + + if (perpTVL <= 0) { + return (0, true); + } + + // Determine direction, magnitude, and available liquidity for the swap + // If DR < target: perpTVL is too high, redeem perps to decrease it + // If DR > target: perpTVL is too low, mint perps to increase it + uint256 drDelta; + uint256 lagFactor_; + Range memory percLimits; + uint256 availableLiquidity; + + if (dr < targetDR) { + isUnderlyingIntoPerp = false; + drDelta = targetDR - dr; + lagFactor_ = lagFactorPerpToUnderlying; + percLimits = rebalancePercLimitsPerpToUnderlying; + // Swapping perps for underlying: limit by perp balance (in underlying terms) + availableLiquidity = perp.balanceOf(address(this)).mulDiv( + perpTVL, + perpTotalSupply + ); + } else { + isUnderlyingIntoPerp = true; + drDelta = dr - targetDR; + lagFactor_ = lagFactorUnderlyingToPerp; + percLimits = rebalancePercLimitsUnderlyingToPerp; + // Swapping underlying for perps: limit by underlying balance + availableLiquidity = underlying.balanceOf(address(this)); + } + + // Compute required change: + // Since rolloverVaultTVL doesn't change during flash mint/redeem, + // only perpTVL changes, so: requiredChange = perpTVL × |dr - targetDR| + uint256 requiredChange = perpTVL.mulDiv(drDelta, DR_ONE); + + // Apply lag factor (gradual adjustment) + uint256 adjustedChange = requiredChange / lagFactor_; + + // Clip by min/max percentage of this vault's available liquidity for the swap direction + uint256 minAmt = availableLiquidity.mulDiv(percLimits.lower, ONE); + uint256 maxAmt = availableLiquidity.mulDiv(percLimits.upper, ONE); + + if (adjustedChange < minAmt) { + underlyingAmt = minAmt; + } else if (adjustedChange > maxAmt) { + underlyingAmt = maxAmt; + } else { + underlyingAmt = adjustedChange; + } + + // Prevent overshoot: don't swap more than required + if (underlyingAmt > requiredChange) { + underlyingAmt = requiredChange; + } + } + + //----------------------------------------------------------------------------- + // External view methods + + /// @notice Returns the underlying token balance held by this vault. + /// @return The underlying token balance. + function underlyingBalance() external view returns (uint256) { + return underlying.balanceOf(address(this)); + } + + /// @notice Returns the perp token balance held by this vault. + /// @return The perp token balance. + function perpBalance() external view returns (uint256) { + return perp.balanceOf(address(this)); + } +} diff --git a/spot-vaults/contracts/_interfaces/IDRBalancerVault.sol b/spot-vaults/contracts/_interfaces/IDRBalancerVault.sol new file mode 100644 index 00000000..523e004b --- /dev/null +++ b/spot-vaults/contracts/_interfaces/IDRBalancerVault.sol @@ -0,0 +1,145 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.24; + +import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; +import { IPerpetualTranche } from "@ampleforthorg/spot-contracts/contracts/_interfaces/IPerpetualTranche.sol"; +import { IRolloverVault } from "@ampleforthorg/spot-contracts/contracts/_interfaces/IRolloverVault.sol"; +import { Range } from "./types/CommonTypes.sol"; + +/// @title IDRBalancerVault +/// @notice Interface for DRBalancerVault - a vault that holds underlying and perp tokens +/// as liquidity and auto-rebalances to help maintain the SYSTEM's target deviation ratio +/// via IRolloverVault swaps. +/// +/// The system's deviation ratio (DR) is defined by FeePolicy as: +/// DR = vaultTVL / perpTVL / targetSystemRatio +/// +/// When DR < 1 (under-subscribed): vault TVL is too low relative to perp TVL +/// When DR > 1 (over-subscribed): vault TVL is too high relative to perp TVL +interface IDRBalancerVault is IERC20Upgradeable { + //-------------------------------------------------------------------------- + // Events + + /// @notice Emitted when a user deposits underlying tokens. + /// @param depositor The address of the depositor. + /// @param underlyingAmtIn The amount of underlying tokens deposited. + /// @param notesMinted The amount of vault notes minted. + event Deposit( + address indexed depositor, + uint256 underlyingAmtIn, + uint256 notesMinted + ); + + /// @notice Emitted when a user redeems vault notes. + /// @param redeemer The address of the redeemer. + /// @param notesBurnt The amount of vault notes burnt. + /// @param underlyingAmtOut The amount of underlying tokens returned. + /// @param perpAmtOut The amount of perp tokens returned. + event Redeem( + address indexed redeemer, + uint256 notesBurnt, + uint256 underlyingAmtOut, + uint256 perpAmtOut + ); + + /// @notice Emitted when the vault rebalances to adjust system DR. + /// @param drBefore The system deviation ratio before rebalance. + /// @param drAfter The system deviation ratio after rebalance. + /// @param underlyingAmt The amount of underlying involved in the swap. + /// @param isUnderlyingIntoPerp True if underlying was swapped for perps, false if perps were swapped for underlying. + event Rebalance( + uint256 drBefore, + uint256 drAfter, + uint256 underlyingAmt, + bool isUnderlyingIntoPerp + ); + + //-------------------------------------------------------------------------- + // Core Methods + + /// @notice Deposits underlying tokens and mints vault notes (LP tokens). + /// @param underlyingAmtIn The amount of underlying tokens to deposit. + /// @return notesMinted The amount of vault notes minted. + function deposit(uint256 underlyingAmtIn) external returns (uint256 notesMinted); + + /// @notice Burns vault notes and returns proportional underlying and perp tokens. + /// @param notesAmt The amount of vault notes to burn. + /// @return underlyingAmtOut The amount of underlying tokens returned. + /// @return perpAmtOut The amount of perp tokens returned. + function redeem( + uint256 notesAmt + ) external returns (uint256 underlyingAmtOut, uint256 perpAmtOut); + + /// @notice Rebalances to help maintain the system's target deviation ratio. + /// @dev Can only be called after cooldown period has elapsed. + function rebalance() external; + + //-------------------------------------------------------------------------- + // View Methods + + /// @notice Returns this vault's total value locked in underlying denomination. + /// @return The TVL of this vault (underlying + perp value). + function getTVL() external returns (uint256); + + /// @notice Returns the current SYSTEM deviation ratio from the rollover vault. + /// @dev DR = vaultTVL / perpTVL / targetSystemRatio (as defined in FeePolicy) + /// @return The system deviation ratio as a fixed point number with 8 decimals. + function getSystemDeviationRatio() external returns (uint256); + + /// @notice Computes the amount of underlying to swap for rebalancing. + /// @return underlyingAmt The amount of underlying involved in the swap. + /// @return isUnderlyingIntoPerp True if should swap underlying for perps, false otherwise. + function computeRebalanceAmount() + external + returns (uint256 underlyingAmt, bool isUnderlyingIntoPerp); + + /// @notice Returns the underlying token balance held by this vault. + /// @return The underlying token balance. + function underlyingBalance() external view returns (uint256); + + /// @notice Returns the perp token balance held by this vault. + /// @return The perp token balance. + function perpBalance() external view returns (uint256); + + //-------------------------------------------------------------------------- + // Config Getters + + /// @notice The underlying rebasing token (e.g., AMPL). + function underlying() external view returns (IERC20Upgradeable); + + /// @notice The perpetual tranche token (SPOT). + function perp() external view returns (IPerpetualTranche); + + /// @notice The rollover vault used for swaps. + function rolloverVault() external view returns (IRolloverVault); + + /// @notice The target system deviation ratio (typically 1.0 with 8 decimals). + function targetDR() external view returns (uint256); + + /// @notice The equilibrium DR range where no rebalancing occurs. + function equilibriumDR() external view returns (Range memory); + + /// @notice The lag factor for underlying->perp swaps (when DR is low). + function lagFactorUnderlyingToPerp() external view returns (uint256); + + /// @notice The lag factor for perp->underlying swaps (when DR is high). + function lagFactorPerpToUnderlying() external view returns (uint256); + + /// @notice The min/max percentage of TVL for underlying->perp swaps. + function rebalancePercLimitsUnderlyingToPerp() external view returns (Range memory); + + /// @notice The min/max percentage of TVL for perp->underlying swaps. + function rebalancePercLimitsPerpToUnderlying() external view returns (Range memory); + + /// @notice The minimum seconds between rebalances. + function rebalanceFreqSec() external view returns (uint256); + + /// @notice The timestamp of the last rebalance. + function lastRebalanceTimestampSec() external view returns (uint256); + + /// @notice The maximum swap fee percentage allowed during rebalance. + function maxSwapFeePerc() external view returns (uint256); + + /// @notice The keeper address. + function keeper() external view returns (address); +} diff --git a/spot-vaults/contracts/_interfaces/errors/DRBalancerErrors.sol b/spot-vaults/contracts/_interfaces/errors/DRBalancerErrors.sol new file mode 100644 index 00000000..1cfe0bc9 --- /dev/null +++ b/spot-vaults/contracts/_interfaces/errors/DRBalancerErrors.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.24; + +/// @notice Expected DR lower bound to be under the upper bound. +error InvalidDRBound(); + +/// @notice Rebalance called before cooldown elapsed. +error LastRebalanceTooRecent(); + +/// @notice Swap fee exceeded the maximum allowed percentage. +error SlippageTooHigh(); diff --git a/spot-vaults/contracts/_test/MockPerpetualTranche.sol b/spot-vaults/contracts/_test/MockPerpetualTranche.sol new file mode 100644 index 00000000..a69a79f6 --- /dev/null +++ b/spot-vaults/contracts/_test/MockPerpetualTranche.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.24; + +import { MockERC20 } from "./MockERC20.sol"; + +contract MockPerpetualTranche is MockERC20 { + uint256 private _tvl; + + function setTVL(uint256 tvl_) external { + _tvl = tvl_; + } + + function getTVL() external view returns (uint256) { + return _tvl; + } +} diff --git a/spot-vaults/package.json b/spot-vaults/package.json index 860a7d79..6338a134 100644 --- a/spot-vaults/package.json +++ b/spot-vaults/package.json @@ -21,7 +21,7 @@ "@openzeppelin/contracts-upgradeable": "4.9.6", "@uniswap/v3-core": "^1.0.1", "ampleforth-contracts": "https://github.com/ampleforth/ampleforth-contracts#master", - "tranche": "https://github.com/buttonwood-protocol/tranche.git#main" + "tranche": "https://github.com/buttonwood-protocol/tranche/archive/main.tar.gz" }, "devDependencies": { "@ethersproject/abi": "^5.6.4", @@ -34,7 +34,7 @@ "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", "@nomicfoundation/hardhat-network-helpers": "^1.0.0", "@nomicfoundation/hardhat-toolbox": "latest", - "@nomicfoundation/hardhat-verify": "latest", + "@nomicfoundation/hardhat-verify": "^2.0.0", "@nomiclabs/hardhat-waffle": "^2.0.6", "@openzeppelin/hardhat-upgrades": "^3.0.4", "@openzeppelin/upgrades-core": "latest", diff --git a/spot-vaults/tasks/info.ts b/spot-vaults/tasks/info.ts index 5d976688..63a6f5c1 100644 --- a/spot-vaults/tasks/info.ts +++ b/spot-vaults/tasks/info.ts @@ -159,7 +159,7 @@ task("info:BillBroker") console.log("tvl", tvl); console.log("---------------------------------------------------------------"); - const swapAmts = [1n, 1000n, 10000n, 25000n, 50000n, 100000n]; + const swapAmts = [1n, 1000n, 10000n, 15000n, 20000n, 25000n]; for (let i = 0; i < swapAmts.length; i++) { const swapAmt = swapAmts[i]; console.log( @@ -186,7 +186,7 @@ task("info:BillBroker") } console.log("---------------------------------------------------------------"); } catch (e) { - console.log(e); + // console.log(e); console.log("---------------------------------------------------------------"); } }); diff --git a/spot-vaults/test/DRBalancerVault.ts b/spot-vaults/test/DRBalancerVault.ts new file mode 100644 index 00000000..e809afec --- /dev/null +++ b/spot-vaults/test/DRBalancerVault.ts @@ -0,0 +1,365 @@ +import { ethers, upgrades } from "hardhat"; +import { loadFixture } from "@nomicfoundation/hardhat-toolbox/network-helpers"; +import { expect } from "chai"; +import { DMock, amplFP, perpFP, drFP } from "./helpers"; + +const ONE = ethers.parseUnits("1", 18); +const DR_ONE = ethers.parseUnits("1", 8); // DR uses 8 decimals like FeePolicy +const DAY = 86400; + +describe("DRBalancerVault", function () { + async function setupContracts() { + const accounts = await ethers.getSigners(); + const deployer = accounts[0]; + + // Deploy mock underlying token (AMPL-like, 9 decimals) + const Token = await ethers.getContractFactory("MockERC20"); + const underlying = await Token.deploy(); + await underlying.init("Ampleforth", "AMPL", 9); + + // Deploy mock perp token (SPOT-like, 9 decimals) with getTVL support + const PerpToken = await ethers.getContractFactory("MockPerpetualTranche"); + const perp = await PerpToken.deploy(); + await perp.init("SPOT", "SPOT", 9); + await perp.setTVL(amplFP("10000")); // Default perpTVL for rebalance calculations + + // Deploy mock rollover vault + const rolloverVault = new DMock( + "@ampleforthorg/spot-contracts/contracts/_interfaces/IRolloverVault.sol:IRolloverVault", + ); + await rolloverVault.deploy(); + await rolloverVault.mockMethod("swapUnderlyingForPerps(uint256)", [0]); + await rolloverVault.mockMethod("swapPerpsForUnderlying(uint256)", [0]); + // Mock system DR at equilibrium (1.0 with 8 decimals as per FeePolicy) + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + // Mock compute functions with zero fee by default + // Returns: (perpAmtOut, perpFeeAmtToBurn, SystemTVL) + await rolloverVault.mockMethod("computeUnderlyingToPerpSwapAmt(uint256)", [ + perpFP("100"), + 0, + { perpTVL: amplFP("1000"), vaultTVL: amplFP("1000") }, + ]); + + // Deploy DRBalancerVault + const DRBalancerVault = await ethers.getContractFactory("DRBalancerVault"); + const vault = await upgrades.deployProxy( + DRBalancerVault.connect(deployer), + ["DR Balancer LP", "DRLP", underlying.target, perp.target, rolloverVault.target], + { + initializer: "init(string,string,address,address,address)", + }, + ); + + // Mint tokens to deployer for testing + await underlying.mint(deployer.getAddress(), amplFP("100000")); + + // Approve vault to spend tokens + await underlying.connect(deployer).approve(vault.target, ethers.MaxUint256); + + return { deployer, underlying, perp, rolloverVault, vault }; + } + + describe("init", function () { + it("should set initial values", async function () { + const { deployer, vault, underlying, perp, rolloverVault } = await loadFixture( + setupContracts, + ); + + expect(await vault.underlying()).to.eq(underlying.target); + expect(await vault.perp()).to.eq(perp.target); + expect(await vault.rolloverVault()).to.eq(rolloverVault.target); + expect(await vault.underlyingUnitAmt()).to.eq(amplFP("1")); + expect(await vault.perpUnitAmt()).to.eq(perpFP("1")); + + expect(await vault.owner()).to.eq(await deployer.getAddress()); + expect(await vault.keeper()).to.eq(await deployer.getAddress()); + + // Target DR is 1.0 (system in balance) with 8 decimals + expect(await vault.targetDR()).to.eq(DR_ONE); + + // Equilibrium zone: 95% - 105% with 8 decimals + const equilibriumDR = await vault.equilibriumDR(); + expect(equilibriumDR.lower).to.eq((DR_ONE * 95n) / 100n); + expect(equilibriumDR.upper).to.eq((DR_ONE * 105n) / 100n); + + expect(await vault.lagFactorUnderlyingToPerp()).to.eq(3); + expect(await vault.lagFactorPerpToUnderlying()).to.eq(3); + + const percLimitsU2P = await vault.rebalancePercLimitsUnderlyingToPerp(); + expect(percLimitsU2P.lower).to.eq(ONE / 10n); // 10% + expect(percLimitsU2P.upper).to.eq(ONE / 2n); // 50% + + const percLimitsP2U = await vault.rebalancePercLimitsPerpToUnderlying(); + expect(percLimitsP2U.lower).to.eq(ONE / 10n); // 10% + expect(percLimitsP2U.upper).to.eq(ONE / 2n); // 50% + + expect(await vault.rebalanceFreqSec()).to.eq(DAY); + expect(await vault.maxSwapFeePerc()).to.eq(ONE / 100n); // 1% default + }); + }); + + describe("#updateKeeper", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect(vault.updateKeeper(ethers.ZeroAddress)).to.be.revertedWith( + "Ownable: caller is not the owner", + ); + }); + }); + + describe("when set address is valid", function () { + it("should update reference", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateKeeper(vault.target); + expect(await vault.keeper()).to.eq(vault.target); + }); + }); + }); + + describe("#updateTargetDR", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect(vault.updateTargetDR(DR_ONE)).to.be.revertedWith( + "Ownable: caller is not the owner", + ); + }); + }); + + describe("when valid", function () { + it("should update target DR", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateTargetDR((DR_ONE * 110n) / 100n); + expect(await vault.targetDR()).to.eq((DR_ONE * 110n) / 100n); + }); + }); + }); + + describe("#updateEquilibriumDR", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect( + vault.updateEquilibriumDR({ lower: DR_ONE / 2n, upper: DR_ONE }), + ).to.be.revertedWith("Ownable: caller is not the owner"); + }); + }); + + describe("when lower > upper", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await expect( + vault.updateEquilibriumDR({ lower: DR_ONE, upper: DR_ONE / 2n }), + ).to.be.revertedWithCustomError(vault, "InvalidDRBound"); + }); + }); + + describe("when valid", function () { + it("should update equilibrium DR", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateEquilibriumDR({ + lower: (DR_ONE * 90n) / 100n, + upper: (DR_ONE * 110n) / 100n, + }); + const eq = await vault.equilibriumDR(); + expect(eq.lower).to.eq((DR_ONE * 90n) / 100n); + expect(eq.upper).to.eq((DR_ONE * 110n) / 100n); + }); + }); + }); + + describe("#updateRebalanceConfigUnderlyingToPerp", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect( + vault.updateRebalanceConfigUnderlyingToPerp(5, { + lower: ONE / 100n, + upper: ONE / 10n, + }), + ).to.be.revertedWith("Ownable: caller is not the owner"); + }); + }); + + describe("when perc limits lower > upper", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await expect( + vault.updateRebalanceConfigUnderlyingToPerp(5, { + lower: ONE / 10n, + upper: ONE / 100n, + }), + ).to.be.revertedWithCustomError(vault, "InvalidRange"); + }); + }); + + describe("when valid", function () { + it("should update config", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateRebalanceConfigUnderlyingToPerp(5, { + lower: ONE / 100n, + upper: ONE / 10n, + }); + expect(await vault.lagFactorUnderlyingToPerp()).to.eq(5); + const limits = await vault.rebalancePercLimitsUnderlyingToPerp(); + expect(limits.lower).to.eq(ONE / 100n); + expect(limits.upper).to.eq(ONE / 10n); + }); + }); + }); + + describe("#updateRebalanceConfigPerpToUnderlying", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect( + vault.updateRebalanceConfigPerpToUnderlying(5, { + lower: ONE / 100n, + upper: ONE / 10n, + }), + ).to.be.revertedWith("Ownable: caller is not the owner"); + }); + }); + + describe("when perc limits lower > upper", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await expect( + vault.updateRebalanceConfigPerpToUnderlying(5, { + lower: ONE / 10n, + upper: ONE / 100n, + }), + ).to.be.revertedWithCustomError(vault, "InvalidRange"); + }); + }); + + describe("when valid", function () { + it("should update config", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateRebalanceConfigPerpToUnderlying(8, { + lower: ONE / 50n, + upper: ONE / 5n, + }); + expect(await vault.lagFactorPerpToUnderlying()).to.eq(8); + const limits = await vault.rebalancePercLimitsPerpToUnderlying(); + expect(limits.lower).to.eq(ONE / 50n); + expect(limits.upper).to.eq(ONE / 5n); + }); + }); + }); + + describe("#updateRebalanceFreqSec", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect(vault.updateRebalanceFreqSec(DAY * 2)).to.be.revertedWith( + "Ownable: caller is not the owner", + ); + }); + }); + + describe("when valid", function () { + it("should update frequency", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateRebalanceFreqSec(DAY * 2); + expect(await vault.rebalanceFreqSec()).to.eq(DAY * 2); + }); + }); + }); + + describe("#updateMaxSwapFeePerc", function () { + describe("when triggered by non-owner", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.renounceOwnership(); + await expect(vault.updateMaxSwapFeePerc(ONE / 100n)).to.be.revertedWith( + "Ownable: caller is not the owner", + ); + }); + }); + + describe("when fee > 100%", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await expect(vault.updateMaxSwapFeePerc(ONE + 1n)).to.be.revertedWithCustomError( + vault, + "InvalidPerc", + ); + }); + }); + + describe("when valid", function () { + it("should update max swap fee", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateMaxSwapFeePerc(ONE / 50n); + expect(await vault.maxSwapFeePerc()).to.eq(ONE / 50n); + }); + }); + }); + + describe("#pause", function () { + describe("when triggered by non-keeper", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.updateKeeper(ethers.ZeroAddress); + await expect(vault.pause()).to.be.revertedWithCustomError( + vault, + "UnauthorizedCall", + ); + }); + }); + + describe("when already paused", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.pause(); + await expect(vault.pause()).to.be.revertedWith("Pausable: paused"); + }); + }); + + describe("when valid", function () { + it("should pause", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.pause(); + expect(await vault.paused()).to.eq(true); + }); + }); + }); + + describe("#unpause", function () { + describe("when triggered by non-keeper", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.pause(); + await vault.updateKeeper(ethers.ZeroAddress); + await expect(vault.unpause()).to.be.revertedWithCustomError( + vault, + "UnauthorizedCall", + ); + }); + }); + + describe("when not paused", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await expect(vault.unpause()).to.be.revertedWith("Pausable: not paused"); + }); + }); + + describe("when valid", function () { + it("should unpause", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.pause(); + await vault.unpause(); + expect(await vault.paused()).to.eq(false); + }); + }); + }); +}); diff --git a/spot-vaults/test/DRBalancerVault_deposit_redeem.ts b/spot-vaults/test/DRBalancerVault_deposit_redeem.ts new file mode 100644 index 00000000..fc500f21 --- /dev/null +++ b/spot-vaults/test/DRBalancerVault_deposit_redeem.ts @@ -0,0 +1,391 @@ +import { ethers, upgrades } from "hardhat"; +import { loadFixture } from "@nomicfoundation/hardhat-toolbox/network-helpers"; +import { expect } from "chai"; +import { DMock, amplFP, perpFP, drFP, noteFP } from "./helpers"; + +describe("DRBalancerVault", function () { + async function setupContracts() { + const accounts = await ethers.getSigners(); + const deployer = accounts[0]; + const otherUser = accounts[1]; + + // Deploy mock underlying token (AMPL-like, 9 decimals) + const Token = await ethers.getContractFactory("MockERC20"); + const underlying = await Token.deploy(); + await underlying.init("Ampleforth", "AMPL", 9); + + // Deploy mock perp token (SPOT-like, 9 decimals) with getTVL support + const PerpToken = await ethers.getContractFactory("MockPerpetualTranche"); + const perp = await PerpToken.deploy(); + await perp.init("SPOT", "SPOT", 9); + await perp.setTVL(amplFP("10000")); // Default perpTVL for rebalance calculations + + // Deploy mock rollover vault + const rolloverVault = new DMock( + "@ampleforthorg/spot-contracts/contracts/_interfaces/IRolloverVault.sol:IRolloverVault", + ); + await rolloverVault.deploy(); + await rolloverVault.mockMethod("swapUnderlyingForPerps(uint256)", [0]); + await rolloverVault.mockMethod("swapPerpsForUnderlying(uint256)", [0]); + // Mock system DR at equilibrium (1.0 with 8 decimals as per FeePolicy) + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + // Mock compute functions with zero fee by default + await rolloverVault.mockMethod("computeUnderlyingToPerpSwapAmt(uint256)", [ + perpFP("100"), + 0, + { perpTVL: amplFP("1000"), vaultTVL: amplFP("1000") }, + ]); + + // Deploy DRBalancerVault + const DRBalancerVault = await ethers.getContractFactory("DRBalancerVault"); + const vault = await upgrades.deployProxy( + DRBalancerVault.connect(deployer), + ["DR Balancer LP", "DRLP", underlying.target, perp.target, rolloverVault.target], + { + initializer: "init(string,string,address,address,address)", + }, + ); + + // Mint tokens to users for testing + await underlying.mint(deployer.getAddress(), amplFP("100000")); + await underlying.mint(otherUser.getAddress(), amplFP("100000")); + + // Approve vault to spend tokens + await underlying.connect(deployer).approve(vault.target, ethers.MaxUint256); + await underlying.connect(otherUser).approve(vault.target, ethers.MaxUint256); + + return { deployer, otherUser, underlying, perp, rolloverVault, vault }; + } + + describe("#computeMintAmt", function () { + describe("when underlyingAmtIn is zero", function () { + it("should return zero", async function () { + const { vault } = await loadFixture(setupContracts); + expect(await vault.computeMintAmt.staticCall(0)).to.eq(0n); + }); + }); + + describe("first mint (totalSupply = 0)", function () { + it("should compute mint amount", async function () { + const { vault } = await loadFixture(setupContracts); + // notesMinted = underlyingAmtIn * ONE / underlyingUnitAmt + // = 1000 * 10^9 * 10^18 / 10^9 = 1000 * 10^18 + expect(await vault.computeMintAmt.staticCall(amplFP("1000"))).to.eq( + noteFP("1000"), + ); + }); + }); + + describe("subsequent mint (totalSupply > 0)", function () { + it("should compute mint amount proportional to TVL", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + // notesMinted = totalSupply * underlyingAmtIn / TVL + // = 1000 * 10^18 * 500 * 10^9 / (1000 * 10^9) = 500 * 10^18 + expect(await vault.computeMintAmt.staticCall(amplFP("500"))).to.eq(noteFP("500")); + }); + }); + }); + + describe("#deposit", function () { + describe("when paused", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.pause(); + await expect(vault.deposit(amplFP("100"))).to.be.revertedWith("Pausable: paused"); + }); + }); + + describe("when amount is zero", function () { + it("should return zero", async function () { + const { vault } = await loadFixture(setupContracts); + expect(await vault.deposit.staticCall(0)).to.eq(0n); + }); + }); + + describe("first deposit", function () { + it("should transfer underlying from user", async function () { + const { deployer, vault, underlying } = await loadFixture(setupContracts); + await expect(() => vault.deposit(amplFP("1000"))).to.changeTokenBalance( + underlying, + deployer, + amplFP("-1000"), + ); + }); + + it("should mint notes to user", async function () { + const { deployer, vault } = await loadFixture(setupContracts); + // First deposit: notesMinted = underlyingAmtIn * ONE / underlyingUnitAmt + // = 1000 * 10^9 * 10^18 / 10^9 = 1000 * 10^18 + await expect(() => vault.deposit(amplFP("1000"))).to.changeTokenBalance( + vault, + deployer, + noteFP("1000"), + ); + expect(await vault.totalSupply()).to.eq(noteFP("1000")); + }); + + it("should return mint amount", async function () { + const { vault } = await loadFixture(setupContracts); + const notesMinted = await vault.deposit.staticCall(amplFP("1000")); + expect(notesMinted).to.eq(noteFP("1000")); + }); + + it("should emit Deposit event", async function () { + const { deployer, vault } = await loadFixture(setupContracts); + await expect(vault.deposit(amplFP("1000"))) + .to.emit(vault, "Deposit") + .withArgs(await deployer.getAddress(), amplFP("1000"), noteFP("1000")); + }); + }); + + describe("subsequent deposits", function () { + it("should transfer underlying from user", async function () { + const { vault, underlying, otherUser } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + await expect(() => + vault.connect(otherUser).deposit(amplFP("500")), + ).to.changeTokenBalance(underlying, otherUser, amplFP("-500")); + }); + + it("should mint proportional notes", async function () { + const { vault, otherUser } = await loadFixture(setupContracts); + // First deposit: 1000 AMPL -> 1000 notes + await vault.deposit(amplFP("1000")); + // Second deposit: 500 AMPL -> 500 notes (same ratio) + // notesMinted = totalSupply * underlyingAmtIn / TVL + // = 1000 * 10^18 * 500 * 10^9 / (1000 * 10^9) = 500 * 10^18 + await expect(() => + vault.connect(otherUser).deposit(amplFP("500")), + ).to.changeTokenBalance(vault, otherUser, noteFP("500")); + expect(await vault.totalSupply()).to.eq(noteFP("1500")); + }); + + it("should return mint amount", async function () { + const { vault, otherUser } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + const notesMinted = await vault + .connect(otherUser) + .deposit.staticCall(amplFP("500")); + expect(notesMinted).to.eq(noteFP("500")); + }); + + it("should emit Deposit event", async function () { + const { vault, otherUser } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + await expect(vault.connect(otherUser).deposit(amplFP("500"))) + .to.emit(vault, "Deposit") + .withArgs(await otherUser.getAddress(), amplFP("500"), noteFP("500")); + }); + }); + }); + + describe("#computeRedemptionAmts", function () { + describe("when notesAmt is zero", function () { + it("should return zeros", async function () { + const { vault } = await loadFixture(setupContracts); + const [underlyingOut, perpOut] = await vault.computeRedemptionAmts.staticCall(0); + expect(underlyingOut).to.eq(0n); + expect(perpOut).to.eq(0n); + }); + }); + + describe("when totalSupply is zero", function () { + it("should return zeros", async function () { + const { vault } = await loadFixture(setupContracts); + const [underlyingOut, perpOut] = await vault.computeRedemptionAmts.staticCall( + noteFP("100"), + ); + expect(underlyingOut).to.eq(0n); + expect(perpOut).to.eq(0n); + }); + }); + + describe("when redeeming partial supply (only underlying)", function () { + it("should return proportional amounts", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + // underlyingAmtOut = underlyingBalance * notesAmt / totalSupply + // = 1000 * 10^9 * 500 * 10^18 / (1000 * 10^18) = 500 * 10^9 + const [underlyingOut, perpOut] = await vault.computeRedemptionAmts.staticCall( + noteFP("500"), + ); + expect(underlyingOut).to.eq(amplFP("500")); + expect(perpOut).to.eq(0n); + }); + }); + + describe("when redeeming entire supply (only underlying)", function () { + it("should return all underlying", async function () { + const { vault } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + const [underlyingOut, perpOut] = await vault.computeRedemptionAmts.staticCall( + noteFP("1000"), + ); + expect(underlyingOut).to.eq(amplFP("1000")); + expect(perpOut).to.eq(0n); + }); + }); + + describe("when vault holds both underlying and perps", function () { + it("should return proportional amounts of both", async function () { + const { vault, perp } = await loadFixture(setupContracts); + await vault.deposit(amplFP("1000")); + // Simulate vault receiving perps (e.g., from a rebalance) + await perp.mint(vault.target, perpFP("200")); + // underlyingAmtOut = 1000 * 10^9 * 500 * 10^18 / (1000 * 10^18) = 500 * 10^9 + // perpAmtOut = 200 * 10^9 * 500 * 10^18 / (1000 * 10^18) = 100 * 10^9 + const [underlyingOut, perpOut] = await vault.computeRedemptionAmts.staticCall( + noteFP("500"), + ); + expect(underlyingOut).to.eq(amplFP("500")); + expect(perpOut).to.eq(perpFP("100")); + }); + }); + }); + + describe("#redeem", function () { + async function setupWithDeposit() { + const fixtures = await setupContracts(); + const { vault } = fixtures; + await vault.deposit(amplFP("1000")); + return fixtures; + } + + describe("when paused", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupWithDeposit); + await vault.pause(); + await expect(vault.redeem(noteFP("100"))).to.be.revertedWith("Pausable: paused"); + }); + }); + + describe("when amount is zero", function () { + it("should return zeros", async function () { + const { vault } = await loadFixture(setupWithDeposit); + const [underlyingOut, perpOut] = await vault.redeem.staticCall(0); + expect(underlyingOut).to.eq(0n); + expect(perpOut).to.eq(0n); + }); + }); + + describe("on partial redemption", function () { + it("should burn notes from user", async function () { + const { deployer, vault } = await loadFixture(setupWithDeposit); + await expect(() => vault.redeem(noteFP("400"))).to.changeTokenBalance( + vault, + deployer, + noteFP("-400"), + ); + expect(await vault.totalSupply()).to.eq(noteFP("600")); + }); + + it("should transfer underlying to user", async function () { + const { deployer, vault, underlying } = await loadFixture(setupWithDeposit); + // underlyingAmtOut = 1000 * 10^9 * 400 * 10^18 / (1000 * 10^18) = 400 * 10^9 + await expect(() => vault.redeem(noteFP("400"))).to.changeTokenBalance( + underlying, + deployer, + amplFP("400"), + ); + }); + + it("should return redemption amounts", async function () { + const { vault } = await loadFixture(setupWithDeposit); + const [underlyingOut, perpOut] = await vault.redeem.staticCall(noteFP("400")); + expect(underlyingOut).to.eq(amplFP("400")); + expect(perpOut).to.eq(0n); + }); + + it("should emit Redeem event", async function () { + const { deployer, vault } = await loadFixture(setupWithDeposit); + await expect(vault.redeem(noteFP("400"))) + .to.emit(vault, "Redeem") + .withArgs(await deployer.getAddress(), noteFP("400"), amplFP("400"), 0n); + }); + }); + + describe("on complete redemption", function () { + it("should burn all notes from user", async function () { + const { deployer, vault } = await loadFixture(setupWithDeposit); + await expect(() => vault.redeem(noteFP("1000"))).to.changeTokenBalance( + vault, + deployer, + noteFP("-1000"), + ); + expect(await vault.balanceOf(await deployer.getAddress())).to.eq(0n); + expect(await vault.totalSupply()).to.eq(0n); + }); + + it("should transfer all underlying to user", async function () { + const { deployer, vault, underlying } = await loadFixture(setupWithDeposit); + await expect(() => vault.redeem(noteFP("1000"))).to.changeTokenBalance( + underlying, + deployer, + amplFP("1000"), + ); + }); + + it("should return redemption amounts", async function () { + const { vault } = await loadFixture(setupWithDeposit); + const [underlyingOut, perpOut] = await vault.redeem.staticCall(noteFP("1000")); + expect(underlyingOut).to.eq(amplFP("1000")); + expect(perpOut).to.eq(0n); + }); + + it("should emit Redeem event", async function () { + const { deployer, vault } = await loadFixture(setupWithDeposit); + await expect(vault.redeem(noteFP("1000"))) + .to.emit(vault, "Redeem") + .withArgs(await deployer.getAddress(), noteFP("1000"), amplFP("1000"), 0n); + }); + }); + + describe("when vault holds both underlying and perps", function () { + it("should transfer proportional amounts of both", async function () { + const { deployer, vault, underlying, perp } = await loadFixture(setupWithDeposit); + // Simulate vault receiving perps + await perp.mint(vault.target, perpFP("500")); + + // Redeem half: should get 500 AMPL and 250 SPOT + await expect(() => vault.redeem(noteFP("500"))).to.changeTokenBalances( + underlying, + [deployer], + [amplFP("500")], + ); + }); + + it("should transfer proportional perps to user", async function () { + const { deployer, vault, perp } = await loadFixture(setupWithDeposit); + await perp.mint(vault.target, perpFP("500")); + // perpAmtOut = 500 * 10^9 * 500 * 10^18 / (1000 * 10^18) = 250 * 10^9 + await expect(() => vault.redeem(noteFP("500"))).to.changeTokenBalance( + perp, + deployer, + perpFP("250"), + ); + }); + + it("should return both redemption amounts", async function () { + const { vault, perp } = await loadFixture(setupWithDeposit); + await perp.mint(vault.target, perpFP("500")); + const [underlyingOut, perpOut] = await vault.redeem.staticCall(noteFP("500")); + expect(underlyingOut).to.eq(amplFP("500")); + expect(perpOut).to.eq(perpFP("250")); + }); + + it("should emit Redeem event with both amounts", async function () { + const { deployer, vault, perp } = await loadFixture(setupWithDeposit); + await perp.mint(vault.target, perpFP("500")); + await expect(vault.redeem(noteFP("500"))) + .to.emit(vault, "Redeem") + .withArgs( + await deployer.getAddress(), + noteFP("500"), + amplFP("500"), + perpFP("250"), + ); + }); + }); + }); +}); diff --git a/spot-vaults/test/DRBalancerVault_rebalance.ts b/spot-vaults/test/DRBalancerVault_rebalance.ts new file mode 100644 index 00000000..7c403fc7 --- /dev/null +++ b/spot-vaults/test/DRBalancerVault_rebalance.ts @@ -0,0 +1,714 @@ +import { ethers, upgrades } from "hardhat"; +import { loadFixture, time } from "@nomicfoundation/hardhat-toolbox/network-helpers"; +import { expect } from "chai"; +import { DMock, amplFP, perpFP, drFP } from "./helpers"; + +const ONE = ethers.parseUnits("1", 18); +const DAY = 86400; + +describe("DRBalancerVault", function () { + async function setupContracts() { + const accounts = await ethers.getSigners(); + const deployer = accounts[0]; + + // Deploy mock underlying token (AMPL-like, 9 decimals) + const Token = await ethers.getContractFactory("MockERC20"); + const underlying = await Token.deploy(); + await underlying.init("Ampleforth", "AMPL", 9); + + // Deploy mock perp token (SPOT-like, 9 decimals) with getTVL support + const PerpToken = await ethers.getContractFactory("MockPerpetualTranche"); + const perp = await PerpToken.deploy(); + await perp.init("SPOT", "SPOT", 9); + // Note: perpTVL is set but totalSupply starts at 0 + // perpPrice = perpTVL / totalSupply, so we must mint perps to establish a price + await perp.setTVL(amplFP("10000")); + + // Deploy mock rollover vault + const rolloverVault = new DMock( + "@ampleforthorg/spot-contracts/contracts/_interfaces/IRolloverVault.sol:IRolloverVault", + ); + await rolloverVault.deploy(); + await rolloverVault.mockMethod("swapUnderlyingForPerps(uint256)", [0]); + await rolloverVault.mockMethod("swapPerpsForUnderlying(uint256)", [0]); + // Mock system DR at equilibrium (1.0 with 8 decimals as per FeePolicy) + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + // Deploy DRBalancerVault + const DRBalancerVault = await ethers.getContractFactory("DRBalancerVault"); + const vault = await upgrades.deployProxy( + DRBalancerVault.connect(deployer), + ["DR Balancer LP", "DRLP", underlying.target, perp.target, rolloverVault.target], + { + initializer: "init(string,string,address,address,address)", + }, + ); + + // Mint tokens to deployer for testing + await underlying.mint(deployer.getAddress(), amplFP("100000")); + + // Approve vault to spend tokens + await underlying.connect(deployer).approve(vault.target, ethers.MaxUint256); + + return { deployer, underlying, perp, rolloverVault, vault }; + } + + // Fixture with balanced liquidity: 10000 AMPL + 10000 SPOT (perpPrice = 1) + async function setupWithBalancedLiquidity() { + const fixtures = await setupContracts(); + const { vault, perp } = fixtures; + + // Deposit 10000 AMPL + await vault.deposit(amplFP("10000")); + + // Mint 10000 perps to vault, with perpTVL = 10000, so perpPrice = 1 + await perp.mint(vault.target, perpFP("10000")); + + return fixtures; + } + + // Fixture with only underlying (no perps in vault, but perps exist in system) + async function setupWithOnlyUnderlying() { + const fixtures = await setupContracts(); + const { vault, perp, deployer } = fixtures; + await vault.deposit(amplFP("10000")); + // Mint perps to deployer (not vault) so perpTotalSupply > 0 to avoid division by zero + await perp.mint(await deployer.getAddress(), perpFP("10000")); + return fixtures; + } + + // Fixture with only perps in vault (no underlying deposited) + async function setupWithOnlyPerps() { + const fixtures = await setupContracts(); + const { vault, perp } = fixtures; + // Mint perps directly to vault (simulating a state after full conversion) + await perp.mint(vault.target, perpFP("10000")); + return fixtures; + } + + describe("#computeRebalanceAmount", function () { + // Test Matrix: + // - DR ranges: equilibrium (0.95-1.05), low (<0.95), high (>1.05) + // - Limiters: lag limiter, minAmt limiter, maxAmt limiter, overshoot protection + + describe("DR in equilibrium zone (0.95 - 1.05)", function () { + it("should return 0 at DR = 1.0 (center)", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + + it("should return 0 at DR = 0.95 (lower bound)", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.95")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + + it("should return 0 at DR = 1.05 (upper bound)", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.05")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + + describe("DR below equilibrium (perp -> underlying swap)", function () { + // When DR < target: redeem perps to decrease perpTVL + // isUnderlyingIntoPerp = false + + describe("lag limiter active", function () { + it("should use adjustedChange when within [minAmt, maxAmt]", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.5")]); + + // drDelta = 1.0 - 0.5 = 0.5 + // requiredChange = perpTVL * drDelta = 10000 * 0.5 = 5000 AMPL + // adjustedChange = 5000 / 3 (lagFactor) = 1666.666... AMPL + // availableLiquidity = perpValue = 10000 * 10000 / 10000 = 10000 AMPL + // minAmt = 10000 * 10% = 1000, maxAmt = 10000 * 50% = 5000 + // 1000 < 1666 < 5000, so lag limiter is active + // 1666 < requiredChange (5000), no overshoot + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1666.666666666")); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + }); + + describe("minAmt limiter active", function () { + it("should use minAmt when adjustedChange < minAmt", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + // drDelta = 1.0 - 0.8 = 0.2 + // requiredChange = 10000 * 0.2 = 2000 AMPL + // adjustedChange = 2000 / 3 = 666.666... AMPL + // availableLiquidity = 10000 AMPL + // minAmt = 1000, maxAmt = 5000 + // 666 < minAmt (1000), so minAmt limiter is active + // minAmt (1000) < requiredChange (2000), no overshoot + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1000")); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + }); + + describe("maxAmt limiter active", function () { + it("should use maxAmt when adjustedChange > maxAmt", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + // Set lagFactor to 1 so adjustedChange = requiredChange + await vault.updateRebalanceConfigPerpToUnderlying(1, { + lower: ONE / 10n, + upper: ONE / 2n, + }); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.3")]); + + // drDelta = 1.0 - 0.3 = 0.7 + // requiredChange = 10000 * 0.7 = 7000 AMPL + // adjustedChange = 7000 / 1 = 7000 AMPL + // availableLiquidity = 10000 AMPL + // minAmt = 1000, maxAmt = 5000 + // 7000 > maxAmt (5000), so maxAmt limiter is active + // maxAmt (5000) < requiredChange (7000), no overshoot + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("5000")); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + }); + + describe("overshoot protection active", function () { + it("should cap at requiredChange when minAmt > requiredChange", async function () { + const { vault, rolloverVault, perp } = await loadFixture(setupContracts); + // Large liquidity = high minAmt + await vault.deposit(amplFP("50000")); + await perp.mint(vault.target, perpFP("50000")); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.9")]); + + // drDelta = 1.0 - 0.9 = 0.1 + // requiredChange = 10000 * 0.1 = 1000 AMPL + // adjustedChange = 1000 / 3 = 333 AMPL + // availableLiquidity = 50000 * 10000 / 10000 = 50000 AMPL + // minAmt = 50000 * 10% = 5000, maxAmt = 25000 + // 333 < minAmt, so would use 5000 + // But 5000 > requiredChange (1000), so overshoot protection caps at 1000 + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1000")); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + + it("should cap at requiredChange when maxAmt > requiredChange", async function () { + const { vault, rolloverVault, perp } = await loadFixture(setupContracts); + // Large liquidity with high max percentage + await vault.deposit(amplFP("50000")); + await perp.mint(vault.target, perpFP("50000")); + // Set min=1%, max=90%, lagFactor=1 + await vault.updateRebalanceConfigPerpToUnderlying(1, { + lower: ONE / 100n, + upper: (ONE * 90n) / 100n, + }); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.9")]); + + // drDelta = 0.1 + // requiredChange = 10000 * 0.1 = 1000 AMPL + // adjustedChange = 1000 / 1 = 1000 AMPL + // availableLiquidity = 50000 AMPL + // minAmt = 500, maxAmt = 45000 + // 500 < 1000 < 45000, so lag limiter would give 1000 + // 1000 = requiredChange, so no overshoot (boundary case) + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1000")); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + }); + + describe("zero liquidity", function () { + it("should return 0 when vault has no perps", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithOnlyUnderlying); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + // availableLiquidity = 0, minAmt = maxAmt = 0 + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + }); + }); + + describe("DR above equilibrium (underlying -> perp swap)", function () { + // When DR > target: mint perps to increase perpTVL + // isUnderlyingIntoPerp = true + + describe("lag limiter active", function () { + it("should use adjustedChange when within [minAmt, maxAmt]", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.5")]); + + // drDelta = 1.5 - 1.0 = 0.5 + // requiredChange = 10000 * 0.5 = 5000 AMPL + // adjustedChange = 5000 / 3 = 1666.666... AMPL + // availableLiquidity = underlyingBalance = 10000 AMPL + // minAmt = 1000, maxAmt = 5000 + // 1000 < 1666 < 5000, so lag limiter is active + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1666.666666666")); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + + describe("minAmt limiter active", function () { + it("should use minAmt when adjustedChange < minAmt", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + + // drDelta = 1.2 - 1.0 = 0.2 + // requiredChange = 10000 * 0.2 = 2000 AMPL + // adjustedChange = 2000 / 3 = 666.666... AMPL + // availableLiquidity = 10000 AMPL + // minAmt = 1000, maxAmt = 5000 + // 666 < minAmt (1000), so minAmt limiter is active + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1000")); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + + describe("maxAmt limiter active", function () { + it("should use maxAmt when adjustedChange > maxAmt", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + // Set lagFactor to 1 so adjustedChange = requiredChange + await vault.updateRebalanceConfigUnderlyingToPerp(1, { + lower: ONE / 10n, + upper: ONE / 2n, + }); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.7")]); + + // drDelta = 1.7 - 1.0 = 0.7 + // requiredChange = 10000 * 0.7 = 7000 AMPL + // adjustedChange = 7000 / 1 = 7000 AMPL + // availableLiquidity = 10000 AMPL + // minAmt = 1000, maxAmt = 5000 + // 7000 > maxAmt (5000), so maxAmt limiter is active + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("5000")); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + + describe("overshoot protection active", function () { + it("should cap at requiredChange when minAmt > requiredChange", async function () { + const { vault, rolloverVault, perp } = await loadFixture(setupContracts); + // Large liquidity = high minAmt + await vault.deposit(amplFP("50000")); + await perp.mint(vault.target, perpFP("10000")); // Need perps for perpTotalSupply + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.1")]); + + // drDelta = 1.1 - 1.0 = 0.1 + // requiredChange = 10000 * 0.1 = 1000 AMPL + // adjustedChange = 1000 / 3 = 333 AMPL + // availableLiquidity = 50000 AMPL + // minAmt = 50000 * 10% = 5000, maxAmt = 25000 + // 333 < minAmt, so would use 5000 + // But 5000 > requiredChange (1000), so overshoot protection caps at 1000 + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(amplFP("1000")); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + + describe("zero liquidity", function () { + it("should return 0 when vault has no underlying", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithOnlyPerps); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + + // availableLiquidity = 0, minAmt = maxAmt = 0 + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + }); + + describe("edge cases", function () { + it("should return 0 when perpTVL is 0", async function () { + const { vault, rolloverVault, perp } = await loadFixture( + setupWithBalancedLiquidity, + ); + await perp.setTVL(0); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + expect(amt).to.eq(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + + it("should handle DR just outside equilibrium (0.9499...)", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + // DR = 0.94999999 (just below 0.95 equilibrium lower bound) + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.94999999")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + // Should trigger rebalance since outside equilibrium + expect(amt).to.be.gt(0n); + expect(isUnderlyingIntoPerp).to.eq(false); + }); + + it("should handle DR just outside equilibrium (1.0500...)", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + // DR = 1.05000001 (just above 1.05 equilibrium upper bound) + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.05000001")]); + + const [amt, isUnderlyingIntoPerp] = + await vault.computeRebalanceAmount.staticCall(); + // Should trigger rebalance since outside equilibrium + expect(amt).to.be.gt(0n); + expect(isUnderlyingIntoPerp).to.eq(true); + }); + }); + }); + + describe("#rebalance", function () { + describe("when paused", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupWithBalancedLiquidity); + await vault.pause(); + await expect(vault.rebalance()).to.be.revertedWith("Pausable: paused"); + }); + }); + + describe("when cooldown not elapsed", function () { + it("should revert", async function () { + const { vault } = await loadFixture(setupWithBalancedLiquidity); + await vault.rebalance(); + await expect(vault.rebalance()).to.be.revertedWithCustomError( + vault, + "LastRebalanceTooRecent", + ); + }); + }); + + describe("when cooldown has elapsed", function () { + it("should allow rebalance", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + await vault.rebalance(); + await time.increase(DAY + 1); + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1"), drFP("1"), 0n, true); + }); + }); + + describe("when system DR is in equilibrium zone", function () { + it("should emit Rebalance event with zero swap amount", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1"), drFP("1"), 0n, true); + }); + + it("should update lastRebalanceTimestampSec", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + const tx = await vault.rebalance(); + const receipt = await tx.wait(); + const block = await ethers.provider.getBlock(receipt!.blockNumber); + + const timestamp = await vault.lastRebalanceTimestampSec(); + expect(timestamp).to.eq(block!.timestamp); + }); + + it("should not change token balances", async function () { + const { vault, rolloverVault, underlying } = await loadFixture( + setupWithBalancedLiquidity, + ); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1")]); + + await expect(() => vault.rebalance()).to.changeTokenBalances( + underlying, + [vault], + [0n], + ); + }); + }); + + describe("underlying -> perp swap (DR too high)", function () { + it("should call swapUnderlyingForPerps with correct amount", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + // mockCall only returns value when called with exact parameters + // This verifies the contract passes amplFP("1000") to swapUnderlyingForPerps + await rolloverVault.mockCall( + "swapUnderlyingForPerps(uint256)", + [amplFP("1000")], + [perpFP("1000")], + ); + + // underlyingAmt = 1000 (see computeRebalanceAmount tests) + // isUnderlyingIntoPerp = true + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1.2"), drFP("1.2"), amplFP("1000"), true); + }); + }); + + describe("perp -> underlying swap (DR too low)", function () { + it("should call swapPerpsForUnderlying with correct amount", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + // underlyingValSwapped = 1000 AMPL + // perpAmtIn = underlyingValSwapped * perpTotalSupply / perpTVL + // = 1000 * 10000 / 10000 = 1000 SPOT + // mockCall verifies the contract passes perpFP("1000") to swapPerpsForUnderlying + await rolloverVault.mockCall( + "swapPerpsForUnderlying(uint256)", + [perpFP("1000")], + [amplFP("1000")], + ); + + // underlyingAmt = 1000 (see computeRebalanceAmount tests) + // isUnderlyingIntoPerp = false + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("0.8"), drFP("0.8"), amplFP("1000"), false); + }); + }); + + describe("slippage protection", function () { + describe("underlying -> perp swap", function () { + it("should revert when fee exceeds max", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + + // Swap 1000 AMPL, return only 900 SPOT (10% fee when perpPrice = 1) + // feePerc = 1 - 900/1000 = 10% + await rolloverVault.mockCall( + "swapUnderlyingForPerps(uint256)", + [amplFP("1000")], + [perpFP("900")], + ); + + // Default max fee is 1% + await expect(vault.rebalance()).to.be.revertedWithCustomError( + vault, + "SlippageTooHigh", + ); + }); + + it("should succeed when fee is zero", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + + // No fee: swap 1000 AMPL, return 1000 SPOT + await rolloverVault.mockCall( + "swapUnderlyingForPerps(uint256)", + [amplFP("1000")], + [perpFP("1000")], + ); + + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1.2"), drFP("1.2"), amplFP("1000"), true); + }); + + it("should succeed when fee is within limit", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + + // 0.5% fee: swap 1000 AMPL, return 995 SPOT + await rolloverVault.mockCall( + "swapUnderlyingForPerps(uint256)", + [amplFP("1000")], + [perpFP("995")], + ); + + // Default max fee is 1% + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1.2"), drFP("1.2"), amplFP("1000"), true); + }); + + it("should succeed when fee equals max limit", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("1.2")]); + await vault.updateMaxSwapFeePerc(ONE / 20n); // 5% + + // Exactly 5% fee: swap 1000 AMPL, return 950 SPOT + await rolloverVault.mockCall( + "swapUnderlyingForPerps(uint256)", + [amplFP("1000")], + [perpFP("950")], + ); + + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("1.2"), drFP("1.2"), amplFP("1000"), true); + }); + }); + + describe("perp -> underlying swap", function () { + it("should revert when fee exceeds max", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + // Swap 1000 SPOT (perpAmtIn), return only 900 AMPL (10% fee) + await rolloverVault.mockCall( + "swapPerpsForUnderlying(uint256)", + [perpFP("1000")], + [amplFP("900")], + ); + + // Default max fee is 1% + await expect(vault.rebalance()).to.be.revertedWithCustomError( + vault, + "SlippageTooHigh", + ); + }); + + it("should succeed when fee is zero", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + // No fee: swap 1000 SPOT, return 1000 AMPL + await rolloverVault.mockCall( + "swapPerpsForUnderlying(uint256)", + [perpFP("1000")], + [amplFP("1000")], + ); + + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("0.8"), drFP("0.8"), amplFP("1000"), false); + }); + + it("should succeed when fee is within limit", async function () { + const { vault, rolloverVault } = await loadFixture(setupWithBalancedLiquidity); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.8")]); + + // 0.5% fee: swap 1000 SPOT, return 995 AMPL + await rolloverVault.mockCall( + "swapPerpsForUnderlying(uint256)", + [perpFP("1000")], + [amplFP("995")], + ); + + await expect(vault.rebalance()) + .to.emit(vault, "Rebalance") + .withArgs(drFP("0.8"), drFP("0.8"), amplFP("1000"), false); + }); + }); + }); + }); + + describe("#getTVL", function () { + describe("when vault has only underlying", function () { + it("should return underlying balance", async function () { + const { vault } = await loadFixture(setupWithOnlyUnderlying); + const tvl = await vault.getTVL.staticCall(); + expect(tvl).to.eq(amplFP("10000")); + }); + }); + + describe("when vault has only perps", function () { + it("should return perp value in underlying terms", async function () { + const { vault } = await loadFixture(setupWithOnlyPerps); + // perpValue = perpBalance * perpTVL / perpTotalSupply + // = 10000 * 10000 / 10000 = 10000 AMPL + const tvl = await vault.getTVL.staticCall(); + expect(tvl).to.eq(amplFP("10000")); + }); + }); + + describe("when vault has both underlying and perps", function () { + it("should return sum of underlying and perp value", async function () { + const { vault } = await loadFixture(setupWithBalancedLiquidity); + // TVL = underlyingBalance + perpValue + // = 10000 + (10000 * 10000 / 10000) = 20000 AMPL + const tvl = await vault.getTVL.staticCall(); + expect(tvl).to.eq(amplFP("20000")); + }); + }); + + describe("when perpPrice != 1", function () { + it("should calculate perp value correctly", async function () { + const { vault, perp } = await loadFixture(setupWithBalancedLiquidity); + // Change perpTVL to make perpPrice = 2 (perpTVL = 20000, supply = 10000) + await perp.setTVL(amplFP("20000")); + + // perpValue = 10000 * 20000 / 10000 = 20000 AMPL + // TVL = 10000 + 20000 = 30000 AMPL + const tvl = await vault.getTVL.staticCall(); + expect(tvl).to.eq(amplFP("30000")); + }); + }); + + describe("when perpTotalSupply is 0", function () { + it("should return only underlying balance", async function () { + const { vault } = await loadFixture(setupWithOnlyUnderlying); + // No perps exist, TVL = underlying only + const tvl = await vault.getTVL.staticCall(); + expect(tvl).to.eq(amplFP("10000")); + }); + }); + }); + + describe("#getSystemDeviationRatio", function () { + it("should return DR from rollover vault", async function () { + const { vault, rolloverVault } = await loadFixture(setupContracts); + await rolloverVault.mockMethod("deviationRatio()", [drFP("0.95")]); + + const dr = await vault.getSystemDeviationRatio.staticCall(); + expect(dr).to.eq(drFP("0.95")); + }); + }); + + describe("#underlyingBalance", function () { + it("should return zero when empty", async function () { + const { vault } = await loadFixture(setupContracts); + expect(await vault.underlyingBalance()).to.eq(0n); + }); + + it("should return the underlying balance after deposit", async function () { + const { vault } = await loadFixture(setupWithOnlyUnderlying); + expect(await vault.underlyingBalance()).to.eq(amplFP("10000")); + }); + }); + + describe("#perpBalance", function () { + it("should return zero when no perps", async function () { + const { vault } = await loadFixture(setupWithOnlyUnderlying); + expect(await vault.perpBalance()).to.eq(0n); + }); + + it("should return perp balance when vault holds perps", async function () { + const { vault } = await loadFixture(setupWithOnlyPerps); + expect(await vault.perpBalance()).to.eq(perpFP("10000")); + }); + }); +}); diff --git a/spot-vaults/test/helpers.ts b/spot-vaults/test/helpers.ts index 141635fd..54a13ebb 100644 --- a/spot-vaults/test/helpers.ts +++ b/spot-vaults/test/helpers.ts @@ -17,6 +17,7 @@ export const ethOracleFP = (a: string): BigInt => ethers.parseUnits(sciParseFloa export const amplOracleFP = (a: string): BigInt => ethers.parseUnits(sciParseFloat(a), 18); export const drFP = (a: string): BigInt => ethers.parseUnits(sciParseFloat(a), 8); +export const noteFP = (a: string): BigInt => ethers.parseUnits(sciParseFloat(a), 18); export class DMock { private refArtifact: string; diff --git a/yarn.lock b/yarn.lock index 90f06744..a7786ac9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,10 +12,10 @@ __metadata: languageName: node linkType: hard -"@adraffy/ens-normalize@npm:^1.10.1": - version: 1.11.0 - resolution: "@adraffy/ens-normalize@npm:1.11.0" - checksum: b2911269e3e0ec6396a2e5433a99e0e1f9726befc6c167994448cd0e53dbdd0be22b4835b4f619558b568ed9aa7312426b8fa6557a13999463489daa88169ee5 +"@adraffy/ens-normalize@npm:^1.11.0": + version: 1.11.1 + resolution: "@adraffy/ens-normalize@npm:1.11.1" + checksum: e8b17fcc730ccc45a956e1fbb09edfe42be41c291079512082e9964f8ef4287e67913183cdd02fff71d2e215340d5b98a9bbbd9be32c5d36fad4ba2c1ec33ff2 languageName: node linkType: hard @@ -30,7 +30,7 @@ __metadata: "@ethersproject/providers": ^5.6.8 "@nomicfoundation/hardhat-chai-matchers": latest "@nomicfoundation/hardhat-ethers": ^3.0.0 - "@nomicfoundation/hardhat-verify": latest + "@nomicfoundation/hardhat-verify": ^2.0.0 "@nomiclabs/hardhat-waffle": ^2.0.6 "@openzeppelin/contracts-upgradeable": 4.7.3 "@openzeppelin/hardhat-upgrades": ^3.0.4 @@ -125,7 +125,7 @@ __metadata: "@nomicfoundation/hardhat-ignition-ethers": ^0.15.0 "@nomicfoundation/hardhat-network-helpers": ^1.0.0 "@nomicfoundation/hardhat-toolbox": latest - "@nomicfoundation/hardhat-verify": latest + "@nomicfoundation/hardhat-verify": ^2.0.0 "@nomiclabs/hardhat-waffle": ^2.0.6 "@openzeppelin/contracts": 4.9.6 "@openzeppelin/contracts-upgradeable": 4.9.6 @@ -164,7 +164,7 @@ __metadata: prettier-plugin-solidity: ^1.0.0-dev.23 solhint: ^3.3.7 solidity-coverage: ^0.8.5 - tranche: "https://github.com/buttonwood-protocol/tranche.git#main" + tranche: "https://github.com/buttonwood-protocol/tranche/archive/main.tar.gz" ts-node: ^10.9.1 typechain: ^8.1.0 typescript: ^4.7.4 @@ -251,420 +251,442 @@ __metadata: linkType: hard "@aws-sdk/client-lambda@npm:^3.563.0": - version: 3.804.0 - resolution: "@aws-sdk/client-lambda@npm:3.804.0" + version: 3.980.0 + resolution: "@aws-sdk/client-lambda@npm:3.980.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.804.0 - "@aws-sdk/credential-provider-node": 3.804.0 - "@aws-sdk/middleware-host-header": 3.804.0 - "@aws-sdk/middleware-logger": 3.804.0 - "@aws-sdk/middleware-recursion-detection": 3.804.0 - "@aws-sdk/middleware-user-agent": 3.804.0 - "@aws-sdk/region-config-resolver": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@aws-sdk/util-endpoints": 3.804.0 - "@aws-sdk/util-user-agent-browser": 3.804.0 - "@aws-sdk/util-user-agent-node": 3.804.0 - "@smithy/config-resolver": ^4.1.0 - "@smithy/core": ^3.3.1 - "@smithy/eventstream-serde-browser": ^4.0.2 - "@smithy/eventstream-serde-config-resolver": ^4.1.0 - "@smithy/eventstream-serde-node": ^4.0.2 - "@smithy/fetch-http-handler": ^5.0.2 - "@smithy/hash-node": ^4.0.2 - "@smithy/invalid-dependency": ^4.0.2 - "@smithy/middleware-content-length": ^4.0.2 - "@smithy/middleware-endpoint": ^4.1.2 - "@smithy/middleware-retry": ^4.1.3 - "@smithy/middleware-serde": ^4.0.3 - "@smithy/middleware-stack": ^4.0.2 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/node-http-handler": ^4.0.4 - "@smithy/protocol-http": ^5.1.0 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/url-parser": ^4.0.2 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-body-length-node": ^4.0.0 - "@smithy/util-defaults-mode-browser": ^4.0.10 - "@smithy/util-defaults-mode-node": ^4.0.10 - "@smithy/util-endpoints": ^3.0.2 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-retry": ^4.0.3 - "@smithy/util-stream": ^4.2.0 - "@smithy/util-utf8": ^4.0.0 - "@smithy/util-waiter": ^4.0.3 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/credential-provider-node": ^3.972.4 + "@aws-sdk/middleware-host-header": ^3.972.3 + "@aws-sdk/middleware-logger": ^3.972.3 + "@aws-sdk/middleware-recursion-detection": ^3.972.3 + "@aws-sdk/middleware-user-agent": ^3.972.5 + "@aws-sdk/region-config-resolver": ^3.972.3 + "@aws-sdk/types": ^3.973.1 + "@aws-sdk/util-endpoints": 3.980.0 + "@aws-sdk/util-user-agent-browser": ^3.972.3 + "@aws-sdk/util-user-agent-node": ^3.972.3 + "@smithy/config-resolver": ^4.4.6 + "@smithy/core": ^3.22.0 + "@smithy/eventstream-serde-browser": ^4.2.8 + "@smithy/eventstream-serde-config-resolver": ^4.3.8 + "@smithy/eventstream-serde-node": ^4.2.8 + "@smithy/fetch-http-handler": ^5.3.9 + "@smithy/hash-node": ^4.2.8 + "@smithy/invalid-dependency": ^4.2.8 + "@smithy/middleware-content-length": ^4.2.8 + "@smithy/middleware-endpoint": ^4.4.12 + "@smithy/middleware-retry": ^4.4.29 + "@smithy/middleware-serde": ^4.2.9 + "@smithy/middleware-stack": ^4.2.8 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/node-http-handler": ^4.4.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-body-length-browser": ^4.2.0 + "@smithy/util-body-length-node": ^4.2.1 + "@smithy/util-defaults-mode-browser": ^4.3.28 + "@smithy/util-defaults-mode-node": ^4.2.31 + "@smithy/util-endpoints": ^3.2.8 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-retry": ^4.2.8 + "@smithy/util-stream": ^4.5.10 + "@smithy/util-utf8": ^4.2.0 + "@smithy/util-waiter": ^4.2.8 tslib: ^2.6.2 - checksum: 6b3ed01415d82cc77327d978cb8ed5ca814a949ab7fd6430c20fff4783b6129a6fb5d3cd6e88084faaacb336ae482c31995a08874e6d631de145424c0b7130dc + checksum: cb378246665cff0e04cee2076f138b1254a0671996ba2b4e3266d9320897fc0957b42738b0e3b4c9f8de63d1ae9575433d2da1b034848bbb83ffdf8883605027 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/client-sso@npm:3.804.0" +"@aws-sdk/client-sso@npm:3.980.0": + version: 3.980.0 + resolution: "@aws-sdk/client-sso@npm:3.980.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.804.0 - "@aws-sdk/middleware-host-header": 3.804.0 - "@aws-sdk/middleware-logger": 3.804.0 - "@aws-sdk/middleware-recursion-detection": 3.804.0 - "@aws-sdk/middleware-user-agent": 3.804.0 - "@aws-sdk/region-config-resolver": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@aws-sdk/util-endpoints": 3.804.0 - "@aws-sdk/util-user-agent-browser": 3.804.0 - "@aws-sdk/util-user-agent-node": 3.804.0 - "@smithy/config-resolver": ^4.1.0 - "@smithy/core": ^3.3.1 - "@smithy/fetch-http-handler": ^5.0.2 - "@smithy/hash-node": ^4.0.2 - "@smithy/invalid-dependency": ^4.0.2 - "@smithy/middleware-content-length": ^4.0.2 - "@smithy/middleware-endpoint": ^4.1.2 - "@smithy/middleware-retry": ^4.1.3 - "@smithy/middleware-serde": ^4.0.3 - "@smithy/middleware-stack": ^4.0.2 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/node-http-handler": ^4.0.4 - "@smithy/protocol-http": ^5.1.0 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/url-parser": ^4.0.2 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-body-length-node": ^4.0.0 - "@smithy/util-defaults-mode-browser": ^4.0.10 - "@smithy/util-defaults-mode-node": ^4.0.10 - "@smithy/util-endpoints": ^3.0.2 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-retry": ^4.0.3 - "@smithy/util-utf8": ^4.0.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/middleware-host-header": ^3.972.3 + "@aws-sdk/middleware-logger": ^3.972.3 + "@aws-sdk/middleware-recursion-detection": ^3.972.3 + "@aws-sdk/middleware-user-agent": ^3.972.5 + "@aws-sdk/region-config-resolver": ^3.972.3 + "@aws-sdk/types": ^3.973.1 + "@aws-sdk/util-endpoints": 3.980.0 + "@aws-sdk/util-user-agent-browser": ^3.972.3 + "@aws-sdk/util-user-agent-node": ^3.972.3 + "@smithy/config-resolver": ^4.4.6 + "@smithy/core": ^3.22.0 + "@smithy/fetch-http-handler": ^5.3.9 + "@smithy/hash-node": ^4.2.8 + "@smithy/invalid-dependency": ^4.2.8 + "@smithy/middleware-content-length": ^4.2.8 + "@smithy/middleware-endpoint": ^4.4.12 + "@smithy/middleware-retry": ^4.4.29 + "@smithy/middleware-serde": ^4.2.9 + "@smithy/middleware-stack": ^4.2.8 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/node-http-handler": ^4.4.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-body-length-browser": ^4.2.0 + "@smithy/util-body-length-node": ^4.2.1 + "@smithy/util-defaults-mode-browser": ^4.3.28 + "@smithy/util-defaults-mode-node": ^4.2.31 + "@smithy/util-endpoints": ^3.2.8 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-retry": ^4.2.8 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: ddd097f5a4cb1617aa07f33c70878659d7b7e794a3c19a9a75b4da631a3306bf72d9585d8092040ab097e4a973c05a2bfab8ec4bebe1806e50548710b88e4ae3 + checksum: 10e0e06a53f4bd272b9e0d5f998ec799fef95f8ffdd0b38d61599a197f1f543753d4f185531007e0e1fb0b101c7879cebb1a02a1ba8211970cfed2179070ccad + languageName: node + linkType: hard + +"@aws-sdk/core@npm:^3.973.5": + version: 3.973.5 + resolution: "@aws-sdk/core@npm:3.973.5" + dependencies: + "@aws-sdk/types": ^3.973.1 + "@aws-sdk/xml-builder": ^3.972.2 + "@smithy/core": ^3.22.0 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/signature-v4": ^5.3.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-utf8": ^4.2.0 + tslib: ^2.6.2 + checksum: df5bc5935f7031a366bb335070a92ed9355a7f6de3dd46e0a9ee9623b42456e2661969f0aa22cd047c932aa7f786e1f0c17f7e8f75510b460a0f33b32158765c languageName: node linkType: hard -"@aws-sdk/core@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/core@npm:3.804.0" +"@aws-sdk/credential-provider-env@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-env@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/core": ^3.3.1 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/property-provider": ^4.0.2 - "@smithy/protocol-http": ^5.1.0 - "@smithy/signature-v4": ^5.1.0 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/util-middleware": ^4.0.2 - fast-xml-parser: 4.4.1 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 338efb8f2c7f2798f78450be8401334339f9662e9b9f654099123903a06ef7f45d2edd8b99ad4895e33969ad1d2e33153033950f9360795231a2cb4021c65065 + checksum: 167cb5eb441d1b7065e98fcd2972279fab9cb940d417761e4179b6530345aa760a68c42173f0126e0463d1b37f7c7e0c8a879bb55d62fda54b8d245fed0976a6 languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.804.0" +"@aws-sdk/credential-provider-http@npm:^3.972.5": + version: 3.972.5 + resolution: "@aws-sdk/credential-provider-http@npm:3.972.5" dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/property-provider": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/types": ^3.973.1 + "@smithy/fetch-http-handler": ^5.3.9 + "@smithy/node-http-handler": ^4.4.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/util-stream": ^4.5.10 + tslib: ^2.6.2 + checksum: e39658b640e8ea2218d6af840d101f61b2acb73b97376498b821f37ec06f9f09973590a01e596fbc03e3cc77e41b3059dc7d269506160e56aca466d56638fd76 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-ini@npm:3.972.3" + dependencies: + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/credential-provider-env": ^3.972.3 + "@aws-sdk/credential-provider-http": ^3.972.5 + "@aws-sdk/credential-provider-login": ^3.972.3 + "@aws-sdk/credential-provider-process": ^3.972.3 + "@aws-sdk/credential-provider-sso": ^3.972.3 + "@aws-sdk/credential-provider-web-identity": ^3.972.3 + "@aws-sdk/nested-clients": 3.980.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/credential-provider-imds": ^4.2.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 76cae825be7bb350492f682488b13031d4799bd193a60d5dbd31ec2dbaf7bd79fac1d800293b49bec1d151580e9d1ab0245c7429599fd6e6a57385679b62957b + checksum: 15d90417e07c8a0f702e5a8b1cb355810939373a571ca08a42691926e40f137c33f95ca05e4aab6dbad8649c943126a0856581b6cdb373657f9e33113fa07e83 languageName: node linkType: hard -"@aws-sdk/credential-provider-http@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-http@npm:3.804.0" +"@aws-sdk/credential-provider-login@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-login@npm:3.972.3" dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/fetch-http-handler": ^5.0.2 - "@smithy/node-http-handler": ^4.0.4 - "@smithy/property-provider": ^4.0.2 - "@smithy/protocol-http": ^5.1.0 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/util-stream": ^4.2.0 - tslib: ^2.6.2 - checksum: 2084f21c0be8799741cc584856f530e188dedda062656e292ed57035ea6cf2a5926e2e6cdf9f84d9d47c3228a86edfca493af3682a4ca3841c801b1728623dc2 - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-ini@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.804.0" - dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/credential-provider-env": 3.804.0 - "@aws-sdk/credential-provider-http": 3.804.0 - "@aws-sdk/credential-provider-process": 3.804.0 - "@aws-sdk/credential-provider-sso": 3.804.0 - "@aws-sdk/credential-provider-web-identity": 3.804.0 - "@aws-sdk/nested-clients": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/credential-provider-imds": ^4.0.2 - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/nested-clients": 3.980.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3e65387b962bbef19d68584de762e13f1dceddc0507f9d59b15edea35380c49669226446c62d3c041fa48a86dd80f3f6d06c4d01ec07ec4f858e9879be2aa116 + checksum: 1b27c0c68a777a4bde796cb3551ecf9a2e15365f4984b40e20ef26da0359ebf1fb669682899762d1ef21d5e1ffd2e3521d12c8b1f47ce24097bacc93048e15d5 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.804.0" +"@aws-sdk/credential-provider-node@npm:^3.972.4": + version: 3.972.4 + resolution: "@aws-sdk/credential-provider-node@npm:3.972.4" dependencies: - "@aws-sdk/credential-provider-env": 3.804.0 - "@aws-sdk/credential-provider-http": 3.804.0 - "@aws-sdk/credential-provider-ini": 3.804.0 - "@aws-sdk/credential-provider-process": 3.804.0 - "@aws-sdk/credential-provider-sso": 3.804.0 - "@aws-sdk/credential-provider-web-identity": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/credential-provider-imds": ^4.0.2 - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/credential-provider-env": ^3.972.3 + "@aws-sdk/credential-provider-http": ^3.972.5 + "@aws-sdk/credential-provider-ini": ^3.972.3 + "@aws-sdk/credential-provider-process": ^3.972.3 + "@aws-sdk/credential-provider-sso": ^3.972.3 + "@aws-sdk/credential-provider-web-identity": ^3.972.3 + "@aws-sdk/types": ^3.973.1 + "@smithy/credential-provider-imds": ^4.2.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 89a4013f6e2a22d7577a9e3ff6000392fccccb1dc21c0ac7c39c3024774d33ebddb3a092495976ebcd77fc9ee1bfbc37230b0e92ce34b1df8cb1866732cff1ac + checksum: 353bf5041ace2d628643b69c0ce28157525001435d67c72d6664e6866d9f98b733e4e63c3c1b0ae177acabf0df88d19993aed4ca110b63ea0155dee9cb7cee64 languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.804.0" +"@aws-sdk/credential-provider-process@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-process@npm:3.972.3" dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 9f193dfa0244c1be42bfdbb9a4d2f77d8553501085db4f73a92176260795d24f5f8d4cbf4c974634c0ad968910c3dd7ee4eb4bc6ce84cbe516a61d6c78203430 + checksum: e7bc6e098137958ffaaa3b116551d60afb375076126781c77d2d0a2b372da1685c4ec9eff36425566fe7cc78460a823c2bfa881926ba4027e2a50cbbd1d51da0 languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.804.0" +"@aws-sdk/credential-provider-sso@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-sso@npm:3.972.3" dependencies: - "@aws-sdk/client-sso": 3.804.0 - "@aws-sdk/core": 3.804.0 - "@aws-sdk/token-providers": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/client-sso": 3.980.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/token-providers": 3.980.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 66d97bbe361829079248ca2dcabc1968889908825827c03ef504b0d4d95e8d58da210b8053ef11c7bc29a463af5d2b391c0dd99d25ac3fcda5e51dfbcf997782 + checksum: 69001eaf5bea77aeb1bacc3c83276e931693778df664a27158861dc545e35b287b1819341e605c8105d3399164dcbd649438d552332664dc3b7f3dd00fc10832 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.804.0" +"@aws-sdk/credential-provider-web-identity@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.972.3" dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/nested-clients": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/property-provider": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/nested-clients": 3.980.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: e643f9fa13c5a180844ecaf4e0293bb9d78d800d73eec25bdf781c8db991a0c723d37d350368904b1874e34b8a1e1e7997dd0248a6ca249007c50cd0ed6d0148 + checksum: 6ec6c0418e3b9903ce9de53bc87c32febad003ae349159176c0c841a20a8ff8bada495a3ed8818370fce86648a03b54b5bfaf03095e940d03b4797dc982c1997 languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.804.0" +"@aws-sdk/middleware-host-header@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/middleware-host-header@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3310bf3c88b2db2d179ec8c7feff5e6429b3f4ef2535ffcfb492fdfce265362f132a502a06a8743b4ff6118083a5da4bd4219d2f3743863da75e594d39a50f6e + checksum: aa484d42301f5609331aa6937ec754e6befd6edae48b0880804e573c7288d6e38bc2786efdc4e0d7f885070a18c232a96e2b7d343c4c80d66515cb95a2bee4e1 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-logger@npm:3.804.0" +"@aws-sdk/middleware-logger@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/middleware-logger@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/types": ^4.2.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 11c62cf5670eeb035f87ea95ce6e8b8205bd407b0a5d8c7a73a5b0e30ccfa6e11d4595d9aba6d61ef628377555447ca25704afdd8e916d6a6ba67b7a7fd0f078 + checksum: 91301bddfbe9694ce3da20f4c38646440567eb65a3623ae27fb4aa5c13d76275db9e062446df516188abb2c81013c03d481a5f9838a00ea495f2e73e2ef57809 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.804.0" +"@aws-sdk/middleware-recursion-detection@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 + "@aws-sdk/types": ^3.973.1 + "@aws/lambda-invoke-store": ^0.2.2 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: e762ca615372584ec4fea95b50f4476457edd36c8b433238df8c6c7143ae91da17fe1d3209eca425e89e799a73879e76510121d9235975c46d644e37a17e5350 + checksum: e1eeeec04e25186776c191991f12e7b51e081030f162121b8cac623cb7efe3bdca20c8b22b6ff400b4ad14fe8d79c9e0a85984db03c50b87bc0bf1557b63cfba languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.804.0" +"@aws-sdk/middleware-user-agent@npm:^3.972.5": + version: 3.972.5 + resolution: "@aws-sdk/middleware-user-agent@npm:3.972.5" dependencies: - "@aws-sdk/core": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@aws-sdk/util-endpoints": 3.804.0 - "@smithy/core": ^3.3.1 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/types": ^3.973.1 + "@aws-sdk/util-endpoints": 3.980.0 + "@smithy/core": ^3.22.0 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3b51dd159b51a640203c8ca7055be6cf3290b60a1490b6b9970bfa975ca7033e0d13b307dbc2630663b027ae1bb088deb5ad6f3a64e8d1e6324980b781c2781b + checksum: 256b3a6ec9d4db4c1d0461d2110788da6e0dfcc40f32a5da6d8e4da78a7a5b39ffbd5458c7d8c7af6107bd8f7107686ec62ba719f52a3f9e913e81061156050d languageName: node linkType: hard -"@aws-sdk/nested-clients@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/nested-clients@npm:3.804.0" +"@aws-sdk/nested-clients@npm:3.980.0": + version: 3.980.0 + resolution: "@aws-sdk/nested-clients@npm:3.980.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.804.0 - "@aws-sdk/middleware-host-header": 3.804.0 - "@aws-sdk/middleware-logger": 3.804.0 - "@aws-sdk/middleware-recursion-detection": 3.804.0 - "@aws-sdk/middleware-user-agent": 3.804.0 - "@aws-sdk/region-config-resolver": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@aws-sdk/util-endpoints": 3.804.0 - "@aws-sdk/util-user-agent-browser": 3.804.0 - "@aws-sdk/util-user-agent-node": 3.804.0 - "@smithy/config-resolver": ^4.1.0 - "@smithy/core": ^3.3.1 - "@smithy/fetch-http-handler": ^5.0.2 - "@smithy/hash-node": ^4.0.2 - "@smithy/invalid-dependency": ^4.0.2 - "@smithy/middleware-content-length": ^4.0.2 - "@smithy/middleware-endpoint": ^4.1.2 - "@smithy/middleware-retry": ^4.1.3 - "@smithy/middleware-serde": ^4.0.3 - "@smithy/middleware-stack": ^4.0.2 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/node-http-handler": ^4.0.4 - "@smithy/protocol-http": ^5.1.0 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/url-parser": ^4.0.2 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-body-length-node": ^4.0.0 - "@smithy/util-defaults-mode-browser": ^4.0.10 - "@smithy/util-defaults-mode-node": ^4.0.10 - "@smithy/util-endpoints": ^3.0.2 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-retry": ^4.0.3 - "@smithy/util-utf8": ^4.0.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/middleware-host-header": ^3.972.3 + "@aws-sdk/middleware-logger": ^3.972.3 + "@aws-sdk/middleware-recursion-detection": ^3.972.3 + "@aws-sdk/middleware-user-agent": ^3.972.5 + "@aws-sdk/region-config-resolver": ^3.972.3 + "@aws-sdk/types": ^3.973.1 + "@aws-sdk/util-endpoints": 3.980.0 + "@aws-sdk/util-user-agent-browser": ^3.972.3 + "@aws-sdk/util-user-agent-node": ^3.972.3 + "@smithy/config-resolver": ^4.4.6 + "@smithy/core": ^3.22.0 + "@smithy/fetch-http-handler": ^5.3.9 + "@smithy/hash-node": ^4.2.8 + "@smithy/invalid-dependency": ^4.2.8 + "@smithy/middleware-content-length": ^4.2.8 + "@smithy/middleware-endpoint": ^4.4.12 + "@smithy/middleware-retry": ^4.4.29 + "@smithy/middleware-serde": ^4.2.9 + "@smithy/middleware-stack": ^4.2.8 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/node-http-handler": ^4.4.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-body-length-browser": ^4.2.0 + "@smithy/util-body-length-node": ^4.2.1 + "@smithy/util-defaults-mode-browser": ^4.3.28 + "@smithy/util-defaults-mode-node": ^4.2.31 + "@smithy/util-endpoints": ^3.2.8 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-retry": ^4.2.8 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: 1dbc0c7e4764a845a81af012cb39a3e2eae1dd6eb08eb8d33a765401b114db6a91ff84259e0cf68b6408b32d644d616bf76f8b4d9432d04ac256f58b4cdba9ee + checksum: ce9b07c29ade9b1691d30bfda687bf2347528b252bc651f4b154756a2276b73fd5ca790ca6d21d0e59d51cbaa5bad95929ffe64ad1b4a88002555b4624212935 languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.804.0" +"@aws-sdk/region-config-resolver@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/region-config-resolver@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/types": ^4.2.0 - "@smithy/util-config-provider": ^4.0.0 - "@smithy/util-middleware": ^4.0.2 + "@aws-sdk/types": ^3.973.1 + "@smithy/config-resolver": ^4.4.6 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 9af63a819979d581630b11232a81e345c3cdbd9aa006642ce9a68b9e8a288674cdc3c873aead78406be93fca5cc5a2448ad6add0d4f7ffc14c0fda618f83140f + checksum: d85c72b274734d128040f90b994be3ae444095c225e69f8b7694300e07d301585682c3247b7ac88ad6ad883099d65c9bb1c4a2a0f1584baeb580d452b5071f2f languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/token-providers@npm:3.804.0" +"@aws-sdk/token-providers@npm:3.980.0": + version: 3.980.0 + resolution: "@aws-sdk/token-providers@npm:3.980.0" dependencies: - "@aws-sdk/nested-clients": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/core": ^3.973.5 + "@aws-sdk/nested-clients": 3.980.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 912830754585df1c759979a7769730798cb769474c5746f02a134a0c44cbe138ad2b88d1982fcf46295f071cd950312414bf7d987cd4e3a6879fa27248be4a8b + checksum: 330fb937727356d50ba19f8b1623bf112970b9a48cbe129cd33e7c902f6bef0576c364fa6500b63f50523ff8dc97b825992e98984f397b11c8f961bc2c61c064 languageName: node linkType: hard -"@aws-sdk/types@npm:3.804.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0": - version: 3.804.0 - resolution: "@aws-sdk/types@npm:3.804.0" +"@aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.973.1": + version: 3.973.1 + resolution: "@aws-sdk/types@npm:3.973.1" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 6e15b214b96e3f1a158ad5144093cd6cbc765984b8ddc00492e2274218b00d43921aaf1340c8a75dd1878c981528257663c053c28d7a47146620122af4f45cca + checksum: e42827172e695f2df9e5c3275edd81f18a3d36d703df2378cadb55c4951ac7403b3b3768fd9cb8a72d359b18d58cc7bbd2950c1f2bc672eacd3b8e1e2fe75424 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-endpoints@npm:3.804.0" +"@aws-sdk/util-endpoints@npm:3.980.0": + version: 3.980.0 + resolution: "@aws-sdk/util-endpoints@npm:3.980.0" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/types": ^4.2.0 - "@smithy/util-endpoints": ^3.0.2 + "@aws-sdk/types": ^3.973.1 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 + "@smithy/util-endpoints": ^3.2.8 tslib: ^2.6.2 - checksum: 4bdce464c42183663eb4d6d6cd55c8186475aaaad302e3c9e61210c2bd4f67e05db0fecf2b2c150bfa291e345598b41d8491b429fd4bef2dac47563d1adc7d47 + checksum: 7531bdcb9d9d4094fb8fa15b83e89d5e393460dd107ac4b17ee22d62abf36d044634232ed894b5a054a850c58d7ede9e62060c74f843ad4b838978df5d2c05c6 languageName: node linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.804.0 - resolution: "@aws-sdk/util-locate-window@npm:3.804.0" + version: 3.965.4 + resolution: "@aws-sdk/util-locate-window@npm:3.965.4" dependencies: tslib: ^2.6.2 - checksum: 87b384533ba5ceade6e212f5783b6134551ade3ecb413c93ea453c2d5af76651137c4dc7b270b643e8ac810b072119a273790046c31921aaf0f6a664d1a31c99 + checksum: ec8d3653f6aa2f3743d9a14dc2f19c7221d08a8b34d929d4259c5477f5d1d8c2bd0785927b2e6ad909459cc7cf0127e68093440a928aade9b5063fc213daf507 languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.804.0" +"@aws-sdk/util-user-agent-browser@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.972.3" dependencies: - "@aws-sdk/types": 3.804.0 - "@smithy/types": ^4.2.0 + "@aws-sdk/types": ^3.973.1 + "@smithy/types": ^4.12.0 bowser: ^2.11.0 tslib: ^2.6.2 - checksum: 6216ac4936631696c596a57a762683575b173efca7af5a8bb805402c6527e8caa0b5f75b3da3f73e354581f04dd19a5e5d09bca7c2f55c7c2b8fba61086f4e86 + checksum: d18ff7696136b2eadb4b3f24fcf51a7f816135d62275580b21b04ab1840c84c7826301552fc8f0f8c74d8aa21c4d2a47f07a0d43bd9d99a04d0feec4949165e5 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.804.0" +"@aws-sdk/util-user-agent-node@npm:^3.972.3": + version: 3.972.3 + resolution: "@aws-sdk/util-user-agent-node@npm:3.972.3" dependencies: - "@aws-sdk/middleware-user-agent": 3.804.0 - "@aws-sdk/types": 3.804.0 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/types": ^4.2.0 + "@aws-sdk/middleware-user-agent": ^3.972.5 + "@aws-sdk/types": ^3.973.1 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: 335d78b11bbda03e82e47de7e014ef2dfa0194ae24aa8f9b188e9295fbc3da23f8b703de9a95ad085aaec72527d9b83a01f288b6c13fdd020dcae19822bb394e + checksum: 6181580ecc10469b0c43161cb8424f4dab0d9b7cbbe2a38b2d18064c29845d10afa4cb35f37b5ffc4a9e40743441c3ec45a4698275cb23518f87d7f8bc120423 languageName: node linkType: hard @@ -677,21 +699,39 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:^3.972.2": + version: 3.972.2 + resolution: "@aws-sdk/xml-builder@npm:3.972.2" + dependencies: + "@smithy/types": ^4.12.0 + fast-xml-parser: 5.2.5 + tslib: ^2.6.2 + checksum: 43e4b6736412b8f8b7c747684ad6097de7228a31cd9f0dbbdd599df33f6ab46a354129e683d7fa9b704a329748ec94654a84991a2d795dc6e05f9c6f8ed15e67 + languageName: node + linkType: hard + +"@aws/lambda-invoke-store@npm:^0.2.2": + version: 0.2.3 + resolution: "@aws/lambda-invoke-store@npm:0.2.3" + checksum: 8fd9e329a95386ebfdc232b2c59d1a1c76b22db5cf58c5da0f133bea5345e096c2200279d33b0b4ad5182db46f9df214a0ce651b80239e7c47109343ffd67321 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" + version: 7.29.0 + resolution: "@babel/code-frame@npm:7.29.0" dependencies: - "@babel/helper-validator-identifier": ^7.27.1 + "@babel/helper-validator-identifier": ^7.28.5 js-tokens: ^4.0.0 picocolors: ^1.1.1 - checksum: 5874edc5d37406c4a0bb14cf79c8e51ad412fb0423d176775ac14fc0259831be1bf95bdda9c2aa651126990505e09a9f0ed85deaa99893bc316d2682c5115bdc + checksum: 39f5b303757e4d63bbff8133e251094cd4f952b46e3fa9febc7368d907583911d6a1eded6090876dc1feeff5cf6e134fb19b706f8d58d26c5402cd50e5e1aeb2 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-identifier@npm:7.27.1" - checksum: 3c7e8391e59d6c85baeefe9afb86432f2ab821c6232b00ea9082a51d3e7e95a2f3fb083d74dc1f49ac82cf238e1d2295dafcb001f7b0fab479f3f56af5eaaa47 +"@babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 5a251a6848e9712aea0338f659a1a3bd334d26219d5511164544ca8ec20774f098c3a6661e9da65a0d085c745c00bb62c8fada38a62f08fa1f8053bc0aeb57e4 languageName: node linkType: hard @@ -719,20 +759,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.7.0 - resolution: "@eslint-community/eslint-utils@npm:4.7.0" + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: b177e3b75c0b8d0e5d71f1c532edb7e40b31313db61f0c879f9bf19c3abb2783c6c372b5deb2396dab4432f2946b9972122ac682e77010376c029dfd0149c681 + checksum: 0a27c2d676c4be6b329ebb5dd8f6c5ef5fae9a019ff575655306d72874bb26f3ab20e0b241a5f086464bb1f2511ca26a29ff6f80c1e2b0b02eca4686b4dfe1b5 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 languageName: node linkType: hard @@ -1544,6 +1584,22 @@ __metadata: languageName: node linkType: hard +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 102fbc6d2c0d5edf8f6dbf2b3feb21695a21bc850f11bc47c4f06aa83bd8884fde3fe9d6d797d619901d96865fdcb4569ac2a54c937992c48885c5e3d9967fe8 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": ^4.0.1 + checksum: d7a3b8b0ddbf0ccd8eeb1300e29dd0a0c02147e823d8138f248375a365682360620895c66d113e05ee02389318c654379b0e538b996345b83c914941786705b1 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -1575,9 +1631,9 @@ __metadata: linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: c2e36e67971f719a8a3a85ef5a5f580622437cc723c35d03ebd0c9c0b06418700ef006f58af742791f71f6a4fc68fcfaf1f6a74ec2f9a3332860e9373459dae7 languageName: node linkType: hard @@ -1591,6 +1647,13 @@ __metadata: languageName: node linkType: hard +"@noble/ciphers@npm:^1.3.0": + version: 1.3.0 + resolution: "@noble/ciphers@npm:1.3.0" + checksum: 19722c35475df9bc78db60d261d0b5ef8a6d722561efc2135453f943eaa421b492195dc666e3e4df2b755bca3739e04f04b9c660198559f5dd05d3cfbf1b9e92 + languageName: node + linkType: hard + "@noble/curves@npm:1.2.0": version: 1.2.0 resolution: "@noble/curves@npm:1.2.0" @@ -1609,7 +1672,16 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.8.2, @noble/curves@npm:~1.8.1": +"@noble/curves@npm:1.9.1": + version: 1.9.1 + resolution: "@noble/curves@npm:1.9.1" + dependencies: + "@noble/hashes": 1.8.0 + checksum: 4f3483a1001538d2f55516cdcb19319d1eaef79550633f670e7d570b989cdbc0129952868b72bb67643329746b8ffefe8e4cd791c8cc35574e05a37f873eef42 + languageName: node + linkType: hard + +"@noble/curves@npm:~1.8.1": version: 1.8.2 resolution: "@noble/curves@npm:1.8.2" dependencies: @@ -1618,12 +1690,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.6.0, @noble/curves@npm:~1.9.0": - version: 1.9.0 - resolution: "@noble/curves@npm:1.9.0" +"@noble/curves@npm:~1.9.0": + version: 1.9.7 + resolution: "@noble/curves@npm:1.9.7" dependencies: "@noble/hashes": 1.8.0 - checksum: dc82f8c095e90ab0d88f4bfcdf3a6f8500444dac3644b02d7b81a268f516573f18fae66aa3030f5e8886d86dff63dd57a5bb639d968d6cdfadae10436680840c + checksum: 65acad44ac6944ab96471109087d6cfcbcaa251faad6295961be9a5ace220634f4b7c74a96d1ee2274ad3880ea953d8e8259893ed8c906c831ef29f5c04ec9cc languageName: node linkType: hard @@ -1655,7 +1727,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.8.0": +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": version: 1.8.0 resolution: "@noble/hashes@npm:1.8.0" checksum: c94e98b941963676feaba62475b1ccfa8341e3f572adbb3b684ee38b658df44100187fa0ef4220da580b13f8d27e87d5492623c8a02ecc61f23fb9960c7918f5 @@ -1703,153 +1775,153 @@ __metadata: languageName: node linkType: hard -"@nomicfoundation/edr-darwin-arm64@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.11.0" - checksum: ee4df930bdd9adb3e6ff6485326da101ac52347fe6639b5a0d185df40664c1973ac906a28ee6b3d3d683d91c7dae7c8368425a8daf6bd138d5d799b4d40ff6cb +"@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.12.0-next.22" + checksum: ad90e42cb6963748c5475eaa99e58ccac2a69aa80cf8fce248b9e741fcfdc212687aaafd9a1d5f8769d0d3db2409873c60ff66f8762ff88be0372cfe49e706c8 languageName: node linkType: hard -"@nomicfoundation/edr-darwin-x64@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-darwin-x64@npm:0.11.0" - checksum: 0e71ea9cb2fd5ce57a4704b2118254a46528cfe057299490615245ad420fc3381c0f659714b3d5445b9265b140418d62f9a11d40b7a638687732e3e80bf8c8b0 +"@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-darwin-x64@npm:0.12.0-next.22" + checksum: d770b78c510ef4223e4d4432cc6c79b3fa88cab8814f3fa8744ddcc2849228033230869623b5b472147e61103ec94e0b75f1493db59dc3bd3d66094f9416a40a languageName: node linkType: hard -"@nomicfoundation/edr-linux-arm64-gnu@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.11.0" - checksum: 72168c713b2ef501d05a28cd73c8dd48539b42708b72ea0f5350cfb7d51056b5b6d8a38bce4039928b01aee40b94d5829fba47e2b4c68a7e011c2334a2c81152 +"@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.12.0-next.22" + checksum: b515c26f931d4d6091b55f333f11aafa51126e08c33808014871383756a6ba0ff0035597071e91cc8c4258a66bc7d59ba1ded28464cded6fa067e291f6f39a15 languageName: node linkType: hard -"@nomicfoundation/edr-linux-arm64-musl@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.11.0" - checksum: 3030bd1cce2342132ee4fdd2e287611a057bd82fb66d792204f3051d0f68454444f2664c9716a3dce692a7cd4c6053d229edd4b3862194c22212d6c51a9f77e7 +"@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.12.0-next.22" + checksum: ea275733bf8917a9192bb632d7ca77a8a9e0c21782979f4791b0cf006f8225d2266a155b134d5349eb213345fe75a5f068bf0b5c9288d499828af90ae8de8f30 languageName: node linkType: hard -"@nomicfoundation/edr-linux-x64-gnu@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.11.0" - checksum: d4fcc0d81610995d61389f099d640322462d298e111a45b715e6a890722fa85023d29c1d618290a846fb82b9cbfef6f5ccdd71258321031cc21d389fdc3ec945 +"@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.12.0-next.22" + checksum: 325e212db6ecf4d460b17706290b768a88690ffab4c0c39fdea995837477270fc42f91420bf283d7078012f88e5fd3dd4f83fcd83ffa64f0f302d788c0262f96 languageName: node linkType: hard -"@nomicfoundation/edr-linux-x64-musl@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.11.0" - checksum: 558e73fb58f7a79fd6fd1867a1d45b54ae963288a110f9bde5c96d62de2d818ba92faea5bb97dc24aa4b81f36ba83e1a341a72179f04cd649210bff85936fe97 +"@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.12.0-next.22" + checksum: 8aeea787d45498ec9f3db4f7a9aeb5a1c37cbe20e5872230225c43240e2c5af8fa2d3754852b6b2f6462839be43731459063bd10f084e34a80d11801baaec975 languageName: node linkType: hard -"@nomicfoundation/edr-win32-x64-msvc@npm:0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.11.0" - checksum: 2f32f8857fe32634b92ed6f30728b316e1da2268a0e7100de2794b35552f75fd8be5e5a610b46aa88fba9903d8b889c82e1a40a9287c967cb22a961bf5f96bba +"@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.12.0-next.22" + checksum: 26fe2c7ff9d5e4b89aa4a2e8bc61fe01da13b1806cd4aeec9913a3f25688e2ce1d90304df359079c7d0e61908857c78c42f5ecae604075c64cc27f2520ecbe65 languageName: node linkType: hard -"@nomicfoundation/edr@npm:^0.11.0": - version: 0.11.0 - resolution: "@nomicfoundation/edr@npm:0.11.0" +"@nomicfoundation/edr@npm:0.12.0-next.22": + version: 0.12.0-next.22 + resolution: "@nomicfoundation/edr@npm:0.12.0-next.22" dependencies: - "@nomicfoundation/edr-darwin-arm64": 0.11.0 - "@nomicfoundation/edr-darwin-x64": 0.11.0 - "@nomicfoundation/edr-linux-arm64-gnu": 0.11.0 - "@nomicfoundation/edr-linux-arm64-musl": 0.11.0 - "@nomicfoundation/edr-linux-x64-gnu": 0.11.0 - "@nomicfoundation/edr-linux-x64-musl": 0.11.0 - "@nomicfoundation/edr-win32-x64-msvc": 0.11.0 - checksum: ed264aa20ef535b6d82dd135360dfbd0ce3a14aa4f18f0db71bbbd96478360360ab8274d7c93eab2f042abd3252071e9a9a58d868f59a7614b88220d6a884e2a + "@nomicfoundation/edr-darwin-arm64": 0.12.0-next.22 + "@nomicfoundation/edr-darwin-x64": 0.12.0-next.22 + "@nomicfoundation/edr-linux-arm64-gnu": 0.12.0-next.22 + "@nomicfoundation/edr-linux-arm64-musl": 0.12.0-next.22 + "@nomicfoundation/edr-linux-x64-gnu": 0.12.0-next.22 + "@nomicfoundation/edr-linux-x64-musl": 0.12.0-next.22 + "@nomicfoundation/edr-win32-x64-msvc": 0.12.0-next.22 + checksum: cc3e9a68007e63c307ac6fc1bdcef620b93e2c79d121a820d8f1e8e6cb183aa2302add36f7c5560d55bb4f0110bab9822ef7319f6e7f49ef70a6c59d2177829b languageName: node linkType: hard "@nomicfoundation/hardhat-chai-matchers@npm:latest": - version: 2.0.8 - resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.0.8" + version: 2.1.0 + resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.1.0" dependencies: "@types/chai-as-promised": ^7.1.3 chai-as-promised: ^7.1.1 deep-eql: ^4.0.1 ordinal: ^1.0.3 peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.0.0 + "@nomicfoundation/hardhat-ethers": ^3.1.0 chai: ^4.2.0 - ethers: ^6.1.0 - hardhat: ^2.9.4 - checksum: bcf2efcf98e1e889e4566b3ff23099313c67a4c765367f702672890e0d3e6f38ad8de415ee6e9f65d038f6dcd879cc080ca0dda07109acc7d3fc249e8fdb79f5 + ethers: ^6.14.0 + hardhat: ^2.26.0 + checksum: 743d85e7a20826e4cf8055de6d66248ecfb83079b6f264d8383fb5dce17c34a63d74e3c8a007a4b1134ffdd258ff11cdb7c5e56fa07e86a6ddffcfbcd452e9e7 languageName: node linkType: hard "@nomicfoundation/hardhat-ethers@npm:^3.0.0": - version: 3.0.8 - resolution: "@nomicfoundation/hardhat-ethers@npm:3.0.8" + version: 3.1.3 + resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.3" dependencies: debug: ^4.1.1 lodash.isequal: ^4.5.0 peerDependencies: - ethers: ^6.1.0 - hardhat: ^2.0.0 - checksum: 6ad6da6713fa25e653cef894ec10762fc3d728a50461a63c169eac248b5b1ea81bb3d42e8017601bbd231c9fee034336e1f2dc25375d5dcf9926ec4d4389034a + ethers: ^6.14.0 + hardhat: ^2.28.0 + checksum: e42bd298fbd6b747524cd9a84712dae7c094bbc6d0cc93a3cbec8a6907f06ac5c81d46e82e74cbc91fab3effed5ebe2906988eb674064b8f2305a4c2f9b12a7b languageName: node linkType: hard "@nomicfoundation/hardhat-ignition-ethers@npm:^0.15.0": - version: 0.15.11 - resolution: "@nomicfoundation/hardhat-ignition-ethers@npm:0.15.11" + version: 0.15.17 + resolution: "@nomicfoundation/hardhat-ignition-ethers@npm:0.15.17" peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.0.4 - "@nomicfoundation/hardhat-ignition": ^0.15.11 - "@nomicfoundation/ignition-core": ^0.15.11 - ethers: ^6.7.0 - hardhat: ^2.18.0 - checksum: 0333f26d7b2d0f625e3b7974d720dc63ca2b7fe0de7933ef17792d95b0821b803498ea75e294699fa3cb4c63245716e25ac49dcf74a356e62f921119fe7431be + "@nomicfoundation/hardhat-ethers": ^3.1.0 + "@nomicfoundation/hardhat-ignition": ^0.15.16 + "@nomicfoundation/ignition-core": ^0.15.15 + ethers: ^6.14.0 + hardhat: ^2.26.0 + checksum: 4b10580e67890bf6dac29a1306239e5bfc79144c243568c49204421178c2a071fe66fc2f399f5a23b85d0da45681a13eb72c459cbb39b5c68c6fe2e1e3b50572 languageName: node linkType: hard "@nomicfoundation/hardhat-network-helpers@npm:^1.0.0": - version: 1.0.12 - resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.0.12" + version: 1.1.2 + resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.1.2" dependencies: ethereumjs-util: ^7.1.4 peerDependencies: - hardhat: ^2.9.5 - checksum: 7e1b91789dd4e73464b4eec919b1e67c6d482dd7534f4f7cae73fb5bdddd69f2a47143754b34385b098a1df0f4875cd4d2e1109fc3d847db76f4b0a9a44bd959 + hardhat: ^2.26.0 + checksum: 9b0f3152ebd7ec0b813372f3e837bc249f54e86b76a96bedb78f6142fb1ccc21e3f877a0003542d847a0a8a0aa4243f682bdc1dfbcd964b16e9d2c6f04baec3c languageName: node linkType: hard "@nomicfoundation/hardhat-toolbox@npm:latest": - version: 5.0.0 - resolution: "@nomicfoundation/hardhat-toolbox@npm:5.0.0" + version: 6.1.0 + resolution: "@nomicfoundation/hardhat-toolbox@npm:6.1.0" peerDependencies: - "@nomicfoundation/hardhat-chai-matchers": ^2.0.0 - "@nomicfoundation/hardhat-ethers": ^3.0.0 - "@nomicfoundation/hardhat-ignition-ethers": ^0.15.0 - "@nomicfoundation/hardhat-network-helpers": ^1.0.0 - "@nomicfoundation/hardhat-verify": ^2.0.0 + "@nomicfoundation/hardhat-chai-matchers": ^2.1.0 + "@nomicfoundation/hardhat-ethers": ^3.1.0 + "@nomicfoundation/hardhat-ignition-ethers": ^0.15.14 + "@nomicfoundation/hardhat-network-helpers": ^1.1.0 + "@nomicfoundation/hardhat-verify": ^2.1.0 "@typechain/ethers-v6": ^0.5.0 "@typechain/hardhat": ^9.0.0 "@types/chai": ^4.2.0 "@types/mocha": ">=9.1.0" - "@types/node": ">=18.0.0" + "@types/node": ">=20.0.0" chai: ^4.2.0 - ethers: ^6.4.0 - hardhat: ^2.11.0 - hardhat-gas-reporter: ^1.0.8 + ethers: ^6.14.0 + hardhat: ^2.26.0 + hardhat-gas-reporter: ^2.3.0 solidity-coverage: ^0.8.1 ts-node: ">=8.0.0" typechain: ^8.3.0 typescript: ">=4.5.0" - checksum: 18890eaf1cc130afb7dc83ea48cb6ef23c499eb5d28c3fbb36e706082383a320118ee6d4491ede64acf684d2f1ffa117cf84ad80d8ebde9fa52a443f8780a898 + checksum: 2658faef5faf748e291cc382f66cdaa0147c6a01ce0a98e1b89949a8724952a8268b7c946dcc7fb131ec382ec594e2e424f3c1b27def761f572c4ca87f1b2619 languageName: node linkType: hard -"@nomicfoundation/hardhat-verify@npm:latest": - version: 2.0.13 - resolution: "@nomicfoundation/hardhat-verify@npm:2.0.13" +"@nomicfoundation/hardhat-verify@npm:^2.0.0": + version: 2.1.3 + resolution: "@nomicfoundation/hardhat-verify@npm:2.1.3" dependencies: "@ethersproject/abi": ^5.1.2 "@ethersproject/address": ^5.0.2 @@ -1861,8 +1933,8 @@ __metadata: table: ^6.8.0 undici: ^5.14.0 peerDependencies: - hardhat: ^2.0.4 - checksum: 59a4d0f1fb93fcce91a4c318aaa69c8de6a857deb983e3976e9c20f09ce204f5a4e8a4e2ccae63018ee83ce5dbaa954b1f182a2c02e29d1a77f8673b03b498f9 + hardhat: ^2.26.0 + checksum: b0d8fbdd5522e8c3817e8a2e7538afe8bfb3f27317169871ef30abc51247afbfb52316c84d9dda6e7e796603b55da659432f6bcc52e2708f6fc89d4348a2dddc languageName: node linkType: hard @@ -1967,25 +2039,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" dependencies: agent-base: ^7.1.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 + lru-cache: ^11.2.1 socks-proxy-agent: ^8.0.3 - checksum: e8fc25d536250ed3e669813b36e8c6d805628b472353c57afd8c4fde0fcfcf3dda4ffe22f7af8c9070812ec2e7a03fb41d7151547cef3508efe661a5a3add20f + checksum: 89ae20b44859ff8d4de56ade319d8ceaa267a0742d6f7345fe98aa5cd8614ced7db85ea4dc5bfbd6614dbb200a10b134e087143582534c939e8a02219e8665c8 languageName: node linkType: hard -"@npmcli/fs@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/fs@npm:4.0.0" +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" dependencies: semver: ^7.3.5 - checksum: 68951c589e9a4328698a35fd82fe71909a257d6f2ede0434d236fa55634f0fbcad9bb8755553ce5849bd25ee6f019f4d435921ac715c853582c4a7f5983c8d4a + checksum: 897dac32eb37e011800112d406b9ea2ebd96f1dab01bb8fbeb59191b86f6825dffed6a89f3b6c824753d10f8735b76d630927bd7610e9e123b129ef2e5f02cb5 languageName: node linkType: hard @@ -2017,42 +2089,42 @@ __metadata: languageName: node linkType: hard -"@openzeppelin/defender-sdk-base-client@npm:^2.1.0, @openzeppelin/defender-sdk-base-client@npm:^2.5.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-base-client@npm:2.5.0" +"@openzeppelin/defender-sdk-base-client@npm:^2.1.0, @openzeppelin/defender-sdk-base-client@npm:^2.7.0": + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-base-client@npm:2.7.0" dependencies: "@aws-sdk/client-lambda": ^3.563.0 amazon-cognito-identity-js: ^6.3.6 async-retry: ^1.3.3 - checksum: b8c2be0ffefe8ec371dc842bdb16d0b29c34ac05c9f26646e2286a3e22a3511de569e54a7bc5cdaea17eb20b7a8d5f47a44664733174e12ae190d5a5ddba4753 + checksum: d1df0e8013b0fad6c7eed345a210f083badc52e4b0738f85e2ebde50b15cd666029e3d4e18dcb40efcabae5ba6cf6f6b081346ede2d2881a349c7d9203aa8afc languageName: node linkType: hard "@openzeppelin/defender-sdk-deploy-client@npm:^2.1.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-deploy-client@npm:2.5.0" + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-deploy-client@npm:2.7.0" dependencies: - "@openzeppelin/defender-sdk-base-client": ^2.5.0 + "@openzeppelin/defender-sdk-base-client": ^2.7.0 axios: ^1.7.4 lodash: ^4.17.21 - checksum: 620cafbb276cf7ad2eed8cde5a8349fa8be6ce7007a2fd5ee5d87ca24a46ec333396d9e3799cb501b858636519e769cec712338287ecc949b3cc0d6ab55b522c + checksum: 6366d3554805b08fc0df9b78f1e0f9ae03e108e7814eaa02bd71f3afb2e6b0011d1e514e4659bc92dd1a121d361b14cafb676ed70174113284f2fc0905fd9094 languageName: node linkType: hard "@openzeppelin/defender-sdk-network-client@npm:^2.1.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-network-client@npm:2.5.0" + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-network-client@npm:2.7.0" dependencies: - "@openzeppelin/defender-sdk-base-client": ^2.5.0 + "@openzeppelin/defender-sdk-base-client": ^2.7.0 axios: ^1.7.4 lodash: ^4.17.21 - checksum: c1ab3d8db9f118e4da00a86803bdb1bac20a28edbc81ac1c656aafe4d2f9ad0241e8106ee6e4e9506a1c93bb09f7a5b7a82fc2c4689bfe1d32544f354642548a + checksum: 28712ad87e4cc53a9bfb39c38d76135149b8c122569651556c59ee425895094ae057d74476e419148b6fc6964a53ce12d512e1f6a91d9740c5cb41c4f516dba9 languageName: node linkType: hard "@openzeppelin/hardhat-upgrades@npm:^3.0.4": - version: 3.9.0 - resolution: "@openzeppelin/hardhat-upgrades@npm:3.9.0" + version: 3.9.1 + resolution: "@openzeppelin/hardhat-upgrades@npm:3.9.1" dependencies: "@openzeppelin/defender-sdk-base-client": ^2.1.0 "@openzeppelin/defender-sdk-deploy-client": ^2.1.0 @@ -2064,22 +2136,22 @@ __metadata: proper-lockfile: ^4.1.1 undici: ^6.11.1 peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.0.0 - "@nomicfoundation/hardhat-verify": ^2.0.0 + "@nomicfoundation/hardhat-ethers": ^3.0.6 + "@nomicfoundation/hardhat-verify": ^2.0.14 ethers: ^6.6.0 - hardhat: ^2.0.2 + hardhat: ^2.24.1 peerDependenciesMeta: "@nomicfoundation/hardhat-verify": optional: true bin: migrate-oz-cli-project: dist/scripts/migrate-oz-cli-project.js - checksum: 3475daf67bd03dde63de86666f897a4fcdea0028c1759b70163429af5f4e83521d8de7f8c836aa08df6f0218112d31f541c5197827b04d95ef777406d2a752dc + checksum: b82aa904695570033ac42696740bb65aee53167277eb48306e12dca4e16021b7892975e2ca7f149041b918431ad776bff0c8ca738f0b7a2f467ea599508bb9e8 languageName: node linkType: hard "@openzeppelin/upgrades-core@npm:^1.41.0, @openzeppelin/upgrades-core@npm:latest": - version: 1.44.0 - resolution: "@openzeppelin/upgrades-core@npm:1.44.0" + version: 1.44.2 + resolution: "@openzeppelin/upgrades-core@npm:1.44.2" dependencies: "@nomicfoundation/slang": ^0.18.3 bignumber.js: ^9.1.2 @@ -2094,7 +2166,7 @@ __metadata: solidity-ast: ^0.4.60 bin: openzeppelin-upgrades-core: dist/cli/cli.js - checksum: 44da52859525e3b63a0a4e2960ce1fec5fc7444349c7c630bb5eee41deadebd975a6a5fcb65568cc7a1b5e2c3a3c5618fab758a19854d96165c4c41c1d827f6c + checksum: e901d7a883b594144f1e1c649e32c2a78bb37099978b3df55a5e78eaca8078145ae8ee0178881c34cfb6ad835400b448b0002f5f0ba7179fc30a50dd32b1f25d languageName: node linkType: hard @@ -2244,10 +2316,10 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:~1.2.2, @scure/base@npm:~1.2.4, @scure/base@npm:~1.2.5": - version: 1.2.5 - resolution: "@scure/base@npm:1.2.5" - checksum: 79f76781d4f55fa2ce36e4d6f950a76234a81f81c9f5f33794ee82077e5c8005e84a1491684a0643e77734e3dd1cd8367930d2a165a9c0af4d3c526ffe7407f8 +"@scure/base@npm:~1.2.5": + version: 1.2.6 + resolution: "@scure/base@npm:1.2.6" + checksum: 1058cb26d5e4c1c46c9cc0ae0b67cc66d306733baf35d6ebdd8ddaba242b80c3807b726e3b48cb0411bb95ec10d37764969063ea62188f86ae9315df8ea6b325 languageName: node linkType: hard @@ -2273,18 +2345,7 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:1.6.2": - version: 1.6.2 - resolution: "@scure/bip32@npm:1.6.2" - dependencies: - "@noble/curves": ~1.8.1 - "@noble/hashes": ~1.7.1 - "@scure/base": ~1.2.2 - checksum: e7586619f8a669e522267ce71a90b2d00c3a91da658f1f50e54072cf9f432ba26d2bb4d3d91a5d06932ab96612b8bd038bc31d885bbc048cebfb6509c4a790fc - languageName: node - linkType: hard - -"@scure/bip32@npm:^1.5.0": +"@scure/bip32@npm:1.7.0, @scure/bip32@npm:^1.7.0": version: 1.7.0 resolution: "@scure/bip32@npm:1.7.0" dependencies: @@ -2315,17 +2376,7 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.5.4": - version: 1.5.4 - resolution: "@scure/bip39@npm:1.5.4" - dependencies: - "@noble/hashes": ~1.7.1 - "@scure/base": ~1.2.4 - checksum: 744f302559ad05ee6ea4928572ac8f0b5443e8068fd53234c9c2e158814e910a043c54f0688d05546decadd2ff66e0d0c76355d10e103a28cb8f44efe140857a - languageName: node - linkType: hard - -"@scure/bip39@npm:^1.4.0": +"@scure/bip39@npm:1.6.0, @scure/bip39@npm:^1.6.0": version: 1.6.0 resolution: "@scure/bip39@npm:1.6.0" dependencies: @@ -2417,145 +2468,148 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/abort-controller@npm:4.0.2" +"@smithy/abort-controller@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/abort-controller@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: b5851bb498d7920926b844659381bd1b5b29e5741dce11daf4e4aeb14216d71d2db5f159e1ae20c538541443cee618a9d926c53b7a7693b1943689af5ca8ff5f + checksum: ae5c37f677e54c2808d1014d64bc9592b0120dec4e972475c15c67ff201f99613ebbe66937051ad2e4396b0d94a1034e6712e8cc0213142f252a9200f4c5ac37 languageName: node linkType: hard -"@smithy/config-resolver@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/config-resolver@npm:4.1.0" +"@smithy/config-resolver@npm:^4.4.6": + version: 4.4.6 + resolution: "@smithy/config-resolver@npm:4.4.6" dependencies: - "@smithy/node-config-provider": ^4.0.2 - "@smithy/types": ^4.2.0 - "@smithy/util-config-provider": ^4.0.0 - "@smithy/util-middleware": ^4.0.2 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/types": ^4.12.0 + "@smithy/util-config-provider": ^4.2.0 + "@smithy/util-endpoints": ^3.2.8 + "@smithy/util-middleware": ^4.2.8 tslib: ^2.6.2 - checksum: 28be57094f6c8e4bfdebc78ec6df647f6155699c1706aa571ee6fecf191f41cd260d1e164872f86f434c2eb428398e376ae83a46fc9adb3eb2a3e48b972d7674 + checksum: ffb98899d0343a16692e0bab514719b88d3f97a696489eabaa1c7e52d534083dac440e51dbf8cadf7193e9fabddd7244e77e32d03f905a1469c3d8113fa02a6c languageName: node linkType: hard -"@smithy/core@npm:^3.3.1": - version: 3.3.1 - resolution: "@smithy/core@npm:3.3.1" - dependencies: - "@smithy/middleware-serde": ^4.0.3 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-stream": ^4.2.0 - "@smithy/util-utf8": ^4.0.0 +"@smithy/core@npm:^3.22.0": + version: 3.22.0 + resolution: "@smithy/core@npm:3.22.0" + dependencies: + "@smithy/middleware-serde": ^4.2.9 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-body-length-browser": ^4.2.0 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-stream": ^4.5.10 + "@smithy/util-utf8": ^4.2.0 + "@smithy/uuid": ^1.1.0 tslib: ^2.6.2 - checksum: 879e5e62bc7206b177d61a65e849dc4ff6fe236d1427dd45cdf63a56b9e56ada93611d75ee545215b56a219eac30fdd475dce3bd78268da0b739d35c39226f02 + checksum: ed8053ea4985a9a0dc3d9deb8c86a34dfe7375174abe534e25d744ff749d06216fec8e2a1eccf01d8ac97fa632f0e95738c9af3530fd3f3ce0cf7355fb628e82 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/credential-provider-imds@npm:4.0.2" +"@smithy/credential-provider-imds@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/credential-provider-imds@npm:4.2.8" dependencies: - "@smithy/node-config-provider": ^4.0.2 - "@smithy/property-provider": ^4.0.2 - "@smithy/types": ^4.2.0 - "@smithy/url-parser": ^4.0.2 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 tslib: ^2.6.2 - checksum: c037a3165bf09f23faf7474c6ee035fb11b9481511519ee2f4d7db9a4fa6412d4cd03c79685662ea8fe087c678038bbfd4d7399139e093fbad7312fe91214ef3 + checksum: 954bb2abdfda69b6b17386bf0270a8b7730d0d9fc3699cd2574b65bf17ad112b9be6711177d2fcad9fd694bd790b97541298210c7d9dba4736d9fa56fe75f167 languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-codec@npm:4.0.2" +"@smithy/eventstream-codec@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/eventstream-codec@npm:4.2.8" dependencies: "@aws-crypto/crc32": 5.2.0 - "@smithy/types": ^4.2.0 - "@smithy/util-hex-encoding": ^4.0.0 + "@smithy/types": ^4.12.0 + "@smithy/util-hex-encoding": ^4.2.0 tslib: ^2.6.2 - checksum: f870d041f44d464ec6e6b7429fcc8b40f67664e1ebe16187246dbf8d56b3cd93b43491ef849719db226ff4e658574490c2b74a7c86357c698b599560cfd3510a + checksum: ef010dbb65eb6b24a7a89eaaba993b045f0aaae16660e5e99aa9f000019b40d00de51004be63f2a17e05a5ad4c99192d2ba2bfa11e13c0807f3e2006f8411dea languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-browser@npm:4.0.2" +"@smithy/eventstream-serde-browser@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/eventstream-serde-browser@npm:4.2.8" dependencies: - "@smithy/eventstream-serde-universal": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/eventstream-serde-universal": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 2d212a3dc2643413699cb8e26fde77c7fea8381614a4c5c88c1de2e9fb9a6f50b7368d0689c10f3034bba48af640c465f338d1f4449d77ad531ae4fc866dd558 + checksum: 0d69fef4485ba86e3381d1e47465b1dfe60f6fe34a1fed7ccb359c965cc4b92c99d7c5ed70cb0d26b19d8fc3b8c49db0a140578deef152930534b20d730751d6 languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/eventstream-serde-config-resolver@npm:4.1.0" +"@smithy/eventstream-serde-config-resolver@npm:^4.3.8": + version: 4.3.8 + resolution: "@smithy/eventstream-serde-config-resolver@npm:4.3.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3cdad747060f1598944b4a5f734b10cd1dfe4fac1f1207a2ccedcee75a38523c887868521da90494b6fd49ea48ba385820cb97f1034079f4c16dcc030baa85bc + checksum: 849544e1212d98469ca3d6e73919a9ff5bc2eaf903226193ad0857d03c11129a03ddbf4177673059c6a97af015cb0f32530018e42a430b1c5e639d95174f64e8 languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-node@npm:4.0.2" +"@smithy/eventstream-serde-node@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/eventstream-serde-node@npm:4.2.8" dependencies: - "@smithy/eventstream-serde-universal": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/eventstream-serde-universal": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 77d025e983ab72faa3613d9f1b84f917f22848e9c0889da1828f63f93f99a61962b701da6104d61844a01d23cd1082309bcf80c3a417ecc64e1493e4f1f08120 + checksum: d95a5317be7452129259d491c0c7d35f90440c8b67a6006476152182cefd1e5e96d4e090419fb850afb7ec763940134c351cbc6d6b46c03e9c6331e1e7f79ba4 languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-universal@npm:4.0.2" +"@smithy/eventstream-serde-universal@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/eventstream-serde-universal@npm:4.2.8" dependencies: - "@smithy/eventstream-codec": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/eventstream-codec": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 8e760cc5646bb8804429ad811b62d2a9308127db33dca4ac7c362ddc6f1230067cde263144830cd83152656b70c0eaf19895c649e2d406efa46c2aed6af9701b + checksum: 3d49d9f24e4c1f91fd23439388e93cbd94579632dfc16353e519971fca8eb5e48fec29d0cf88007ccca5f45f9943f80de21a1f7f17f1d9bf5cc28d40078a98e1 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.2": - version: 5.0.2 - resolution: "@smithy/fetch-http-handler@npm:5.0.2" +"@smithy/fetch-http-handler@npm:^5.3.9": + version: 5.3.9 + resolution: "@smithy/fetch-http-handler@npm:5.3.9" dependencies: - "@smithy/protocol-http": ^5.1.0 - "@smithy/querystring-builder": ^4.0.2 - "@smithy/types": ^4.2.0 - "@smithy/util-base64": ^4.0.0 + "@smithy/protocol-http": ^5.3.8 + "@smithy/querystring-builder": ^4.2.8 + "@smithy/types": ^4.12.0 + "@smithy/util-base64": ^4.3.0 tslib: ^2.6.2 - checksum: da210125fdf56981bba5f456b24bd45571c8bf7140cb2f2bfa2cacb522b9fdbd785eb751632dd42e2c4eb8a14b187e113d044fd4b4e8c9a7bc446f90292df435 + checksum: de73fa72fb059a1b52771b8b4ab1ed541c1164f5e4ee6e7a6e6110c08081949e81236108698b2c91d61a8bbd5104bc0d05a93624a44d411f313c6342f0d01b74 languageName: node linkType: hard -"@smithy/hash-node@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/hash-node@npm:4.0.2" +"@smithy/hash-node@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/hash-node@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 - "@smithy/util-buffer-from": ^4.0.0 - "@smithy/util-utf8": ^4.0.0 + "@smithy/types": ^4.12.0 + "@smithy/util-buffer-from": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: 3bf68605d3fa033fbfd556f60966ad3fa5f4f66e902fbe2b901cfaaf7d74b545d4a5a15ceebc1b2cf69557eac02c66af3b5e7071c11341ea536d36c4c4ee755c + checksum: 93916922b88e19c98b75b6c75b639e53c63ff62fb302f578d6b07fa9c1feb091b892949c3590600f708e2277395bff9d97386527990fbf74ec37056d035d3880 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/invalid-dependency@npm:4.0.2" +"@smithy/invalid-dependency@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/invalid-dependency@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 96ea5e6c02c112e78655bf5538e13bca5ba374692db3e1ac73683143d0f2183958c1b8cbf4c1ed4d1357f45174f338a255352ad6d7e83fdf2601c1cb6ff73997 + checksum: 966e4b7fb233db2db150087f552230cb3b2b3169632eaff9bf57b7f3221505d46ad20c7568172e4d76c04bc0c8f89ecf099875a1547e861426236ce2be6a90ea languageName: node linkType: hard @@ -2568,241 +2622,242 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/is-array-buffer@npm:4.0.0" +"@smithy/is-array-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/is-array-buffer@npm:4.2.0" dependencies: tslib: ^2.6.2 - checksum: 8226fc1eca7aacd7f887f3a5ec2f15a3cafa72aa1c42d3fc759c66600481381d18ec7285a8195f24b9c4fe0ce9a565c133b2021d86a8077aebce3f86b3716802 + checksum: a738fd54758912d0a38dbb1f44f3e4274773be57fe29179a616ffe502fc45f708a49643be037b4d8fc24d18a68e489e314e258140c30b1589b46db6d62a78173 languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/middleware-content-length@npm:4.0.2" +"@smithy/middleware-content-length@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/middleware-content-length@npm:4.2.8" dependencies: - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: fa93318eb108e4ee32d734acbd74cbae10cce4f2d323a5399aac831a0d24ef7ca5f66c3af2c0e94238bf1a603f79d65fcfe42d87757f4aacfbdb2ee2da1d79a8 + checksum: cda46f45ba40d70ac46a75822b33ca23c25973735e7d2e7cd932366c8227be1d2ce348582562a10293ea287d75b094305ae89afc1fa540d1b0e4c03a116e901d languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/middleware-endpoint@npm:4.1.2" - dependencies: - "@smithy/core": ^3.3.1 - "@smithy/middleware-serde": ^4.0.3 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 - "@smithy/url-parser": ^4.0.2 - "@smithy/util-middleware": ^4.0.2 +"@smithy/middleware-endpoint@npm:^4.4.12": + version: 4.4.12 + resolution: "@smithy/middleware-endpoint@npm:4.4.12" + dependencies: + "@smithy/core": ^3.22.0 + "@smithy/middleware-serde": ^4.2.9 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 + "@smithy/url-parser": ^4.2.8 + "@smithy/util-middleware": ^4.2.8 tslib: ^2.6.2 - checksum: 69b38bfbaceb75f4aa84ea302cb8977d1bbc5f330ea654b93fbbed8c07edd70f86294f39b65d8011b310698f6ad7a2f0c1ea217f1d6f79b993793417f9c7dbb8 + checksum: cf8e6d8a6c216d886a8404f21b436df19474fcb1a02360457edeaa1a76189a71a2d98d94ab007b232ca6498c853acce52d410b2cbdf3c5f3f4c881e3cbe6b85b languageName: node linkType: hard -"@smithy/middleware-retry@npm:^4.1.3": - version: 4.1.3 - resolution: "@smithy/middleware-retry@npm:4.1.3" - dependencies: - "@smithy/node-config-provider": ^4.0.2 - "@smithy/protocol-http": ^5.1.0 - "@smithy/service-error-classification": ^4.0.3 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-retry": ^4.0.3 +"@smithy/middleware-retry@npm:^4.4.29": + version: 4.4.29 + resolution: "@smithy/middleware-retry@npm:4.4.29" + dependencies: + "@smithy/node-config-provider": ^4.3.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/service-error-classification": ^4.2.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-retry": ^4.2.8 + "@smithy/uuid": ^1.1.0 tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 99f9945ac64ca1193ec67c7db2633f3d1271d5eaf0041086c4f939cfea90661952ad3b5f27e30757535efcc06ead3593e5ddc56c1594b2da91adc2cb7d2311ec + checksum: 28d05db3e5cbc473bb72f48fc3340b3541c1542fe3d50c47c95d6942eeba3f9827998028c54c5e18cbc9ba45c87f396d72252e471ef060408e26506f1e66c640 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/middleware-serde@npm:4.0.3" +"@smithy/middleware-serde@npm:^4.2.9": + version: 4.2.9 + resolution: "@smithy/middleware-serde@npm:4.2.9" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: e64fb925d2ee344ade5781b727f06619b4e2f3b0153134a5c4e9850a5598b96fe542343ce2eaca57fb85a585e43570d6d324d6c9faf8b97040d2c18c30c94806 + checksum: 85217b475e95446d9b448ea89b8ed0ddce3ccc3275dffb723dfd667edcaf461b250b7051d8bcee7a446b8924ab4b4d03d043d35bd48f39b5a78bc516bd9dd646 languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/middleware-stack@npm:4.0.2" +"@smithy/middleware-stack@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/middleware-stack@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3401fc2e7fba63c71cc4dcebf489d39ece1396fccf858f9877a99b36aa625ab8c30a7866596f2f4bdf7128bd29800f06160dea0db01bde061fb63a0f43a60a20 + checksum: 45de485d2f5234a0eb6b84ecd7b961bbd4c1952626a750611fc237be87855f30f8a883f8d26ca2c84ff3adf8a81f53bf8b10a014ffa050ae06ac6bae9d6317c7 languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/node-config-provider@npm:4.0.2" +"@smithy/node-config-provider@npm:^4.3.8": + version: 4.3.8 + resolution: "@smithy/node-config-provider@npm:4.3.8" dependencies: - "@smithy/property-provider": ^4.0.2 - "@smithy/shared-ini-file-loader": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/property-provider": ^4.2.8 + "@smithy/shared-ini-file-loader": ^4.4.3 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 278cf7aec9b11228b103ec2e665c9242b457a2851d38259f645b55a87bfa66ef7b0b7b30c348998178597875f36134f77ae7d924e204f01764f37a0b2426adf6 + checksum: 98682d2c0235f041e7545ab7c5e9432a0d6307461042c21aa5cff2be5cebe5402a35de6a559c1a5a3b884c940d5d52679618552b422e393953ba2dc8a00e0fbb languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.4": - version: 4.0.4 - resolution: "@smithy/node-http-handler@npm:4.0.4" +"@smithy/node-http-handler@npm:^4.4.8": + version: 4.4.8 + resolution: "@smithy/node-http-handler@npm:4.4.8" dependencies: - "@smithy/abort-controller": ^4.0.2 - "@smithy/protocol-http": ^5.1.0 - "@smithy/querystring-builder": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/abort-controller": ^4.2.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/querystring-builder": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 315f9bfeb22c3d06add4a68a7e6fd394caa9fb22422e89c7fdc564a6d3d94da2355caed18558019f0ef919385473f72e2cad71fc72f47166a14c33a69e0f0ee5 + checksum: ef328ede589ef1438de83450f7569a7e9ecf575aa0cb8153129e4a97f3b5cc67a2e0dee1058e7135c42307cd755ecbfb95c9b7b827b60068dd9479af90087e79 languageName: node linkType: hard -"@smithy/property-provider@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/property-provider@npm:4.0.2" +"@smithy/property-provider@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/property-provider@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 3038ce031036d3d055bb1c9401f30bea7f1410b2db1d0cd3565cd25f7f374f18a67792930b2e3d0f73c2b1fcbfb23d3bfbd110197f1fd15d0acaa778719fa267 + checksum: 6a19b5e44ceb37a85999796dfa73ce7d82653c1db0cfe332786e202b7333f988dc5e65902c0492dc37d48f4c48ccf35fc4fa92cdf1ca9e8f24d2d1d6206e3dd5 languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.1.0": - version: 5.1.0 - resolution: "@smithy/protocol-http@npm:5.1.0" +"@smithy/protocol-http@npm:^5.3.8": + version: 5.3.8 + resolution: "@smithy/protocol-http@npm:5.3.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 091e8c129411c2072e640aa6a8440fdcfd265fc7b4aef3ff52f419c24dc5f8e34009f03fc810a87a49c7e66d0bf4636b4fbd76a84be563a97b41e9c927f90337 + checksum: 4371cbb493109edde1177bfd84b2d4d7887fbf821085df3c9251ba99f635e355f967c4dea32f02aaac52edabb408e946a3452bd7723d724827d56e7f2292614d languageName: node linkType: hard -"@smithy/querystring-builder@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/querystring-builder@npm:4.0.2" +"@smithy/querystring-builder@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/querystring-builder@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 - "@smithy/util-uri-escape": ^4.0.0 + "@smithy/types": ^4.12.0 + "@smithy/util-uri-escape": ^4.2.0 tslib: ^2.6.2 - checksum: d802d3af37192d574f59e71aa050ec6daa63df58f2d1b44b95ef9b0ff93e6a40960db4a91eed853be94cdbcd1faa6a658bc56c9b9d1d85449d9215137918b3dd + checksum: 7bface9bf3586625392d1861318c93d356d2353fa79ff024df55ac0b71d0bfc77a43eae91a3eda01e7bd68538c382229d0b1841e95f27d75bfb0dc9d76441933 languageName: node linkType: hard -"@smithy/querystring-parser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/querystring-parser@npm:4.0.2" +"@smithy/querystring-parser@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/querystring-parser@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 4aa30d35b6cf06da6e55386afa70b8d33d3171ed9b3a303a65e23d67a9c090c302d373af4d75609a981188c9441dc81c22d4adb1018888cbd16a62c9ab363d7d + checksum: a7c89eb63321fc8c4ed5a4b1bbb88f1254e128ab86e7d5aa666a2a2b7889489ccbc3efb7f73c34567b6dad8356b5cecb2a512ff0fd5a19266eb187ffe9868d86 languageName: node linkType: hard -"@smithy/service-error-classification@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/service-error-classification@npm:4.0.3" +"@smithy/service-error-classification@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/service-error-classification@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 - checksum: 6fa7a20dafca3e0a03d69ac0dc83749a2cc04061af4c7b8a06e8fbdff4050325536cfbe299cf0bbfc9a9cc0b2541fc22cfe923ae45a8bddce64d83927990253d + "@smithy/types": ^4.12.0 + checksum: bf7dc438050d6fd9f563e4479a680fa284df6d2acddd305c27f5c0cb5dd94aa17b5ede42074100072be97f6cd04bda7e3ffb1e9535ececac7ebb9a11aa982c46 languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/shared-ini-file-loader@npm:4.0.2" +"@smithy/shared-ini-file-loader@npm:^4.4.3": + version: 4.4.3 + resolution: "@smithy/shared-ini-file-loader@npm:4.4.3" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: d6304d06c3e7e252a29197fae37f827b5924dbf98e1473adebc398256cdde67f14c9afa8b0ffc2b914cbf9d257c2417f5d0ebede95f824814d1c11077e1d1721 + checksum: bda50324b855b8994029a47d256a70bb25f886759d5826e88479bb169f17d8d6c44570b762ea15b38fb29818ea6294fddc15027552efd9e2ef81c5465430afd2 languageName: node linkType: hard -"@smithy/signature-v4@npm:^5.1.0": - version: 5.1.0 - resolution: "@smithy/signature-v4@npm:5.1.0" - dependencies: - "@smithy/is-array-buffer": ^4.0.0 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 - "@smithy/util-hex-encoding": ^4.0.0 - "@smithy/util-middleware": ^4.0.2 - "@smithy/util-uri-escape": ^4.0.0 - "@smithy/util-utf8": ^4.0.0 +"@smithy/signature-v4@npm:^5.3.8": + version: 5.3.8 + resolution: "@smithy/signature-v4@npm:5.3.8" + dependencies: + "@smithy/is-array-buffer": ^4.2.0 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 + "@smithy/util-hex-encoding": ^4.2.0 + "@smithy/util-middleware": ^4.2.8 + "@smithy/util-uri-escape": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: 302741d0779c419ef13be6fd303476d1544c9ad6b531e40d7883941b72817f1e36342474b5fe1cde177b38d1b8cd89d0da59eb3b41fa1ab719e7988b3cf35155 + checksum: 651073b25020d314a2dcca81fbfe2baa6522ec5be7bf930c1cfea1e24a1b7babe6da6dcf37c3faa0e69c1b994d3f3fb9d501e1dba787ed4e098f8cebf8b9809d languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/smithy-client@npm:4.2.2" +"@smithy/smithy-client@npm:^4.11.1": + version: 4.11.1 + resolution: "@smithy/smithy-client@npm:4.11.1" dependencies: - "@smithy/core": ^3.3.1 - "@smithy/middleware-endpoint": ^4.1.2 - "@smithy/middleware-stack": ^4.0.2 - "@smithy/protocol-http": ^5.1.0 - "@smithy/types": ^4.2.0 - "@smithy/util-stream": ^4.2.0 + "@smithy/core": ^3.22.0 + "@smithy/middleware-endpoint": ^4.4.12 + "@smithy/middleware-stack": ^4.2.8 + "@smithy/protocol-http": ^5.3.8 + "@smithy/types": ^4.12.0 + "@smithy/util-stream": ^4.5.10 tslib: ^2.6.2 - checksum: 67eb6b29cde36125dd135c5facfdf57346783e8ba18e5d8b4c1677d4f7636be37b8cdeb785348f797aa8d7ed7ae0c0af60fb65511f3141483e416507a6a6c760 + checksum: 0f63b21fad19abaee85da7c4c085dd84d73ffa32da04939ea65ae713f91f22c693fe396d1a95ff6a66f20b632baaece52f6021227dcdb5dfdc1d22e612c3f871 languageName: node linkType: hard -"@smithy/types@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/types@npm:4.2.0" +"@smithy/types@npm:^4.12.0": + version: 4.12.0 + resolution: "@smithy/types@npm:4.12.0" dependencies: tslib: ^2.6.2 - checksum: 296b2122144a4edacbecf6baec138c6d4abb838b98823dbb8b94e90e89a0e1c13cf3a7bbd82900b4a229ebe58dac9cd516fc4a6ddf39b1e5190c91cce64c25a5 + checksum: bd74ef4dba3683f75531650c8dbba018b05fae70e69f0f427136aef3df13a525521a85053b676a5985a11d8273d06eb12bec867c4221eb5a5b2b4eb6a3706dc4 languageName: node linkType: hard -"@smithy/url-parser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/url-parser@npm:4.0.2" +"@smithy/url-parser@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/url-parser@npm:4.2.8" dependencies: - "@smithy/querystring-parser": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/querystring-parser": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: a193c8d215756d5ee0f4fc52262f3aebba2c71a1f21e309f2d36fae79b1575379fd084383c1f159473879e72ea158650bcfa25048815378880867929fade24f1 + checksum: f354e69cc629084bbb7ed1759f2970d96e2c462d2849402057e86aeaa18b32d13f7e24b5244ecddac398b6504fe3705b8ee2696a68df662a556ae20566d68f38 languageName: node linkType: hard -"@smithy/util-base64@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-base64@npm:4.0.0" +"@smithy/util-base64@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/util-base64@npm:4.3.0" dependencies: - "@smithy/util-buffer-from": ^4.0.0 - "@smithy/util-utf8": ^4.0.0 + "@smithy/util-buffer-from": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: 7fb3430d6e1cbb4bcc61458587bb0746458f0ec8e8cd008224ca984ff65c3c3307b3a528d040cef4c1fc7d1bd4111f6de8f4f1595845422f14ac7d100b3871b1 + checksum: 67b707c36fb384bcd0233f27968f103ff2fd25da93ea85d8e22eb492dc668487b222f3aac151b2f348548946a439a741c0f3aa5f28f1d554ed428415b98c01c4 languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-body-length-browser@npm:4.0.0" +"@smithy/util-body-length-browser@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-body-length-browser@npm:4.2.0" dependencies: tslib: ^2.6.2 - checksum: 72381e12de7cccbb722c60e3f3ae0f8bce7fc9a9e8064c7968ac733698a5a30bea098a3c365095c519491fe64e2e949c22f74d4f1e0d910090d6389b41c416eb + checksum: 60feae29fc6429fac8babac8e0b82307bd14862d5a0fa554e100ff9f99c6b959cd30e1e022e0059214df329e463e631003b3a29307f02deb233537582a1dbe31 languageName: node linkType: hard -"@smithy/util-body-length-node@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-body-length-node@npm:4.0.0" +"@smithy/util-body-length-node@npm:^4.2.1": + version: 4.2.1 + resolution: "@smithy/util-body-length-node@npm:4.2.1" dependencies: tslib: ^2.6.2 - checksum: 12d8de9c526647f51f56804044f5847f0c7c7afee30fa368d2b7bd4b4de8fe2438a925aab51965fe8a4b2f08f68e8630cc3c54a449beae6646d99cae900ed106 + checksum: bf4ae0fa4f49cd9f9b5f117cbb368059a77653281cbd7b881a24f82484ba2415eba01c67700381723f972db5103ca5120055eb763d32395dde469fb522b15658 languageName: node linkType: hard @@ -2816,116 +2871,115 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-buffer-from@npm:4.0.0" +"@smithy/util-buffer-from@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-buffer-from@npm:4.2.0" dependencies: - "@smithy/is-array-buffer": ^4.0.0 + "@smithy/is-array-buffer": ^4.2.0 tslib: ^2.6.2 - checksum: 8124e28d3e34b5335c08398a9081cc56a232d23e08172d488669f91a167d0871d36aba9dd3e4b70175a52f1bd70e2bf708d4c989a19512a4374d2cf67650a15e + checksum: c9908db97a3e91ae7ac869a3cfba3c345f9bc8072ec9545a25f318b8a9604d6ed6139298e1b75fffce7347cc15a5823e178b631828aee674fdb6b4ed3810d647 languageName: node linkType: hard -"@smithy/util-config-provider@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-config-provider@npm:4.0.0" +"@smithy/util-config-provider@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-config-provider@npm:4.2.0" dependencies: tslib: ^2.6.2 - checksum: 91bd9e0bec4c4a37c3fc286e72f3387be9272b090111edaee992d9e9619370f3f2ad88ce771ef42dbfe40a44500163b633914486e662526591f5f737d5e4ff5a + checksum: 7ff1cb4c11f779021e0e96edfd619d375297420b3eed6998e8dc2f2409895b74e803e8147045b80432d1784da35d2963d941785083343e8333d0f6308ff36fe3 languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^4.0.10": - version: 4.0.10 - resolution: "@smithy/util-defaults-mode-browser@npm:4.0.10" +"@smithy/util-defaults-mode-browser@npm:^4.3.28": + version: 4.3.28 + resolution: "@smithy/util-defaults-mode-browser@npm:4.3.28" dependencies: - "@smithy/property-provider": ^4.0.2 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 - bowser: ^2.11.0 + "@smithy/property-provider": ^4.2.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 86a8e39eb6323b4b1b2556081c69b30418e35536a1cb97d2729f1c59d28470409a848e7da2b96bfdc6dfc4bc6b49d89acf9803ece050d75a91dc423c3c01d44a + checksum: 982623d90d54a0c2f9413613b017cdabd0b4a2d2da072def5ee8982853dc4b9bbae3eae95fa1f3a8aa0c89fea7b25e0309f316f07def3f74eacdaa8982b5b18f languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^4.0.10": - version: 4.0.10 - resolution: "@smithy/util-defaults-mode-node@npm:4.0.10" - dependencies: - "@smithy/config-resolver": ^4.1.0 - "@smithy/credential-provider-imds": ^4.0.2 - "@smithy/node-config-provider": ^4.0.2 - "@smithy/property-provider": ^4.0.2 - "@smithy/smithy-client": ^4.2.2 - "@smithy/types": ^4.2.0 +"@smithy/util-defaults-mode-node@npm:^4.2.31": + version: 4.2.31 + resolution: "@smithy/util-defaults-mode-node@npm:4.2.31" + dependencies: + "@smithy/config-resolver": ^4.4.6 + "@smithy/credential-provider-imds": ^4.2.8 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/property-provider": ^4.2.8 + "@smithy/smithy-client": ^4.11.1 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 93f02b0a65f6410cb8931e869b83443c433565d9d1f9380436fdbd277b133400ab0d31edfc4cc9dd58c97b125202f8c6123c4c573293c4cc59b32076f99c2f0b + checksum: f298527d411687de4914b091eb7d57c8fbe979a30de4ef5ff9dfa34dab636361289172db6d98d8001c3872741bccd15ba726e6baef73eff16d7f1551a774f0c0 languageName: node linkType: hard -"@smithy/util-endpoints@npm:^3.0.2": - version: 3.0.2 - resolution: "@smithy/util-endpoints@npm:3.0.2" +"@smithy/util-endpoints@npm:^3.2.8": + version: 3.2.8 + resolution: "@smithy/util-endpoints@npm:3.2.8" dependencies: - "@smithy/node-config-provider": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/node-config-provider": ^4.3.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 751b802a7e1f42e3ec70bd35ebe6a0964ee7c4fdd49da28351b28bd4c08438ea02d56230b5bd45787a21e963648453af7c69dc3d0a3a4da22758e5fa7084b2ec + checksum: d50a189c86b18737e513fa20ce46e3c472d87518e377a04683d7997059270f57c8dec80d5e4e0acb0251cd4b3c9a8d8ed1b9cbdd2ed25ada86ffb59a9cadff5b languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-hex-encoding@npm:4.0.0" +"@smithy/util-hex-encoding@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-hex-encoding@npm:4.2.0" dependencies: tslib: ^2.6.2 - checksum: b932fa0e5cd2ba2598ad55ce46722bbbd15109809badaa3e4402fe4dd6f31f62b9fb49d2616e38d660363dc92a5898391f9c8f3b18507c36109e908400785e2a + checksum: 3c4ea7126245c02257bf0fa49b971eaa9f84d0296023fed7b7eea7fb4622d9d473a9fb2be2a3df765013515f38811b8da028cbf7c2181fafecac69d71299263a languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/util-middleware@npm:4.0.2" +"@smithy/util-middleware@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/util-middleware@npm:4.2.8" dependencies: - "@smithy/types": ^4.2.0 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 74fdc436056b453fb9365c3c98067ae0d3e4ac0795868946dbecf3816b99996e4c5e5d02604b2bf57a1adda3669cf00b8fc9a3bb9db9af2c8c4de63be9ba9a4a + checksum: bc6b1f549d5e6faced387b2158c56f8b59937853987dbddd0b49da82cc2e97630d718b30c426fd77ecf882ff151c330428e25e2780407aeefbfcfd3c5e2c9a71 languageName: node linkType: hard -"@smithy/util-retry@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/util-retry@npm:4.0.3" +"@smithy/util-retry@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/util-retry@npm:4.2.8" dependencies: - "@smithy/service-error-classification": ^4.0.3 - "@smithy/types": ^4.2.0 + "@smithy/service-error-classification": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 9cabe7f127729dcd93ef1fd9d5f47d5efe958cac534b51310fdfcfee6c1be2d6146a9c8f5f3bb4ba46d8be95e22d2b5b47de4dc15ab17b3c24b352ba063be0b5 + checksum: a3c84a496c169c5b3a002c9d98bb53cbd8401a81e17fdb6aaf1d2076ce849901c191dc98d62b3bb7bce8529075505ff6d2fd1fa39b1d1967dd24874a1d67920d languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-stream@npm:4.2.0" - dependencies: - "@smithy/fetch-http-handler": ^5.0.2 - "@smithy/node-http-handler": ^4.0.4 - "@smithy/types": ^4.2.0 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-buffer-from": ^4.0.0 - "@smithy/util-hex-encoding": ^4.0.0 - "@smithy/util-utf8": ^4.0.0 +"@smithy/util-stream@npm:^4.5.10": + version: 4.5.10 + resolution: "@smithy/util-stream@npm:4.5.10" + dependencies: + "@smithy/fetch-http-handler": ^5.3.9 + "@smithy/node-http-handler": ^4.4.8 + "@smithy/types": ^4.12.0 + "@smithy/util-base64": ^4.3.0 + "@smithy/util-buffer-from": ^4.2.0 + "@smithy/util-hex-encoding": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 tslib: ^2.6.2 - checksum: b392f9464b2e93078e010d8f8e9a6bdb14633ea79eb050e5adcce143721ea2386447e5c565469d636029415d7466e7886c5367750b1d10033a8534ab23121404 + checksum: 0dc406923b0abdd2de6c6b782a3d3722b5192d453f25ebd2ca9821075223d22179a3f174bfb8372fa05fbdcd32d17e16e9fe80bdd65c41aa07155c7a17028b68 languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-uri-escape@npm:4.0.0" +"@smithy/util-uri-escape@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-uri-escape@npm:4.2.0" dependencies: tslib: ^2.6.2 - checksum: 7ea350545971f8a009d56e085c34c949c9045862cfab233ee7adc16e111a076a814bb5d9279b2b85ee382e0ed204a1c673ac32e3e28f1073b62a2c53a5dd6d19 + checksum: 2817dcf7691016ea7e6c63f11793023a814d93345b87013dc20b8dd952e9dfa28c3d90bf7cd9c0568df827d173005317782a26742da70026c64e5f1fdb422942 languageName: node linkType: hard @@ -2939,24 +2993,33 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-utf8@npm:4.0.0" +"@smithy/util-utf8@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-utf8@npm:4.2.0" dependencies: - "@smithy/util-buffer-from": ^4.0.0 + "@smithy/util-buffer-from": ^4.2.0 tslib: ^2.6.2 - checksum: 08811c5a18c341782b3b65acc4640a9f559aeba61c889dbdc56e5153a3b7f395e613bfb1ade25cf15311d6237f291e1fce8af197c6313065e0cb084fd2148c64 + checksum: 5aeb13cd57b31184ae2bb101c74e232f3621a49dabcfc0de25fdc7668e61e60206e3d80a08dbc84c8199ddd9e267f7e0a7bea3d81d9a60ab5d6aa2369baedd75 languageName: node linkType: hard -"@smithy/util-waiter@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/util-waiter@npm:4.0.3" +"@smithy/util-waiter@npm:^4.2.8": + version: 4.2.8 + resolution: "@smithy/util-waiter@npm:4.2.8" dependencies: - "@smithy/abort-controller": ^4.0.2 - "@smithy/types": ^4.2.0 + "@smithy/abort-controller": ^4.2.8 + "@smithy/types": ^4.12.0 tslib: ^2.6.2 - checksum: 90611e62bc70ae03c4de672cdf34f2beb8ac54bfa76ff22b5acbcb4302d9ba7207541a9e5a0145028c8d8aa99e6b276cad300b1a7d2af675661ff942401f5ddb + checksum: eb5d83a2fd5de5a38dcab69e2f483400e4e2c2993de2beaf4f771814dde36e20bb400466323dfe8eccdeb92a6c8e2889fcd63aedb3af9ebb865710a3582c1147 + languageName: node + linkType: hard + +"@smithy/uuid@npm:^1.1.0": + version: 1.1.0 + resolution: "@smithy/uuid@npm:1.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 97b749dc4a57b3e23df6717c990d01c8724c97fe45abe669f17a834e7f12d882f537024db3a8604692658c264c0d9911cf22a8ec86f4cce280a0a4d15e19ceaf languageName: node linkType: hard @@ -2969,17 +3032,10 @@ __metadata: languageName: node linkType: hard -"@solidity-parser/parser@npm:^0.19.0": - version: 0.19.0 - resolution: "@solidity-parser/parser@npm:0.19.0" - checksum: b1c556eeb83ac99f066ea4b0eb0bee45321a667f76dbafef95f8bc6adf32d1f8f52f752fb47620c61d1a264d3acb7534d75a8daa6d21099f55bc52b0af13ad83 - languageName: node - linkType: hard - "@solidity-parser/parser@npm:^0.20.1": - version: 0.20.1 - resolution: "@solidity-parser/parser@npm:0.20.1" - checksum: a05152e54be574b3b75cc6ad059bec01e4ff26c6bc68a0fa4fb9aca3542058c6c657a65d9f3cfb553b986e4143724a8ce98500b3b5453d2f7b2f4397cc32cf63 + version: 0.20.2 + resolution: "@solidity-parser/parser@npm:0.20.2" + checksum: 5623e9b5863d59aab50f0fc98fe81a2b693e64feb29e2cf011a826d0e89374bbb6dfaf3fce48ac5c462251c792042f47805ba2004993182b717314e7d7292cd4 languageName: node linkType: hard @@ -3004,9 +3060,9 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 + version: 1.0.12 + resolution: "@tsconfig/node10@npm:1.0.12" + checksum: 27e2f989dbb20f773aa121b609a5361a473b7047ff286fce7c851e61f5eec0c74f0bdb38d5bd69c8a06f17e60e9530188f2219b1cbeabeac91f0a5fd348eac2a languageName: node linkType: hard @@ -3094,11 +3150,11 @@ __metadata: linkType: hard "@types/bn.js@npm:^5.1.0": - version: 5.1.6 - resolution: "@types/bn.js@npm:5.1.6" + version: 5.2.0 + resolution: "@types/bn.js@npm:5.2.0" dependencies: "@types/node": "*" - checksum: 887411126d40e3d28aef2df8075cda2832db2b0e926bb4046039bbb026f2e3cfbcf1a3ce90bd935be0fcc039f8009e32026dfbb84a11c1f5d051cd7f8194ba23 + checksum: 38fb5512e51edd8386d560ac60d9489014cfcea41d8c383ec9070b176f8ea640189afc1b57fe8cbbe570dec8909d8e05fa129097f0dd4e2a34ebdd69cec4b790 languageName: node linkType: hard @@ -3112,11 +3168,12 @@ __metadata: linkType: hard "@types/chai@npm:*": - version: 5.2.2 - resolution: "@types/chai@npm:5.2.2" + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" dependencies: "@types/deep-eql": "*" - checksum: 386887bd55ba684572cececd833ed91aba6cce2edd8cc1d8cefa78800b3a74db6dbf5c5c41af041d1d1f3ce672ea30b45c9520f948cdc75431eb7df3fbba8405 + assertion-error: ^2.0.1 + checksum: eb4c2da9ec38b474a983f39bfb5ec4fbcceb5e5d76d184094d2cbc4c41357973eb5769c8972cedac665a233251b0ed754f1e338fcf408d381968af85cdecc596 languageName: node linkType: hard @@ -3199,7 +3256,7 @@ __metadata: languageName: node linkType: hard -"@types/lru-cache@npm:5.1.1, @types/lru-cache@npm:^5.1.0": +"@types/lru-cache@npm:5.1.1": version: 5.1.1 resolution: "@types/lru-cache@npm:5.1.1" checksum: e1d6c0085f61b16ec5b3073ec76ad1be4844ea036561c3f145fc19f71f084b58a6eb600b14128aa95809d057d28f1d147c910186ae51219f58366ffd2ff2e118 @@ -3237,21 +3294,21 @@ __metadata: linkType: hard "@types/node-fetch@npm:^2.6.1": - version: 2.6.12 - resolution: "@types/node-fetch@npm:2.6.12" + version: 2.6.13 + resolution: "@types/node-fetch@npm:2.6.13" dependencies: "@types/node": "*" - form-data: ^4.0.0 - checksum: 9647e68f9a125a090220c38d77b3c8e669c488658ae7506f1b4f9568214beba087624b1705bba1dc76649a65281ce3fd5b400e15266cbef8088027fb88777557 + form-data: ^4.0.4 + checksum: e4b4db3a8c23309dadf0beb87e88882af1157f0c08b7b76027ac40add6ed363c924e2fa275f42ae45eacf776b25ed439d14400d9d6372eb39634dd4c7e7e1ad8 languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 22.15.16 - resolution: "@types/node@npm:22.15.16" + version: 25.1.0 + resolution: "@types/node@npm:25.1.0" dependencies: - undici-types: ~6.21.0 - checksum: a90136c365f47da329cc41814dedfb9e8484c1429baf8d8f99c2d427181319bce933371940eb1377b9f73ab0f8c4d40621fece878eee36222283b9982ddf7227 + undici-types: ~7.16.0 + checksum: 7e96871cd81bd12fa9e7da87bbeffcc0b9ffb8972dd4aadc59454430fc9e87a4e3dc63efc66fd1747c462431e46b706f68e8f98261d4e6056bf01c90165e5644 languageName: node linkType: hard @@ -3279,11 +3336,11 @@ __metadata: linkType: hard "@types/node@npm:^18.6.1": - version: 18.19.99 - resolution: "@types/node@npm:18.19.99" + version: 18.19.130 + resolution: "@types/node@npm:18.19.130" dependencies: undici-types: ~5.26.4 - checksum: 59a77f2cd576e852b320d9e4c769cd50ffcad03da6b7311584d56aaf49d007b5fc942492e67cb6bdd5e737d1b5fde56f81c604c4a625e208e19d5828900c079f + checksum: b7032363581c416e721a88cffdc2b47662337cacd20f8294f5619a1abf79615c7fef1521964c2aa9d36ed6aae733e1a03e8c704661bd5a0c2f34b390f41ea395 languageName: node linkType: hard @@ -3311,11 +3368,11 @@ __metadata: linkType: hard "@types/secp256k1@npm:^4.0.1": - version: 4.0.6 - resolution: "@types/secp256k1@npm:4.0.6" + version: 4.0.7 + resolution: "@types/secp256k1@npm:4.0.7" dependencies: "@types/node": "*" - checksum: 984494caf49a4ce99fda2b9ea1840eb47af946b8c2737314108949bcc0c06b4880e871296bd49ed6ea4c8423e3a302ad79fec43abfc987330e7eb98f0c4e8ba4 + checksum: 29c9fd4c2687f323ef546eac4b25676ebe62b74ecfb88d595b0bda26bdf5da2bcc35ee178c333aa024e696434b0ae97930e5fab05f4813c4895e7272fc0bc2d4 languageName: node linkType: hard @@ -3327,9 +3384,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: d488eaeddb23879a0a8a759bed667e1a76cb0dd4d23e3255538e24c189db387357953ca9e7a3bda2bb7f95e84cac8fe0db4fbe6b3456e893043337732d1d23cc + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 76d218e414482a398148d5c28f2bfa017108869f3fc18cda379c9d8d062348f8b9653ae2fa8642d3b5b52e211928fe8be34f22da4e1f08245c84e0e51e040673 languageName: node linkType: hard @@ -3344,18 +3401,18 @@ __metadata: linkType: hard "@types/sinon@npm:*": - version: 17.0.4 - resolution: "@types/sinon@npm:17.0.4" + version: 21.0.0 + resolution: "@types/sinon@npm:21.0.0" dependencies: "@types/sinonjs__fake-timers": "*" - checksum: 487f43bda8d8b2ef32d1b3c08e5a68e17705d2c7470ea89c8fd62e3a086f9a35faf65d37a57bf189004c4e7adbc5f9562dfaa332c54e06a8d99fc7361f3ac004 + checksum: 9700d58ee14d4e487519b98c044b1c1c89cc8f1eb844fb4f264a20d5f742da0db94ebdda8a7704dc4e9a460c237e9ae946d32451fd65d8158443d1591084a300 languageName: node linkType: hard "@types/sinonjs__fake-timers@npm:*": - version: 8.1.5 - resolution: "@types/sinonjs__fake-timers@npm:8.1.5" - checksum: 7e3c08f6c13df44f3ea7d9a5155ddf77e3f7314c156fa1c5a829a4f3763bafe2f75b1283b887f06e6b4296996a2f299b70f64ff82625f9af5885436e2524d10c + version: 15.0.1 + resolution: "@types/sinonjs__fake-timers@npm:15.0.1" + checksum: a4bbc3cf17e016db5c4d02bd3a0437a2d104b73dc90c85b96d9e267a14504601f376f7b559855cfade303f55126283c7e8c43a675ac616bfb696e4f489793555 languageName: node linkType: hard @@ -3659,25 +3716,25 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^3.0.0": - version: 3.0.1 - resolution: "abbrev@npm:3.0.1" - checksum: e70b209f5f408dd3a3bbd0eec4b10a2ffd64704a4a3821d0969d84928cc490a8eb60f85b78a95622c1841113edac10161c62e52f5e7d0027aa26786a8136e02e +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: d0344b63d28e763f259b4898c41bdc92c08e9d06d0da5617d0bbe4d78244e46daea88c510a2f9472af59b031d9060ec1a999653144e793fd029a59dae2f56dc8 languageName: node linkType: hard -"abitype@npm:1.0.8, abitype@npm:^1.0.6": - version: 1.0.8 - resolution: "abitype@npm:1.0.8" +"abitype@npm:1.2.3, abitype@npm:^1.2.3": + version: 1.2.3 + resolution: "abitype@npm:1.2.3" peerDependencies: typescript: ">=5.0.4" - zod: ^3 >=3.22.0 + zod: ^3.22.0 || ^4.0.0 peerDependenciesMeta: typescript: optional: true zod: optional: true - checksum: 104bc2f6820ced8d2cb61521916f7f22c0981a846216f5b6144f69461265f7da137a4ae108bf4b84cd8743f2dd1e9fdadffc0f95371528e15a59e0a369e08438 + checksum: b5b5620f8e55a6dd7ae829630c0ded02b30f589f0f8f5ca931cdfcf6d7daa8154e30e3fe3593b3f6c4872a955ac55d447ccc2f801fd6a6aa698bdad966e3fe2e languageName: node linkType: hard @@ -3758,11 +3815,11 @@ __metadata: linkType: hard "acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": - version: 8.14.1 - resolution: "acorn@npm:8.14.1" + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 260d9bb6017a1b6e42d31364687f0258f78eb20210b36ef2baad38fd619d78d4e95ff7dde9b3dbe0d81f137f79a8d651a845363a26e6985997f7b71145dc5e94 + checksum: 309c6b49aedf1a2e34aaf266de06de04aab6eb097c02375c66fdeb0f64556a6a823540409914fb364d9a11bc30d79d485a2eba29af47992d3490e9886c4391c3 languageName: node linkType: hard @@ -3797,9 +3854,9 @@ __metadata: linkType: hard "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 87bb7ee54f5ecf0ccbfcba0b07473885c43ecd76cb29a8db17d6137a19d9f9cd443a2a7c5fd8a3f24d58ad8145f9eb49116344a66b107e1aeab82cf2383f4753 + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 86a7f542af277cfbd77dd61e7df8422f90bac512953709003a1c530171a9d019d072e2400eab2b59f84b49ab9dd237be44315ca663ac73e82b3922d10ea5eafa languageName: node linkType: hard @@ -3838,15 +3895,15 @@ __metadata: linkType: hard "amazon-cognito-identity-js@npm:^6.3.6": - version: 6.3.15 - resolution: "amazon-cognito-identity-js@npm:6.3.15" + version: 6.3.16 + resolution: "amazon-cognito-identity-js@npm:6.3.16" dependencies: "@aws-crypto/sha256-js": 1.2.2 buffer: 4.9.2 fast-base64-decode: ^1.0.0 isomorphic-unfetch: ^3.0.0 js-cookie: ^2.2.1 - checksum: d440f180f46fac797023841c2d9a2087abad3814788cbe179bab0934a4524b2af844da6fe0d89a4dea8ddedec74fb93d0facc1839988516495cb0b982339bb6e + checksum: 0cc29bbf1deb421549636a8c077cb58a2bf8a144072e21c9d750053712b8ff430dd915672e597c04193bdbf314d047ac1ee9483ce901f90ac92b8bbf0d0a841f languageName: node linkType: hard @@ -3859,10 +3916,10 @@ __metadata: "ampleforth-contracts@https://github.com/ampleforth/ampleforth-contracts#master": version: 0.0.1 - resolution: "ampleforth-contracts@https://github.com/ampleforth/ampleforth-contracts.git#commit=1d13ed3bcd32772ddba91355579b87d07e3551db" + resolution: "ampleforth-contracts@https://github.com/ampleforth/ampleforth-contracts.git#commit=701eee27d877f2ad7d0308467968a209d73dcff7" dependencies: "@openzeppelin/contracts-upgradeable": ^4.7.3 - checksum: af4cf9b611cdb3005adebbb33cb7c636056335cae8dd0b02a87a1a2a21f5eeebba7c141fd80119ed02926379938de567f72ea69ccfc55dd36a77c88dfab66422 + checksum: 6edaa415218733c9877729b15d0026620c73b5000e75c7bcfa84c139e3bfe26e9394ad5096aac32dfd1c1bd7ccc9a4a39520759e6bb071f42c678b5c384f9393 languageName: node linkType: hard @@ -3920,9 +3977,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 9b17ce2c6daecc75bcd5966b9ad672c23b184dc3ed9bf3c98a0702f0d2f736c15c10d461913568f2cf527a5e64291c7473358885dd493305c84a1cfed66ba94f languageName: node linkType: hard @@ -3945,9 +4002,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: f1b0829cf048cce870a305819f65ce2adcebc097b6d6479e12e955fd6225df9b9eb8b497083b764df796d94383ff20016cc4dbbae5b40f36138fb65a9d33c2e2 languageName: node linkType: hard @@ -4057,17 +4114,19 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.8": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" +"array-includes@npm:^3.1.9": + version: 3.1.9 + resolution: "array-includes@npm:3.1.9" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.4 define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - get-intrinsic: ^1.2.4 - is-string: ^1.0.7 - checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + es-abstract: ^1.24.0 + es-object-atoms: ^1.1.1 + get-intrinsic: ^1.3.0 + is-string: ^1.1.1 + math-intrinsics: ^1.1.0 + checksum: b58dc526fe415252e50319eaf88336e06e75aa673e3b58d252414739a4612dbe56e7b613fdcc7c90561dc9cf9202bbe5ca029ccd8c08362746459475ae5a8f3e languageName: node linkType: hard @@ -4078,7 +4137,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5": +"array.prototype.findlastindex@npm:^1.2.6": version: 1.2.6 resolution: "array.prototype.findlastindex@npm:1.2.6" dependencies: @@ -4093,7 +4152,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.2": +"array.prototype.flat@npm:^1.3.3": version: 1.3.3 resolution: "array.prototype.flat@npm:1.3.3" dependencies: @@ -4105,7 +4164,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": +"array.prototype.flatmap@npm:^1.3.3": version: 1.3.3 resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: @@ -4172,6 +4231,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 + languageName: node + linkType: hard + "ast-parents@npm:^0.0.1": version: 0.0.1 resolution: "ast-parents@npm:0.0.1" @@ -4209,6 +4275,13 @@ __metadata: languageName: node linkType: hard +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 74a71a4a2dd7afd06ebb612f6d612c7f4766a351bedffde466023bf6dae629e46b0d2cd38786239e0fbf245de0c7df76035465e16d1213774a0efb22fec0d713 + languageName: node + linkType: hard + "async-retry@npm:^1.3.3": version: 1.3.3 resolution: "async-retry@npm:1.3.3" @@ -4281,13 +4354,13 @@ __metadata: linkType: hard "axios@npm:^1.6.7, axios@npm:^1.7.4": - version: 1.9.0 - resolution: "axios@npm:1.9.0" + version: 1.13.4 + resolution: "axios@npm:1.13.4" dependencies: follow-redirects: ^1.15.6 - form-data: ^4.0.0 + form-data: ^4.0.4 proxy-from-env: ^1.1.0 - checksum: 631f02c9c279f2ae90637a4989cc9d75c1c27aefd16b6e8eb90f98a4d0bddaccfd1cb1387be12101d1ab0f9bbf0c47e2451b4de0cf2870462a7d9ed3de8da3f2 + checksum: 1d1f360cf54c8a4b602d4d5af1b13f04612be3876a7958e9cd49c5869448399d75978ce4a099839d55ccb9f9aff9d49a312db879dba9d76fac994479fd1ad11c languageName: node linkType: hard @@ -4338,9 +4411,9 @@ __metadata: linkType: hard "bignumber.js@npm:^9.0.0, bignumber.js@npm:^9.1.2": - version: 9.3.0 - resolution: "bignumber.js@npm:9.3.0" - checksum: 580d783d60246e758e527fa879ae0d282d8f250f555dd0fcee1227d680186ceba49ed7964c6d14e2e8d8eac7a2f4dd6ef1b7925dc52f5fc28a5a87639dd2dbd1 + version: 9.3.1 + resolution: "bignumber.js@npm:9.3.1" + checksum: 6ab100271a23a75bb8b99a4b1a34a1a94967ac0b9a52a198147607bd91064e72c6f356380d7a09cd687bf50d81ad2ed1a0a8edfaa90369c9003ed8bb2440d7f0 languageName: node linkType: hard @@ -4422,9 +4495,9 @@ __metadata: linkType: hard "bowser@npm:^2.11.0": - version: 2.11.0 - resolution: "bowser@npm:2.11.0" - checksum: 29c3f01f22e703fa6644fc3b684307442df4240b6e10f6cfe1b61c6ca5721073189ca97cdeedb376081148c8518e33b1d818a57f781d70b0b70e1f31fb48814f + version: 2.13.1 + resolution: "bowser@npm:2.13.1" + checksum: 83ba90bebe4b73ce761b35e13f846e90094919a351fbfe5ddb0b6be869d166648a70b9c97a8bfe1e0c21eee220ff9832ecef5302487efe53b2027d79189926c1 languageName: node linkType: hard @@ -4445,21 +4518,21 @@ __metadata: linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" dependencies: balanced-match: ^1.0.0 concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + checksum: 12cb6d6310629e3048cadb003e1aca4d8c9bb5c67c3c321bafdd7e7a50155de081f78ea3e0ed92ecc75a9015e784f301efc8132383132f4f7904ad1ac529c562 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" dependencies: balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + checksum: 01dff195e3646bc4b0d27b63d9bab84d2ebc06121ff5013ad6e5356daa5a9d6b60fa26cf73c74797f2dc3fbec112af13578d51f75228c1112b26c790a87b0488 languageName: node linkType: hard @@ -4631,30 +4704,29 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": +"bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e languageName: node linkType: hard -"cacache@npm:^19.0.1": - version: 19.0.1 - resolution: "cacache@npm:19.0.1" +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" dependencies: - "@npmcli/fs": ^4.0.0 + "@npmcli/fs": ^5.0.0 fs-minipass: ^3.0.0 - glob: ^10.2.2 - lru-cache: ^10.0.1 + glob: ^13.0.0 + lru-cache: ^11.1.0 minipass: ^7.0.3 minipass-collect: ^2.0.1 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 p-map: ^7.0.2 - ssri: ^12.0.0 - tar: ^7.4.3 - unique-filename: ^4.0.0 - checksum: e95684717de6881b4cdaa949fa7574e3171946421cd8291769dd3d2417dbf7abf4aa557d1f968cca83dcbc95bed2a281072b09abfc977c942413146ef7ed4525 + ssri: ^13.0.0 + unique-filename: ^5.0.0 + checksum: 595e6b91d72972d596e1e9ccab8ddbf08b773f27240220b1b5b1b7b3f52173cfbcf095212e5d7acd86c3bd453c28e69b116469889c511615ef3589523d542639 languageName: node linkType: hard @@ -4726,11 +4798,11 @@ __metadata: linkType: hard "cbor@npm:^10.0.0": - version: 10.0.3 - resolution: "cbor@npm:10.0.3" + version: 10.0.11 + resolution: "cbor@npm:10.0.11" dependencies: nofilter: ^3.0.2 - checksum: 8bb589fae51a43b041f645c64ee5d8c0da77ed67ffaa5b1087f1bd5aac28714fe67b6865054148335d62bff979c44139767b47fdb6033b0f7b30f06d9923c43e + checksum: d293d3ccdb53f8301c58a500bd83ea16b3a7744462113d33d1db1ebaab22f860a09ab007c4c3060abba2dab209ca99417df8da9d1fd79e3b4d95aa90d8f2ae87 languageName: node linkType: hard @@ -4882,12 +4954,13 @@ __metadata: linkType: hard "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.6 - resolution: "cipher-base@npm:1.0.6" + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" dependencies: inherits: ^2.0.4 safe-buffer: ^5.2.1 - checksum: 64a1738a8583163cf096bc85321a69ef3075bb0873f34cf89dc705e62b9eee058dd6b2e5c672f774ede0b6bdbe56fe7b710e0d38c4f08a2f355d8ab828f05c6f + to-buffer: ^1.2.2 + checksum: 3c3b5ddd8c8bfbb68fdd134c4c6db408b57a81f19260c59a5e1f5b75cb67fc5a0127af2ffb84a14720c9d249226659544c593245123f42285c82267cf787b883 languageName: node linkType: hard @@ -5118,9 +5191,9 @@ __metadata: linkType: hard "core-js-pure@npm:^3.0.1": - version: 3.42.0 - resolution: "core-js-pure@npm:3.42.0" - checksum: 37f2488e810db5ea23f623458b8d5861a5a858cde1b4d5777c89b531b00775a3df2cf814f69af0d9d16a421094f6c640c4466b9f86a8580d65263e3219c75440 + version: 3.48.0 + resolution: "core-js-pure@npm:3.48.0" + checksum: fdc8a26fa7d2cf7809c7943494660442267666a048d74739900b6a1ba7e4e52815d8203ef453d81ddd1b3dade5880a1275fefc13d884686e71a85e7fcdd69790 languageName: node linkType: hard @@ -5190,7 +5263,7 @@ __metadata: languageName: node linkType: hard -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": +"create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: @@ -5292,14 +5365,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.0.1, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": - version: 4.4.0 - resolution: "debug@npm:4.4.0" + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 languageName: node linkType: hard @@ -5413,7 +5486,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": +"depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a @@ -5421,16 +5494,16 @@ __metadata: linkType: hard "diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + version: 4.0.4 + resolution: "diff@npm:4.0.4" + checksum: e3f1c368778b16f9e7e4fd4199d04913bba9b017c37fbca7642b3613ebefcf3b18a4bd55e5f7074dc023fc95c96bd265f72114044e62cebae7f9a0f53bc36ace languageName: node linkType: hard "diff@npm:^5.2.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd + version: 5.2.2 + resolution: "diff@npm:5.2.2" + checksum: a1af5d6322ca6312279369665b5a9e6d54cd2aed42729a30523e174ccd14661a752bf10d75deec8763964cab3df3787fe816f88e9de7ee8fe774852007269d88 languageName: node linkType: hard @@ -5514,9 +5587,9 @@ __metadata: linkType: hard "dotenv@npm:^16.0.1": - version: 16.5.0 - resolution: "dotenv@npm:16.5.0" - checksum: 6543fe87b5ddf2d60dd42df6616eec99148a5fc150cb4530fef5bda655db5204a3afa0e6f25f7cd64b20657ace4d79c0ef974bec32fdb462cad18754191e7a90 + version: 16.6.1 + resolution: "dotenv@npm:16.6.1" + checksum: e8bd63c9a37f57934f7938a9cf35de698097fadf980cb6edb61d33b3e424ceccfe4d10f37130b904a973b9038627c2646a3365a904b4406514ea94d7f1816b69 languageName: node linkType: hard @@ -5629,11 +5702,11 @@ __metadata: linkType: hard "end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" + version: 1.4.5 + resolution: "end-of-stream@npm:1.4.5" dependencies: once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + checksum: 1e0cfa6e7f49887544e03314f9dfc56a8cb6dde910cbb445983ecc2ff426fc05946df9d75d8a21a3a64f2cecfe1bf88f773952029f46756b2ed64a24e95b1fb8 languageName: node linkType: hard @@ -5689,34 +5762,34 @@ __metadata: linkType: hard "error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" dependencies: is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + checksum: 25136c0984569c8d68417036a9a1624804314296f24675199a391e5d20b2e26fe6d9304d40901293fa86900603a229983c9a8921ea7f1d16f814c2db946ff4ef languageName: node linkType: hard -"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": - version: 1.23.9 - resolution: "es-abstract@npm:1.23.9" +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" dependencies: array-buffer-byte-length: ^1.0.2 arraybuffer.prototype.slice: ^1.0.4 available-typed-arrays: ^1.0.7 call-bind: ^1.0.8 - call-bound: ^1.0.3 + call-bound: ^1.0.4 data-view-buffer: ^1.0.2 data-view-byte-length: ^1.0.2 data-view-byte-offset: ^1.0.1 es-define-property: ^1.0.1 es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 + es-object-atoms: ^1.1.1 es-set-tostringtag: ^2.1.0 es-to-primitive: ^1.3.0 function.prototype.name: ^1.1.8 - get-intrinsic: ^1.2.7 - get-proto: ^1.0.0 + get-intrinsic: ^1.3.0 + get-proto: ^1.0.1 get-symbol-description: ^1.1.0 globalthis: ^1.0.4 gopd: ^1.2.0 @@ -5728,21 +5801,24 @@ __metadata: is-array-buffer: ^3.0.5 is-callable: ^1.2.7 is-data-view: ^1.0.2 + is-negative-zero: ^2.0.3 is-regex: ^1.2.1 + is-set: ^2.0.3 is-shared-array-buffer: ^1.0.4 is-string: ^1.1.1 is-typed-array: ^1.1.15 - is-weakref: ^1.1.0 + is-weakref: ^1.1.1 math-intrinsics: ^1.1.0 - object-inspect: ^1.13.3 + object-inspect: ^1.13.4 object-keys: ^1.1.1 object.assign: ^4.1.7 own-keys: ^1.0.1 - regexp.prototype.flags: ^1.5.3 + regexp.prototype.flags: ^1.5.4 safe-array-concat: ^1.1.3 safe-push-apply: ^1.0.0 safe-regex-test: ^1.1.0 set-proto: ^1.0.0 + stop-iteration-iterator: ^1.1.0 string.prototype.trim: ^1.2.10 string.prototype.trimend: ^1.0.9 string.prototype.trimstart: ^1.0.8 @@ -5751,8 +5827,8 @@ __metadata: typed-array-byte-offset: ^1.0.4 typed-array-length: ^1.0.7 unbox-primitive: ^1.1.0 - which-typed-array: ^1.1.18 - checksum: f3ee2614159ca197f97414ab36e3f406ee748ce2f97ffbf09e420726db5a442ce13f1e574601468bff6e6eb81588e6c9ce1ac6c03868a37c7cd48ac679f8485a + which-typed-array: ^1.1.19 + checksum: 84896f97ac812bd9d884f1e5372ae71dbdbef364d2e178defdb712a0aae8c9df66f447b472ad54e3e1fa5aa9a84f3c11b5f35007d629cf975699c5f885aeb0c5 languageName: node linkType: hard @@ -5881,13 +5957,13 @@ __metadata: linkType: hard "eslint-config-prettier@npm:^8.5.0": - version: 8.10.0 - resolution: "eslint-config-prettier@npm:8.10.0" + version: 8.10.2 + resolution: "eslint-config-prettier@npm:8.10.2" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 153266badd477e49b0759816246b2132f1dbdb6c7f313ca60a9af5822fd1071c2bc5684a3720d78b725452bbac04bb130878b2513aea5e72b1b792de5a69fec8 + checksum: a92b7e8a996e65adf79de1579524235687e9d3552d088cfab4f170da60d23762addb4276169c8ca3a9551329dda8408c59f7e414101b238a6385379ac1bc3b16 languageName: node linkType: hard @@ -5914,15 +5990,15 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.12.0": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" +"eslint-module-utils@npm:^2.12.1": + version: 2.12.1 + resolution: "eslint-module-utils@npm:2.12.1" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 + checksum: 2f074670d8c934687820a83140048776b28bbaf35fc37f35623f63cc9c438d496d11f0683b4feabb9a120435435d4a69604b1c6c567f118be2c9a0aba6760fc1 languageName: node linkType: hard @@ -5951,31 +6027,31 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.26.0": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" + version: 2.32.0 + resolution: "eslint-plugin-import@npm:2.32.0" dependencies: "@rtsao/scc": ^1.1.0 - array-includes: ^3.1.8 - array.prototype.findlastindex: ^1.2.5 - array.prototype.flat: ^1.3.2 - array.prototype.flatmap: ^1.3.2 + array-includes: ^3.1.9 + array.prototype.findlastindex: ^1.2.6 + array.prototype.flat: ^1.3.3 + array.prototype.flatmap: ^1.3.3 debug: ^3.2.7 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.12.0 + eslint-module-utils: ^2.12.1 hasown: ^2.0.2 - is-core-module: ^2.15.1 + is-core-module: ^2.16.1 is-glob: ^4.0.3 minimatch: ^3.1.2 object.fromentries: ^2.0.8 object.groupby: ^1.0.3 - object.values: ^1.2.0 + object.values: ^1.2.1 semver: ^6.3.1 - string.prototype.trimend: ^1.0.8 + string.prototype.trimend: ^1.0.9 tsconfig-paths: ^3.15.0 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 + checksum: 8cd40595b5e4346d3698eb577014b4b6d0ba57b7b9edf975be4f052a89330ec202d0cc5c3861d37ebeafa151b6264821410243889b0c31710911a6b625bcf76b languageName: node linkType: hard @@ -6021,8 +6097,8 @@ __metadata: linkType: hard "eslint-plugin-prettier@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" + version: 4.2.5 + resolution: "eslint-plugin-prettier@npm:4.2.5" dependencies: prettier-linter-helpers: ^1.0.0 peerDependencies: @@ -6031,7 +6107,7 @@ __metadata: peerDependenciesMeta: eslint-config-prettier: optional: true - checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + checksum: 22c29ba685f18516e3b1595e062849ccc108996a759da6067ff5d876519a5f81c8ba92c0c5623a1c62b593d417619ba44ab3b6ec1450ca753c078fd92970b883 languageName: node linkType: hard @@ -6274,11 +6350,11 @@ __metadata: linkType: hard "esquery@npm:^1.0.1, esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: ^5.1.0 - checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27 languageName: node linkType: hard @@ -6482,9 +6558,9 @@ __metadata: languageName: node linkType: hard -"ethers@npm:^6.14.4": - version: 6.14.4 - resolution: "ethers@npm:6.14.4" +"ethers@npm:^6.14.4, ethers@npm:^6.6.0": + version: 6.16.0 + resolution: "ethers@npm:6.16.0" dependencies: "@adraffy/ens-normalize": 1.10.1 "@noble/curves": 1.2.0 @@ -6493,22 +6569,7 @@ __metadata: aes-js: 4.0.0-beta.5 tslib: 2.7.0 ws: 8.17.1 - checksum: 9f7e651ef3ee8c158c5bfd067cb048b3b4367d2d68b575b8777e1cf1eb337a7487cd4e34925cfe421b9a28de12bbd062d08575c1f7b6b0601e32b98edc9c708e - languageName: node - linkType: hard - -"ethers@npm:^6.6.0": - version: 6.14.0 - resolution: "ethers@npm:6.14.0" - dependencies: - "@adraffy/ens-normalize": 1.10.1 - "@noble/curves": 1.2.0 - "@noble/hashes": 1.3.2 - "@types/node": 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1 - checksum: 937cab802131b289ca9a278fce595dff5977d358c5e2c72603e321a67a3ed531b4c19ddeec555d53fd474f75e101d599b6962cb3e33a691b526ecfebed9482d8 + checksum: f96c54d35aa09d6700dbbe732db160d66f2a1acd59f2820e307869be478bb5c4c3fd0f34a5d51014cbea04200e6e9776290f521795492688c8d67052bf8a1e2a languageName: node linkType: hard @@ -6591,9 +6652,9 @@ __metadata: linkType: hard "exponential-backoff@npm:^3.1.1": - version: 3.1.2 - resolution: "exponential-backoff@npm:3.1.2" - checksum: 7e191e3dd6edd8c56c88f2c8037c98fbb8034fe48778be53ed8cb30ccef371a061a4e999a469aab939b92f8f12698f3b426d52f4f76b7a20da5f9f98c3cbc862 + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 471fdb70fd3d2c08a74a026973bdd4105b7832911f610ca67bbb74e39279411c1eed2f2a110c9d41c2edd89459ba58fdaba1c174beed73e7a42d773882dcff82 languageName: node linkType: hard @@ -6692,41 +6753,41 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.6 - resolution: "fast-uri@npm:3.0.6" - checksum: 7161ba2a7944778d679ba8e5f00d6a2bb479a2142df0982f541d67be6c979b17808f7edbb0ce78161c85035974bde3fa52b5137df31da46c0828cb629ba67c4e + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: daab0efd3548cc53d0db38ecc764d125773f8bd70c34552ff21abdc6530f26fa4cb1771f944222ca5e61a0a1a85d01a104848ff88c61736de445d97bd616ea7e languageName: node linkType: hard -"fast-xml-parser@npm:4.4.1": - version: 4.4.1 - resolution: "fast-xml-parser@npm:4.4.1" +"fast-xml-parser@npm:5.2.5": + version: 5.2.5 + resolution: "fast-xml-parser@npm:5.2.5" dependencies: - strnum: ^1.0.5 + strnum: ^2.1.0 bin: fxparser: src/cli/cli.js - checksum: f440c01cd141b98789ae777503bcb6727393296094cc82924ae9f88a5b971baa4eec7e65306c7e07746534caa661fc83694ff437d9012dc84dee39dfbfaab947 + checksum: b12daa933bc226bd7df1e1ecbd305e561c83fd6e4a234b5e2728901deca25a9b9522b9d3ebafde41b1f4d87ab814e3efe18c636638580795fdbe4670a556be88 languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.19.1 - resolution: "fastq@npm:1.19.1" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: ^1.0.4 - checksum: 7691d1794fb84ad0ec2a185f10e00f0e1713b894e2c9c4d42f0bc0ba5f8c00e6e655a202074ca0b91b9c3d977aab7c30c41a8dc069fb5368576ac0054870a0e6 + checksum: 49128edbf05e682bee3c1db3d2dfc7da195469065ef014d8368c555d829932313ae2ddf584bb03146409b0d5d9fdb387c471075483a7319b52f777ad91128ed8 languageName: node linkType: hard -"fdir@npm:^6.4.4": - version: 6.4.4 - resolution: "fdir@npm:6.4.4" +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 79043610236579ffbd0647c508b43bd030a2d034a17c43cf96813a00e8e92e51acdb115c6ddecef3b5812cc2692b976155b4f6413e51e3761f1e772fa019a321 + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 languageName: node linkType: hard @@ -6840,12 +6901,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" peerDependenciesMeta: debug: optional: true - checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 + checksum: 20bf55e9504f59e6cc3743ba27edb2ebf41edea1baab34799408f2c050f73f0c612728db21c691276296d2795ea8a812dc532a98e8793619fcab91abe06d017f languageName: node linkType: hard @@ -6875,15 +6936,16 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.2 - resolution: "form-data@npm:4.0.2" +"form-data@npm:^4.0.4": + version: 4.0.5 + resolution: "form-data@npm:4.0.5" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 es-set-tostringtag: ^2.1.0 + hasown: ^2.0.2 mime-types: ^2.1.12 - checksum: e887298b22c13c7c9c5a8ba3716f295a479a13ca78bfd855ef11cbce1bcf22bc0ae2062e94808e21d46e5c667664a1a1a8a7f57d7040193c1fefbfb11af58aab + checksum: af8328413c16d0cded5fccc975a44d227c5120fd46a9e81de8acf619d43ed838414cc6d7792195b30b248f76a65246949a129a4dadd148721948f90cd6d4fb69 languageName: node linkType: hard @@ -7072,6 +7134,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 3bf87f7b0230de5d74529677e6c3ceb3b7b5d9618b5a22d92b45ce3876defbaf5a77791b25a61b0fa7d13f95675b5ff67a7769f3b9af33f096e34653519e873d + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -7087,20 +7156,23 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: + async-function: ^1.0.0 + async-generator-function: ^1.0.0 call-bind-apply-helpers: ^1.0.2 es-define-property: ^1.0.1 es-errors: ^1.3.0 es-object-atoms: ^1.1.1 function-bind: ^1.1.2 + generator-function: ^2.0.0 get-proto: ^1.0.1 gopd: ^1.2.0 has-symbols: ^1.1.0 hasown: ^2.0.2 math-intrinsics: ^1.1.0 - checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d + checksum: c02b3b6a445f9cd53e14896303794ac60f9751f58a69099127248abdb0251957174c6524245fc68579dc8e6a35161d3d94c93e665f808274716f4248b269436a languageName: node linkType: hard @@ -7111,7 +7183,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -7210,9 +7282,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.4.5 - resolution: "glob@npm:10.4.5" +"glob@npm:^10.3.10": + version: 10.5.0 + resolution: "glob@npm:10.5.0" dependencies: foreground-child: ^3.1.0 jackspeak: ^3.1.2 @@ -7222,7 +7294,18 @@ __metadata: path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + checksum: cda96c074878abca9657bd984d2396945cf0d64283f6feeb40d738fe2da642be0010ad5210a1646244a5fc3511b0cab5a374569b3de5a12b8a63d392f18c6043 + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.0 + resolution: "glob@npm:13.0.0" + dependencies: + minimatch: ^10.1.1 + minipass: ^7.1.2 + path-scurry: ^2.0.0 + checksum: 963730222b0acc85a0d2616c08ba3a5d5b5f33fbf69182791967b8a02245db505577a6fc19836d5d58e1cbbfb414ad4f62f605a0372ab05cd9e6998efe944369 languageName: node linkType: hard @@ -7448,13 +7531,13 @@ __metadata: linkType: hard "hardhat-gas-reporter@npm:latest": - version: 2.2.3 - resolution: "hardhat-gas-reporter@npm:2.2.3" + version: 2.3.0 + resolution: "hardhat-gas-reporter@npm:2.3.0" dependencies: "@ethersproject/abi": ^5.7.0 "@ethersproject/bytes": ^5.7.0 "@ethersproject/units": ^5.7.0 - "@solidity-parser/parser": ^0.19.0 + "@solidity-parser/parser": ^0.20.1 axios: ^1.6.7 brotli-wasm: ^2.0.1 chalk: 4.1.2 @@ -7468,80 +7551,19 @@ __metadata: viem: ^2.27.0 peerDependencies: hardhat: ^2.16.0 - checksum: fcbc73ad000b2fdd18eb430f2ecaa5e74e6d7a7795a5c9631999bf2f826c20702f96793af92d6b14916e76729be19086b84b5fb8327db1c54b542ec4f48dfb61 - languageName: node - linkType: hard - -"hardhat@npm:^2.23.0": - version: 2.24.0 - resolution: "hardhat@npm:2.24.0" - dependencies: - "@ethereumjs/util": ^9.1.0 - "@ethersproject/abi": ^5.1.2 - "@nomicfoundation/edr": ^0.11.0 - "@nomicfoundation/solidity-analyzer": ^0.1.0 - "@sentry/node": ^5.18.1 - "@types/bn.js": ^5.1.0 - "@types/lru-cache": ^5.1.0 - adm-zip: ^0.4.16 - aggregate-error: ^3.0.0 - ansi-escapes: ^4.3.0 - boxen: ^5.1.2 - chokidar: ^4.0.0 - ci-info: ^2.0.0 - debug: ^4.1.1 - enquirer: ^2.3.0 - env-paths: ^2.2.0 - ethereum-cryptography: ^1.0.3 - find-up: ^5.0.0 - fp-ts: 1.19.3 - fs-extra: ^7.0.1 - immutable: ^4.0.0-rc.12 - io-ts: 1.10.4 - json-stream-stringify: ^3.1.4 - keccak: ^3.0.2 - lodash: ^4.17.11 - micro-eth-signer: ^0.14.0 - mnemonist: ^0.38.0 - mocha: ^10.0.0 - p-map: ^4.0.0 - picocolors: ^1.1.0 - raw-body: ^2.4.1 - resolve: 1.17.0 - semver: ^6.3.0 - solc: 0.8.26 - source-map-support: ^0.5.13 - stacktrace-parser: ^0.1.10 - tinyglobby: ^0.2.6 - tsort: 0.0.1 - undici: ^5.14.0 - uuid: ^8.3.2 - ws: ^7.4.6 - peerDependencies: - ts-node: "*" - typescript: "*" - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - bin: - hardhat: internal/cli/bootstrap.js - checksum: 405b10e5ac074389c4b14b412b681eee04ad92451e786ea6ffe1448337c40a9b27ee4a881707f976e49bd972876e6e41933a09ded3270b35a2bcbba0d76d2326 + checksum: 055c4e99c8628a2a7e26bf80b12e91933a3a8e301e2c8a130be0590608d3b59f36ac5e6dff90d436e72063995936dd2107a6c01e39b51b9a9b9f11874ae7a103 languageName: node linkType: hard -"hardhat@npm:^2.24.1": - version: 2.24.1 - resolution: "hardhat@npm:2.24.1" +"hardhat@npm:^2.23.0, hardhat@npm:^2.24.1": + version: 2.28.4 + resolution: "hardhat@npm:2.28.4" dependencies: "@ethereumjs/util": ^9.1.0 "@ethersproject/abi": ^5.1.2 - "@nomicfoundation/edr": ^0.11.0 + "@nomicfoundation/edr": 0.12.0-next.22 "@nomicfoundation/solidity-analyzer": ^0.1.0 "@sentry/node": ^5.18.1 - "@types/bn.js": ^5.1.0 - "@types/lru-cache": ^5.1.0 adm-zip: ^0.4.16 aggregate-error: ^3.0.0 ansi-escapes: ^4.3.0 @@ -7586,7 +7608,7 @@ __metadata: optional: true bin: hardhat: internal/cli/bootstrap.js - checksum: 98fa6022a25986343318709e2699c0f1b1c466e68fe6074a6e838ddeddb2cb53ccb9d6f572e809513a30eefa82a00fcad2220c5e2c7f9fad4f1436c9755c01d9 + checksum: ad1588e6f67b7bb9b4d89434bfce0f60c410e7d6c32d234f7ee7fdc7388536d2906039b9faf10ae931b18815b917069a941fd0b52cd0ce984c23c67e0d08e9b4 languageName: node linkType: hard @@ -7652,14 +7674,15 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" +"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": + version: 3.1.2 + resolution: "hash-base@npm:3.1.2" dependencies: inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc + readable-stream: ^2.3.8 + safe-buffer: ^5.2.1 + to-buffer: ^1.2.1 + checksum: ca7c548098ca2aa3616f8ddb0406c9cadd0fbc35868d885200692b13a3b6d5b30e2b55ab808ff6000c69f11b3c26fd98e5955b1484d79a59fbd07d1d6b65ca4b languageName: node linkType: hard @@ -7717,22 +7740,22 @@ __metadata: linkType: hard "http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 7a7246ddfce629f96832791176fd643589d954e6f3b49548dadb4290451961237fab8fcea41cd2008fe819d95b41c1e8b97f47d088afc0a1c81705287b4ddbcc languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" +"http-errors@npm:~2.0.1": + version: 2.0.1 + resolution: "http-errors@npm:2.0.1" dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + depd: ~2.0.0 + inherits: ~2.0.4 + setprototypeof: ~1.2.0 + statuses: ~2.0.2 + toidentifier: ~1.0.1 + checksum: 155d1a100a06e4964597013109590b97540a177b69c3600bbc93efc746465a99a2b718f43cdf76b3791af994bbe3a5711002046bf668cdc007ea44cea6df7ccd languageName: node linkType: hard @@ -7784,7 +7807,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": +"iconv-lite@npm:^0.4.24, iconv-lite@npm:~0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -7885,7 +7908,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -7972,13 +7995,10 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: 1.1.0 - sprintf-js: ^1.1.3 - checksum: aa15f12cfd0ef5e38349744e3654bae649a34c3b10c77a674a167e99925d1549486c5b14730eebce9fea26f6db9d5e42097b00aa4f9f612e68c79121c71652dc +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 76b1abcdf52a32e2e05ca1f202f3a8ab8547e5651a9233781b330271bd7f1a741067748d71c4cbb9d9906d9f1fa69e7ddc8b4a11130db4534fdab0e908c84e0d languageName: node linkType: hard @@ -8162,7 +8182,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -8230,14 +8250,15 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10": - version: 1.1.0 - resolution: "is-generator-function@npm:1.1.0" + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" dependencies: - call-bound: ^1.0.3 - get-proto: ^1.0.0 + call-bound: ^1.0.4 + generator-function: ^2.0.0 + get-proto: ^1.0.1 has-tostringtag: ^1.0.2 safe-regex-test: ^1.1.0 - checksum: f7f7276131bdf7e28169b86ac55a5b080012a597f9d85a0cbef6fe202a7133fa450a3b453e394870e3cb3685c5a764c64a9f12f614684b46969b1e6f297bed6b + checksum: 0b81c613752a5e534939e5b3835ff722446837a5b94c3a3934af5ded36a651d9aa31c3f11f8a3453884b9658bf26dbfb7eb855e744d920b07f084bd890a43414 languageName: node linkType: hard @@ -8280,6 +8301,13 @@ __metadata: languageName: node linkType: hard +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd + languageName: node + linkType: hard + "is-number-object@npm:^1.1.1": version: 1.1.1 resolution: "is-number-object@npm:1.1.1" @@ -8353,7 +8381,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7, is-string@npm:^1.1.1": +"is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" dependencies: @@ -8411,7 +8439,7 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": version: 1.1.1 resolution: "is-weakref@npm:1.1.1" dependencies: @@ -8491,12 +8519,12 @@ __metadata: languageName: node linkType: hard -"isows@npm:1.0.6": - version: 1.0.6 - resolution: "isows@npm:1.0.6" +"isows@npm:1.0.7": + version: 1.0.7 + resolution: "isows@npm:1.0.7" peerDependencies: ws: "*" - checksum: ab9e85b50bcc3d70aa5ec875aa2746c5daf9321cb376ed4e5434d3c2643c5d62b1f466d93a05cd2ad0ead5297224922748c31707cb4fbd68f5d05d0479dce99c + checksum: 044b949b369872882af07b60b613b5801ae01b01a23b5b72b78af80c8103bbeed38352c3e8ceff13a7834bc91fd2eb41cf91ec01d59a041d8705680e6b0ec546 languageName: node linkType: hard @@ -8623,32 +8651,25 @@ __metadata: linkType: hard "js-yaml@npm:3.x, js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" + version: 3.14.2 + resolution: "js-yaml@npm:3.14.2" dependencies: argparse: ^1.0.7 esprima: ^4.0.0 bin: js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + checksum: 626fc207734a3452d6ba84e1c8c226240e6d431426ed94d0ab043c50926d97c509629c08b1d636f5d27815833b7cfd225865631da9fb33cb957374490bf3e90b languageName: node linkType: hard "js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" dependencies: argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a - languageName: node - linkType: hard - -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 944f924f2bd67ad533b3850eee47603eed0f6ae425fd1ee8c760f477e8c34a05f144c1bd4f5a5dd1963141dc79a2c55f89ccc5ab77d039e7077f3ad196b64965 + checksum: ea2339c6930fe048ec31b007b3c90be2714ab3e7defcc2c27ebf30c74fd940358f29070b4345af0019ef151875bf3bc3f8644bea1bab0372652b5044813ac02d languageName: node linkType: hard @@ -8748,15 +8769,15 @@ __metadata: linkType: hard "jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" dependencies: graceful-fs: ^4.1.6 universalify: ^2.0.0 dependenciesMeta: graceful-fs: optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + checksum: c3028ec5c770bb41290c9bb9ca04bdd0a1b698ddbdf6517c9453d3f90fc9e000c9675959fb46891d317690a93c62de03ff1735d8dbe02be83e51168ce85815d3 languageName: node linkType: hard @@ -9143,9 +9164,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + version: 4.17.23 + resolution: "lodash@npm:4.17.23" + checksum: 7daad39758a72872e94651630fbb54ba76868f904211089721a64516ce865506a759d9ad3d8ff22a2a49a50a09db5d27c36f22762d21766e47e3ba918d6d7bab languageName: node linkType: hard @@ -9184,13 +9205,20 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.5 + resolution: "lru-cache@npm:11.2.5" + checksum: b3cd18066c81e0540429507036e0a37f860325348f6a85376ed71196e5b893668af410849574c5fb49110bc0afff76b4f87646cb93b2482a315c9e7b8435630f + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -9221,22 +9249,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.3": - version: 14.0.3 - resolution: "make-fetch-happen@npm:14.0.3" +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" dependencies: - "@npmcli/agent": ^3.0.0 - cacache: ^19.0.1 + "@npmcli/agent": ^4.0.0 + cacache: ^20.0.1 http-cache-semantics: ^4.1.1 minipass: ^7.0.2 - minipass-fetch: ^4.0.0 + minipass-fetch: ^5.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^1.0.0 - proc-log: ^5.0.0 + proc-log: ^6.0.0 promise-retry: ^2.0.1 - ssri: ^12.0.0 - checksum: 6fb2fee6da3d98f1953b03d315826b5c5a4ea1f908481afc113782d8027e19f080c85ae998454de4e5f27a681d3ec58d57278f0868d4e0b736f51d396b661691 + ssri: ^13.0.0 + checksum: 4fb9dbb739b33565c85dacdcff7eb9388d8f36f326a59dc13375f01af809c42c48aa5d1f4840ee36623b2461a15476e1e79e4548ca1af30b42e1e324705ac8b3 languageName: node linkType: hard @@ -9447,6 +9475,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": ^5.0.0 + checksum: 8820c0be92994f57281f0a7a2cc4268dcc4b610f9a1ab666685716b4efe4b5898b43c835a8f22298875b31c7a278a5e3b7e253eee7c886546bb0b61fb94bca6b + languageName: node + linkType: hard + "minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -9481,9 +9518,9 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^4.0.0": - version: 4.0.1 - resolution: "minipass-fetch@npm:4.0.1" +"minipass-fetch@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" dependencies: encoding: ^0.1.13 minipass: ^7.0.3 @@ -9492,7 +9529,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 3dfca705ce887ca9ff14d73e8d8593996dea1a1ecd8101fdbb9c10549d1f9670bc8fb66ad0192769ead4c2dc01b4f9ca1cf567ded365adff17827a303b948140 + checksum: 416645d1e54c09fdfe64ec1676541ac2f6f2af3abc7ad25f2f22c4518535997c1ecd2c0c586ea8a5c6499ad7d8f97671f50ff38488ada54bf61fde309f731379 languageName: node linkType: hard @@ -9539,12 +9576,12 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: minipass: ^7.1.2 - checksum: 493bed14dcb6118da7f8af356a8947cf1473289c09658e5aabd69a737800a8c3b1736fb7d7931b722268a9c9bc038a6d53c049b6a6af24b34a121823bb709996 + checksum: a15e6f0128f514b7d41a1c68ce531155447f4669e32d279bba1c1c071ef6c2abd7e4d4579bb59ccc2ed1531346749665968fdd7be8d83eb6b6ae2fe1f3d370a7 languageName: node linkType: hard @@ -9568,15 +9605,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d - languageName: node - linkType: hard - "mnemonist@npm:^0.38.0": version: 0.38.5 resolution: "mnemonist@npm:0.38.5" @@ -9821,22 +9849,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.2.0 - resolution: "node-gyp@npm:11.2.0" + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 graceful-fs: ^4.2.6 - make-fetch-happen: ^14.0.3 - nopt: ^8.0.0 - proc-log: ^5.0.0 + make-fetch-happen: ^15.0.0 + nopt: ^9.0.0 + proc-log: ^6.0.0 semver: ^7.3.5 - tar: ^7.4.3 + tar: ^7.5.4 tinyglobby: ^0.2.12 - which: ^5.0.0 + which: ^6.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 2536282ba81f8a94b29482d3622b6ab298611440619e46de4512a6f32396a68b5530357c474b859787069d84a4c537d99e0c71078cce5b9f808bf84eeb78e8fb + checksum: d4ce0acd08bd41004f45e10cef468f4bd15eaafb3acc388a0c567416e1746dc005cc080b8a3495e4e2ae2eed170a2123ff622c2d6614062f4a839837dcf1dd9d languageName: node linkType: hard @@ -9858,14 +9886,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^8.0.0": - version: 8.1.0 - resolution: "nopt@npm:8.1.0" +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" dependencies: - abbrev: ^3.0.0 + abbrev: ^4.0.0 bin: nopt: bin/nopt.js - checksum: 49cfd3eb6f565e292bf61f2ff1373a457238804d5a5a63a8d786c923007498cba89f3648e3b952bc10203e3e7285752abf5b14eaf012edb821e84f24e881a92a + checksum: 7a5d9ab0629eaec1944a95438cc4efa6418ed2834aa8eb21a1bea579a7d8ac3e30120131855376a96ef59ab0e23ad8e0bc94d3349770a95e5cb7119339f7c7fb languageName: node linkType: hard @@ -9918,7 +9946,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.3": +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" checksum: 582810c6a8d2ef988ea0a39e69e115a138dad8f42dd445383b394877e5816eb4268489f316a6f74ee9c4e0a984b3eab1028e3e79d62b1ed67c726661d55c7a8b @@ -9969,7 +9997,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.2.0": +"object.values@npm:^1.2.1": version: 1.2.1 resolution: "object.values@npm:1.2.1" dependencies: @@ -10095,23 +10123,24 @@ __metadata: languageName: node linkType: hard -"ox@npm:0.6.9": - version: 0.6.9 - resolution: "ox@npm:0.6.9" +"ox@npm:0.11.3": + version: 0.11.3 + resolution: "ox@npm:0.11.3" dependencies: - "@adraffy/ens-normalize": ^1.10.1 - "@noble/curves": ^1.6.0 - "@noble/hashes": ^1.5.0 - "@scure/bip32": ^1.5.0 - "@scure/bip39": ^1.4.0 - abitype: ^1.0.6 + "@adraffy/ens-normalize": ^1.11.0 + "@noble/ciphers": ^1.3.0 + "@noble/curves": 1.9.1 + "@noble/hashes": ^1.8.0 + "@scure/bip32": ^1.7.0 + "@scure/bip39": ^1.6.0 + abitype: ^1.2.3 eventemitter3: 5.0.1 peerDependencies: typescript: ">=5.4.0" peerDependenciesMeta: typescript: optional: true - checksum: 6f35c9710ab3edb8146f0d2a7c482517c8e1cb2adf0cfb7aba23a17209cf7171546ad017cce98dd9e0f60cee5d77ddaaa72961023e4456de093d985b5712c546 + checksum: a3245ecf26451fe681f094ad3d082b2b59f57f52ff02a8d74b2e8e21e95e612328785efb1f65222927fdc5a2670b4965ff2372fcef8daf90effd5744bcfa3262 languageName: node linkType: hard @@ -10206,9 +10235,9 @@ __metadata: linkType: hard "p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 4be2097e942f2fd3a4f4b0c6585c721f23851de8ad6484d20c472b3ea4937d5cd9a59914c832b1bceac7bf9d149001938036b82a52de0bc381f61ff2d35d26a5 languageName: node linkType: hard @@ -10313,6 +10342,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" + dependencies: + lru-cache: ^11.0.0 + minipass: ^7.1.2 + checksum: a022c6c38fed836079d03f96540eafd4cd989acf287b99613c82300107f366e889513ad8b671a2039a9d251122621f9c6fa649f0bd4d50acf95a6943a6692dbf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -10328,15 +10367,16 @@ __metadata: linkType: hard "pbkdf2@npm:^3.0.17, pbkdf2@npm:^3.0.9": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" + version: 3.1.5 + resolution: "pbkdf2@npm:3.1.5" dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 + create-hash: ^1.2.0 + create-hmac: ^1.1.7 + ripemd160: ^2.0.3 + safe-buffer: ^5.2.1 + sha.js: ^2.4.12 + to-buffer: ^1.2.1 + checksum: 377dd4791ae6e439c98ca2a120d1cb28375884aab04af98ea1e51e5304d69c3102d0d8ed915fd1e9908cb93744807202eb22b64d99ba6496697db9b2c4ee64cc languageName: node linkType: hard @@ -10361,10 +10401,10 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 languageName: node linkType: hard @@ -10411,11 +10451,11 @@ __metadata: linkType: hard "prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" dependencies: fast-diff: ^1.1.2 - checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + checksum: 2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec languageName: node linkType: hard @@ -10449,10 +10489,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^5.0.0": - version: 5.0.0 - resolution: "proc-log@npm:5.0.0" - checksum: c78b26ecef6d5cce4a7489a1e9923d7b4b1679028c8654aef0463b27f4a90b0946cd598f55799da602895c52feb085ec76381d007ab8dcceebd40b89c2f9dfe0 +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: ac450ff8244e95b0c9935b52d629fef92ae69b7e39aea19972a8234259614d644402dd62ce9cb094f4a637d8a4514cba90c1456ad785a40ad5b64d502875a817 languageName: node linkType: hard @@ -10549,12 +10589,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" + version: 3.0.3 + resolution: "pump@npm:3.0.3" dependencies: end-of-stream: ^1.1.0 once: ^1.3.1 - checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f + checksum: 52843fc933b838c0330f588388115a1b28ef2a5ffa7774709b142e35431e8ab0c2edec90de3fa34ebb72d59fef854f151eea7dfc211b6dcf586b384556bd2f39 languageName: node linkType: hard @@ -10573,11 +10613,11 @@ __metadata: linkType: hard "qs@npm:^6.12.3": - version: 6.14.0 - resolution: "qs@npm:6.14.0" + version: 6.14.1 + resolution: "qs@npm:6.14.1" dependencies: side-channel: ^1.1.0 - checksum: 189b52ad4e9a0da1a16aff4c58b2a554a8dad9bd7e287c7da7446059b49ca2e33a49e570480e8be406b87fccebf134f51c373cbce36c8c83859efa0c9b71d635 + checksum: 7fffab0344fd75bfb6b8c94b8ba17f3d3e823d25b615900f68b473c3a078e497de8eaa08f709eaaa170eedfcee50638a7159b98abef7d8c89c2ede79291522f2 languageName: node linkType: hard @@ -10605,14 +10645,14 @@ __metadata: linkType: hard "raw-body@npm:^2.4.1": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + bytes: ~3.1.2 + http-errors: ~2.0.1 + iconv-lite: ~0.4.24 + unpipe: ~1.0.0 + checksum: 16aa51e504318ebeef7f84a4d884c0f273cb0b7f3f14ea88788f92f5f488870617c97d4f886e84f119f21a2d6cdda3c4554821f8b18ed6be0d731ecb5a063d2a languageName: node linkType: hard @@ -10625,7 +10665,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5": +"readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.8": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -10729,7 +10769,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.3": +"regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: @@ -10837,15 +10877,15 @@ __metadata: linkType: hard "resolve@npm:^1.1.6, resolve@npm:^1.10.1, resolve@npm:^1.22.1, resolve@npm:^1.22.4": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" + version: 1.22.11 + resolution: "resolve@npm:1.22.11" dependencies: - is-core-module: ^2.16.0 + is-core-module: ^2.16.1 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf + checksum: 6d5baa2156b95a65ac431e7642e21106584e9f4194da50871cae8bc1bbd2b53bb7cee573c92543d83bb999620b224a087f62379d800ed1ccb189da6df5d78d50 languageName: node linkType: hard @@ -10866,15 +10906,15 @@ __metadata: linkType: hard "resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=07638b" + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#~builtin::version=1.22.11&hash=07638b" dependencies: - is-core-module: ^2.16.0 + is-core-module: ^2.16.1 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d + checksum: 1462da84ac3410d7c2e12e4f5f25c1423d8a174c3b4245c43eafea85e7bbe6af3eb7ec10a4850b5e518e8531608604742b8cbd761e1acd7ad1035108b7c98013 languageName: node linkType: hard @@ -10949,13 +10989,13 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": + version: 2.0.3 + resolution: "ripemd160@npm:2.0.3" dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 + hash-base: ^3.1.2 + inherits: ^2.0.4 + checksum: da25591f15d3f03d3a26cabc8255634ee9e0ae89fc053846e6b3975bbdbae6941baeb539dba30e0aaec9a726c7442149de064e13c2510332e119e50beaf3314d languageName: node linkType: hard @@ -11026,7 +11066,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -11156,11 +11196,11 @@ __metadata: linkType: hard "semver@npm:^7.0.0, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.7.1": - version: 7.7.1 - resolution: "semver@npm:7.7.1" + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: 586b825d36874007c9382d9e1ad8f93888d8670040add24a28e06a910aeebd673a2eb9e3bf169c6679d9245e66efb9057e0852e70d9daa6c27372aab1dda7104 + checksum: f013a3ee4607857bcd3503b6ac1d80165f7f8ea94f5d55e2d3e33df82fce487aa3313b987abf9b39e0793c83c9fc67b76c36c067625141a9f6f704ae0ea18db2 languageName: node linkType: hard @@ -11224,22 +11264,23 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0": +"setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": + version: 2.4.12 + resolution: "sha.js@npm:2.4.12" dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 + inherits: ^2.0.4 + safe-buffer: ^5.2.1 + to-buffer: ^1.2.0 bin: - sha.js: ./bin.js - checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 + sha.js: bin.js + checksum: 9ec0fe39cc402acb33ffb18d261b52013485a2a9569a1873ff1861510a67b9ea2b3ccc78ab8aa09c34e1e85a5f06e18ab83637715509c6153ba8d537bbd2c29d languageName: node linkType: hard @@ -11408,12 +11449,12 @@ __metadata: linkType: hard "socks@npm:^2.8.3": - version: 2.8.4 - resolution: "socks@npm:2.8.4" + version: 2.8.7 + resolution: "socks@npm:2.8.7" dependencies: - ip-address: ^9.0.5 + ip-address: ^10.0.1 smart-buffer: ^4.2.0 - checksum: cd1edc924475d5dfde534adf66038df7e62c7343e6b8c0113e52dc9bb6a0a10e25b2f136197f379d695f18e8f0f2b7f6e42977bf720ddbee912a851201c396ad + checksum: 4bbe2c88cf0eeaf49f94b7f11564a99b2571bde6fd1e714ff95b38f89e1f97858c19e0ab0e6d39eb7f6a984fa67366825895383ed563fe59962a1d57a1d55318 languageName: node linkType: hard @@ -11483,15 +11524,15 @@ __metadata: linkType: hard "solidity-ast@npm:^0.4.60": - version: 0.4.60 - resolution: "solidity-ast@npm:0.4.60" - checksum: 61b5c47d707f4a151b1ee73a551c96a52cfbc045b26c82f0024ad1f52b7221f360c56f37760f52ecd90a25554fe6027eb79de583f1556c08bc254db283bf1448 + version: 0.4.61 + resolution: "solidity-ast@npm:0.4.61" + checksum: 05600cc9efc73c7946cbb60a7134e1f23042bec7e05e475493e5d4558e93e70bdfec2a1e4655d02316bb5aa80ad77bf1a1eb141062a313d31304b17d80bb92a0 languageName: node linkType: hard "solidity-coverage@npm:^0.8.5": - version: 0.8.16 - resolution: "solidity-coverage@npm:0.8.16" + version: 0.8.17 + resolution: "solidity-coverage@npm:0.8.17" dependencies: "@ethersproject/abi": ^5.0.9 "@solidity-parser/parser": ^0.20.1 @@ -11516,7 +11557,7 @@ __metadata: hardhat: ^2.11.0 bin: solidity-coverage: plugins/bin.js - checksum: c1b172a716a898da2b4e650cfd9446ee4612c08926f7a90923af8a23fa711d2efd228ebfea0e1cb33f7842e8f5f2133227f0c9586a68c614fdfe7e57330736ee + checksum: 84845b9935a2afb0070ffb209752786ddcf1c8198f4c6b6193a879a9c4dcc3c374703bc29cd0f4cad227463366cf7cf6b8017995f9f364fc545c496df14bf227 languageName: node linkType: hard @@ -11563,13 +11604,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -11598,12 +11632,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^12.0.0": - version: 12.0.0 - resolution: "ssri@npm:12.0.0" +"ssri@npm:^13.0.0": + version: 13.0.0 + resolution: "ssri@npm:13.0.0" dependencies: minipass: ^7.0.3 - checksum: ef4b6b0ae47b4a69896f5f1c4375f953b9435388c053c36d27998bc3d73e046969ccde61ab659e679142971a0b08e50478a1228f62edb994105b280f17900c98 + checksum: 9705dff9e686b11f3035fb4c3d44ce690359a15a54adcd6a18951f2763f670877321178dc72c37a2b804dba3287ecaa48726dbd0cff79b2715b1cc24521b3af3 languageName: node linkType: hard @@ -11616,10 +11650,20 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb +"statuses@npm:~2.0.2": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 6927feb50c2a75b2a4caab2c565491f7a93ad3d8dbad7b1398d52359e9243a20e2ebe35e33726dee945125ef7a515e9097d8a1b910ba2bbd818265a2f6c39879 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.1.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + internal-slot: ^1.1.0 + checksum: be944489d8829fb3bdec1a1cc4a2142c6b6eb317305eeace1ece978d286d6997778afa1ae8cb3bd70e2b274b9aa8c69f93febb1e15b94b1359b11058f9d3c3a1 languageName: node linkType: hard @@ -11697,7 +11741,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": +"string.prototype.trimend@npm:^1.0.9": version: 1.0.9 resolution: "string.prototype.trimend@npm:1.0.9" dependencies: @@ -11773,11 +11817,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: ^6.0.1 - checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + checksum: db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b languageName: node linkType: hard @@ -11818,10 +11862,10 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.0.5": - version: 1.1.2 - resolution: "strnum@npm:1.1.2" - checksum: a85219eda13e97151c95e343a9e5960eacfb0a0ff98104b4c9cb7a212e3008bddf0c9714c9c37c2e508be78e741a04afc80027c2dc18509d1b5ffd4c37191fc2 +"strnum@npm:^2.1.0": + version: 2.1.2 + resolution: "strnum@npm:2.1.2" + checksum: 755e8327ee68201d700169ceee097ea52da7b675f4521442a8dbd1517021f89a91399213c446d1bf3d1123ca1896a76f0ff076d04c88ffe6056e78828ce6f60a languageName: node linkType: hard @@ -11906,14 +11950,14 @@ __metadata: linkType: hard "tar-fs@npm:~1.16.3": - version: 1.16.4 - resolution: "tar-fs@npm:1.16.4" + version: 1.16.6 + resolution: "tar-fs@npm:1.16.6" dependencies: chownr: ^1.0.1 mkdirp: ^0.5.1 pump: ^1.0.0 tar-stream: ^1.1.2 - checksum: fd8983552ff1d384f6e424f39dcd9c346847bf2bb5206b944dff4ff8d3b7540d4f26fd38f50c59ac50f93cc76ad6d8e00d83733f22be086664dce9d979123d9c + checksum: 58921cec6c53b44edbe80054229e60235b188cfd94b734553cccd29f88a981476a401496590c042a5c50fccaa0f9aeac05f9789542eb341f84b6651a80d5bb60 languageName: node linkType: hard @@ -11932,17 +11976,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" +"tar@npm:^7.5.4": + version: 7.5.7 + resolution: "tar@npm:7.5.7" dependencies: "@isaacs/fs-minipass": ^4.0.0 chownr: ^3.0.0 minipass: ^7.1.2 - minizlib: ^3.0.1 - mkdirp: ^3.0.1 + minizlib: ^3.1.0 yallist: ^5.0.0 - checksum: 8485350c0688331c94493031f417df069b778aadb25598abdad51862e007c39d1dd5310702c7be4a6784731a174799d8885d2fde0484269aea205b724d7b2ffa + checksum: 82fa04804b6cae4c0b46b84e97a08c39e1c17bb959350baa32d139bcf5e1fc7ebc3ceb72465dd3e2e311992386ecc13599a257d5672158490ceb9464146d5573 languageName: node linkType: hard @@ -11972,12 +12015,12 @@ __metadata: linkType: hard "tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.6": - version: 0.2.13 - resolution: "tinyglobby@npm:0.2.13" + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: - fdir: ^6.4.4 - picomatch: ^4.0.2 - checksum: 3a2e87a2518cb3616057b0aa58be4f17771ae78c6890556516ae1e631f8ce4cfee1ba1dcb62fcc54a64e2bdd6c3104f4f3d021e1a3e3f8fb0875bca380b913e5 + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 languageName: node linkType: hard @@ -12000,16 +12043,20 @@ __metadata: linkType: hard "tmp@npm:^0.2.0": - version: 0.2.3 - resolution: "tmp@npm:0.2.3" - checksum: 73b5c96b6e52da7e104d9d44afb5d106bb1e16d9fa7d00dbeb9e6522e61b571fbdb165c756c62164be9a3bbe192b9b268c236d370a2a0955c7689cd2ae377b95 + version: 0.2.5 + resolution: "tmp@npm:0.2.5" + checksum: 9d18e58060114154939930457b9e198b34f9495bcc05a343bc0a0a29aa546d2c1c2b343dae05b87b17c8fde0af93ab7d8fe8574a8f6dc2cd8fd3f2ca1ad0d8e1 languageName: node linkType: hard -"to-buffer@npm:^1.1.1": - version: 1.1.1 - resolution: "to-buffer@npm:1.1.1" - checksum: 6c897f58c2bdd8b8b1645ea515297732fec6dafb089bf36d12370c102ff5d64abf2be9410e0b1b7cfc707bada22d9a4084558010bfc78dd7023748dc5dd9a1ce +"to-buffer@npm:^1.1.1, to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" + dependencies: + isarray: ^2.0.5 + safe-buffer: ^5.2.1 + typed-array-buffer: ^1.0.3 + checksum: b0cd2417989a9f3d47273301e8cec2c9798b19a117822424686f385f3ec0239d2defd5fd9f8e76cda0b21e2a2f5de65a58e806506bf4c296c31750c5efd3ae4b languageName: node linkType: hard @@ -12022,7 +12069,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1": +"toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 @@ -12046,16 +12093,16 @@ __metadata: languageName: node linkType: hard -"tranche@https://github.com/buttonwood-protocol/tranche.git#main": +"tranche@https://github.com/buttonwood-protocol/tranche/archive/main.tar.gz": version: 1.0.0 - resolution: "tranche@https://github.com/buttonwood-protocol/tranche.git#commit=3b9b6be224b5220fe5e08a4dfa76a27b9684f259" + resolution: "tranche@https://github.com/buttonwood-protocol/tranche/archive/main.tar.gz" dependencies: "@openzeppelin/contracts-upgradeable": ^4.1.0 "@rari-capital/solmate": ^6.4.0 "@uniswap/v2-periphery": ^1.1.0-beta.0 "@uniswap/v3-periphery": ^1.1.0 lodash: ^4.17.21 - checksum: 52706d5b87a74289206073d4d7cda9ec36d0b1fed34a4a8d67baecb2572f5a4ef63c565a7d79ba7f956147c9a7bd9550fd4b58a31d3e42012ccbb41966127240 + checksum: 6bde0ab1d3eeeccfef1661abb66f561a3dd8aa738dfd7bf15d1d15f6aaee7459d0d2fa2bb7fa867ccd9930452147edb66f63963e9bc8df9f80a55094ecd09564 languageName: node linkType: hard @@ -12420,10 +12467,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.21.0": - version: 6.21.0 - resolution: "undici-types@npm:6.21.0" - checksum: 46331c7d6016bf85b3e8f20c159d62f5ae471aba1eb3dc52fff35a0259d58dcc7d592d4cc4f00c5f9243fa738a11cfa48bd20203040d4a9e6bc25e807fab7ab3 +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 1ef68fc6c5bad200c8b6f17de8e5bc5cfdcadc164ba8d7208cd087cfa8583d922d8316a7fd76c9a658c22b4123d3ff847429185094484fbc65377d695c905857 languageName: node linkType: hard @@ -12437,9 +12484,9 @@ __metadata: linkType: hard "undici@npm:^6.11.1": - version: 6.21.2 - resolution: "undici@npm:6.21.2" - checksum: 4d7227910bfee0703ea5c5c9d4343bcb2a80d2ce2eb64698b6fb8cc48852e29f7c7c623126161a5073fd594c9040ae7e7ecc8e093fe6e84a9394dd2595754ec5 + version: 6.23.0 + resolution: "undici@npm:6.23.0" + checksum: f0953920330375e76d1614381af07da9d7c21ad3244d0785b3f7bd4072635c20a1f432ef3a129baa3e4a92278ce32e9ea2ca8b5f0e0554a5739222af332c08fe languageName: node linkType: hard @@ -12450,21 +12497,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-filename@npm:4.0.0" +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" dependencies: - unique-slug: ^5.0.0 - checksum: 6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df + unique-slug: ^6.0.0 + checksum: a5f67085caef74bdd2a6869a200ed5d68d171f5cc38435a836b5fd12cce4e4eb55e6a190298035c325053a5687ed7a3c96f0a91e82215fd14729769d9ac57d9b languageName: node linkType: hard -"unique-slug@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-slug@npm:5.0.0" +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 222d0322bc7bbf6e45c08967863212398313ef73423f4125e075f893a02405a5ffdbaaf150f7dd1e99f8861348a486dd079186d27c5f2c60e465b7dcbb1d3e5b + checksum: ad6cf238b10292d944521714d31bc9f3ca79fa80cb7a154aad183056493f98e85de669412c6bbfe527ffa9bdeff36d3dd4d5bccaf562c794f2580ab11932b691 languageName: node linkType: hard @@ -12482,7 +12529,7 @@ __metadata: languageName: node linkType: hard -"unpipe@npm:1.0.0": +"unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 @@ -12550,15 +12597,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.1": - version: 9.0.1 - resolution: "uuid@npm:9.0.1" - bin: - uuid: dist/bin/uuid - checksum: 39931f6da74e307f51c0fb463dc2462807531dc80760a9bff1e35af4316131b4fc3203d16da60ae33f07fdca5b56f3f1dd662da0c99fea9aaeab2004780cc5f4 - languageName: node - linkType: hard - "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -12592,23 +12630,23 @@ __metadata: linkType: hard "viem@npm:^2.27.0": - version: 2.29.1 - resolution: "viem@npm:2.29.1" + version: 2.45.1 + resolution: "viem@npm:2.45.1" dependencies: - "@noble/curves": 1.8.2 - "@noble/hashes": 1.7.2 - "@scure/bip32": 1.6.2 - "@scure/bip39": 1.5.4 - abitype: 1.0.8 - isows: 1.0.6 - ox: 0.6.9 - ws: 8.18.1 + "@noble/curves": 1.9.1 + "@noble/hashes": 1.8.0 + "@scure/bip32": 1.7.0 + "@scure/bip39": 1.6.0 + abitype: 1.2.3 + isows: 1.0.7 + ox: 0.11.3 + ws: 8.18.3 peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: ea9f591ef2cc8891480bf3cfe058f5bc5d8ef4d0d99eb3020f67f27df91af2daa4178b92be30147de2b6db95bc30619051f046de3c69b4cc1fd0e248e6e21308 + checksum: 5207f8e5c9ae33ca928094f97ce68c739d9b32ff35646f00c699a74431e518fbcf828bbe3ed0d054bc02437c0fbe0b3b41a4c5439135954b3804785fb985dfd5 languageName: node linkType: hard @@ -12707,9 +12745,9 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: ^1.0.7 call-bind: ^1.0.8 @@ -12718,7 +12756,7 @@ __metadata: get-proto: ^1.0.1 gopd: ^1.2.0 has-tostringtag: ^1.0.2 - checksum: 162d2a07f68ea323f88ed9419861487ce5d02cb876f2cf9dd1e428d04a63133f93a54f89308f337b27cabd312ee3d027cae4a79002b2f0a85b79b9ef4c190670 + checksum: 82527027127c3a6f7b278b5c0059605b968bec780d1ddd7c0ce3c2172ae4b9d2217486123107e31d229ff57ed8cc2bc76d751f290f392ee6d3aa27b26d2ffc12 languageName: node linkType: hard @@ -12744,14 +12782,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^5.0.0": - version: 5.0.0 - resolution: "which@npm:5.0.0" +"which@npm:^6.0.0": + version: 6.0.0 + resolution: "which@npm:6.0.0" dependencies: isexe: ^3.1.1 bin: node-which: bin/which.js - checksum: 6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90 + checksum: df19b2cd8aac94b333fa29b42e8e371a21e634a742a3b156716f7752a5afe1d73fb5d8bce9b89326f453d96879e8fe626eb421e0117eb1a3ce9fd8c97f6b7db9 languageName: node linkType: hard @@ -12874,9 +12912,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.18.1": - version: 8.18.1 - resolution: "ws@npm:8.18.1" +"ws@npm:8.18.3": + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -12885,7 +12923,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 4658357185d891bc45cc2d42a84f9e192d047e8476fb5cba25b604f7d75ca87ca0dd54cd0b2cc49aeee57c79045a741cb7d0b14501953ac60c790cd105c42f23 + checksum: d64ef1631227bd0c5fe21b3eb3646c9c91229402fb963d12d87b49af0a1ef757277083af23a5f85742bae1e520feddfb434cb882ea59249b15673c16dc3f36e0 languageName: node linkType: hard