diff --git a/package.json b/package.json index b8a119d..ac74125 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,18 @@ "dependencies": { "@cowprotocol/app-data": "3.0.0-rc.1", "@cowprotocol/contracts": "^1.7.0", - "@cowprotocol/cow-sdk": "6.0.0-RC.42", + "@cowprotocol/cow-sdk": "9.2.2", + "@cowprotocol/sdk-composable": "1.1.2", + "@cowprotocol/sdk-cow-shed": "0.4.1", + "@cowprotocol/sdk-ethers-v5-adapter": "0.4.10", + "@openzeppelin/merkle-tree": "^1", + "ajv": "^8", "axios": "^1.7.9", + "cross-fetch": "^3", "dotenv": "^16.4.5", "ethers": "^5.7.2", "inquirer": "^12.3.0", + "multiformats": "^9", "viem": "^2.22.23" } } diff --git a/src/const/gnosis.ts b/src/const/gnosis.ts index 5dd296e..f406fb1 100644 --- a/src/const/gnosis.ts +++ b/src/const/gnosis.ts @@ -1 +1,8 @@ export const GNO_ADDRESS = "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb"; + +// ComposableCowPoller: just-in-time funding for composable conditional orders. +// `id`-keyed deployment (schedule key is independent of the order's appData, so +// `topUp(id)` can be embedded as a pre-hook in the order's own appData). +// See https://github.com/cowprotocol/composable-cow/pull/116 +export const COMPOSABLE_COW_POLLER_ADDRESS = + "0xA360eE11eD0d2025604518CF4B8F6e6CB76C7Df7"; diff --git a/src/contracts/composable-cow-poller/index.ts b/src/contracts/composable-cow-poller/index.ts new file mode 100644 index 0000000..214205d --- /dev/null +++ b/src/contracts/composable-cow-poller/index.ts @@ -0,0 +1,41 @@ +import { ethers } from "ethers"; + +/** + * Minimal ABI for the `ComposableCowPoller` contract. + * + * It enables just-in-time funding for composable conditional orders: instead of + * locking the whole notional up front, `topUp` pulls exactly the current discrete + * order's `sellAmount` from a funder into the order owner, immediately before that + * order settles. + * + * @see https://github.com/cowprotocol/composable-cow/pull/116 + */ +const COMPOSABLE_COW_POLLER_ABI = [ + "function composableCow() external view returns (address)", + "function scheduleId(address funder, address handler, address owner, bytes32 salt) external pure returns (bytes32)", + "function register((address handler, address funder, address owner, bytes32 salt, bytes staticInput) schedule) external returns (bytes32 id)", + "function revoke(bytes32 id) external", + "function topUp(bytes32 id) external", + "function schedules(bytes32 id) external view returns (address handler, address funder, address owner, bytes32 salt, bytes staticInput)", + "function lastFunded(bytes32 id) external view returns (bytes32)", +] as const; + +export interface PollerSchedule { + /** The conditional-order handler to poll (e.g. the TWAP type). */ + handler: string; + /** Source of funds (the EOA in the TWAP-for-EOA flow); the only registrant. */ + funder: string; + /** Order owner (cow-shed / Safe); the fixed pull destination. */ + owner: string; + /** The conditional order's `salt`; lets the poller rebuild `ctx` on-chain. */ + salt: string; + /** The order's `staticInput`, passed verbatim to `getTradeableOrder`. */ + staticInput: string; +} + +export function getComposableCowPollerContract( + pollerAddress: string, + signer?: ethers.Signer | ethers.providers.Provider +): ethers.Contract { + return new ethers.Contract(pollerAddress, COMPOSABLE_COW_POLLER_ABI, signer); +} diff --git a/src/index.ts b/src/index.ts index a8cda04..73cb5c9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -37,6 +37,7 @@ import { run as getEthFlowId } from "./scripts/ethflow/getEthFlowId"; import { run as minimalAppData } from "./scripts/app-data/minimalAppData"; import { run as getIpfsForLegacyDoc } from "./scripts/app-data/getIpfsForLegacyDoc"; import { run as postTwapForEOA } from "./scripts/composable-cow/postTwapForEOA"; +import { run as postTwapForEOAWithJitFunds } from "./scripts/composable-cow/postTwapForEOAWithJitFunds"; dotenv.config(); @@ -86,7 +87,8 @@ const JOBS: (() => Promise)[] = [ // getEthFlowId, // minimalAppData, // getIpfsForLegacyDoc, - postTwapForEOA, + // postTwapForEOA, + postTwapForEOAWithJitFunds, ]; async function main() { diff --git a/src/scripts/composable-cow/cowShed.ts b/src/scripts/composable-cow/cowShed.ts new file mode 100644 index 0000000..92f5c61 --- /dev/null +++ b/src/scripts/composable-cow/cowShed.ts @@ -0,0 +1,21 @@ +import { CowShedSdk } from "@cowprotocol/sdk-cow-shed"; +import { AbstractProviderAdapter } from "@cowprotocol/sdk-common"; + +// Factory options for the COWShedForComposableCoW deployment on Gnosis Chain. +// See https://gnosisscan.io/address/0x4f4350bf2c74aacd508d598a1ba94ef84378793d#readContract +// and https://github.com/cowdao-grants/cow-shed/pull/53 +const COW_SHED_FACTORY_OPTIONS = { + factoryAddress: "0x4f4350bf2c74aacd508d598a1ba94ef84378793d", + implementationAddress: "0x6773d5aA31A1EAD34127D564D6E258E66254EbDb", // COWShedForComposableCoW implementation + proxyCreationCode: + // See https://gnosisscan.io/address/0x4f4350bf2c74aacd508d598a1ba94ef84378793d#readContract + "0x60a03461009557601f61033d38819003918201601f19168301916001600160401b0383118484101761009957808492604094855283398101031261009557610052602061004b836100ad565b92016100ad565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5560405161027b90816100c28239608051818181608b01526101750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100955756fe60806040526004361015610018575b3661019757610197565b5f3560e01c8063025b22bc146100375763f851a4400361000e57610116565b346101125760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101125760043573ffffffffffffffffffffffffffffffffffffffff81169081810361011257337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361010d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b61023d565b5f80fd5b34610112575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011257602061014e61016c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b33300361010d577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101f0575b1561023d577ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b507fc4d66de8000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000005f351614156101c3565b5f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610277573d5ff35b3d5ffd", +} as const; + +/** + * Build a `CowShedSdk` configured for the COWShedForComposableCoW deployment, + * which is the cow-shed flavour with support for Composable CoW. + */ +export function getCowShedSdk(adapter: AbstractProviderAdapter): CowShedSdk { + return new CowShedSdk(adapter, { ...COW_SHED_FACTORY_OPTIONS }); +} diff --git a/src/scripts/composable-cow/postTwapForEOA.ts b/src/scripts/composable-cow/postTwapForEOA.ts index 527c220..56fac08 100644 --- a/src/scripts/composable-cow/postTwapForEOA.ts +++ b/src/scripts/composable-cow/postTwapForEOA.ts @@ -4,16 +4,18 @@ import { SupportedChainId, OrderKind, TradingSdk, - Twap, - CowShedSdk, COMPOSABLE_COW_CONTRACT_ADDRESS, OrderBookApi, } from "@cowprotocol/cow-sdk"; +import { Twap } from "@cowprotocol/sdk-composable"; +import { setGlobalAdapter } from "@cowprotocol/sdk-common"; +import { EthersV5Adapter } from "@cowprotocol/sdk-ethers-v5-adapter"; import { MetadataApi } from "@cowprotocol/app-data"; -import { BigNumber, ethers } from "ethers"; +import { ethers } from "ethers"; import { confirm, debugStringify, getWallet, printQuote } from "../../utils"; import { getErc20Contract } from "../../contracts/erc20"; +import { getCowShedSdk } from "./cowShed"; // import { latest } from "@cowprotocol/app-data"; const DEFAULT_GAS_LIMIT = 500_000n; @@ -41,31 +43,33 @@ export async function run() { const wallet = await getWallet(CHAIN_ID); const eoaTrader = wallet.address as `0x${string}`; + // v9 SDK uses a global provider adapter (read by the composable order types and + // cow-shed via `getGlobalAdapter()`), so set it before using them. + const adapter = new EthersV5Adapter({ provider: wallet.provider, signer: wallet }); + setGlobalAdapter(adapter); + // Initialize the SDK with the wallet - const sdk = new TradingSdk({ - chainId: CHAIN_ID, - signer: wallet, // Use a signer - appCode: APP_CODE, - }); + const sdk = new TradingSdk( + { + chainId: CHAIN_ID, + signer: wallet, // Use a signer + appCode: APP_CODE, + }, + {}, + adapter, + ); // Get some info about the assets const { beforeTwapSellToken, twapSellToken, twapBuyToken } = await getAssetsInfo({ wallet, trader: eoaTrader }); - const sellAmount = ethers.utils.parseUnits("0.2", twapSellToken.decimals); // 0.1 EURe + const sellAmount = ethers.utils.parseUnits("0.2", twapSellToken.decimals); // 0.1 sDAI const sellAmountFormatted = ethers.utils.formatUnits( sellAmount, - twapSellToken.decimals + twapSellToken.decimals, ); - const cowShedSdk = new CowShedSdk({ - factoryOptions: { - factoryAddress: "0x4f4350bf2c74aacd508d598a1ba94ef84378793d", - implementationAddress: "0x6773d5aA31A1EAD34127D564D6E258E66254EbDb", - proxyCreationCode: - "0x60a03461009557601f61033d38819003918201601f19168301916001600160401b0383118484101761009957808492604094855283398101031261009557610052602061004b836100ad565b92016100ad565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5560405161027b90816100c28239608051818181608b01526101750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100955756fe60806040526004361015610018575b3661019757610197565b5f3560e01c8063025b22bc146100375763f851a4400361000e57610116565b346101125760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101125760043573ffffffffffffffffffffffffffffffffffffffff81169081810361011257337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361010d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b61023d565b5f80fd5b34610112575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011257602061014e61016c565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b33300361010d577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101f0575b1561023d577ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b507fc4d66de8000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000005f351614156101c3565b5f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610277573d5ff35b3d5ffd", - }, - }); + const cowShedSdk = getCowShedSdk(adapter); const cowShed = cowShedSdk.getCowShedAccount(CHAIN_ID, eoaTrader); console.log("CowShed account:", cowShed); @@ -74,7 +78,7 @@ export async function run() { `TWAP sell ${sellAmountFormatted} ${twapSellToken.symbol} for ${twapBuyToken.symbol} in ${PARTS} parts. To create the TWAP we we will use for this PoC an intermediate order with a post hook: - Buy ${sellAmountFormatted} ${twapSellToken.symbol} with ${beforeTwapSellToken.symbol}, sent to ${cowShed} - - Post-hook will create the TWAP using cow-shed. Each part sells ${twapSellToken.symbol} for ${twapBuyToken.symbol}` + - Post-hook will create the TWAP using cow-shed. Each part sells ${twapSellToken.symbol} for ${twapBuyToken.symbol}`, ); // Generate app data for TWAP order @@ -95,10 +99,10 @@ To create the TWAP we we will use for this PoC an intermediate order with a post const twap = Twap.fromData({ // The TWAP orders sends the bought tokens to the trader receiver: eoaTrader, - sellAmount: sellAmount, - buyAmount: BigNumber.from(PARTS), // TODO: Get another quote and apply a good slippage - numberOfParts: BigNumber.from(PARTS), - timeBetweenParts: BigNumber.from(300), + sellAmount: sellAmount.toBigInt(), + buyAmount: BigInt(PARTS), // TODO: Get another quote and apply a good slippage + numberOfParts: BigInt(PARTS), + timeBetweenParts: 300n, sellToken: twapSellToken.address, buyToken: twapBuyToken.address, appData: twapAppDataHex, @@ -125,16 +129,16 @@ To create the TWAP we we will use for this PoC an intermediate order with a post const approveSellTokenGasLimit = await twapSellToken.contract.estimateGas.approve( COW_VAULT_RELAYER_CONTRACT, - sellAmount + sellAmount, ); console.log( "Approve sell token gas limit:", - approveSellTokenGasLimit.toString() + approveSellTokenGasLimit.toString(), ); const deadline = BigInt(Math.ceil(Date.now() / 1000)) + 1800n; console.log( - `Deadline: ${deadline} (${new Date(Number(deadline) * 1000).toISOString()})` + `Deadline: ${deadline} (${new Date(Number(deadline) * 1000).toISOString()})`, ); const { signedMulticall: approveAndTwap, gasLimit: approveAndTwapGasLimit } = @@ -195,7 +199,7 @@ To create the TWAP we we will use for this PoC an intermediate order with a post }, }, }, - } + }, ); // Print the quote @@ -204,29 +208,29 @@ To create the TWAP we we will use for this PoC an intermediate order with a post quoteResults.amountsAndCosts.afterSlippage.sellAmount; const sellAmountIntialTradeFormatted = ethers.utils.formatUnits( sellAmountIntialTrade, - beforeTwapSellToken.decimals + beforeTwapSellToken.decimals, ); // Ask for confirmation before posting the order const confirmed = await confirm( - `Your CoW Shed will get exactly ${sellAmountFormatted} ${twapSellToken.symbol} for at most ${sellAmountIntialTradeFormatted} ${beforeTwapSellToken.symbol}. Then a TWAP will be created with each part selling ${twapSellToken.symbol} for ${twapBuyToken.symbol}. ok?` + `Your CoW Shed will get exactly ${sellAmountFormatted} ${twapSellToken.symbol} for at most ${sellAmountIntialTradeFormatted} ${beforeTwapSellToken.symbol}. Then a TWAP will be created with each part selling ${twapSellToken.symbol} for ${twapBuyToken.symbol}. ok?`, ); if (confirmed) { const allowance = await beforeTwapSellToken.contract.allowance( eoaTrader, - COW_VAULT_RELAYER_CONTRACT + COW_VAULT_RELAYER_CONTRACT, ); console.log( - `Allowance for Vault Relayer: ${allowance} ${beforeTwapSellToken.symbol}` + `Allowance for Vault Relayer: ${allowance} ${beforeTwapSellToken.symbol}`, ); if (allowance < sellAmountIntialTrade) { console.log( - `Approving sell token for: ${sellAmountIntialTradeFormatted} ${beforeTwapSellToken.symbol}` + `Approving sell token for: ${sellAmountIntialTradeFormatted} ${beforeTwapSellToken.symbol}`, ); const tx = await beforeTwapSellToken.contract.approve( COW_VAULT_RELAYER_CONTRACT, - ethers.constants.MaxUint256 + ethers.constants.MaxUint256, // sellAmountIntialTrade ); console.log(`Approving ${beforeTwapSellToken.symbol}. tx:`, tx.hash); @@ -238,7 +242,7 @@ To create the TWAP we we will use for this PoC an intermediate order with a post const { orderId } = await postSwapOrderFromQuote(); console.log( - `Order created, id: https://explorer.cow.fi/gc/orders/${orderId}?tab=overview` + `Order created, id: https://explorer.cow.fi/gc/orders/${orderId}?tab=overview`, ); } } @@ -256,7 +260,7 @@ async function getAssetsInfo(params: { // Get ERC20 balance for oldUnderlying using ethersjs const beforeTwapSellToken = await getErc20Contract( TOKENS.beforeTwapSellToken, - wallet + wallet, ); const twapSellToken = await getErc20Contract(TOKENS.twapSellToken, wallet); const twapBuyToken = await getErc20Contract(TOKENS.twapBuyToken, wallet); diff --git a/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts b/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts new file mode 100644 index 0000000..5676337 --- /dev/null +++ b/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts @@ -0,0 +1,475 @@ +import { APP_CODE, COW_VAULT_RELAYER_CONTRACT } from "../../const"; +import { COMPOSABLE_COW_POLLER_ADDRESS } from "../../const/gnosis"; + +import { + SupportedChainId, + OrderKind, + TradingSdk, + COMPOSABLE_COW_CONTRACT_ADDRESS, + OrderBookApi, +} from "@cowprotocol/cow-sdk"; +import { Twap } from "@cowprotocol/sdk-composable"; +import { setGlobalAdapter } from "@cowprotocol/sdk-common"; +import { EthersV5Adapter } from "@cowprotocol/sdk-ethers-v5-adapter"; + +import { MetadataApi } from "@cowprotocol/app-data"; +import { BigNumber, ethers } from "ethers"; +import { + confirm, + debugStringify, + getExplorerUrl, + getWallet, + printQuote, +} from "../../utils"; +import { getErc20Contract } from "../../contracts/erc20"; +import { getComposableCowPollerContract } from "../../contracts/composable-cow-poller"; +import { getCowShedSdk } from "./cowShed"; + +const DEFAULT_GAS_LIMIT = 500_000n; + +interface Token { + symbol: string; + address: string; + decimals: number; + contract: ethers.Contract; +} + +const TOKENS = { + twapSellToken: "0xaf204776c7245bF4147c2612BF6e5972Ee483701", // sDAI + twapBuyToken: "0x177127622c4A00F3d409B75571e12cB3c8973d3c", // COW +} as const; + +const TWAP_PARTS = 2; +const TWAP_TIME_BETWEEN_PARTS = 120; // 2min +const TWAP_SLIPPAGE_BPS = 1000; // 1000 bps (10%) +const FIRST_ORDER_SLIPPAGE_BPS = 20000000000; // 200,000,000% // TODO: This was a test because I could see backend not executing the order if the sellAmount was subcent. But this should be something like 0.5% + +// The TWAP handler (ComposableCoW order type). Deterministic across chains. +const TWAP_HANDLER = "0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5"; +// Gas budget for the topUp pre-hook on each part (SLOADs + getTradeableOrder + transferFrom). +const TOPUP_HOOK_GAS_LIMIT = "350000"; + +const CHAIN_ID = SupportedChainId.GNOSIS_CHAIN; + +export async function run() { + const wallet = await getWallet(CHAIN_ID); + const eoaTrader = wallet.address as `0x${string}`; + + // v9 SDK uses a global provider adapter. The composable order types and cow-shed + // read it via `getGlobalAdapter()`, so it must be set before using them. + const adapter = new EthersV5Adapter({ provider: wallet.provider, signer: wallet }); + setGlobalAdapter(adapter); + + // Initialize the SDK with the wallet + const sdk = new TradingSdk( + { + chainId: CHAIN_ID, + signer: wallet, // Use a signer + appCode: APP_CODE, + }, + {}, + adapter, + ); + + // Get some info about the assets + const { twapSellToken, twapBuyToken } = await getAssetsInfo({ wallet }); + + // First order (sell=buy order): + // The sell=buy order'sonly purpose is to get the post-hook (which creates the + // TWAP) executed gaslessly via a settlement. + // + // It does NOT move the full TWAP sell amount: This is why no the recipient of the funds is still the EOA. + // as opposed to what src/scripts/composable-cow/postTwapForEOA.ts does + // + // Thanks to JIT funding, each part is pulled from the EOA right before it settles. + const firstOrderBuyAmount = BigNumber.from("1"); // sell=buy order: Buy 1 wei of sDAI + + // TWAP Order: + const fullSellAmount = ethers.utils.parseUnits("0.2", twapSellToken.decimals); // TWAP order: Sell a total of 0.2 sDAI + const fullSellAmountFormatted = ethers.utils.formatUnits( + fullSellAmount, + twapSellToken.decimals, + ); + + const partSellAmount = fullSellAmount.div(TWAP_PARTS); + const partSellAmountFormatted = ethers.utils.formatUnits( + partSellAmount, + twapSellToken.decimals, + ); + + const cowShedSdk = getCowShedSdk(adapter); + const cowShed = cowShedSdk.getCowShedAccount(CHAIN_ID, eoaTrader); + console.log("CowShed account:", cowShed); + + // The poller schedule key. It is derived from appData-INDEPENDENT fields + // (funder, handler, owner, salt), which is exactly what lets us embed + // `topUp(id)` as a pre-hook inside the TWAP's own appData: the order's `ctx` + // contains the appData hash, so keying on `ctx` would be circular, but `id` + // is not. We choose the salt, so we can compute `id` before the appData. + const poller = getComposableCowPollerContract( + COMPOSABLE_COW_POLLER_ADDRESS, + wallet, + ); + const twapSalt = ethers.utils.hexlify(ethers.utils.randomBytes(32)); + const id: string = await poller.scheduleId( + eoaTrader, + TWAP_HANDLER, + cowShed, + twapSalt, + ); + console.log("Poller schedule id:", id); + + // Describe the flow + console.log( + `TWAP sell ${fullSellAmountFormatted} ${twapSellToken.symbol} for ${twapBuyToken.symbol} in ${TWAP_PARTS} parts (funded just-in-time). + +The setup is done with a gasless sell=buy order with a post-hook: + - Sell=buy order: BUY 1 wei of ${twapSellToken.symbol} with ${twapSellToken.symbol} (sell == buy) + - Order executes a post-hook (via cow-shed): + - Approve the Vault Relayer + - Create the TWAP. Owner of the TWAP is cow-shed (${cowShed}). + - Technically, we can include more things here which are left out of this PoC but are a good idea for the production flow: + - Approve the ComposableCowPoller + - Register the JIT funding schedule on ComposableCowPoller + +The EOA keeps the 1 wei of ${twapSellToken.symbol}, which means that the EOA is the recipient of the first order. +The order will have the side-effects described above. + +Watch Tower will detect the TWAP and create each part, which will settle and send the proceeds back to the EOA. +Each part carries a pre-hook (baked into the TWAP appData) that calls poller.topUp(id), pulling exactly that part's +sell amount from the EOA into cow-shed right before it settles. No external keeper is needed. +`, + ); + + // Generate app data for the TWAP, embedding a pre-hook with the polling + const metadataApi = new MetadataApi(); + const topUpCalldata = poller.interface.encodeFunctionData("topUp", [id]); + const twapAppData = await metadataApi.generateAppDataDoc({ + appCode: APP_CODE, + environment: "prod", + metadata: { + hooks: { + pre: [ + // Call: poll.topUp(id) + { + target: COMPOSABLE_COW_POLLER_ADDRESS, + callData: topUpCalldata, + gasLimit: TOPUP_HOOK_GAS_LIMIT, + }, + ], + }, + }, + }); + const { appDataContent: twapAppDataContent, appDataHex: twapAppDataHex } = + await metadataApi.getAppDataInfo(twapAppData); + + const orderBookApi = new OrderBookApi({ + chainId: CHAIN_ID, + }); + + // Quote a single part (sell token -> buy token) to derive a sensible buy amount + // limit. We pass our slippage tolerance so `afterSlippage.buyAmount` is the + // minimum we are willing to receive per part. The TWAP's total buy amount is + // then that per-part minimum scaled by the number of parts. + const { quoteResults: partQuote } = await sdk.getQuote({ + kind: OrderKind.SELL, + sellToken: twapSellToken.address, + sellTokenDecimals: twapSellToken.decimals, + buyToken: twapBuyToken.address, + buyTokenDecimals: twapBuyToken.decimals, + amount: partSellAmount.toString(), + owner: eoaTrader, + slippageBps: TWAP_SLIPPAGE_BPS, + }); + // Expected amount (net of costs, before slippage) and the minimum we will sign + // (after slippage), both per part and scaled to the whole TWAP. + const expectedPartBuyAmount = BigNumber.from( + partQuote.amountsAndCosts.afterNetworkCosts.buyAmount, + ); + const partBuyAmount = BigNumber.from( + partQuote.amountsAndCosts.afterSlippage.buyAmount, + ); + const expectedTwapBuyAmount = expectedPartBuyAmount.mul(TWAP_PARTS); + const twapBuyAmount = partBuyAmount.mul(TWAP_PARTS); + const fmt = (amount: BigNumber) => + `${ethers.utils.formatUnits(amount, twapBuyToken.decimals)} ${twapBuyToken.symbol}`; + console.log( + `TWAP buy amount per part: ~${fmt(expectedPartBuyAmount)} expected, ${fmt(partBuyAmount)} min (after ${TWAP_SLIPPAGE_BPS / 100}% slippage). +TWAP buy amount total: ~${fmt(expectedTwapBuyAmount)} expected, ${fmt(twapBuyAmount)} min.`, + ); + + // Build the TWAP + const twap = Twap.fromData( + { + receiver: eoaTrader, // bought tokens are sent to the trader (the EOA) + sellAmount: fullSellAmount.toBigInt(), + buyAmount: twapBuyAmount.toBigInt(), + numberOfParts: BigInt(TWAP_PARTS), + timeBetweenParts: BigInt(TWAP_TIME_BETWEEN_PARTS), + sellToken: twapSellToken.address, + buyToken: twapBuyToken.address, + appData: twapAppDataHex, // appData, including the pre-hook to poll funds + }, + twapSalt, // controlled salt, so the schedule `id` matches the embedded hook + ); + + // `ctx == ComposableCoW.hash(params) == twap.id` is the order's cabinet key. + // The poller schedule is keyed by the appData-independent `id` instead. + const ctx = twap.id; + const { handler, salt, staticInput } = twap.leaf; + + // Sanity: the handler/salt must be exactly what we derived `id` from, so the + // `topUp(id)` hook baked into the appData resolves to this very schedule. + if ( + handler.toLowerCase() !== TWAP_HANDLER.toLowerCase() || + salt.toLowerCase() !== twapSalt.toLowerCase() + ) { + throw new Error( + `TWAP handler/salt mismatch: handler=${handler} salt=${salt} (expected handler=${TWAP_HANDLER} salt=${twapSalt})`, + ); + } + + console.log("TWAP context (ctx):", ctx); + console.log("TWAP params for creation of order", { + twapParams: twap.leaf, + twapData: debugStringify(twap.data), + twapAppDataContent: twapAppDataContent, + }); + + console.log("Uploading TWAP app data to API..."); + await orderBookApi.uploadAppData(twapAppDataHex, twapAppDataContent); + + // Post-hook: approve the Vault Relayer (so each part can settle from cow-shed) + // and create the TWAP. Both are fund-less calls, so cow-shed never needs to + // hold the full TWAP sell amount up front. + const approveSellTokenCalldata = + twapSellToken.contract.interface.encodeFunctionData("approve", [ + COW_VAULT_RELAYER_CONTRACT, + ethers.constants.MaxUint256, + ]); + + const deadline = BigInt(Math.ceil(Date.now() / 1000)) + 1800n; + console.log( + `Deadline: ${deadline} (${new Date(Number(deadline) * 1000).toISOString()})`, + ); + + const { signedMulticall: approveAndTwap, gasLimit: approveAndTwapGasLimit } = + await cowShedSdk.signCalls({ + chainId: CHAIN_ID, + calls: [ + { + callData: approveSellTokenCalldata, + target: twapSellToken.address, + value: 0n, + isDelegateCall: false, + allowFailure: true, + }, + { + callData: twap.createCalldata, + target: COMPOSABLE_COW_CONTRACT_ADDRESS[CHAIN_ID], + value: 0n, + isDelegateCall: false, + allowFailure: true, + }, + ], + deadline, + signer: wallet, + defaultGasLimit: DEFAULT_GAS_LIMIT, + }); + console.log("Signed approve+twap calldata:", approveAndTwap); + + // Sell=buy order (so, it's a no-operation order) + // Both sellToken and buyOrder matches the TWAP's sellToken + // The post-hook that creates the TWAP. + // It does not move the full TWAP sell amount: + // - This is why the trade amount tries to be minimal (BUY 1 wei, for whatever the quote endpoint said I need to pay for gas) + // - Because funds don't arrive to cow-shed, the recipient can be the EOA (this is where the 1 wei is bought) + // - The funds will be pulled in follow up order's hook (orders will automatically be created by watch-tower) + const { quoteResults, postSwapOrderFromQuote } = await sdk.getQuote( + { + kind: OrderKind.BUY, + sellToken: twapSellToken.address, + sellTokenDecimals: twapSellToken.decimals, + buyToken: twapSellToken.address, // sell == buy + buyTokenDecimals: twapSellToken.decimals, + amount: firstOrderBuyAmount.toString(), // buy 1 wei of sDAI + receiver: eoaTrader, // bought tokens stay with the trader; cow-shed needs no funds until each part is settled + owner: eoaTrader, + partiallyFillable: false, + validFor: 1800, + slippageBps: FIRST_ORDER_SLIPPAGE_BPS, + }, + { + appData: { + appCode: APP_CODE, + metadata: { + hooks: { + post: [ + // Approve the Vault Relayer and create the TWAP + { + callData: approveAndTwap.data, + gasLimit: approveAndTwapGasLimit.toString(), + target: approveAndTwap.to, + dappId: + "cow-sdk-scripts://composable-cow/post-twap-for-eoa-jit", + }, + ], + }, + }, + }, + }, + ); + + // Print the quote + printQuote(quoteResults); + + // Calculate the maximum fee we will pay for the first order + const firstOrderMaxFee = BigNumber.from( + quoteResults.amountsAndCosts.afterSlippage.sellAmount - 1n, // deduct the 1 wei we get back + ); + const firstOrderMaxFeeFormatted = ethers.utils.formatUnits( + firstOrderMaxFee, + twapSellToken.decimals, + ); + + // Ask for confirmation before doing anything on-chain + const confirmed = await confirm( + `This will: + 1. Approve the Vault Relayer to spend ${twapSellToken.symbol} (for the sell=buy order). + 2. Approve the ComposableCowPoller to spend up to ${fullSellAmountFormatted} ${twapSellToken.symbol} (the full TWAP sell amount, pulled JIT). + 3. Register the JIT funding schedule on the poller (funder: your EOA, owner: cow-shed). + 4. Place the sell=buy order, whose post-hook creates the TWAP. + ... + 5. [watch-tower] Detects the TWAP and creates each part, which settle and proceeds are sent back to the EOA. + +🥳 Each part will poll ${partSellAmountFormatted} ${twapSellToken.symbol} from your EOA before filling. + +Your EOA will receive: ~${fmt(expectedTwapBuyAmount)} (expected), at least ${fmt(twapBuyAmount)} (min, after ${TWAP_SLIPPAGE_BPS / 100}% slippage) across the ${TWAP_PARTS} parts. +You will pay at most ${firstOrderMaxFeeFormatted} ${twapSellToken.symbol} for placing and setting up the TWAP. + +ok?`, + ); + if (!confirmed) { + console.log("Aborted"); + return; + } + + // 1. Approve the Vault Relayer for the sell=buy order's sell token (the max the + // sell=buy order could spend to buy 1 wei, i.e. mostly the fee). + await ensureAllowance({ + token: twapSellToken, + owner: eoaTrader, + spender: COW_VAULT_RELAYER_CONTRACT, + requiredAmount: firstOrderMaxFee, + label: "Vault Relayer", + }); + + // 2. Approve the poller to pull the full TWAP sell amount from the EOA over time + // NOTE: For permit tokens, we can include the permit call as part of the first order + await ensureAllowance({ + token: twapSellToken, + owner: eoaTrader, + spender: COMPOSABLE_COW_POLLER_ADDRESS, + requiredAmount: fullSellAmount, + label: "ComposableCowPoller", + }); + + // 3. Register the JIT funding schedule (only the funder may register). + // NOTE: We could make the poller registration also accept a signature. + // This way, this part can always be chained as part of the first-order post-hook and we don't need this transaction + const existing = await poller.schedules(id); + if (existing.funder !== ethers.constants.AddressZero) { + console.log( + `Schedule already registered for id ${id} (funder: ${existing.funder}). Skipping register.`, + ); + } else { + console.log("Registering JIT funding schedule on the poller..."); + const registerTx = await poller.register({ + handler, + funder: eoaTrader, + owner: cowShed, + salt, + staticInput, + }); + console.log("Register tx:", getExplorerUrl(CHAIN_ID, registerTx.hash)); + await registerTx.wait(); + console.log("Schedule registered"); + } + + // 4. Place the sell=buy order. Its post-hook creates the TWAP gaslessly. + const { orderId } = await postSwapOrderFromQuote(); + console.log( + `Sell=buy order created, id: https://explorer.cow.fi/gc/orders/${orderId}?tab=overview`, + ); + console.log( + `Once it settles, the TWAP (ctx ${ctx}) will be live and funded (just-in-time). + +Monitor parts in https://explorer.cow.fi/gc/address/${cowShed}`, + ); +} + +async function ensureAllowance(params: { + token: Token; + owner: string; + spender: string; + requiredAmount: BigNumber; + label: string; +}) { + const { token, owner, spender, requiredAmount, label } = params; + const allowance: BigNumber = await token.contract.allowance(owner, spender); + console.log( + `Allowance for ${label}: ${ethers.utils.formatUnits( + allowance, + token.decimals, + )} ${token.symbol}`, + ); + if (allowance.gte(requiredAmount)) { + return; + } + + console.log(`Approving ${token.symbol} for ${label}...`); + const tx = await token.contract.approve(spender, ethers.constants.MaxUint256); + console.log( + `Approving ${token.symbol} for ${label}. tx:`, + getExplorerUrl(CHAIN_ID, tx.hash), + ); + await tx.wait(); + console.log(`${token.symbol} approved for ${label}`); +} + +async function getAssetsInfo(params: { wallet: ethers.Wallet }): Promise<{ + twapSellToken: Token; + twapBuyToken: Token; +}> { + const { wallet } = params; + + const twapSellToken = await getErc20Contract(TOKENS.twapSellToken, wallet); + const twapBuyToken = await getErc20Contract(TOKENS.twapBuyToken, wallet); + + const [ + twapSellTokenSymbol, + twapSellTokenDecimals, + twapBuyTokenSymbol, + twapBuyTokenDecimals, + ] = await Promise.all([ + twapSellToken.symbol(), + twapSellToken.decimals(), + twapBuyToken.symbol(), + twapBuyToken.decimals(), + ]); + + return { + twapSellToken: { + symbol: twapSellTokenSymbol, + address: twapSellToken.address, + decimals: twapSellTokenDecimals, + contract: twapSellToken, + }, + twapBuyToken: { + symbol: twapBuyTokenSymbol, + address: twapBuyToken.address, + decimals: twapBuyTokenDecimals, + contract: twapBuyToken, + }, + }; +} diff --git a/yarn.lock b/yarn.lock index ca700c7..a7a27aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26,6 +26,11 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@chainsafe/is-ip@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.1.0.tgz#ba9ac32acd9027698e0b56b91c7af069d28d7931" + integrity sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w== + "@cowprotocol/app-data@3.0.0-rc.1": version "3.0.0-rc.1" resolved "https://registry.yarnpkg.com/@cowprotocol/app-data/-/app-data-3.0.0-rc.1.tgz#2fcd06fa06399138efaefdd1b0ff5af4f7981915" @@ -37,45 +42,121 @@ json-stringify-deterministic "^1.0.8" multiformats "^9.6.4" -"@cowprotocol/app-data@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/app-data/-/app-data-3.0.0.tgz#e5e7676ee8884c5348553883d0e65562c2f09e66" - integrity sha512-EyNoyoq3VnVIzvylLdn4Q1r0tU7HOikkjXzYY9PXJ/DUfj9gka7lOyNK7Ot8En2eUYTl3DNAle9RP7kt2sEpeg== +"@cowprotocol/contracts@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@cowprotocol/contracts/-/contracts-1.7.0.tgz" + integrity sha512-tog/0igLaWZv6kK30+aFJ267+yNyMINx6qDHaJQFKZs051XUXnzNFlZgCEfICwDz/821XYjZxOnNbe449tgD5w== + +"@cowprotocol/cow-sdk@9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-9.2.2.tgz#c0f45b3b687253d544050b0bfa2e9502a718e1f2" + integrity sha512-v4OgsAD+uhXvF+u28sddanFw6FPNza2jH+39WlAmJHqC50PTVlMfVbkj4ipNSnHGYFDMpBeTUbMVyv1mE9xsqQ== dependencies: + "@cowprotocol/sdk-app-data" "5.3.1" + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.2.1" + "@cowprotocol/sdk-order-book" "4.0.1" + "@cowprotocol/sdk-order-signing" "1.1.2" + "@cowprotocol/sdk-trading" "2.2.2" + +"@cowprotocol/sdk-app-data@5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-app-data/-/sdk-app-data-5.3.1.tgz#e81c234bfabd485330afae3437a50ab05928ae34" + integrity sha512-kifiPDe5y8NF3tFUTCs2XSgiuWXtl+tc4mCnIYQetBXR9uNxfIe+oAyWsM+T8YtQYHcOI/BuZ1JOU7eaBFatgg== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" ajv "^8.11.0" cross-fetch "^3.1.5" - ipfs-only-hash "^4.0.0" + ipfs-unixfs-importer "^16.1.5" json-stringify-deterministic "^1.0.8" multiformats "^9.6.4" -"@cowprotocol/contracts@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@cowprotocol/contracts/-/contracts-1.7.0.tgz" - integrity sha512-tog/0igLaWZv6kK30+aFJ267+yNyMINx6qDHaJQFKZs051XUXnzNFlZgCEfICwDz/821XYjZxOnNbe449tgD5w== +"@cowprotocol/sdk-common@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-common/-/sdk-common-0.12.0.tgz#5d5e67690534a87f16ecd81a12383ba135aaaf94" + integrity sha512-1QzVg2qflqeZqOilRwu8YAzmJGzLCtO5BIFWPiAjW03+Em6ndoduYgAHKRWTlsw1z2M5xFHo7ufAzd++/z6vIg== + dependencies: + "@cowprotocol/sdk-config" "2.3.1" -"@cowprotocol/contracts@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/contracts/-/contracts-1.8.0.tgz#daffbd9846231c11a74b15a186bb754627e420b0" - integrity sha512-rMEHo1UBB6k4kRoWejHZNGggg6IBVt7vAd8x0FhEvjxhbq3zlAex61f9HpAcDExJNuvfwwDjsOc/7UGztCzhSw== +"@cowprotocol/sdk-composable@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-composable/-/sdk-composable-1.1.2.tgz#adc80b00c12c7eb99a688f9e63e9b8579048bcf0" + integrity sha512-xgxHDdjBV0uPoh6KYT8DP0LI6M+yPTNHCgXqVNk3x//clVP/LF3X3+E3urbyTdF+c+fPTZ0QRDEwdoz4wTKiRQ== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.2.1" + "@cowprotocol/sdk-order-book" "4.0.1" + "@cowprotocol/sdk-order-signing" "1.1.2" + "@openzeppelin/merkle-tree" "^1.0.8" -"@cowprotocol/cow-sdk@6.0.0-RC.42": - version "6.0.0-RC.42" - resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-6.0.0-RC.42.tgz#8ce000a1e9c6c3c1f70d336e62b8a1f363bbdd68" - integrity sha512-COskvWpwrzgjDRzI/X0WErK1UENbjXGJTaave4Fh/SrINN5I+1bJsiRJQVN72d9vq8VwM7rENjJG1+GzmaTs0A== +"@cowprotocol/sdk-config@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-config/-/sdk-config-2.3.1.tgz#372fa2cb81b1221e5687af60dc80709e4b1eabee" + integrity sha512-MSdUbGLJGWjM+7s7j8VoHdpUIIe3FL1xNoyPK2oNnDD2DbzzXpqJkbGsYHAjmIgOrCqP2HNM6yTieLoI0eEMDQ== dependencies: - "@cowprotocol/app-data" "^3.0.0" - "@cowprotocol/contracts" "^1.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@openzeppelin/merkle-tree" "^1.0.8" - "@weiroll/weiroll.js" "^0.3.0" + exponential-backoff "^3.1.1" + limiter "^2.1.0" + +"@cowprotocol/sdk-contracts-ts@3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-3.2.1.tgz#bddadc9d15fb007cc528b5f44fcac58e3cbfa499" + integrity sha512-o4AqK2pVLPY59L0jQ7ZDGeOxA/XgLGzdlkbr3vR61WObeF/jMuSvhLQjJvDI50cyA44oyv1YPEFRDL0htJza4g== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + +"@cowprotocol/sdk-cow-shed@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-cow-shed/-/sdk-cow-shed-0.4.1.tgz#84d27a09046f997dfe243fdbeaba570c3acecf5e" + integrity sha512-BZuTczqctRhClJ4kGgjM4RQteKAyrjBupwW+CV2rqY7BgXkk8vOyafwYNL+QD4VLwttrgh7yI7TCdSGqfffT/Q== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.2.1" + +"@cowprotocol/sdk-ethers-v5-adapter@0.4.10": + version "0.4.10" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-ethers-v5-adapter/-/sdk-ethers-v5-adapter-0.4.10.tgz#b6b2e8ba0078237f8fcffebc4bcca8e0ae894b7f" + integrity sha512-k0UUqkvSZst7biS1kIkIrwHSrObL0vxXLtfH4aSamCwzKVGb73C6gFojqnuql57Hq88CbgFUuMTTcbF+tDm9oA== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + +"@cowprotocol/sdk-order-book@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-book/-/sdk-order-book-4.0.1.tgz#4e2d06b26f4349265cb2a078e81b164e948591a8" + integrity sha512-sitySiCsPCPGiunMJYplqZ9nvsj7RjpknT0nmg7uKaBwP5Crk208TOHRMCgQlDPmWjieyVcfCvkerVady3QmBQ== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" cross-fetch "^3.2.0" - deepmerge "^4.3.1" - ethers "^5.8.0" exponential-backoff "^3.1.2" - graphql "^16.11.0" - graphql-request "^4.3.0" limiter "^3.0.0" +"@cowprotocol/sdk-order-signing@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-1.1.2.tgz#5977741191efc9713276af2cb308ba684c56c60d" + integrity sha512-mhmEOIv6Z8eq16DzkV7B0ylgMSNDRG8Mc5iP48ABwH/jQJ9n5a9ktcUBi1wsxmyS05BHctB6SinLXxB0eRoA4Q== + dependencies: + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.2.1" + "@cowprotocol/sdk-order-book" "4.0.1" + +"@cowprotocol/sdk-trading@2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-2.2.2.tgz#8aab4b9e5b86e569708ae1322137297a64cb8b93" + integrity sha512-QXAJAXuSJH/lyNbD4G7zb4S1gsz7mVWEBJ0dBZ00Z6qRrTXspyjJexrz+MVqj7aNp7Nyc6wDb9HhLZNsytdYzA== + dependencies: + "@cowprotocol/sdk-app-data" "5.3.1" + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.2.1" + "@cowprotocol/sdk-order-book" "4.0.1" + "@cowprotocol/sdk-order-signing" "1.1.2" + deepmerge "^4.3.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" @@ -83,6 +164,14 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@dnsquery/dns-packet@^6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@dnsquery/dns-packet/-/dns-packet-6.1.1.tgz#3abf2c7ebb6dece40a75f429e24f9de23671058a" + integrity sha512-WXTuFvL3G+74SchFAtz3FgIYVOe196ycvGsMgvSH/8Goptb1qpIQtIuM4SOK9G9lhMWYpHxnXyy544ZhluFOew== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.4" + utf8-codec "^1.0.0" + "@ethereumjs/common@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" @@ -130,21 +219,6 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/abi@5.8.0", "@ethersproject/abi@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.8.0.tgz#e79bb51940ac35fe6f3262d7fe2cdb25ad5f07d9" - integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" @@ -158,19 +232,6 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" -"@ethersproject/abstract-provider@5.8.0", "@ethersproject/abstract-provider@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz#7581f9be601afa1d02b95d26b9d9840926a35b0c" - integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - "@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" @@ -182,17 +243,6 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/abstract-signer@5.8.0", "@ethersproject/abstract-signer@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz#8d7417e95e4094c1797a9762e6789c7356db0754" - integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" @@ -204,17 +254,6 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp" "^5.7.0" -"@ethersproject/address@5.8.0", "@ethersproject/address@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.8.0.tgz#3007a2c352eee566ad745dca1dbbebdb50a6a983" - integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" @@ -222,13 +261,6 @@ dependencies: "@ethersproject/bytes" "^5.7.0" -"@ethersproject/base64@5.8.0", "@ethersproject/base64@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.8.0.tgz#61c669c648f6e6aad002c228465d52ac93ee83eb" - integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" @@ -237,14 +269,6 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/basex@5.8.0", "@ethersproject/basex@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.8.0.tgz#1d279a90c4be84d1c1139114a1f844869e57d03a" - integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" @@ -254,15 +278,6 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bignumber@5.8.0", "@ethersproject/bignumber@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7" - integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - bn.js "^5.2.1" - "@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" @@ -270,13 +285,6 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" - integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== - dependencies: - "@ethersproject/logger" "^5.8.0" - "@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" @@ -284,13 +292,6 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/constants@5.8.0", "@ethersproject/constants@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704" - integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/contracts@5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" @@ -307,22 +308,6 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" -"@ethersproject/contracts@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.8.0.tgz#243a38a2e4aa3e757215ea64e276f8a8c9d8ed73" - integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== - dependencies: - "@ethersproject/abi" "^5.8.0" - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" @@ -338,21 +323,6 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/hash@5.8.0", "@ethersproject/hash@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.8.0.tgz#b8893d4629b7f8462a90102572f8cd65a0192b4c" - integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" @@ -371,24 +341,6 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/wordlists" "^5.7.0" -"@ethersproject/hdnode@5.8.0", "@ethersproject/hdnode@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.8.0.tgz#a51ae2a50bcd48ef6fd108c64cbae5e6ff34a761" - integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - "@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" @@ -408,25 +360,6 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/json-wallets@5.8.0", "@ethersproject/json-wallets@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" - integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - "@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" @@ -435,24 +368,11 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/keccak256@5.8.0", "@ethersproject/keccak256@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a" - integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== - dependencies: - "@ethersproject/bytes" "^5.8.0" - js-sha3 "0.8.0" - "@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@ethersproject/logger@5.8.0", "@ethersproject/logger@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" - integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== - "@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" @@ -460,13 +380,6 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" - integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== - dependencies: - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" @@ -475,14 +388,6 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/sha2" "^5.7.0" -"@ethersproject/pbkdf2@5.8.0", "@ethersproject/pbkdf2@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz#cd2621130e5dd51f6a0172e63a6e4a0c0a0ec37e" - integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" @@ -490,13 +395,6 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/properties@5.8.0", "@ethersproject/properties@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.8.0.tgz#405a8affb6311a49a91dabd96aeeae24f477020e" - integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== - dependencies: - "@ethersproject/logger" "^5.8.0" - "@ethersproject/providers@5.7.2": version "5.7.2" resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" @@ -523,32 +421,6 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/providers@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.8.0.tgz#6c2ae354f7f96ee150439f7de06236928bc04cb4" - integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - bech32 "1.1.4" - ws "8.18.0" - "@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" @@ -557,14 +429,6 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/random@5.8.0", "@ethersproject/random@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" - integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" @@ -573,14 +437,6 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/rlp@5.8.0", "@ethersproject/rlp@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.8.0.tgz#5a0d49f61bc53e051532a5179472779141451de5" - integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" @@ -590,15 +446,6 @@ "@ethersproject/logger" "^5.7.0" hash.js "1.1.7" -"@ethersproject/sha2@5.8.0", "@ethersproject/sha2@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" - integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - hash.js "1.1.7" - "@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" @@ -611,18 +458,6 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@5.8.0", "@ethersproject/signing-key@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.8.0.tgz#9797e02c717b68239c6349394ea85febf8893119" - integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - bn.js "^5.2.1" - elliptic "6.6.1" - hash.js "1.1.7" - "@ethersproject/solidity@5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" @@ -635,18 +470,6 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/solidity@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.8.0.tgz#429bb9fcf5521307a9448d7358c26b93695379b9" - integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" @@ -656,15 +479,6 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" - integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" @@ -680,21 +494,6 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/transactions@5.8.0", "@ethersproject/transactions@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.8.0.tgz#1e518822403abc99def5a043d1c6f6fe0007e46b" - integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/units@5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" @@ -704,15 +503,6 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/units@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.8.0.tgz#c12f34ba7c3a2de0e9fa0ed0ee32f3e46c5c2c6a" - integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/wallet@5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" @@ -734,27 +524,6 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/wordlists" "^5.7.0" -"@ethersproject/wallet@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.8.0.tgz#49c300d10872e6986d953e8310dc33d440da8127" - integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/json-wallets" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - "@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": version "5.7.1" resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" @@ -766,17 +535,6 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/web@5.8.0", "@ethersproject/web@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.8.0.tgz#3e54badc0013b7a801463a7008a87988efce8a37" - integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== - dependencies: - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" @@ -788,17 +546,6 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/wordlists@5.8.0", "@ethersproject/wordlists@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.8.0.tgz#7a5654ee8d1bb1f4dbe43f91d217356d650ad821" - integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@inquirer/checkbox@^4.0.4": version "4.0.4" resolved "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.0.4.tgz" @@ -932,6 +679,13 @@ resolved "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz" integrity sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g== +"@ipld/dag-pb@^4.1.5": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.1.7.tgz#8133f099cf0172d41238b23a30355db565d19413" + integrity sha512-/i/13trFihjWfDyXlylRwhuYjtzYjvOFw0vlRjYGnZuv7d7MOgA2lV/vRuL5RfeUajM03aZfFLdq4S7cTbbTRg== + dependencies: + multiformats "^14.0.0" + "@jridgewell/resolve-uri@^3.0.3": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" @@ -950,6 +704,34 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@leichtgewicht/ip-codec@^2.0.4": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@libp2p/interface@^3.1.0", "@libp2p/interface@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-3.2.4.tgz#2140d626889e11897c748dc89ff14b17834551c6" + integrity sha512-o/ZMbsplniVQhz0AW1CinZcfZPEfr7ttu4w7aivrFAs6xDpnJYmN3FTeEgTt93EHs+AEOcIT76V3KMFDZmIEcQ== + dependencies: + "@multiformats/dns" "^1.0.6" + "@multiformats/multiaddr" "^13.0.3" + main-event "^1.0.1" + multiformats "^14.0.0" + progress-events "^1.1.0" + uint8arraylist "^3.0.2" + +"@libp2p/logger@^6.2.4": + version "6.2.9" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-6.2.9.tgz#8aa9c5550bbea07d6ac1ddcc9e5d3209993e482b" + integrity sha512-hjuF81KSt9dWNPJZcdJ4SHEuygMLHrPZVTGNzCWu+2jxpJqOHWy9CJS8llLH7pgbDtlq4jJ4uuqihCR5Gjo4gA== + dependencies: + "@libp2p/interface" "^3.2.4" + "@multiformats/multiaddr" "^13.0.3" + interface-datastore "^10.0.1" + multiformats "^14.0.0" + weald "^1.1.0" + "@metamask/abi-utils@^2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@metamask/abi-utils/-/abi-utils-2.0.4.tgz#20908c1d910f7a17a89fdf5778a5c59d5cb8b8be" @@ -983,6 +765,35 @@ resolved "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz" integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== +"@multiformats/dns@^1.0.6": + version "1.0.15" + resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.15.tgz#d0a1bbb2250d31ac53455d882e2007bf2a99a5e3" + integrity sha512-W0zAMABtAn+3chgFcPGvllKND7M6GblMAAFcJQTy+iMmGiyFErZYPzAh2b50Y3SFf340iFV7+ckVgZkGfUyxzA== + dependencies: + "@dnsquery/dns-packet" "^6.1.1" + "@libp2p/interface" "^3.1.0" + hashlru "^2.3.0" + p-queue "^9.0.0" + progress-events "^1.0.0" + uint8arrays "^6.1.1" + +"@multiformats/multiaddr@^13.0.3": + version "13.0.3" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-13.0.3.tgz#f33a69879bd817fb67bab8ceb976c5d7dec38e7b" + integrity sha512-mEqqJ4r3a/uuFMTpRkU316wGNIDQNhuVWpm+ebKTQeYsfv9jXbPONWM6VVnj3KGUrwfsX7GZOyp4TFqEA2SPCw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + multiformats "^14.0.0" + uint8-varint "^3.0.0" + uint8arrays "^6.1.1" + +"@multiformats/murmur3@^2.1.8": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.2.5.tgz#3dd511dbe3e14ffe2edad06331e143ca04abf539" + integrity sha512-M+VwV8hEx5qB8i7b8fljMwZETJsqyLo8RAXA+JAn+QF9NnH46ZWvGErNukJVlxXSR2KQpuOtHIYIzZlbhhdFvw== + dependencies: + multiformats "^14.0.0" + "@noble/ciphers@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" @@ -1002,13 +813,20 @@ dependencies: "@noble/hashes" "1.7.1" -"@noble/curves@1.9.0", "@noble/curves@~1.9.0": +"@noble/curves@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.0.tgz#13e0ca8be4a0ce66c113693a94514e5599f40cfc" integrity sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg== dependencies: "@noble/hashes" "1.8.0" +"@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" @@ -1024,7 +842,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== -"@openzeppelin/merkle-tree@^1.0.8": +"@openzeppelin/merkle-tree@^1", "@openzeppelin/merkle-tree@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@openzeppelin/merkle-tree/-/merkle-tree-1.0.8.tgz#31ea9cdc09de37315c32650a9772db1352dcdcd8" integrity sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow== @@ -1086,9 +904,9 @@ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@scure/base@^1.1.3", "@scure/base@~1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.5.tgz#f9d1b232425b367d0dcb81c96611dcc651d58671" - integrity sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== "@scure/base@~1.1.6": version "1.1.9" @@ -1172,9 +990,9 @@ integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/debug@^4.1.7": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + version "4.1.13" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" + integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== dependencies: "@types/ms" "*" @@ -1220,13 +1038,6 @@ dependencies: "@types/node" "*" -"@weiroll/weiroll.js@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@weiroll/weiroll.js/-/weiroll.js-0.3.0.tgz#75a7b6c7016c0c0c2be13e6be408a4ead1c68815" - integrity sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw== - dependencies: - ethers "^5.3.1" - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -1237,6 +1048,11 @@ abitype@1.0.8, abitype@^1.0.6: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.8.tgz#3554f28b2e9d6e9f35eb59878193eabd1b9f46ba" integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== +abort-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/abort-error/-/abort-error-1.0.2.tgz#9fd4b364b3659dadd9ad8af54ec9a1678b51c778" + integrity sha512-lVgvB2NyPLqbXXhVmXcYFTC1x5K7CiVdPgdY7LGgFQWC8506oN01sPN3i9cl9ynuwF4iJ0TS9exnR7cZ9FuX4w== + acorn-walk@^8.1.1: version "8.3.4" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" @@ -1254,6 +1070,16 @@ aes-js@3.0.0: resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +ajv@^8: + version "8.20.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" + integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ajv@^8.11.0: version "8.17.1" resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" @@ -1354,6 +1180,19 @@ blakejs@^1.1.0: resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== +blockstore-core@^6.1.2: + version "6.1.3" + resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-6.1.3.tgz#d162d0d23cd2e076089225800654f0ecfbc0680e" + integrity sha512-GLb6XpvbWOlrz1Liz8lTH8iZoXfJ7otY02i26Ok1q6lDkr9uN3jcZq8GzhNq76jJ7CkFG/EGP8J75F3MFo7v6A== + dependencies: + "@libp2p/logger" "^6.2.4" + interface-blockstore "^6.0.0" + interface-store "^7.0.0" + it-all "^3.0.9" + it-filter "^3.1.4" + it-merge "^3.0.12" + multiformats "^13.4.2" + bn.js@^4.11.9: version "4.12.1" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz" @@ -1514,7 +1353,7 @@ create-require@^1.1.0: resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-fetch@^3.1.5, cross-fetch@^3.2.0: +cross-fetch@^3, cross-fetch@^3.1.5, cross-fetch@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz" integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== @@ -1530,13 +1369,20 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -debug@^4, debug@^4.3.1, debug@^4.3.4: +debug@^4, debug@^4.3.1: version "4.4.0" resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" +debug@^4.3.4: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" @@ -1601,19 +1447,6 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -1669,7 +1502,7 @@ ethereum-cryptography@^3.0.0: "@scure/bip32" "1.7.0" "@scure/bip39" "1.6.0" -ethers@^5.3.1, ethers@^5.7.2: +ethers@^5.7.2: version "5.7.2" resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -1705,47 +1538,21 @@ ethers@^5.3.1, ethers@^5.7.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.8.0.tgz#97858dc4d4c74afce83ea7562fe9493cedb4d377" - integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== - dependencies: - "@ethersproject/abi" "5.8.0" - "@ethersproject/abstract-provider" "5.8.0" - "@ethersproject/abstract-signer" "5.8.0" - "@ethersproject/address" "5.8.0" - "@ethersproject/base64" "5.8.0" - "@ethersproject/basex" "5.8.0" - "@ethersproject/bignumber" "5.8.0" - "@ethersproject/bytes" "5.8.0" - "@ethersproject/constants" "5.8.0" - "@ethersproject/contracts" "5.8.0" - "@ethersproject/hash" "5.8.0" - "@ethersproject/hdnode" "5.8.0" - "@ethersproject/json-wallets" "5.8.0" - "@ethersproject/keccak256" "5.8.0" - "@ethersproject/logger" "5.8.0" - "@ethersproject/networks" "5.8.0" - "@ethersproject/pbkdf2" "5.8.0" - "@ethersproject/properties" "5.8.0" - "@ethersproject/providers" "5.8.0" - "@ethersproject/random" "5.8.0" - "@ethersproject/rlp" "5.8.0" - "@ethersproject/sha2" "5.8.0" - "@ethersproject/signing-key" "5.8.0" - "@ethersproject/solidity" "5.8.0" - "@ethersproject/strings" "5.8.0" - "@ethersproject/transactions" "5.8.0" - "@ethersproject/units" "5.8.0" - "@ethersproject/wallet" "5.8.0" - "@ethersproject/web" "5.8.0" - "@ethersproject/wordlists" "5.8.0" - eventemitter3@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== +eventemitter3@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + +exponential-backoff@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.3.tgz#51cf92c1c0493c766053f9d3abee4434c244d2f6" + integrity sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA== + exponential-backoff@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" @@ -1760,11 +1567,6 @@ external-editor@^3.1.0: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-files@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz" - integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== - fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1802,15 +1604,6 @@ follow-redirects@^1.15.6: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== -form-data@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz" - integrity sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" @@ -1898,20 +1691,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graphql-request@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz" - integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== - dependencies: - cross-fetch "^3.1.5" - extract-files "^9.0.0" - form-data "^3.0.0" - -graphql@^16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" - integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== - hamt-sharding@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz" @@ -1920,6 +1699,14 @@ hamt-sharding@^2.0.0: sparse-array "^1.3.1" uint8arrays "^3.0.0" +hamt-sharding@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.8.tgz#4d63f08804ec94296988e2cc4d9dc27f5ac32396" + integrity sha512-pEh4hYa4ZyDJ2jWBTz7MVqTTGC3va3iEIMDJfbCKskR9rzHRd8HVwUyH5nLiLxK6VCFWIJ4vnlAEn4Hwx49Rbg== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^6.1.1" + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" @@ -1955,6 +1742,11 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + hasown@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" @@ -2031,6 +1823,23 @@ inquirer@^12.3.0: run-async "^3.0.0" rxjs "^7.8.1" +interface-blockstore@^6.0.0, interface-blockstore@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-6.0.2.tgz#bbd21d2334fca0f89b75956cfd4ceedda39032fa" + integrity sha512-Z8LscLfuNWYatKVgaEXK8su+wY6iEEcCXYQiwXf20XVuMvR/zyFa6A0s36epfw8CvUrIv+bXT+FZ2hMEfUCmJw== + dependencies: + interface-store "^7.0.0" + multiformats "^13.4.2" + +interface-datastore@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-10.0.1.tgz#d4dbc0ffef74f2b0cd90b32f7691a5a4dee66de7" + integrity sha512-DYMj/Og5Cz1Qwkx6/x5KRvR8SYEX7rVAv3KKCm2NzTwWSfpNAC4PahjcYbHyoZBP6zPWrhQv5n5wE+vaDdgSAg== + dependencies: + abort-error "^1.0.2" + interface-store "^8.0.0" + uint8arrays "^6.1.1" + interface-ipld-format@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz" @@ -2040,6 +1849,18 @@ interface-ipld-format@^1.0.0: multicodec "^3.0.1" multihashes "^4.0.2" +interface-store@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-7.0.2.tgz#77b4a2cc426757cb7aa1745f4bacb14c17ea1c63" + integrity sha512-KYOPcDH+1peaPhSeoZujR5nwkVeola1EdrnrlHTIM0HRNUs9B0aTsUQMH5kTmIjaQq1BOowoUyoCamgL8IMyww== + +interface-store@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-8.0.0.tgz#2a6d8c5a300c0da272e9ff44038958082aa591a1" + integrity sha512-e2+s3EEROzM+Wlas4hU3zveTUscvVMf1BOvdsJfpzFm19SoEXLVadpACjWOnM491HqGpvtfFnevyiaN8W+I6Eg== + dependencies: + abort-error "^1.0.2" + ipfs-only-hash@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz" @@ -2048,6 +1869,28 @@ ipfs-only-hash@^4.0.0: ipfs-unixfs-importer "^7.0.1" meow "^9.0.0" +ipfs-unixfs-importer@^16.1.5: + version "16.1.5" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-16.1.5.tgz#fef147a800d33883a6252631402a832b8baace94" + integrity sha512-w/voTDW5gt5RlZlJ/EljU4q4s+4any2LZ+10UJR7i24+xWWv1+ReyaC9dz46U6HB5YqztAKCzBB123OOsDsNFg== + dependencies: + "@ipld/dag-pb" "^4.1.5" + "@multiformats/murmur3" "^2.1.8" + blockstore-core "^6.1.2" + hamt-sharding "^3.0.6" + interface-blockstore "^6.0.1" + interface-store "^7.0.0" + ipfs-unixfs "^12.0.0" + it-all "^3.0.9" + it-batch "^3.0.9" + it-first "^3.0.9" + it-parallel-batch "^3.0.9" + multiformats "^13.3.7" + progress-events "^1.0.1" + rabin-wasm "^0.1.5" + uint8arraylist "^2.4.8" + uint8arrays "^5.1.0" + ipfs-unixfs-importer@^7.0.1: version "7.0.3" resolved "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz" @@ -2068,6 +1911,14 @@ ipfs-unixfs-importer@^7.0.1: rabin-wasm "^0.1.4" uint8arrays "^2.1.2" +ipfs-unixfs@^12.0.0: + version "12.0.2" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-12.0.2.tgz#a8d9164c122fced1818d69c93bc0e185b34bd392" + integrity sha512-uZ3rutVVZZ+tw52P+sgDSgOSK6ztExJVlfCjKvSD+NIEVlWQPDeKgdSFm+Kxchmgp7t6g1h+dzir+NgY+VsQXg== + dependencies: + protons-runtime "^6.0.1" + uint8arraylist "^2.4.8" + ipfs-unixfs@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz" @@ -2172,16 +2023,45 @@ it-all@^1.0.5: resolved "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz" integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== +it-all@^3.0.9: + version "3.0.11" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.11.tgz#9c3e7b640c871ada270a18fbb7dee26aa0c70fd7" + integrity sha512-Gvqj6MO4GMLnFdtE68HZRpGBskNC+9+GQ+JevTGNYLyhjUuPhjDLU3jN1LpBemXJDW1bRSkczqA/qGyKlPKrcQ== + it-batch@^1.0.8, it-batch@^1.0.9: version "1.0.9" resolved "https://registry.npmjs.org/it-batch/-/it-batch-1.0.9.tgz" integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== +it-batch@^3.0.0, it-batch@^3.0.9: + version "3.0.11" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-3.0.11.tgz#4a54c4b04d6dfa6ca98900d31c8888c9733cd00c" + integrity sha512-2bvKErkXhtwKYDLKAGdEgveOs8wB0i3RItbaroP/6cC/QlrM7j+HAq/yJq6ci4J7KnzdRi76GyipKlafdOTBgw== + +it-filter@^3.1.4: + version "3.1.6" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-3.1.6.tgz#9dc2fb545bdaa6c3751961fa767aba6fa9cbd8d4" + integrity sha512-yXiGPAvJn/exXjVFSCMQc3+J/7RLpOMwKoY2DH1yMhF4lYkdRoAdOwU0vnDACAlRAexf7AZvESZIc9mzhEoi/A== + dependencies: + it-peekable "^3.0.0" + it-first@^1.0.6: version "1.0.7" resolved "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz" integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== +it-first@^3.0.9: + version "3.0.11" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.11.tgz#e59f9659ceb20b8fc1f2d862106fe24f9ce84f47" + integrity sha512-0ig8DKpg09V1o7JBagm3oPx3VY7WYfU5w3lpbLbqzijnfMPSvMGoMZuLm17h/RgOJXKP+9mt7vsCNiU2TW8TkQ== + +it-merge@^3.0.12: + version "3.0.14" + resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-3.0.14.tgz#6469dab1a2f9ca718d26944f7aa1e4eb7a875d72" + integrity sha512-D3t1Go2G2SQMkTujaA6EVojJPJKA9pFksxlSPDRBfrHKhWl6O40vEP7Itr5eCAjyCQH5p9+BFFVIy9bhLM4ZuQ== + dependencies: + it-queueless-pushable "^2.0.0" + it-parallel-batch@^1.0.9: version "1.0.11" resolved "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz" @@ -2189,6 +2069,27 @@ it-parallel-batch@^1.0.9: dependencies: it-batch "^1.0.9" +it-parallel-batch@^3.0.9: + version "3.0.11" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-3.0.11.tgz#f4d33b9866f257361816fdaf890e7e1979193e5e" + integrity sha512-n2gvHRVx14COn25jkio+fOHuKWaA5EVf9f0GbdWgVe8gXRIMYCai+CbmQACIv7o2Jn3ZAUOXD9Ob1Ftod0qtJQ== + dependencies: + it-batch "^3.0.0" + +it-peekable@^3.0.0: + version "3.0.10" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.10.tgz#bd4be5de24cf1d052cab4b0e89618991908000a0" + integrity sha512-2E6+p1pelZOhzp69aaiiBuEybWzAl10uYbIdCR3Pxy8bFNnS/kgpbLtGbNbIZ6RVdU7yHHkmATYwjy52GfFEKA== + +it-queueless-pushable@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/it-queueless-pushable/-/it-queueless-pushable-2.0.5.tgz#893a8e0282f8d5b02239b0075fe594b9776296ed" + integrity sha512-BaKqGLL1AQMR1AEaxiM09vzJQVXHHhfhh9UV0qPqORw/8Rm8igDQqT1qHregfHIb1NIW9jxQ/aXBibHJyuivuQ== + dependencies: + abort-error "^1.0.2" + p-defer "^4.0.1" + race-signal "^2.0.0" + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" @@ -2239,6 +2140,11 @@ jsonify@^0.0.1: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== +just-performance@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/just-performance/-/just-performance-4.3.0.tgz#cc2bc8c9227f09e97b6b1df4cd0de2df7ae16db1" + integrity sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q== + kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" @@ -2251,6 +2157,13 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" +limiter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-2.1.0.tgz#d38d7c5b63729bb84fb0c4d8594b7e955a5182a2" + integrity sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw== + dependencies: + just-performance "4.3.0" + limiter@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/limiter/-/limiter-3.0.0.tgz#03556b76d1a81f547caeecc6b83ecc6f24495715" @@ -2280,6 +2193,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +main-event@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/main-event/-/main-event-1.0.4.tgz#371eb627575ba4379fa35c854b8952208f1fcdc3" + integrity sha512-sKazUjIy2Jalv5lkQ446iOcrx8Q7TkaCuk6xfnzg5uUqMusMLDMPmRDmSNE2kjSVpSTJo4j1bQZusS+Ib7Bvrg== + make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" @@ -2391,6 +2309,11 @@ ms@^2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@^4.0.0-nightly.202508271359: + version "4.0.0-nightly.202508271359" + resolved "https://registry.yarnpkg.com/ms/-/ms-4.0.0-nightly.202508271359.tgz#8ece37f3e9335e111417e5eecd1e4e89a904b6ad" + integrity sha512-WC/Eo7NzFrOV/RRrTaI0fxKVbNCzEy76j2VqNV8SxDf9D69gSE2Lh0QwYvDlhiYmheBYExAvEAxVf5NoN0cj2A== + multibase@^4.0.1: version "4.0.6" resolved "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz" @@ -2406,7 +2329,17 @@ multicodec@^3.0.1: uint8arrays "^3.0.0" varint "^6.0.0" -multiformats@^9.4.2, multiformats@^9.6.4: +multiformats@^13.0.0, multiformats@^13.3.7, multiformats@^13.4.2: + version "13.4.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.4.2.tgz#309ee17d3946db9a6954cf6832aeb2b4b10dd0f3" + integrity sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ== + +multiformats@^14.0.0: + version "14.0.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-14.0.3.tgz#c720ce0e309c794203b7234a89a088fb1558dbc2" + integrity sha512-l7FEUCJb3tx1UWeovywhaidQdOGQOOKTfl51G2y6CQbcOHe9dp3z90NHqQ3v2SKetKgkxwa3wI+2jsyJrjJjTg== + +multiformats@^9, multiformats@^9.4.2, multiformats@^9.6.4: version "9.9.0" resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -2528,6 +2461,11 @@ ox@0.6.7: abitype "^1.0.6" eventemitter3 "5.0.1" +p-defer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.1.tgz#d12c6d41420785ed0d162dbd86b71ba490f7f99e" + integrity sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -2542,6 +2480,19 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-queue@^9.0.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-9.3.0.tgz#f2bbe6b38f1fa38dd4c8cedaa444b6249cf258e2" + integrity sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang== + dependencies: + eventemitter3 "^5.0.4" + p-timeout "^7.0.0" + +p-timeout@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-7.0.1.tgz#95680a6aa693c530f14ac337b8bd32d4ec6ae4f0" + integrity sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg== + p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" @@ -2613,6 +2564,11 @@ pony-cause@^2.1.10: resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.11.tgz#d69a20aaccdb3bdb8f74dd59e5c68d8e6772e4bd" integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== +progress-events@^1.0.0, progress-events@^1.0.1, progress-events@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.1.0.tgz#32c5c3cbce3d6465a31ca088e088aef8a44841df" + integrity sha512-82DVc5tI36neVB3IjdXR11ztwGuoBc98em9ijzubeZKxI47OlV2Znq6mlPqE5xPDzO2Uw98GHiQSjj2favBCRQ== + protobufjs@^6.10.2: version "6.11.4" resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz" @@ -2632,6 +2588,15 @@ protobufjs@^6.10.2: "@types/node" ">=13.7.0" long "^4.0.0" +protons-runtime@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-6.0.2.tgz#770587d4ffad894378fad3b08beef3f1e58d90e2" + integrity sha512-hiyjyANwGcgmzc+tXc1/ZcSZhKnl5MDjaVNWkISHBgadaU0sjTgKIKZMZ62d9J9zlSTyKHCs/osPkQ/3Z+7yeA== + dependencies: + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.1.0" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -2647,7 +2612,7 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -rabin-wasm@^0.1.4: +rabin-wasm@^0.1.4, rabin-wasm@^0.1.5: version "0.1.5" resolved "https://registry.npmjs.org/rabin-wasm/-/rabin-wasm-0.1.5.tgz" integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== @@ -2659,6 +2624,11 @@ rabin-wasm@^0.1.4: node-fetch "^2.6.1" readable-stream "^3.6.0" +race-signal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/race-signal/-/race-signal-2.0.0.tgz#979d58493098ad6a6b556ef5b07b897d253d6b0f" + integrity sha512-P31bLhE4ByBX/70QDXMutxnqgwrF1WUXea1O8DXuviAgkdbQ1iQMQotNgzJIBC9yUSn08u/acZrMUhgw7w6GpA== + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" @@ -2761,9 +2731,9 @@ semver@^7.3.4, semver@^7.5.3: integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== semver@^7.5.4: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + version "7.8.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" + integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== set-function-length@^1.2.2: version "1.2.2" @@ -2872,6 +2842,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +supports-color@^10.0.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-10.2.2.tgz#466c2978cc5cd0052d542a0b576461c2b802ebb4" + integrity sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g== + supports-color@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -2969,6 +2944,36 @@ typescript@^5.7.3: resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== +uint8-varint@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.5.tgz#b7e5af1bc5ff3bc52f913193373f33018c845fda" + integrity sha512-jeFLbL/x30wBRnWjKE1qVBXeumG46r7XmYkpis955lTQ+blccGKFrOsSMHlxePwYB1pI7L8YPHz1t4jLxEs3nA== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8-varint@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-3.0.0.tgz#073d9a1eb24fcb52fae6763511722b7c60b4a951" + integrity sha512-S4DdpXBaLwKcFo7f0bWzWfHjbZ/i3QhM842qn+ZvHjxqFCfUcEB9SQNcmI69S+zMlcmIcKxsk9Iyw77S2Kxv6Q== + dependencies: + uint8arraylist "^3.0.1" + uint8arrays "^6.1.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.4.8: + version "2.4.9" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.9.tgz#32aaa90d00ac9b4c3985e889f34d0211a06bb9bb" + integrity sha512-KxWjyEFzchzik3aoQlK66oaoxIReoMo5bQRm1fcjBUZvE8xv/tyR3CTKhjh6K/faV8VaF6hd5pjr45CzbwuwkA== + dependencies: + uint8arrays "^5.0.1" + +uint8arraylist@^3.0.1, uint8arraylist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-3.0.2.tgz#ca67cba700d0aafec34f8f547f40adc3ee769a57" + integrity sha512-LDVoq9BQaGJzGDUovEnoX6rpKCvnY/Jbtws4ikwnBzjRbq5qBAFpBZevUEbSmMM87aO0Sp+wOZy2ZXf5yODmXQ== + dependencies: + uint8arrays "^6.0.0" + uint8arrays@^2.0.5, uint8arrays@^2.1.2: version "2.1.10" resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz" @@ -2983,6 +2988,20 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.1.tgz#85b2811d0be22b1b1530f96c6abeb64a718f3f12" + integrity sha512-9muQwa4wZG4dKi9gMAIBtnk2Pw87SRpvWTH6lOGm19V2Uqxr4uomUf2PGqPnWc+qs06sN8owUU4jfcoWOcfwVQ== + dependencies: + multiformats "^13.0.0" + +uint8arrays@^6.0.0, uint8arrays@^6.1.0, uint8arrays@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-6.1.1.tgz#c2b59dddacc69ac4813ea29ac4b8d727189de522" + integrity sha512-iz7JN0XCSZYA111lhFG2Ui9EhFvTNekqSRHw3lvMHq+dzwWy1OQftxFQREEh4rffU0oSoXdQHsk2TiHKVm4fsA== + dependencies: + multiformats "^14.0.0" + undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" @@ -2998,6 +3017,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +utf8-codec@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utf8-codec/-/utf8-codec-1.0.0.tgz#b30252507271cd612dbf5b58f04620a5e1e7bb89" + integrity sha512-S/QSLezp3qvG4ld5PUfXiH7mCFxLKjSVZRFkB3DOjgwHuJPFDkInAXc/anf7BAbHt/D38ozDzL+QMZ6/7gsI6w== + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -3045,6 +3069,14 @@ viem@^2.22.23: ox "0.6.7" ws "8.18.0" +weald@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/weald/-/weald-1.1.3.tgz#73672d8aabac2ca1726f91ab34eaa7c6fb00411c" + integrity sha512-vMWtNbYuPb58NeG2+0sKA0Een4VMDwzf+3oHqh68buWRSOMUBlUeRb11LhV28czV+DUpJHRykifijZDuS9bInA== + dependencies: + ms "^4.0.0-nightly.202508271359" + supports-color "^10.0.0" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"