From 2dceecb3e554ca355e2e744c639324e3e46e49ae Mon Sep 17 00:00:00 2001 From: Connor Prussin Date: Fri, 21 Jun 2024 22:10:32 -0700 Subject: [PATCH 1/2] Add remaining evm apis to api reference --- apps/api-reference/package.json | 37 +- apps/api-reference/src/apis/evm.ts | 568 --- apps/api-reference/src/apis/evm/common.ts | 102 + .../apis/evm/get-ema-price-no-older-than.ts | 65 + .../src/apis/evm/get-ema-price-unsafe.ts | 56 + .../src/apis/evm/get-ema-price.ts | 61 + .../src/apis/evm/get-price-no-older-than.ts | 64 + .../src/apis/evm/get-price-unsafe.ts | 54 + apps/api-reference/src/apis/evm/get-price.ts | 59 + .../src/apis/evm/get-update-fee.tsx | 67 + .../src/apis/evm/get-valid-time-period.ts | 18 + apps/api-reference/src/apis/evm/index.ts | 12 + .../evm/parse-price-feed-updates-unique.tsx | 129 + .../src/apis/evm/parse-price-feed-updates.tsx | 127 + .../evm/update-price-feeds-if-necessary.tsx | 121 + .../src/apis/evm/update-price-feeds.tsx | 93 + apps/api-reference/src/apis/index.tsx | 4 +- apps/api-reference/src/app/layout.tsx | 54 +- .../price-feeds/[chain]/[method]/layout.tsx | 19 +- .../app/price-feeds/[chain]/[method]/page.tsx | 3 +- .../src/app/price-feeds/[chain]/layout.tsx | 22 + .../src/components/Code/index.tsx | 45 +- .../src/components/Code/shiki.ts | 20 +- .../components/ColorThemeSelector/index.tsx | 11 +- .../src/components/EvmApi/index.tsx | 301 ++ .../src/components/EvmApi/networks.ts | 18 + .../src/components/EvmApi/parameter-input.tsx | 82 + .../src/components/EvmApi/parameter.ts | 70 + .../src/components/EvmApi/results-modal.tsx | 118 + .../src/components/EvmApi/run-button.tsx | 242 ++ .../src/components/EvmCall/index.tsx | 190 - .../src/components/EvmCall/networks.ts | 13 - .../components/EvmCall/parameter-input.tsx | 126 - .../src/components/EvmCall/run-button.tsx | 241 -- .../src/components/EvmLayout/index.tsx | 60 + .../src/components/Sidebar/index.tsx | 2 +- apps/api-reference/src/layouts.tsx | 21 - apps/api-reference/src/metadata.ts | 52 + apps/api-reference/src/use-is-mounted.ts | 11 + apps/api-reference/src/zod-utils.ts | 19 + pnpm-lock.yaml | 3219 +++++++++++++---- 41 files changed, 4683 insertions(+), 1913 deletions(-) delete mode 100644 apps/api-reference/src/apis/evm.ts create mode 100644 apps/api-reference/src/apis/evm/common.ts create mode 100644 apps/api-reference/src/apis/evm/get-ema-price-no-older-than.ts create mode 100644 apps/api-reference/src/apis/evm/get-ema-price-unsafe.ts create mode 100644 apps/api-reference/src/apis/evm/get-ema-price.ts create mode 100644 apps/api-reference/src/apis/evm/get-price-no-older-than.ts create mode 100644 apps/api-reference/src/apis/evm/get-price-unsafe.ts create mode 100644 apps/api-reference/src/apis/evm/get-price.ts create mode 100644 apps/api-reference/src/apis/evm/get-update-fee.tsx create mode 100644 apps/api-reference/src/apis/evm/get-valid-time-period.ts create mode 100644 apps/api-reference/src/apis/evm/index.ts create mode 100644 apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx create mode 100644 apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx create mode 100644 apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx create mode 100644 apps/api-reference/src/apis/evm/update-price-feeds.tsx create mode 100644 apps/api-reference/src/app/price-feeds/[chain]/layout.tsx create mode 100644 apps/api-reference/src/components/EvmApi/index.tsx create mode 100644 apps/api-reference/src/components/EvmApi/networks.ts create mode 100644 apps/api-reference/src/components/EvmApi/parameter-input.tsx create mode 100644 apps/api-reference/src/components/EvmApi/parameter.ts create mode 100644 apps/api-reference/src/components/EvmApi/results-modal.tsx create mode 100644 apps/api-reference/src/components/EvmApi/run-button.tsx delete mode 100644 apps/api-reference/src/components/EvmCall/index.tsx delete mode 100644 apps/api-reference/src/components/EvmCall/networks.ts delete mode 100644 apps/api-reference/src/components/EvmCall/parameter-input.tsx delete mode 100644 apps/api-reference/src/components/EvmCall/run-button.tsx create mode 100644 apps/api-reference/src/components/EvmLayout/index.tsx delete mode 100644 apps/api-reference/src/layouts.tsx create mode 100644 apps/api-reference/src/metadata.ts create mode 100644 apps/api-reference/src/use-is-mounted.ts create mode 100644 apps/api-reference/src/zod-utils.ts diff --git a/apps/api-reference/package.json b/apps/api-reference/package.json index 4976d5e083..eb1396a5ce 100644 --- a/apps/api-reference/package.json +++ b/apps/api-reference/package.json @@ -20,25 +20,28 @@ "test:unit": "jest --selectProjects unit --passWithNoTests" }, "dependencies": { - "@amplitude/analytics-browser": "^2.8.1", - "@floating-ui/react": "^0.26.16", + "@amplitude/analytics-browser": "^2.9.0", + "@floating-ui/react": "^0.26.17", "@headlessui/react": "^2.0.4", - "@heroicons/react": "^2.1.3", + "@heroicons/react": "^2.1.4", "@mdx-js/loader": "^3.0.1", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", - "@next/mdx": "^14.2.3", - "@next/third-parties": "^14.2.3", - "@pythnetwork/pyth-sdk-solidity": "^3.1.0", - "@wagmi/core": "^2.10.5", + "@next/mdx": "^14.2.4", + "@next/third-parties": "^14.2.4", + "@pythnetwork/pyth-sdk-solidity": "workspace:^", + "@tanstack/react-query": "^5.45.1", "clsx": "^2.1.1", - "next": "^14.2.3", + "connectkit": "^1.8.2", + "cryptocurrency-icons": "^0.18.1", + "next": "^14.2.4", "next-themes": "^0.3.0", - "pino": "^9.1.0", + "pino": "^9.2.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "shiki": "^1.6.2", - "viem": "^2.13.3", + "shiki": "^1.7.0", + "viem": "^2.15.1", + "wagmi": "^2.10.4", "zod": "^3.23.8" }, "devDependencies": { @@ -51,16 +54,16 @@ "@tailwindcss/forms": "^0.5.7", "@types/jest": "^29.5.12", "@types/mdx": "^2.0.13", - "@types/node": "^20.14.0", + "@types/node": "^20.14.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.19", - "eslint": "^9.4.0", + "eslint": "^9.5.0", "jest": "^29.7.0", "postcss": "^8.4.38", - "prettier": "^3.3.0", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5", - "vercel": "^34.2.4" + "prettier": "^3.3.2", + "tailwindcss": "^3.4.4", + "typescript": "^5.5.2", + "vercel": "^34.2.7" } } diff --git a/apps/api-reference/src/apis/evm.ts b/apps/api-reference/src/apis/evm.ts deleted file mode 100644 index 923ec10b37..0000000000 --- a/apps/api-reference/src/apis/evm.ts +++ /dev/null @@ -1,568 +0,0 @@ -import type { ComponentProps } from "react"; - -import { - type EvmCall as EvmCallComponent, - Language, - ParameterType, -} from "../components/EvmCall"; - -type EvmCall = Omit, "children"> & { - description: string; -}; - -const BTCUSD = - "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"; -const ETHUSD = - "0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace"; - -const getPrice: EvmCall = { - name: "getPrice", - description: ` -Get the latest price and confidence interval for the requested price feed id. -The price feed id is a 32-byte id written as a hexadecimal string; see the -[price feed ids](https://pyth.network/developers/price-feed-ids) page to look up -the id for a given symbol. The returned price and confidence are decimal numbers -written in the form \`a * 10^e\`, where \`e\` is an exponent included in the -result. For example, a price of 1234 with an exponent of -2 represents the -number 12.34. The result also includes a \`publishTime\` which is the unix -timestamp for the price update. - -This function reverts with a \`StalePrice\` error if the on-chain price has not -been updated within the last [getValidTimePeriod()](getValidTimePeriod) -seconds. The default valid time period is set to a reasonable default on each -chain and is typically around 1 minute. Call -[updatePriceFeeds](updatePriceFeeds) to pull a fresh price on-chain and solve -this problem. If you would like to configure the valid time period, see -[getPriceNoOlderThan](getPriceNoOlderThan). If you want the latest price -regardless of when it was updated, see [getPriceUnsafe](getPriceUnsafe). - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress} -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getPrice(priceId); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getPrice(priceId); - `, - }, - ], -}; - -const getPriceUnsafe: EvmCall = { - name: "getPriceUnsafe", - description: ` -Get the latest price and confidence interval for the requested price feed id. -The price feed id is a 32-byte id written as a hexadecimal string; see the -[price feed ids](https://pyth.network/developers/price-feed-ids) page to look up -the id for a given symbol. The returned price and confidence are decimal numbers -written in the form \`a * 10^e\`, where \`e\` is an exponent included in the -result. For example, a price of 1234 with an exponent of -2 represents the -number 12.34. The result also includes a \`publishTime\` which is the unix -timestamp for the price update. - -**This function may return a price from arbitrarily far in the past.** It is the -caller's responsibility to check the returned \`publishTime\` to ensure that the -update is recent enough for their use case. - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress}; -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getPriceUnsafe(priceId); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getPriceUnsafe(priceId); - `, - }, - ], -}; - -const getPriceNoOlderThan: EvmCall = { - name: "getPriceNoOlderThan", - description: ` -Get the latest price and confidence interval for the requested price feed id, if -it has been updated sufficiently recently. The price feed id is a 32-byte id -written as a hexadecimal string; see the [price feed -ids](https://pyth.network/developers/price-feed-ids) page to look up the id for -a given symbol. The returned price and confidence are decimal numbers written -in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. -For example, a price of 1234 with an exponent of -2 represents the number 12.34. -The result also includes a \`publishTime\` which is the unix timestamp for the -price update. - -The caller provides an \`age\` argument that specifies how old the price can be. -The call reverts with a \`StalePriceError\` if the on-chain price is from more -than \`age\` seconds in the past (with respect to the current on-chain -timestamp). Call [updatePriceFeeds](updatePriceFeeds) to pull a fresh price -on-chain and solve this problem. - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - { - name: "age", - type: ParameterType.Int, - description: "Maximum age of the on-chain price in seconds.", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - age: "60", - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - age: "60", - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id, age }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress}; -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -uint256 age = ${age ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getPriceNoOlderThan(priceId, age); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id, age }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const age = ${age ? `'${age}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getPriceNoOlderThan(priceId, age); - `, - }, - ], -}; - -const getEmaPrice: EvmCall = { - name: "getEmaPrice", - description: ` -Get the latest exponentially-weighted moving average (EMA) price and confidence -interval for the requested price feed id. The price feed id is a 32-byte id -written as a hexadecimal string; see the [price feed -ids](https://pyth.network/developers/price-feed-ids) page to look up the id for -a given symbol. The returned price and confidence are decimal numbers written -in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. -For example, a price of 1234 with an exponent of -2 represents the number 12.34. -The result also includes a \`publishTime\` which is the unix timestamp for the -price update. The EMA methodology is described in more detail in this [blog -post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). - -This function reverts with a \`StalePrice\` error if the on-chain price has not -been updated within the last [getValidTimePeriod()](getValidTimePeriod) seconds. -The default valid time period is set to a reasonable default on each chain and -is typically around 1 minute. Call [updatePriceFeeds](updatePriceFeeds) to pull -a fresh price on-chain and solve this problem. If you would like to configure -the valid time period, see [getEmaPriceNoOlderThan](getEmaPriceNoOlderThan). If -you want the latest price regardless of when it was updated, see -[getEmaPriceUnsafe](getEmaPriceUnsafe). - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress} -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getEmaPrice(priceId); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getEmaPrice(priceId); - `, - }, - ], -}; - -const getEmaPriceUnsafe: EvmCall = { - name: "getEmaPriceUnsafe", - description: ` -Get the latest exponentially-weighted moving average (EMA) price and confidence -interval for the requested price feed id. The price feed id is a 32-byte id -written as a hexadecimal string; see the [price feed -ids](https://pyth.network/developers/price-feed-ids) page to look up the id for -a given symbol. The returned price and confidence are decimal numbers written -in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. -For example, a price of 1234 with an exponent of -2 represents the number 12.34. -The result also includes a \`publishTime\` which is the unix timestamp for the -price update. The EMA methodology is described in more detail in this [blog -post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). - -**This function may return a price from arbitrarily far in the past.** It is the -caller's responsibility to check the returned \`publishTime\` to ensure that the -update is recent enough for their use case. - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress} -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getEmaPriceUnsafe(priceId); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getEmaPriceUnsafe(priceId); - `, - }, - ], -}; - -const getEmaPriceNoOlderThan: EvmCall = { - name: "getEmaPriceNoOlderThan", - description: ` -Get the latest exponentially-weighted moving average (EMA) price and confidence -interval for the requested price feed id. The price feed id is a 32-byte id -written as a hexadecimal string; see the [price feed -ids](https://pyth.network/developers/price-feed-ids) page to look up the id for -a given symbol. The returned price and confidence are decimal numbers written -in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. -For example, a price of 1234 with an exponent of -2 represents the number 12.34. -The result also includes a \`publishTime\` which is the unix timestamp for the -price update. The EMA methodology is described in more detail in this [blog -post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). - -The caller provides an \`age\` argument that specifies how old the price can be. -The call reverts with a \`StalePriceError\` if the on-chain price is from more -than \`age\` seconds in the past (with respect to the current on-chain -timestamp). Call [updatePriceFeeds](updatePriceFeeds) to pull a fresh price -on-chain and solve this problem. - -This function reverts with a \`PriceFeedNotFound\` error if the requested feed -id has never received a price update. This error could either mean that the -provided price feed id is incorrect, or (more typically) that this is the first -attempted use of that feed on-chain. In the second case, calling -[updatePriceFeeds](updatePriceFeeds) will solve this problem. -`, - parameters: [ - { - name: "id", - type: ParameterType.Hex, - description: "The ID of the price feed you want to read", - }, - { - name: "age", - type: ParameterType.Int, - description: "Maximum age of the on-chain price in seconds.", - }, - ], - examples: [ - { - name: "BTC/USD", - parameters: { - id: BTCUSD, - age: "60", - }, - }, - { - name: "ETH/USD", - parameters: { - id: ETHUSD, - age: "60", - }, - }, - ], - code: [ - { - language: Language.Solidity, - code: (network, { id, age }) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress}; -IPyth pyth = IPyth(contractAddress); - -bytes32 priceId = ${id ?? "/* */"}; -uint256 age = ${age ?? "/* */"}; -PythStructs.Price memory currentBasePrice = pyth.getEmaPriceNoOlderThan(priceId, age); - `, - }, - { - language: Language.EthersJSV6, - code: (network, { id, age }) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const priceId = ${id ? `'${id}'` : "/* */"}; -const age = ${age ? `'${age}'` : "/* */"}; -const [price, conf, expo, timestamp] = await contract.getEmaPriceNoOlderThan(priceId, age); - `, - }, - ], -}; - -const getValidTimePeriod: EvmCall = { - name: "getValidTimePeriod", - description: ` -Get the default valid time period in seconds. This quantity is the maximum age -of price updates returned by functions like [getPrice](getPrice) and -[getEmaPrice](getEmaPrice); these functions revert if the current on-chain price -is older than this period. The valid time period is configured to be a sane -default for each blockchain. -`, - parameters: [], - examples: [], - code: [ - { - language: Language.Solidity, - code: (network) => ` -import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; -import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; - -// ${network.name} -address contractAddress = ${network.contractAddress}; -IPyth pyth = IPyth(contractAddress); - -uint validTimePeriod = pyth.getValidTimePeriod(); - `, - }, - { - language: Language.EthersJSV6, - code: (network) => ` -import { ethers } from "ethers"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json" assert { type: "json" }; - -// ${network.name} -const contractAddress = '${network.contractAddress}'; -const provider = ethers.getDefaultProvider('${network.rpcUrl}'); -const contract = new ethers.Contract(contractAddress, PythAbi, provider); - -const [validTimePeriod] = await contract.getValidTimePeriod(); - `, - }, - ], -}; - -export const evm = { - getEmaPrice, - getEmaPriceNoOlderThan, - getEmaPriceUnsafe, - getPrice, - getPriceNoOlderThan, - getPriceUnsafe, - // getUpdateFee - getValidTimePeriod, - // parsePriceFeedUpdates - // parsePriceFeedUpdatesUnique - // updatePriceFeeds - // updatePriceFeedsIfNecessary -}; diff --git a/apps/api-reference/src/apis/evm/common.ts b/apps/api-reference/src/apis/evm/common.ts new file mode 100644 index 0000000000..e41839a6cb --- /dev/null +++ b/apps/api-reference/src/apis/evm/common.ts @@ -0,0 +1,102 @@ +import { z } from "zod"; + +import { + type ReadApi, + type WriteApi, + type NetworkInfo, + EvmApiType, + Language, +} from "../../components/EvmApi"; +import { singletonArray, safeFetch } from "../../zod-utils"; + +export const readApi = ( + spec: Omit, "children" | "type"> & { + description: string; + }, +) => ({ + ...spec, + type: EvmApiType.Read, +}); + +export const writeApi = ( + spec: Omit, "children" | "type"> & { + description: string; + }, +) => ({ + ...spec, + type: EvmApiType.Write, +}); + +export const BTCUSD = + "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"; +export const ETHUSD = + "0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace"; + +const HERMES_URL = "https://hermes.pyth.network"; + +export const getLatestPriceFeed = async (feedId: string) => { + const url = new URL("/api/latest_price_feeds", HERMES_URL); + url.searchParams.set("ids[]", feedId); + url.searchParams.set("target_chain", "evm"); + url.searchParams.set("binary", "true"); + return safeFetch(priceFeedSchema, url); +}; + +const priceFeedSchema = singletonArray( + z.object({ + vaa: z.string().transform((value) => toZeroXPrefixedHex(value)), + price: z.object({ + publish_time: z.number(), + }), + }), +); + +const toZeroXPrefixedHex = (value: string) => + `0x${Buffer.from(value, "base64").toString("hex")}`; + +export const solidity = ( + code: string | ((params: Partial>) => string), +) => ({ + language: Language.Solidity, + dimRange: [ + { line: 0, character: 0 }, + { line: 7, character: 0 }, + ] as const, + code: ( + network: NetworkInfo, + params: Partial>, + ) => ` +import "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; +import "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; + +// ${network.name} +address contractAddress = ${network.contractAddress} +IPyth pyth = IPyth(contractAddress); + +${typeof code === "string" ? code.trim() : code(params).trim()} + `, +}); + +export const ethersJS = ( + code: string | ((params: Partial>) => string), +) => ({ + language: Language.EthersJSV6, + dimRange: [ + { line: 0, character: 0 }, + { line: 8, character: 0 }, + ] as const, + code: ( + network: NetworkInfo, + params: Partial>, + ) => ` +import { ethers } from 'ethers'; +import PythAbi from '@pythnetwork/pyth-sdk-solidity/abis/IPyth.json' assert { type: 'json' }; + +// ${network.name} +const contractAddress = '${network.contractAddress}'; +const provider = ethers.getDefaultProvider('${network.rpcUrl}'); +const contract = new ethers.Contract(contractAddress, PythAbi, provider); + +${typeof code === "string" ? code.trim() : code(params).trim()} + `, +}); diff --git a/apps/api-reference/src/apis/evm/get-ema-price-no-older-than.ts b/apps/api-reference/src/apis/evm/get-ema-price-no-older-than.ts new file mode 100644 index 0000000000..5cea4baf2c --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-ema-price-no-older-than.ts @@ -0,0 +1,65 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getEmaPriceNoOlderThan = readApi<"id" | "age">({ + name: "getEmaPriceNoOlderThan", + description: ` +Get the latest exponentially-weighted moving average (EMA) price and confidence +interval for the requested price feed id. The price feed id is a 32-byte id +written as a hexadecimal string; see the [price feed +ids](https://pyth.network/developers/price-feed-ids) page to look up the id for +a given symbol. The returned price and confidence are decimal numbers written +in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. +For example, a price of 1234 with an exponent of -2 represents the number 12.34. +The result also includes a \`publishTime\` which is the unix timestamp for the +price update. The EMA methodology is described in more detail in this [blog +post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). + +The caller provides an \`age\` argument that specifies how old the price can be. +The call reverts with a \`StalePriceError\` if the on-chain price is from more +than \`age\` seconds in the past (with respect to the current on-chain +timestamp). Call [updatePriceFeeds](updatePriceFeeds) to pull a fresh price +on-chain and solve this problem. + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + { + name: "age", + type: ParameterType.Int, + description: "Maximum age of the on-chain price in seconds.", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD, age: "60" } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD, age: "60" } }, + ], + code: [ + solidity( + ({ id, age }) => ` +bytes32 priceId = ${id ?? "/* */"}; +uint256 age = ${age ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getEmaPriceNoOlderThan(priceId, age); + `, + ), + ethersJS( + ({ id, age }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const age = ${age ? `'${age}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getEmaPriceNoOlderThan(priceId, age); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-ema-price-unsafe.ts b/apps/api-reference/src/apis/evm/get-ema-price-unsafe.ts new file mode 100644 index 0000000000..97d260ebb2 --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-ema-price-unsafe.ts @@ -0,0 +1,56 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getEmaPriceUnsafe = readApi<"id">({ + name: "getEmaPriceUnsafe", + description: ` +Get the latest exponentially-weighted moving average (EMA) price and confidence +interval for the requested price feed id. The price feed id is a 32-byte id +written as a hexadecimal string; see the [price feed +ids](https://pyth.network/developers/price-feed-ids) page to look up the id for +a given symbol. The returned price and confidence are decimal numbers written +in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. +For example, a price of 1234 with an exponent of -2 represents the number 12.34. +The result also includes a \`publishTime\` which is the unix timestamp for the +price update. The EMA methodology is described in more detail in this [blog +post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). + +**This function may return a price from arbitrarily far in the past.** It is the +caller's responsibility to check the returned \`publishTime\` to ensure that the +update is recent enough for their use case. + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD } }, + ], + code: [ + solidity( + ({ id }) => ` +bytes32 priceId = ${id ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getEmaPriceUnsafe(priceId); + `, + ), + ethersJS( + ({ id }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getEmaPriceUnsafe(priceId); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-ema-price.ts b/apps/api-reference/src/apis/evm/get-ema-price.ts new file mode 100644 index 0000000000..58485e73cd --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-ema-price.ts @@ -0,0 +1,61 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getEmaPrice = readApi<"id">({ + name: "getEmaPrice", + description: ` +Get the latest exponentially-weighted moving average (EMA) price and confidence +interval for the requested price feed id. The price feed id is a 32-byte id +written as a hexadecimal string; see the [price feed +ids](https://pyth.network/developers/price-feed-ids) page to look up the id for +a given symbol. The returned price and confidence are decimal numbers written +in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. +For example, a price of 1234 with an exponent of -2 represents the number 12.34. +The result also includes a \`publishTime\` which is the unix timestamp for the +price update. The EMA methodology is described in more detail in this [blog +post](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1). + +This function reverts with a \`StalePrice\` error if the on-chain price has not +been updated within the last [getValidTimePeriod()](getValidTimePeriod) seconds. +The default valid time period is set to a reasonable default on each chain and +is typically around 1 minute. Call [updatePriceFeeds](updatePriceFeeds) to pull +a fresh price on-chain and solve this problem. If you would like to configure +the valid time period, see [getEmaPriceNoOlderThan](getEmaPriceNoOlderThan). If +you want the latest price regardless of when it was updated, see +[getEmaPriceUnsafe](getEmaPriceUnsafe). + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD } }, + ], + code: [ + solidity( + ({ id }) => ` +bytes32 priceId = ${id ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getEmaPrice(priceId); + `, + ), + ethersJS( + ({ id }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getEmaPrice(priceId); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-price-no-older-than.ts b/apps/api-reference/src/apis/evm/get-price-no-older-than.ts new file mode 100644 index 0000000000..6c8f29bb70 --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-price-no-older-than.ts @@ -0,0 +1,64 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getPriceNoOlderThan = readApi<"id" | "age">({ + name: "getPriceNoOlderThan", + description: ` +Get the latest price and confidence interval for the requested price feed id, if +it has been updated sufficiently recently. The price feed id is a 32-byte id +written as a hexadecimal string; see the [price feed +ids](https://pyth.network/developers/price-feed-ids) page to look up the id for +a given symbol. The returned price and confidence are decimal numbers written +in the form \`a * 10^e\`, where \`e\` is an exponent included in the result. +For example, a price of 1234 with an exponent of -2 represents the number 12.34. +The result also includes a \`publishTime\` which is the unix timestamp for the +price update. + +The caller provides an \`age\` argument that specifies how old the price can be. +The call reverts with a \`StalePriceError\` if the on-chain price is from more +than \`age\` seconds in the past (with respect to the current on-chain +timestamp). Call [updatePriceFeeds](updatePriceFeeds) to pull a fresh price +on-chain and solve this problem. + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + { + name: "age", + type: ParameterType.Int, + description: "Maximum age of the on-chain price in seconds.", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD, age: "60" } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD, age: "60" } }, + ], + code: [ + solidity( + ({ id, age }) => ` +bytes32 priceId = ${id ?? "/* */"}; +uint256 age = ${age ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getPriceNoOlderThan(priceId, age); + `, + ), + ethersJS( + ({ id, age }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const age = ${age ? `'${age}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getPriceNoOlderThan(priceId, age); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-price-unsafe.ts b/apps/api-reference/src/apis/evm/get-price-unsafe.ts new file mode 100644 index 0000000000..9c3b9bc75f --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-price-unsafe.ts @@ -0,0 +1,54 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getPriceUnsafe = readApi<"id">({ + name: "getPriceUnsafe", + description: ` +Get the latest price and confidence interval for the requested price feed id. +The price feed id is a 32-byte id written as a hexadecimal string; see the +[price feed ids](https://pyth.network/developers/price-feed-ids) page to look up +the id for a given symbol. The returned price and confidence are decimal numbers +written in the form \`a * 10^e\`, where \`e\` is an exponent included in the +result. For example, a price of 1234 with an exponent of -2 represents the +number 12.34. The result also includes a \`publishTime\` which is the unix +timestamp for the price update. + +**This function may return a price from arbitrarily far in the past.** It is the +caller's responsibility to check the returned \`publishTime\` to ensure that the +update is recent enough for their use case. + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD } }, + ], + code: [ + solidity( + ({ id }) => ` +bytes32 priceId = ${id ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getPriceUnsafe(priceId); + `, + ), + ethersJS( + ({ id }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getPriceUnsafe(priceId); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-price.ts b/apps/api-reference/src/apis/evm/get-price.ts new file mode 100644 index 0000000000..a0e3dd9208 --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-price.ts @@ -0,0 +1,59 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { readApi, BTCUSD, ETHUSD, solidity, ethersJS } from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const getPrice = readApi<"id">({ + name: "getPrice", + description: ` +Get the latest price and confidence interval for the requested price feed id. +The price feed id is a 32-byte id written as a hexadecimal string; see the +[price feed ids](https://pyth.network/developers/price-feed-ids) page to look up +the id for a given symbol. The returned price and confidence are decimal numbers +written in the form \`a * 10^e\`, where \`e\` is an exponent included in the +result. For example, a price of 1234 with an exponent of -2 represents the +number 12.34. The result also includes a \`publishTime\` which is the unix +timestamp for the price update. + +This function reverts with a \`StalePrice\` error if the on-chain price has not +been updated within the last [getValidTimePeriod()](getValidTimePeriod) +seconds. The default valid time period is set to a reasonable default on each +chain and is typically around 1 minute. Call +[updatePriceFeeds](updatePriceFeeds) to pull a fresh price on-chain and solve +this problem. If you would like to configure the valid time period, see +[getPriceNoOlderThan](getPriceNoOlderThan). If you want the latest price +regardless of when it was updated, see [getPriceUnsafe](getPriceUnsafe). + +This function reverts with a \`PriceFeedNotFound\` error if the requested feed +id has never received a price update. This error could either mean that the +provided price feed id is incorrect, or (more typically) that this is the first +attempted use of that feed on-chain. In the second case, calling +[updatePriceFeeds](updatePriceFeeds) will solve this problem. + `, + parameters: [ + { + name: "id", + type: ParameterType.Hex, + description: "The ID of the price feed you want to read", + }, + ], + examples: [ + { name: "BTC/USD", icon: Btc, parameters: { id: BTCUSD } }, + { name: "ETH/USD", icon: Eth, parameters: { id: ETHUSD } }, + ], + code: [ + solidity( + ({ id }) => ` +bytes32 priceId = ${id ?? "/* */"}; +PythStructs.Price memory currentBasePrice = pyth.getPrice(priceId); + `, + ), + ethersJS( + ({ id }) => ` +const priceId = ${id ? `'${id}'` : "/* */"}; +const [price, conf, expo, timestamp] = await contract.getPrice(priceId); + `, + ), + ], +}); diff --git a/apps/api-reference/src/apis/evm/get-update-fee.tsx b/apps/api-reference/src/apis/evm/get-update-fee.tsx new file mode 100644 index 0000000000..01e5a0c2fd --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-update-fee.tsx @@ -0,0 +1,67 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { + readApi, + BTCUSD, + ETHUSD, + getLatestPriceFeed, + solidity, + ethersJS, +} from "./common"; +import { ParameterType } from "../../components/EvmApi"; +import { InlineLink } from "../../components/InlineLink"; + +export const getUpdateFee = readApi<"updateData">({ + name: "getUpdateFee", + description: ` +Get the fee required to update the on-chain price feeds with the provided +\`updateData\`. The returned number of wei should be sent as the transaction +value when calling [updatePriceFeeds](update-price-feeds). The \`updateData\` +can be retrieved from the [Hermes API](https://hermes.pyth.network/docs). + `, + parameters: [ + { + name: "updateData", + type: ParameterType.HexArray, + description: ( + <> + The price updates that you would like to submit to{" "} + updatePriceFeeds + + ), + }, + ], + examples: [ + { + name: "Latest BTC/USD update data", + icon: Btc, + parameters: () => getParams(BTCUSD), + }, + { + name: "Latest ETH/USD update data", + icon: Eth, + parameters: () => getParams(ETHUSD), + }, + ], + code: [ + solidity( + ({ updateData }) => ` +bytes[] memory updateData = new bytes[](1); +updateData[0] = ${updateData ? `hex"${updateData}` : "/* */"}; +uint feeAmount = pyth.getUpdateFee(updateData); + `, + ), + ethersJS( + ({ updateData }) => ` +const updateData = ${updateData ? `['${updateData}']` : "/* */"}; +const [feeAmount] = await contract.getUpdateFee(updateData); + `, + ), + ], +}); + +const getParams = async (feedId: string) => { + const feed = await getLatestPriceFeed(feedId); + return { updateData: feed.vaa }; +}; diff --git a/apps/api-reference/src/apis/evm/get-valid-time-period.ts b/apps/api-reference/src/apis/evm/get-valid-time-period.ts new file mode 100644 index 0000000000..f4bdd588e9 --- /dev/null +++ b/apps/api-reference/src/apis/evm/get-valid-time-period.ts @@ -0,0 +1,18 @@ +import { readApi, solidity, ethersJS } from "./common"; + +export const getValidTimePeriod = readApi({ + name: "getValidTimePeriod", + description: ` +Get the default valid time period in seconds. This quantity is the maximum age +of price updates returned by functions like [getPrice](getPrice) and +[getEmaPrice](getEmaPrice); these functions revert if the current on-chain price +is older than this period. The valid time period is configured to be a sane +default for each blockchain. + `, + parameters: [], + examples: [], + code: [ + solidity("uint validTimePeriod = pyth.getValidTimePeriod();"), + ethersJS("const [validTimePeriod] = await contract.getValidTimePeriod();"), + ], +}); diff --git a/apps/api-reference/src/apis/evm/index.ts b/apps/api-reference/src/apis/evm/index.ts new file mode 100644 index 0000000000..973c8f0895 --- /dev/null +++ b/apps/api-reference/src/apis/evm/index.ts @@ -0,0 +1,12 @@ +export { getEmaPrice } from "./get-ema-price"; +export { getEmaPriceNoOlderThan } from "./get-ema-price-no-older-than"; +export { getEmaPriceUnsafe } from "./get-ema-price-unsafe"; +export { getPrice } from "./get-price"; +export { getPriceNoOlderThan } from "./get-price-no-older-than"; +export { getPriceUnsafe } from "./get-price-unsafe"; +export { getUpdateFee } from "./get-update-fee"; +export { getValidTimePeriod } from "./get-valid-time-period"; +export { parsePriceFeedUpdates } from "./parse-price-feed-updates"; +export { parsePriceFeedUpdatesUnique } from "./parse-price-feed-updates-unique"; +export { updatePriceFeeds } from "./update-price-feeds"; +export { updatePriceFeedsIfNecessary } from "./update-price-feeds-if-necessary"; diff --git a/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx b/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx new file mode 100644 index 0000000000..f0b86445c5 --- /dev/null +++ b/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx @@ -0,0 +1,129 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { + BTCUSD, + ETHUSD, + getLatestPriceFeed, + solidity, + ethersJS, + writeApi, +} from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const parsePriceFeedUpdatesUnique = writeApi< + "updateData" | "priceId" | "minPublishTime" | "maxPublishTime" | "fee" +>({ + name: "parsePriceFeedUpdatesUnique", + description: ` +Parse \`updateData\` and return the price feeds for the given \`priceIds\` +within, if they are all **the first updates** published between +\`minPublishTime\` and \`maxPublishTime\`. That is to say, if \`prevPublishTime +< minPublishTime <= publishTime <= maxPublishTime\` where \`prevPublishTime\` is +the publish time of the previous update for the given price feed. These updates +are unique per \`priceId\` and \`minPublishTime\`. This will guarantee no +updates exist for the given \`priceIds\` earlier than the returned updates and +still in the given time range. If you do not need the uniqueness guarantee, +consider using [parsePriceFeedUpdates](parse-price-feed-updates) instead. Use +this function if you want to use a Pyth price for a fixed time and not the most +recent price; otherwise, consider using [updatePriceFeeds](update-price-feeds) +followed by [getPrice](get-price) or one of its variants. Unlike +\`updatePriceFeeds\`, calling this function will not update the on-chain price. + +This method requires the caller to pay a fee in wei; the required fee can be +computed by calling [getUpdateFee](get-update-fee) with \`updateData\`. + +Reverts if the transferred fee is not sufficient, or \`updateData\` is invalid, +or \`updateData\` does not contain an update for any of the given \`priceIds\` +within the given time range. + `, + parameters: [ + { + name: "updateData", + type: ParameterType.HexArray, + description: "The price update data to parse.", + }, + { + name: "priceId", + type: ParameterType.HexArray, + description: "The price ids whose feeds will be returned.", + }, + { + name: "minPublishTime", + type: ParameterType.Int, + description: "The minimum timestamp for each returned feed.", + }, + { + name: "maxPublishTime", + type: ParameterType.Int, + description: "The maximum timestamp for each returned feed.", + }, + { + name: "fee", + type: ParameterType.Int, + description: + "The update fee in wei. This fee is sent as the value of the transaction.", + }, + ], + valueParam: "fee", + examples: [ + { + name: "Latest BTC/USD update data", + icon: Btc, + parameters: (ctx) => getParams(BTCUSD, ctx), + }, + { + name: "Latest ETH/USD update data", + icon: Eth, + parameters: (ctx) => getParams(ETHUSD, ctx), + }, + ], + code: [ + solidity( + ({ updateData, priceId, minPublishTime, maxPublishTime, fee }) => ` +bytes[] memory updateData = new bytes[](1); +updateData[0] = ${updateData ? `hex"${updateData}` : "/* */"}; + +bytes32[] memory priceIds = new bytes32[](1); +priceIds[0] = ${priceId ?? "/* */"}; + +uint64 minPublishTime = ${minPublishTime ?? "/* */"}; +uint64 maxPublishTime = ${maxPublishTime ?? "/* */"}; + +uint fee = ${fee ?? "/* */"}; +pyth.parsePriceFeedUpdatesUnique{value: fee}(updateData, priceIds, minPublishTime, maxPublishTime); + `, + ), + ethersJS( + ({ updateData, priceId, minPublishTime, maxPublishTime, fee }) => ` +const updateData = ${updateData ? `['${updateData}']` : "/* */"}; +const priceIds = ${priceId ? `['${priceId}']` : "/* */"}; +const minPublishTime = ethers.toBigInt(${minPublishTime ?? "/* */"}); +const maxPublishTime = ethers.toBigInt(${maxPublishTime ?? "/* */"}); +const fee = ethers.toBigInt(${fee ?? "/* */"}); +const tx = await contract.parsePriceFeedUpdatesUnique(updateData, priceIds, minPublishTime, maxPublishTime, {value: fee}); +const receipt = await tx.wait(); + `, + ), + ], +}); + +const getParams = async ( + priceId: string, + ctx: { + readContract: (name: string, args: unknown[]) => Promise; + }, +) => { + const feed = await getLatestPriceFeed(priceId); + const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + if (typeof fee !== "bigint") { + throw new TypeError("Invalid fee"); + } + return { + updateData: feed.vaa, + priceId, + minPublishTime: (feed.price.publish_time - 5).toString(), + maxPublishTime: (feed.price.publish_time + 5).toString(), + fee: fee.toString(), + }; +}; diff --git a/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx b/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx new file mode 100644 index 0000000000..eb54af8562 --- /dev/null +++ b/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx @@ -0,0 +1,127 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { + BTCUSD, + ETHUSD, + getLatestPriceFeed, + solidity, + ethersJS, + writeApi, +} from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const parsePriceFeedUpdates = writeApi< + "updateData" | "priceId" | "minPublishTime" | "maxPublishTime" | "fee" +>({ + name: "parsePriceFeedUpdates", + description: ` +Parse \`updateData\` and return the price feeds for the given \`priceIds\` +within, if they are all published between \`minPublishTime\` and +\`maxPublishTime\` (\`minPublishTime <= publishTime <= maxPublishTime\`). Use +this function if you want to use a Pyth price for a fixed time and not the most +recent price; otherwise, consider using [updatePriceFeeds](update-price-feeds) +followed by [getPrice](get-price) or one of its variants. Unlike +\`updatePriceFeeds\`, calling this function will not update the on-chain price. + +If you need to make sure the price update is the earliest update after the +\`minPublishTime\` consider using +[parsePriceFeedUpdatesUnique](parse-price-feed-updates-unique). + +This method requires the caller to pay a fee in wei; the required fee can be +computed by calling [getUpdateFee](get-update-fee) with \`updateData\`. + +Reverts if the transferred fee is not sufficient, or \`updateData\` is invalid, +or \`updateData\` does not contain an update for any of the given \`priceIds\` +within the given time range. + `, + parameters: [ + { + name: "updateData", + type: ParameterType.HexArray, + description: "The price update data to parse.", + }, + { + name: "priceId", + type: ParameterType.HexArray, + description: "The price ids whose feeds will be returned.", + }, + { + name: "minPublishTime", + type: ParameterType.Int, + description: "The minimum timestamp for each returned feed.", + }, + { + name: "maxPublishTime", + type: ParameterType.Int, + description: "The maximum timestamp for each returned feed.", + }, + { + name: "fee", + type: ParameterType.Int, + description: + "The update fee in wei. This fee is sent as the value of the transaction.", + }, + ], + valueParam: "fee", + examples: [ + { + name: "Latest BTC/USD update data", + icon: Btc, + parameters: (ctx) => getParams(BTCUSD, ctx), + }, + { + name: "Latest ETH/USD update data", + icon: Eth, + parameters: (ctx) => getParams(ETHUSD, ctx), + }, + ], + code: [ + solidity( + ({ updateData, priceId, minPublishTime, maxPublishTime, fee }) => ` +bytes[] memory updateData = new bytes[](1); +updateData[0] = ${updateData ? `hex"${updateData}` : "/* */"}; + +bytes32[] memory priceIds = new bytes32[](1); +priceIds[0] = ${priceId ?? "/* */"}; + +uint64 minPublishTime = ${minPublishTime ?? "/* */"}; +uint64 maxPublishTime = ${maxPublishTime ?? "/* */"}; + +uint fee = ${fee ?? "/* */"}; +pyth.parsePriceFeedUpdates{value: fee}(updateData, priceIds, minPublishTime, maxPublishTime); + `, + ), + ethersJS( + ({ updateData, priceId, minPublishTime, maxPublishTime, fee }) => ` +const updateData = ${updateData ? `['${updateData}']` : "/* */"}; +const priceIds = ${priceId ? `['${priceId}']` : "/* */"}; +const minPublishTime = ethers.toBigInt(${minPublishTime ?? "/* */"}); +const maxPublishTime = ethers.toBigInt(${maxPublishTime ?? "/* */"}); +const fee = ethers.toBigInt(${fee ?? "/* */"}); +const tx = await contract.parsePriceFeedUpdates(updateData, priceIds, minPublishTime, maxPublishTime, {value: fee}); +const receipt = await tx.wait(); + `, + ), + ], +}); + +const getParams = async ( + priceId: string, + ctx: { + readContract: (name: string, args: unknown[]) => Promise; + }, +) => { + const feed = await getLatestPriceFeed(priceId); + const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + if (typeof fee !== "bigint") { + throw new TypeError("Invalid fee"); + } + return { + updateData: feed.vaa, + priceId, + minPublishTime: (feed.price.publish_time - 5).toString(), + maxPublishTime: (feed.price.publish_time + 5).toString(), + fee: fee.toString(), + }; +}; diff --git a/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx b/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx new file mode 100644 index 0000000000..1750f49aa6 --- /dev/null +++ b/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx @@ -0,0 +1,121 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { + BTCUSD, + ETHUSD, + getLatestPriceFeed, + solidity, + ethersJS, + writeApi, +} from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const updatePriceFeedsIfNecessary = writeApi< + "updateData" | "priceId" | "publishTime" | "fee" +>({ + name: "updatePriceFeedsIfNecessary", + description: ` +Update the on-chain price feeds using the provided \`updateData\` if the +on-chain data is not sufficiently fresh. The caller provides two matched +arrays, \`priceIds\` and \`publishTimes\`. This function applies the update if +there exists an index \`i\` such that \`priceIds[i]\`'s last \`publishTime\` is +before than \`publishTimes[i]\`. Callers should typically pass +\`publishTimes[i]\` to be equal to the publishTime of the corresponding price id +in \`updateData\`. If this condition is not satisfied, the call will revert +with a \`NoFreshUpdate\` error. + +This method is a variant of [updatePriceFeeds](update-price-feeds) that reduces +gas usage when multiple callers are sending the same price updates. + +This function requires the caller to pay a fee to perform the update. The +required fee for a given set of updates can be computed by passing them to +[getUpdateFee](get-update-fee). + +Reverts if the required fee is not paid, or the \`updateData\` is incorrectly +signed or formatted. + `, + parameters: [ + { + name: "updateData", + type: ParameterType.HexArray, + description: "The price update data for the contract to verify.", + }, + { + name: "priceId", + type: ParameterType.HexArray, + description: "The price ids to update.", + }, + { + name: "publishTime", + type: ParameterType.IntArray, + description: + "The timestamp for each price id that determines whether to apply the update.", + }, + { + name: "fee", + type: ParameterType.Int, + description: + "The update fee in wei. This fee is sent as the value of the transaction.", + }, + ], + valueParam: "fee", + examples: [ + { + name: "Latest BTC/USD update data", + icon: Btc, + parameters: (ctx) => getParams(BTCUSD, ctx), + }, + { + name: "Latest ETH/USD update data", + icon: Eth, + parameters: (ctx) => getParams(ETHUSD, ctx), + }, + ], + code: [ + solidity( + ({ updateData, priceId, publishTime, fee }) => ` +bytes[] memory updateData = new bytes[](1); +updateData[0] = ${updateData ? `hex"${updateData}` : "/* */"}; + +bytes32[] memory priceIds = new bytes32[](1); +priceIds[0] = ${priceId ?? "/* */"}; + +uint64[] memory publishTimes = new uint64[](1); +publishTimes[0] = ${publishTime ?? "/* */"}; + +uint fee = ${fee ?? "/* */"}; +pyth.updatePriceFeedsIfNecessary{value: fee}(updateData, priceIds, publishTimes); + `, + ), + ethersJS( + ({ updateData, priceId, publishTime, fee }) => ` +const updateData = ${updateData ? `['${updateData}']` : "/* */"}; +const priceIds = ${priceId ? `['${priceId}']` : "/* */"}; +const publishTimes = ${publishTime ? `[ethers.toBigInt(${publishTime})]` : "/* */"}; +const fee = ethers.toBigInt(${fee ?? "/* */"}); +const tx = await contract.updatePriceFeedsIfNecessary(updateData, priceIds, publishTimes, {value: fee}); +const receipt = await tx.wait(); + `, + ), + ], +}); + +const getParams = async ( + priceId: string, + ctx: { + readContract: (name: string, args: unknown[]) => Promise; + }, +) => { + const feed = await getLatestPriceFeed(priceId); + const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + if (typeof fee !== "bigint") { + throw new TypeError("Invalid fee"); + } + return { + updateData: feed.vaa, + priceId, + publishTime: feed.price.publish_time.toString(), + fee: fee.toString(), + }; +}; diff --git a/apps/api-reference/src/apis/evm/update-price-feeds.tsx b/apps/api-reference/src/apis/evm/update-price-feeds.tsx new file mode 100644 index 0000000000..1a1e4e3382 --- /dev/null +++ b/apps/api-reference/src/apis/evm/update-price-feeds.tsx @@ -0,0 +1,93 @@ +import Btc from "cryptocurrency-icons/svg/color/btc.svg"; +import Eth from "cryptocurrency-icons/svg/color/eth.svg"; + +import { + BTCUSD, + ETHUSD, + getLatestPriceFeed, + solidity, + ethersJS, + writeApi, +} from "./common"; +import { ParameterType } from "../../components/EvmApi"; + +export const updatePriceFeeds = writeApi<"updateData" | "fee">({ + name: "updatePriceFeeds", + description: ` +Update the on-chain price feeds using the provided \`updateData\`, which +contains serialized and signed price update data from Pyth Network. You can +retrieve the latest price \`updateData\` for a given set of price feeds from the +[Hermes API](https://hermes.pyth.network/docs). This function updates the +on-chain price if the provided update is more recent than the current on-chain +price. Otherwise, the provided update will be ignored. The function call will +succeed even if the update is ignored. + +This function requires the caller to pay a fee to perform the update. The +required fee for a given set of updates can be computed by passing them to +[getUpdateFee](get-update-fee). + +Reverts if the required fee is not paid, or the \`updateData\` is incorrectly +signed or formatted. + `, + parameters: [ + { + name: "updateData", + type: ParameterType.HexArray, + description: "The price update data for the contract to verify.", + }, + { + name: "fee", + type: ParameterType.Int, + description: + "The update fee in wei. This fee is sent as the value of the transaction.", + }, + ], + valueParam: "fee", + examples: [ + { + name: "Latest BTC/USD update data", + icon: Btc, + parameters: (ctx) => getParams(BTCUSD, ctx), + }, + { + name: "Latest ETH/USD update data", + icon: Eth, + parameters: (ctx) => getParams(ETHUSD, ctx), + }, + ], + code: [ + solidity( + ({ updateData, fee }) => ` +bytes[] memory updateData = new bytes[](1); +updateData[0] = ${updateData ? `hex"${updateData}` : "/* */"}; +uint fee = ${fee ?? "/* */"}; +pyth.updatePriceFeeds{value: fee}(updateData); + `, + ), + ethersJS( + ({ updateData, fee }) => ` +const updateData = ${updateData ? `['${updateData}']` : "/* */"}; +const fee = ethers.toBigInt(${fee ?? "/* */"}); +const tx = await contract.updatePriceFeeds(updateData, {value: fee}); +const receipt = await tx.wait(); + `, + ), + ], +}); + +const getParams = async ( + feedId: string, + ctx: { + readContract: (name: string, args: unknown[]) => Promise; + }, +) => { + const feed = await getLatestPriceFeed(feedId); + const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + if (typeof fee !== "bigint") { + throw new TypeError("Invalid fee"); + } + return { + updateData: feed.vaa, + fee: fee.toString(), + }; +}; diff --git a/apps/api-reference/src/apis/index.tsx b/apps/api-reference/src/apis/index.tsx index 8c6f0feb79..5bd1dde8df 100644 --- a/apps/api-reference/src/apis/index.tsx +++ b/apps/api-reference/src/apis/index.tsx @@ -1,3 +1 @@ -import { evm } from "./evm"; - -export const apis = { evm }; +export * as evm from "./evm"; diff --git a/apps/api-reference/src/app/layout.tsx b/apps/api-reference/src/app/layout.tsx index 1c22c2f549..431d489421 100644 --- a/apps/api-reference/src/app/layout.tsx +++ b/apps/api-reference/src/app/layout.tsx @@ -1,56 +1,4 @@ -import type { Metadata, Viewport } from "next"; - import "../tailwind.css"; export { Root as default } from "../components/Root"; - -export const metadata: Metadata = { - metadataBase: new URL("https://api-reference.pyth.network"), - title: { - default: "Pyth Network API Reference", - template: "%s | Pyth Network API Reference", - }, - applicationName: "Pyth Network API Reference", - description: - "API reference, interactive explorer, and documentation for Pyth network products.", - referrer: "strict-origin-when-cross-origin", - openGraph: { - type: "website", - }, - twitter: { - creator: "@PythNetwork", - card: "summary_large_image", - }, - icons: { - icon: [ - { - media: "(prefers-color-scheme: light)", - type: "image/x-icon", - url: "/favicon.ico", - }, - { - media: "(prefers-color-scheme: dark)", - type: "image/x-icon", - url: "/favicon-light.ico", - }, - { - type: "image/png", - sizes: "32x32", - url: "/favicon-32x32.png", - }, - { - type: "image/png", - sizes: "16x16", - url: "/favicon-16x16.png", - }, - ], - apple: { - url: "/apple-touch-icon.png", - sizes: "180x180", - }, - }, -}; - -export const viewport: Viewport = { - themeColor: "#242235", -}; +export { metadata, viewport } from "../metadata"; diff --git a/apps/api-reference/src/app/price-feeds/[chain]/[method]/layout.tsx b/apps/api-reference/src/app/price-feeds/[chain]/[method]/layout.tsx index e0acb3d562..58e3173705 100644 --- a/apps/api-reference/src/app/price-feeds/[chain]/[method]/layout.tsx +++ b/apps/api-reference/src/app/price-feeds/[chain]/[method]/layout.tsx @@ -1,10 +1,10 @@ "use client"; import { notFound } from "next/navigation"; -import type { ReactNode } from "react"; +import type { ReactNode, ComponentProps } from "react"; -import { apis } from "../../../../apis"; -import { EvmCall } from "../../../../components/EvmCall"; +import * as apis from "../../../../apis"; +import { EvmApi } from "../../../../components/EvmApi"; type Props = { params: { @@ -14,22 +14,27 @@ type Props = { children: ReactNode; }; -const Page = ({ params, children }: Props) => { +const Layout = ({ params, children }: Props) => { const chain: (typeof apis)[keyof typeof apis] | undefined = isKeyOf( params.chain, apis, ) - ? apis[params.chain] + ? // eslint-disable-next-line import/namespace + apis[params.chain] : undefined; const api = chain && isKeyOf(params.method, chain) ? chain[params.method] : undefined; if (api) { - return {children}; + return ( + )}> + {children} + + ); } else { notFound(); } }; -export default Page; +export default Layout; const isKeyOf = >( value: unknown, diff --git a/apps/api-reference/src/app/price-feeds/[chain]/[method]/page.tsx b/apps/api-reference/src/app/price-feeds/[chain]/[method]/page.tsx index 00405745f3..76f39c7105 100644 --- a/apps/api-reference/src/app/price-feeds/[chain]/[method]/page.tsx +++ b/apps/api-reference/src/app/price-feeds/[chain]/[method]/page.tsx @@ -2,7 +2,7 @@ import { evaluate } from "@mdx-js/mdx"; import { notFound } from "next/navigation"; import * as runtime from "react/jsx-runtime"; -import { apis } from "../../../../apis"; +import * as apis from "../../../../apis"; import { useMDXComponents } from "../../../../mdx-components"; type Props = { @@ -14,6 +14,7 @@ type Props = { const Page = async ({ params }: Props) => { const mdxComponents = useMDXComponents({}); + // eslint-disable-next-line import/namespace const chain = isKeyOf(params.chain, apis) ? apis[params.chain] : undefined; const api = chain && isKeyOf(params.method, chain) ? chain[params.method] : undefined; diff --git a/apps/api-reference/src/app/price-feeds/[chain]/layout.tsx b/apps/api-reference/src/app/price-feeds/[chain]/layout.tsx new file mode 100644 index 0000000000..4505badc0c --- /dev/null +++ b/apps/api-reference/src/app/price-feeds/[chain]/layout.tsx @@ -0,0 +1,22 @@ +import type { ReactNode } from "react"; + +import { EvmLayout } from "../../../components/EvmLayout"; + +type Props = { + params: { + chain: string; + }; + children: ReactNode; +}; + +const Layout = ({ params, children }: Props) => { + switch (params.chain) { + case "evm": { + return {children}; + } + default: { + return children; + } + } +}; +export default Layout; diff --git a/apps/api-reference/src/components/Code/index.tsx b/apps/api-reference/src/components/Code/index.tsx index 8a9409a688..479eb1a7a8 100644 --- a/apps/api-reference/src/components/Code/index.tsx +++ b/apps/api-reference/src/components/Code/index.tsx @@ -3,6 +3,7 @@ import { ClipboardDocumentIcon, CheckIcon } from "@heroicons/react/24/outline"; import clsx from "clsx"; import { useMemo, useCallback, type HTMLAttributes } from "react"; import { useRef, useEffect, useState } from "react"; +import type { OffsetOrPosition } from "shiki"; import type { Highlighter, SupportedLanguage } from "./shiki"; import style from "./style.module.css"; @@ -14,9 +15,10 @@ export type { SupportedLanguage } from "./shiki"; type CodeProps = { language: SupportedLanguage; children: string; + dimRange?: readonly [OffsetOrPosition, OffsetOrPosition] | undefined; }; -export const Code = ({ language, children }: CodeProps) => { +export const Code = ({ language, children, dimRange }: CodeProps) => { const chompedCode = useMemo(() => chomp(children), [children]); return ( @@ -24,7 +26,11 @@ export const Code = ({ language, children }: CodeProps) => { {chompedCode} - + {chompedCode} @@ -108,14 +114,16 @@ const CopyButton = ({ children, className, ...props }: CopyButtonProps) => { type HighlightedCodeProps = Omit, "children"> & { language: SupportedLanguage; children: string; + dimRange?: readonly [OffsetOrPosition, OffsetOrPosition] | undefined; }; const HighlightedCode = ({ language, children, + dimRange, ...props }: HighlightedCodeProps) => { - const highlightedCode = useHighlightedCode(language, children); + const highlightedCode = useHighlightedCode(language, children, dimRange); return highlightedCode ? (
@@ -134,15 +142,36 @@ const HighlightedCode = ({ ); }; -const useHighlightedCode = (language: SupportedLanguage, code: string) => { +const useHighlightedCode = ( + language: SupportedLanguage, + code: string, + dimRange?: readonly [OffsetOrPosition, OffsetOrPosition] | undefined, +) => { const [highlightedCode, setHighlightedCode] = useState( undefined, ); const highlighter = useRef(undefined); + const decorations = useMemo( + () => + dimRange + ? [ + { + start: dimRange[0], + end: dimRange[1], + properties: { + class: "opacity-40 group-hover:opacity-100 transition", + }, + }, + ] + : undefined, + [dimRange], + ); useEffect(() => { if (highlighter.current) { - setHighlightedCode(highlighter.current.highlight(language, code)); + setHighlightedCode( + highlighter.current.highlight(language, code, { decorations }), + ); return; } else { const { cancel, load } = createShikiLoader(); @@ -150,7 +179,9 @@ const useHighlightedCode = (language: SupportedLanguage, code: string) => { .then((newHighlighter) => { if (newHighlighter) { highlighter.current = newHighlighter; - setHighlightedCode(newHighlighter.highlight(language, code)); + setHighlightedCode( + newHighlighter.highlight(language, code, { decorations }), + ); } }) .catch((error: unknown) => { @@ -159,7 +190,7 @@ const useHighlightedCode = (language: SupportedLanguage, code: string) => { }); return cancel; } - }, [code, language]); + }, [code, language, decorations]); return highlightedCode; }; diff --git a/apps/api-reference/src/components/Code/shiki.ts b/apps/api-reference/src/components/Code/shiki.ts index f477490a53..b4b87e13cc 100644 --- a/apps/api-reference/src/components/Code/shiki.ts +++ b/apps/api-reference/src/components/Code/shiki.ts @@ -1,5 +1,6 @@ import { type HighlighterCore, + type DecorationItem, getHighlighterCore as shikiGetHighlighterCore, } from "shiki/core"; import javascript from "shiki/langs/javascript.mjs"; @@ -9,11 +10,19 @@ import lightPlus from "shiki/themes/light-plus.mjs"; import loadWasm from "shiki/wasm"; export type Highlighter = { - highlight: (lang: SupportedLanguage, code: string) => string; + highlight: ( + lang: SupportedLanguage, + code: string, + options?: HighlightOptions | undefined, + ) => string; }; export type SupportedLanguage = "javascript" | "solidity"; +export type HighlightOptions = { + decorations?: DecorationItem[] | undefined; +}; + export const getHighlighter = async (): Promise => { const highlighterCore = await shikiGetHighlighterCore({ langs: [javascript, solidity], @@ -22,8 +31,11 @@ export const getHighlighter = async (): Promise => { }); return { - highlight: (lang: SupportedLanguage, code: string) => - highlight(highlighterCore, lang, code), + highlight: ( + lang: SupportedLanguage, + code: string, + options?: HighlightOptions | undefined, + ) => highlight(highlighterCore, lang, code, options), }; }; @@ -31,6 +43,7 @@ const highlight = ( highlighter: HighlighterCore, lang: SupportedLanguage, code: string, + options?: HighlightOptions | undefined, ) => highlighter.codeToHtml(code, { lang, @@ -38,4 +51,5 @@ const highlight = ( light: "light-plus", dark: "dark-plus", }, + ...(options?.decorations && { decorations: options.decorations }), }); diff --git a/apps/api-reference/src/components/ColorThemeSelector/index.tsx b/apps/api-reference/src/components/ColorThemeSelector/index.tsx index 1b3e1c5118..c1df1d5921 100644 --- a/apps/api-reference/src/components/ColorThemeSelector/index.tsx +++ b/apps/api-reference/src/components/ColorThemeSelector/index.tsx @@ -8,8 +8,9 @@ import { } from "@heroicons/react/24/outline"; import clsx from "clsx"; import { useTheme } from "next-themes"; -import { createElement, useState, useEffect } from "react"; +import { createElement } from "react"; +import { useIsMounted } from "../../use-is-mounted"; import { Select } from "../Select"; const VALID_THEMES = ["system", "light", "dark"] as const; @@ -30,7 +31,7 @@ const buttonClasses = "grid place-content-center w-12 h-10 px-3 rounded text-neutral-500"; export const ColorThemeSelector = () => { - const [mounted, setMounted] = useState(false); + const isMounted = useIsMounted(); const { theme: themeFromNextThemes, setTheme, @@ -43,11 +44,7 @@ export const ColorThemeSelector = () => { ? resolvedThemeFromNextThemes : "system"; - useEffect(() => { - setMounted(true); - }, []); - - return mounted ? ( + return isMounted ? ( { + switchChain({ chainId: id }); + }} + renderButtonContents={({ id, name }) => ( +
+ {isMounted && ( + <> + + {name} + + )} +
+ )} + renderOption={({ id, name }) => ( +
+ + {name} +
+ )} + options={chains} + buttonClassName="grow" + /> + + + + + + {code.map(({ language }) => ( + + {LANGUAGE_TO_DISPLAY_NAME[language]} + + ))} + + + {code.map(({ code: codeContents, language, dimRange }) => ( + + + {codeContents( + isMounted + ? { + name: currentChain.name, + rpcUrl: currentChain.rpcUrls.default.http[0] ?? "", + contractAddress: getContractAddress(chainId) ?? "", + } + : { name: "", rpcUrl: "", contractAddress: "" }, + paramValues, + )} + + + ))} + + +
+ ); +}; + +const LANGUAGE_TO_DISPLAY_NAME = { + [Language.Solidity]: "Solidity", + [Language.EthersJSV6]: "ethers.js v6", +}; + +const LANUGAGE_TO_SHIKI_NAME: Record = { + [Language.Solidity]: "solidity", + [Language.EthersJSV6]: "javascript", +}; + +type ExampleProps = { + example: Example; + setParamValues: Dispatch< + SetStateAction>> + >; +}; + +const Example = ({ + example, + setParamValues, +}: ExampleProps) => { + const config = useConfig(); + + const updateValues = useCallback(() => { + if (typeof example.parameters === "function") { + const address = getContractAddress(config.state.chainId); + if (!address) { + throw new Error( + `No contract for chain id: ${config.state.chainId.toString()}`, + ); + } + const params = example.parameters({ + readContract: (functionName, args) => + readContract(config, { abi, address, functionName, args }), + }); + if (params instanceof Promise) { + params + .then((paramsResolved) => { + setParamValues(paramsResolved); + }) + .catch(() => { + /* TODO add some UI when this errors */ + }); + } else { + setParamValues(params); + } + } else { + setParamValues(example.parameters); + } + }, [example, setParamValues, config]); + const Icon = example.icon; + + return ( + + {Icon && } + {example.name} + + ); +}; diff --git a/apps/api-reference/src/components/EvmApi/networks.ts b/apps/api-reference/src/components/EvmApi/networks.ts new file mode 100644 index 0000000000..c147aeff18 --- /dev/null +++ b/apps/api-reference/src/components/EvmApi/networks.ts @@ -0,0 +1,18 @@ +import { arbitrum, avalanche, mainnet, sepolia } from "wagmi/chains"; + +export const getContractAddress = (networkId: number) => + isSupportedNetwork(networkId) + ? NETWORK_TO_CONTRACT_ADDRESS[networkId] + : undefined; + +const NETWORK_TO_CONTRACT_ADDRESS = { + [mainnet.id]: "0x4305FB66699C3B2702D4d05CF36551390A4c69C6", + [avalanche.id]: "0x4305FB66699C3B2702D4d05CF36551390A4c69C6", + [arbitrum.id]: "0xff1a0f4744e8582DF1aE09D5611b887B6a12925C", + [sepolia.id]: "0xDd24F84d36BF92C65F92307595335bdFab5Bbd21", +} as const; + +const isSupportedNetwork = ( + networkId: number, +): networkId is keyof typeof NETWORK_TO_CONTRACT_ADDRESS => + networkId in NETWORK_TO_CONTRACT_ADDRESS; diff --git a/apps/api-reference/src/components/EvmApi/parameter-input.tsx b/apps/api-reference/src/components/EvmApi/parameter-input.tsx new file mode 100644 index 0000000000..bde9d73479 --- /dev/null +++ b/apps/api-reference/src/components/EvmApi/parameter-input.tsx @@ -0,0 +1,82 @@ +import { + type ChangeEvent, + type Dispatch, + type SetStateAction, + useState, + useCallback, + useMemo, + useEffect, +} from "react"; + +import { + type Parameter, + PLACEHOLDERS, + isValid, + getValidationError, +} from "./parameter"; +import { Input } from "../Input"; + +type ParameterProps = { + spec: Parameter; + value: string | undefined; + setParamValues: Dispatch< + SetStateAction>> + >; +}; + +export const ParameterInput = ({ + spec, + value, + setParamValues, +}: ParameterProps) => { + const { validationError, internalValue, onChange } = useParameterInput( + spec, + value, + setParamValues, + ); + + return ( + + ); +}; + +const useParameterInput = ( + spec: Parameter, + value: string | undefined, + setParamValues: Dispatch< + SetStateAction>> + >, +) => { + const [internalValue, setInternalValue] = useState(value ?? ""); + const validationError = useMemo( + () => (internalValue ? getValidationError(spec, internalValue) : undefined), + [internalValue, spec], + ); + const onChange = useCallback( + (e: ChangeEvent) => { + const value = e.target.value; + setInternalValue(value); + setParamValues((paramValues) => ({ + ...paramValues, + [spec.name]: value === "" || !isValid(spec, value) ? undefined : value, + })); + }, + [setParamValues, spec], + ); + + useEffect(() => { + if (value) { + setInternalValue(value); + } + }, [value]); + + return { internalValue, validationError, onChange }; +}; diff --git a/apps/api-reference/src/components/EvmApi/parameter.ts b/apps/api-reference/src/components/EvmApi/parameter.ts new file mode 100644 index 0000000000..12f95657bf --- /dev/null +++ b/apps/api-reference/src/components/EvmApi/parameter.ts @@ -0,0 +1,70 @@ +import type { ReactNode } from "react"; + +export type Parameter = { + name: Name; + type: ParameterType; + description: ReactNode; +}; + +export enum ParameterType { + HexArray, + Hex, + Int, + IntArray, +} + +export const TRANSFORMS: { + [paramType in ParameterType]?: (value: string) => unknown; +} = { + [ParameterType.HexArray]: (value) => [value], + [ParameterType.IntArray]: (value) => [value], +}; + +export const PLACEHOLDERS: Record = { + [ParameterType.Hex]: + "0x1111111111111111111111111111111111111111111111111111111111111111", + [ParameterType.HexArray]: + "0x1111111111111111111111111111111111111111111111111111111111111111", + [ParameterType.Int]: "60", + [ParameterType.IntArray]: "60", +}; + +export const getValidationError = ( + parameter: Parameter, + value: string, +): string | undefined => { + const messages = VALIDATIONS[parameter.type] + .map((validation) => validation(value)) + .filter((message) => message !== undefined); + return messages.length === 0 ? undefined : messages.join(", "); +}; + +export const isValid = ( + parameter: Parameter, + value: string, +): boolean => + VALIDATIONS[parameter.type].every( + (validation) => validation(value) === undefined, + ); + +const validateHex = (value: string) => + HEX_REGEX.test(value) + ? undefined + : 'Please enter a hexadecimal string prefixed with 0x, for example "0xa19f"'; + +const validateInt = (value: string) => + Number.parseInt(value, 10).toString() === value + ? undefined + : "Please enter a valid integer"; + +const VALIDATIONS: Record< + ParameterType, + ((value: string) => string | undefined)[] +> = { + [ParameterType.Hex]: [validateHex], + [ParameterType.HexArray]: [validateHex], + [ParameterType.Int]: [validateInt], + [ParameterType.IntArray]: [validateInt], +}; + +const HEX_REGEX = new RegExp("^(0|0x[0-9A-Fa-f]*)$"); diff --git a/apps/api-reference/src/components/EvmApi/results-modal.tsx b/apps/api-reference/src/components/EvmApi/results-modal.tsx new file mode 100644 index 0000000000..0abac6148f --- /dev/null +++ b/apps/api-reference/src/components/EvmApi/results-modal.tsx @@ -0,0 +1,118 @@ +import { ContractFunctionExecutionError } from "viem"; + +import { Code } from "../Code"; +import { Modal } from "../Modal"; + +type Props = { + modalContents?: ModalContents | undefined; + isShowingResults: boolean; + resetStatus: () => void; + clearModalContents: () => void; + functionName: string; +}; + +export type ModalContents = { + networkName: string; +} & ( + | { error: unknown; parameters?: Partial> } + | { result: unknown; parameters: Partial> } +); + +export const ResultsModal = ({ + modalContents, + isShowingResults, + resetStatus, + clearModalContents, + functionName, +}: Props) => ( + + {modalContents !== undefined && ( + <> + {"parameters" in modalContents && + Object.keys(modalContents.parameters).length > 0 && ( +
+

+ Arguments +

+
    + {Object.entries(modalContents.parameters).map( + ([name, value]) => ( +
  • + + {name}: + + + {value as string} + +
  • + ), + )} +
+
+ )} + {"result" in modalContents ? ( + + {stringifyResponse(modalContents.result)} + + ) : ( +
+

+ {showError(modalContents.error)} +

+
+ )} + + )} +
+); + +const showError = (error: unknown): string => { + if (typeof error === "string") { + return error; + } else if (error instanceof ContractFunctionExecutionError) { + return error.cause.metaMessages?.[0] ?? error.message; + } else if (error instanceof Error) { + return error.toString(); + } else { + return "An unknown error occurred"; + } +}; + +const stringifyResponse = (response: unknown): string => { + switch (typeof response) { + case "string": { + return `"${response}"`; + } + case "number": + case "boolean": + case "function": { + return response.toString(); + } + case "bigint": { + return `${response.toString()}n`; + } + case "symbol": { + return `Symbol(${response.toString()})`; + } + case "undefined": { + return "undefined"; + } + case "object": { + return response === null + ? "null" + : `{\n${Object.entries(response) + .map(([key, value]) => ` ${key}: ${stringifyResponse(value)}`) + .join(",\n")}\n}`; + } + } +}; diff --git a/apps/api-reference/src/components/EvmApi/run-button.tsx b/apps/api-reference/src/components/EvmApi/run-button.tsx new file mode 100644 index 0000000000..5ddf6870d1 --- /dev/null +++ b/apps/api-reference/src/components/EvmApi/run-button.tsx @@ -0,0 +1,242 @@ +"use client"; + +import { ArrowPathIcon } from "@heroicons/react/24/outline"; +import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json"; +import PythErrorsAbi from "@pythnetwork/pyth-sdk-solidity/abis/PythErrors.json"; +import { ConnectKitButton, Avatar } from "connectkit"; +import { useCallback, useMemo, useState } from "react"; +import { useAccount, useConfig } from "wagmi"; +import { readContract, writeContract } from "wagmi/actions"; + +import { getContractAddress } from "./networks"; +import { type Parameter, TRANSFORMS } from "./parameter"; +import { type ModalContents, ResultsModal } from "./results-modal"; +import { useIsMounted } from "../../use-is-mounted"; +import { Button } from "../Button"; +import { InlineLink } from "../InlineLink"; + +const abi = [...PythAbi, ...PythErrorsAbi] as const; + +type RunButtonProps = ( + | Read + | Write +) & { + functionName: (typeof PythAbi)[number]["name"]; + parameters: Parameter[]; + paramValues: Partial>; +}; + +type Read = { + type: EvmApiType.Read; + valueParam?: undefined; +}; + +type Write = { + type: EvmApiType.Write; + valueParam: ParameterName; +}; + +export enum EvmApiType { + Read, + Write, +} + +export const RunButton = ( + props: RunButtonProps, +) => { + const { isConnected } = useAccount(); + const isMounted = useIsMounted(); + const { + status, + modalContents, + resetStatus, + clearModalContents, + run, + disabled, + } = useRunButton(props); + + return ( + <> + {props.type === EvmApiType.Write && ( + + {({ show, isConnected, address, truncatedAddress, ensName }) => ( + + {isConnected ? ( + <> + + Wallet: {ensName ?? truncatedAddress} + + ) : ( + "Connect Wallet to Run" + )} + + )} + + )} + {(props.type === EvmApiType.Read || (isMounted && isConnected)) && ( + + )} + + + ); +}; + +const useRunButton = ({ + functionName, + parameters, + paramValues, + ...props +}: RunButtonProps) => { + const config = useConfig(); + const [status, setStatus] = useState(Status.None); + const [modalContents, setModalContents] = useState< + ModalContents | undefined + >(undefined); + + const resetStatus = useCallback(() => { + setStatus(Status.None); + }, [setStatus]); + const clearModalContents = useCallback(() => { + setModalContents(undefined); + }, [setModalContents]); + + const args = useMemo(() => { + const allParams = + props.type === EvmApiType.Write + ? parameters.filter((parameter) => parameter.name !== props.valueParam) + : parameters; + const orderedParams = allParams.map(({ name, type }) => { + const transform = TRANSFORMS[type]; + const value = paramValues[name]; + return transform && value ? transform(value) : value; + }); + return orderedParams.every((value) => value !== undefined) + ? orderedParams + : undefined; + }, [parameters, paramValues, props]); + + const value = useMemo(() => { + if (props.type === EvmApiType.Write) { + const value = paramValues[props.valueParam]; + return value ? BigInt(value) : undefined; + } else { + return; + } + }, [paramValues, props]); + + const run = useCallback(() => { + setStatus(Status.Loading); + const networkName = + config.chains.find((chain) => chain.id === config.state.chainId)?.name ?? + ""; + if (args === undefined) { + setModalContents({ + error: new Error("Invalid parameters!"), + networkName, + }); + setStatus(Status.ShowingResults); + } else { + const address = getContractAddress(config.state.chainId); + if (!address) { + throw new Error( + `No contract for chain id: ${config.state.chainId.toString()}`, + ); + } + switch (props.type) { + case EvmApiType.Read: { + readContract(config, { abi, address, functionName, args }) + .then((result) => { + setModalContents({ + result, + parameters: paramValues, + networkName, + }); + }) + .catch((error: unknown) => { + setModalContents({ + error: error, + parameters: paramValues, + networkName, + }); + }) + .finally(() => { + setStatus(Status.ShowingResults); + }); + return; + } + case EvmApiType.Write: { + if (value === undefined) { + setModalContents({ + error: new Error("Missing value!"), + networkName, + }); + setStatus(Status.ShowingResults); + } else { + writeContract(config, { abi, address, functionName, args, value }) + .then((result) => { + setModalContents({ + result, + parameters: paramValues, + networkName, + }); + }) + .catch((error: unknown) => { + setModalContents({ + error: error, + parameters: paramValues, + networkName, + }); + }) + .finally(() => { + setStatus(Status.ShowingResults); + }); + } + return; + } + } + } + }, [config, functionName, setStatus, args, paramValues, value, props.type]); + + const { isConnected } = useAccount(); + + const disabled = + args === undefined || + status !== Status.None || + (props.type === EvmApiType.Write && (!isConnected || value === undefined)); + + return { + status, + modalContents, + resetStatus, + clearModalContents, + run, + disabled, + }; +}; + +enum Status { + None, + Loading, + ShowingResults, +} diff --git a/apps/api-reference/src/components/EvmCall/index.tsx b/apps/api-reference/src/components/EvmCall/index.tsx deleted file mode 100644 index 8e7b66c10f..0000000000 --- a/apps/api-reference/src/components/EvmCall/index.tsx +++ /dev/null @@ -1,190 +0,0 @@ -"use client"; - -import { - Tab, - TabGroup, - TabList, - TabPanel, - TabPanels, - Field, - Label, -} from "@headlessui/react"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json"; -import { mainnet } from "@wagmi/core/chains"; -import { type ReactNode, useState } from "react"; - -import { - type Network, - NETWORKS, - NETWORK_TO_CONTRACT_ADDRESS, -} from "./networks"; -import { type Parameter, ParameterInput } from "./parameter-input"; -import { RunButton } from "./run-button"; -import { type SupportedLanguage, Code } from "../Code"; -import { InlineLink } from "../InlineLink"; -import { Select } from "../Select"; - -export { ParameterType } from "./parameter-input"; - -type Props< - ParameterName extends string, - Parameters extends Record, -> = { - name: (typeof PythAbi)[number]["name"]; - children: ReactNode; - parameters: Parameter[]; - examples: Example[]; - code: CodeSample[]; -}; - -type Example< - ParameterName extends string, - Parameters extends Record, -> = { - name: string; - parameters: Parameters; -}; - -export enum Language { - Solidity, - EthersJSV6, -} - -type CodeSample< - ParameterName extends string, - Parameters extends Record, -> = { - language: Language; - code: ( - network: { - name: string; - rpcUrl: string; - contractAddress: string; - }, - params: Partial, - ) => string; -}; - -export const EvmCall = < - ParameterName extends string, - Parameters extends Record, ->({ - name, - children, - parameters, - code, - examples, -}: Props) => { - const [paramValues, setParamValues] = useState>({}); - const [network, setNetwork] = useState(mainnet); - - return ( -
-

{name}

-
-

- Description -

- {children} -
-
-

- Arguments -

-
- {parameters.length > 0 ? ( -
    - {parameters.map((parameter) => ( -
  • - -
  • - ))} -
- ) : ( -
- This API takes no arguments -
- )} -
-
- {examples.length > 0 && ( -
-

Examples

-
    - {examples.map(({ name, parameters: exampleParameters }) => ( -
  • - { - setParamValues(exampleParameters); - }} - > - {name} - -
  • - ))} -
-
- )} - - - - ); -}; - -const useParameterInput = < - ParameterName extends string, - Parameters extends Record, ->( - spec: Parameter, - value: string | undefined, - setParamValues: Dispatch>>, -) => { - const [internalValue, setInternalValue] = useState(value ?? ""); - const validationError = useMemo( - () => - internalValue ? getValidationError(internalValue, spec.type) : undefined, - [internalValue, spec.type], - ); - const onChange = useCallback( - (e: ChangeEvent) => { - const value = e.target.value; - setInternalValue(value); - setParamValues((paramValues) => ({ - ...paramValues, - [spec.name]: - value === "" || !isValid(value, spec.type) ? undefined : value, - })); - }, - [setParamValues, spec.name, spec.type], - ); - - useEffect(() => { - if (value) { - setInternalValue(value); - } - }, [value]); - - return { internalValue, validationError, onChange }; -}; - -const PLACEHOLDERS: Record = { - [ParameterType.Hex]: - "0x1111111111111111111111111111111111111111111111111111111111111111", - [ParameterType.Int]: "60", -}; - -const VALIDATION_ERRORS: Record = { - [ParameterType.Hex]: - 'Please enter a hexadecimal string prefixed with 0x, for example "0xa19f"', - [ParameterType.Int]: "Please enter a valid integer", -}; - -const HEX_REGEX = new RegExp("^(0|0x[0-9A-Fa-f]*)$"); - -const getValidationError = ( - value: string, - format: ParameterType, -): string | undefined => - isValid(value, format) ? undefined : VALIDATION_ERRORS[format]; - -const isValid = (value: string, format: ParameterType): boolean => { - switch (format) { - case ParameterType.Hex: { - return HEX_REGEX.test(value); - } - case ParameterType.Int: { - return Number.parseInt(value, 10).toString() === value; - } - } -}; diff --git a/apps/api-reference/src/components/EvmCall/run-button.tsx b/apps/api-reference/src/components/EvmCall/run-button.tsx deleted file mode 100644 index 80d77a792a..0000000000 --- a/apps/api-reference/src/components/EvmCall/run-button.tsx +++ /dev/null @@ -1,241 +0,0 @@ -"use client"; - -import { ArrowPathIcon } from "@heroicons/react/24/outline"; -import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json"; -import PythErrorsAbi from "@pythnetwork/pyth-sdk-solidity/abis/PythErrors.json"; -import { readContract, createConfig, http } from "@wagmi/core"; -import { useCallback, useMemo, useState } from "react"; -import { ContractFunctionExecutionError, type Transport } from "viem"; - -import { type Network, NETWORK_TO_CONTRACT_ADDRESS } from "./networks"; -import { type Parameter } from "./parameter-input"; -import { Button } from "../Button"; -import { Code } from "../Code"; -import { Modal } from "../Modal"; - -type RunButtonProps< - ParameterName extends string, - Parameters extends Record, -> = { - functionName: (typeof PythAbi)[number]["name"]; - network: Network; - parameters: Parameter[]; - paramValues: Partial; -}; - -export const RunButton = < - ParameterName extends string, - Parameters extends Record, ->({ - network, - functionName, - parameters, - paramValues, -}: RunButtonProps) => { - const { - status, - modalContents, - resetStatus, - clearModalContents, - runContract, - disabled, - } = useRunButton(functionName, network, parameters, paramValues); - - return ( - <> - - - {modalContents !== undefined && ( - <> - {"parameters" in modalContents && - Object.keys(modalContents.parameters).length > 0 && ( -
-

- Arguments -

-
    - {Object.entries(modalContents.parameters).map( - ([name, value]) => ( -
  • - - {name}: - - - {value as string} - -
  • - ), - )} -
-
- )} - {"result" in modalContents ? ( - - {stringifyResponse(modalContents.result)} - - ) : ( -
-

- {showError(modalContents.error)} -

-
- )} - - )} -
- - ); -}; - -const useRunButton = < - ParameterName extends string, - Parameters extends Record, ->( - functionName: (typeof PythAbi)[number]["name"], - network: Network, - parameters: Parameter[], - paramValues: Partial, -) => { - const [status, setStatus] = useState(Status.None); - const [modalContents, setModalContents] = useState< - ModalContents | undefined - >(undefined); - const resetStatus = useCallback(() => { - setStatus(Status.None); - }, [setStatus]); - const clearModalContents = useCallback(() => { - setModalContents(undefined); - }, [setModalContents]); - const preparedParams = useMemo(() => { - const orderedParams = parameters.map(({ name }) => paramValues[name]); - return isComplete(orderedParams) ? orderedParams : undefined; - }, [parameters, paramValues]); - const runContract = useCallback(() => { - setStatus(Status.Loading); - if (preparedParams === undefined) { - setModalContents({ error: new Error("Invalid parameters!"), network }); - setStatus(Status.ShowingResults); - } else { - runFunction(network, functionName, preparedParams) - .then((result) => { - setModalContents({ result, parameters: paramValues, network }); - }) - .catch((error: unknown) => { - setModalContents({ error: error, parameters: paramValues, network }); - }) - .finally(() => { - setStatus(Status.ShowingResults); - }); - } - }, [network, functionName, setStatus, preparedParams, paramValues]); - const disabled = preparedParams === undefined || status !== Status.None; - - return { - status, - modalContents, - resetStatus, - clearModalContents, - runContract, - disabled, - }; -}; - -type ModalContents< - ParameterName extends string, - Parameters extends Record, -> = { network: Network } & ( - | { error: unknown; parameters?: Partial } - | { result: unknown; parameters: Partial } -); - -enum Status { - None, - Loading, - ShowingResults, -} - -const runFunction = async ( - network: Network, - functionName: (typeof PythAbi)[number]["name"], - args: string[], -) => - readContract( - createConfig({ - chains: [network], - transports: { [network.id]: http() } as Record< - (typeof network)["id"], - Transport - >, - }), - { - abi: [...PythAbi, ...PythErrorsAbi] as const, - address: NETWORK_TO_CONTRACT_ADDRESS[network.id], - functionName, - args, - }, - ); - -const showError = (error: unknown): string => { - if (typeof error === "string") { - return error; - } else if (error instanceof ContractFunctionExecutionError) { - return error.cause.metaMessages?.[0] ?? error.message; - } else if (error instanceof Error) { - return error.toString(); - } else { - return "An unknown error occurred"; - } -}; - -const stringifyResponse = (response: unknown): string => { - switch (typeof response) { - case "string": { - return `"${response}"`; - } - case "number": - case "boolean": - case "function": { - return response.toString(); - } - case "bigint": { - return `${response.toString()}n`; - } - case "symbol": { - return `Symbol(${response.toString()})`; - } - case "undefined": { - return "undefined"; - } - case "object": { - return response === null - ? "null" - : `{\n${Object.entries(response) - .map(([key, value]) => ` ${key}: ${stringifyResponse(value)}`) - .join(",\n")}\n}`; - } - } -}; - -const isComplete = (arr: (T | undefined)[]): arr is NonNullable[] => - arr.every((value) => value !== undefined); diff --git a/apps/api-reference/src/components/EvmLayout/index.tsx b/apps/api-reference/src/components/EvmLayout/index.tsx new file mode 100644 index 0000000000..b4f0e3d5c7 --- /dev/null +++ b/apps/api-reference/src/components/EvmLayout/index.tsx @@ -0,0 +1,60 @@ +"use client"; + +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { ConnectKitProvider, getDefaultConfig } from "connectkit"; +import { useTheme } from "next-themes"; +import type { ReactNode } from "react"; +import { WagmiProvider, createConfig, http, useChainId } from "wagmi"; +import { arbitrum, avalanche, mainnet, sepolia } from "wagmi/chains"; + +import { metadata } from "../../metadata"; + +const config = createConfig( + /* @ts-expect-error connectkit's types don't unify with wagmi's types using the exactOptionalPropertyTypes typescript setting */ + getDefaultConfig({ + chains: [mainnet, avalanche, arbitrum, sepolia], + transports: { + [mainnet.id]: http(), + [avalanche.id]: http(), + [arbitrum.id]: http(), + [sepolia.id]: http(), + }, + appName: metadata.applicationName, + appDescription: metadata.description, + appUrl: metadata.metadataBase.toString(), + appIcon: metadata.icons.apple.url, + }), +); + +const queryClient = new QueryClient(); + +type EvmLayoutProps = { + children: ReactNode; +}; + +export const EvmLayout = ({ children }: EvmLayoutProps) => { + return ( + + + {children} + + + ); +}; + +const ConnectKitProviderWrapper = ({ children }: { children: ReactNode }) => { + const { resolvedTheme } = useTheme(); + const chainId = useChainId(); + + return ( + + {children} + + ); +}; diff --git a/apps/api-reference/src/components/Sidebar/index.tsx b/apps/api-reference/src/components/Sidebar/index.tsx index 168e39c277..e606279695 100644 --- a/apps/api-reference/src/components/Sidebar/index.tsx +++ b/apps/api-reference/src/components/Sidebar/index.tsx @@ -6,7 +6,7 @@ import Link from "next/link"; import { useSelectedLayoutSegments } from "next/navigation"; import { type HTMLAttributes, useState, type ComponentProps } from "react"; -import { apis } from "../../apis"; +import * as apis from "../../apis"; import { Select } from "../Select"; type Chain = keyof typeof apis; diff --git a/apps/api-reference/src/layouts.tsx b/apps/api-reference/src/layouts.tsx deleted file mode 100644 index f34fb228c6..0000000000 --- a/apps/api-reference/src/layouts.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { ComponentProps, ReactNode } from "react"; - -import { EvmCall } from "./components/EvmCall"; - -export { - Language as EvmLanguage, - ParameterType as EvmParameterType, -} from "./components/EvmCall"; - -type Props = { - children: ReactNode; -}; - -export const evmCall = ( - props: Omit, "children">, -) => { - const EvmCallLayout = ({ children }: Props) => ( - {children} - ); - return EvmCallLayout; -}; diff --git a/apps/api-reference/src/metadata.ts b/apps/api-reference/src/metadata.ts new file mode 100644 index 0000000000..794a422b72 --- /dev/null +++ b/apps/api-reference/src/metadata.ts @@ -0,0 +1,52 @@ +import type { Metadata, Viewport } from "next"; + +export const metadata = { + metadataBase: new URL("https://api-reference.pyth.network"), + title: { + default: "Pyth Network API Reference", + template: "%s | Pyth Network API Reference", + }, + applicationName: "Pyth Network API Reference", + description: + "API reference, interactive explorer, and documentation for Pyth network products.", + referrer: "strict-origin-when-cross-origin", + openGraph: { + type: "website", + }, + twitter: { + creator: "@PythNetwork", + card: "summary_large_image", + }, + icons: { + icon: [ + { + media: "(prefers-color-scheme: light)", + type: "image/x-icon", + url: "/favicon.ico", + }, + { + media: "(prefers-color-scheme: dark)", + type: "image/x-icon", + url: "/favicon-light.ico", + }, + { + type: "image/png", + sizes: "32x32", + url: "/favicon-32x32.png", + }, + { + type: "image/png", + sizes: "16x16", + url: "/favicon-16x16.png", + }, + ], + apple: { + url: "/apple-touch-icon.png", + sizes: "180x180", + }, + }, +} satisfies Metadata; + +export const viewport = { + themeColor: "#242235", +} satisfies Viewport; diff --git a/apps/api-reference/src/use-is-mounted.ts b/apps/api-reference/src/use-is-mounted.ts new file mode 100644 index 0000000000..bab5ae49fc --- /dev/null +++ b/apps/api-reference/src/use-is-mounted.ts @@ -0,0 +1,11 @@ +import { useState, useEffect } from "react"; + +export const useIsMounted = () => { + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + return mounted; +}; diff --git a/apps/api-reference/src/zod-utils.ts b/apps/api-reference/src/zod-utils.ts new file mode 100644 index 0000000000..d6ad03aa48 --- /dev/null +++ b/apps/api-reference/src/zod-utils.ts @@ -0,0 +1,19 @@ +import { type ZodSchema, type ZodTypeDef, z } from "zod"; + +export const singletonArray = ( + schema: ZodSchema, +) => + z + .array(schema) + .length(1) + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + .transform((value) => value[0]!); + +export const safeFetch = async ( + schema: ZodSchema, + ...fetchArgs: Parameters +) => { + const response = await fetch(...fetchArgs); + const json: unknown = await response.json(); + return schema.parseAsync(json); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d545271b74..67e41f2bf7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,16 +30,16 @@ importers: apps/api-reference: dependencies: '@amplitude/analytics-browser': - specifier: ^2.8.1 + specifier: ^2.9.0 version: 2.9.0 '@floating-ui/react': - specifier: ^0.26.16 + specifier: ^0.26.17 version: 0.26.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@headlessui/react': specifier: ^2.0.4 version: 2.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@heroicons/react': - specifier: ^2.1.3 + specifier: ^2.1.4 version: 2.1.4(react@18.3.1) '@mdx-js/loader': specifier: ^3.0.1 @@ -51,28 +51,34 @@ importers: specifier: ^3.0.1 version: 3.0.1(@types/react@18.3.3)(react@18.3.1) '@next/mdx': - specifier: ^14.2.3 + specifier: ^14.2.4 version: 14.2.4(@mdx-js/loader@3.0.1(webpack@5.91.0))(@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)) '@next/third-parties': - specifier: ^14.2.3 - version: 14.2.4(next@14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: ^14.2.4 + version: 14.2.4(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@pythnetwork/pyth-sdk-solidity': - specifier: ^3.1.0 - version: 3.1.0 - '@wagmi/core': - specifier: ^2.10.5 - version: 2.11.3(@types/react@18.3.3)(bufferutil@4.0.8)(immer@9.0.21)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + specifier: workspace:^ + version: link:../../target_chains/ethereum/sdk/solidity + '@tanstack/react-query': + specifier: ^5.45.1 + version: 5.45.1(react@18.3.1) clsx: specifier: ^2.1.1 version: 2.1.1 + connectkit: + specifier: ^1.8.2 + version: 1.8.2(m5fu6jwi7nvuqo5lp7m3jyfehy) + cryptocurrency-icons: + specifier: ^0.18.1 + version: 0.18.1 next: - specifier: ^14.2.3 - version: 14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^14.2.4 + version: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) pino: - specifier: ^9.1.0 + specifier: ^9.2.0 version: 9.2.0 react: specifier: ^18.3.1 @@ -81,11 +87,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) shiki: - specifier: ^1.6.2 + specifier: ^1.7.0 version: 1.7.0 viem: - specifier: ^2.13.3 - version: 2.15.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + specifier: ^2.15.1 + version: 2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: + specifier: ^2.10.4 + version: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) zod: specifier: ^3.23.8 version: 3.23.8 @@ -95,10 +104,10 @@ importers: version: 4.9.1 '@cprussin/eslint-config': specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))(typescript@5.4.5) + version: 3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(typescript@5.5.2) '@cprussin/jest-config': specifier: ^1.4.1 - version: 1.4.1(@babel/core@7.24.7)(@jest/globals@29.7.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/jest@29.5.12)(@types/node@20.14.2)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))(utf-8-validate@5.0.10) + version: 1.4.1(@babel/core@7.24.7)(@jest/globals@29.7.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/jest@29.5.12)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10) '@cprussin/prettier-config': specifier: ^2.1.1 version: 2.1.1(prettier@3.3.2) @@ -107,10 +116,10 @@ importers: version: 3.0.1 '@svgr/webpack': specifier: ^8.1.0 - version: 8.1.0(typescript@5.4.5) + version: 8.1.0(typescript@5.5.2) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))) + version: 0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -118,8 +127,8 @@ importers: specifier: ^2.0.13 version: 2.0.13 '@types/node': - specifier: ^20.14.0 - version: 20.14.2 + specifier: ^20.14.6 + version: 20.14.7 '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -130,25 +139,25 @@ importers: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) eslint: - specifier: ^9.4.0 + specifier: ^9.5.0 version: 9.5.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) postcss: specifier: ^8.4.38 version: 8.4.38 prettier: - specifier: ^3.3.0 + specifier: ^3.3.2 version: 3.3.2 tailwindcss: - specifier: ^3.4.3 - version: 3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + specifier: ^3.4.4 + version: 3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.5.2 + version: 5.5.2 vercel: - specifier: ^34.2.4 + specifier: ^34.2.7 version: 34.2.7(encoding@0.1.13) apps/hermes/client/js: @@ -295,7 +304,7 @@ importers: version: 8.57.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) pino-pretty: specifier: ^11.2.1 version: 11.2.1 @@ -304,10 +313,10 @@ importers: version: 2.8.8 ts-jest: specifier: ^29.1.1 - version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)))(typescript@5.4.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) typescript: specifier: ^5.3.3 version: 5.4.5 @@ -394,7 +403,7 @@ importers: version: 6.10.0(encoding@0.1.13) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) typescript: specifier: ^5.3.3 version: 5.4.5 @@ -443,13 +452,13 @@ importers: version: link:../../../target_chains/ethereum/sdk/solidity ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) typescript: specifier: ^5.3.3 version: 5.4.5 viem: specifier: ^2.7.6 - version: 2.8.13(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 2.8.13(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.4)(zod@3.23.8) devDependencies: '@types/yargs': specifier: ^17.0.10 @@ -556,7 +565,7 @@ importers: version: 1.0.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) devDependencies: typescript: specifier: ^5.4.5 @@ -584,7 +593,7 @@ importers: version: 1.0.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) devDependencies: typescript: specifier: ^5.4.5 @@ -615,7 +624,7 @@ importers: version: 2.8.5 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) devDependencies: '@types/express': specifier: ^4.17.21 @@ -882,13 +891,13 @@ importers: version: 4.4.0(axios@1.6.8) isomorphic-ws: specifier: ^4.0.1 - version: 4.0.1(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 4.0.1(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) ts-log: specifier: ^2.2.4 version: 2.2.5 ws: specifier: ^8.6.0 - version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) devDependencies: '@types/jest': specifier: ^29.4.0 @@ -1182,7 +1191,7 @@ importers: version: 8.8.0(eslint@8.57.0) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@4.9.5) + version: 10.9.1(@types/node@20.14.7)(typescript@4.9.5) typescript: specifier: ^4.9.3 version: 4.9.5 @@ -1203,13 +1212,13 @@ importers: version: 0.9.24(bufferutil@4.0.8)(encoding@0.1.13)(google-protobuf@3.21.2)(utf-8-validate@5.0.10) '@matterlabs/hardhat-zksync-deploy': specifier: ^0.6.2 - version: 0.6.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))(zksync-web3@0.13.4(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))) + version: 0.6.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))(zksync-web3@0.13.4(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))) '@matterlabs/hardhat-zksync-solc': specifier: ^0.3.14 - version: 0.3.14(encoding@0.1.13)(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) + version: 0.3.14(encoding@0.1.13)(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) '@nomiclabs/hardhat-etherscan': specifier: ^3.1.7 - version: 3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) + version: 3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) '@openzeppelin/contracts': specifier: '=4.8.1' version: 4.8.1 @@ -1218,7 +1227,7 @@ importers: version: 4.8.1 '@openzeppelin/hardhat-upgrades': specifier: ^1.22.1 - version: 1.22.1(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) + version: 1.22.1(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) '@pythnetwork/contract-manager': specifier: workspace:* version: link:../../../contract_manager @@ -1245,7 +1254,7 @@ importers: version: 7.7.3 hardhat: specifier: ^2.12.5 - version: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + version: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) jsonfile: specifier: ^4.0.0 version: 4.0.0 @@ -1260,7 +1269,7 @@ importers: version: 2.0.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.14.2)(typescript@4.9.5) + version: 10.9.1(@types/node@20.14.7)(typescript@4.9.5) typescript: specifier: ^4.9.4 version: 4.9.5 @@ -1456,16 +1465,16 @@ importers: version: 8.56.0 jest: specifier: ^29.4.1 - version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) prettier: specifier: ^2.6.2 version: 2.8.8 ts-jest: specifier: ^29.0.5 - version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)))(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.2(@types/node@20.14.7)(typescript@5.4.5) typescript: specifier: ^5.4.5 version: 5.4.5 @@ -1614,7 +1623,7 @@ importers: version: 2.8.8 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.2(@types/node@20.14.7)(typescript@5.4.5) typescript: specifier: ^5.0.4 version: 5.4.5 @@ -3067,6 +3076,12 @@ packages: '@classic-terra/terra.proto@1.1.0': resolution: {integrity: sha512-bYhQG5LUaGF0KPRY9hYT/HEcd1QExZPQd6zLV/rQkCe/eDxfwFRLzZHpaaAdfWoAAZjsRWqJbUCqCg7gXBbJpw==} + '@coinbase/wallet-sdk@3.9.3': + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + + '@coinbase/wallet-sdk@4.0.3': + resolution: {integrity: sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q==} + '@confio/ics23@0.6.8': resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} @@ -3241,6 +3256,24 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/stylis@0.8.5': + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + '@ensdomains/address-encoder@0.1.9': resolution: {integrity: sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==} @@ -4516,6 +4549,12 @@ packages: engines: {node: ^14.15.0 || >=16.0.0} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + '@lit-labs/ssr-dom-shim@1.2.0': + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + '@liuli-util/fs-extra@0.1.0': resolution: {integrity: sha512-eaAyDyMGT23QuRGbITVY3SOJff3G9ekAAyGqB9joAnTBmqvFN+9a1FazOdO70G6IUqgpKV451eBHYSRcOJ/FNQ==} @@ -4559,27 +4598,130 @@ packages: '@types/react': '>=16' react: '>=16' + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + '@metamask/eth-sig-util@4.0.1': resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} engines: {node: '>=12.0.0'} + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@6.0.2': + resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.0.0': + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@15.0.0': + resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} + engines: {node: ^18.18 || >=20} + '@metamask/rpc-errors@5.1.1': resolution: {integrity: sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw==} engines: {node: '>=16.0.0'} + '@metamask/rpc-errors@6.3.0': + resolution: {integrity: sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==} + engines: {node: '>=16.0.0'} + '@metamask/safe-event-emitter@2.0.0': resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + '@metamask/safe-event-emitter@3.1.1': + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-communication-layer@0.26.0': + resolution: {integrity: sha512-Pu9y2YoQMC7mnaVyr2MddUUofPqqE+rZL1NFk30lJbNCVGopWSubWoF8fJZw54fWngNEN0HXPNkTokd5UCvwjQ==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.26.0': + resolution: {integrity: sha512-LyDQFIsWWyU0ZgZR3O9LzRqKzXcYUEGJRCNfb26IjFOquvmQosbhQV0jDNlVa8Tk2Fg4ykTPoaauANh6sVJYVQ==} + peerDependencies: + i18next: 22.5.1 + react: ^18.2.0 + react-dom: ^18.2.0 + react-i18next: ^13.2.2 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk@0.26.0': + resolution: {integrity: sha512-kCVtyGEqCcq0n4i08yeLwNT5cjnreVUNucJr+DMwUlQJ2JCSqAzrYSPhlk1k4LBqhje1OvLoEDJ6JnRshwMZtw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@metamask/superstruct@3.0.0': + resolution: {integrity: sha512-TOm+Lt/lCJk9j/3QT2LucrPewRmqI7/GKT+blK2IIOAkBMS+9TmeNjd2Y+TlfpSSYstaYsGZyz1XwpiTCg6RLA==} + engines: {node: '>=16.0.0'} + '@metamask/utils@5.0.2': resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} + '@metamask/utils@8.5.0': + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + '@microsoft/tsdoc-config@0.17.0': resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} '@microsoft/tsdoc@0.15.0': resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.12.0': + resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + '@mysten/bcs@0.10.1': resolution: {integrity: sha512-cQDb7Rhz2J82ZqgVQiHykuwKUlgiLWS2bjoajPPW0uvXlb75qrgKuaxh1UzsaRhHy3egk/APc0xjiZoqdbzB4w==} @@ -4630,6 +4772,9 @@ packages: '@next/env@14.2.3': resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + '@next/env@14.2.4': + resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + '@next/eslint-plugin-next@14.2.3': resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} @@ -4650,54 +4795,108 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@14.2.4': + resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@14.2.3': resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@14.2.4': + resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@14.2.3': resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@14.2.4': + resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@14.2.3': resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@14.2.4': + resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@14.2.3': resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@14.2.4': + resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@14.2.3': resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@14.2.4': + resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@14.2.3': resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@14.2.4': + resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@14.2.3': resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + '@next/swc-win32-ia32-msvc@14.2.4': + resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-x64-msvc@14.2.3': resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@14.2.4': + resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@next/third-parties@14.2.4': resolution: {integrity: sha512-bf5d5m4a+Fh9syLz0Pf9Ax7LdLazlp7ur7DqX0LUMDyIx9Z/F0J/XxieklA9lRqM9KjrCVNT8Tkhg0AvotTBTQ==} peerDependencies: @@ -5485,6 +5684,16 @@ packages: '@rushstack/eslint-patch@1.10.3': resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + '@safe-global/safe-apps-provider@0.18.1': + resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + + '@safe-global/safe-apps-sdk@8.1.0': + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + + '@safe-global/safe-gateway-typescript-sdk@3.21.4': + resolution: {integrity: sha512-BCY+7RtCfjkGO8X6crBRqlXPqAGM/0Ki/k0PWLYxV3IGmwM6ah2qFGkpp1omWQsdILdiKWxsmIKiderAWOyLjA==} + engines: {node: '>=16'} + '@scure/base@1.1.6': resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} @@ -6234,6 +6443,14 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + '@tanstack/query-core@5.45.0': + resolution: {integrity: sha512-RVfIZQmFUTdjhSAAblvueimfngYyfN6HlwaJUPK71PKd7yi43Vs1S/rdimmZedPWX/WGppcq/U1HOj7O7FwYxw==} + + '@tanstack/react-query@5.45.1': + resolution: {integrity: sha512-mYYfJujKg2kxmkRRjA6nn4YKG3ITsKuH22f1kteJ5IuVQqgKUgbaSQfYwVP0gBS05mhwxO03HVpD0t7BMN7WOA==} + peerDependencies: + react: ^18.0.0 + '@tanstack/react-table@8.7.8': resolution: {integrity: sha512-XNfNuY9qJEk5urJWGYPWNj4POtBTuYunQNfmUla/ZUobVSS+ZIWt6wnL6kI12QNpPrf4uSVAYelUVl245nnQjQ==} engines: {node: '>=12'} @@ -6563,6 +6780,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/dom-screen-wake-lock@1.0.3': + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -6713,6 +6933,9 @@ packages: '@types/node@20.14.2': resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} + '@types/node@20.14.7': + resolution: {integrity: sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ==} + '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -6750,6 +6973,9 @@ packages: '@types/secp256k1@4.0.3': resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + '@types/seedrandom@3.0.1': resolution: {integrity: sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==} @@ -6765,6 +6991,9 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/underscore@1.11.4': resolution: {integrity: sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==} @@ -7154,8 +7383,18 @@ packages: '@vercel/static-config@3.0.0': resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==} - '@wagmi/core@2.11.3': - resolution: {integrity: sha512-RxjjyDDmUehAy1CBJgSGzbnsbAAbaOrGwemsTXR7ru5dak+4lQ3Swx4Ikm1aPlxjSZbNy6c/epyidnkun9qzMQ==} + '@wagmi/connectors@5.0.16': + resolution: {integrity: sha512-AjZpKmdo8nBhWtvfHfa1NBtU/x6QsWoZthLseVrCZ6Z9dmmVShvq1bd36kpyJGHOTX6H1p/5WQXFG7X84TZ/Sg==} + peerDependencies: + '@wagmi/core': 2.11.4 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.11.4': + resolution: {integrity: sha512-vugDoSqHgWFEIIcwnBUFf1VctMfAnq6EK7vIPhVyBtlCdF/9tU0NoH8ayQeP6R6W6mQtnctUU/WM7+mFRnn4OA==} peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' @@ -7192,21 +7431,39 @@ packages: '@walletconnect/core@2.12.2': resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + '@walletconnect/core@2.13.0': + resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} + '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + '@walletconnect/ethereum-provider@2.13.0': + resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} + '@walletconnect/events@1.0.1': resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} '@walletconnect/heartbeat@1.2.1': resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + '@walletconnect/jsonrpc-provider@1.0.13': resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + '@walletconnect/jsonrpc-types@1.0.3': resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + '@walletconnect/jsonrpc-utils@1.0.8': resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} @@ -7228,6 +7485,15 @@ packages: resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' + '@walletconnect/modal-core@2.6.2': + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + + '@walletconnect/modal-ui@2.6.2': + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + + '@walletconnect/modal@2.6.2': + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + '@walletconnect/qrcode-modal@1.8.0': resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' @@ -7247,6 +7513,9 @@ packages: '@walletconnect/sign-client@2.12.2': resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + '@walletconnect/sign-client@2.13.0': + resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} + '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} @@ -7257,9 +7526,18 @@ packages: '@walletconnect/types@2.12.2': resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + '@walletconnect/types@2.13.0': + resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} + + '@walletconnect/universal-provider@2.13.0': + resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} + '@walletconnect/utils@2.12.2': resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + '@walletconnect/utils@2.13.0': + resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} + '@walletconnect/window-getters@1.0.0': resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} @@ -8022,6 +8300,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-styled-components@2.1.4: + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + babel-plugin-transform-flow-enums@0.0.2: resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} @@ -8402,6 +8685,9 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + caniuse-lite@1.0.30001591: resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==} @@ -8645,6 +8931,10 @@ packages: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -8800,6 +9090,16 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} + connectkit@1.8.2: + resolution: {integrity: sha512-Za6jR5RtCimzSFqAH1OgUYES96ThTei6d/TvKWNU3GeZPPnwVojtfhFn9wUOam81RknxylvVpG727BPmjguzbA==} + engines: {node: '>=12.4'} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: 17.x || 18.x + react-dom: 17.x || 18.x + viem: 2.x + wagmi: 2.x + consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -9014,12 +9314,22 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + cryptocurrency-icons@0.18.1: + resolution: {integrity: sha512-dvR5O8JOmav3559Yb0Igpkia+3vpt/aeNvMu5ZIVUG2Bzpq9wNcOJRIQas49XJrPjtZ98GAEn3aDQO+w7uhS2w==} + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -9108,6 +9418,10 @@ packages: dataloader@2.1.0: resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} @@ -9121,6 +9435,9 @@ packages: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} engines: {node: '>=10'} + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -9525,6 +9842,9 @@ packages: eccrypto@1.1.6: resolution: {integrity: sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==} + eciesjs@0.3.19: + resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + edge-runtime@2.5.9: resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==} engines: {node: '>=16'} @@ -9576,6 +9896,9 @@ packages: emphasize@5.0.0: resolution: {integrity: sha512-wRMiBsXijTTIOcXAhNzrMEwhSo246B1Dw8Qtx1QThNNeqN4edg85YvREhhZClwk23dQ3Kz1IM+TsmZ2hVVLeoQ==} + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -10133,6 +10456,10 @@ packages: eth-block-tracker@4.4.3: resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + eth-crypto@2.6.0: resolution: {integrity: sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==} @@ -10142,6 +10469,10 @@ packages: eth-json-rpc-filters@4.2.2: resolution: {integrity: sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==} + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + eth-json-rpc-infura@5.1.0: resolution: {integrity: sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -10261,6 +10592,9 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + eventemitter3@4.0.4: resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} @@ -10325,6 +10659,10 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -10568,6 +10906,15 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + framer-motion@6.5.1: + resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} + peerDependencies: + react: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + + framesync@6.0.1: + resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -10643,6 +10990,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + ganache@7.7.3: resolution: {integrity: sha512-dZTUHjzSuvDTMUpKaBTWJnpcWpsBUtqciA8ttdmC/r/XRXJhDa0EpypisYULhoV8tx76G08mOuM/B1vhPbh20A==} hasBin: true @@ -11012,6 +11363,9 @@ packages: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + hi-base32@0.5.1: resolution: {integrity: sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==} @@ -11057,6 +11411,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + htmlparser2@8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} @@ -11132,6 +11489,12 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + + i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -12131,9 +12494,6 @@ packages: resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} engines: {node: '>=10.0.0'} - keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -12307,6 +12667,15 @@ packages: resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} hasBin: true + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + load-json-file@1.1.0: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} @@ -12990,6 +13359,9 @@ packages: moment@2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -13147,6 +13519,24 @@ packages: sass: optional: true + next@14.2.4: + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -13394,6 +13784,9 @@ packages: resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} engines: {node: '>=18'} + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -13906,6 +14299,17 @@ packages: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + popmotion@11.0.3: + resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} + portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} @@ -14046,6 +14450,9 @@ packages: pre-commit@1.2.2: resolution: {integrity: sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==} + preact@10.22.0: + resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==} + preact@10.4.1: resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} @@ -14243,6 +14650,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -14282,9 +14692,19 @@ packages: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + qr.js@0.0.0: resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + qrcode.react@1.0.1: resolution: {integrity: sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==} peerDependencies: @@ -14295,6 +14715,11 @@ packages: engines: {node: '>=4'} hasBin: true + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -14414,6 +14839,19 @@ packages: react: '>=16' react-dom: '>=16' + react-i18next@13.5.0: + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -14433,6 +14871,12 @@ packages: react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 + react-native-webview@11.26.1: + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + react-native@0.74.2: resolution: {integrity: sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw==} engines: {node: '>=18'} @@ -14459,6 +14903,18 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-transition-state@1.1.5: + resolution: {integrity: sha512-ITY2mZqc2dWG2eitJkYNdcSFW8aKeOlkL2A/vowRrLL8GH3J6Re/SpD/BLvQzrVOTqjsP0b5S9N10vgNNzwMUQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-use-measure@2.1.1: + resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} + peerDependencies: + react: '>=16.13' + react-dom: '>=16.13' + react@16.13.1: resolution: {integrity: sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==} engines: {node: '>=0.10.0'} @@ -14699,6 +15155,9 @@ packages: reselect@4.1.7: resolution: {integrity: sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==} + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -14798,6 +15257,16 @@ packages: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} hasBin: true + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} @@ -15460,6 +15929,17 @@ packages: style-to-object@1.0.6: resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + style-value-types@5.0.0: + resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} + + styled-components@5.3.11: + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -16114,6 +16594,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true + typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} @@ -16136,6 +16621,9 @@ packages: uid-promise@1.0.0: resolution: {integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==} + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} @@ -16362,6 +16850,10 @@ packages: resolution: {integrity: sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==} engines: {node: '>=6.14.2'} + utf-8-validate@6.0.4: + resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + engines: {node: '>=6.14.2'} + utf8@3.0.0: resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} @@ -16424,6 +16916,18 @@ packages: resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + value-or-promise@1.0.11: resolution: {integrity: sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==} engines: {node: '>=12'} @@ -16484,6 +16988,10 @@ packages: vlq@2.0.4: resolution: {integrity: sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==} + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} @@ -16505,6 +17013,17 @@ packages: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} + wagmi@2.10.4: + resolution: {integrity: sha512-FrQ9a2EgGohnk8v1mTHUAqdBv1EHVWGy/lxezqdJaH2oF062sz2TWlWjbbFCxvd+obrrIPcEjIaOpvJMVt0nRg==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + walk-up-path@1.0.0: resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} @@ -16877,6 +17396,9 @@ packages: resolution: {integrity: sha512-kQSF2NlHk8yjS3SRiJW3S+U5ibkEmVRhB4/GYsVwGvdAkFC2b+EIE1Ob7J56OmqW9VBZgkx1+SuWqo5JTIJSYQ==} engines: {node: '>=14.0.0', npm: '>=6.12.0'} + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -17600,7 +18122,7 @@ snapshots: '@babel/traverse': 7.24.0 '@babel/types': 7.24.0 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -17617,10 +18139,10 @@ snapshots: '@babel/helpers': 7.24.7 '@babel/parser': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -17664,7 +18186,7 @@ snapshots: '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17766,7 +18288,7 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 @@ -17778,7 +18300,7 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 @@ -17790,7 +18312,7 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -17801,7 +18323,7 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -17830,7 +18352,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.24.7': dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17839,9 +18361,9 @@ snapshots: dependencies: '@babel/types': 7.24.0 - '@babel/helper-module-imports@7.24.7': + '@babel/helper-module-imports@7.24.7(supports-color@5.5.0)': dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17850,7 +18372,7 @@ snapshots: dependencies: '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-simple-access': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 @@ -17861,7 +18383,7 @@ snapshots: dependencies: '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-simple-access': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 @@ -17872,7 +18394,7 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-simple-access': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 @@ -17901,6 +18423,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -17953,7 +18485,7 @@ snapshots: '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17964,7 +18496,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17985,7 +18517,7 @@ snapshots: dependencies: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -17994,7 +18526,7 @@ snapshots: dependencies: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -18002,7 +18534,7 @@ snapshots: '@babel/helpers@7.24.0': dependencies: '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -18101,6 +18633,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -18132,6 +18674,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.0) + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -18150,6 +18698,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -18168,6 +18722,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.0)': dependencies: '@babel/compat-data': 7.24.7 @@ -18177,12 +18737,27 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.7)': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining@7.20.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -18286,6 +18861,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -18511,7 +19091,7 @@ snapshots: '@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.24.0) transitivePeerDependencies: @@ -18520,7 +19100,7 @@ snapshots: '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.0) transitivePeerDependencies: @@ -18529,7 +19109,7 @@ snapshots: '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7) transitivePeerDependencies: @@ -19095,6 +19675,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -19181,6 +19766,11 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -19196,11 +19786,21 @@ snapshots: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -19223,13 +19823,24 @@ snapshots: dependencies: '@babel/core': 7.24.0 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -19278,7 +19889,7 @@ snapshots: '@babel/plugin-transform-runtime@7.19.6(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.24.7) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.24.7) @@ -19290,7 +19901,7 @@ snapshots: '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.24.7 babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.0) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.0) @@ -19299,6 +19910,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/helper-plugin-utils': 7.24.7 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -19838,12 +20461,12 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/traverse@7.24.7': + '@babel/traverse@7.24.7(supports-color@5.5.0)': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.7 @@ -19853,7 +20476,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -20045,7 +20668,7 @@ snapshots: near-api-js: 1.1.0(encoding@0.1.13) optionalDependencies: '@injectivelabs/networks': 1.10.12(google-protobuf@3.21.2) - '@injectivelabs/sdk-ts': 1.10.72(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@injectivelabs/sdk-ts': 1.10.72(bufferutil@4.0.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10) '@injectivelabs/utils': 1.10.12(google-protobuf@3.21.2) transitivePeerDependencies: - bufferutil @@ -20069,6 +20692,29 @@ snapshots: long: 4.0.0 protobufjs: 6.11.4 + '@coinbase/wallet-sdk@3.9.3': + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.1 + keccak: 3.0.3 + preact: 10.22.0 + sha.js: 2.4.11 + transitivePeerDependencies: + - supports-color + + '@coinbase/wallet-sdk@4.0.3': + dependencies: + buffer: 6.0.3 + clsx: 1.2.1 + eventemitter3: 5.0.1 + keccak: 3.0.3 + preact: 10.22.0 + sha.js: 2.4.11 + '@confio/ics23@0.6.8': dependencies: '@noble/hashes': 1.4.0 @@ -20564,7 +21210,7 @@ snapshots: transitivePeerDependencies: - debug - '@cprussin/eslint-config@3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))(typescript@5.4.5)': + '@cprussin/eslint-config@3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(typescript@5.5.2)': dependencies: '@babel/core': 7.24.7 '@babel/eslint-parser': 7.24.7(@babel/core@7.24.7)(eslint@9.5.0) @@ -20576,22 +21222,22 @@ snapshots: eslint: 9.5.0 eslint-config-prettier: 9.1.0(eslint@9.5.0) eslint-config-turbo: 1.13.4(eslint@9.5.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0) - eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0) + eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2) eslint-plugin-jest-dom: 5.4.0(eslint@9.5.0) eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@9.5.0) eslint-plugin-n: 17.9.0(eslint@9.5.0) eslint-plugin-react: 7.34.2(eslint@9.5.0) eslint-plugin-react-hooks: 4.6.2(eslint@9.5.0) - eslint-plugin-storybook: 0.8.0(eslint@9.5.0)(typescript@5.4.5) - eslint-plugin-tailwindcss: 3.17.3(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))) - eslint-plugin-testing-library: 6.2.2(eslint@9.5.0)(typescript@5.4.5) + eslint-plugin-storybook: 0.8.0(eslint@9.5.0)(typescript@5.5.2) + eslint-plugin-tailwindcss: 3.17.3(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) + eslint-plugin-testing-library: 6.2.2(eslint@9.5.0)(typescript@5.5.2) eslint-plugin-tsdoc: 0.3.0 eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) globals: 15.6.0 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) - typescript-eslint: 7.13.1(eslint@9.5.0)(typescript@5.4.5) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) + typescript-eslint: 7.13.1(eslint@9.5.0)(typescript@5.5.2) transitivePeerDependencies: - '@testing-library/dom' - '@typescript-eslint/eslint-plugin' @@ -20603,19 +21249,19 @@ snapshots: - ts-node - typescript - '@cprussin/jest-config@1.4.1(@babel/core@7.24.7)(@jest/globals@29.7.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/jest@29.5.12)(@types/node@20.14.2)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))(utf-8-validate@5.0.10)': + '@cprussin/jest-config@1.4.1(@babel/core@7.24.7)(@jest/globals@29.7.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/jest@29.5.12)(@types/node@20.14.7)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.5.0)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))(utf-8-validate@5.0.10)': dependencies: - '@cprussin/jest-runner-prettier': 1.0.0(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(prettier@3.3.2) - '@testing-library/jest-dom': 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))) - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + '@cprussin/jest-runner-prettier': 1.0.0(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(prettier@3.3.2) + '@testing-library/jest-dom': 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-environment-jsdom: 29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jest-runner-eslint: 2.2.0(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))) - next: 14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + jest-runner-eslint: 2.2.0(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) prettier: 3.3.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - ts-jest: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) - typescript: 5.4.5 + ts-jest: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2) + typescript: 5.5.2 transitivePeerDependencies: - '@babel/core' - '@jest/globals' @@ -20641,11 +21287,11 @@ snapshots: - utf-8-validate - vitest - '@cprussin/jest-runner-prettier@1.0.0(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(prettier@3.3.2)': + '@cprussin/jest-runner-prettier@1.0.0(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(prettier@3.3.2)': dependencies: - create-lite-jest-runner: 1.1.0(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))) + create-lite-jest-runner: 1.1.0(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))) emphasize: 5.0.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-diff: 29.7.0 prettier: 3.3.2 @@ -20693,6 +21339,24 @@ snapshots: tslib: 2.6.3 optional: true + '@emotion/is-prop-valid@0.8.8': + dependencies: + '@emotion/memoize': 0.7.4 + optional: true + + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.7.4': + optional: true + + '@emotion/memoize@0.8.1': {} + + '@emotion/stylis@0.8.5': {} + + '@emotion/unitless@0.7.5': {} + '@ensdomains/address-encoder@0.1.9': dependencies: bech32: 1.1.4 @@ -20822,7 +21486,7 @@ snapshots: '@eslint/config-array@0.16.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -20830,7 +21494,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) espree: 9.6.1 globals: 13.20.0 ignore: 5.3.1 @@ -20844,7 +21508,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -21528,7 +22192,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -21864,54 +22528,6 @@ snapshots: - subscriptions-transport-ws - utf-8-validate - '@injectivelabs/sdk-ts@1.10.72(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@apollo/client': 3.7.13(graphql@16.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@cosmjs/amino': 0.30.1 - '@cosmjs/proto-signing': 0.30.1 - '@cosmjs/stargate': 0.30.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@ethersproject/bytes': 5.7.0 - '@injectivelabs/core-proto-ts': 0.0.14 - '@injectivelabs/exceptions': 1.14.6(google-protobuf@3.21.2) - '@injectivelabs/grpc-web': 0.0.1(google-protobuf@3.21.2) - '@injectivelabs/grpc-web-node-http-transport': 0.0.2(@injectivelabs/grpc-web@0.0.1(google-protobuf@3.21.2)) - '@injectivelabs/grpc-web-react-native-transport': 0.0.2(@injectivelabs/grpc-web@0.0.1(google-protobuf@3.21.2)) - '@injectivelabs/indexer-proto-ts': 1.10.8-rc.4 - '@injectivelabs/mito-proto-ts': 1.0.9 - '@injectivelabs/networks': 1.14.6(google-protobuf@3.21.2) - '@injectivelabs/test-utils': 1.14.4 - '@injectivelabs/token-metadata': 1.10.42(google-protobuf@3.21.2) - '@injectivelabs/ts-types': 1.14.6 - '@injectivelabs/utils': 1.14.6(google-protobuf@3.21.2) - '@metamask/eth-sig-util': 4.0.1 - axios: 0.27.2 - bech32: 2.0.0 - bip39: 3.0.4 - cosmjs-types: 0.7.2 - eth-crypto: 2.6.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ethereumjs-util: 7.1.5 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - google-protobuf: 3.21.2 - graphql: 16.6.0 - http-status-codes: 2.2.0 - js-sha3: 0.8.0 - jscrypto: 1.0.3 - keccak256: 1.0.6 - link-module-alias: 1.2.0 - rxjs: 7.8.0 - secp256k1: 4.0.3 - shx: 0.3.4 - snakecase-keys: 5.4.5 - transitivePeerDependencies: - - bufferutil - - debug - - graphql-ws - - react - - react-dom - - subscriptions-transport-ws - - utf-8-validate - optional: true - '@injectivelabs/sdk-ts@1.14.7(bufferutil@4.0.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@apollo/client': 3.7.13(graphql@16.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -22115,7 +22731,7 @@ snapshots: '@jest/console@27.5.1': dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -22124,7 +22740,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -22137,7 +22753,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -22167,21 +22783,21 @@ snapshots: - ts-node - utf-8-validate - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22209,14 +22825,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@16.18.60)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@16.18.60)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22244,14 +22860,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22279,14 +22895,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22314,14 +22930,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.19.34)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.19.34)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22349,14 +22965,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22377,21 +22993,56 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.7 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22419,14 +23070,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22455,14 +23106,14 @@ snapshots: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 27.5.1 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -22480,7 +23131,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -22489,7 +23140,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -22516,7 +23167,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -22547,7 +23198,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -22658,7 +23309,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -22666,7 +23317,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/yargs': 16.0.9 chalk: 4.1.2 @@ -22675,7 +23326,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -23404,6 +24055,12 @@ snapshots: npmlog: 6.0.2 write-file-atomic: 4.0.2 + '@lit-labs/ssr-dom-shim@1.2.0': {} + + '@lit/reactive-element@1.6.3': + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@liuli-util/fs-extra@0.1.0': dependencies: '@types/fs-extra': 9.0.13 @@ -23455,19 +24112,19 @@ snapshots: - '@swc/core' - '@swc/wasm' - '@matterlabs/hardhat-zksync-deploy@0.6.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))(zksync-web3@0.13.4(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': + '@matterlabs/hardhat-zksync-deploy@0.6.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))(zksync-web3@0.13.4(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': dependencies: chalk: 4.1.2 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) zksync-web3: 0.13.4(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@matterlabs/hardhat-zksync-solc@0.3.14(encoding@0.1.13)(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': + '@matterlabs/hardhat-zksync-solc@0.3.14(encoding@0.1.13)(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': dependencies: '@nomiclabs/hardhat-docker': 2.0.2(encoding@0.1.13) chalk: 4.1.2 dockerode: 3.3.4 - hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) transitivePeerDependencies: - encoding - supports-color @@ -23514,6 +24171,14 @@ snapshots: '@types/react': 18.3.3 react: 18.3.1 + '@metamask/eth-json-rpc-provider@1.0.1': + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 5.0.2 + transitivePeerDependencies: + - supports-color + '@metamask/eth-sig-util@4.0.1': dependencies: ethereumjs-abi: 0.6.8 @@ -23522,6 +24187,49 @@ snapshots: tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 + '@metamask/json-rpc-engine@7.3.3': + dependencies: + '@metamask/rpc-errors': 6.3.0 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-middleware-stream@6.0.2': + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + + '@metamask/object-multiplex@2.0.0': + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + '@metamask/onboarding@1.0.1': + dependencies: + bowser: 2.11.0 + + '@metamask/providers@15.0.0': + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/json-rpc-middleware-stream': 6.0.2 + '@metamask/object-multiplex': 2.0.0 + '@metamask/rpc-errors': 6.3.0 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 + detect-browser: 5.3.0 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 + is-stream: 2.0.1 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color + '@metamask/rpc-errors@5.1.1': dependencies: '@metamask/utils': 5.0.2 @@ -23529,18 +24237,104 @@ snapshots: transitivePeerDependencies: - supports-color + '@metamask/rpc-errors@6.3.0': + dependencies: + '@metamask/utils': 8.5.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + '@metamask/safe-event-emitter@2.0.0': {} + '@metamask/safe-event-emitter@3.1.1': {} + + '@metamask/sdk-communication-layer@0.26.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + bufferutil: 4.0.8 + cross-fetch: 4.0.0(encoding@0.1.13) + date-fns: 2.30.0 + debug: 4.3.5(supports-color@5.5.0) + eciesjs: 0.3.19 + eventemitter2: 6.4.9 + readable-stream: 3.6.2 + socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) + utf-8-validate: 6.0.4 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + '@metamask/sdk-install-modal-web@0.26.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + dependencies: + i18next: 22.5.1 + qr-code-styling: 1.6.0-rc.1 + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + + '@metamask/sdk@0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)': + dependencies: + '@metamask/onboarding': 1.0.1 + '@metamask/providers': 15.0.0 + '@metamask/sdk-communication-layer': 0.26.0(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.26.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@types/dom-screen-wake-lock': 1.0.3 + bowser: 2.11.0 + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.5(supports-color@5.5.0) + eciesjs: 0.3.19 + eth-rpc-errors: 4.0.3 + eventemitter2: 6.4.9 + i18next: 22.5.1 + i18next-browser-languagedetector: 7.1.0 + obj-multiplex: 1.0.0 + pump: 3.0.0 + qrcode-terminal-nooctal: 0.12.1 + react-native-webview: 11.26.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + readable-stream: 3.6.2 + rollup-plugin-visualizer: 5.12.0 + socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) + util: 0.12.5 + uuid: 8.3.2 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - bufferutil + - encoding + - react-i18next + - react-native + - rollup + - supports-color + - utf-8-validate + + '@metamask/superstruct@3.0.0': {} + '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) semver: 7.6.2 superstruct: 1.0.4 transitivePeerDependencies: - supports-color + '@metamask/utils@8.5.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.0.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 + '@types/debug': 4.1.12 + debug: 4.3.5(supports-color@5.5.0) + pony-cause: 2.1.11 + semver: 7.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + '@microsoft/tsdoc-config@0.17.0': dependencies: '@microsoft/tsdoc': 0.15.0 @@ -23550,6 +24344,60 @@ snapshots: '@microsoft/tsdoc@0.15.0': {} + '@motionone/animation@10.18.0': + dependencies: + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/dom@10.12.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.6.3 + + '@motionone/dom@10.18.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.6.3 + + '@motionone/easing@10.18.0': + dependencies: + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/svelte@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.6.3 + + '@motionone/types@10.17.1': {} + + '@motionone/utils@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + hey-listen: 1.0.8 + tslib: 2.6.3 + + '@motionone/vue@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.6.3 + '@mysten/bcs@0.10.1': dependencies: bs58: 5.0.0 @@ -23700,6 +24548,8 @@ snapshots: '@next/env@14.2.3': {} + '@next/env@14.2.4': {} + '@next/eslint-plugin-next@14.2.3': dependencies: glob: 10.3.10 @@ -23714,33 +24564,60 @@ snapshots: '@next/swc-darwin-arm64@14.2.3': optional: true + '@next/swc-darwin-arm64@14.2.4': + optional: true + '@next/swc-darwin-x64@14.2.3': optional: true + '@next/swc-darwin-x64@14.2.4': + optional: true + '@next/swc-linux-arm64-gnu@14.2.3': optional: true + '@next/swc-linux-arm64-gnu@14.2.4': + optional: true + '@next/swc-linux-arm64-musl@14.2.3': optional: true + '@next/swc-linux-arm64-musl@14.2.4': + optional: true + '@next/swc-linux-x64-gnu@14.2.3': optional: true + '@next/swc-linux-x64-gnu@14.2.4': + optional: true + '@next/swc-linux-x64-musl@14.2.3': optional: true + '@next/swc-linux-x64-musl@14.2.4': + optional: true + '@next/swc-win32-arm64-msvc@14.2.3': optional: true + '@next/swc-win32-arm64-msvc@14.2.4': + optional: true + '@next/swc-win32-ia32-msvc@14.2.3': optional: true + '@next/swc-win32-ia32-msvc@14.2.4': + optional: true + '@next/swc-win32-x64-msvc@14.2.3': optional: true - '@next/third-parties@14.2.4(next@14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@next/swc-win32-x64-msvc@14.2.4': + optional: true + + '@next/third-parties@14.2.4(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - next: 14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 third-party-capital: 1.0.20 @@ -23816,7 +24693,7 @@ snapshots: '@nomicfoundation/ethereumjs-trie': 5.0.0 '@nomicfoundation/ethereumjs-util': 8.0.0 abstract-level: 1.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethereum-cryptography: 0.1.3 level: 8.0.0 lru-cache: 5.1.1 @@ -23844,7 +24721,7 @@ snapshots: '@nomicfoundation/ethereumjs-util': 8.0.0 '@types/async-eventemitter': 0.2.1 async-eventemitter: 0.2.4 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethereum-cryptography: 0.1.3 mcl-wasm: 0.7.9 rustbn.js: 0.2.0 @@ -23859,7 +24736,7 @@ snapshots: '@nomicfoundation/ethereumjs-rlp': 4.0.0 '@nomicfoundation/ethereumjs-trie': 5.0.0 '@nomicfoundation/ethereumjs-util': 8.0.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethereum-cryptography: 0.1.3 functional-red-black-tree: 1.0.1 transitivePeerDependencies: @@ -23897,7 +24774,7 @@ snapshots: '@nomicfoundation/ethereumjs-util': 8.0.0 '@types/async-eventemitter': 0.2.1 async-eventemitter: 0.2.4 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethereum-cryptography: 0.1.3 functional-red-black-tree: 1.0.1 mcl-wasm: 0.7.9 @@ -23957,12 +24834,12 @@ snapshots: - encoding - supports-color - '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': dependencies: ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) - '@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/address': 5.7.0 @@ -23970,7 +24847,7 @@ snapshots: chalk: 2.4.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 7.0.1 - hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) lodash: 4.17.21 semver: 6.3.1 table: 6.8.1 @@ -24202,15 +25079,15 @@ snapshots: '@openzeppelin/contracts@4.8.1': {} - '@openzeppelin/hardhat-upgrades@1.22.1(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': + '@openzeppelin/hardhat-upgrades@1.22.1(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10))': dependencies: - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10)) '@openzeppelin/upgrades-core': 1.21.0 chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) + hardhat: 2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10) proper-lockfile: 4.1.2 transitivePeerDependencies: - supports-color @@ -24253,7 +25130,7 @@ snapshots: cbor: 8.1.0 chalk: 4.1.2 compare-versions: 5.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethereumjs-util: 7.1.5 proper-lockfile: 4.1.2 solidity-ast: 0.4.43 @@ -24681,6 +25558,12 @@ snapshots: react-native: 0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) optional: true + '@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))': + dependencies: + merge-options: 3.0.4 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + optional: true + '@react-native-community/cli-clean@13.6.8(encoding@0.1.13)': dependencies: '@react-native-community/cli-tools': 13.6.8(encoding@0.1.13) @@ -24837,6 +25720,13 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-plugin-codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/babel-preset@0.74.84(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))': dependencies: '@babel/core': 7.24.0 @@ -24886,6 +25776,55 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-preset@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7) + '@babel/template': 7.24.7 + '@react-native/babel-plugin-codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.7) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.0))': dependencies: '@babel/parser': 7.24.7 @@ -24899,6 +25838,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@react-native/codegen@0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/parser': 7.24.7 + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + glob: 7.2.3 + hermes-parser: 0.19.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + '@react-native/community-cli-plugin@0.74.84(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@react-native-community/cli-server-api': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -24921,6 +25873,28 @@ snapshots: - supports-color - utf-8-validate + '@react-native/community-cli-plugin@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@react-native-community/cli-server-api': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-tools': 13.6.8(encoding@0.1.13) + '@react-native/dev-middleware': 0.74.84(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native/metro-babel-transformer': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-config: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + metro-core: 0.80.9 + node-fetch: 2.7.0(encoding@0.1.13) + querystring: 0.2.1 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@react-native/debugger-frontend@0.74.84': {} '@react-native/dev-middleware@0.74.84(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': @@ -24958,6 +25932,16 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/metro-babel-transformer@0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))': + dependencies: + '@babel/core': 7.24.7 + '@react-native/babel-preset': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + hermes-parser: 0.19.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/normalize-colors@0.74.84': {} '@react-native/virtualized-lists@0.74.84(@types/react@18.3.3)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': @@ -24969,9 +25953,18 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 + '@react-native/virtualized-lists@0.74.84(@types/react@18.3.3)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.3.1 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + optionalDependencies: + '@types/react': 18.3.3 + '@react-stately/utils@3.10.1(react@18.3.1)': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.11 react: 18.3.1 '@react-types/shared@3.23.1(react@18.3.1)': @@ -25022,6 +26015,28 @@ snapshots: '@rushstack/eslint-patch@1.10.3': {} + '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.21.4 + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-gateway-typescript-sdk@3.21.4': {} + '@scure/base@1.1.6': {} '@scure/bip32@1.1.0': @@ -26075,12 +27090,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/core@8.1.0(typescript@5.4.5)': + '@svgr/core@8.1.0(typescript@5.5.2)': dependencies: '@babel/core': 7.24.7 '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.2) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -26106,11 +27121,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))': dependencies: '@babel/core': 7.24.7 '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) - '@svgr/core': 8.1.0(typescript@5.4.5) + '@svgr/core': 8.1.0(typescript@5.5.2) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: @@ -26123,10 +27138,10 @@ snapshots: deepmerge: 4.3.0 svgo: 2.8.0 - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.4.5))(typescript@5.4.5)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2)': dependencies: - '@svgr/core': 8.1.0(typescript@5.4.5) - cosmiconfig: 8.3.6(typescript@5.4.5) + '@svgr/core': 8.1.0(typescript@5.5.2) + cosmiconfig: 8.3.6(typescript@5.5.2) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: @@ -26145,16 +27160,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/webpack@8.1.0(typescript@5.4.5)': + '@svgr/webpack@8.1.0(typescript@5.5.2)': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-constant-elements': 7.24.7(@babel/core@7.24.7) '@babel/preset-env': 7.24.7(@babel/core@7.24.7) '@babel/preset-react': 7.24.1(@babel/core@7.24.7) '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) - '@svgr/core': 8.1.0(typescript@5.4.5) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5))(typescript@5.4.5) + '@svgr/core': 8.1.0(typescript@5.5.2) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.2))(typescript@5.5.2) transitivePeerDependencies: - supports-color - typescript @@ -26178,10 +27193,17 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) + + '@tanstack/query-core@5.45.0': {} + + '@tanstack/react-query@5.45.1(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.45.0 + react: 18.3.1 '@tanstack/react-table@8.7.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -26250,7 +27272,7 @@ snapshots: long: 4.0.0 protobufjs: 6.11.4 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))': + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -26263,7 +27285,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) '@tootallnate/once@1.1.2': {} @@ -26415,7 +27437,7 @@ snapshots: big.js: 6.2.1 bn.js: 5.2.1 cbor: 5.2.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) lodash: 4.17.21 semver: 7.3.7 utf8: 3.0.0 @@ -26434,7 +27456,7 @@ snapshots: '@truffle/events': 0.1.25(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@truffle/provider': 0.3.13(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) conf: 10.2.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) find-up: 2.1.0 lodash: 4.17.21 original-require: 1.0.1 @@ -26448,7 +27470,7 @@ snapshots: '@truffle/contract-schema@3.4.11': dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -26461,7 +27483,7 @@ snapshots: '@truffle/error': 0.2.0 '@truffle/interface-adapter': 0.5.27(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) bignumber.js: 7.2.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) ethers: 4.0.49 web3: 1.8.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-core-helpers: 1.8.1 @@ -26479,7 +27501,7 @@ snapshots: '@truffle/dashboard-message-bus-common': 0.1.7 '@truffle/promise-tracker': 0.1.7 axios: 1.5.0(debug@4.3.5) - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) delay: 5.0.0 isomorphic-ws: 4.0.1(ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)) node-abort-controller: 3.1.1 @@ -26512,7 +27534,7 @@ snapshots: '@truffle/config': 1.3.61(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) abstract-leveldown: 7.2.0 apollo-server: 3.11.1(encoding@0.1.13)(graphql@15.8.0) - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) fs-extra: 9.1.0 graphql: 15.8.0 graphql-tag: 2.12.6(graphql@15.8.0) @@ -26537,7 +27559,7 @@ snapshots: '@trufflesuite/chromafi': 3.0.0 bn.js: 5.2.1 chalk: 2.4.2 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) highlightjs-solidity: 2.0.5 transitivePeerDependencies: - supports-color @@ -26548,7 +27570,7 @@ snapshots: '@truffle/codec': 0.14.13 '@truffle/source-map-utils': 1.3.105 bn.js: 5.2.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) json-pointer: 0.6.2 json-stable-stringify: 1.1.1 lodash: 4.17.21 @@ -26573,7 +27595,7 @@ snapshots: dependencies: '@truffle/dashboard-message-bus-client': 0.1.12(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@truffle/spinners': 0.2.5 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) emittery: 0.4.1 web3-utils: 1.10.0 transitivePeerDependencies: @@ -26666,7 +27688,7 @@ snapshots: dependencies: '@truffle/error': 0.2.2 '@truffle/interface-adapter': 0.5.37(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) web3: 1.10.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -26679,7 +27701,7 @@ snapshots: dependencies: '@truffle/code-utils': 3.0.1 '@truffle/codec': 0.14.13 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) json-pointer: 0.6.2 node-interval-tree: 1.3.3 web3-utils: 1.8.1 @@ -26728,7 +27750,7 @@ snapshots: '@types/accepts@1.3.5': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 optional: true '@types/acorn@4.0.6': @@ -26737,7 +27759,7 @@ snapshots: '@types/adm-zip@0.5.0': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/async-eventemitter@0.2.1': {} @@ -26764,45 +27786,47 @@ snapshots: '@types/bn.js@4.11.6': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/bn.js@5.1.1': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/bn.js@5.1.5': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/body-parser@1.19.2': dependencies: '@types/connect': 3.4.35 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/responselike': 1.0.0 '@types/chai@4.3.4': {} '@types/connect@3.4.35': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/cors@2.8.12': optional: true '@types/cors@2.8.17': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 + '@types/dom-screen-wake-lock@1.0.3': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 8.56.10 @@ -26827,14 +27851,14 @@ snapshots: '@types/express-serve-static-core@4.17.31': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 optional: true '@types/express-serve-static-core@4.17.33': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 @@ -26855,11 +27879,11 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/graceful-fs@4.1.6': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/hast@2.3.10': dependencies: @@ -26908,7 +27932,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 @@ -26918,7 +27942,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/lodash.values@4.3.7': dependencies: @@ -26948,7 +27972,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/node@10.12.18': {} @@ -26977,13 +28001,17 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@20.14.7': + dependencies: + undici-types: 5.26.5 + '@types/normalize-package-data@2.4.1': {} '@types/parse-json@4.0.0': {} '@types/pbkdf2@3.1.0': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/pino@7.0.5': dependencies: @@ -27008,11 +28036,15 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/secp256k1@4.0.3': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 + + '@types/secp256k1@4.0.6': + dependencies: + '@types/node': 20.14.7 '@types/seedrandom@3.0.1': {} @@ -27021,12 +28053,14 @@ snapshots: '@types/serve-static@1.15.0': dependencies: '@types/mime': 3.0.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/stack-utils@2.0.1': {} '@types/tough-cookie@4.0.5': {} + '@types/trusted-types@2.0.7': {} + '@types/underscore@1.11.4': {} '@types/unist@2.0.10': {} @@ -27057,15 +28091,15 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/ws@8.5.3': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/ws@8.5.4': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 '@types/yargs-parser@21.0.0': {} @@ -27139,21 +28173,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) '@typescript-eslint/visitor-keys': 7.13.1 eslint: 9.5.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - supports-color @@ -27240,7 +28274,7 @@ snapshots: '@typescript-eslint/types': 7.13.0 '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.13.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) eslint: 8.56.0 optionalDependencies: typescript: 5.4.5 @@ -27253,23 +28287,23 @@ snapshots: '@typescript-eslint/types': 7.13.1 '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) eslint: 8.56.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@typescript-eslint/scope-manager': 7.13.1 '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) eslint: 9.5.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - supports-color @@ -27339,15 +28373,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) - debug: 4.3.5 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + debug: 4.3.5(supports-color@5.5.0) eslint: 9.5.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - supports-color @@ -27355,7 +28389,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) '@typescript-eslint/utils': 7.7.1(eslint@8.56.0)(typescript@5.4.5) - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) eslint: 8.56.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -27389,17 +28423,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.2 - tsutils: 3.21.0(typescript@5.4.5) + tsutils: 3.21.0(typescript@5.5.2) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - supports-color @@ -27422,7 +28456,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.13.0 '@typescript-eslint/visitor-keys': 7.13.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -27437,7 +28471,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.13.1 '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -27448,11 +28482,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 + debug: 4.3.5(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -27463,6 +28512,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@7.7.1(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.5(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@5.49.0(eslint@8.56.0)(typescript@4.9.5)': dependencies: '@types/json-schema': 7.0.15 @@ -27493,14 +28557,14 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@5.62.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/utils@5.62.0(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) eslint: 9.5.0 eslint-scope: 5.1.1 semver: 7.6.2 @@ -27522,12 +28586,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@typescript-eslint/scope-manager': 7.13.1 '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) eslint: 9.5.0 transitivePeerDependencies: - supports-color @@ -27547,14 +28611,14 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.7.1(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.7.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.5.2) eslint: 9.5.0 semver: 7.6.2 transitivePeerDependencies: @@ -27656,8 +28720,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) '@rollup/pluginutils': 4.2.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + acorn: 8.12.0 + acorn-import-attributes: 1.9.5(acorn@8.12.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -27740,14 +28804,55 @@ snapshots: json-schema-to-ts: 1.6.4 ts-morph: 12.0.0 - '@wagmi/core@2.11.3(@types/react@18.3.3)(bufferutil@4.0.8)(immer@9.0.21)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + '@wagmi/connectors@5.0.16(mehtb7r3xxh3anmscqllj3vxmi)': + dependencies: + '@coinbase/wallet-sdk': 4.0.3 + '@metamask/sdk': 0.26.0(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + '@wagmi/core': 2.11.4(@tanstack/query-core@5.45.0)(@types/react@18.3.3)(bufferutil@4.0.8)(immer@9.0.21)(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@walletconnect/ethereum-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.3.1) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - react + - react-dom + - react-i18next + - react-native + - rollup + - supports-color + - uWebSockets.js + - utf-8-validate + - zod + + '@wagmi/core@2.11.4(@tanstack/query-core@5.45.0)(@types/react@18.3.3)(bufferutil@4.0.8)(immer@9.0.21)(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) - viem: 2.15.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) zustand: 4.4.1(@types/react@18.3.3)(immer@9.0.21)(react@18.3.1) optionalDependencies: - typescript: 5.4.5 + '@tanstack/query-core': 5.45.0 + typescript: 5.5.2 transitivePeerDependencies: - '@types/react' - bufferutil @@ -27823,10 +28928,81 @@ snapshots: - uWebSockets.js - utf-8-validate + '@walletconnect/core@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 + '@walletconnect/ethereum-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.3.1) + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/universal-provider': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - react + - uWebSockets.js + - utf-8-validate + '@walletconnect/events@1.0.1': dependencies: keyvaluestorage-interface: 1.0.0 @@ -27838,17 +29014,43 @@ snapshots: '@walletconnect/time': 1.0.2 tslib: 1.14.1 + '@walletconnect/heartbeat@1.2.2': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.5(encoding@0.1.13) + events: 3.3.0 + transitivePeerDependencies: + - encoding + '@walletconnect/jsonrpc-provider@1.0.13': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 tslib: 1.14.1 + '@walletconnect/jsonrpc-provider@1.0.14': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + '@walletconnect/jsonrpc-types@1.0.3': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + '@walletconnect/jsonrpc-types@1.0.4': + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 @@ -27887,6 +29089,28 @@ snapshots: - ioredis - uWebSockets.js + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.1 + unstorage: 1.10.2(idb-keyval@6.2.1) + optionalDependencies: + '@react-native-async-storage/async-storage': 1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 @@ -27894,6 +29118,31 @@ snapshots: '@walletconnect/mobile-registry@1.4.0': {} + '@walletconnect/modal-core@2.6.2(@types/react@18.3.3)(react@18.3.1)': + dependencies: + valtio: 1.11.2(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal-ui@2.6.2(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.3.1) + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal@2.6.2(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.3.1) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react + '@walletconnect/qrcode-modal@1.8.0': dependencies: '@walletconnect/browser-utils': 1.8.0 @@ -27952,6 +29201,36 @@ snapshots: - uWebSockets.js - utf-8-validate + '@walletconnect/sign-client@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + '@walletconnect/time@1.0.2': dependencies: tslib: 1.14.1 @@ -27982,6 +29261,60 @@ snapshots: - ioredis - uWebSockets.js + '@walletconnect/types@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + + '@walletconnect/universal-provider@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/utils': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + '@walletconnect/utils@2.12.2(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))': dependencies: '@stablelib/chacha20poly1305': 1.0.1 @@ -28014,6 +29347,38 @@ snapshots: - ioredis - uWebSockets.js + '@walletconnect/utils@2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.13.0(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + '@walletconnect/window-getters@1.0.0': {} '@walletconnect/window-getters@1.0.1': @@ -28107,15 +29472,15 @@ snapshots: '@wry/context@0.7.0': dependencies: - tslib: 2.5.0 + tslib: 2.6.3 '@wry/equality@0.5.3': dependencies: - tslib: 2.5.0 + tslib: 2.6.3 '@wry/trie@0.3.2': dependencies: - tslib: 2.5.0 + tslib: 2.6.3 '@xpla/xpla.js@0.2.3': dependencies: @@ -28189,9 +29554,9 @@ snapshots: optionalDependencies: zod: 3.23.8 - abitype@0.9.8(typescript@5.4.5)(zod@3.23.8): + abitype@0.9.8(typescript@5.5.2)(zod@3.23.8): optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 zod: 3.23.8 abitype@1.0.0(typescript@5.4.5)(zod@3.23.8): @@ -28199,6 +29564,11 @@ snapshots: typescript: 5.4.5 zod: 3.23.8 + abitype@1.0.0(typescript@5.5.2)(zod@3.23.8): + optionalDependencies: + typescript: 5.5.2 + zod: 3.23.8 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -28262,16 +29632,16 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 acorn-walk: 8.2.0 acorn-import-assertions@1.9.0(acorn@8.12.0): dependencies: acorn: 8.12.0 - acorn-import-attributes@1.9.5(acorn@8.11.3): + acorn-import-attributes@1.9.5(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 acorn-jsx@5.3.2(acorn@8.11.3): dependencies: @@ -28311,7 +29681,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -29023,12 +30393,30 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-styled-components@2.1.4(@babel/core@7.24.7)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0): + dependencies: + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.0): dependencies: '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.0) transitivePeerDependencies: - '@babel/core' + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.7): + dependencies: + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - '@babel/core' + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -29413,7 +30801,7 @@ snapshots: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.4 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 @@ -29461,6 +30849,8 @@ snapshots: camelcase@6.3.0: {} + camelize@1.0.1: {} + caniuse-lite@1.0.30001591: {} caniuse-lite@1.0.30001632: {} @@ -29640,7 +31030,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -29772,6 +31162,8 @@ snapshots: clone@2.1.2: {} + clsx@1.2.1: {} + clsx@2.1.1: {} cmd-shim@5.0.0: @@ -29934,6 +31326,25 @@ snapshots: transitivePeerDependencies: - supports-color + connectkit@1.8.2(m5fu6jwi7nvuqo5lp7m3jyfehy): + dependencies: + '@tanstack/react-query': 5.45.1(react@18.3.1) + buffer: 6.0.3 + detect-browser: 5.3.0 + framer-motion: 6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + qrcode: 1.5.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-transition-state: 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-use-measure: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + resize-observer-polyfill: 1.5.1 + styled-components: 5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + viem: 2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + wagmi: 2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + transitivePeerDependencies: + - '@babel/core' + - react-is + consola@3.2.3: {} console-control-strings@1.1.0: {} @@ -30086,14 +31497,14 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.4.5): + cosmiconfig@8.3.6(typescript@5.5.2): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 cosmjs-types@0.7.2: dependencies: @@ -30202,13 +31613,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -30217,13 +31628,28 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): + create-jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -30232,13 +31658,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -30253,7 +31679,7 @@ snapshots: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(typescript@4.9.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -30262,9 +31688,9 @@ snapshots: - supports-color - ts-node - create-lite-jest-runner@1.1.0(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))): + create-lite-jest-runner@1.1.0(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))): dependencies: - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) p-limit: 4.0.0 create-require@1.1.1: {} @@ -30330,6 +31756,10 @@ snapshots: crypto-js@4.2.0: {} + cryptocurrency-icons@0.18.1: {} + + css-color-keywords@1.0.0: {} + css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -30346,6 +31776,12 @@ snapshots: domutils: 3.0.1 nth-check: 2.1.1 + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + css-tree@1.1.3: dependencies: mdn-data: 2.0.14 @@ -30436,6 +31872,10 @@ snapshots: dataloader@2.1.0: optional: true + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.24.7 + dateformat@3.0.3: {} dateformat@4.6.3: {} @@ -30447,6 +31887,8 @@ snapshots: mimic-fn: 3.1.0 optional: true + debounce@1.2.1: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -30482,9 +31924,11 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.5: + debug@4.3.5(supports-color@5.5.0): dependencies: ms: 2.1.2 + optionalDependencies: + supports-color: 5.5.0 debuglog@1.0.1: {} @@ -30665,7 +32109,7 @@ snapshots: docker-modem@3.0.6: dependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.11.0 @@ -30749,7 +32193,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.3 dot-prop@5.3.0: dependencies: @@ -30805,6 +32249,12 @@ snapshots: optionalDependencies: secp256k1: 3.7.1 + eciesjs@0.3.19: + dependencies: + '@types/secp256k1': 4.0.6 + futoin-hkdf: 1.5.3 + secp256k1: 5.0.0 + edge-runtime@2.5.9: dependencies: '@edge-runtime/format': 2.2.1 @@ -30864,6 +32314,8 @@ snapshots: highlight.js: 11.0.1 lowlight: 2.0.1 + encode-utf8@1.0.3: {} + encodeurl@1.0.2: {} encoding-down@6.3.0: @@ -30895,7 +32347,7 @@ snapshots: engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.0.0 @@ -31245,7 +32697,7 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.13.0(eslint@8.56.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): dependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) enhanced-resolve: 5.17.0 eslint: 8.56.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.0(eslint@8.56.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.13.0(eslint@8.56.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0))(eslint@8.56.0) @@ -31271,11 +32723,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -31315,7 +32767,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -31325,7 +32777,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.5.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -31336,7 +32788,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -31348,13 +32800,13 @@ snapshots: eslint: 9.5.0 requireindex: 1.2.0 - eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2): dependencies: - '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) transitivePeerDependencies: - supports-color - typescript @@ -31474,10 +32926,10 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.11 - eslint-plugin-storybook@0.8.0(eslint@9.5.0)(typescript@5.4.5): + eslint-plugin-storybook@0.8.0(eslint@9.5.0)(typescript@5.5.2): dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 requireindex: 1.2.0 ts-dedent: 2.2.0 @@ -31485,15 +32937,15 @@ snapshots: - supports-color - typescript - eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))): + eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))): dependencies: fast-glob: 3.3.2 postcss: 8.4.38 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) - eslint-plugin-testing-library@6.2.2(eslint@9.5.0)(typescript@5.4.5): + eslint-plugin-testing-library@6.2.2(eslint@9.5.0)(typescript@5.5.2): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 transitivePeerDependencies: - supports-color @@ -31575,7 +33027,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -31661,7 +33113,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 @@ -31759,6 +33211,16 @@ snapshots: - '@babel/core' - supports-color + eth-block-tracker@7.1.0: + dependencies: + '@metamask/eth-json-rpc-provider': 1.0.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 5.0.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + transitivePeerDependencies: + - supports-color + eth-crypto@2.6.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): dependencies: '@babel/runtime': 7.20.13 @@ -31802,6 +33264,14 @@ snapshots: transitivePeerDependencies: - encoding + eth-json-rpc-filters@6.0.1: + dependencies: + '@metamask/safe-event-emitter': 3.1.1 + async-mutex: 0.2.6 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + eth-json-rpc-infura@5.1.0(encoding@0.1.13): dependencies: eth-json-rpc-middleware: 6.0.0(encoding@0.1.13) @@ -32111,6 +33581,8 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter2@6.4.9: {} + eventemitter3@4.0.4: {} eventemitter3@4.0.7: {} @@ -32228,6 +33700,11 @@ snapshots: extend@3.0.2: {} + extension-port-stream@3.0.0: + dependencies: + readable-stream: 4.5.2 + webextension-polyfill: 0.10.0 + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -32427,7 +33904,7 @@ snapshots: follow-redirects@1.15.6(debug@4.3.5): optionalDependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) optional: true for-each@0.3.3: @@ -32493,6 +33970,23 @@ snapshots: fraction.js@4.3.7: {} + framer-motion@6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@motionone/dom': 10.12.0 + framesync: 6.0.1 + hey-listen: 1.0.8 + popmotion: 11.0.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + style-value-types: 5.0.0 + tslib: 2.6.3 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + + framesync@6.0.1: + dependencies: + tslib: 2.6.3 + fresh@0.5.2: {} fs-constants@1.0.0: {} @@ -32608,6 +34102,8 @@ snapshots: functions-have-names@1.2.3: {} + futoin-hkdf@1.5.3: {} + ganache@7.7.3: dependencies: '@types/bn.js': 5.1.1 @@ -32908,18 +34404,18 @@ snapshots: graphql-tag@2.12.6(graphql@15.8.0): dependencies: graphql: 15.8.0 - tslib: 2.5.0 + tslib: 2.6.3 optional: true graphql-tag@2.12.6(graphql@16.6.0): dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.3 graphql-tag@2.12.6(graphql@16.8.2): dependencies: graphql: 16.8.2 - tslib: 2.5.0 + tslib: 2.6.3 graphql@0.11.7: dependencies: @@ -32973,7 +34469,7 @@ snapshots: hard-rejection@2.1.0: {} - hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10): + hardhat@2.12.6(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5))(typescript@4.9.5)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -33026,7 +34522,7 @@ snapshots: uuid: 8.3.2 ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - ts-node: 10.9.1(@types/node@20.14.2)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.14.7)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - bufferutil @@ -33143,6 +34639,8 @@ snapshots: dependencies: source-map: 0.7.4 + hey-listen@1.0.8: {} + hi-base32@0.5.1: {} highlight.js@10.7.3: {} @@ -33185,6 +34683,10 @@ snapshots: html-escaper@2.0.2: {} + html-parse-stringify@3.0.1: + dependencies: + void-elements: 3.1.0 + htmlparser2@8.0.1: dependencies: domelementtype: 2.3.0 @@ -33237,7 +34739,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -33245,7 +34747,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -33272,7 +34774,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -33286,6 +34788,14 @@ snapshots: dependencies: ms: 2.1.3 + i18next-browser-languagedetector@7.1.0: + dependencies: + '@babel/runtime': 7.24.7 + + i18next@22.5.1: + dependencies: + '@babel/runtime': 7.24.7 + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -33667,9 +35177,9 @@ snapshots: dependencies: ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) - isomorphic-ws@4.0.1(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + isomorphic-ws@4.0.1(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): dependencies: - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) isomorphic-ws@5.0.0(ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: @@ -33679,6 +35189,10 @@ snapshots: dependencies: ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): + dependencies: + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + isows@1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -33715,7 +35229,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -33808,7 +35322,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -33833,7 +35347,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -33950,16 +35464,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -33969,16 +35483,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): + jest-cli@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + create-jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -33988,16 +35502,35 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -34016,7 +35549,7 @@ snapshots: create-jest: 29.7.0(ts-node@10.9.2(typescript@4.9.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(typescript@4.9.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -34184,161 +35717,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.1(@types/node@20.14.2)(typescript@5.4.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@16.18.60)(typescript@4.9.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@16.18.60)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@18.11.18)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@18.11.18)(typescript@5.4.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@18.19.34)(typescript@4.9.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@18.19.34)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): dependencies: '@babel/core': 7.24.7 @@ -34365,43 +35743,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@20.14.2)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.2 - ts-node: 10.9.2(@types/node@20.14.2)(typescript@5.4.5) + ts-node: 10.9.2(@types/node@20.14.2)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(typescript@4.9.5)): + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)): dependencies: '@babel/core': 7.24.7 '@jest/test-sequencer': 29.7.0 @@ -34426,7 +35773,255 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 + ts-node: 10.9.1(@types/node@20.14.7)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@16.18.60)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@16.18.60)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.11.18)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@18.11.18)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.11.18)(typescript@5.4.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@18.11.18)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@18.19.34)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@18.19.34)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@20.14.2)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@20.14.7)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 + ts-node: 10.9.2(@types/node@20.14.7)(typescript@5.5.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(typescript@4.9.5)): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.7 ts-node: 10.9.2(@types/node@18.19.34)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros @@ -34475,7 +36070,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -34491,7 +36086,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -34505,7 +36100,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -34514,7 +36109,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -34526,7 +36121,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.14.2 + '@types/node': 20.14.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -34543,7 +36138,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 20.14.2 + '@types/node': 20.14.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -34561,7 +36156,7 @@ snapshots: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -34628,12 +36223,12 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -34688,14 +36283,14 @@ snapshots: resolve.exports: 2.0.2 slash: 3.0.0 - jest-runner-eslint@2.2.0(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5))): + jest-runner-eslint@2.2.0(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2))): dependencies: chalk: 4.1.2 cosmiconfig: 7.1.0 create-jest-runner: 0.11.2 dot-prop: 6.0.1 eslint: 9.5.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) transitivePeerDependencies: - '@jest/test-result' - jest-runner @@ -34707,7 +36302,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -34736,7 +36331,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -34765,7 +36360,7 @@ snapshots: '@jest/transform': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 - cjs-module-lexer: 1.2.2 + cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 execa: 5.1.1 glob: 7.2.3 @@ -34791,7 +36386,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -34811,7 +36406,7 @@ snapshots: jest-serializer@27.5.1: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 graceful-fs: 4.2.11 jest-snapshot@27.5.1: @@ -34819,7 +36414,7 @@ snapshots: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 @@ -34869,7 +36464,7 @@ snapshots: jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -34878,7 +36473,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.10 @@ -34906,7 +36501,7 @@ snapshots: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -34916,7 +36511,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -34925,19 +36520,19 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@28.1.3: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -35002,36 +36597,48 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)): + jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + jest-cli: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -35147,12 +36754,37 @@ snapshots: transitivePeerDependencies: - supports-color + jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.7)): + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/preset-flow': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/register': 7.24.6(@babel/core@7.24.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) + chalk: 4.1.2 + flow-parser: 0.237.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + jscrypto@1.0.3: {} jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: abab: 2.0.6 - acorn: 8.11.3 + acorn: 8.12.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -35209,7 +36841,7 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -35348,10 +36980,6 @@ snapshots: node-gyp-build: 4.6.0 readable-stream: 3.6.2 - keyv@4.5.2: - dependencies: - json-buffer: 3.0.1 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -35613,6 +37241,22 @@ snapshots: transitivePeerDependencies: - uWebSockets.js + lit-element@3.3.3: + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + + lit-html@2.8.0: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@2.8.0: + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + load-json-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -36060,7 +37704,7 @@ snapshots: metro-source-map@0.80.9: dependencies: - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 invariant: 2.2.4 metro-symbolicate: 0.80.9 @@ -36087,7 +37731,7 @@ snapshots: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -36119,7 +37763,7 @@ snapshots: '@babel/generator': 7.24.7 '@babel/parser': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 + '@babel/traverse': 7.24.7(supports-color@5.5.0) '@babel/types': 7.24.7 accepts: 1.3.8 chalk: 4.1.2 @@ -36358,7 +38002,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -36520,11 +38164,11 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8): + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -36550,7 +38194,7 @@ snapshots: mlly@1.6.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 pkg-types: 1.1.0 ufo: 1.5.3 @@ -36670,6 +38314,15 @@ snapshots: moment@2.29.4: {} + motion@10.16.2: + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + '@motionone/vue': 10.16.4 + mri@1.2.0: {} ms@2.0.0: {} @@ -36843,9 +38496,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.3(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.3 + '@next/env': 14.2.4 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001632 @@ -36855,15 +38508,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.24.7)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.3 - '@next/swc-darwin-x64': 14.2.3 - '@next/swc-linux-arm64-gnu': 14.2.3 - '@next/swc-linux-arm64-musl': 14.2.3 - '@next/swc-linux-x64-gnu': 14.2.3 - '@next/swc-linux-x64-musl': 14.2.3 - '@next/swc-win32-arm64-msvc': 14.2.3 - '@next/swc-win32-ia32-msvc': 14.2.3 - '@next/swc-win32-x64-msvc': 14.2.3 + '@next/swc-darwin-arm64': 14.2.4 + '@next/swc-darwin-x64': 14.2.4 + '@next/swc-linux-arm64-gnu': 14.2.4 + '@next/swc-linux-arm64-musl': 14.2.4 + '@next/swc-linux-x64-gnu': 14.2.4 + '@next/swc-linux-x64-musl': 14.2.4 + '@next/swc-win32-arm64-msvc': 14.2.4 + '@next/swc-win32-ia32-msvc': 14.2.4 + '@next/swc-win32-x64-msvc': 14.2.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -37145,6 +38798,12 @@ snapshots: ob1@0.80.9: {} + obj-multiplex@1.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + readable-stream: 2.3.8 + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -37744,6 +39403,17 @@ snapshots: pngjs@3.4.0: {} + pngjs@5.0.0: {} + + pony-cause@2.1.11: {} + + popmotion@11.0.3: + dependencies: + framesync: 6.0.1 + hey-listen: 1.0.8 + style-value-types: 5.0.0 + tslib: 2.6.3 + portfinder@1.0.32: dependencies: async: 2.6.4 @@ -37786,13 +39456,13 @@ snapshots: postcss: 8.4.38 ts-node: 10.9.2(@types/node@18.11.18)(typescript@5.4.5) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.14.2)(typescript@5.4.5) + ts-node: 10.9.2(@types/node@20.14.7)(typescript@5.5.2) postcss-nested@6.0.0(postcss@8.4.38): dependencies: @@ -37989,6 +39659,8 @@ snapshots: spawn-sync: 1.0.15 which: 1.2.14 + preact@10.22.0: {} + preact@10.4.1: {} prebuild-install@7.1.1: @@ -38128,7 +39800,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.14.2 + '@types/node': 20.14.7 long: 4.0.0 protobufjs@7.2.6: @@ -38143,7 +39815,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.2 + '@types/node': 20.14.7 long: 5.2.3 protocols@2.0.1: {} @@ -38153,6 +39825,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-compare@2.5.1: {} + proxy-from-env@1.1.0: {} prr@1.0.1: {} @@ -38190,8 +39864,16 @@ snapshots: q@1.5.1: {} + qr-code-styling@1.6.0-rc.1: + dependencies: + qrcode-generator: 1.4.4 + qr.js@0.0.0: {} + qrcode-generator@1.4.4: {} + + qrcode-terminal-nooctal@0.12.1: {} + qrcode.react@1.0.1(react@16.13.1): dependencies: loose-envify: 1.4.0 @@ -38209,6 +39891,13 @@ snapshots: pngjs: 3.4.0 yargs: 13.3.2 + qrcode@1.5.3: + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + qs@6.11.0: dependencies: side-channel: 1.0.6 @@ -38409,6 +40098,16 @@ snapshots: transitivePeerDependencies: - csstype + react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.7 + html-parse-stringify: 3.0.1 + i18next: 22.5.1 + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + react-is@16.13.1: {} react-is@17.0.2: {} @@ -38426,6 +40125,13 @@ snapshots: react-lifecycles-compat: 3.0.4 warning: 4.0.3 + react-native-webview@11.26.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1): + dependencies: + escape-string-regexp: 2.0.0 + invariant: 2.2.4 + react: 18.3.1 + react-native: 0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -38476,6 +40182,56 @@ snapshots: - supports-color - utf-8-validate + react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native-community/cli': 13.6.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native-community/cli-platform-android': 13.6.8(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 13.6.8(encoding@0.1.13) + '@react-native/assets-registry': 0.74.84 + '@react-native/codegen': 0.74.84(@babel/preset-env@7.24.7(@babel/core@7.24.7)) + '@react-native/community-cli-plugin': 0.74.84(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@react-native/gradle-plugin': 0.74.84 + '@react-native/js-polyfills': 0.74.84 + '@react-native/normalize-colors': 0.74.84 + '@react-native/virtualized-lists': 0.74.84(@types/react@18.3.3)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + base64-js: 1.5.1 + chalk: 4.1.2 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.3.1 + react-devtools-core: 5.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@18.3.1) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + whatwg-fetch: 3.6.20 + ws: 6.2.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + yargs: 17.7.2 + optionalDependencies: + '@types/react': 18.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + react-qr-reader@2.2.1(react-dom@16.13.1(react@16.13.1))(react@16.13.1): dependencies: jsqr: 1.4.0 @@ -38492,6 +40248,17 @@ snapshots: react: 18.3.1 react-is: 18.3.1 + react-transition-state@1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-use-measure@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + debounce: 1.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react@16.13.1: dependencies: loose-envify: 1.4.0 @@ -38818,6 +40585,8 @@ snapshots: reselect@4.1.7: {} + resize-observer-polyfill@1.5.1: {} + resolve-alpn@1.2.1: {} resolve-cwd@3.0.0: @@ -38903,6 +40672,13 @@ snapshots: dependencies: bn.js: 5.2.1 + rollup-plugin-visualizer@5.12.0: + dependencies: + open: 8.4.0 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + rpc-websockets@7.5.1: dependencies: '@babel/runtime': 7.23.9 @@ -39320,7 +41096,7 @@ snapshots: socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -39331,14 +41107,14 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.1 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.5(supports-color@5.5.0) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -39720,6 +41496,29 @@ snapshots: dependencies: inline-style-parser: 0.2.3 + style-value-types@5.0.0: + dependencies: + hey-listen: 1.0.8 + tslib: 2.6.3 + + styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1): + dependencies: + '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) + '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.2 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.24.7)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + styled-jsx@5.1.1(@babel/core@7.24.0)(react@18.3.1): dependencies: client-only: 0.0.1 @@ -39790,7 +41589,7 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.0 + picocolors: 1.0.1 stable: 0.1.8 svgo@3.3.2: @@ -39906,7 +41705,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)): + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -39925,7 +41724,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.11 resolve: 1.22.8 @@ -40213,13 +42012,17 @@ snapshots: dependencies: typescript: 5.4.5 + ts-api-utils@1.3.0(typescript@5.5.2): + dependencies: + typescript: 5.5.2 + ts-dedent@2.2.0: {} ts-interface-checker@0.1.13: {} ts-invariant@0.10.3: dependencies: - tslib: 2.5.0 + tslib: 2.6.3 ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@16.18.60)(ts-node@10.9.2(@types/node@16.18.60)(typescript@4.9.5)))(typescript@4.9.5): dependencies: @@ -40289,45 +42092,45 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.0 - typescript: 5.4.5 + typescript: 4.9.5 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.24.7 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@4.9.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.0 - typescript: 4.9.5 + typescript: 5.4.5 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.24.7 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -40357,17 +42160,17 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.2 - typescript: 5.4.5 + typescript: 5.5.2 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.24.7 @@ -40427,14 +42230,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.1(@types/node@20.14.2)(typescript@4.9.5): + ts-node@10.9.1(@types/node@20.14.7)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 acorn: 8.11.3 acorn-walk: 8.2.0 arg: 4.1.3 @@ -40445,14 +42248,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.1(@types/node@20.14.2)(typescript@5.4.5): + ts-node@10.9.1(@types/node@20.14.7)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 acorn: 8.11.3 acorn-walk: 8.2.0 arg: 4.1.3 @@ -40594,14 +42397,14 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5): + ts-node@10.9.2(@types/node@20.14.7)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.14.2 + '@types/node': 20.14.7 acorn: 8.11.3 acorn-walk: 8.2.0 arg: 4.1.3 @@ -40612,6 +42415,25 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.14.7 + acorn: 8.11.3 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@7.0.1: dependencies: arrify: 1.0.1 @@ -40658,10 +42480,10 @@ snapshots: tslib: 1.14.1 typescript: 4.9.5 - tsutils@3.21.0(typescript@5.4.5): + tsutils@3.21.0(typescript@5.5.2): dependencies: tslib: 1.14.1 - typescript: 5.4.5 + typescript: 5.5.2 tunnel-agent@0.6.0: dependencies: @@ -40764,14 +42586,14 @@ snapshots: dependencies: typescript-logic: 0.0.0 - typescript-eslint@7.13.1(eslint@9.5.0)(typescript@5.4.5): + typescript-eslint@7.13.1(eslint@9.5.0)(typescript@5.5.2): dependencies: - '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - supports-color @@ -40787,6 +42609,8 @@ snapshots: typescript@5.4.5: {} + typescript@5.5.2: {} + typical@4.0.0: {} typical@7.1.1: {} @@ -40800,6 +42624,10 @@ snapshots: uid-promise@1.0.0: {} + uint8arrays@3.1.0: + dependencies: + multiformats: 9.9.0 + uint8arrays@3.1.1: dependencies: multiformats: 9.9.0 @@ -41012,6 +42840,10 @@ snapshots: node-gyp-build: 4.6.0 optional: true + utf-8-validate@6.0.4: + dependencies: + node-gyp-build: 4.6.0 + utf8@3.0.0: {} util-deprecate@1.0.2: {} @@ -41070,6 +42902,14 @@ snapshots: dependencies: builtins: 5.0.1 + valtio@1.11.2(@types/react@18.3.3)(react@18.3.1): + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + react: 18.3.1 + value-or-promise@1.0.11: optional: true @@ -41117,35 +42957,35 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8): + viem@1.21.4(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.5)(zod@3.23.8) + abitype: 0.9.8(typescript@5.5.2)(zod@3.23.8) isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.15.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.23.8): + viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.5)(zod@3.23.8) + abitype: 1.0.0(typescript@5.5.2)(zod@3.23.8) isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.2 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -41168,10 +43008,29 @@ snapshots: - utf-8-validate - zod + viem@2.8.13(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.4)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.5)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + vlq@1.0.1: {} vlq@2.0.4: {} + void-elements@3.1.0: {} + vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} @@ -41191,6 +43050,44 @@ snapshots: dependencies: xml-name-validator: 4.0.0 + wagmi@2.10.4(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@tanstack/query-core@5.45.0)(@tanstack/react-query@5.45.1(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): + dependencies: + '@tanstack/react-query': 5.45.1(react@18.3.1) + '@wagmi/connectors': 5.0.16(mehtb7r3xxh3anmscqllj3vxmi) + '@wagmi/core': 2.11.4(@tanstack/query-core@5.45.0)(@types/react@18.3.3)(bufferutil@4.0.8)(immer@9.0.21)(react@18.3.1)(typescript@5.5.2)(utf-8-validate@5.0.10)(viem@2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + react: 18.3.1 + use-sync-external-store: 1.2.0(react@18.3.1) + viem: 2.15.1(bufferutil@4.0.8)(typescript@5.5.2)(utf-8-validate@5.0.10)(zod@3.23.8) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - immer + - ioredis + - react-dom + - react-i18next + - react-native + - rollup + - supports-color + - uWebSockets.js + - utf-8-validate + - zod + walk-up-path@1.0.0: {} walker@1.0.8: @@ -42149,6 +44046,8 @@ snapshots: - utf-8-validate - zod + webextension-polyfill@0.10.0: {} + webidl-conversions@3.0.1: {} webidl-conversions@5.0.0: {} @@ -42463,11 +44362,21 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.4 + ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 From c73baf37fb1b547dba0b386aa1ee00ef60cd2fa6 Mon Sep 17 00:00:00 2001 From: Connor Prussin Date: Mon, 24 Jun 2024 12:57:38 -0700 Subject: [PATCH 2/2] Implement PR feedback --- apps/api-reference/src/apis/evm/common.ts | 22 +++++---- .../src/apis/evm/get-update-fee.tsx | 2 +- .../evm/parse-price-feed-updates-unique.tsx | 8 ++-- .../src/apis/evm/parse-price-feed-updates.tsx | 8 ++-- .../evm/update-price-feeds-if-necessary.tsx | 6 +-- .../src/apis/evm/update-price-feeds.tsx | 4 +- .../src/components/Button/index.tsx | 45 ++++++++++++++++--- .../src/components/ErrorTooltip/index.tsx | 23 ++++++++++ .../src/components/EvmApi/index.tsx | 33 ++++++++++---- .../src/components/Home/index.tsx | 5 ++- .../src/components/Input/index.tsx | 16 ++----- apps/api-reference/tailwind.config.ts | 3 ++ 12 files changed, 123 insertions(+), 52 deletions(-) create mode 100644 apps/api-reference/src/components/ErrorTooltip/index.tsx diff --git a/apps/api-reference/src/apis/evm/common.ts b/apps/api-reference/src/apis/evm/common.ts index e41839a6cb..239a4bd577 100644 --- a/apps/api-reference/src/apis/evm/common.ts +++ b/apps/api-reference/src/apis/evm/common.ts @@ -35,21 +35,27 @@ export const ETHUSD = const HERMES_URL = "https://hermes.pyth.network"; export const getLatestPriceFeed = async (feedId: string) => { - const url = new URL("/api/latest_price_feeds", HERMES_URL); + const url = new URL("/v2/updates/price/latest", HERMES_URL); url.searchParams.set("ids[]", feedId); url.searchParams.set("target_chain", "evm"); url.searchParams.set("binary", "true"); return safeFetch(priceFeedSchema, url); }; -const priceFeedSchema = singletonArray( - z.object({ - vaa: z.string().transform((value) => toZeroXPrefixedHex(value)), - price: z.object({ - publish_time: z.number(), - }), +const priceFeedSchema = z.object({ + binary: z.object({ + data: singletonArray(z.string()).transform((value) => + toZeroXPrefixedHex(value), + ), }), -); + parsed: singletonArray( + z.object({ + price: z.object({ + publish_time: z.number(), + }), + }), + ), +}); const toZeroXPrefixedHex = (value: string) => `0x${Buffer.from(value, "base64").toString("hex")}`; diff --git a/apps/api-reference/src/apis/evm/get-update-fee.tsx b/apps/api-reference/src/apis/evm/get-update-fee.tsx index 01e5a0c2fd..337dfe9ed6 100644 --- a/apps/api-reference/src/apis/evm/get-update-fee.tsx +++ b/apps/api-reference/src/apis/evm/get-update-fee.tsx @@ -63,5 +63,5 @@ const [feeAmount] = await contract.getUpdateFee(updateData); const getParams = async (feedId: string) => { const feed = await getLatestPriceFeed(feedId); - return { updateData: feed.vaa }; + return { updateData: feed.binary.data }; }; diff --git a/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx b/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx index f0b86445c5..70d501358d 100644 --- a/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx +++ b/apps/api-reference/src/apis/evm/parse-price-feed-updates-unique.tsx @@ -115,15 +115,15 @@ const getParams = async ( }, ) => { const feed = await getLatestPriceFeed(priceId); - const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + const fee = await ctx.readContract("getUpdateFee", [[feed.binary.data]]); if (typeof fee !== "bigint") { throw new TypeError("Invalid fee"); } return { - updateData: feed.vaa, + updateData: feed.binary.data, priceId, - minPublishTime: (feed.price.publish_time - 5).toString(), - maxPublishTime: (feed.price.publish_time + 5).toString(), + minPublishTime: (feed.parsed.price.publish_time - 5).toString(), + maxPublishTime: (feed.parsed.price.publish_time + 5).toString(), fee: fee.toString(), }; }; diff --git a/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx b/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx index eb54af8562..b01ea43818 100644 --- a/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx +++ b/apps/api-reference/src/apis/evm/parse-price-feed-updates.tsx @@ -113,15 +113,15 @@ const getParams = async ( }, ) => { const feed = await getLatestPriceFeed(priceId); - const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + const fee = await ctx.readContract("getUpdateFee", [[feed.binary.data]]); if (typeof fee !== "bigint") { throw new TypeError("Invalid fee"); } return { - updateData: feed.vaa, + updateData: feed.binary.data, priceId, - minPublishTime: (feed.price.publish_time - 5).toString(), - maxPublishTime: (feed.price.publish_time + 5).toString(), + minPublishTime: (feed.parsed.price.publish_time - 5).toString(), + maxPublishTime: (feed.parsed.price.publish_time + 5).toString(), fee: fee.toString(), }; }; diff --git a/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx b/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx index 1750f49aa6..f3e375872b 100644 --- a/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx +++ b/apps/api-reference/src/apis/evm/update-price-feeds-if-necessary.tsx @@ -108,14 +108,14 @@ const getParams = async ( }, ) => { const feed = await getLatestPriceFeed(priceId); - const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + const fee = await ctx.readContract("getUpdateFee", [[feed.binary.data]]); if (typeof fee !== "bigint") { throw new TypeError("Invalid fee"); } return { - updateData: feed.vaa, + updateData: feed.binary.data, priceId, - publishTime: feed.price.publish_time.toString(), + publishTime: feed.parsed.price.publish_time.toString(), fee: fee.toString(), }; }; diff --git a/apps/api-reference/src/apis/evm/update-price-feeds.tsx b/apps/api-reference/src/apis/evm/update-price-feeds.tsx index 1a1e4e3382..15537678d6 100644 --- a/apps/api-reference/src/apis/evm/update-price-feeds.tsx +++ b/apps/api-reference/src/apis/evm/update-price-feeds.tsx @@ -82,12 +82,12 @@ const getParams = async ( }, ) => { const feed = await getLatestPriceFeed(feedId); - const fee = await ctx.readContract("getUpdateFee", [[feed.vaa]]); + const fee = await ctx.readContract("getUpdateFee", [[feed.binary.data]]); if (typeof fee !== "bigint") { throw new TypeError("Invalid fee"); } return { - updateData: feed.vaa, + updateData: feed.binary.data, fee: fee.toString(), }; }; diff --git a/apps/api-reference/src/components/Button/index.tsx b/apps/api-reference/src/components/Button/index.tsx index 14c9177ef6..4e8c8e78ee 100644 --- a/apps/api-reference/src/components/Button/index.tsx +++ b/apps/api-reference/src/components/Button/index.tsx @@ -1,9 +1,19 @@ +"use client"; + import clsx from "clsx"; -import type { ComponentProps, ElementType } from "react"; +import { + type ComponentProps, + type ElementType, + type MouseEvent, + useState, + useCallback, + type CSSProperties, +} from "react"; type ButtonProps = Omit, "as"> & { as?: T; loading?: boolean | undefined; + gradient?: boolean | undefined; }; export const Button = ({ @@ -11,24 +21,45 @@ export const Button = ({ className, loading, disabled, + gradient, ...props }: ButtonProps) => { const Component = as ?? "button"; + const [mouse, setMouse] = useState({ x: 0, y: 0 }); + + const updateMouse = useCallback((e: MouseEvent) => { + setMouse({ + x: e.pageX - e.currentTarget.offsetLeft, + y: e.pageY - e.currentTarget.offsetTop, + }); + }, []); + return ( ( + + + + +
{children}
+
+
+); diff --git a/apps/api-reference/src/components/EvmApi/index.tsx b/apps/api-reference/src/components/EvmApi/index.tsx index b9ef4f3dda..bf51787120 100644 --- a/apps/api-reference/src/components/EvmApi/index.tsx +++ b/apps/api-reference/src/components/EvmApi/index.tsx @@ -9,6 +9,7 @@ import { Field, Label, } from "@headlessui/react"; +import { ArrowPathIcon } from "@heroicons/react/24/outline"; import PythAbi from "@pythnetwork/pyth-sdk-solidity/abis/IPyth.json"; import PythErrorsAbi from "@pythnetwork/pyth-sdk-solidity/abis/PythErrors.json"; import { ChainIcon } from "connectkit"; @@ -32,6 +33,7 @@ import { ParameterInput } from "./parameter-input"; import { type EvmApiType, RunButton } from "./run-button"; import { useIsMounted } from "../../use-is-mounted"; import { type SupportedLanguage, Code } from "../Code"; +import { ErrorTooltip } from "../ErrorTooltip"; import { InlineLink } from "../InlineLink"; import { Select } from "../Select"; @@ -258,9 +260,12 @@ const Example = ({ setParamValues, }: ExampleProps) => { const config = useConfig(); + const [error, setError] = useState(undefined); + const [loading, setLoading] = useState(false); const updateValues = useCallback(() => { if (typeof example.parameters === "function") { + setError(undefined); const address = getContractAddress(config.state.chainId); if (!address) { throw new Error( @@ -272,12 +277,18 @@ const Example = ({ readContract(config, { abi, address, functionName, args }), }); if (params instanceof Promise) { + setLoading(true); params .then((paramsResolved) => { setParamValues(paramsResolved); }) .catch(() => { - /* TODO add some UI when this errors */ + setError( + "An error occurred while fetching data for this example, please try again", + ); + }) + .finally(() => { + setLoading(false); }); } else { setParamValues(params); @@ -289,13 +300,17 @@ const Example = ({ const Icon = example.icon; return ( - - {Icon && } - {example.name} - +
+ + {Icon && } + {example.name} + + {error && {error}} + {loading && } +
); }; diff --git a/apps/api-reference/src/components/Home/index.tsx b/apps/api-reference/src/components/Home/index.tsx index 0f3a3ca3b0..b0c0d22d55 100644 --- a/apps/api-reference/src/components/Home/index.tsx +++ b/apps/api-reference/src/components/Home/index.tsx @@ -9,7 +9,7 @@ import { MaxWidth } from "../MaxWidth"; export const Home = () => (
-

+

Pyth Network API Reference

@@ -62,7 +62,8 @@ const ProductLink = ({