diff --git a/package-lock.json b/package-lock.json index a404716..b6ddc8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,9 +51,9 @@ "node": ">=6.9.0" } }, - "node_modules/@cowprotocol/app-data": { + "node_modules/@cowprotocol/sdk-app-data": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@cowprotocol/app-data/-/app-data-2.5.1.tgz", + "resolved": "https://registry.npmjs.org/@cowprotocol/sdk-app-data/-/app-data-2.5.1.tgz", "integrity": "sha512-GvcLQ44ZUHKdSAXiZ+YCaIehtme/OIvbvL/4go1UqNLTj3jDTDkagPh7CH/z2IPwFWTADyNZO/RSzKrW5UDNaA==", "license": "MIT", "dependencies": { @@ -85,7 +85,7 @@ "integrity": "sha512-KneqcG7esS3hqUxHc45IQ95koThIZ6aKzBu/5YvgGq77OSFgmKjMDYayM647eAufByHCJkCt5I3TnFK8sjB9wA==", "license": "(MIT OR Apache-2.0)", "dependencies": { - "@cowprotocol/app-data": "^2.4.0", + "@cowprotocol/sdk-app-data": "^2.4.0", "@cowprotocol/contracts": "^1.6.0", "@ethersproject/abstract-signer": "^5.7.0", "@openzeppelin/merkle-tree": "^1.0.5", diff --git a/package.json b/package.json index ac74125..2a9f67f 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,9 @@ "typescript": "^5.7.3" }, "dependencies": { - "@cowprotocol/app-data": "3.0.0-rc.1", + "@cowprotocol/sdk-app-data": "5.3.2", "@cowprotocol/contracts": "^1.7.0", - "@cowprotocol/cow-sdk": "9.2.2", + "@cowprotocol/cow-sdk": "9.2.4", "@cowprotocol/sdk-composable": "1.1.2", "@cowprotocol/sdk-cow-shed": "0.4.1", "@cowprotocol/sdk-ethers-v5-adapter": "0.4.10", diff --git a/src/const/gnosis.ts b/src/const/gnosis.ts index f406fb1..029df45 100644 --- a/src/const/gnosis.ts +++ b/src/const/gnosis.ts @@ -6,3 +6,6 @@ export const GNO_ADDRESS = "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb"; // See https://github.com/cowprotocol/composable-cow/pull/116 export const COMPOSABLE_COW_POLLER_ADDRESS = "0xA360eE11eD0d2025604518CF4B8F6e6CB76C7Df7"; + +export const WXDAI_ADDRESS = "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"; +export const COW_ADDRESS = "0x177127622c4A00F3d409B75571e12cB3c8973d3c"; diff --git a/src/index.ts b/src/index.ts index 73cb5c9..57a9093 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,6 +24,9 @@ import { run as swapSellWithSlippageTolerance } from "./scripts/sepolia/swapSell import { run as approveTokenMainnet } from "./scripts/mainnet/approveTokenMainnet"; import { run as getQuoteAndPostOrderMainnet } from "./scripts/mainnet/getQuoteAndPostOrder"; import { run as approveTokenGnosis } from "./scripts/gnosis/approveTokenGnosis"; +import { run as postHookOrderGnosis } from "./scripts/gnosis/postHookOrder"; +import { run as probeWrappersAppData } from "./scripts/gnosis/probeWrappersAppData"; +import { run as probeOrder1271Wrapper } from "./scripts/gnosis/probeOrder1271Wrapper"; import { run as swapAndBridgeSwapsIo } from "./scripts/bridging/swapAndBridgeSwapsIO"; import { run as approveTokenArbitrum } from "./scripts/arbitrum/approveTokenArbitrum"; import { run as swapAndBridgeAccrossArbitrum } from "./scripts/bridging/swapAndBridgeAccrossArbitrum"; @@ -88,7 +91,16 @@ const JOBS: (() => Promise)[] = [ // minimalAppData, // getIpfsForLegacyDoc, // postTwapForEOA, - postTwapForEOAWithJitFunds, + // postTwapForEOAWithJitFunds, + + // Post a Gnosis order carrying CoW hooks in appData (enforceable-hooks assumption test) + // postHookOrderGnosis, + + // Probe: does the Gnosis orderbook accept an appData doc with a `wrappers` field? + // probeWrappersAppData, + + // Probe: does the orderbook accept a 1271 order whose sig is only valid at settlement + wrappers? + probeOrder1271Wrapper, ]; async function main() { diff --git a/src/scripts/app-data/getIpfsForLegacyDoc.ts b/src/scripts/app-data/getIpfsForLegacyDoc.ts index bd7e51f..0527cf0 100644 --- a/src/scripts/app-data/getIpfsForLegacyDoc.ts +++ b/src/scripts/app-data/getIpfsForLegacyDoc.ts @@ -1,10 +1,10 @@ -import { MetadataApi, stringifyDeterministic } from "@cowprotocol/app-data"; +import { MetadataApi, stringifyDeterministic } from "@cowprotocol/sdk-app-data"; export async function run() { const metadataApi = new MetadataApi(); const cid = await metadataApi.legacy.appDataHexToCidLegacy( - "0x46ff6f01739b9d0f95ce957468e01ef617abf89d29abfb673613e4f87ba86e29" + "0x46ff6f01739b9d0f95ce957468e01ef617abf89d29abfb673613e4f87ba86e29", ); console.log("Cid: ", cid); } diff --git a/src/scripts/app-data/minimalAppData.ts b/src/scripts/app-data/minimalAppData.ts index 1cab4cb..11d6ad7 100644 --- a/src/scripts/app-data/minimalAppData.ts +++ b/src/scripts/app-data/minimalAppData.ts @@ -1,4 +1,4 @@ -import { MetadataApi, stringifyDeterministic } from "@cowprotocol/app-data"; +import { MetadataApi, stringifyDeterministic } from "@cowprotocol/sdk-app-data"; export async function run() { const metadataApi = new MetadataApi(); @@ -11,14 +11,13 @@ export async function run() { }, }); - const { appDataContent, appDataHex, cid } = await metadataApi.getAppDataInfo( - appDataSchema - ); + const { appDataContent, appDataHex, cid } = + await metadataApi.getAppDataInfo(appDataSchema); console.log("App-data content (full app-data string): ", appDataContent); console.log( "App-data hex (app-data hex part of the order struct): ", - appDataHex + appDataHex, ); console.log("App-data cid (IPFS identifier): ", cid); } diff --git a/src/scripts/bridging/getAcrossBridgingId.ts b/src/scripts/bridging/getAcrossBridgingId.ts index 5e6d72f..3f4c362 100644 --- a/src/scripts/bridging/getAcrossBridgingId.ts +++ b/src/scripts/bridging/getAcrossBridgingId.ts @@ -6,7 +6,7 @@ import { OrderBookApi } from "@cowprotocol/cow-sdk"; import { getRpcProvider, getWallet } from "../../utils"; import { Interface } from "ethers/lib/utils"; -import { latest as latestAppData } from "@cowprotocol/app-data"; +import { cowAppDataLatestScheme as latestAppData } from "@cowprotocol/sdk-app-data"; export const ACROSS_SPOOK_CONTRACT_ADDRESSES: Partial< Record @@ -47,7 +47,7 @@ async function getDepositId( chainId: SupportedChainId, orderId: string, settlementTx: string, - rpc: providers.JsonRpcProvider + rpc: providers.JsonRpcProvider, ) { const txReceipt = await rpc.getTransactionReceipt(settlementTx); @@ -59,7 +59,7 @@ async function getDepositId( if (depositEvents.length === 0) { // This should never happen, means the hook was not triggered throw new Error( - "No deposit events found in the settlement tx. Are you sure the hook was triggered?" + "No deposit events found in the settlement tx. Are you sure the hook was triggered?", ); } @@ -73,7 +73,7 @@ async function getDepositId( console.log( `Across Deposit - depositId: ${ deposit.depositId - }, Input: ${deposit.inputAmount.toString()}, Output: ${deposit.outputAmount.toString()}` + }, Input: ${deposit.inputAmount.toString()}, Output: ${deposit.outputAmount.toString()}`, ); } @@ -83,7 +83,7 @@ async function getDepositId( // Fetch from API the details of all the settlement orders const orderbookApi = new OrderBookApi({ chainId }); const ordersFromSettlement = await Promise.all( - cowTradeEvents.map((tradeEvent) => orderbookApi.getOrder(orderId)) + cowTradeEvents.map((tradeEvent) => orderbookApi.getOrder(orderId)), ); // Filter orders, leaving only cross-chain orders using Across provider @@ -102,7 +102,7 @@ async function getDepositId( // Find relative position for the orderId in the settlement tx const orderIndex = crossChainOrdersAcross.findIndex( - (order) => order.uid === orderId + (order) => order.uid === orderId, ); // Get the depositId from the relative position @@ -113,7 +113,7 @@ async function getDepositId( function getAcrossDepositEvents( chainId: SupportedChainId, - logs: providers.Log[] + logs: providers.Log[], ): AcrossDepositEvent[] { const spookContractAddress = ACROSS_SPOOK_CONTRACT_ADDRESSES[chainId]?.toLowerCase(); @@ -168,7 +168,7 @@ function getAcrossDepositEvents( function getCowTradeEvents( chainId: SupportedChainId, - logs: providers.Log[] + logs: providers.Log[], ): CowTradeEvent[] { const cowTradeEvents = logs.filter((log) => { return log.address.toLocaleLowerCase() === COW_TRADE_EVENT_TOPIC; @@ -242,7 +242,7 @@ export function getPostHooks(fullAppData?: string): latestAppData.CoWHook[] { // TODO: Move to app-data project export function isAppDoc( - appData: unknown + appData: unknown, ): appData is latestAppData.AppDataRootSchema { return ( typeof appData === "object" && diff --git a/src/scripts/bridging/swapAndBridgeAccrossArbitrum.ts b/src/scripts/bridging/swapAndBridgeAccrossArbitrum.ts index dcb1ee9..7fbc1f3 100644 --- a/src/scripts/bridging/swapAndBridgeAccrossArbitrum.ts +++ b/src/scripts/bridging/swapAndBridgeAccrossArbitrum.ts @@ -8,7 +8,7 @@ import { } from "@cowprotocol/cow-sdk"; import { ethers } from "ethers"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; import { confirm, getWallet, jsonReplacer } from "../../utils"; import { createCowShedTx } from "../../contracts/cowShed"; import { @@ -81,7 +81,7 @@ export async function run() { console.log( "\n๐Ÿ’ฐ Bridge tx:", - JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2) + JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2), ); // Sign and encode the transaction @@ -126,7 +126,7 @@ export async function run() { console.log( "๐Ÿ•ฃ Getting quote...", - JSON.stringify(parameters, jsonReplacer, 2) + JSON.stringify(parameters, jsonReplacer, 2), ); quote = await sdk.getQuote(parameters, { appData }); @@ -136,19 +136,19 @@ export async function run() { quoteResults.amountsAndCosts.afterSlippage.buyAmount; const minIntermediateTokenAmountFormatted = ethers.utils.formatUnits( minIntermediateTokenAmount, - intermediateTokenDecimals + intermediateTokenDecimals, ); const sellAmountFormatted = ethers.utils.formatUnits( sellAmount, - sellTokenDecimals + sellTokenDecimals, ); console.log( - `You will sell ${sellAmountFormatted} USDC and receive at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol} (intermediate token). Then, it will be bridged to Base for WETH.` + `You will sell ${sellAmountFormatted} USDC and receive at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol} (intermediate token). Then, it will be bridged to Base for WETH.`, ); const confirmed = await confirm( - `You will bridge at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol}. ok?` + `You will bridge at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol}. ok?`, ); if (!confirmed) { console.log("๐Ÿšซ Aborted"); @@ -160,7 +160,7 @@ export async function run() { // Print the order creation console.log( - `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview` + `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview`, ); // Wait for the bridge start diff --git a/src/scripts/bridging/swapAndBridgeAccrossMainnet.ts b/src/scripts/bridging/swapAndBridgeAccrossMainnet.ts index fe400f9..8957e80 100644 --- a/src/scripts/bridging/swapAndBridgeAccrossMainnet.ts +++ b/src/scripts/bridging/swapAndBridgeAccrossMainnet.ts @@ -8,7 +8,7 @@ import { } from "@cowprotocol/cow-sdk"; import { ethers } from "ethers"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; import { confirm, getWallet, jsonReplacer } from "../../utils"; import { createCowShedTx } from "../../contracts/cowShed"; import { @@ -84,7 +84,7 @@ export async function run() { console.log( "\n๐Ÿ’ฐ Bridge tx:", - JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2) + JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2), ); // Sign and encode the transaction @@ -129,7 +129,7 @@ export async function run() { console.log( "๐Ÿ•ฃ Getting quote...", - JSON.stringify(parameters, jsonReplacer, 2) + JSON.stringify(parameters, jsonReplacer, 2), ); quote = await sdk.getQuote(parameters, { appData }); @@ -139,19 +139,19 @@ export async function run() { quoteResults.amountsAndCosts.afterSlippage.buyAmount; const minIntermediateTokenAmountFormatted = ethers.utils.formatUnits( minIntermediateTokenAmount, - intermediateTokenDecimals + intermediateTokenDecimals, ); const sellAmountFormatted = ethers.utils.formatUnits( sellAmount, - sellTokenDecimals + sellTokenDecimals, ); console.log( - `You will sell ${sellAmountFormatted} USDC and receive at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol} (intermediate token). Then, it will be bridged to Base for WETH.` + `You will sell ${sellAmountFormatted} USDC and receive at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol} (intermediate token). Then, it will be bridged to Base for WETH.`, ); const confirmed = await confirm( - `You will bridge at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol}. ok?` + `You will bridge at least ${minIntermediateTokenAmountFormatted} ${intermediateTokenSymbol}. ok?`, ); if (!confirmed) { console.log("๐Ÿšซ Aborted"); @@ -163,7 +163,7 @@ export async function run() { // Print the order creation console.log( - `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview` + `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview`, ); // Wait for the bridge start diff --git a/src/scripts/bridging/swapAndBridgeSwapsIO.ts b/src/scripts/bridging/swapAndBridgeSwapsIO.ts index 0b54779..32b0a76 100644 --- a/src/scripts/bridging/swapAndBridgeSwapsIO.ts +++ b/src/scripts/bridging/swapAndBridgeSwapsIO.ts @@ -8,7 +8,7 @@ import { TradeParameters, TradingSdk, } from "@cowprotocol/cow-sdk"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; const { GNO_ADDRESS } = gnosis; const { BTCB_ADDRESS } = bnbchain; @@ -38,7 +38,7 @@ async function apiRequest(method: string, params: any, post: boolean = false) { } async function selectIntermediaryAddress( - quote: SwapsIoQuoteParams + quote: SwapsIoQuoteParams, ): Promise { const selectData = await apiRequest("select", quote); const decimals: Record = { @@ -142,15 +142,15 @@ export async function run() { console.log( `Estimated intermediary token received: ${ethers.utils.formatUnits( minBuyAmount, - intermediaryToken.decimals - )}` + intermediaryToken.decimals, + )}`, ); // ---------------------------- // STEP C: Get cross-chain quote for final token on destination chain // ---------------------------- console.log( - "Fetching cross-chain quote on Swaps.io for final token on destination chain..." + "Fetching cross-chain quote on Swaps.io for final token on destination chain...", ); const crossChainQuoteParams = { ...selectQuoteParams, @@ -160,7 +160,7 @@ export async function run() { const crossChainQuote = await getCrossChainQuote(crossChainQuoteParams); const formattedFinalAmount = ethers.utils.formatUnits( crossChainQuote.data.order.toAmount.toString(), - dstToken.decimals + dstToken.decimals, ); console.log(`You will receive ${formattedFinalAmount} BTCB on BNB chain.`); @@ -187,7 +187,7 @@ export async function run() { const signature = await wallet._signTypedData( domain, { ExecuteHooks: types["ExecuteHooks"], Call: types["Call"] }, - message + message, ); // ---------------------------- @@ -232,7 +232,7 @@ export async function run() { console.log( "๐Ÿ•ฃ Getting quote...", - JSON.stringify(parameters, jsonReplacer, 2) + JSON.stringify(parameters, jsonReplacer, 2), ); // TODO: This is the second quote we ask to the API. I understand why, its because first one is to estimate how many intermediate tokens we get, and the second one is to re-estimate once we have the hook. In principle, we should need one if we can use already a gas estimation and a mock hook at the begining. @@ -242,11 +242,11 @@ export async function run() { const maxSellAmount = quoteResults.amountsAndCosts.afterSlippage.sellAmount; const maxSellAmountFormatted = ethers.utils.formatUnits( maxSellAmount, - srcToken.decimals + srcToken.decimals, ); const confirmed = await confirm( - `You will sell at most ${maxSellAmountFormatted} GNO to buy ${formattedFinalAmount} BTCB on BNB chain. ok?` + `You will sell at most ${maxSellAmountFormatted} GNO to buy ${formattedFinalAmount} BTCB on BNB chain. ok?`, ); if (!confirmed) { console.log("๐Ÿšซ Aborted"); @@ -260,13 +260,13 @@ export async function run() { // Print the order creation console.log( - `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview` + `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview`, ); // Wait for the cross-chain swap start console.log("๐Ÿ•ฃ Waiting for the cross-chain swap to start..."); console.log( - `๐Ÿ”— Swaps.io Explorer link: https://api.prod.swaps.io/api/v0/swaps/${swapHash}` + `๐Ÿ”— Swaps.io Explorer link: https://api.prod.swaps.io/api/v0/swaps/${swapHash}`, ); // TODO: Implement diff --git a/src/scripts/bridging/swapAndBridgeUsingOmnibridge.ts b/src/scripts/bridging/swapAndBridgeUsingOmnibridge.ts index 91d00fe..b1e654c 100644 --- a/src/scripts/bridging/swapAndBridgeUsingOmnibridge.ts +++ b/src/scripts/bridging/swapAndBridgeUsingOmnibridge.ts @@ -8,7 +8,7 @@ import { } from "@cowprotocol/cow-sdk"; import { ethers } from "ethers"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; import { confirm, getWallet, jsonReplacer } from "../../utils"; import { bridgeWithOmnibridge } from "../../contracts/omnibridge"; import { createCowShedTx } from "../../contracts/cowShed"; @@ -26,7 +26,7 @@ export async function run() { // Define trade parameters console.log( - "Buy 1 COW using USDC and bridge to Gnosis Chain using Omnibridge" + "Buy 1 COW using USDC and bridge to Gnosis Chain using Omnibridge", ); // Get raw transaction to bridge all available COW from cow-shed using OmniBridge @@ -38,7 +38,7 @@ export async function run() { console.log( "\n๐Ÿ’ฐ Bridge tx:", - JSON.stringify(bridgeWithOmnibridgeTx, jsonReplacer, 2) + JSON.stringify(bridgeWithOmnibridgeTx, jsonReplacer, 2), ); // Sign and encode the transaction @@ -83,7 +83,7 @@ export async function run() { console.log( "๐Ÿ•ฃ Getting quote...", - JSON.stringify(parameters, jsonReplacer, 2) + JSON.stringify(parameters, jsonReplacer, 2), ); const quote = await sdk.getQuote(parameters, { appData }); @@ -95,7 +95,7 @@ export async function run() { console.log(`You will get pay at most: ${maxSellAmountFormatted} USDC. ok?`); const confirmed = await confirm( - `You will sell at most ${maxSellAmountFormatted} USDC. ok?` + `You will sell at most ${maxSellAmountFormatted} USDC. ok?`, ); if (!confirmed) { console.log("๐Ÿšซ Aborted"); @@ -107,7 +107,7 @@ export async function run() { // Print the order creation console.log( - `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview` + `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview`, ); // Wait for the bridge start diff --git a/src/scripts/bridging/swapAndBridgeUsingXdaiBridge.ts b/src/scripts/bridging/swapAndBridgeUsingXdaiBridge.ts index 3f6fca4..6e1dfc0 100644 --- a/src/scripts/bridging/swapAndBridgeUsingXdaiBridge.ts +++ b/src/scripts/bridging/swapAndBridgeUsingXdaiBridge.ts @@ -10,7 +10,7 @@ import { } from "@cowprotocol/cow-sdk"; import { ethers } from "ethers"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; import { confirm, getWallet, jsonReplacer } from "../../utils"; import { bridgeWithXdaiBridge } from "../../contracts/xDaiBridge"; import { createCowShedTx } from "../../contracts/cowShed"; @@ -28,7 +28,7 @@ export async function run() { // Define trade parameters console.log( - "Buy 1 DAI using USDC and bridge to Gnosis Chain using xDAI Bridge" + "Buy 1 DAI using USDC and bridge to Gnosis Chain using xDAI Bridge", ); // Get raw transaction to bridge all available DAI from cow-shed using xDAI Bridge @@ -39,7 +39,7 @@ export async function run() { console.log( "\n๐Ÿ’ฐ Bridge tx:", - JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2) + JSON.stringify(bridgeWithXdaiBridgeTx, jsonReplacer, 2), ); // Sign and encode the transaction @@ -83,7 +83,7 @@ export async function run() { console.log( "๐Ÿ•ฃ Getting quote...", - JSON.stringify(parameters, jsonReplacer, 2) + JSON.stringify(parameters, jsonReplacer, 2), ); const quote = await sdk.getQuote(parameters, { appData }); @@ -95,7 +95,7 @@ export async function run() { console.log(`You will get pay at most: ${maxSellAmountFormatted} USDC. ok?`); const confirmed = await confirm( - `You will sell at most ${maxSellAmountFormatted} USDC. ok?` + `You will sell at most ${maxSellAmountFormatted} USDC. ok?`, ); if (!confirmed) { console.log("๐Ÿšซ Aborted"); @@ -107,7 +107,7 @@ export async function run() { // Print the order creation console.log( - `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview` + `โ„น๏ธ Order created, id: https://explorer.cow.fi/orders/${orderId}?tab=overview`, ); // Wait for the bridge start diff --git a/src/scripts/composable-cow/postTwapForEOA.ts b/src/scripts/composable-cow/postTwapForEOA.ts index 56fac08..6c420ec 100644 --- a/src/scripts/composable-cow/postTwapForEOA.ts +++ b/src/scripts/composable-cow/postTwapForEOA.ts @@ -11,12 +11,12 @@ 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 { MetadataApi } from "@cowprotocol/sdk-app-data"; 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"; +// import { latest } from "@cowprotocol/sdk-app-data"; const DEFAULT_GAS_LIMIT = 500_000n; @@ -45,7 +45,10 @@ export async function run() { // 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 }); + const adapter = new EthersV5Adapter({ + provider: wallet.provider, + signer: wallet, + }); setGlobalAdapter(adapter); // Initialize the SDK with the wallet diff --git a/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts b/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts index 5676337..8218b0b 100644 --- a/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts +++ b/src/scripts/composable-cow/postTwapForEOAWithJitFunds.ts @@ -12,7 +12,7 @@ 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 { MetadataApi } from "@cowprotocol/sdk-app-data"; import { BigNumber, ethers } from "ethers"; import { confirm, @@ -57,7 +57,10 @@ export async function run() { // 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 }); + const adapter = new EthersV5Adapter({ + provider: wallet.provider, + signer: wallet, + }); setGlobalAdapter(adapter); // Initialize the SDK with the wallet diff --git a/src/scripts/flash-loans/collateralSwapAave.ts b/src/scripts/flash-loans/collateralSwapAave.ts index b64ad8b..0788a5a 100644 --- a/src/scripts/flash-loans/collateralSwapAave.ts +++ b/src/scripts/flash-loans/collateralSwapAave.ts @@ -12,7 +12,7 @@ import { import { ethers } from "ethers"; import { confirm, getWallet, printQuote } from "../../utils"; import { getErc20Contract } from "../../contracts/erc20"; -import { latest } from "@cowprotocol/app-data"; +import { cowAppDataLatestScheme as latest } from "@cowprotocol/sdk-app-data"; import { orderHelperFactoryAbi } from "./abi/OrderHelperFactoryAbi"; import { orderHelperAbi } from "./abi/OrderHelperAbi"; diff --git a/src/scripts/gnosis/postHookOrder.ts b/src/scripts/gnosis/postHookOrder.ts new file mode 100644 index 0000000..a6f9303 --- /dev/null +++ b/src/scripts/gnosis/postHookOrder.ts @@ -0,0 +1,102 @@ +import { gnosis, APP_CODE } from "../../const"; +const { WXDAI_ADDRESS, GNO_ADDRESS } = gnosis; +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk, +} from "@cowprotocol/cow-sdk"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; +import { ethers } from "ethers"; +import { getWallet, jsonReplacer } from "../../utils"; + +/** + * Post an order on Gnosis Chain with CoW Protocol hooks carried in the order's `appData`, + * so we can inspect end-to-end how the real backend/solvers convey and treat hooks. + * + * Why this script exists + * ---------------------- + * We're validating an assumption for an "enforceable hooks" wrapper (cow-shed): that the + * pre/post interactions and any wrapper routing for an order travel in `appData`, and how the + * backend serves that to solvers. + * + * What the SDK supports (verified 2026-07) + * ---------------------------------------- + * `@cowprotocol/sdk-app-data` (3.0.0-rc.1, schema up to v1.3.0) exposes standard **CoW hooks** + * (`metadata.hooks.pre` / `.post`, each a `{ target, callData, gasLimit }`). Neither app-data nor + * `@cowprotocol/cow-sdk` (checked 6.0.0-RC.42 and 9.2.2) exposes a "wrapper" / Atomic-Bundles field + * or a `wrappedSettle` helper, so we cannot route an order through a settlement wrapper from here. + * This script therefore probes the *hooks-in-appData* path โ€” the closest existing mechanism โ€” + * and prints the full appData document + hash so we can inspect exactly what the backend stores + * and serves. Extend `HOOKS` below (or add wrapper routing) once the SDK/app-data schema exposes it. + * + * Env required: PRIVATE_KEY, RPC_URL_100. + */ + +// --- tweak me ------------------------------------------------------------- +const SELL_TOKEN = WXDAI_ADDRESS; +const BUY_TOKEN = GNO_ADDRESS; +const SELL_AMOUNT = ethers.utils.parseUnits("1", 18).toString(); // 1 WXDAI + +// A benign no-op post-hook purely to exercise the hooks-in-appData path. Calling address(0) +// with empty calldata is a harmless no-op a solver can execute. Replace with a real interaction +// (e.g. a call routed through your cow-shed) once we test meaningful hooks. +const HOOKS = { + pre: [] as { target: string; callData: string; gasLimit: string }[], + post: [ + { + target: "0x0000000000000000000000000000000000000000", + callData: "0x", + gasLimit: "50000", + }, + ], +}; +// ------------------------------------------------------------------------- + +export async function run() { + const chainId = SupportedChainId.GNOSIS_CHAIN; + const wallet = await getWallet(chainId); + + const sdk = new TradingSdk({ + chainId, + signer: wallet, + appCode: APP_CODE, + }); + + const parameters: TradeParameters = { + kind: OrderKind.SELL, + amount: SELL_AMOUNT, + sellToken: SELL_TOKEN, + sellTokenDecimals: 18, + buyToken: BUY_TOKEN, + buyTokenDecimals: 18, + }; + + const metadataApi = new MetadataApi(); + const appData = await metadataApi.generateAppDataDoc({ + appCode: APP_CODE, + metadata: { + hooks: HOOKS, + }, + }); + + // NOTE: `as any` bridges dual-package app-data type drift in this SDK RC (the standalone + // `@cowprotocol/sdk-app-data` schema vs the copy bundled inside `@cowprotocol/cow-sdk`). The + // runtime JSON is identical. + // Inspect exactly what will be committed on-chain (hash) and served off-chain (full doc). + const { appDataContent, appDataHex } = await metadataApi.getAppDataInfo( + appData as any, + ); + console.log("๐Ÿ“ฆ appData doc:", JSON.stringify(appData, jsonReplacer, 2)); + console.log("๐Ÿงพ appData content (served to solvers):", appDataContent); + console.log("#๏ธโƒฃ appData hash (committed in the order):", appDataHex); + + console.log(`\nPosting order on Gnosis (owner=${wallet.address})...`); + const orderId = await sdk.postSwapOrder(parameters, { + appData: appData as any, + }); + + console.log( + `โœ… Order created: https://explorer.cow.fi/gc/orders/${orderId}?tab=overview`, + ); +} diff --git a/src/scripts/gnosis/probeOrder1271Wrapper.ts b/src/scripts/gnosis/probeOrder1271Wrapper.ts new file mode 100644 index 0000000..2aa2383 --- /dev/null +++ b/src/scripts/gnosis/probeOrder1271Wrapper.ts @@ -0,0 +1,124 @@ +import { + MetadataApi, + OrderBookApi, + OrderQuoteSideKindSell, + SigningScheme, + SupportedChainId, +} from "@cowprotocol/cow-sdk"; +import { ethers } from "ethers"; +import { gnosis, APP_CODE } from "../../const"; +import { getWallet } from "../../utils"; + +const { WXDAI_ADDRESS, GNO_ADDRESS } = gnosis; + +/** + * Step 2 of the "enforceable hooks / wrapper" investigation โ€” the make-or-break gate. + * + * QUESTION: will the CoW orderbook accept an order whose owner is an EIP-1271 contract that does + * NOT return the magic value at post time (it would only "bless" the digest during settlement), + * *when* the order carries `metadata.wrappers`? If yes, the whole "wrapper blesses at settlement" + * design is viable; if it's rejected at submission, it isn't. + * + * We deploy a minimal `Mock1271Signer` on Gnosis whose `isValidSignature` returns magic only when + * `valid == true`. With `valid == false` it mimics an unblessed shed (invalid at post). We then + * post three orders owned by it and compare: + * A) valid=false, NO wrappers โ†’ expected REJECT (baseline: orderbook validates 1271 at post) + * B) valid=false, WITH wrappers โ†’ THE QUESTION (does the orderbook defer validation?) + * C) valid=true, WITH wrappers โ†’ expected ACCEPT (sanity: 1271 + wrappers posting works) + * + * Env: PRIVATE_KEY, RPC_URL_100. The signer needs a little xDAI (deploys the stub). Set MOCK_1271 + * to reuse an already-deployed stub and skip deployment. + */ + +const CHAIN = SupportedChainId.GNOSIS_CHAIN; +const SELL_AMOUNT = ethers.utils.parseUnits("1", 18).toString(); // 1 WXDAI + +// Placeholder wrapper address (reference CoWSafeWrapper); ours isn't deployed/allowlisted. We only +// test orderbook acceptance here, not an actual fill. +const WRAPPER_ADDRESS = "0x531636e6e18F3A52c283aCCda39D7185E4597A37"; + +// Mock1271Signer (compiled with foundry 0.8.30): isValidSignature returns 0x1626ba7e iff valid. +const MOCK_1271_BYTECODE = + "0x6080806040523460155761019a908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c9081631626ba7e146100f7575080636c64edee1461008c5763c199121914610049575f61000f565b34610088575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261008857602060ff5f54166040519015158152f35b5f80fd5b346100885760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610088576004358015158091036100885760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f54169116175f555f80f35b346100885760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100885760243567ffffffffffffffff8111610088573660238201121561008857806004013567ffffffffffffffff811161008857369101602401116100885760209060ff5f54165f14610195577f1626ba7e000000000000000000000000000000000000000000000000000000008152f35b5f8152f3"; +const MOCK_1271_ABI = [ + "function isValidSignature(bytes32, bytes) view returns (bytes4)", + "function setValid(bool v)", + "function valid() view returns (bool)", +]; + +const metadataApi = new MetadataApi(); +const orderBookApi = new OrderBookApi({ chainId: CHAIN }); + +async function buildAppData(withWrappers: boolean) { + const doc = await metadataApi.generateAppDataDoc({ + appCode: APP_CODE, + metadata: withWrappers + ? { wrappers: [{ address: WRAPPER_ADDRESS, data: "0x", is_omittable: false }] } + : {}, + }); + const { appDataContent, appDataHex } = await metadataApi.getAppDataInfo(doc); + return { appData: appDataContent, appDataHash: appDataHex }; +} + +async function probe(label: string, owner: string, withWrappers: boolean) { + const { appData, appDataHash } = await buildAppData(withWrappers); + try { + // Quote (no signature needed for a quote) + const { quote } = await orderBookApi.getQuote({ + sellToken: WXDAI_ADDRESS, + buyToken: GNO_ADDRESS, + from: owner, + receiver: owner, + sellAmountBeforeFee: SELL_AMOUNT, + kind: OrderQuoteSideKindSell.SELL, + signingScheme: SigningScheme.EIP1271, + appData, + appDataHash, + } as any); + + // Post as a 1271 order: owner is the stub; the signature blob is unused by the stub. + const orderId = await orderBookApi.sendOrder({ + ...quote, + sellAmount: (BigInt(quote.sellAmount) + BigInt(quote.feeAmount)).toString(), + feeAmount: "0", + from: owner, + receiver: owner, + appData, + appDataHash, + signingScheme: SigningScheme.EIP1271, + signature: "0x", + } as any); + + console.log(`โœ… ${label}\n ACCEPTED -> https://explorer.cow.fi/gc/orders/${orderId}`); + } catch (e: any) { + const body = e?.body ?? e?.response?.data ?? e?.message; + console.log(`โŒ ${label}\n REJECTED -> ${JSON.stringify(body)}`); + } +} + +export async function run() { + const wallet = await getWallet(CHAIN); + + let stubAddress = process.env.MOCK_1271; + const stub = new ethers.Contract(stubAddress ?? ethers.constants.AddressZero, MOCK_1271_ABI, wallet); + if (!stubAddress) { + console.log("Deploying Mock1271Signer..."); + const factory = new ethers.ContractFactory(MOCK_1271_ABI, MOCK_1271_BYTECODE, wallet); + const deployed = await factory.deploy(); + await deployed.deployed(); + stubAddress = deployed.address; + console.log(`Mock1271Signer deployed: ${stubAddress}`); + } else { + console.log(`Reusing Mock1271Signer: ${stubAddress}`); + } + const signer = stub.attach(stubAddress); + + // Ensure valid=false (mimics an unblessed shed) + await (await signer.setValid(false)).wait(); + await probe("A) valid=false, NO wrappers (baseline, expect REJECT)", stubAddress, false); + await probe("B) valid=false, WITH wrappers (THE QUESTION)", stubAddress, true); + + // Baseline: make the signature valid + await (await signer.setValid(true)).wait(); + await probe("C) valid=true, WITH wrappers (sanity, expect ACCEPT)", stubAddress, true); +} diff --git a/src/scripts/gnosis/probeWrappersAppData.ts b/src/scripts/gnosis/probeWrappersAppData.ts new file mode 100644 index 0000000..ed49078 --- /dev/null +++ b/src/scripts/gnosis/probeWrappersAppData.ts @@ -0,0 +1,68 @@ +import { MetadataApi } from "@cowprotocol/cow-sdk"; +import axios from "axios"; + +/** + * Step 1 of the "enforceable hooks / wrapper" investigation. + * + * CoW conveys a settlement wrapper via `appData.metadata.wrappers` โ€” an array of + * `{ address, data?, is_omittable? }`. (The docs example `appData: { wrappers: [...] }` with + * `target`/`isOmittable` is out of date; the real schema puts it under `metadata` and uses + * `address` + `is_omittable`.) + * + * The field is NOT in the deprecated `@cowprotocol/sdk-app-data`, which is why it looked missing โ€” it + * lives in `@cowprotocol/sdk-app-data` (5.3.1, schema v1.15.0, `LATEST_WRAPPERS_METADATA_VERSION`), + * re-exported by `@cowprotocol/cow-sdk` 9.2.2 as `MetadataApi`. + * + * This probe builds the appData doc with the real (typed) builder and uploads it to the **Gnosis** + * orderbook app-data endpoint (`PUT /app_data/{hash}`), plus a control without wrappers. Comparing + * the two shows whether the live Gnosis orderbook accepts `metadata.wrappers`. No wallet/RPC needed. + */ + +// Gnosis Chain uses the "xdai" path on the CoW API. +const ORDERBOOK = "https://api.cow.fi/xdai/api/v1"; +const APP_CODE = "cow-sdk-scripts"; + +// Placeholder wrapper address (the reference CoWSafeWrapper); our own wrapper isn't +// deployed/allowlisted yet. We're only testing appData acceptance here, not settlement. +const WRAPPER_ADDRESS = "0x531636e6e18F3A52c283aCCda39D7185E4597A37"; + +const metadataApi = new MetadataApi(); + +async function upload( + label: string, + doc: Parameters[0], +) { + const { appDataContent, appDataHex } = await metadataApi.getAppDataInfo(doc); + console.log(`\n=== ${label} ===`); + console.log("appDataContent:", appDataContent); + console.log("appDataHex:", appDataHex); + try { + const res = await axios.put(`${ORDERBOOK}/app_data/${appDataHex}`, { + fullAppData: appDataContent, + }); + console.log(`โœ… ACCEPTED (${res.status})`, JSON.stringify(res.data)); + } catch (e: any) { + console.log( + `โŒ REJECTED (${e.response?.status})`, + JSON.stringify(e.response?.data ?? e.message), + ); + } +} + +export async function run() { + // 1) control: a plain, schema-valid appData doc (no wrappers) + const control = await metadataApi.generateAppDataDoc({ + appCode: APP_CODE, + metadata: {}, + }); + await upload("control (no wrappers)", control); + + // 2) the same doc WITH metadata.wrappers + const withWrappers = await metadataApi.generateAppDataDoc({ + appCode: APP_CODE, + metadata: { + wrappers: [{ address: WRAPPER_ADDRESS, data: "0x", is_omittable: false }], + }, + }); + await upload("with metadata.wrappers", withWrappers); +} diff --git a/src/scripts/sepolia/swapWithAppData.ts b/src/scripts/sepolia/swapWithAppData.ts index 22db116..5ce2470 100644 --- a/src/scripts/sepolia/swapWithAppData.ts +++ b/src/scripts/sepolia/swapWithAppData.ts @@ -8,7 +8,7 @@ import { } from "@cowprotocol/cow-sdk"; import { ethers } from "ethers"; import { getWallet } from "../../utils"; -import { MetadataApi } from "@cowprotocol/app-data"; +import { MetadataApi } from "@cowprotocol/sdk-app-data"; export async function run() { const wallet = await getWallet(SupportedChainId.SEPOLIA); @@ -47,6 +47,6 @@ export async function run() { const orderId = await sdk.postSwapOrder(parameters, { appData }); console.log( - `Order created, id: https://explorer.cow.fi/sepolia/orders/${orderId}?tab=overview` + `Order created, id: https://explorer.cow.fi/sepolia/orders/${orderId}?tab=overview`, ); } diff --git a/yarn.lock b/yarn.lock index a7a27aa..b55688f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,58 +12,33 @@ resolved "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz" integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== -"@babel/code-frame@^7.0.0": - version "7.26.2" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - 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" - integrity sha512-o5JFX/WEyNzHMxoOdEy5vGrmkFX3HYS6RTOsa+LP65ybz+JfdLG48rhOPxKmGuqun1IY7tW2oSEbm8C5beon3w== - dependencies: - ajv "^8.11.0" - cross-fetch "^3.1.5" - ipfs-only-hash "^4.0.0" - 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/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== +"@cowprotocol/cow-sdk@9.2.4": + version "9.2.4" + resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-9.2.4.tgz#6300faf0388e1b513ade0552b14e7942c7d0a847" + integrity sha512-IlO7aOL09SW2a6yB8TJeuDNF07mqSDnt2VyWPtoGsxZr5snGkcn4wYGabh+eK49ATBnC048rwa1G6ix+CxZmjA== dependencies: - "@cowprotocol/sdk-app-data" "5.3.1" + "@cowprotocol/sdk-app-data" "5.3.2" "@cowprotocol/sdk-common" "0.12.0" "@cowprotocol/sdk-config" "2.3.1" - "@cowprotocol/sdk-contracts-ts" "3.2.1" + "@cowprotocol/sdk-contracts-ts" "3.3.1" "@cowprotocol/sdk-order-book" "4.0.1" - "@cowprotocol/sdk-order-signing" "1.1.2" - "@cowprotocol/sdk-trading" "2.2.2" + "@cowprotocol/sdk-order-signing" "1.1.4" + "@cowprotocol/sdk-trading" "2.2.4" -"@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== +"@cowprotocol/sdk-app-data@5.3.2": + version "5.3.2" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-app-data/-/sdk-app-data-5.3.2.tgz#b12866df4f489d9e044aa08898f0143c7ddcdf88" + integrity sha512-3pyj9Nk6HuhvM1WJZG36LilmdPsnVuVGDS5IA99eN1dsfZLR0oU+/3iZJPVJaMhCQflW9Gqd5ELZSvLR2T80Mg== dependencies: "@cowprotocol/sdk-common" "0.12.0" ajv "^8.11.0" @@ -107,6 +82,14 @@ "@cowprotocol/sdk-common" "0.12.0" "@cowprotocol/sdk-config" "2.3.1" +"@cowprotocol/sdk-contracts-ts@3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-3.3.1.tgz#54e3b513b9240d1577ad0a755e50b2823bdd7923" + integrity sha512-aiIdsOhvKrPFmzZAQFcFLc9+p4tSFIYWa2Xd6m6t9eufuEjW3XaoskjAt44/0ZQ87y/53RSPwpIOdymYBvgQLQ== + 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" @@ -144,17 +127,27 @@ "@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== +"@cowprotocol/sdk-order-signing@1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-1.1.4.tgz#66aaa0beddeada040459e8c7f240d84a1b401aeb" + integrity sha512-Pdaa1XLwty2ZWLK4QS8lpv27jEfl6HteSodNjJ+pegMdKSYRL2phsVwF+sA8z+DTGfAz2Paocc07zkjTBKcR6Q== 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-contracts-ts" "3.3.1" "@cowprotocol/sdk-order-book" "4.0.1" - "@cowprotocol/sdk-order-signing" "1.1.2" + +"@cowprotocol/sdk-trading@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-2.2.4.tgz#c73c652200ee15225a5d237de9031dba47276c7d" + integrity sha512-TjNPhtx0jTwAv6GJVjrJKa2g66kFGBnOuQxZpOzt1udB0rsmsgnyAn8w3utt85HbxY4Rf3WTeCvdd3LB1MBRbw== + dependencies: + "@cowprotocol/sdk-app-data" "5.3.2" + "@cowprotocol/sdk-common" "0.12.0" + "@cowprotocol/sdk-config" "2.3.1" + "@cowprotocol/sdk-contracts-ts" "3.3.1" + "@cowprotocol/sdk-order-book" "4.0.1" + "@cowprotocol/sdk-order-signing" "1.1.4" deepmerge "^4.3.1" "@cspotcode/source-map-support@^0.8.0": @@ -760,11 +753,6 @@ semver "^7.5.4" uuid "^9.0.1" -"@multiformats/base-x@^4.0.1": - version "4.0.1" - 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" @@ -850,59 +838,6 @@ "@metamask/abi-utils" "^2.0.4" ethereum-cryptography "^3.0.0" -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - "@scure/base@^1.1.3", "@scure/base@~1.2.5": version "1.2.6" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" @@ -1004,33 +939,18 @@ "@types/through" "*" rxjs "^7.2.0" -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - "@types/ms@*": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^22.10.5": +"@types/node@*", "@types/node@^22.10.5": version "22.10.5" resolved "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz" integrity sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ== dependencies: undici-types "~6.20.0" -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - "@types/through@*": version "0.0.33" resolved "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz" @@ -1122,11 +1042,6 @@ arg@^4.1.0: resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" @@ -1175,11 +1090,6 @@ bl@^5.0.0: inherits "^2.0.4" readable-stream "^3.4.0" -blakejs@^1.1.0: - version "1.2.1" - 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" @@ -1257,20 +1167,6 @@ call-bound@^1.0.4: call-bind-apply-helpers "^1.0.2" get-intrinsic "^1.3.0" -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -1304,16 +1200,6 @@ ci-info@^3.7.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: - version "1.1.9" - resolved "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.0" - cli-width@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" @@ -1383,19 +1269,6 @@ debug@^4.3.4: 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" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -1452,18 +1325,6 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -err-code@^3.0.0, err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" @@ -1584,14 +1445,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -1691,14 +1544,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== -hamt-sharding@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz" - integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== - dependencies: - 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" @@ -1707,11 +1552,6 @@ hamt-sharding@^3.0.6: 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" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" @@ -1763,18 +1603,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -1792,11 +1620,6 @@ ignore-by-default@^1.0.1: resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1840,15 +1663,6 @@ interface-datastore@^10.0.1: 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" - integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== - dependencies: - cids "^1.1.6" - 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" @@ -1861,14 +1675,6 @@ interface-store@^8.0.0: 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" - integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== - dependencies: - 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" @@ -1891,26 +1697,6 @@ ipfs-unixfs-importer@^16.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" - integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== - dependencies: - bl "^5.0.0" - cids "^1.1.5" - err-code "^3.0.1" - hamt-sharding "^2.0.0" - ipfs-unixfs "^4.0.3" - ipld-dag-pb "^0.22.2" - it-all "^1.0.5" - it-batch "^1.0.8" - it-first "^1.0.6" - it-parallel-batch "^1.0.9" - merge-options "^3.0.4" - multihashing-async "^2.1.0" - 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" @@ -1919,32 +1705,6 @@ ipfs-unixfs@^12.0.0: 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" - integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - -ipld-dag-pb@^0.22.2: - version "0.22.3" - resolved "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz" - integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== - dependencies: - cids "^1.0.0" - interface-ipld-format "^1.0.0" - multicodec "^3.0.1" - multihashing-async "^2.0.0" - protobufjs "^6.10.2" - stable "^0.1.8" - uint8arrays "^2.0.5" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -1952,13 +1712,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-core-module@^2.16.0, is-core-module@^2.5.0: - version "2.16.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -1986,16 +1739,6 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-wsl@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -2018,21 +1761,11 @@ isows@1.0.6: resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== -it-all@^1.0.5: - version "1.0.6" - 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" @@ -2045,11 +1778,6 @@ it-filter@^3.1.4: 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" @@ -2062,13 +1790,6 @@ it-merge@^3.0.12: 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" - integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== - 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" @@ -2090,21 +1811,11 @@ it-queueless-pushable@^2.0.0: p-defer "^4.0.1" race-signal "^2.0.0" -js-sha3@0.8.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" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" @@ -2145,11 +1856,6 @@ just-performance@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" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - klaw-sync@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" @@ -2169,30 +1875,6 @@ limiter@^3.0.0: resolved "https://registry.yarnpkg.com/limiter/-/limiter-3.0.0.tgz#03556b76d1a81f547caeecc6b83ecc6f24495715" integrity sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg== -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - 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" @@ -2203,46 +1885,11 @@ make-error@^1.1.1: resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - micro-ftch@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" @@ -2268,11 +1915,6 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" @@ -2290,15 +1932,6 @@ minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" @@ -2314,21 +1947,6 @@ ms@^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" - integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== - dependencies: - "@multiformats/base-x" "^4.0.1" - -multicodec@^3.0.1: - version "3.2.1" - resolved "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - 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" @@ -2339,37 +1957,11 @@ multiformats@^14.0.0: 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: +multiformats@^9, multiformats@^9.6.4: version "9.9.0" resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== -multihashes@^4.0.1, multihashes@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz" - integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== - dependencies: - multibase "^4.0.1" - uint8arrays "^3.0.0" - varint "^5.0.2" - -multihashing-async@^2.0.0, multihashing-async@^2.1.0: - version "2.1.4" - resolved "https://registry.npmjs.org/multihashing-async/-/multihashing-async-2.1.4.tgz" - integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== - dependencies: - blakejs "^1.1.0" - err-code "^3.0.0" - js-sha3 "^0.8.0" - multihashes "^4.0.1" - murmurhash3js-revisited "^3.0.0" - uint8arrays "^3.0.0" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - mute-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz" @@ -2398,26 +1990,6 @@ nodemon@^3.1.9: touch "^3.1.0" undefsafe "^2.0.5" -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -2466,20 +2038,6 @@ p-defer@^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" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - 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" @@ -2493,21 +2051,6 @@ p-timeout@^7.0.0: 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" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - patch-package@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" @@ -2529,11 +2072,6 @@ patch-package@^8.0.0: tmp "^0.0.33" yaml "^2.2.2" -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2544,16 +2082,6 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picocolors@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" @@ -2569,25 +2097,6 @@ progress-events@^1.0.0, progress-events@^1.0.1, progress-events@^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" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@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" @@ -2607,12 +2116,7 @@ pstree.remy@^1.1.8: resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== -quick-lru@^4.0.1: - version "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.5: +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== @@ -2629,25 +2133,6 @@ race-signal@^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" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -2664,28 +2149,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -resolve@^1.10.0: - version "1.22.10" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -2720,12 +2188,7 @@ scrypt-js@3.0.1: resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^7.3.4, semver@^7.5.3: +semver@^7.5.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -2781,37 +2244,6 @@ sparse-array@^1.3.1: resolved "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz" integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.20" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz" - integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - string-width@^4.1.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -2835,13 +2267,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - 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" @@ -2861,11 +2286,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" @@ -2890,11 +2310,6 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - ts-node@^10.9.2: version "10.9.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" @@ -2919,26 +2334,11 @@ tslib@^2.1.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - typescript@^5.7.3: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" @@ -2974,20 +2374,6 @@ uint8arraylist@^3.0.1, uint8arraylist@^3.0.2: 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" - integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== - 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" @@ -3037,24 +2423,6 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -varint@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - viem@^2.22.23: version "2.22.23" resolved "https://registry.yarnpkg.com/viem/-/viem-2.22.23.tgz#59949d41fd5a22317bed2cf7ea8e85d74e63fedf" @@ -3121,21 +2489,11 @@ ws@8.18.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^2.2.2: version "2.8.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79" integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yn@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"