diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1e02be7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c4eae26 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +WALLET_CONNECT_PROJECT_ID=b7b3d81af86feb2af54461f26b665ee4 +SQUID_API_URL=https://squid.subsquid.io/subsquid-network-indexer/v/v7/graphql diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..18115e8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +.yarn +build +dist diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..ee0bbf9 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,83 @@ +module.exports = { + root: true, + env: { + browser: true, + es2020: true, + }, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + plugins: ['@typescript-eslint', 'react', 'prettier'], + extends: [ + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react/recommended', + 'prettier', + 'plugin:react-hooks/recommended', + ], + settings: { + react: { + version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use + }, + 'import/resolver': { + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + }, + rules: { + quotes: ['error', 'single', { allowTemplateLiterals: true }], + 'prettier/prettier': 'error', + 'react/no-unescaped-entities': 'off', + 'react/jsx-curly-brace-presence': ['error', { props: "never", children: "never" }], + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/no-unsafe-declaration-merging': 'off', + 'import/order': [ + 'error', + { + pathGroups: [ + { + pattern: 'react', + group: 'external', + position: 'before', + }, + { + pattern: + '{@{api,apps,components,hooks,contexts,layouts,pages,icons,models,network}/**,@apps}', + group: 'internal', + position: 'after', + }, + ], + 'newlines-between': 'always', + alphabetize: { + /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */ + order: 'asc', + caseInsensitive: true /* ignore case. Options: [true, false] */, + }, + pathGroupsExcludedImportTypes: ['builtin'], + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object'], + }, + ], + '@typescript-eslint/explicit-module-boundary-types': 'off', + 'import/no-unresolved': 'off', + 'import/namespace': 'off', + 'import/no-duplicates': 'off', + 'no-console': 'warn', + 'guard-for-in': 'off', + '@typescript-eslint/no-explicit-any': 'warn', + 'react/prop-types': 'off', + 'react/display-name': 'off', + 'import/default': 'off', + 'import/no-named-as-default': 'off', + 'import/no-named-as-default-member': 'off', + }, +}; diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..d25859a --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,96 @@ +name: build + +on: + workflow_dispatch: {} + push: + branches: [ main, develop ] + +env: + PROJECT_ID: ${{ secrets.GCP_PROJECT }} + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: cancel previous runs + uses: styfle/cancel-workflow-action@0.5.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v2 + + - name: Install node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install Yarn + run: corepack enable + + # Yarn dependencies cannot be cached until yarn is installed + # WORKAROUND: https://github.com/actions/setup-node/issues/531 + - name: Extract cached dependencies + uses: actions/setup-node@v4 + with: + cache: yarn + + - name: env + id: env + run: | + echo "::set-output name=tag::$(git rev-parse --short HEAD)" + if [ "$REF" = "refs/heads/main" ]; then + echo "::set-output name=app_env::prod" + echo "::set-output name=wc_project_id::475eff0658d0f3300ca18971418d261b" + echo "::set-output name=enable_demo_features::false" + echo "::set-output name=squid_api_url::https://squid.subsquid.io/subsquid-network-indexer/v/v7/graphql" + echo "::set-output name=app_domain::app.subsquid.io" + else + echo "::set-output name=app_env::dev" + echo "::set-output name=wc_project_id::ec2facac9eaaca7cc0584baadc935c01" + echo "::set-output name=enable_demo_features::true" + echo "::set-output name=squid_api_url::https://squid.subsquid.io/subsquid-network-indexer/v/v7/graphql" + echo "::set-output name=app_domain::app.devsquid.net" + fi + env: + REF: ${{ github.ref }} + + - run: yarn install --immutable + + - run: yarn build + env: + APP_ENV: ${{ steps.env.outputs.app_env }} + APP_VERSION: ${{ steps.env.outputs.tag }} + WALLET_CONNECT_PROJECT_ID: ${{ steps.env.outputs.wc_project_id }} + ENABLE_DEMO_FEATURES: ${{ steps.env.outputs.enable_demo_features }} + NETWORK: ${{ steps.env.outputs.network }} + SQUID_API_URL: ${{ steps.env.outputs.squid_api_url }} + + + # Build and push images to Google Container Registry + - name: Build image + run: docker build --progress=plain -t "gcr.io/${PROJECT_ID}/subsquid-network-app-${APP_ENV}:${TAG}" -t "gcr.io/${PROJECT_ID}/subsquid-network-app-${APP_ENV}:latest" . + env: + APP_ENV: ${{ steps.env.outputs.app_env }} + TAG: ${{ steps.env.outputs.tag }} + + - id: auth + uses: google-github-actions/auth@v0.4.0 + with: + credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} + + - name: Set up Cloud SDK + uses: google-github-actions/setup-gcloud@v0.2.1 + + # steps for push images to gcr + - name: 'gcloud cli --> docker credential helper' + run: gcloud auth configure-docker -q + + - name: Push image + run: | + docker push "gcr.io/${PROJECT_ID}/subsquid-network-app-${APP_ENV}:${TAG}" + docker push "gcr.io/${PROJECT_ID}/subsquid-network-app-${APP_ENV}:latest" + env: + APP_ENV: ${{ steps.env.outputs.app_env }} + TAG: ${{ steps.env.outputs.tag }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..72a9eb8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,60 @@ +# yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +.git + +# dependencies +node_modules +.pnp +.pnp.* + +# testing +coverage + +# production +build +dist +storybook +.cache + +# Optional eslint cache +.eslintcache + +# IDE +.idea +/.idea +**/.idea +.vscode + +# envs +.env +.env.local +.env.dev +.env.prod +.env.test +.env.development +.env.production +.env.development.local +.env.production.local +.env.test.local + +# logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# typescript +*.tsbuildinfo + +# misc +.DS_Store +*.pem +secrets.yaml diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..5a182ef --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..c4fd425 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +export default { + singleQuote: true, + trailingComma: "all", + printWidth: 100, + arrowParens: "avoid" +} diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..3186f3f --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0f0c37e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx + +COPY nginx/default.conf /etc/nginx/conf.d/default.conf +COPY build/ /usr/share/nginx/html/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..fce09d9 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Subsquid Cloud UI + +## Run + +1) Copy `.env.example` to `.env` +2) ```yarn install``` +3) ```yarn start``` diff --git a/index.html b/index.html new file mode 100644 index 0000000..3171a45 --- /dev/null +++ b/index.html @@ -0,0 +1,140 @@ + + + + + + + Subsquid Network App + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + + diff --git a/nginx/default.conf b/nginx/default.conf new file mode 100644 index 0000000..ae40087 --- /dev/null +++ b/nginx/default.conf @@ -0,0 +1,32 @@ +server { + listen 80 default_server; + server_name localhost; + + access_log /var/log/nginx/host.access.log main; + + # remove header 'Server' + server_tokens off; + + # single page application + # on request return file or index.html if file not found + location = /index.html { + expires -1; + root /usr/share/nginx/html; + try_files /index.html =404; + } + + location / { + expires 1y; # sets cache-control + root /usr/share/nginx/html; + try_files $uri /index.html; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + # Set this location as internal so it cannot be requested externally (will be 404, which returns to /index.html) + internal; + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4417ad5 --- /dev/null +++ b/package.json @@ -0,0 +1,94 @@ +{ + "name": "@subsquid/subsquid-web", + "version": "0.0.1", + "type": "module", + "private": true, + "exports": "./src/index.tsx", + "scripts": { + "analyze": "npx vite-bundle-visualizer", + "build": "vite build --outDir build", + "lint": "eslint \"src/**/*.{js,ts,tsx}\" --fix", + "tsc": "tsc --noEmit", + "start": "vite serve --port 3005 --host 127.0.0.1", + "preview": "vite preview --outDir build --host 127.0.0.1 --port 3005", + "upg": "yarn upgrade-interactive", + "prepare": "husky install", + "codegen": "graphql-codegen --config src/api/subsquid-network-squid/graphql.config.js" + }, + "lint-staged": { + "src/**/*.{js,jsx,ts,tsx}": "eslint --cache --fix" + }, + "dependencies": { + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.15.14", + "@mui/lab": "^5.0.0-alpha.169", + "@mui/material": "^5.15.14", + "@rainbow-me/rainbowkit": "^1.3.6", + "@sentry/react": "^7.108.0", + "@tanstack/react-query": "^5.28.9", + "@types/ms": "^0.7.34", + "axios": "^1.6.8", + "base58-universal": "^2.0.0", + "bs58": "^5.0.0", + "buffer": "^6.0.3", + "classnames": "^2.5.1", + "country-list": "^2.3.0", + "date-fns": "^3.6.0", + "decimal.js": "^10.4.3", + "ethers": "^6.11.1", + "formik": "^2.4.5", + "graphql": "^16.8.1", + "lodash-es": "^4.17.21", + "material-ui-popup-state": "^5.1.0", + "notistack": "^3.0.1", + "pretty-bytes": "^6.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.22.3", + "react-scroll": "^1.9.0", + "react-syntax-highlighter": "^15.5.0", + "recharts": "^2.12.3", + "use-element-position": "^1.0.13", + "use-local-storage-state": "^19.2.0", + "viem": "^1.21.1", + "wagmi": "^1.4.12", + "yup": "^1.4.0" + }, + "devDependencies": { + "@graphql-codegen/add": "^5.0.2", + "@graphql-codegen/cli": "^5.0.2", + "@graphql-codegen/typescript": "^4.0.6", + "@graphql-codegen/typescript-operations": "^4.2.0", + "@graphql-codegen/typescript-react-query": "^6.1.0", + "@types/jest": "^29.5.12", + "@types/lodash-es": "^4.17.12", + "@types/pretty-bytes": "^5.2.0", + "@types/qs": "^6.9.14", + "@types/query-string": "^6.3.0", + "@types/react-dom": "^18.2.22", + "@types/react-scroll": "^1.8.10", + "@types/react-select": "5.0.1", + "@types/react-syntax-highlighter": "^15.5.11", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", + "@vitejs/plugin-react": "^4.2.1", + "dotenv": "^16.4.5", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-native": "^4.1.0", + "eslint-plugin-sort-keys-fix": "^1.1.2", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", + "prettier": "^3.2.5", + "typescript": "^5.4.3", + "vite": "^5.2.6", + "vite-tsconfig-paths": "^4.3.2" + }, + "packageManager": "yarn@4.1.1" +} diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png new file mode 100644 index 0000000..c5fc78c Binary files /dev/null and b/public/favicon-96x96.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..12a21c7 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..445c6ef Binary files /dev/null and b/public/logo.png differ diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..84d10e5 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,47 @@ +import React from 'react'; + +import { CssBaseline, ThemeProvider } from '@mui/material'; +import { RainbowKitProvider } from '@rainbow-me/rainbowkit'; +import { QueryClientProvider } from '@tanstack/react-query'; +import { SnackbarProvider } from 'notistack'; +import { BrowserRouter } from 'react-router-dom'; +import { WagmiConfig } from 'wagmi'; + +import { queryClient } from '@api/client'; +import { Alert } from '@components/Alert'; +import { chains, wagmiConfig } from '@network/config'; + +import { AppRoutes } from './AppRoutes'; +import { useCreateTheme, useThemeState } from './theme'; + +function App() { + const [themeName] = useThemeState(); + const theme = useCreateTheme(themeName); + + return ( + + + + + + + + + + + + + + + ); +} + +export default App; diff --git a/src/AppRoutes.tsx b/src/AppRoutes.tsx new file mode 100644 index 0000000..e9141e9 --- /dev/null +++ b/src/AppRoutes.tsx @@ -0,0 +1,53 @@ +import React from 'react'; + +import { Navigate, Route, Routes } from 'react-router-dom'; + +import { NetworkLayout } from '@layouts/NetworkLayout'; +import { AddNewGateway } from '@pages/GatewayPage/AddNewGateway.tsx'; +import { Gateway } from '@pages/GatewayPage/Gateway.tsx'; +import NetworkDashboardPage from '@pages/NetworkDashboard/NetworkDashboardPage.tsx'; +import { MyAssets } from '@pages/Profile/MyAssets.tsx'; +import { MyDelegations } from '@pages/Profile/MyDelegations.tsx'; +import { MyGateways } from '@pages/Profile/MyGateways.tsx'; +import { MyWorkers } from '@pages/Profile/MyWorkers.tsx'; +import { ProfilePage } from '@pages/Profile/ProfilePage.tsx'; +import { AddNewWorker } from '@pages/WorkersPage/AddNewWorker.tsx'; +import Worker from '@pages/WorkersPage/Worker.tsx'; +import { WorkerEdit } from '@pages/WorkersPage/WorkerEdit.tsx'; +import { WorkersPage } from '@pages/WorkersPage/WorkersPage.tsx'; + +import { hideLoader } from './index.tsx'; + +export const AppRoutes = () => { + hideLoader(0); + + return ( + + } path="/workers"> + } index /> + } path=":peerId" /> + + } path="/network-dashboard"> + } /> + + } path="/profile"> + }> + } path="assets" /> + } path="delegations" /> + + } path="workers/add" /> + } path="workers" /> + } path="workers/:peerId/edit" /> + } path="workers/:peerId" /> + + } path="gateways/add" /> + } path="gateways" /> + } path="gateways/:peerId" /> + + } index /> + + + } path="*" /> + + ); +}; diff --git a/src/api/client.ts b/src/api/client.ts new file mode 100644 index 0000000..83fd3ca --- /dev/null +++ b/src/api/client.ts @@ -0,0 +1,12 @@ +import { QueryClient } from '@tanstack/react-query'; + +export const queryClient = new QueryClient({ + defaultOptions: { + queries: { + networkMode: 'always', + }, + mutations: { + networkMode: 'always', + }, + }, +}); diff --git a/src/api/contracts/claim.ts b/src/api/contracts/claim.ts new file mode 100644 index 0000000..974323e --- /dev/null +++ b/src/api/contracts/claim.ts @@ -0,0 +1,110 @@ +import { useState } from 'react'; + +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { REWARD_TREASURY_CONTRACT_ABI } from '@api/contracts/reaward-treasury.abi'; +import { errorMessage, TxResult, WriteContractRes } from '@api/contracts/utils'; +import { VESTING_CONTRACT_ABI } from '@api/contracts/vesting.abi'; +import { AccountType, SourceWallet } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount.ts'; +import { useContracts } from '@network/useContracts.ts'; + +export type ClaimRequest = { + wallet: SourceWallet; +}; + +function useClaimFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.REWARD_TREASURY, + abi: REWARD_TREASURY_CONTRACT_ABI, + functionName: 'claimFor', + }); + + return async ({ wallet }: ClaimRequest): Promise => { + try { + return { + tx: await writeAsync({ + args: [contracts.REWARD_DISTRIBUTION, wallet.id as `0x${string}`], + }), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useClaimFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ wallet }: ClaimRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: REWARD_TREASURY_CONTRACT_ABI, + functionName: 'claimFor', + args: [contracts.REWARD_DISTRIBUTION, wallet.id as `0x${string}`], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: wallet.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.REWARD_TREASURY, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useClaim() { + const client = usePublicClient(); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [isLoading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const claimFromWallet = useClaimFromWallet(); + const claimFromVestingContract = useClaimFromVestingContract(); + + const claim = async ({ wallet }: ClaimRequest): Promise => { + setLoading(true); + + const res = + wallet.type === AccountType.User + ? await claimFromWallet({ wallet }) + : await claimFromVestingContract({ wallet }); + + if (!res.tx) { + setLoading(false); + setError(res.error); + + return { success: false, failedReason: res.error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: res.tx.hash }); + setWaitHeight(receipt.blockNumber, []); + + setLoading(false); + + return { success: true }; + }; + + return { + claim, + isLoading, + error, + }; +} diff --git a/src/api/contracts/consts.ts b/src/api/contracts/consts.ts new file mode 100644 index 0000000..2c39e92 --- /dev/null +++ b/src/api/contracts/consts.ts @@ -0,0 +1,2 @@ +export const SQD_TOKEN = 'tSQD'; +export const SQD_DECIMALS = 18; diff --git a/src/api/contracts/gateway-registration/GatewayMetadata.ts b/src/api/contracts/gateway-registration/GatewayMetadata.ts new file mode 100644 index 0000000..16777c1 --- /dev/null +++ b/src/api/contracts/gateway-registration/GatewayMetadata.ts @@ -0,0 +1,29 @@ +import isEmpty from 'lodash-es/isEmpty'; +import pickBy from 'lodash-es/pickBy'; + +export interface GetawayMetadata { + name: string; + email?: string; + description?: string; + website?: string; + endpointUrl?: string; +} + +export function encodeGatewayMetadata(req: GetawayMetadata) { + const md = pickBy( + { + name: req.name, + website: req.website, + description: req.description, + email: req.email, + endpointUrl: req.endpointUrl, + }, + Boolean, + ); + + return !isEmpty(md) ? JSON.stringify(md) : ''; +} + +export function decodeGatewayMetadata(req: string) { + return JSON.parse(req); +} diff --git a/src/api/contracts/gateway-registration/GatewayRegistration.abi.ts b/src/api/contracts/gateway-registration/GatewayRegistration.abi.ts new file mode 100644 index 0000000..aed2f65 --- /dev/null +++ b/src/api/contracts/gateway-registration/GatewayRegistration.abi.ts @@ -0,0 +1,81 @@ +export const GATEWAY_REGISTRATION_CONTRACT_ABI = [ + { + type: 'function', + name: 'register', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + { + name: 'metadata', + type: 'string', + internalType: 'string', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'setMetadata', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + { + name: 'metadata', + type: 'string', + internalType: 'string', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'stake', + inputs: [ + { + name: 'amount', + type: 'uint256', + internalType: 'uint256', + }, + { + name: 'durationBlocks', + type: 'uint128', + internalType: 'uint128', + }, + { + name: 'withAutoExtension', + type: 'bool', + internalType: 'bool', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'unregister', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'unstake', + inputs: [], + outputs: [], + stateMutability: 'nonpayable', + }, +] as const; diff --git a/src/api/contracts/gateway-registration/useRegisterGateway.ts b/src/api/contracts/gateway-registration/useRegisterGateway.ts new file mode 100644 index 0000000..6fe8e26 --- /dev/null +++ b/src/api/contracts/gateway-registration/useRegisterGateway.ts @@ -0,0 +1,115 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { AccountType } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, peerIdToHex, TxResult, WriteContractRes } from '../utils'; +import { VESTING_CONTRACT_ABI } from '../vesting.abi'; + +import { encodeGatewayMetadata, GetawayMetadata } from './GatewayMetadata'; +import { GATEWAY_REGISTRATION_CONTRACT_ABI } from './GatewayRegistration.abi'; + +export interface RegisterGatewayRequest extends GetawayMetadata { + peerId: string; + source: { + id: string; + type: AccountType; + }; +} + +function useRegisterGatewayFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.GATEWAY_REGISTRATION, + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'register', + }); + + return async ({ peerId, ...rest }: RegisterGatewayRequest): Promise => { + logger.debug(`registering gateway via worker contract...`); + + try { + return { tx: await writeAsync({ args: [peerIdToHex(peerId), encodeGatewayMetadata(rest)] }) }; + } catch (e: unknown) { + return { + error: errorMessage(e), + }; + } + }; +} + +function useRegisterGatewayFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ peerId, source, ...rest }: RegisterGatewayRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'register', + args: [peerIdToHex(peerId), encodeGatewayMetadata(rest)], // encodeMetadata(rest) + }); + + const { request } = await publicClient.simulateContract({ + account, + address: source.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.GATEWAY_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useRegisterGateway() { + const client = usePublicClient(); + const { address } = useAccount(); + const [error, setError] = useState(null); + const [isLoading, setLoading] = useState(false); + + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const registerGatewayFromWallet = useRegisterGatewayFromWallet(); + const registerGatewayFromVestingContract = useRegisterGatewayFromVestingContract(); + + const registerGateway = async (req: RegisterGatewayRequest): Promise => { + setLoading(true); + + const { tx, error } = + req.source.type === AccountType.User + ? await registerGatewayFromWallet(req) + : await registerGatewayFromVestingContract(req); + + if (!tx) { + logger.debug(`registering gateway failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myGateways', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { registerGateway, isLoading, error }; +} diff --git a/src/api/contracts/gateway-registration/useStakeGateway.ts b/src/api/contracts/gateway-registration/useStakeGateway.ts new file mode 100644 index 0000000..67d01f0 --- /dev/null +++ b/src/api/contracts/gateway-registration/useStakeGateway.ts @@ -0,0 +1,153 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import Decimal from 'decimal.js'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { AccountType, SourceWallet } from '@api/subsquid-network-squid'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { useApproveSqd } from '../sqd'; +import { errorMessage, isApproveRequiredError, toSqd, TxResult, WriteContractRes } from '../utils'; +import { VESTING_CONTRACT_ABI } from '../vesting.abi'; + +import { GATEWAY_REGISTRATION_CONTRACT_ABI } from './GatewayRegistration.abi'; + +type StakeGatewayRequest = { + gateway: BlockchainGateway; + amount: number; + durationBlocks: number; + autoExtension: boolean; + wallet: SourceWallet; +}; + +function useStakeFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.GATEWAY_REGISTRATION, + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'stake', + }); + + const [approveSqd] = useApproveSqd(); + + const tryCallContract = async ({ + autoExtension, + amount, + durationBlocks, + }: StakeGatewayRequest) => { + try { + return { + tx: await writeAsync({ + args: [toSqd(amount), BigInt(durationBlocks), autoExtension], + }), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; + + return async (req: StakeGatewayRequest): Promise => { + logger.debug(`stake to gateway via worker contract...`); + + const res = await tryCallContract(req); + // Try to approve SQD + if (isApproveRequiredError(res.error)) { + const approveRes = await approveSqd({ + contractAddress: contracts.GATEWAY_REGISTRATION, + amount: new Decimal(toSqd(req.amount).toString()), + }); + if (!approveRes.success) { + return { error: approveRes.failedReason }; + } + + logger.debug(`approved SQD successfully, now trying to register one more time...`); + + return tryCallContract(req); + } + + return res; + }; +} + +function useStakeFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ + amount, + wallet, + autoExtension, + durationBlocks, + }: StakeGatewayRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'stake', + args: [toSqd(amount), BigInt(durationBlocks), autoExtension], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: wallet.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.GATEWAY_REGISTRATION, data, toSqd(amount)], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useStakeGateway() { + const client = usePublicClient(); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [isLoading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const stakeFromWallet = useStakeFromWallet(); + const stakeFromVestingContract = useStakeFromVestingContract(); + + const stakeToGateway = async (req: StakeGatewayRequest): Promise => { + setLoading(true); + + const res = + req.wallet.type === AccountType.User + ? await stakeFromWallet(req) + : await stakeFromVestingContract(req); + + if (!res.tx) { + setLoading(false); + setError(res.error); + + return { success: false, failedReason: res.error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: res.tx.hash }); + setWaitHeight(receipt.blockNumber, []); + + setLoading(false); + + return { success: true }; + }; + + return { + stakeToGateway, + isLoading, + error, + }; +} diff --git a/src/api/contracts/gateway-registration/useUnregisterGateway.ts b/src/api/contracts/gateway-registration/useUnregisterGateway.ts new file mode 100644 index 0000000..b6dfc94 --- /dev/null +++ b/src/api/contracts/gateway-registration/useUnregisterGateway.ts @@ -0,0 +1,111 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { AccountType } from '@api/subsquid-network-squid'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, peerIdToHex, TxResult, WriteContractRes } from '../utils'; +import { VESTING_CONTRACT_ABI } from '../vesting.abi'; + +import { GATEWAY_REGISTRATION_CONTRACT_ABI } from './GatewayRegistration.abi'; + +export interface UnregisterGatewayRequest { + gateway: BlockchainGateway; +} + +function useUnregisterGatewayFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.GATEWAY_REGISTRATION, + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'unregister', + }); + + return async ({ gateway }: UnregisterGatewayRequest): Promise => { + logger.debug(`unregistering gateway via worker contract...`); + + try { + return { tx: await writeAsync({ args: [peerIdToHex(gateway.id)] }) }; + } catch (e: unknown) { + return { + error: errorMessage(e), + }; + } + }; +} + +function useUnregisterGatewayFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ gateway }: UnregisterGatewayRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'unregister', + args: [peerIdToHex(gateway.id)], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: gateway.owner.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.GATEWAY_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useUnregisterGateway() { + const client = usePublicClient(); + const { address } = useAccount(); + const [error, setError] = useState(null); + const [isLoading, setLoading] = useState(false); + + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const unregisterGatewayFromWallet = useUnregisterGatewayFromWallet(); + const unregisterGatewayFromVestingContract = useUnregisterGatewayFromVestingContract(); + + const unregisterGateway = async (req: UnregisterGatewayRequest): Promise => { + setLoading(true); + + const { tx, error } = + req.gateway.owner.type === AccountType.User + ? await unregisterGatewayFromWallet(req) + : await unregisterGatewayFromVestingContract(req); + + if (!tx) { + logger.debug(`unregistering gateway failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myGateways', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { unregisterGateway, isLoading, error }; +} diff --git a/src/api/contracts/gateway-registration/useUnstakeGateway.ts b/src/api/contracts/gateway-registration/useUnstakeGateway.ts new file mode 100644 index 0000000..8fd69e1 --- /dev/null +++ b/src/api/contracts/gateway-registration/useUnstakeGateway.ts @@ -0,0 +1,110 @@ +import { useState } from 'react'; + +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { AccountType } from '@api/subsquid-network-squid'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, TxResult, WriteContractRes } from '../utils'; +import { VESTING_CONTRACT_ABI } from '../vesting.abi'; + +import { GATEWAY_REGISTRATION_CONTRACT_ABI } from './GatewayRegistration.abi'; + +type UnstakeGatewayRequest = { + gateway: BlockchainGateway; +}; + +function useUnstakeFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.GATEWAY_REGISTRATION, + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'unstake', + }); + + return async (req: UnstakeGatewayRequest): Promise => { + try { + return { + tx: await writeAsync({}), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useUnstakeFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ gateway }: UnstakeGatewayRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: GATEWAY_REGISTRATION_CONTRACT_ABI, + functionName: 'unstake', + }); + + const { request } = await publicClient.simulateContract({ + account, + address: gateway.owner.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.GATEWAY_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useUnstakeGateway() { + const client = usePublicClient(); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [isLoading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const unstakeFromWallet = useUnstakeFromWallet(); + const unstakeFromVestingContract = useUnstakeFromVestingContract(); + + const unstakeFromGateway = async (req: UnstakeGatewayRequest): Promise => { + setLoading(true); + + const res = + req.gateway.owner.type === AccountType.User + ? await unstakeFromWallet(req) + : await unstakeFromVestingContract(req); + + if (!res.tx) { + setLoading(false); + setError(res.error); + + return { success: false, failedReason: res.error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: res.tx.hash }); + setWaitHeight(receipt.blockNumber, []); + + setLoading(false); + + return { success: true }; + }; + + return { + unstakeFromGateway, + isLoading, + error, + }; +} diff --git a/src/api/contracts/reaward-treasury.abi.ts b/src/api/contracts/reaward-treasury.abi.ts new file mode 100644 index 0000000..f51a666 --- /dev/null +++ b/src/api/contracts/reaward-treasury.abi.ts @@ -0,0 +1,20 @@ +export const REWARD_TREASURY_CONTRACT_ABI = [ + { + type: 'function', + name: 'claimFor', + inputs: [ + { + name: 'rewardDistribution', + type: 'address', + internalType: 'contract IRewardsDistribution', + }, + { + name: 'receiver', + type: 'address', + internalType: 'address', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, +] as const; diff --git a/src/api/contracts/sqd.ts b/src/api/contracts/sqd.ts new file mode 100644 index 0000000..dc24a00 --- /dev/null +++ b/src/api/contracts/sqd.ts @@ -0,0 +1,51 @@ +import { logger } from '@logger'; +import { WriteContractResult } from '@wagmi/core'; +import Decimal from 'decimal.js'; +import { erc20ABI, useContractWrite, usePublicClient } from 'wagmi'; + +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, WriteContractRes } from './utils'; + +export function useApproveSqd() { + const client = usePublicClient(); + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.SQD, + abi: erc20ABI, + functionName: 'approve', + }); + + async function approve({ + contractAddress, + amount, + }: { + contractAddress: `0x${string}`; + amount: Decimal; + }): Promise { + let tx: WriteContractResult; + logger.debug(`approving SQD to ${contracts.WORKER_REGISTRATION}...`); + try { + tx = await writeAsync({ + args: [contractAddress, BigInt(amount.toFixed(0))], + }); + } catch (e) { + const error = errorMessage(e); + + return { success: false, failedReason: error }; + } + + if (!tx) { + logger.debug(`SQF approve failed with unknown error`); + return { success: false, failedReason: 'unknown error' }; + } + + logger.debug(`waiting confirm of SQD approving tx ${tx.hash}`); + await client.waitForTransactionReceipt({ hash: tx.hash }); + logger.info(`SQD approved, tx ${tx.hash}, completed!`); + + return { success: true }; + } + + return [approve]; +} diff --git a/src/api/contracts/staking.abi.ts b/src/api/contracts/staking.abi.ts new file mode 100644 index 0000000..91346f8 --- /dev/null +++ b/src/api/contracts/staking.abi.ts @@ -0,0 +1,55 @@ +export const STAKING_CONTRACT_ABI = [ + { + type: 'function', + name: 'deposit', + inputs: [ + { + name: 'worker', + type: 'uint256', + internalType: 'uint256', + }, + { + name: 'amount', + type: 'uint256', + internalType: 'uint256', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'withdraw', + inputs: [ + { + type: 'uint256', + name: 'worker', + }, + { + type: 'uint256', + name: 'amount', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'claimable', + inputs: [ + { + name: 'staker', + type: 'address', + internalType: 'address', + }, + ], + outputs: [ + { + name: '', + type: 'uint256', + internalType: 'uint256', + }, + ], + stateMutability: 'view', + }, +] as const; diff --git a/src/api/contracts/staking.ts b/src/api/contracts/staking.ts new file mode 100644 index 0000000..62a1159 --- /dev/null +++ b/src/api/contracts/staking.ts @@ -0,0 +1,239 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import Decimal from 'decimal.js'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { useApproveSqd } from '@api/contracts/sqd'; +import { + errorMessage, + isApproveRequiredError, + TxResult, + WriteContractRes, +} from '@api/contracts/utils'; +import { VESTING_CONTRACT_ABI } from '@api/contracts/vesting.abi'; +import { AccountType, BlockchainApiWorker, SourceWallet } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { STAKING_CONTRACT_ABI } from './staking.abi'; + +type WorkerDepositRequest = { + worker: BlockchainApiWorker; + amount: bigint; + wallet: Pick; +}; + +function useDelegateFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.STAKING, + abi: STAKING_CONTRACT_ABI, + functionName: 'deposit', + }); + + const [approveSqd] = useApproveSqd(); + + const tryCallContract = async ({ worker, amount }: WorkerDepositRequest) => { + try { + return { tx: await writeAsync({ args: [BigInt(worker.id), amount] }) }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; + + return async (req: WorkerDepositRequest): Promise => { + logger.debug(`deposit to worker via worker contract...`); + + const res = await tryCallContract(req); + // Try to approve SQD + if (isApproveRequiredError(res.error)) { + const approveRes = await approveSqd({ + contractAddress: contracts.STAKING, + amount: new Decimal(req.amount.toString()), + }); + if (!approveRes.success) { + return { error: approveRes.failedReason }; + } + + logger.debug(`approved SQD successfully, now trying to register one more time...`); + + return tryCallContract(req); + } + + return res; + }; +} + +function useDepositFromVestingContract() { + const publicClient = usePublicClient(); + const contracts = useContracts(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ worker, amount, wallet }: WorkerDepositRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: STAKING_CONTRACT_ABI, + functionName: 'deposit', + args: [BigInt(worker.id), amount], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: wallet.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.STAKING, data, amount], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useWorkerDelegate() { + const client = usePublicClient(); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [isLoading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const depositFromWallet = useDelegateFromWallet(); + const depositFromVestingContract = useDepositFromVestingContract(); + + const delegateToWorker = async ({ + worker, + amount, + wallet, + }: WorkerDepositRequest): Promise => { + setLoading(true); + + const res = + wallet.type === AccountType.User + ? await depositFromWallet({ worker, amount, wallet }) + : await depositFromVestingContract({ worker, amount, wallet }); + + if (!res.tx) { + setLoading(false); + setError(res.error); + + return { success: false, failedReason: res.error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: res.tx.hash }); + setWaitHeight(receipt.blockNumber, []); + + setLoading(false); + + return { success: true }; + }; + + return { + delegateToWorker, + isLoading, + error, + }; +} + +function useUndelegateFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.STAKING, + abi: STAKING_CONTRACT_ABI, + functionName: 'withdraw', + }); + + return async ({ worker, amount }: WorkerDepositRequest): Promise => { + try { + return { tx: await writeAsync({ args: [BigInt(worker.id), amount] }) }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useUndelegateFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ worker, amount, wallet }: WorkerDepositRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: STAKING_CONTRACT_ABI, + functionName: 'withdraw', + args: [BigInt(worker.id), amount], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: wallet.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.STAKING, data, amount], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useWorkerUndelegate() { + const client = usePublicClient(); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [isLoading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const undelegateFromWallet = useUndelegateFromWallet(); + const undelegateFromVestingContract = useUndelegateFromVestingContract(); + + const undelegateFromWorker = async ({ + worker, + amount, + wallet, + }: WorkerDepositRequest): Promise => { + setLoading(true); + + const res = + wallet.type === AccountType.User + ? await undelegateFromWallet({ worker, amount, wallet }) + : await undelegateFromVestingContract({ worker, amount, wallet }); + + if (!res.tx) { + setLoading(false); + setError(res.error); + + return { success: false, failedReason: res.error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: res.tx.hash }); + setWaitHeight(receipt.blockNumber, []); + + setLoading(false); + + return { success: true }; + }; + + return { + undelegateFromWorker, + isLoading, + error, + }; +} diff --git a/src/api/contracts/utils.ts b/src/api/contracts/utils.ts new file mode 100644 index 0000000..5f522eb --- /dev/null +++ b/src/api/contracts/utils.ts @@ -0,0 +1,83 @@ +import { numberWithSpacesFormatter } from '@lib/formatters/formatters.ts'; +import { WriteContractResult } from '@wagmi/core'; +import bs58 from 'bs58'; +import Decimal from 'decimal.js'; +import trimEnd from 'lodash-es/trimEnd'; +import { BaseError as BaseViemError, formatUnits, parseUnits, toHex } from 'viem'; + +import { SQD_DECIMALS, SQD_TOKEN } from './consts'; + +export type TxResult = { tx: WriteContractResult; error?: never } | { error: string; tx?: never }; + +export type WriteContractRes = + | { success: true; failedReason?: never } + | { success: false; failedReason: string }; + +const KNOWN_ERRORS: Record = { + '0xe450d38c': 'Insufficient balance', +}; + +export function errorMessage(e: unknown) { + if (e instanceof BaseViemError) { + const message = e.shortMessage.split('\n').pop(); + + if (message) { + if (KNOWN_ERRORS[message]) return KNOWN_ERRORS[message]; + else if (message.startsWith('0x') && e.metaMessages) return e.metaMessages?.join('\n'); + + return message; + } + + return e.message; + } + + return e instanceof Error ? e.message : e?.toString() || 'unknown error'; +} + +export function toSqd(value?: string | bigint | number) { + if (!value) return 0n; + + return parseUnits(value.toString(), SQD_DECIMALS); +} + +export function fromSqd(value?: string | bigint | number) { + if (!value) return new Decimal(0); + + return new Decimal(formatUnits(BigInt(value), SQD_DECIMALS)); +} + +export function humanReadableSqd(value?: string | bigint | number) { + if (!value) return '0'; + + const v = new Decimal(String(value)).div(10 ** SQD_DECIMALS).toFixed(18); + + return trimEnd(trimEnd(v, '0'), '.'); +} + +export function formatSqd(value?: string | Decimal | number, decimals?: number) { + if (!value) return `0 ${SQD_TOKEN}`; + + value = typeof value === 'string' ? fromSqd(value) : value; + + const n = Number(value); + if (n > 0 && n < 0.01) { + return `<0.01 ${SQD_TOKEN}`; + } + + return `${numberWithSpacesFormatter(value.toFixed(decimals))} ${SQD_TOKEN}`; +} + +export function isApproveRequiredError(error: unknown) { + if (typeof error !== 'string') return; + + const message = error.toLowerCase(); + + return ( + message.includes('insufficient allowance') || // openzeppelin old version + message.includes('0xfb8f41b2') // openzeppelin new version + ); +} + +export function peerIdToHex(peerId: string) { + return toHex(bs58.decode(peerId)); +} diff --git a/src/api/contracts/vesting.abi.ts b/src/api/contracts/vesting.abi.ts new file mode 100644 index 0000000..6c0c1cc --- /dev/null +++ b/src/api/contracts/vesting.abi.ts @@ -0,0 +1,49 @@ +export const VESTING_CONTRACT_ABI = [ + { + type: 'function', + name: 'execute', + inputs: [ + { + name: 'to', + type: 'address', + internalType: 'address', + }, + { + name: 'data', + type: 'bytes', + internalType: 'bytes', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'execute', + inputs: [ + { + name: 'to', + type: 'address', + internalType: 'address', + }, + { + name: 'data', + type: 'bytes', + internalType: 'bytes', + }, + { + name: 'requiredApprove', + type: 'uint256', + internalType: 'uint256', + }, + ], + outputs: [ + { + name: '', + type: 'bytes', + internalType: 'bytes', + }, + ], + stateMutability: 'nonpayable', + }, +] as const; diff --git a/src/api/contracts/worker-registration/WorkerMetadata.ts b/src/api/contracts/worker-registration/WorkerMetadata.ts new file mode 100644 index 0000000..5c86c37 --- /dev/null +++ b/src/api/contracts/worker-registration/WorkerMetadata.ts @@ -0,0 +1,27 @@ +import { pickBy } from 'lodash-es'; +import isEmpty from 'lodash-es/isEmpty'; + +export interface WorkerMetadata { + name: string; + email: string; + description: string; + website?: string; +} + +export function encodeWorkerMetadata(req: WorkerMetadata) { + const md = pickBy( + { + name: req.name, + website: req.website, + description: req.description, + email: req.email, + }, + Boolean, + ); + + return !isEmpty(md) ? JSON.stringify(md) : ''; +} + +function decodeWorkerMetadata(req: string): WorkerMetadata { + return JSON.parse(req); +} diff --git a/src/api/contracts/worker-registration/WorkerRegistration.abi.ts b/src/api/contracts/worker-registration/WorkerRegistration.abi.ts new file mode 100644 index 0000000..8f2c7a8 --- /dev/null +++ b/src/api/contracts/worker-registration/WorkerRegistration.abi.ts @@ -0,0 +1,78 @@ +export const WORKER_REGISTRATION_CONTRACT_ABI = [ + { + type: 'function', + name: 'bondAmount', + inputs: [], + outputs: [ + { + name: '', + type: 'uint256', + internalType: 'uint256', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + name: 'register', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + { + name: 'metadata', + type: 'string', + internalType: 'string', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + name: 'updateMetadata', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + { + name: 'metadata', + type: 'string', + internalType: 'string', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'peerId', + type: 'bytes', + }, + ], + name: 'deregister', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + + { + type: 'function', + name: 'withdraw', + inputs: [ + { + name: 'peerId', + type: 'bytes', + internalType: 'bytes', + }, + ], + outputs: [], + stateMutability: 'nonpayable', + }, +] as const; diff --git a/src/api/contracts/worker-registration/useRegisterWorker.ts b/src/api/contracts/worker-registration/useRegisterWorker.ts new file mode 100644 index 0000000..83f74c3 --- /dev/null +++ b/src/api/contracts/worker-registration/useRegisterWorker.ts @@ -0,0 +1,147 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { useApproveSqd } from '@api/contracts/sqd'; +import { + errorMessage, + isApproveRequiredError, + peerIdToHex, + TxResult, + WriteContractRes, +} from '@api/contracts/utils'; +import { VESTING_CONTRACT_ABI } from '@api/contracts/vesting.abi'; +import { useNetworkSettings } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { encodeWorkerMetadata, WorkerMetadata } from './WorkerMetadata'; +import { WORKER_REGISTRATION_CONTRACT_ABI } from './WorkerRegistration.abi'; + +export interface AddWorkerRequest extends WorkerMetadata { + peerId: string; + vestingContract: string; +} + +function useRegisterFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.WORKER_REGISTRATION, + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'register', + }); + const [approveSqd] = useApproveSqd(); + const { bondAmount } = useNetworkSettings(); + const tryCallRegistrationContract = async ({ + peerId, + ...rest + }: AddWorkerRequest): Promise => { + try { + return { tx: await writeAsync({ args: [peerIdToHex(peerId), encodeWorkerMetadata(rest)] }) }; + } catch (e: unknown) { + return { + error: errorMessage(e), + }; + } + }; + + return async (req: AddWorkerRequest): Promise => { + logger.debug(`registering worker via worker contract...`); + + const res = await tryCallRegistrationContract(req); + // Try to approve SQD + if (isApproveRequiredError(res.error)) { + const approveRes = await approveSqd({ + contractAddress: contracts.WORKER_REGISTRATION, + amount: bondAmount, + }); + if (!approveRes.success) { + return { error: approveRes.failedReason }; + } + + logger.debug(`approved SQD successfully, now trying to register one more time...`); + + return tryCallRegistrationContract(req); + } + + return res; + }; +} + +function useRegisterWorkerFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ peerId, vestingContract, ...rest }: AddWorkerRequest): Promise => { + try { + const bond = await publicClient.readContract({ + address: contracts.WORKER_REGISTRATION, + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'bondAmount', + }); + + const data = encodeFunctionData({ + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'register', + args: [peerIdToHex(peerId), encodeWorkerMetadata(rest)], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: vestingContract as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.WORKER_REGISTRATION, data, bond], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useRegisterWorker() { + const client = usePublicClient(); + const { address } = useAccount(); + const [error, setError] = useState(null); + const [isLoading, setLoading] = useState(false); + + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const registerWorkerContract = useRegisterFromWallet(); + const registerVestingContract = useRegisterWorkerFromVestingContract(); + + const registerWorker = async (req: AddWorkerRequest): Promise => { + setLoading(true); + + const { tx, error } = req.vestingContract + ? await registerVestingContract(req) + : await registerWorkerContract(req); + + if (!tx) { + logger.debug(`registering worker failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myWorkers', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { registerWorker, isLoading, error }; +} diff --git a/src/api/contracts/worker-registration/useUnregisterWorker.ts b/src/api/contracts/worker-registration/useUnregisterWorker.ts new file mode 100644 index 0000000..ca05f9c --- /dev/null +++ b/src/api/contracts/worker-registration/useUnregisterWorker.ts @@ -0,0 +1,118 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { VESTING_CONTRACT_ABI } from '@api/contracts/vesting.abi'; +import { AccountType } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, peerIdToHex, TxResult, WriteContractRes } from '../utils'; + +import { WORKER_REGISTRATION_CONTRACT_ABI } from './WorkerRegistration.abi'; + +export interface UnregisterWorkerRequest { + peerId: string; + source: { + id: string; + type: AccountType; + }; +} + +function useUnregisterWorkerFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.WORKER_REGISTRATION, + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'deregister', + }); + + return async ({ peerId }: { peerId: string }): Promise => { + try { + return { + tx: await writeAsync({ + args: [peerIdToHex(peerId)], + }), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useUnregisterWorkerFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ peerId, source }: UnregisterWorkerRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'deregister', + args: [peerIdToHex(peerId)], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: source.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.WORKER_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useUnregisterWorker() { + const publicClient = usePublicClient(); + const { address } = useAccount(); + const [isLoading, setLoading] = useState(false); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [error, setError] = useState(null); + + const unregisterWorkerFromWallet = useUnregisterWorkerFromWallet(); + const unregisterWorkerFromVestingContract = useUnregisterWorkerFromVestingContract(); + + const unregisterWorker = async (req: UnregisterWorkerRequest): Promise => { + setLoading(true); + + const { tx, error } = + req.source.type === AccountType.User + ? await unregisterWorkerFromWallet(req) + : await unregisterWorkerFromVestingContract(req); + + if (!tx) { + logger.debug(`update worker failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myWorkers', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { + unregisterWorker, + isLoading, + error, + }; +} diff --git a/src/api/contracts/worker-registration/useUpdateWorker.ts b/src/api/contracts/worker-registration/useUpdateWorker.ts new file mode 100644 index 0000000..ee277e6 --- /dev/null +++ b/src/api/contracts/worker-registration/useUpdateWorker.ts @@ -0,0 +1,115 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { AccountType } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { errorMessage, peerIdToHex, TxResult, WriteContractRes } from '../utils'; +import { VESTING_CONTRACT_ABI } from '../vesting.abi'; + +import { encodeWorkerMetadata, WorkerMetadata } from './WorkerMetadata'; +import { WORKER_REGISTRATION_CONTRACT_ABI } from './WorkerRegistration.abi'; + +export interface UpdateWorkerRequest extends WorkerMetadata { + peerId: string; + source: { + id: string; + type: AccountType; + }; +} + +function useUpdateWorkerFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.WORKER_REGISTRATION, + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'updateMetadata', + }); + + return async ({ peerId, ...rest }: UpdateWorkerRequest): Promise => { + try { + return { + tx: await writeAsync({ + args: [peerIdToHex(peerId), encodeWorkerMetadata(rest)], + }), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useUpdateWorkerFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ peerId, source, ...rest }: UpdateWorkerRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'updateMetadata', + args: [peerIdToHex(peerId), encodeWorkerMetadata(rest)], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: source.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.WORKER_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useUpdateWorker() { + const client = usePublicClient(); + const { address } = useAccount(); + const [error, setError] = useState(null); + const [isLoading, setLoading] = useState(false); + + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const updateWorkerFromWallet = useUpdateWorkerFromWallet(); + const updateWorkerFromVestingContract = useUpdateWorkerFromVestingContract(); + + const updateWorker = async (req: UpdateWorkerRequest): Promise => { + setLoading(true); + + const { tx, error } = + req.source.type === AccountType.User + ? await updateWorkerFromWallet(req) + : await updateWorkerFromVestingContract(req); + + if (!tx) { + logger.debug(`update worker failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await client.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myWorkers', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { updateWorker, isLoading, error }; +} diff --git a/src/api/contracts/worker-registration/useWithdrawWorker.ts b/src/api/contracts/worker-registration/useWithdrawWorker.ts new file mode 100644 index 0000000..4a279ba --- /dev/null +++ b/src/api/contracts/worker-registration/useWithdrawWorker.ts @@ -0,0 +1,110 @@ +import { useState } from 'react'; + +import { logger } from '@logger'; +import { encodeFunctionData } from 'viem'; +import { useContractWrite, usePublicClient, useWalletClient } from 'wagmi'; + +import { errorMessage, peerIdToHex, TxResult, WriteContractRes } from '@api/contracts/utils'; +import { VESTING_CONTRACT_ABI } from '@api/contracts/vesting.abi'; +import { UnregisterWorkerRequest } from '@api/contracts/worker-registration/useUnregisterWorker'; +import { AccountType } from '@api/subsquid-network-squid'; +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks.ts'; +import { useAccount } from '@network/useAccount'; +import { useContracts } from '@network/useContracts.ts'; + +import { WORKER_REGISTRATION_CONTRACT_ABI } from './WorkerRegistration.abi'; + +function useWithdrawWorkerFromWallet() { + const contracts = useContracts(); + const { writeAsync } = useContractWrite({ + address: contracts.WORKER_REGISTRATION, + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'withdraw', + }); + + return async ({ peerId }: { peerId: string }): Promise => { + try { + return { + tx: await writeAsync({ + args: [peerIdToHex(peerId)], + }), + }; + } catch (e) { + return { error: errorMessage(e) }; + } + }; +} + +function useWithdrawWorkerFromVestingContract() { + const contracts = useContracts(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); + const { address: account } = useAccount(); + + return async ({ peerId, source }: UnregisterWorkerRequest): Promise => { + try { + const data = encodeFunctionData({ + abi: WORKER_REGISTRATION_CONTRACT_ABI, + functionName: 'withdraw', + args: [peerIdToHex(peerId)], + }); + + const { request } = await publicClient.simulateContract({ + account, + address: source.id as `0x${string}`, + abi: VESTING_CONTRACT_ABI, + functionName: 'execute', + args: [contracts.WORKER_REGISTRATION, data], + }); + + const tx = await walletClient?.writeContract(request); + if (!tx) { + return { error: 'unknown error' }; + } + + return { tx: { hash: tx } }; + } catch (e: any) { + return { error: errorMessage(e) }; + } + }; +} + +export function useWithdrawWorker() { + const publicClient = usePublicClient(); + const { address } = useAccount(); + const [isLoading, setLoading] = useState(false); + const { setWaitHeight } = useSquidNetworkHeightHooks(); + const [error, setError] = useState(null); + + const withdrawWorkerFromWallet = useWithdrawWorkerFromWallet(); + const withdrawWorkerFromVestingContract = useWithdrawWorkerFromVestingContract(); + + const withdrawWorker = async (req: UnregisterWorkerRequest): Promise => { + setLoading(true); + + const { tx, error } = + req.source.type === AccountType.User + ? await withdrawWorkerFromWallet(req) + : await withdrawWorkerFromVestingContract(req); + + if (!tx) { + logger.debug(`withdraw worker failed ${error}`); + setLoading(false); + setError(error); + return { success: false, failedReason: error }; + } + + const receipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash }); + setWaitHeight(receipt.blockNumber, ['myWorkers', { address }]); + setLoading(false); + setError(null); + + return { success: true }; + }; + + return { + withdrawWorker, + isLoading, + error, + }; +} diff --git a/src/api/subsquid-network-squid/accounts-graphql.ts b/src/api/subsquid-network-squid/accounts-graphql.ts new file mode 100644 index 0000000..ba91982 --- /dev/null +++ b/src/api/subsquid-network-squid/accounts-graphql.ts @@ -0,0 +1,113 @@ +import { useMemo } from 'react'; + +import Decimal from 'decimal.js'; + +import { formatSqd } from '@api/contracts/utils'; +import { useAccount } from '@network/useAccount'; + +import { SQUID_DATASOURCE } from './datasource'; +import { AccountType, useAccountQuery, useMyAssetsQuery } from './graphql'; + +export type SourceWallet = { + id: string; + type: AccountType; + balance: string; + balanceFormatted: string; +}; + +export function useMySources({ enabled }: { enabled?: boolean } = {}) { + const { address } = useAccount(); + const requestEnabled = enabled && !!address; + const { data: data, isPending } = useAccountQuery( + SQUID_DATASOURCE, + { + address: address || '', + }, + { + enabled: requestEnabled, + }, + ); + + const wallet = data?.accountById; + + const res = useMemo((): SourceWallet[] => { + return !wallet + ? [ + { + type: AccountType.User, + id: address as string, + balance: '0', + balanceFormatted: '0', + }, + ] + : [wallet, ...wallet.owned].map(a => ({ + type: a.type, + id: a.id, + balance: a.balance as string, + balanceFormatted: formatSqd(a.balance), + })); + }, [address, wallet]); + + const vestingContracts = useMemo(() => { + return res.filter(a => a.type === AccountType.Vesting); + }, [res]); + + return { + sources: res, + vestingContracts, + isPending, + }; +} + +export function useMyAssets() { + const { address } = useAccount(); + + const enabled = !!address; + const { data, isLoading } = useMyAssetsQuery( + SQUID_DATASOURCE, + { + address: address || '', + }, + { enabled }, + ); + + const assets = useMemo(() => { + const accounts = data?.accounts || []; + const delegations = data?.delegations || []; + const workers = data?.workers || []; + + let balance = new Decimal(0); + let bonded = new Decimal(0); + let claimable = new Decimal(0); + let delegated = new Decimal(0); + + for (const a of accounts) { + balance = balance.add(a.balance); + + for (const o of a.owned) { + balance = balance.add(o.balance); + } + } + for (const w of workers) { + bonded = bonded.add(w.bond); + claimable = claimable.add(w.claimableReward); + } + for (const d of delegations) { + claimable = claimable.add(d.claimableReward); + delegated = delegated.add(d.deposit); + } + + return { + balance: balance.toFixed(0), + bonded: bonded.toFixed(0), + claimable: claimable.toFixed(0), + delegated: delegated.toFixed(0), + total: balance.add(bonded).add(claimable).add(delegated).toFixed(0), + }; + }, [data]); + + return { + assets, + isLoading, + }; +} diff --git a/src/api/subsquid-network-squid/api.graphql b/src/api/subsquid-network-squid/api.graphql new file mode 100644 index 0000000..b0a6835 --- /dev/null +++ b/src/api/subsquid-network-squid/api.graphql @@ -0,0 +1,231 @@ +### COMMON ### + +query squidNetworkHeight { + squidStatus { + height + } +} + +query settings { + settingsConnection(orderBy: id_ASC) { + edges { + node { + id + bondAmount + delegationLimitCoefficient + } + } + } +} + +### ACCOUNT ### + +query account ($address: String!) { + accountById(id: $address) { + id + type + balance + owned { + id + type + balance + } + } +} + +### WORKERS ### + +fragment WorkerFragment on Worker { + id + name + email + peerId + website + status + createdAt + description + bond + claimableReward + claimedReward + uptime24Hours + uptime90Days + totalDelegation + delegationCount + apr + stakerApr + online + jailed + dialOk + owner { + id + } + realOwner { + id + } +} + +fragment WorkerFullFragment on Worker { + queries24Hours + queries90Days + scannedData24Hours + scannedData90Days + servedData24Hours + servedData90Days + storedData + owner { + id + type + } +} + +query allWorkers { + workers( + where: { + status_eq: ACTIVE + }) { + ...WorkerFragment + } +} + +query workerByPeerId($peerId: String!, $address: String!) { + workers(where: {peerId_eq: $peerId}, limit: 1) { + ...WorkerFragment + ...WorkerFullFragment + myDelegations: delegations(where: {realOwner: {id_eq: $address }}) { + deposit + locked + owner { + id + type + balance + } + } + } +} + +query workerDaysUptimeById($id: String!, $from: DateTime!) { + workerSnapshotsByDay(workerId: $id, from: $from) { + timestamp + uptime + } +} + +query myWorkers ($address: String!) { + workers(orderBy: id_ASC, where: {realOwner: {id_eq: $address}}) { + ...WorkerFragment + myDelegations: delegations(where: {realOwner: {id_eq: $address }}) { + deposit + locked + owner { + id + type + balance + } + } + } +} + +query myAssets($address: String!) { + accounts(where:{id_eq: $address}) { + balance + owned { + balance + } + } + workers(where: {realOwner: {id_eq: $address}}) { + bond + claimableReward + } + delegations(where: {realOwner: {id_eq: $address}, + AND: { + OR: [{deposit_gt: 0}, {claimableReward_gt: 0}] + }}) { + claimableReward + deposit + } +} + + +query myDelegations($address: String!) { + delegations(where:{realOwner:{id_eq:$address}, deposit_gt: 0}) { + claimableReward + deposit + worker { + ...WorkerFragment + } + owner { + id + type + } + } +} + +query myClaimsAvailable($address: String!) { + delegations(where:{ realOwner:{id_eq:$address}, claimableReward_gt: 0 }) { + claimableReward + deposit + worker { + id + name + peerId + } + owner { + id + type + } + } + workers(where:{ realOwner:{id_eq:$address}, claimableReward_gt: 0 }) { + id + name + peerId + claimableReward + owner { + id + type + } + } +} + +### GATEWAYS ### + +fragment GatewayFragment on Gateway { + id + name + status + description + email + endpointUrl + website + operator { + autoExtension + stake { + amount + locked + lockStart + lockEnd + } + pendingStake { + amount + locked + lockStart + lockEnd + } + } + owner { + id + type + } + createdAt +} + +query myGateways($address: String!) { + gateways(orderBy: id_ASC, where: {owner: {id_eq: $address}, status_eq: REGISTERED}) { + ...GatewayFragment + } +} + +query gatewayByPeerId($peerId: String!) { + gatewayById(id: $peerId) { + ...GatewayFragment + } +} diff --git a/src/api/subsquid-network-squid/datasource.ts b/src/api/subsquid-network-squid/datasource.ts new file mode 100644 index 0000000..07749a0 --- /dev/null +++ b/src/api/subsquid-network-squid/datasource.ts @@ -0,0 +1,8 @@ +export const SQUID_DATASOURCE: { endpoint: string; fetchParams?: RequestInit } = { + endpoint: process.env.SQUID_API_URL || `/graphql`, + fetchParams: { + headers: { + 'Content-type': 'application/json', + }, + }, +}; diff --git a/src/api/subsquid-network-squid/gateways-graphql.ts b/src/api/subsquid-network-squid/gateways-graphql.ts new file mode 100644 index 0000000..946e275 --- /dev/null +++ b/src/api/subsquid-network-squid/gateways-graphql.ts @@ -0,0 +1,82 @@ +import { SQUID_DATASOURCE } from '@api/subsquid-network-squid/datasource'; +import { useAccount } from '@network/useAccount'; + +import { GatewayFragmentFragment, useGatewayByPeerIdQuery, useMyGatewaysQuery } from './graphql'; + +// inherit API interface for internal class +export interface BlockchainGateway extends GatewayFragmentFragment { + owner: Exclude; +} + +export class BlockchainGateway { + ownedByMe?: boolean; + totalStaked: string = '0'; + pendingStaked: string = '0'; + + constructor({ gateway, address }: { gateway: GatewayFragmentFragment; address?: `0x${string}` }) { + Object.assign(this, { + ...gateway, + totalStaked: String(gateway.operator?.stake?.amount || 0), + pendingStaked: String(gateway.operator?.pendingStake?.amount || 0), + createdAt: new Date(), + ownedByMe: gateway?.owner?.id === address, + }); + } +} + +export function useMyGateways() { + const { address } = useAccount(); + + const enabled = !!address; + const { data, isLoading } = useMyGatewaysQuery( + SQUID_DATASOURCE, + { + address: address || '', + }, + { + select: res => { + return res.gateways.map( + gateway => + new BlockchainGateway({ + gateway, + address, + }), + ); + }, + enabled, + }, + ); + + return { + data: data || [], + isLoading: enabled ? isLoading : false, + }; +} + +export function useGatewayByPeerId(peerId?: string) { + const { address } = useAccount(); + const enabled = !!peerId; + + const { data, isLoading } = useGatewayByPeerIdQuery( + SQUID_DATASOURCE, + { + peerId: peerId || '', + }, + { + select: res => { + if (!res.gatewayById) return; + + return new BlockchainGateway({ + gateway: res.gatewayById, + address, + }); + }, + enabled, + }, + ); + + return { + data, + isLoading: enabled ? isLoading : false, + }; +} diff --git a/src/api/subsquid-network-squid/graphql.config.js b/src/api/subsquid-network-squid/graphql.config.js new file mode 100644 index 0000000..3d36f96 --- /dev/null +++ b/src/api/subsquid-network-squid/graphql.config.js @@ -0,0 +1,35 @@ +#!/usr/bin/node + +import 'dotenv/config'; + +export default { + overwrite: true, + schema: + process.env.SQUID_API_URL || ' https://squid.subsquid.io/subsquid-network-indexer/v/v7/graphql', + documents: ['src/api/subsquid-network-squid/*.graphql'], + hooks: { + afterOneFileWrite: ['prettier --write'], + }, + generates: { + 'src/api/subsquid-network-squid/graphql.tsx': { + plugins: [ + 'typescript', + 'typescript-operations', + { + 'typescript-react-query': { + reactQueryVersion: 5, + }, + }, + { + add: { + content: '/* eslint-disable */', + }, + }, + ], + config: { + maybeValue: 'T', + avoidOptionals: false, + }, + }, + }, +}; diff --git a/src/api/subsquid-network-squid/graphql.tsx b/src/api/subsquid-network-squid/graphql.tsx new file mode 100644 index 0000000..b0cbbf7 --- /dev/null +++ b/src/api/subsquid-network-squid/graphql.tsx @@ -0,0 +1,5033 @@ +/* eslint-disable */ +import { useQuery, UseQueryOptions } from '@tanstack/react-query'; +export type Maybe = T; +export type InputMaybe = T; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { + [_ in K]?: never; +}; +export type Incremental = + | T + | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; + +function fetcher( + endpoint: string, + requestInit: RequestInit, + query: string, + variables?: TVariables, +) { + return async (): Promise => { + const res = await fetch(endpoint, { + method: 'POST', + ...requestInit, + body: JSON.stringify({ query, variables }), + }); + + const json = await res.json(); + + if (json.errors) { + const { message } = json.errors[0]; + + throw new Error(message); + } + + return json.data; + }; +} +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string }; + String: { input: string; output: string }; + Boolean: { input: boolean; output: boolean }; + Int: { input: number; output: number }; + Float: { input: number; output: number }; + BigInt: { input: any; output: any }; + DateTime: { input: any; output: any }; +}; + +export type Account = { + __typename?: 'Account'; + balance: Scalars['BigInt']['output']; + claimableDelegationCount: Scalars['Int']['output']; + claims: Array; + delegations: Array; + gatewayOperator?: Maybe; + gatewayStakes: Array; + gateways: Array; + id: Scalars['String']['output']; + owned: Array; + owner?: Maybe; + transfers: Array; + transfersFrom: Array; + transfersTo: Array; + type: AccountType; + workers: Array; +}; + +export type AccountClaimsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountDelegationsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountGatewayStakesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountGatewaysArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountOwnedArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountTransfersFromArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountTransfersToArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountWorkersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type AccountEdge = { + __typename?: 'AccountEdge'; + cursor: Scalars['String']['output']; + node: Account; +}; + +export enum AccountOrderByInput { + BalanceAsc = 'balance_ASC', + BalanceAscNullsFirst = 'balance_ASC_NULLS_FIRST', + BalanceDesc = 'balance_DESC', + BalanceDescNullsLast = 'balance_DESC_NULLS_LAST', + ClaimableDelegationCountAsc = 'claimableDelegationCount_ASC', + ClaimableDelegationCountAscNullsFirst = 'claimableDelegationCount_ASC_NULLS_FIRST', + ClaimableDelegationCountDesc = 'claimableDelegationCount_DESC', + ClaimableDelegationCountDescNullsLast = 'claimableDelegationCount_DESC_NULLS_LAST', + GatewayOperatorAutoExtensionAsc = 'gatewayOperator_autoExtension_ASC', + GatewayOperatorAutoExtensionAscNullsFirst = 'gatewayOperator_autoExtension_ASC_NULLS_FIRST', + GatewayOperatorAutoExtensionDesc = 'gatewayOperator_autoExtension_DESC', + GatewayOperatorAutoExtensionDescNullsLast = 'gatewayOperator_autoExtension_DESC_NULLS_LAST', + GatewayOperatorIdAsc = 'gatewayOperator_id_ASC', + GatewayOperatorIdAscNullsFirst = 'gatewayOperator_id_ASC_NULLS_FIRST', + GatewayOperatorIdDesc = 'gatewayOperator_id_DESC', + GatewayOperatorIdDescNullsLast = 'gatewayOperator_id_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + OwnerBalanceAsc = 'owner_balance_ASC', + OwnerBalanceAscNullsFirst = 'owner_balance_ASC_NULLS_FIRST', + OwnerBalanceDesc = 'owner_balance_DESC', + OwnerBalanceDescNullsLast = 'owner_balance_DESC_NULLS_LAST', + OwnerClaimableDelegationCountAsc = 'owner_claimableDelegationCount_ASC', + OwnerClaimableDelegationCountAscNullsFirst = 'owner_claimableDelegationCount_ASC_NULLS_FIRST', + OwnerClaimableDelegationCountDesc = 'owner_claimableDelegationCount_DESC', + OwnerClaimableDelegationCountDescNullsLast = 'owner_claimableDelegationCount_DESC_NULLS_LAST', + OwnerIdAsc = 'owner_id_ASC', + OwnerIdAscNullsFirst = 'owner_id_ASC_NULLS_FIRST', + OwnerIdDesc = 'owner_id_DESC', + OwnerIdDescNullsLast = 'owner_id_DESC_NULLS_LAST', + OwnerTypeAsc = 'owner_type_ASC', + OwnerTypeAscNullsFirst = 'owner_type_ASC_NULLS_FIRST', + OwnerTypeDesc = 'owner_type_DESC', + OwnerTypeDescNullsLast = 'owner_type_DESC_NULLS_LAST', + TypeAsc = 'type_ASC', + TypeAscNullsFirst = 'type_ASC_NULLS_FIRST', + TypeDesc = 'type_DESC', + TypeDescNullsLast = 'type_DESC_NULLS_LAST', +} + +export type AccountTransfer = { + __typename?: 'AccountTransfer'; + account: Account; + direction: TransferDirection; + id: Scalars['String']['output']; + transfer: Transfer; +}; + +export type AccountTransferEdge = { + __typename?: 'AccountTransferEdge'; + cursor: Scalars['String']['output']; + node: AccountTransfer; +}; + +export enum AccountTransferOrderByInput { + AccountBalanceAsc = 'account_balance_ASC', + AccountBalanceAscNullsFirst = 'account_balance_ASC_NULLS_FIRST', + AccountBalanceDesc = 'account_balance_DESC', + AccountBalanceDescNullsLast = 'account_balance_DESC_NULLS_LAST', + AccountClaimableDelegationCountAsc = 'account_claimableDelegationCount_ASC', + AccountClaimableDelegationCountAscNullsFirst = 'account_claimableDelegationCount_ASC_NULLS_FIRST', + AccountClaimableDelegationCountDesc = 'account_claimableDelegationCount_DESC', + AccountClaimableDelegationCountDescNullsLast = 'account_claimableDelegationCount_DESC_NULLS_LAST', + AccountIdAsc = 'account_id_ASC', + AccountIdAscNullsFirst = 'account_id_ASC_NULLS_FIRST', + AccountIdDesc = 'account_id_DESC', + AccountIdDescNullsLast = 'account_id_DESC_NULLS_LAST', + AccountTypeAsc = 'account_type_ASC', + AccountTypeAscNullsFirst = 'account_type_ASC_NULLS_FIRST', + AccountTypeDesc = 'account_type_DESC', + AccountTypeDescNullsLast = 'account_type_DESC_NULLS_LAST', + DirectionAsc = 'direction_ASC', + DirectionAscNullsFirst = 'direction_ASC_NULLS_FIRST', + DirectionDesc = 'direction_DESC', + DirectionDescNullsLast = 'direction_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + TransferAmountAsc = 'transfer_amount_ASC', + TransferAmountAscNullsFirst = 'transfer_amount_ASC_NULLS_FIRST', + TransferAmountDesc = 'transfer_amount_DESC', + TransferAmountDescNullsLast = 'transfer_amount_DESC_NULLS_LAST', + TransferBlockNumberAsc = 'transfer_blockNumber_ASC', + TransferBlockNumberAscNullsFirst = 'transfer_blockNumber_ASC_NULLS_FIRST', + TransferBlockNumberDesc = 'transfer_blockNumber_DESC', + TransferBlockNumberDescNullsLast = 'transfer_blockNumber_DESC_NULLS_LAST', + TransferIdAsc = 'transfer_id_ASC', + TransferIdAscNullsFirst = 'transfer_id_ASC_NULLS_FIRST', + TransferIdDesc = 'transfer_id_DESC', + TransferIdDescNullsLast = 'transfer_id_DESC_NULLS_LAST', + TransferTimestampAsc = 'transfer_timestamp_ASC', + TransferTimestampAscNullsFirst = 'transfer_timestamp_ASC_NULLS_FIRST', + TransferTimestampDesc = 'transfer_timestamp_DESC', + TransferTimestampDescNullsLast = 'transfer_timestamp_DESC_NULLS_LAST', +} + +export type AccountTransferWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + account?: InputMaybe; + account_isNull?: InputMaybe; + direction_eq?: InputMaybe; + direction_in?: InputMaybe>; + direction_isNull?: InputMaybe; + direction_not_eq?: InputMaybe; + direction_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + transfer?: InputMaybe; + transfer_isNull?: InputMaybe; +}; + +export type AccountTransfersConnection = { + __typename?: 'AccountTransfersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export enum AccountType { + User = 'USER', + Vesting = 'VESTING', +} + +export type AccountWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + balance_eq?: InputMaybe; + balance_gt?: InputMaybe; + balance_gte?: InputMaybe; + balance_in?: InputMaybe>; + balance_isNull?: InputMaybe; + balance_lt?: InputMaybe; + balance_lte?: InputMaybe; + balance_not_eq?: InputMaybe; + balance_not_in?: InputMaybe>; + claimableDelegationCount_eq?: InputMaybe; + claimableDelegationCount_gt?: InputMaybe; + claimableDelegationCount_gte?: InputMaybe; + claimableDelegationCount_in?: InputMaybe>; + claimableDelegationCount_isNull?: InputMaybe; + claimableDelegationCount_lt?: InputMaybe; + claimableDelegationCount_lte?: InputMaybe; + claimableDelegationCount_not_eq?: InputMaybe; + claimableDelegationCount_not_in?: InputMaybe>; + claims_every?: InputMaybe; + claims_none?: InputMaybe; + claims_some?: InputMaybe; + delegations_every?: InputMaybe; + delegations_none?: InputMaybe; + delegations_some?: InputMaybe; + gatewayOperator?: InputMaybe; + gatewayOperator_isNull?: InputMaybe; + gatewayStakes_every?: InputMaybe; + gatewayStakes_none?: InputMaybe; + gatewayStakes_some?: InputMaybe; + gateways_every?: InputMaybe; + gateways_none?: InputMaybe; + gateways_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + owned_every?: InputMaybe; + owned_none?: InputMaybe; + owned_some?: InputMaybe; + owner?: InputMaybe; + owner_isNull?: InputMaybe; + transfersFrom_every?: InputMaybe; + transfersFrom_none?: InputMaybe; + transfersFrom_some?: InputMaybe; + transfersTo_every?: InputMaybe; + transfersTo_none?: InputMaybe; + transfersTo_some?: InputMaybe; + transfers_every?: InputMaybe; + transfers_none?: InputMaybe; + transfers_some?: InputMaybe; + type_eq?: InputMaybe; + type_in?: InputMaybe>; + type_isNull?: InputMaybe; + type_not_eq?: InputMaybe; + type_not_in?: InputMaybe>; + workers_every?: InputMaybe; + workers_none?: InputMaybe; + workers_some?: InputMaybe; +}; + +export type AccountsConnection = { + __typename?: 'AccountsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Block = { + __typename?: 'Block'; + hash: Scalars['String']['output']; + height: Scalars['Int']['output']; + id: Scalars['String']['output']; + l1BlockNumber: Scalars['Int']['output']; + timestamp: Scalars['DateTime']['output']; +}; + +export type BlockEdge = { + __typename?: 'BlockEdge'; + cursor: Scalars['String']['output']; + node: Block; +}; + +export enum BlockOrderByInput { + HashAsc = 'hash_ASC', + HashAscNullsFirst = 'hash_ASC_NULLS_FIRST', + HashDesc = 'hash_DESC', + HashDescNullsLast = 'hash_DESC_NULLS_LAST', + HeightAsc = 'height_ASC', + HeightAscNullsFirst = 'height_ASC_NULLS_FIRST', + HeightDesc = 'height_DESC', + HeightDescNullsLast = 'height_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + L1BlockNumberAsc = 'l1BlockNumber_ASC', + L1BlockNumberAscNullsFirst = 'l1BlockNumber_ASC_NULLS_FIRST', + L1BlockNumberDesc = 'l1BlockNumber_DESC', + L1BlockNumberDescNullsLast = 'l1BlockNumber_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', +} + +export type BlockWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + hash_contains?: InputMaybe; + hash_containsInsensitive?: InputMaybe; + hash_endsWith?: InputMaybe; + hash_eq?: InputMaybe; + hash_gt?: InputMaybe; + hash_gte?: InputMaybe; + hash_in?: InputMaybe>; + hash_isNull?: InputMaybe; + hash_lt?: InputMaybe; + hash_lte?: InputMaybe; + hash_not_contains?: InputMaybe; + hash_not_containsInsensitive?: InputMaybe; + hash_not_endsWith?: InputMaybe; + hash_not_eq?: InputMaybe; + hash_not_in?: InputMaybe>; + hash_not_startsWith?: InputMaybe; + hash_startsWith?: InputMaybe; + height_eq?: InputMaybe; + height_gt?: InputMaybe; + height_gte?: InputMaybe; + height_in?: InputMaybe>; + height_isNull?: InputMaybe; + height_lt?: InputMaybe; + height_lte?: InputMaybe; + height_not_eq?: InputMaybe; + height_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + l1BlockNumber_eq?: InputMaybe; + l1BlockNumber_gt?: InputMaybe; + l1BlockNumber_gte?: InputMaybe; + l1BlockNumber_in?: InputMaybe>; + l1BlockNumber_isNull?: InputMaybe; + l1BlockNumber_lt?: InputMaybe; + l1BlockNumber_lte?: InputMaybe; + l1BlockNumber_not_eq?: InputMaybe; + l1BlockNumber_not_in?: InputMaybe>; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; +}; + +export type BlocksConnection = { + __typename?: 'BlocksConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Claim = { + __typename?: 'Claim'; + /** worker.realOwner or delegation.realOwner */ + account: Account; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + delegation?: Maybe; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + type: ClaimType; + worker?: Maybe; +}; + +export type ClaimEdge = { + __typename?: 'ClaimEdge'; + cursor: Scalars['String']['output']; + node: Claim; +}; + +export enum ClaimOrderByInput { + AccountBalanceAsc = 'account_balance_ASC', + AccountBalanceAscNullsFirst = 'account_balance_ASC_NULLS_FIRST', + AccountBalanceDesc = 'account_balance_DESC', + AccountBalanceDescNullsLast = 'account_balance_DESC_NULLS_LAST', + AccountClaimableDelegationCountAsc = 'account_claimableDelegationCount_ASC', + AccountClaimableDelegationCountAscNullsFirst = 'account_claimableDelegationCount_ASC_NULLS_FIRST', + AccountClaimableDelegationCountDesc = 'account_claimableDelegationCount_DESC', + AccountClaimableDelegationCountDescNullsLast = 'account_claimableDelegationCount_DESC_NULLS_LAST', + AccountIdAsc = 'account_id_ASC', + AccountIdAscNullsFirst = 'account_id_ASC_NULLS_FIRST', + AccountIdDesc = 'account_id_DESC', + AccountIdDescNullsLast = 'account_id_DESC_NULLS_LAST', + AccountTypeAsc = 'account_type_ASC', + AccountTypeAscNullsFirst = 'account_type_ASC_NULLS_FIRST', + AccountTypeDesc = 'account_type_DESC', + AccountTypeDescNullsLast = 'account_type_DESC_NULLS_LAST', + AmountAsc = 'amount_ASC', + AmountAscNullsFirst = 'amount_ASC_NULLS_FIRST', + AmountDesc = 'amount_DESC', + AmountDescNullsLast = 'amount_DESC_NULLS_LAST', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + DelegationClaimableRewardAsc = 'delegation_claimableReward_ASC', + DelegationClaimableRewardAscNullsFirst = 'delegation_claimableReward_ASC_NULLS_FIRST', + DelegationClaimableRewardDesc = 'delegation_claimableReward_DESC', + DelegationClaimableRewardDescNullsLast = 'delegation_claimableReward_DESC_NULLS_LAST', + DelegationClaimedRewardAsc = 'delegation_claimedReward_ASC', + DelegationClaimedRewardAscNullsFirst = 'delegation_claimedReward_ASC_NULLS_FIRST', + DelegationClaimedRewardDesc = 'delegation_claimedReward_DESC', + DelegationClaimedRewardDescNullsLast = 'delegation_claimedReward_DESC_NULLS_LAST', + DelegationDepositAsc = 'delegation_deposit_ASC', + DelegationDepositAscNullsFirst = 'delegation_deposit_ASC_NULLS_FIRST', + DelegationDepositDesc = 'delegation_deposit_DESC', + DelegationDepositDescNullsLast = 'delegation_deposit_DESC_NULLS_LAST', + DelegationIdAsc = 'delegation_id_ASC', + DelegationIdAscNullsFirst = 'delegation_id_ASC_NULLS_FIRST', + DelegationIdDesc = 'delegation_id_DESC', + DelegationIdDescNullsLast = 'delegation_id_DESC_NULLS_LAST', + DelegationLockEndAsc = 'delegation_lockEnd_ASC', + DelegationLockEndAscNullsFirst = 'delegation_lockEnd_ASC_NULLS_FIRST', + DelegationLockEndDesc = 'delegation_lockEnd_DESC', + DelegationLockEndDescNullsLast = 'delegation_lockEnd_DESC_NULLS_LAST', + DelegationLockStartAsc = 'delegation_lockStart_ASC', + DelegationLockStartAscNullsFirst = 'delegation_lockStart_ASC_NULLS_FIRST', + DelegationLockStartDesc = 'delegation_lockStart_DESC', + DelegationLockStartDescNullsLast = 'delegation_lockStart_DESC_NULLS_LAST', + DelegationLockedAsc = 'delegation_locked_ASC', + DelegationLockedAscNullsFirst = 'delegation_locked_ASC_NULLS_FIRST', + DelegationLockedDesc = 'delegation_locked_DESC', + DelegationLockedDescNullsLast = 'delegation_locked_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', + TypeAsc = 'type_ASC', + TypeAscNullsFirst = 'type_ASC_NULLS_FIRST', + TypeDesc = 'type_DESC', + TypeDescNullsLast = 'type_DESC_NULLS_LAST', + WorkerAprAsc = 'worker_apr_ASC', + WorkerAprAscNullsFirst = 'worker_apr_ASC_NULLS_FIRST', + WorkerAprDesc = 'worker_apr_DESC', + WorkerAprDescNullsLast = 'worker_apr_DESC_NULLS_LAST', + WorkerBondAsc = 'worker_bond_ASC', + WorkerBondAscNullsFirst = 'worker_bond_ASC_NULLS_FIRST', + WorkerBondDesc = 'worker_bond_DESC', + WorkerBondDescNullsLast = 'worker_bond_DESC_NULLS_LAST', + WorkerClaimableRewardAsc = 'worker_claimableReward_ASC', + WorkerClaimableRewardAscNullsFirst = 'worker_claimableReward_ASC_NULLS_FIRST', + WorkerClaimableRewardDesc = 'worker_claimableReward_DESC', + WorkerClaimableRewardDescNullsLast = 'worker_claimableReward_DESC_NULLS_LAST', + WorkerClaimedRewardAsc = 'worker_claimedReward_ASC', + WorkerClaimedRewardAscNullsFirst = 'worker_claimedReward_ASC_NULLS_FIRST', + WorkerClaimedRewardDesc = 'worker_claimedReward_DESC', + WorkerClaimedRewardDescNullsLast = 'worker_claimedReward_DESC_NULLS_LAST', + WorkerCreatedAtAsc = 'worker_createdAt_ASC', + WorkerCreatedAtAscNullsFirst = 'worker_createdAt_ASC_NULLS_FIRST', + WorkerCreatedAtDesc = 'worker_createdAt_DESC', + WorkerCreatedAtDescNullsLast = 'worker_createdAt_DESC_NULLS_LAST', + WorkerDelegationCountAsc = 'worker_delegationCount_ASC', + WorkerDelegationCountAscNullsFirst = 'worker_delegationCount_ASC_NULLS_FIRST', + WorkerDelegationCountDesc = 'worker_delegationCount_DESC', + WorkerDelegationCountDescNullsLast = 'worker_delegationCount_DESC_NULLS_LAST', + WorkerDescriptionAsc = 'worker_description_ASC', + WorkerDescriptionAscNullsFirst = 'worker_description_ASC_NULLS_FIRST', + WorkerDescriptionDesc = 'worker_description_DESC', + WorkerDescriptionDescNullsLast = 'worker_description_DESC_NULLS_LAST', + WorkerDialOkAsc = 'worker_dialOk_ASC', + WorkerDialOkAscNullsFirst = 'worker_dialOk_ASC_NULLS_FIRST', + WorkerDialOkDesc = 'worker_dialOk_DESC', + WorkerDialOkDescNullsLast = 'worker_dialOk_DESC_NULLS_LAST', + WorkerEmailAsc = 'worker_email_ASC', + WorkerEmailAscNullsFirst = 'worker_email_ASC_NULLS_FIRST', + WorkerEmailDesc = 'worker_email_DESC', + WorkerEmailDescNullsLast = 'worker_email_DESC_NULLS_LAST', + WorkerIdAsc = 'worker_id_ASC', + WorkerIdAscNullsFirst = 'worker_id_ASC_NULLS_FIRST', + WorkerIdDesc = 'worker_id_DESC', + WorkerIdDescNullsLast = 'worker_id_DESC_NULLS_LAST', + WorkerJailedAsc = 'worker_jailed_ASC', + WorkerJailedAscNullsFirst = 'worker_jailed_ASC_NULLS_FIRST', + WorkerJailedDesc = 'worker_jailed_DESC', + WorkerJailedDescNullsLast = 'worker_jailed_DESC_NULLS_LAST', + WorkerNameAsc = 'worker_name_ASC', + WorkerNameAscNullsFirst = 'worker_name_ASC_NULLS_FIRST', + WorkerNameDesc = 'worker_name_DESC', + WorkerNameDescNullsLast = 'worker_name_DESC_NULLS_LAST', + WorkerOnlineAsc = 'worker_online_ASC', + WorkerOnlineAscNullsFirst = 'worker_online_ASC_NULLS_FIRST', + WorkerOnlineDesc = 'worker_online_DESC', + WorkerOnlineDescNullsLast = 'worker_online_DESC_NULLS_LAST', + WorkerPeerIdAsc = 'worker_peerId_ASC', + WorkerPeerIdAscNullsFirst = 'worker_peerId_ASC_NULLS_FIRST', + WorkerPeerIdDesc = 'worker_peerId_DESC', + WorkerPeerIdDescNullsLast = 'worker_peerId_DESC_NULLS_LAST', + WorkerQueries24HoursAsc = 'worker_queries24Hours_ASC', + WorkerQueries24HoursAscNullsFirst = 'worker_queries24Hours_ASC_NULLS_FIRST', + WorkerQueries24HoursDesc = 'worker_queries24Hours_DESC', + WorkerQueries24HoursDescNullsLast = 'worker_queries24Hours_DESC_NULLS_LAST', + WorkerQueries90DaysAsc = 'worker_queries90Days_ASC', + WorkerQueries90DaysAscNullsFirst = 'worker_queries90Days_ASC_NULLS_FIRST', + WorkerQueries90DaysDesc = 'worker_queries90Days_DESC', + WorkerQueries90DaysDescNullsLast = 'worker_queries90Days_DESC_NULLS_LAST', + WorkerScannedData24HoursAsc = 'worker_scannedData24Hours_ASC', + WorkerScannedData24HoursAscNullsFirst = 'worker_scannedData24Hours_ASC_NULLS_FIRST', + WorkerScannedData24HoursDesc = 'worker_scannedData24Hours_DESC', + WorkerScannedData24HoursDescNullsLast = 'worker_scannedData24Hours_DESC_NULLS_LAST', + WorkerScannedData90DaysAsc = 'worker_scannedData90Days_ASC', + WorkerScannedData90DaysAscNullsFirst = 'worker_scannedData90Days_ASC_NULLS_FIRST', + WorkerScannedData90DaysDesc = 'worker_scannedData90Days_DESC', + WorkerScannedData90DaysDescNullsLast = 'worker_scannedData90Days_DESC_NULLS_LAST', + WorkerServedData24HoursAsc = 'worker_servedData24Hours_ASC', + WorkerServedData24HoursAscNullsFirst = 'worker_servedData24Hours_ASC_NULLS_FIRST', + WorkerServedData24HoursDesc = 'worker_servedData24Hours_DESC', + WorkerServedData24HoursDescNullsLast = 'worker_servedData24Hours_DESC_NULLS_LAST', + WorkerServedData90DaysAsc = 'worker_servedData90Days_ASC', + WorkerServedData90DaysAscNullsFirst = 'worker_servedData90Days_ASC_NULLS_FIRST', + WorkerServedData90DaysDesc = 'worker_servedData90Days_DESC', + WorkerServedData90DaysDescNullsLast = 'worker_servedData90Days_DESC_NULLS_LAST', + WorkerStakerAprAsc = 'worker_stakerApr_ASC', + WorkerStakerAprAscNullsFirst = 'worker_stakerApr_ASC_NULLS_FIRST', + WorkerStakerAprDesc = 'worker_stakerApr_DESC', + WorkerStakerAprDescNullsLast = 'worker_stakerApr_DESC_NULLS_LAST', + WorkerStatusAsc = 'worker_status_ASC', + WorkerStatusAscNullsFirst = 'worker_status_ASC_NULLS_FIRST', + WorkerStatusDesc = 'worker_status_DESC', + WorkerStatusDescNullsLast = 'worker_status_DESC_NULLS_LAST', + WorkerStoredDataAsc = 'worker_storedData_ASC', + WorkerStoredDataAscNullsFirst = 'worker_storedData_ASC_NULLS_FIRST', + WorkerStoredDataDesc = 'worker_storedData_DESC', + WorkerStoredDataDescNullsLast = 'worker_storedData_DESC_NULLS_LAST', + WorkerTotalDelegationAsc = 'worker_totalDelegation_ASC', + WorkerTotalDelegationAscNullsFirst = 'worker_totalDelegation_ASC_NULLS_FIRST', + WorkerTotalDelegationDesc = 'worker_totalDelegation_DESC', + WorkerTotalDelegationDescNullsLast = 'worker_totalDelegation_DESC_NULLS_LAST', + WorkerUptime24HoursAsc = 'worker_uptime24Hours_ASC', + WorkerUptime24HoursAscNullsFirst = 'worker_uptime24Hours_ASC_NULLS_FIRST', + WorkerUptime24HoursDesc = 'worker_uptime24Hours_DESC', + WorkerUptime24HoursDescNullsLast = 'worker_uptime24Hours_DESC_NULLS_LAST', + WorkerUptime90DaysAsc = 'worker_uptime90Days_ASC', + WorkerUptime90DaysAscNullsFirst = 'worker_uptime90Days_ASC_NULLS_FIRST', + WorkerUptime90DaysDesc = 'worker_uptime90Days_DESC', + WorkerUptime90DaysDescNullsLast = 'worker_uptime90Days_DESC_NULLS_LAST', + WorkerVersionAsc = 'worker_version_ASC', + WorkerVersionAscNullsFirst = 'worker_version_ASC_NULLS_FIRST', + WorkerVersionDesc = 'worker_version_DESC', + WorkerVersionDescNullsLast = 'worker_version_DESC_NULLS_LAST', + WorkerWebsiteAsc = 'worker_website_ASC', + WorkerWebsiteAscNullsFirst = 'worker_website_ASC_NULLS_FIRST', + WorkerWebsiteDesc = 'worker_website_DESC', + WorkerWebsiteDescNullsLast = 'worker_website_DESC_NULLS_LAST', +} + +export enum ClaimType { + Delegation = 'DELEGATION', + Worker = 'WORKER', +} + +export type ClaimWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + account?: InputMaybe; + account_isNull?: InputMaybe; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + delegation?: InputMaybe; + delegation_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + type_eq?: InputMaybe; + type_in?: InputMaybe>; + type_isNull?: InputMaybe; + type_not_eq?: InputMaybe; + type_not_in?: InputMaybe>; + worker?: InputMaybe; + worker_isNull?: InputMaybe; +}; + +export type ClaimsConnection = { + __typename?: 'ClaimsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Commitment = { + __typename?: 'Commitment'; + from: Scalars['Int']['output']; + id: Scalars['String']['output']; + recipients: Array; + to: Scalars['Int']['output']; +}; + +export type CommitmentEdge = { + __typename?: 'CommitmentEdge'; + cursor: Scalars['String']['output']; + node: Commitment; +}; + +export enum CommitmentOrderByInput { + FromAsc = 'from_ASC', + FromAscNullsFirst = 'from_ASC_NULLS_FIRST', + FromDesc = 'from_DESC', + FromDescNullsLast = 'from_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + ToAsc = 'to_ASC', + ToAscNullsFirst = 'to_ASC_NULLS_FIRST', + ToDesc = 'to_DESC', + ToDescNullsLast = 'to_DESC_NULLS_LAST', +} + +export type CommitmentRecipient = { + __typename?: 'CommitmentRecipient'; + stakerReward: Scalars['BigInt']['output']; + workerId: Scalars['String']['output']; + workerReward: Scalars['BigInt']['output']; +}; + +export type CommitmentWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + from_eq?: InputMaybe; + from_gt?: InputMaybe; + from_gte?: InputMaybe; + from_in?: InputMaybe>; + from_isNull?: InputMaybe; + from_lt?: InputMaybe; + from_lte?: InputMaybe; + from_not_eq?: InputMaybe; + from_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + recipients_isNull?: InputMaybe; + to_eq?: InputMaybe; + to_gt?: InputMaybe; + to_gte?: InputMaybe; + to_in?: InputMaybe>; + to_isNull?: InputMaybe; + to_lt?: InputMaybe; + to_lte?: InputMaybe; + to_not_eq?: InputMaybe; + to_not_in?: InputMaybe>; +}; + +export type CommitmentsConnection = { + __typename?: 'CommitmentsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Delegation = { + __typename?: 'Delegation'; + claimableReward: Scalars['BigInt']['output']; + claimedReward: Scalars['BigInt']['output']; + claims: Array; + deposit: Scalars['BigInt']['output']; + id: Scalars['String']['output']; + lockEnd?: Maybe; + lockStart?: Maybe; + locked?: Maybe; + owner: Account; + /** owner.owner for VESTING account */ + realOwner: Account; + rewards: Array; + worker: Worker; +}; + +export type DelegationClaimsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type DelegationRewardsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type DelegationEdge = { + __typename?: 'DelegationEdge'; + cursor: Scalars['String']['output']; + node: Delegation; +}; + +export enum DelegationOrderByInput { + ClaimableRewardAsc = 'claimableReward_ASC', + ClaimableRewardAscNullsFirst = 'claimableReward_ASC_NULLS_FIRST', + ClaimableRewardDesc = 'claimableReward_DESC', + ClaimableRewardDescNullsLast = 'claimableReward_DESC_NULLS_LAST', + ClaimedRewardAsc = 'claimedReward_ASC', + ClaimedRewardAscNullsFirst = 'claimedReward_ASC_NULLS_FIRST', + ClaimedRewardDesc = 'claimedReward_DESC', + ClaimedRewardDescNullsLast = 'claimedReward_DESC_NULLS_LAST', + DepositAsc = 'deposit_ASC', + DepositAscNullsFirst = 'deposit_ASC_NULLS_FIRST', + DepositDesc = 'deposit_DESC', + DepositDescNullsLast = 'deposit_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + LockEndAsc = 'lockEnd_ASC', + LockEndAscNullsFirst = 'lockEnd_ASC_NULLS_FIRST', + LockEndDesc = 'lockEnd_DESC', + LockEndDescNullsLast = 'lockEnd_DESC_NULLS_LAST', + LockStartAsc = 'lockStart_ASC', + LockStartAscNullsFirst = 'lockStart_ASC_NULLS_FIRST', + LockStartDesc = 'lockStart_DESC', + LockStartDescNullsLast = 'lockStart_DESC_NULLS_LAST', + LockedAsc = 'locked_ASC', + LockedAscNullsFirst = 'locked_ASC_NULLS_FIRST', + LockedDesc = 'locked_DESC', + LockedDescNullsLast = 'locked_DESC_NULLS_LAST', + OwnerBalanceAsc = 'owner_balance_ASC', + OwnerBalanceAscNullsFirst = 'owner_balance_ASC_NULLS_FIRST', + OwnerBalanceDesc = 'owner_balance_DESC', + OwnerBalanceDescNullsLast = 'owner_balance_DESC_NULLS_LAST', + OwnerClaimableDelegationCountAsc = 'owner_claimableDelegationCount_ASC', + OwnerClaimableDelegationCountAscNullsFirst = 'owner_claimableDelegationCount_ASC_NULLS_FIRST', + OwnerClaimableDelegationCountDesc = 'owner_claimableDelegationCount_DESC', + OwnerClaimableDelegationCountDescNullsLast = 'owner_claimableDelegationCount_DESC_NULLS_LAST', + OwnerIdAsc = 'owner_id_ASC', + OwnerIdAscNullsFirst = 'owner_id_ASC_NULLS_FIRST', + OwnerIdDesc = 'owner_id_DESC', + OwnerIdDescNullsLast = 'owner_id_DESC_NULLS_LAST', + OwnerTypeAsc = 'owner_type_ASC', + OwnerTypeAscNullsFirst = 'owner_type_ASC_NULLS_FIRST', + OwnerTypeDesc = 'owner_type_DESC', + OwnerTypeDescNullsLast = 'owner_type_DESC_NULLS_LAST', + RealOwnerBalanceAsc = 'realOwner_balance_ASC', + RealOwnerBalanceAscNullsFirst = 'realOwner_balance_ASC_NULLS_FIRST', + RealOwnerBalanceDesc = 'realOwner_balance_DESC', + RealOwnerBalanceDescNullsLast = 'realOwner_balance_DESC_NULLS_LAST', + RealOwnerClaimableDelegationCountAsc = 'realOwner_claimableDelegationCount_ASC', + RealOwnerClaimableDelegationCountAscNullsFirst = 'realOwner_claimableDelegationCount_ASC_NULLS_FIRST', + RealOwnerClaimableDelegationCountDesc = 'realOwner_claimableDelegationCount_DESC', + RealOwnerClaimableDelegationCountDescNullsLast = 'realOwner_claimableDelegationCount_DESC_NULLS_LAST', + RealOwnerIdAsc = 'realOwner_id_ASC', + RealOwnerIdAscNullsFirst = 'realOwner_id_ASC_NULLS_FIRST', + RealOwnerIdDesc = 'realOwner_id_DESC', + RealOwnerIdDescNullsLast = 'realOwner_id_DESC_NULLS_LAST', + RealOwnerTypeAsc = 'realOwner_type_ASC', + RealOwnerTypeAscNullsFirst = 'realOwner_type_ASC_NULLS_FIRST', + RealOwnerTypeDesc = 'realOwner_type_DESC', + RealOwnerTypeDescNullsLast = 'realOwner_type_DESC_NULLS_LAST', + WorkerAprAsc = 'worker_apr_ASC', + WorkerAprAscNullsFirst = 'worker_apr_ASC_NULLS_FIRST', + WorkerAprDesc = 'worker_apr_DESC', + WorkerAprDescNullsLast = 'worker_apr_DESC_NULLS_LAST', + WorkerBondAsc = 'worker_bond_ASC', + WorkerBondAscNullsFirst = 'worker_bond_ASC_NULLS_FIRST', + WorkerBondDesc = 'worker_bond_DESC', + WorkerBondDescNullsLast = 'worker_bond_DESC_NULLS_LAST', + WorkerClaimableRewardAsc = 'worker_claimableReward_ASC', + WorkerClaimableRewardAscNullsFirst = 'worker_claimableReward_ASC_NULLS_FIRST', + WorkerClaimableRewardDesc = 'worker_claimableReward_DESC', + WorkerClaimableRewardDescNullsLast = 'worker_claimableReward_DESC_NULLS_LAST', + WorkerClaimedRewardAsc = 'worker_claimedReward_ASC', + WorkerClaimedRewardAscNullsFirst = 'worker_claimedReward_ASC_NULLS_FIRST', + WorkerClaimedRewardDesc = 'worker_claimedReward_DESC', + WorkerClaimedRewardDescNullsLast = 'worker_claimedReward_DESC_NULLS_LAST', + WorkerCreatedAtAsc = 'worker_createdAt_ASC', + WorkerCreatedAtAscNullsFirst = 'worker_createdAt_ASC_NULLS_FIRST', + WorkerCreatedAtDesc = 'worker_createdAt_DESC', + WorkerCreatedAtDescNullsLast = 'worker_createdAt_DESC_NULLS_LAST', + WorkerDelegationCountAsc = 'worker_delegationCount_ASC', + WorkerDelegationCountAscNullsFirst = 'worker_delegationCount_ASC_NULLS_FIRST', + WorkerDelegationCountDesc = 'worker_delegationCount_DESC', + WorkerDelegationCountDescNullsLast = 'worker_delegationCount_DESC_NULLS_LAST', + WorkerDescriptionAsc = 'worker_description_ASC', + WorkerDescriptionAscNullsFirst = 'worker_description_ASC_NULLS_FIRST', + WorkerDescriptionDesc = 'worker_description_DESC', + WorkerDescriptionDescNullsLast = 'worker_description_DESC_NULLS_LAST', + WorkerDialOkAsc = 'worker_dialOk_ASC', + WorkerDialOkAscNullsFirst = 'worker_dialOk_ASC_NULLS_FIRST', + WorkerDialOkDesc = 'worker_dialOk_DESC', + WorkerDialOkDescNullsLast = 'worker_dialOk_DESC_NULLS_LAST', + WorkerEmailAsc = 'worker_email_ASC', + WorkerEmailAscNullsFirst = 'worker_email_ASC_NULLS_FIRST', + WorkerEmailDesc = 'worker_email_DESC', + WorkerEmailDescNullsLast = 'worker_email_DESC_NULLS_LAST', + WorkerIdAsc = 'worker_id_ASC', + WorkerIdAscNullsFirst = 'worker_id_ASC_NULLS_FIRST', + WorkerIdDesc = 'worker_id_DESC', + WorkerIdDescNullsLast = 'worker_id_DESC_NULLS_LAST', + WorkerJailedAsc = 'worker_jailed_ASC', + WorkerJailedAscNullsFirst = 'worker_jailed_ASC_NULLS_FIRST', + WorkerJailedDesc = 'worker_jailed_DESC', + WorkerJailedDescNullsLast = 'worker_jailed_DESC_NULLS_LAST', + WorkerNameAsc = 'worker_name_ASC', + WorkerNameAscNullsFirst = 'worker_name_ASC_NULLS_FIRST', + WorkerNameDesc = 'worker_name_DESC', + WorkerNameDescNullsLast = 'worker_name_DESC_NULLS_LAST', + WorkerOnlineAsc = 'worker_online_ASC', + WorkerOnlineAscNullsFirst = 'worker_online_ASC_NULLS_FIRST', + WorkerOnlineDesc = 'worker_online_DESC', + WorkerOnlineDescNullsLast = 'worker_online_DESC_NULLS_LAST', + WorkerPeerIdAsc = 'worker_peerId_ASC', + WorkerPeerIdAscNullsFirst = 'worker_peerId_ASC_NULLS_FIRST', + WorkerPeerIdDesc = 'worker_peerId_DESC', + WorkerPeerIdDescNullsLast = 'worker_peerId_DESC_NULLS_LAST', + WorkerQueries24HoursAsc = 'worker_queries24Hours_ASC', + WorkerQueries24HoursAscNullsFirst = 'worker_queries24Hours_ASC_NULLS_FIRST', + WorkerQueries24HoursDesc = 'worker_queries24Hours_DESC', + WorkerQueries24HoursDescNullsLast = 'worker_queries24Hours_DESC_NULLS_LAST', + WorkerQueries90DaysAsc = 'worker_queries90Days_ASC', + WorkerQueries90DaysAscNullsFirst = 'worker_queries90Days_ASC_NULLS_FIRST', + WorkerQueries90DaysDesc = 'worker_queries90Days_DESC', + WorkerQueries90DaysDescNullsLast = 'worker_queries90Days_DESC_NULLS_LAST', + WorkerScannedData24HoursAsc = 'worker_scannedData24Hours_ASC', + WorkerScannedData24HoursAscNullsFirst = 'worker_scannedData24Hours_ASC_NULLS_FIRST', + WorkerScannedData24HoursDesc = 'worker_scannedData24Hours_DESC', + WorkerScannedData24HoursDescNullsLast = 'worker_scannedData24Hours_DESC_NULLS_LAST', + WorkerScannedData90DaysAsc = 'worker_scannedData90Days_ASC', + WorkerScannedData90DaysAscNullsFirst = 'worker_scannedData90Days_ASC_NULLS_FIRST', + WorkerScannedData90DaysDesc = 'worker_scannedData90Days_DESC', + WorkerScannedData90DaysDescNullsLast = 'worker_scannedData90Days_DESC_NULLS_LAST', + WorkerServedData24HoursAsc = 'worker_servedData24Hours_ASC', + WorkerServedData24HoursAscNullsFirst = 'worker_servedData24Hours_ASC_NULLS_FIRST', + WorkerServedData24HoursDesc = 'worker_servedData24Hours_DESC', + WorkerServedData24HoursDescNullsLast = 'worker_servedData24Hours_DESC_NULLS_LAST', + WorkerServedData90DaysAsc = 'worker_servedData90Days_ASC', + WorkerServedData90DaysAscNullsFirst = 'worker_servedData90Days_ASC_NULLS_FIRST', + WorkerServedData90DaysDesc = 'worker_servedData90Days_DESC', + WorkerServedData90DaysDescNullsLast = 'worker_servedData90Days_DESC_NULLS_LAST', + WorkerStakerAprAsc = 'worker_stakerApr_ASC', + WorkerStakerAprAscNullsFirst = 'worker_stakerApr_ASC_NULLS_FIRST', + WorkerStakerAprDesc = 'worker_stakerApr_DESC', + WorkerStakerAprDescNullsLast = 'worker_stakerApr_DESC_NULLS_LAST', + WorkerStatusAsc = 'worker_status_ASC', + WorkerStatusAscNullsFirst = 'worker_status_ASC_NULLS_FIRST', + WorkerStatusDesc = 'worker_status_DESC', + WorkerStatusDescNullsLast = 'worker_status_DESC_NULLS_LAST', + WorkerStoredDataAsc = 'worker_storedData_ASC', + WorkerStoredDataAscNullsFirst = 'worker_storedData_ASC_NULLS_FIRST', + WorkerStoredDataDesc = 'worker_storedData_DESC', + WorkerStoredDataDescNullsLast = 'worker_storedData_DESC_NULLS_LAST', + WorkerTotalDelegationAsc = 'worker_totalDelegation_ASC', + WorkerTotalDelegationAscNullsFirst = 'worker_totalDelegation_ASC_NULLS_FIRST', + WorkerTotalDelegationDesc = 'worker_totalDelegation_DESC', + WorkerTotalDelegationDescNullsLast = 'worker_totalDelegation_DESC_NULLS_LAST', + WorkerUptime24HoursAsc = 'worker_uptime24Hours_ASC', + WorkerUptime24HoursAscNullsFirst = 'worker_uptime24Hours_ASC_NULLS_FIRST', + WorkerUptime24HoursDesc = 'worker_uptime24Hours_DESC', + WorkerUptime24HoursDescNullsLast = 'worker_uptime24Hours_DESC_NULLS_LAST', + WorkerUptime90DaysAsc = 'worker_uptime90Days_ASC', + WorkerUptime90DaysAscNullsFirst = 'worker_uptime90Days_ASC_NULLS_FIRST', + WorkerUptime90DaysDesc = 'worker_uptime90Days_DESC', + WorkerUptime90DaysDescNullsLast = 'worker_uptime90Days_DESC_NULLS_LAST', + WorkerVersionAsc = 'worker_version_ASC', + WorkerVersionAscNullsFirst = 'worker_version_ASC_NULLS_FIRST', + WorkerVersionDesc = 'worker_version_DESC', + WorkerVersionDescNullsLast = 'worker_version_DESC_NULLS_LAST', + WorkerWebsiteAsc = 'worker_website_ASC', + WorkerWebsiteAscNullsFirst = 'worker_website_ASC_NULLS_FIRST', + WorkerWebsiteDesc = 'worker_website_DESC', + WorkerWebsiteDescNullsLast = 'worker_website_DESC_NULLS_LAST', +} + +export type DelegationReward = { + __typename?: 'DelegationReward'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + delegation: Delegation; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; +}; + +export type DelegationRewardEdge = { + __typename?: 'DelegationRewardEdge'; + cursor: Scalars['String']['output']; + node: DelegationReward; +}; + +export enum DelegationRewardOrderByInput { + AmountAsc = 'amount_ASC', + AmountAscNullsFirst = 'amount_ASC_NULLS_FIRST', + AmountDesc = 'amount_DESC', + AmountDescNullsLast = 'amount_DESC_NULLS_LAST', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + DelegationClaimableRewardAsc = 'delegation_claimableReward_ASC', + DelegationClaimableRewardAscNullsFirst = 'delegation_claimableReward_ASC_NULLS_FIRST', + DelegationClaimableRewardDesc = 'delegation_claimableReward_DESC', + DelegationClaimableRewardDescNullsLast = 'delegation_claimableReward_DESC_NULLS_LAST', + DelegationClaimedRewardAsc = 'delegation_claimedReward_ASC', + DelegationClaimedRewardAscNullsFirst = 'delegation_claimedReward_ASC_NULLS_FIRST', + DelegationClaimedRewardDesc = 'delegation_claimedReward_DESC', + DelegationClaimedRewardDescNullsLast = 'delegation_claimedReward_DESC_NULLS_LAST', + DelegationDepositAsc = 'delegation_deposit_ASC', + DelegationDepositAscNullsFirst = 'delegation_deposit_ASC_NULLS_FIRST', + DelegationDepositDesc = 'delegation_deposit_DESC', + DelegationDepositDescNullsLast = 'delegation_deposit_DESC_NULLS_LAST', + DelegationIdAsc = 'delegation_id_ASC', + DelegationIdAscNullsFirst = 'delegation_id_ASC_NULLS_FIRST', + DelegationIdDesc = 'delegation_id_DESC', + DelegationIdDescNullsLast = 'delegation_id_DESC_NULLS_LAST', + DelegationLockEndAsc = 'delegation_lockEnd_ASC', + DelegationLockEndAscNullsFirst = 'delegation_lockEnd_ASC_NULLS_FIRST', + DelegationLockEndDesc = 'delegation_lockEnd_DESC', + DelegationLockEndDescNullsLast = 'delegation_lockEnd_DESC_NULLS_LAST', + DelegationLockStartAsc = 'delegation_lockStart_ASC', + DelegationLockStartAscNullsFirst = 'delegation_lockStart_ASC_NULLS_FIRST', + DelegationLockStartDesc = 'delegation_lockStart_DESC', + DelegationLockStartDescNullsLast = 'delegation_lockStart_DESC_NULLS_LAST', + DelegationLockedAsc = 'delegation_locked_ASC', + DelegationLockedAscNullsFirst = 'delegation_locked_ASC_NULLS_FIRST', + DelegationLockedDesc = 'delegation_locked_DESC', + DelegationLockedDescNullsLast = 'delegation_locked_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', +} + +export type DelegationRewardWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + delegation?: InputMaybe; + delegation_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; +}; + +export type DelegationRewardsConnection = { + __typename?: 'DelegationRewardsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type DelegationWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + claimableReward_eq?: InputMaybe; + claimableReward_gt?: InputMaybe; + claimableReward_gte?: InputMaybe; + claimableReward_in?: InputMaybe>; + claimableReward_isNull?: InputMaybe; + claimableReward_lt?: InputMaybe; + claimableReward_lte?: InputMaybe; + claimableReward_not_eq?: InputMaybe; + claimableReward_not_in?: InputMaybe>; + claimedReward_eq?: InputMaybe; + claimedReward_gt?: InputMaybe; + claimedReward_gte?: InputMaybe; + claimedReward_in?: InputMaybe>; + claimedReward_isNull?: InputMaybe; + claimedReward_lt?: InputMaybe; + claimedReward_lte?: InputMaybe; + claimedReward_not_eq?: InputMaybe; + claimedReward_not_in?: InputMaybe>; + claims_every?: InputMaybe; + claims_none?: InputMaybe; + claims_some?: InputMaybe; + deposit_eq?: InputMaybe; + deposit_gt?: InputMaybe; + deposit_gte?: InputMaybe; + deposit_in?: InputMaybe>; + deposit_isNull?: InputMaybe; + deposit_lt?: InputMaybe; + deposit_lte?: InputMaybe; + deposit_not_eq?: InputMaybe; + deposit_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + lockEnd_eq?: InputMaybe; + lockEnd_gt?: InputMaybe; + lockEnd_gte?: InputMaybe; + lockEnd_in?: InputMaybe>; + lockEnd_isNull?: InputMaybe; + lockEnd_lt?: InputMaybe; + lockEnd_lte?: InputMaybe; + lockEnd_not_eq?: InputMaybe; + lockEnd_not_in?: InputMaybe>; + lockStart_eq?: InputMaybe; + lockStart_gt?: InputMaybe; + lockStart_gte?: InputMaybe; + lockStart_in?: InputMaybe>; + lockStart_isNull?: InputMaybe; + lockStart_lt?: InputMaybe; + lockStart_lte?: InputMaybe; + lockStart_not_eq?: InputMaybe; + lockStart_not_in?: InputMaybe>; + locked_eq?: InputMaybe; + locked_isNull?: InputMaybe; + locked_not_eq?: InputMaybe; + owner?: InputMaybe; + owner_isNull?: InputMaybe; + realOwner?: InputMaybe; + realOwner_isNull?: InputMaybe; + rewards_every?: InputMaybe; + rewards_none?: InputMaybe; + rewards_some?: InputMaybe; + worker?: InputMaybe; + worker_isNull?: InputMaybe; +}; + +export type DelegationsConnection = { + __typename?: 'DelegationsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Epoch = { + __typename?: 'Epoch'; + activeWorkerIds?: Maybe>; + end: Scalars['Int']['output']; + endedAt?: Maybe; + id: Scalars['String']['output']; + number: Scalars['Int']['output']; + start: Scalars['Int']['output']; + startedAt?: Maybe; + status: EpochStatus; +}; + +export type EpochEdge = { + __typename?: 'EpochEdge'; + cursor: Scalars['String']['output']; + node: Epoch; +}; + +export enum EpochOrderByInput { + EndAsc = 'end_ASC', + EndAscNullsFirst = 'end_ASC_NULLS_FIRST', + EndDesc = 'end_DESC', + EndDescNullsLast = 'end_DESC_NULLS_LAST', + EndedAtAsc = 'endedAt_ASC', + EndedAtAscNullsFirst = 'endedAt_ASC_NULLS_FIRST', + EndedAtDesc = 'endedAt_DESC', + EndedAtDescNullsLast = 'endedAt_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + NumberAsc = 'number_ASC', + NumberAscNullsFirst = 'number_ASC_NULLS_FIRST', + NumberDesc = 'number_DESC', + NumberDescNullsLast = 'number_DESC_NULLS_LAST', + StartAsc = 'start_ASC', + StartAscNullsFirst = 'start_ASC_NULLS_FIRST', + StartDesc = 'start_DESC', + StartDescNullsLast = 'start_DESC_NULLS_LAST', + StartedAtAsc = 'startedAt_ASC', + StartedAtAscNullsFirst = 'startedAt_ASC_NULLS_FIRST', + StartedAtDesc = 'startedAt_DESC', + StartedAtDescNullsLast = 'startedAt_DESC_NULLS_LAST', + StatusAsc = 'status_ASC', + StatusAscNullsFirst = 'status_ASC_NULLS_FIRST', + StatusDesc = 'status_DESC', + StatusDescNullsLast = 'status_DESC_NULLS_LAST', +} + +export enum EpochStatus { + Ended = 'ENDED', + Planned = 'PLANNED', + Started = 'STARTED', +} + +export type EpochWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + activeWorkerIds_containsAll?: InputMaybe>; + activeWorkerIds_containsAny?: InputMaybe>; + activeWorkerIds_containsNone?: InputMaybe>; + activeWorkerIds_isNull?: InputMaybe; + end_eq?: InputMaybe; + end_gt?: InputMaybe; + end_gte?: InputMaybe; + end_in?: InputMaybe>; + end_isNull?: InputMaybe; + end_lt?: InputMaybe; + end_lte?: InputMaybe; + end_not_eq?: InputMaybe; + end_not_in?: InputMaybe>; + endedAt_eq?: InputMaybe; + endedAt_gt?: InputMaybe; + endedAt_gte?: InputMaybe; + endedAt_in?: InputMaybe>; + endedAt_isNull?: InputMaybe; + endedAt_lt?: InputMaybe; + endedAt_lte?: InputMaybe; + endedAt_not_eq?: InputMaybe; + endedAt_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + number_eq?: InputMaybe; + number_gt?: InputMaybe; + number_gte?: InputMaybe; + number_in?: InputMaybe>; + number_isNull?: InputMaybe; + number_lt?: InputMaybe; + number_lte?: InputMaybe; + number_not_eq?: InputMaybe; + number_not_in?: InputMaybe>; + start_eq?: InputMaybe; + start_gt?: InputMaybe; + start_gte?: InputMaybe; + start_in?: InputMaybe>; + start_isNull?: InputMaybe; + start_lt?: InputMaybe; + start_lte?: InputMaybe; + start_not_eq?: InputMaybe; + start_not_in?: InputMaybe>; + startedAt_eq?: InputMaybe; + startedAt_gt?: InputMaybe; + startedAt_gte?: InputMaybe; + startedAt_in?: InputMaybe>; + startedAt_isNull?: InputMaybe; + startedAt_lt?: InputMaybe; + startedAt_lte?: InputMaybe; + startedAt_not_eq?: InputMaybe; + startedAt_not_in?: InputMaybe>; + status_eq?: InputMaybe; + status_in?: InputMaybe>; + status_isNull?: InputMaybe; + status_not_eq?: InputMaybe; + status_not_in?: InputMaybe>; +}; + +export type EpochesConnection = { + __typename?: 'EpochesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type Gateway = { + __typename?: 'Gateway'; + createdAt: Scalars['DateTime']['output']; + description?: Maybe; + email?: Maybe; + endpointUrl?: Maybe; + id: Scalars['String']['output']; + name?: Maybe; + operator?: Maybe; + owner?: Maybe; + status: GatewayStatus; + statusHistory: Array; + website?: Maybe; +}; + +export type GatewayStatusHistoryArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type GatewayEdge = { + __typename?: 'GatewayEdge'; + cursor: Scalars['String']['output']; + node: Gateway; +}; + +export type GatewayOperator = { + __typename?: 'GatewayOperator'; + account: Account; + autoExtension: Scalars['Boolean']['output']; + gateways: Array; + id: Scalars['String']['output']; + pendingStake?: Maybe; + stake?: Maybe; +}; + +export type GatewayOperatorGatewaysArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type GatewayOperatorEdge = { + __typename?: 'GatewayOperatorEdge'; + cursor: Scalars['String']['output']; + node: GatewayOperator; +}; + +export enum GatewayOperatorOrderByInput { + AccountBalanceAsc = 'account_balance_ASC', + AccountBalanceAscNullsFirst = 'account_balance_ASC_NULLS_FIRST', + AccountBalanceDesc = 'account_balance_DESC', + AccountBalanceDescNullsLast = 'account_balance_DESC_NULLS_LAST', + AccountClaimableDelegationCountAsc = 'account_claimableDelegationCount_ASC', + AccountClaimableDelegationCountAscNullsFirst = 'account_claimableDelegationCount_ASC_NULLS_FIRST', + AccountClaimableDelegationCountDesc = 'account_claimableDelegationCount_DESC', + AccountClaimableDelegationCountDescNullsLast = 'account_claimableDelegationCount_DESC_NULLS_LAST', + AccountIdAsc = 'account_id_ASC', + AccountIdAscNullsFirst = 'account_id_ASC_NULLS_FIRST', + AccountIdDesc = 'account_id_DESC', + AccountIdDescNullsLast = 'account_id_DESC_NULLS_LAST', + AccountTypeAsc = 'account_type_ASC', + AccountTypeAscNullsFirst = 'account_type_ASC_NULLS_FIRST', + AccountTypeDesc = 'account_type_DESC', + AccountTypeDescNullsLast = 'account_type_DESC_NULLS_LAST', + AutoExtensionAsc = 'autoExtension_ASC', + AutoExtensionAscNullsFirst = 'autoExtension_ASC_NULLS_FIRST', + AutoExtensionDesc = 'autoExtension_DESC', + AutoExtensionDescNullsLast = 'autoExtension_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + PendingStakeAmountAsc = 'pendingStake_amount_ASC', + PendingStakeAmountAscNullsFirst = 'pendingStake_amount_ASC_NULLS_FIRST', + PendingStakeAmountDesc = 'pendingStake_amount_DESC', + PendingStakeAmountDescNullsLast = 'pendingStake_amount_DESC_NULLS_LAST', + PendingStakeComputationUnitsAsc = 'pendingStake_computationUnits_ASC', + PendingStakeComputationUnitsAscNullsFirst = 'pendingStake_computationUnits_ASC_NULLS_FIRST', + PendingStakeComputationUnitsDesc = 'pendingStake_computationUnits_DESC', + PendingStakeComputationUnitsDescNullsLast = 'pendingStake_computationUnits_DESC_NULLS_LAST', + PendingStakeIdAsc = 'pendingStake_id_ASC', + PendingStakeIdAscNullsFirst = 'pendingStake_id_ASC_NULLS_FIRST', + PendingStakeIdDesc = 'pendingStake_id_DESC', + PendingStakeIdDescNullsLast = 'pendingStake_id_DESC_NULLS_LAST', + PendingStakeIndexAsc = 'pendingStake_index_ASC', + PendingStakeIndexAscNullsFirst = 'pendingStake_index_ASC_NULLS_FIRST', + PendingStakeIndexDesc = 'pendingStake_index_DESC', + PendingStakeIndexDescNullsLast = 'pendingStake_index_DESC_NULLS_LAST', + PendingStakeLockEndAsc = 'pendingStake_lockEnd_ASC', + PendingStakeLockEndAscNullsFirst = 'pendingStake_lockEnd_ASC_NULLS_FIRST', + PendingStakeLockEndDesc = 'pendingStake_lockEnd_DESC', + PendingStakeLockEndDescNullsLast = 'pendingStake_lockEnd_DESC_NULLS_LAST', + PendingStakeLockStartAsc = 'pendingStake_lockStart_ASC', + PendingStakeLockStartAscNullsFirst = 'pendingStake_lockStart_ASC_NULLS_FIRST', + PendingStakeLockStartDesc = 'pendingStake_lockStart_DESC', + PendingStakeLockStartDescNullsLast = 'pendingStake_lockStart_DESC_NULLS_LAST', + PendingStakeLockedAsc = 'pendingStake_locked_ASC', + PendingStakeLockedAscNullsFirst = 'pendingStake_locked_ASC_NULLS_FIRST', + PendingStakeLockedDesc = 'pendingStake_locked_DESC', + PendingStakeLockedDescNullsLast = 'pendingStake_locked_DESC_NULLS_LAST', + StakeAmountAsc = 'stake_amount_ASC', + StakeAmountAscNullsFirst = 'stake_amount_ASC_NULLS_FIRST', + StakeAmountDesc = 'stake_amount_DESC', + StakeAmountDescNullsLast = 'stake_amount_DESC_NULLS_LAST', + StakeComputationUnitsAsc = 'stake_computationUnits_ASC', + StakeComputationUnitsAscNullsFirst = 'stake_computationUnits_ASC_NULLS_FIRST', + StakeComputationUnitsDesc = 'stake_computationUnits_DESC', + StakeComputationUnitsDescNullsLast = 'stake_computationUnits_DESC_NULLS_LAST', + StakeIdAsc = 'stake_id_ASC', + StakeIdAscNullsFirst = 'stake_id_ASC_NULLS_FIRST', + StakeIdDesc = 'stake_id_DESC', + StakeIdDescNullsLast = 'stake_id_DESC_NULLS_LAST', + StakeIndexAsc = 'stake_index_ASC', + StakeIndexAscNullsFirst = 'stake_index_ASC_NULLS_FIRST', + StakeIndexDesc = 'stake_index_DESC', + StakeIndexDescNullsLast = 'stake_index_DESC_NULLS_LAST', + StakeLockEndAsc = 'stake_lockEnd_ASC', + StakeLockEndAscNullsFirst = 'stake_lockEnd_ASC_NULLS_FIRST', + StakeLockEndDesc = 'stake_lockEnd_DESC', + StakeLockEndDescNullsLast = 'stake_lockEnd_DESC_NULLS_LAST', + StakeLockStartAsc = 'stake_lockStart_ASC', + StakeLockStartAscNullsFirst = 'stake_lockStart_ASC_NULLS_FIRST', + StakeLockStartDesc = 'stake_lockStart_DESC', + StakeLockStartDescNullsLast = 'stake_lockStart_DESC_NULLS_LAST', + StakeLockedAsc = 'stake_locked_ASC', + StakeLockedAscNullsFirst = 'stake_locked_ASC_NULLS_FIRST', + StakeLockedDesc = 'stake_locked_DESC', + StakeLockedDescNullsLast = 'stake_locked_DESC_NULLS_LAST', +} + +export type GatewayOperatorWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + account?: InputMaybe; + account_isNull?: InputMaybe; + autoExtension_eq?: InputMaybe; + autoExtension_isNull?: InputMaybe; + autoExtension_not_eq?: InputMaybe; + gateways_every?: InputMaybe; + gateways_none?: InputMaybe; + gateways_some?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + pendingStake?: InputMaybe; + pendingStake_isNull?: InputMaybe; + stake?: InputMaybe; + stake_isNull?: InputMaybe; +}; + +export type GatewayOperatorsConnection = { + __typename?: 'GatewayOperatorsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export enum GatewayOrderByInput { + CreatedAtAsc = 'createdAt_ASC', + CreatedAtAscNullsFirst = 'createdAt_ASC_NULLS_FIRST', + CreatedAtDesc = 'createdAt_DESC', + CreatedAtDescNullsLast = 'createdAt_DESC_NULLS_LAST', + DescriptionAsc = 'description_ASC', + DescriptionAscNullsFirst = 'description_ASC_NULLS_FIRST', + DescriptionDesc = 'description_DESC', + DescriptionDescNullsLast = 'description_DESC_NULLS_LAST', + EmailAsc = 'email_ASC', + EmailAscNullsFirst = 'email_ASC_NULLS_FIRST', + EmailDesc = 'email_DESC', + EmailDescNullsLast = 'email_DESC_NULLS_LAST', + EndpointUrlAsc = 'endpointUrl_ASC', + EndpointUrlAscNullsFirst = 'endpointUrl_ASC_NULLS_FIRST', + EndpointUrlDesc = 'endpointUrl_DESC', + EndpointUrlDescNullsLast = 'endpointUrl_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + NameAsc = 'name_ASC', + NameAscNullsFirst = 'name_ASC_NULLS_FIRST', + NameDesc = 'name_DESC', + NameDescNullsLast = 'name_DESC_NULLS_LAST', + OperatorAutoExtensionAsc = 'operator_autoExtension_ASC', + OperatorAutoExtensionAscNullsFirst = 'operator_autoExtension_ASC_NULLS_FIRST', + OperatorAutoExtensionDesc = 'operator_autoExtension_DESC', + OperatorAutoExtensionDescNullsLast = 'operator_autoExtension_DESC_NULLS_LAST', + OperatorIdAsc = 'operator_id_ASC', + OperatorIdAscNullsFirst = 'operator_id_ASC_NULLS_FIRST', + OperatorIdDesc = 'operator_id_DESC', + OperatorIdDescNullsLast = 'operator_id_DESC_NULLS_LAST', + OwnerBalanceAsc = 'owner_balance_ASC', + OwnerBalanceAscNullsFirst = 'owner_balance_ASC_NULLS_FIRST', + OwnerBalanceDesc = 'owner_balance_DESC', + OwnerBalanceDescNullsLast = 'owner_balance_DESC_NULLS_LAST', + OwnerClaimableDelegationCountAsc = 'owner_claimableDelegationCount_ASC', + OwnerClaimableDelegationCountAscNullsFirst = 'owner_claimableDelegationCount_ASC_NULLS_FIRST', + OwnerClaimableDelegationCountDesc = 'owner_claimableDelegationCount_DESC', + OwnerClaimableDelegationCountDescNullsLast = 'owner_claimableDelegationCount_DESC_NULLS_LAST', + OwnerIdAsc = 'owner_id_ASC', + OwnerIdAscNullsFirst = 'owner_id_ASC_NULLS_FIRST', + OwnerIdDesc = 'owner_id_DESC', + OwnerIdDescNullsLast = 'owner_id_DESC_NULLS_LAST', + OwnerTypeAsc = 'owner_type_ASC', + OwnerTypeAscNullsFirst = 'owner_type_ASC_NULLS_FIRST', + OwnerTypeDesc = 'owner_type_DESC', + OwnerTypeDescNullsLast = 'owner_type_DESC_NULLS_LAST', + StatusAsc = 'status_ASC', + StatusAscNullsFirst = 'status_ASC_NULLS_FIRST', + StatusDesc = 'status_DESC', + StatusDescNullsLast = 'status_DESC_NULLS_LAST', + WebsiteAsc = 'website_ASC', + WebsiteAscNullsFirst = 'website_ASC_NULLS_FIRST', + WebsiteDesc = 'website_DESC', + WebsiteDescNullsLast = 'website_DESC_NULLS_LAST', +} + +export type GatewayStake = { + __typename?: 'GatewayStake'; + amount: Scalars['BigInt']['output']; + computationUnits: Scalars['BigInt']['output']; + id: Scalars['String']['output']; + index: Scalars['Int']['output']; + lockEnd: Scalars['Int']['output']; + lockStart: Scalars['Int']['output']; + locked: Scalars['Boolean']['output']; + operator: GatewayOperator; + owner: Account; +}; + +export type GatewayStakeEdge = { + __typename?: 'GatewayStakeEdge'; + cursor: Scalars['String']['output']; + node: GatewayStake; +}; + +export enum GatewayStakeOrderByInput { + AmountAsc = 'amount_ASC', + AmountAscNullsFirst = 'amount_ASC_NULLS_FIRST', + AmountDesc = 'amount_DESC', + AmountDescNullsLast = 'amount_DESC_NULLS_LAST', + ComputationUnitsAsc = 'computationUnits_ASC', + ComputationUnitsAscNullsFirst = 'computationUnits_ASC_NULLS_FIRST', + ComputationUnitsDesc = 'computationUnits_DESC', + ComputationUnitsDescNullsLast = 'computationUnits_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + IndexAsc = 'index_ASC', + IndexAscNullsFirst = 'index_ASC_NULLS_FIRST', + IndexDesc = 'index_DESC', + IndexDescNullsLast = 'index_DESC_NULLS_LAST', + LockEndAsc = 'lockEnd_ASC', + LockEndAscNullsFirst = 'lockEnd_ASC_NULLS_FIRST', + LockEndDesc = 'lockEnd_DESC', + LockEndDescNullsLast = 'lockEnd_DESC_NULLS_LAST', + LockStartAsc = 'lockStart_ASC', + LockStartAscNullsFirst = 'lockStart_ASC_NULLS_FIRST', + LockStartDesc = 'lockStart_DESC', + LockStartDescNullsLast = 'lockStart_DESC_NULLS_LAST', + LockedAsc = 'locked_ASC', + LockedAscNullsFirst = 'locked_ASC_NULLS_FIRST', + LockedDesc = 'locked_DESC', + LockedDescNullsLast = 'locked_DESC_NULLS_LAST', + OperatorAutoExtensionAsc = 'operator_autoExtension_ASC', + OperatorAutoExtensionAscNullsFirst = 'operator_autoExtension_ASC_NULLS_FIRST', + OperatorAutoExtensionDesc = 'operator_autoExtension_DESC', + OperatorAutoExtensionDescNullsLast = 'operator_autoExtension_DESC_NULLS_LAST', + OperatorIdAsc = 'operator_id_ASC', + OperatorIdAscNullsFirst = 'operator_id_ASC_NULLS_FIRST', + OperatorIdDesc = 'operator_id_DESC', + OperatorIdDescNullsLast = 'operator_id_DESC_NULLS_LAST', + OwnerBalanceAsc = 'owner_balance_ASC', + OwnerBalanceAscNullsFirst = 'owner_balance_ASC_NULLS_FIRST', + OwnerBalanceDesc = 'owner_balance_DESC', + OwnerBalanceDescNullsLast = 'owner_balance_DESC_NULLS_LAST', + OwnerClaimableDelegationCountAsc = 'owner_claimableDelegationCount_ASC', + OwnerClaimableDelegationCountAscNullsFirst = 'owner_claimableDelegationCount_ASC_NULLS_FIRST', + OwnerClaimableDelegationCountDesc = 'owner_claimableDelegationCount_DESC', + OwnerClaimableDelegationCountDescNullsLast = 'owner_claimableDelegationCount_DESC_NULLS_LAST', + OwnerIdAsc = 'owner_id_ASC', + OwnerIdAscNullsFirst = 'owner_id_ASC_NULLS_FIRST', + OwnerIdDesc = 'owner_id_DESC', + OwnerIdDescNullsLast = 'owner_id_DESC_NULLS_LAST', + OwnerTypeAsc = 'owner_type_ASC', + OwnerTypeAscNullsFirst = 'owner_type_ASC_NULLS_FIRST', + OwnerTypeDesc = 'owner_type_DESC', + OwnerTypeDescNullsLast = 'owner_type_DESC_NULLS_LAST', +} + +export type GatewayStakeWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + computationUnits_eq?: InputMaybe; + computationUnits_gt?: InputMaybe; + computationUnits_gte?: InputMaybe; + computationUnits_in?: InputMaybe>; + computationUnits_isNull?: InputMaybe; + computationUnits_lt?: InputMaybe; + computationUnits_lte?: InputMaybe; + computationUnits_not_eq?: InputMaybe; + computationUnits_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + index_eq?: InputMaybe; + index_gt?: InputMaybe; + index_gte?: InputMaybe; + index_in?: InputMaybe>; + index_isNull?: InputMaybe; + index_lt?: InputMaybe; + index_lte?: InputMaybe; + index_not_eq?: InputMaybe; + index_not_in?: InputMaybe>; + lockEnd_eq?: InputMaybe; + lockEnd_gt?: InputMaybe; + lockEnd_gte?: InputMaybe; + lockEnd_in?: InputMaybe>; + lockEnd_isNull?: InputMaybe; + lockEnd_lt?: InputMaybe; + lockEnd_lte?: InputMaybe; + lockEnd_not_eq?: InputMaybe; + lockEnd_not_in?: InputMaybe>; + lockStart_eq?: InputMaybe; + lockStart_gt?: InputMaybe; + lockStart_gte?: InputMaybe; + lockStart_in?: InputMaybe>; + lockStart_isNull?: InputMaybe; + lockStart_lt?: InputMaybe; + lockStart_lte?: InputMaybe; + lockStart_not_eq?: InputMaybe; + lockStart_not_in?: InputMaybe>; + locked_eq?: InputMaybe; + locked_isNull?: InputMaybe; + locked_not_eq?: InputMaybe; + operator?: InputMaybe; + operator_isNull?: InputMaybe; + owner?: InputMaybe; + owner_isNull?: InputMaybe; +}; + +export type GatewayStakesConnection = { + __typename?: 'GatewayStakesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export enum GatewayStatus { + Deregistered = 'DEREGISTERED', + Registered = 'REGISTERED', + Unknown = 'UNKNOWN', +} + +export type GatewayStatusChange = { + __typename?: 'GatewayStatusChange'; + blockNumber: Scalars['Int']['output']; + gateway: Gateway; + id: Scalars['String']['output']; + status: GatewayStatus; + timestamp?: Maybe; +}; + +export type GatewayStatusChangeEdge = { + __typename?: 'GatewayStatusChangeEdge'; + cursor: Scalars['String']['output']; + node: GatewayStatusChange; +}; + +export enum GatewayStatusChangeOrderByInput { + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + GatewayCreatedAtAsc = 'gateway_createdAt_ASC', + GatewayCreatedAtAscNullsFirst = 'gateway_createdAt_ASC_NULLS_FIRST', + GatewayCreatedAtDesc = 'gateway_createdAt_DESC', + GatewayCreatedAtDescNullsLast = 'gateway_createdAt_DESC_NULLS_LAST', + GatewayDescriptionAsc = 'gateway_description_ASC', + GatewayDescriptionAscNullsFirst = 'gateway_description_ASC_NULLS_FIRST', + GatewayDescriptionDesc = 'gateway_description_DESC', + GatewayDescriptionDescNullsLast = 'gateway_description_DESC_NULLS_LAST', + GatewayEmailAsc = 'gateway_email_ASC', + GatewayEmailAscNullsFirst = 'gateway_email_ASC_NULLS_FIRST', + GatewayEmailDesc = 'gateway_email_DESC', + GatewayEmailDescNullsLast = 'gateway_email_DESC_NULLS_LAST', + GatewayEndpointUrlAsc = 'gateway_endpointUrl_ASC', + GatewayEndpointUrlAscNullsFirst = 'gateway_endpointUrl_ASC_NULLS_FIRST', + GatewayEndpointUrlDesc = 'gateway_endpointUrl_DESC', + GatewayEndpointUrlDescNullsLast = 'gateway_endpointUrl_DESC_NULLS_LAST', + GatewayIdAsc = 'gateway_id_ASC', + GatewayIdAscNullsFirst = 'gateway_id_ASC_NULLS_FIRST', + GatewayIdDesc = 'gateway_id_DESC', + GatewayIdDescNullsLast = 'gateway_id_DESC_NULLS_LAST', + GatewayNameAsc = 'gateway_name_ASC', + GatewayNameAscNullsFirst = 'gateway_name_ASC_NULLS_FIRST', + GatewayNameDesc = 'gateway_name_DESC', + GatewayNameDescNullsLast = 'gateway_name_DESC_NULLS_LAST', + GatewayStatusAsc = 'gateway_status_ASC', + GatewayStatusAscNullsFirst = 'gateway_status_ASC_NULLS_FIRST', + GatewayStatusDesc = 'gateway_status_DESC', + GatewayStatusDescNullsLast = 'gateway_status_DESC_NULLS_LAST', + GatewayWebsiteAsc = 'gateway_website_ASC', + GatewayWebsiteAscNullsFirst = 'gateway_website_ASC_NULLS_FIRST', + GatewayWebsiteDesc = 'gateway_website_DESC', + GatewayWebsiteDescNullsLast = 'gateway_website_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + StatusAsc = 'status_ASC', + StatusAscNullsFirst = 'status_ASC_NULLS_FIRST', + StatusDesc = 'status_DESC', + StatusDescNullsLast = 'status_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', +} + +export type GatewayStatusChangeWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + gateway?: InputMaybe; + gateway_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + status_eq?: InputMaybe; + status_in?: InputMaybe>; + status_isNull?: InputMaybe; + status_not_eq?: InputMaybe; + status_not_in?: InputMaybe>; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; +}; + +export type GatewayStatusChangesConnection = { + __typename?: 'GatewayStatusChangesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type GatewayWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + createdAt_eq?: InputMaybe; + createdAt_gt?: InputMaybe; + createdAt_gte?: InputMaybe; + createdAt_in?: InputMaybe>; + createdAt_isNull?: InputMaybe; + createdAt_lt?: InputMaybe; + createdAt_lte?: InputMaybe; + createdAt_not_eq?: InputMaybe; + createdAt_not_in?: InputMaybe>; + description_contains?: InputMaybe; + description_containsInsensitive?: InputMaybe; + description_endsWith?: InputMaybe; + description_eq?: InputMaybe; + description_gt?: InputMaybe; + description_gte?: InputMaybe; + description_in?: InputMaybe>; + description_isNull?: InputMaybe; + description_lt?: InputMaybe; + description_lte?: InputMaybe; + description_not_contains?: InputMaybe; + description_not_containsInsensitive?: InputMaybe; + description_not_endsWith?: InputMaybe; + description_not_eq?: InputMaybe; + description_not_in?: InputMaybe>; + description_not_startsWith?: InputMaybe; + description_startsWith?: InputMaybe; + email_contains?: InputMaybe; + email_containsInsensitive?: InputMaybe; + email_endsWith?: InputMaybe; + email_eq?: InputMaybe; + email_gt?: InputMaybe; + email_gte?: InputMaybe; + email_in?: InputMaybe>; + email_isNull?: InputMaybe; + email_lt?: InputMaybe; + email_lte?: InputMaybe; + email_not_contains?: InputMaybe; + email_not_containsInsensitive?: InputMaybe; + email_not_endsWith?: InputMaybe; + email_not_eq?: InputMaybe; + email_not_in?: InputMaybe>; + email_not_startsWith?: InputMaybe; + email_startsWith?: InputMaybe; + endpointUrl_contains?: InputMaybe; + endpointUrl_containsInsensitive?: InputMaybe; + endpointUrl_endsWith?: InputMaybe; + endpointUrl_eq?: InputMaybe; + endpointUrl_gt?: InputMaybe; + endpointUrl_gte?: InputMaybe; + endpointUrl_in?: InputMaybe>; + endpointUrl_isNull?: InputMaybe; + endpointUrl_lt?: InputMaybe; + endpointUrl_lte?: InputMaybe; + endpointUrl_not_contains?: InputMaybe; + endpointUrl_not_containsInsensitive?: InputMaybe; + endpointUrl_not_endsWith?: InputMaybe; + endpointUrl_not_eq?: InputMaybe; + endpointUrl_not_in?: InputMaybe>; + endpointUrl_not_startsWith?: InputMaybe; + endpointUrl_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + name_contains?: InputMaybe; + name_containsInsensitive?: InputMaybe; + name_endsWith?: InputMaybe; + name_eq?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_isNull?: InputMaybe; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_containsInsensitive?: InputMaybe; + name_not_endsWith?: InputMaybe; + name_not_eq?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_startsWith?: InputMaybe; + name_startsWith?: InputMaybe; + operator?: InputMaybe; + operator_isNull?: InputMaybe; + owner?: InputMaybe; + owner_isNull?: InputMaybe; + statusHistory_every?: InputMaybe; + statusHistory_none?: InputMaybe; + statusHistory_some?: InputMaybe; + status_eq?: InputMaybe; + status_in?: InputMaybe>; + status_isNull?: InputMaybe; + status_not_eq?: InputMaybe; + status_not_in?: InputMaybe>; + website_contains?: InputMaybe; + website_containsInsensitive?: InputMaybe; + website_endsWith?: InputMaybe; + website_eq?: InputMaybe; + website_gt?: InputMaybe; + website_gte?: InputMaybe; + website_in?: InputMaybe>; + website_isNull?: InputMaybe; + website_lt?: InputMaybe; + website_lte?: InputMaybe; + website_not_contains?: InputMaybe; + website_not_containsInsensitive?: InputMaybe; + website_not_endsWith?: InputMaybe; + website_not_eq?: InputMaybe; + website_not_in?: InputMaybe>; + website_not_startsWith?: InputMaybe; + website_startsWith?: InputMaybe; +}; + +export type GatewaysConnection = { + __typename?: 'GatewaysConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + endCursor: Scalars['String']['output']; + hasNextPage: Scalars['Boolean']['output']; + hasPreviousPage: Scalars['Boolean']['output']; + startCursor: Scalars['String']['output']; +}; + +export type Query = { + __typename?: 'Query'; + accountById?: Maybe; + /** @deprecated Use accountById */ + accountByUniqueInput?: Maybe; + accountTransferById?: Maybe; + /** @deprecated Use accountTransferById */ + accountTransferByUniqueInput?: Maybe; + accountTransfers: Array; + accountTransfersConnection: AccountTransfersConnection; + accounts: Array; + accountsConnection: AccountsConnection; + blockById?: Maybe; + /** @deprecated Use blockById */ + blockByUniqueInput?: Maybe; + blocks: Array; + blocksConnection: BlocksConnection; + claimById?: Maybe; + /** @deprecated Use claimById */ + claimByUniqueInput?: Maybe; + claims: Array; + claimsConnection: ClaimsConnection; + commitmentById?: Maybe; + /** @deprecated Use commitmentById */ + commitmentByUniqueInput?: Maybe; + commitments: Array; + commitmentsConnection: CommitmentsConnection; + delegationById?: Maybe; + /** @deprecated Use delegationById */ + delegationByUniqueInput?: Maybe; + delegationRewardById?: Maybe; + /** @deprecated Use delegationRewardById */ + delegationRewardByUniqueInput?: Maybe; + delegationRewards: Array; + delegationRewardsConnection: DelegationRewardsConnection; + delegations: Array; + delegationsConnection: DelegationsConnection; + epochById?: Maybe; + /** @deprecated Use epochById */ + epochByUniqueInput?: Maybe; + epoches: Array; + epochesConnection: EpochesConnection; + gatewayById?: Maybe; + /** @deprecated Use gatewayById */ + gatewayByUniqueInput?: Maybe; + gatewayOperatorById?: Maybe; + /** @deprecated Use gatewayOperatorById */ + gatewayOperatorByUniqueInput?: Maybe; + gatewayOperators: Array; + gatewayOperatorsConnection: GatewayOperatorsConnection; + gatewayStakeById?: Maybe; + /** @deprecated Use gatewayStakeById */ + gatewayStakeByUniqueInput?: Maybe; + gatewayStakes: Array; + gatewayStakesConnection: GatewayStakesConnection; + gatewayStatusChangeById?: Maybe; + /** @deprecated Use gatewayStatusChangeById */ + gatewayStatusChangeByUniqueInput?: Maybe; + gatewayStatusChanges: Array; + gatewayStatusChangesConnection: GatewayStatusChangesConnection; + gateways: Array; + gatewaysConnection: GatewaysConnection; + settings: Array; + settingsById?: Maybe; + /** @deprecated Use settingsById */ + settingsByUniqueInput?: Maybe; + settingsConnection: SettingsConnection; + squidStatus?: Maybe; + statistics: Array; + statisticsById?: Maybe; + /** @deprecated Use statisticsById */ + statisticsByUniqueInput?: Maybe; + statisticsConnection: StatisticsConnection; + transferById?: Maybe; + /** @deprecated Use transferById */ + transferByUniqueInput?: Maybe; + transfers: Array; + transfersConnection: TransfersConnection; + workerById?: Maybe; + /** @deprecated Use workerById */ + workerByUniqueInput?: Maybe; + workerRewardById?: Maybe; + /** @deprecated Use workerRewardById */ + workerRewardByUniqueInput?: Maybe; + workerRewards: Array; + workerRewardsConnection: WorkerRewardsConnection; + workerSnapshotById?: Maybe; + /** @deprecated Use workerSnapshotById */ + workerSnapshotByUniqueInput?: Maybe; + workerSnapshots: Array; + workerSnapshotsByDay: Array; + workerSnapshotsConnection: WorkerSnapshotsConnection; + workerStatusChangeById?: Maybe; + /** @deprecated Use workerStatusChangeById */ + workerStatusChangeByUniqueInput?: Maybe; + workerStatusChanges: Array; + workerStatusChangesConnection: WorkerStatusChangesConnection; + workers: Array; + workersConnection: WorkersConnection; +}; + +export type QueryAccountByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryAccountByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryAccountTransferByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryAccountTransferByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryAccountTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryAccountTransfersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryAccountsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryAccountsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryBlockByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryBlockByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryBlocksArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryBlocksConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryClaimByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryClaimByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryClaimsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryClaimsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryCommitmentByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryCommitmentByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryCommitmentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryCommitmentsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryDelegationByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryDelegationByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryDelegationRewardByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryDelegationRewardByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryDelegationRewardsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryDelegationRewardsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryDelegationsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryDelegationsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryEpochByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryEpochByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryEpochesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryEpochesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryGatewayByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryGatewayByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryGatewayOperatorByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryGatewayOperatorByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryGatewayOperatorsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryGatewayOperatorsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryGatewayStakeByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryGatewayStakeByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryGatewayStakesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryGatewayStakesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryGatewayStatusChangeByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryGatewayStatusChangeByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryGatewayStatusChangesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryGatewayStatusChangesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryGatewaysArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryGatewaysConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QuerySettingsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QuerySettingsByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QuerySettingsByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QuerySettingsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryStatisticsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryStatisticsByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryStatisticsByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryStatisticsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryTransferByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryTransferByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryTransfersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryTransfersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryWorkerByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryWorkerByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryWorkerRewardByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryWorkerRewardByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryWorkerRewardsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryWorkerRewardsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryWorkerSnapshotByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryWorkerSnapshotByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryWorkerSnapshotsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryWorkerSnapshotsByDayArgs = { + from: Scalars['DateTime']['input']; + to?: InputMaybe; + workerId: Scalars['String']['input']; +}; + +export type QueryWorkerSnapshotsConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryWorkerStatusChangeByIdArgs = { + id: Scalars['String']['input']; +}; + +export type QueryWorkerStatusChangeByUniqueInputArgs = { + where: WhereIdInput; +}; + +export type QueryWorkerStatusChangesArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryWorkerStatusChangesConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type QueryWorkersArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type QueryWorkersConnectionArgs = { + after?: InputMaybe; + first?: InputMaybe; + orderBy: Array; + where?: InputMaybe; +}; + +export type Settings = { + __typename?: 'Settings'; + bondAmount?: Maybe; + delegationLimitCoefficient: Scalars['Float']['output']; + epochLength?: Maybe; + id: Scalars['String']['output']; +}; + +export type SettingsConnection = { + __typename?: 'SettingsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SettingsEdge = { + __typename?: 'SettingsEdge'; + cursor: Scalars['String']['output']; + node: Settings; +}; + +export enum SettingsOrderByInput { + BondAmountAsc = 'bondAmount_ASC', + BondAmountAscNullsFirst = 'bondAmount_ASC_NULLS_FIRST', + BondAmountDesc = 'bondAmount_DESC', + BondAmountDescNullsLast = 'bondAmount_DESC_NULLS_LAST', + DelegationLimitCoefficientAsc = 'delegationLimitCoefficient_ASC', + DelegationLimitCoefficientAscNullsFirst = 'delegationLimitCoefficient_ASC_NULLS_FIRST', + DelegationLimitCoefficientDesc = 'delegationLimitCoefficient_DESC', + DelegationLimitCoefficientDescNullsLast = 'delegationLimitCoefficient_DESC_NULLS_LAST', + EpochLengthAsc = 'epochLength_ASC', + EpochLengthAscNullsFirst = 'epochLength_ASC_NULLS_FIRST', + EpochLengthDesc = 'epochLength_DESC', + EpochLengthDescNullsLast = 'epochLength_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', +} + +export type SettingsWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + bondAmount_eq?: InputMaybe; + bondAmount_gt?: InputMaybe; + bondAmount_gte?: InputMaybe; + bondAmount_in?: InputMaybe>; + bondAmount_isNull?: InputMaybe; + bondAmount_lt?: InputMaybe; + bondAmount_lte?: InputMaybe; + bondAmount_not_eq?: InputMaybe; + bondAmount_not_in?: InputMaybe>; + delegationLimitCoefficient_eq?: InputMaybe; + delegationLimitCoefficient_gt?: InputMaybe; + delegationLimitCoefficient_gte?: InputMaybe; + delegationLimitCoefficient_in?: InputMaybe>; + delegationLimitCoefficient_isNull?: InputMaybe; + delegationLimitCoefficient_lt?: InputMaybe; + delegationLimitCoefficient_lte?: InputMaybe; + delegationLimitCoefficient_not_eq?: InputMaybe; + delegationLimitCoefficient_not_in?: InputMaybe>; + epochLength_eq?: InputMaybe; + epochLength_gt?: InputMaybe; + epochLength_gte?: InputMaybe; + epochLength_in?: InputMaybe>; + epochLength_isNull?: InputMaybe; + epochLength_lt?: InputMaybe; + epochLength_lte?: InputMaybe; + epochLength_not_eq?: InputMaybe; + epochLength_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; +}; + +export type SquidStatus = { + __typename?: 'SquidStatus'; + /** The height of the processed part of the chain */ + height?: Maybe; +}; + +export type Statistics = { + __typename?: 'Statistics'; + blockTime: Scalars['Int']['output']; + blockTimeL1: Scalars['Int']['output']; + currentEpoch?: Maybe; + id: Scalars['String']['output']; + lastBlock: Scalars['Int']['output']; + lastBlockL1: Scalars['Int']['output']; + lastBlockTimestamp: Scalars['DateTime']['output']; + lastBlockTimestampL1: Scalars['DateTime']['output']; + lastSnapshotTimestamp: Scalars['DateTime']['output']; +}; + +export type StatisticsConnection = { + __typename?: 'StatisticsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type StatisticsEdge = { + __typename?: 'StatisticsEdge'; + cursor: Scalars['String']['output']; + node: Statistics; +}; + +export enum StatisticsOrderByInput { + BlockTimeL1Asc = 'blockTimeL1_ASC', + BlockTimeL1AscNullsFirst = 'blockTimeL1_ASC_NULLS_FIRST', + BlockTimeL1Desc = 'blockTimeL1_DESC', + BlockTimeL1DescNullsLast = 'blockTimeL1_DESC_NULLS_LAST', + BlockTimeAsc = 'blockTime_ASC', + BlockTimeAscNullsFirst = 'blockTime_ASC_NULLS_FIRST', + BlockTimeDesc = 'blockTime_DESC', + BlockTimeDescNullsLast = 'blockTime_DESC_NULLS_LAST', + CurrentEpochAsc = 'currentEpoch_ASC', + CurrentEpochAscNullsFirst = 'currentEpoch_ASC_NULLS_FIRST', + CurrentEpochDesc = 'currentEpoch_DESC', + CurrentEpochDescNullsLast = 'currentEpoch_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + LastBlockL1Asc = 'lastBlockL1_ASC', + LastBlockL1AscNullsFirst = 'lastBlockL1_ASC_NULLS_FIRST', + LastBlockL1Desc = 'lastBlockL1_DESC', + LastBlockL1DescNullsLast = 'lastBlockL1_DESC_NULLS_LAST', + LastBlockTimestampL1Asc = 'lastBlockTimestampL1_ASC', + LastBlockTimestampL1AscNullsFirst = 'lastBlockTimestampL1_ASC_NULLS_FIRST', + LastBlockTimestampL1Desc = 'lastBlockTimestampL1_DESC', + LastBlockTimestampL1DescNullsLast = 'lastBlockTimestampL1_DESC_NULLS_LAST', + LastBlockTimestampAsc = 'lastBlockTimestamp_ASC', + LastBlockTimestampAscNullsFirst = 'lastBlockTimestamp_ASC_NULLS_FIRST', + LastBlockTimestampDesc = 'lastBlockTimestamp_DESC', + LastBlockTimestampDescNullsLast = 'lastBlockTimestamp_DESC_NULLS_LAST', + LastBlockAsc = 'lastBlock_ASC', + LastBlockAscNullsFirst = 'lastBlock_ASC_NULLS_FIRST', + LastBlockDesc = 'lastBlock_DESC', + LastBlockDescNullsLast = 'lastBlock_DESC_NULLS_LAST', + LastSnapshotTimestampAsc = 'lastSnapshotTimestamp_ASC', + LastSnapshotTimestampAscNullsFirst = 'lastSnapshotTimestamp_ASC_NULLS_FIRST', + LastSnapshotTimestampDesc = 'lastSnapshotTimestamp_DESC', + LastSnapshotTimestampDescNullsLast = 'lastSnapshotTimestamp_DESC_NULLS_LAST', +} + +export type StatisticsWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + blockTimeL1_eq?: InputMaybe; + blockTimeL1_gt?: InputMaybe; + blockTimeL1_gte?: InputMaybe; + blockTimeL1_in?: InputMaybe>; + blockTimeL1_isNull?: InputMaybe; + blockTimeL1_lt?: InputMaybe; + blockTimeL1_lte?: InputMaybe; + blockTimeL1_not_eq?: InputMaybe; + blockTimeL1_not_in?: InputMaybe>; + blockTime_eq?: InputMaybe; + blockTime_gt?: InputMaybe; + blockTime_gte?: InputMaybe; + blockTime_in?: InputMaybe>; + blockTime_isNull?: InputMaybe; + blockTime_lt?: InputMaybe; + blockTime_lte?: InputMaybe; + blockTime_not_eq?: InputMaybe; + blockTime_not_in?: InputMaybe>; + currentEpoch_eq?: InputMaybe; + currentEpoch_gt?: InputMaybe; + currentEpoch_gte?: InputMaybe; + currentEpoch_in?: InputMaybe>; + currentEpoch_isNull?: InputMaybe; + currentEpoch_lt?: InputMaybe; + currentEpoch_lte?: InputMaybe; + currentEpoch_not_eq?: InputMaybe; + currentEpoch_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + lastBlockL1_eq?: InputMaybe; + lastBlockL1_gt?: InputMaybe; + lastBlockL1_gte?: InputMaybe; + lastBlockL1_in?: InputMaybe>; + lastBlockL1_isNull?: InputMaybe; + lastBlockL1_lt?: InputMaybe; + lastBlockL1_lte?: InputMaybe; + lastBlockL1_not_eq?: InputMaybe; + lastBlockL1_not_in?: InputMaybe>; + lastBlockTimestampL1_eq?: InputMaybe; + lastBlockTimestampL1_gt?: InputMaybe; + lastBlockTimestampL1_gte?: InputMaybe; + lastBlockTimestampL1_in?: InputMaybe>; + lastBlockTimestampL1_isNull?: InputMaybe; + lastBlockTimestampL1_lt?: InputMaybe; + lastBlockTimestampL1_lte?: InputMaybe; + lastBlockTimestampL1_not_eq?: InputMaybe; + lastBlockTimestampL1_not_in?: InputMaybe>; + lastBlockTimestamp_eq?: InputMaybe; + lastBlockTimestamp_gt?: InputMaybe; + lastBlockTimestamp_gte?: InputMaybe; + lastBlockTimestamp_in?: InputMaybe>; + lastBlockTimestamp_isNull?: InputMaybe; + lastBlockTimestamp_lt?: InputMaybe; + lastBlockTimestamp_lte?: InputMaybe; + lastBlockTimestamp_not_eq?: InputMaybe; + lastBlockTimestamp_not_in?: InputMaybe>; + lastBlock_eq?: InputMaybe; + lastBlock_gt?: InputMaybe; + lastBlock_gte?: InputMaybe; + lastBlock_in?: InputMaybe>; + lastBlock_isNull?: InputMaybe; + lastBlock_lt?: InputMaybe; + lastBlock_lte?: InputMaybe; + lastBlock_not_eq?: InputMaybe; + lastBlock_not_in?: InputMaybe>; + lastSnapshotTimestamp_eq?: InputMaybe; + lastSnapshotTimestamp_gt?: InputMaybe; + lastSnapshotTimestamp_gte?: InputMaybe; + lastSnapshotTimestamp_in?: InputMaybe>; + lastSnapshotTimestamp_isNull?: InputMaybe; + lastSnapshotTimestamp_lt?: InputMaybe; + lastSnapshotTimestamp_lte?: InputMaybe; + lastSnapshotTimestamp_not_eq?: InputMaybe; + lastSnapshotTimestamp_not_in?: InputMaybe>; +}; + +export type Transfer = { + __typename?: 'Transfer'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + from: Account; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + to: Account; +}; + +export enum TransferDirection { + From = 'FROM', + To = 'TO', +} + +export type TransferEdge = { + __typename?: 'TransferEdge'; + cursor: Scalars['String']['output']; + node: Transfer; +}; + +export enum TransferOrderByInput { + AmountAsc = 'amount_ASC', + AmountAscNullsFirst = 'amount_ASC_NULLS_FIRST', + AmountDesc = 'amount_DESC', + AmountDescNullsLast = 'amount_DESC_NULLS_LAST', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + FromBalanceAsc = 'from_balance_ASC', + FromBalanceAscNullsFirst = 'from_balance_ASC_NULLS_FIRST', + FromBalanceDesc = 'from_balance_DESC', + FromBalanceDescNullsLast = 'from_balance_DESC_NULLS_LAST', + FromClaimableDelegationCountAsc = 'from_claimableDelegationCount_ASC', + FromClaimableDelegationCountAscNullsFirst = 'from_claimableDelegationCount_ASC_NULLS_FIRST', + FromClaimableDelegationCountDesc = 'from_claimableDelegationCount_DESC', + FromClaimableDelegationCountDescNullsLast = 'from_claimableDelegationCount_DESC_NULLS_LAST', + FromIdAsc = 'from_id_ASC', + FromIdAscNullsFirst = 'from_id_ASC_NULLS_FIRST', + FromIdDesc = 'from_id_DESC', + FromIdDescNullsLast = 'from_id_DESC_NULLS_LAST', + FromTypeAsc = 'from_type_ASC', + FromTypeAscNullsFirst = 'from_type_ASC_NULLS_FIRST', + FromTypeDesc = 'from_type_DESC', + FromTypeDescNullsLast = 'from_type_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', + ToBalanceAsc = 'to_balance_ASC', + ToBalanceAscNullsFirst = 'to_balance_ASC_NULLS_FIRST', + ToBalanceDesc = 'to_balance_DESC', + ToBalanceDescNullsLast = 'to_balance_DESC_NULLS_LAST', + ToClaimableDelegationCountAsc = 'to_claimableDelegationCount_ASC', + ToClaimableDelegationCountAscNullsFirst = 'to_claimableDelegationCount_ASC_NULLS_FIRST', + ToClaimableDelegationCountDesc = 'to_claimableDelegationCount_DESC', + ToClaimableDelegationCountDescNullsLast = 'to_claimableDelegationCount_DESC_NULLS_LAST', + ToIdAsc = 'to_id_ASC', + ToIdAscNullsFirst = 'to_id_ASC_NULLS_FIRST', + ToIdDesc = 'to_id_DESC', + ToIdDescNullsLast = 'to_id_DESC_NULLS_LAST', + ToTypeAsc = 'to_type_ASC', + ToTypeAscNullsFirst = 'to_type_ASC_NULLS_FIRST', + ToTypeDesc = 'to_type_DESC', + ToTypeDescNullsLast = 'to_type_DESC_NULLS_LAST', +} + +export type TransferWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + from?: InputMaybe; + from_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + to?: InputMaybe; + to_isNull?: InputMaybe; +}; + +export type TransfersConnection = { + __typename?: 'TransfersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type WhereIdInput = { + id: Scalars['String']['input']; +}; + +export type Worker = { + __typename?: 'Worker'; + apr?: Maybe; + bond: Scalars['BigInt']['output']; + claimableReward: Scalars['BigInt']['output']; + claimedReward: Scalars['BigInt']['output']; + claims: Array; + createdAt: Scalars['DateTime']['output']; + delegationCount: Scalars['Int']['output']; + delegations: Array; + description?: Maybe; + dialOk?: Maybe; + email?: Maybe; + id: Scalars['String']['output']; + jailed?: Maybe; + name?: Maybe; + online?: Maybe; + owner: Account; + peerId: Scalars['String']['output']; + queries24Hours?: Maybe; + queries90Days?: Maybe; + /** owner.owner for VESTING account */ + realOwner: Account; + rewards: Array; + scannedData24Hours?: Maybe; + scannedData90Days?: Maybe; + servedData24Hours?: Maybe; + servedData90Days?: Maybe; + snapshots: Array; + stakerApr?: Maybe; + status: WorkerStatus; + statusHistory: Array; + storedData?: Maybe; + totalDelegation: Scalars['BigInt']['output']; + uptime24Hours?: Maybe; + uptime90Days?: Maybe; + version?: Maybe; + website?: Maybe; +}; + +export type WorkerClaimsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type WorkerDelegationsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type WorkerRewardsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type WorkerSnapshotsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type WorkerStatusHistoryArgs = { + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + +export type WorkerEdge = { + __typename?: 'WorkerEdge'; + cursor: Scalars['String']['output']; + node: Worker; +}; + +export enum WorkerOrderByInput { + AprAsc = 'apr_ASC', + AprAscNullsFirst = 'apr_ASC_NULLS_FIRST', + AprDesc = 'apr_DESC', + AprDescNullsLast = 'apr_DESC_NULLS_LAST', + BondAsc = 'bond_ASC', + BondAscNullsFirst = 'bond_ASC_NULLS_FIRST', + BondDesc = 'bond_DESC', + BondDescNullsLast = 'bond_DESC_NULLS_LAST', + ClaimableRewardAsc = 'claimableReward_ASC', + ClaimableRewardAscNullsFirst = 'claimableReward_ASC_NULLS_FIRST', + ClaimableRewardDesc = 'claimableReward_DESC', + ClaimableRewardDescNullsLast = 'claimableReward_DESC_NULLS_LAST', + ClaimedRewardAsc = 'claimedReward_ASC', + ClaimedRewardAscNullsFirst = 'claimedReward_ASC_NULLS_FIRST', + ClaimedRewardDesc = 'claimedReward_DESC', + ClaimedRewardDescNullsLast = 'claimedReward_DESC_NULLS_LAST', + CreatedAtAsc = 'createdAt_ASC', + CreatedAtAscNullsFirst = 'createdAt_ASC_NULLS_FIRST', + CreatedAtDesc = 'createdAt_DESC', + CreatedAtDescNullsLast = 'createdAt_DESC_NULLS_LAST', + DelegationCountAsc = 'delegationCount_ASC', + DelegationCountAscNullsFirst = 'delegationCount_ASC_NULLS_FIRST', + DelegationCountDesc = 'delegationCount_DESC', + DelegationCountDescNullsLast = 'delegationCount_DESC_NULLS_LAST', + DescriptionAsc = 'description_ASC', + DescriptionAscNullsFirst = 'description_ASC_NULLS_FIRST', + DescriptionDesc = 'description_DESC', + DescriptionDescNullsLast = 'description_DESC_NULLS_LAST', + DialOkAsc = 'dialOk_ASC', + DialOkAscNullsFirst = 'dialOk_ASC_NULLS_FIRST', + DialOkDesc = 'dialOk_DESC', + DialOkDescNullsLast = 'dialOk_DESC_NULLS_LAST', + EmailAsc = 'email_ASC', + EmailAscNullsFirst = 'email_ASC_NULLS_FIRST', + EmailDesc = 'email_DESC', + EmailDescNullsLast = 'email_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + JailedAsc = 'jailed_ASC', + JailedAscNullsFirst = 'jailed_ASC_NULLS_FIRST', + JailedDesc = 'jailed_DESC', + JailedDescNullsLast = 'jailed_DESC_NULLS_LAST', + NameAsc = 'name_ASC', + NameAscNullsFirst = 'name_ASC_NULLS_FIRST', + NameDesc = 'name_DESC', + NameDescNullsLast = 'name_DESC_NULLS_LAST', + OnlineAsc = 'online_ASC', + OnlineAscNullsFirst = 'online_ASC_NULLS_FIRST', + OnlineDesc = 'online_DESC', + OnlineDescNullsLast = 'online_DESC_NULLS_LAST', + OwnerBalanceAsc = 'owner_balance_ASC', + OwnerBalanceAscNullsFirst = 'owner_balance_ASC_NULLS_FIRST', + OwnerBalanceDesc = 'owner_balance_DESC', + OwnerBalanceDescNullsLast = 'owner_balance_DESC_NULLS_LAST', + OwnerClaimableDelegationCountAsc = 'owner_claimableDelegationCount_ASC', + OwnerClaimableDelegationCountAscNullsFirst = 'owner_claimableDelegationCount_ASC_NULLS_FIRST', + OwnerClaimableDelegationCountDesc = 'owner_claimableDelegationCount_DESC', + OwnerClaimableDelegationCountDescNullsLast = 'owner_claimableDelegationCount_DESC_NULLS_LAST', + OwnerIdAsc = 'owner_id_ASC', + OwnerIdAscNullsFirst = 'owner_id_ASC_NULLS_FIRST', + OwnerIdDesc = 'owner_id_DESC', + OwnerIdDescNullsLast = 'owner_id_DESC_NULLS_LAST', + OwnerTypeAsc = 'owner_type_ASC', + OwnerTypeAscNullsFirst = 'owner_type_ASC_NULLS_FIRST', + OwnerTypeDesc = 'owner_type_DESC', + OwnerTypeDescNullsLast = 'owner_type_DESC_NULLS_LAST', + PeerIdAsc = 'peerId_ASC', + PeerIdAscNullsFirst = 'peerId_ASC_NULLS_FIRST', + PeerIdDesc = 'peerId_DESC', + PeerIdDescNullsLast = 'peerId_DESC_NULLS_LAST', + Queries24HoursAsc = 'queries24Hours_ASC', + Queries24HoursAscNullsFirst = 'queries24Hours_ASC_NULLS_FIRST', + Queries24HoursDesc = 'queries24Hours_DESC', + Queries24HoursDescNullsLast = 'queries24Hours_DESC_NULLS_LAST', + Queries90DaysAsc = 'queries90Days_ASC', + Queries90DaysAscNullsFirst = 'queries90Days_ASC_NULLS_FIRST', + Queries90DaysDesc = 'queries90Days_DESC', + Queries90DaysDescNullsLast = 'queries90Days_DESC_NULLS_LAST', + RealOwnerBalanceAsc = 'realOwner_balance_ASC', + RealOwnerBalanceAscNullsFirst = 'realOwner_balance_ASC_NULLS_FIRST', + RealOwnerBalanceDesc = 'realOwner_balance_DESC', + RealOwnerBalanceDescNullsLast = 'realOwner_balance_DESC_NULLS_LAST', + RealOwnerClaimableDelegationCountAsc = 'realOwner_claimableDelegationCount_ASC', + RealOwnerClaimableDelegationCountAscNullsFirst = 'realOwner_claimableDelegationCount_ASC_NULLS_FIRST', + RealOwnerClaimableDelegationCountDesc = 'realOwner_claimableDelegationCount_DESC', + RealOwnerClaimableDelegationCountDescNullsLast = 'realOwner_claimableDelegationCount_DESC_NULLS_LAST', + RealOwnerIdAsc = 'realOwner_id_ASC', + RealOwnerIdAscNullsFirst = 'realOwner_id_ASC_NULLS_FIRST', + RealOwnerIdDesc = 'realOwner_id_DESC', + RealOwnerIdDescNullsLast = 'realOwner_id_DESC_NULLS_LAST', + RealOwnerTypeAsc = 'realOwner_type_ASC', + RealOwnerTypeAscNullsFirst = 'realOwner_type_ASC_NULLS_FIRST', + RealOwnerTypeDesc = 'realOwner_type_DESC', + RealOwnerTypeDescNullsLast = 'realOwner_type_DESC_NULLS_LAST', + ScannedData24HoursAsc = 'scannedData24Hours_ASC', + ScannedData24HoursAscNullsFirst = 'scannedData24Hours_ASC_NULLS_FIRST', + ScannedData24HoursDesc = 'scannedData24Hours_DESC', + ScannedData24HoursDescNullsLast = 'scannedData24Hours_DESC_NULLS_LAST', + ScannedData90DaysAsc = 'scannedData90Days_ASC', + ScannedData90DaysAscNullsFirst = 'scannedData90Days_ASC_NULLS_FIRST', + ScannedData90DaysDesc = 'scannedData90Days_DESC', + ScannedData90DaysDescNullsLast = 'scannedData90Days_DESC_NULLS_LAST', + ServedData24HoursAsc = 'servedData24Hours_ASC', + ServedData24HoursAscNullsFirst = 'servedData24Hours_ASC_NULLS_FIRST', + ServedData24HoursDesc = 'servedData24Hours_DESC', + ServedData24HoursDescNullsLast = 'servedData24Hours_DESC_NULLS_LAST', + ServedData90DaysAsc = 'servedData90Days_ASC', + ServedData90DaysAscNullsFirst = 'servedData90Days_ASC_NULLS_FIRST', + ServedData90DaysDesc = 'servedData90Days_DESC', + ServedData90DaysDescNullsLast = 'servedData90Days_DESC_NULLS_LAST', + StakerAprAsc = 'stakerApr_ASC', + StakerAprAscNullsFirst = 'stakerApr_ASC_NULLS_FIRST', + StakerAprDesc = 'stakerApr_DESC', + StakerAprDescNullsLast = 'stakerApr_DESC_NULLS_LAST', + StatusAsc = 'status_ASC', + StatusAscNullsFirst = 'status_ASC_NULLS_FIRST', + StatusDesc = 'status_DESC', + StatusDescNullsLast = 'status_DESC_NULLS_LAST', + StoredDataAsc = 'storedData_ASC', + StoredDataAscNullsFirst = 'storedData_ASC_NULLS_FIRST', + StoredDataDesc = 'storedData_DESC', + StoredDataDescNullsLast = 'storedData_DESC_NULLS_LAST', + TotalDelegationAsc = 'totalDelegation_ASC', + TotalDelegationAscNullsFirst = 'totalDelegation_ASC_NULLS_FIRST', + TotalDelegationDesc = 'totalDelegation_DESC', + TotalDelegationDescNullsLast = 'totalDelegation_DESC_NULLS_LAST', + Uptime24HoursAsc = 'uptime24Hours_ASC', + Uptime24HoursAscNullsFirst = 'uptime24Hours_ASC_NULLS_FIRST', + Uptime24HoursDesc = 'uptime24Hours_DESC', + Uptime24HoursDescNullsLast = 'uptime24Hours_DESC_NULLS_LAST', + Uptime90DaysAsc = 'uptime90Days_ASC', + Uptime90DaysAscNullsFirst = 'uptime90Days_ASC_NULLS_FIRST', + Uptime90DaysDesc = 'uptime90Days_DESC', + Uptime90DaysDescNullsLast = 'uptime90Days_DESC_NULLS_LAST', + VersionAsc = 'version_ASC', + VersionAscNullsFirst = 'version_ASC_NULLS_FIRST', + VersionDesc = 'version_DESC', + VersionDescNullsLast = 'version_DESC_NULLS_LAST', + WebsiteAsc = 'website_ASC', + WebsiteAscNullsFirst = 'website_ASC_NULLS_FIRST', + WebsiteDesc = 'website_DESC', + WebsiteDescNullsLast = 'website_DESC_NULLS_LAST', +} + +export type WorkerReward = { + __typename?: 'WorkerReward'; + amount: Scalars['BigInt']['output']; + blockNumber: Scalars['Int']['output']; + id: Scalars['String']['output']; + stakersReward: Scalars['BigInt']['output']; + timestamp: Scalars['DateTime']['output']; + worker: Worker; +}; + +export type WorkerRewardEdge = { + __typename?: 'WorkerRewardEdge'; + cursor: Scalars['String']['output']; + node: WorkerReward; +}; + +export enum WorkerRewardOrderByInput { + AmountAsc = 'amount_ASC', + AmountAscNullsFirst = 'amount_ASC_NULLS_FIRST', + AmountDesc = 'amount_DESC', + AmountDescNullsLast = 'amount_DESC_NULLS_LAST', + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + StakersRewardAsc = 'stakersReward_ASC', + StakersRewardAscNullsFirst = 'stakersReward_ASC_NULLS_FIRST', + StakersRewardDesc = 'stakersReward_DESC', + StakersRewardDescNullsLast = 'stakersReward_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', + WorkerAprAsc = 'worker_apr_ASC', + WorkerAprAscNullsFirst = 'worker_apr_ASC_NULLS_FIRST', + WorkerAprDesc = 'worker_apr_DESC', + WorkerAprDescNullsLast = 'worker_apr_DESC_NULLS_LAST', + WorkerBondAsc = 'worker_bond_ASC', + WorkerBondAscNullsFirst = 'worker_bond_ASC_NULLS_FIRST', + WorkerBondDesc = 'worker_bond_DESC', + WorkerBondDescNullsLast = 'worker_bond_DESC_NULLS_LAST', + WorkerClaimableRewardAsc = 'worker_claimableReward_ASC', + WorkerClaimableRewardAscNullsFirst = 'worker_claimableReward_ASC_NULLS_FIRST', + WorkerClaimableRewardDesc = 'worker_claimableReward_DESC', + WorkerClaimableRewardDescNullsLast = 'worker_claimableReward_DESC_NULLS_LAST', + WorkerClaimedRewardAsc = 'worker_claimedReward_ASC', + WorkerClaimedRewardAscNullsFirst = 'worker_claimedReward_ASC_NULLS_FIRST', + WorkerClaimedRewardDesc = 'worker_claimedReward_DESC', + WorkerClaimedRewardDescNullsLast = 'worker_claimedReward_DESC_NULLS_LAST', + WorkerCreatedAtAsc = 'worker_createdAt_ASC', + WorkerCreatedAtAscNullsFirst = 'worker_createdAt_ASC_NULLS_FIRST', + WorkerCreatedAtDesc = 'worker_createdAt_DESC', + WorkerCreatedAtDescNullsLast = 'worker_createdAt_DESC_NULLS_LAST', + WorkerDelegationCountAsc = 'worker_delegationCount_ASC', + WorkerDelegationCountAscNullsFirst = 'worker_delegationCount_ASC_NULLS_FIRST', + WorkerDelegationCountDesc = 'worker_delegationCount_DESC', + WorkerDelegationCountDescNullsLast = 'worker_delegationCount_DESC_NULLS_LAST', + WorkerDescriptionAsc = 'worker_description_ASC', + WorkerDescriptionAscNullsFirst = 'worker_description_ASC_NULLS_FIRST', + WorkerDescriptionDesc = 'worker_description_DESC', + WorkerDescriptionDescNullsLast = 'worker_description_DESC_NULLS_LAST', + WorkerDialOkAsc = 'worker_dialOk_ASC', + WorkerDialOkAscNullsFirst = 'worker_dialOk_ASC_NULLS_FIRST', + WorkerDialOkDesc = 'worker_dialOk_DESC', + WorkerDialOkDescNullsLast = 'worker_dialOk_DESC_NULLS_LAST', + WorkerEmailAsc = 'worker_email_ASC', + WorkerEmailAscNullsFirst = 'worker_email_ASC_NULLS_FIRST', + WorkerEmailDesc = 'worker_email_DESC', + WorkerEmailDescNullsLast = 'worker_email_DESC_NULLS_LAST', + WorkerIdAsc = 'worker_id_ASC', + WorkerIdAscNullsFirst = 'worker_id_ASC_NULLS_FIRST', + WorkerIdDesc = 'worker_id_DESC', + WorkerIdDescNullsLast = 'worker_id_DESC_NULLS_LAST', + WorkerJailedAsc = 'worker_jailed_ASC', + WorkerJailedAscNullsFirst = 'worker_jailed_ASC_NULLS_FIRST', + WorkerJailedDesc = 'worker_jailed_DESC', + WorkerJailedDescNullsLast = 'worker_jailed_DESC_NULLS_LAST', + WorkerNameAsc = 'worker_name_ASC', + WorkerNameAscNullsFirst = 'worker_name_ASC_NULLS_FIRST', + WorkerNameDesc = 'worker_name_DESC', + WorkerNameDescNullsLast = 'worker_name_DESC_NULLS_LAST', + WorkerOnlineAsc = 'worker_online_ASC', + WorkerOnlineAscNullsFirst = 'worker_online_ASC_NULLS_FIRST', + WorkerOnlineDesc = 'worker_online_DESC', + WorkerOnlineDescNullsLast = 'worker_online_DESC_NULLS_LAST', + WorkerPeerIdAsc = 'worker_peerId_ASC', + WorkerPeerIdAscNullsFirst = 'worker_peerId_ASC_NULLS_FIRST', + WorkerPeerIdDesc = 'worker_peerId_DESC', + WorkerPeerIdDescNullsLast = 'worker_peerId_DESC_NULLS_LAST', + WorkerQueries24HoursAsc = 'worker_queries24Hours_ASC', + WorkerQueries24HoursAscNullsFirst = 'worker_queries24Hours_ASC_NULLS_FIRST', + WorkerQueries24HoursDesc = 'worker_queries24Hours_DESC', + WorkerQueries24HoursDescNullsLast = 'worker_queries24Hours_DESC_NULLS_LAST', + WorkerQueries90DaysAsc = 'worker_queries90Days_ASC', + WorkerQueries90DaysAscNullsFirst = 'worker_queries90Days_ASC_NULLS_FIRST', + WorkerQueries90DaysDesc = 'worker_queries90Days_DESC', + WorkerQueries90DaysDescNullsLast = 'worker_queries90Days_DESC_NULLS_LAST', + WorkerScannedData24HoursAsc = 'worker_scannedData24Hours_ASC', + WorkerScannedData24HoursAscNullsFirst = 'worker_scannedData24Hours_ASC_NULLS_FIRST', + WorkerScannedData24HoursDesc = 'worker_scannedData24Hours_DESC', + WorkerScannedData24HoursDescNullsLast = 'worker_scannedData24Hours_DESC_NULLS_LAST', + WorkerScannedData90DaysAsc = 'worker_scannedData90Days_ASC', + WorkerScannedData90DaysAscNullsFirst = 'worker_scannedData90Days_ASC_NULLS_FIRST', + WorkerScannedData90DaysDesc = 'worker_scannedData90Days_DESC', + WorkerScannedData90DaysDescNullsLast = 'worker_scannedData90Days_DESC_NULLS_LAST', + WorkerServedData24HoursAsc = 'worker_servedData24Hours_ASC', + WorkerServedData24HoursAscNullsFirst = 'worker_servedData24Hours_ASC_NULLS_FIRST', + WorkerServedData24HoursDesc = 'worker_servedData24Hours_DESC', + WorkerServedData24HoursDescNullsLast = 'worker_servedData24Hours_DESC_NULLS_LAST', + WorkerServedData90DaysAsc = 'worker_servedData90Days_ASC', + WorkerServedData90DaysAscNullsFirst = 'worker_servedData90Days_ASC_NULLS_FIRST', + WorkerServedData90DaysDesc = 'worker_servedData90Days_DESC', + WorkerServedData90DaysDescNullsLast = 'worker_servedData90Days_DESC_NULLS_LAST', + WorkerStakerAprAsc = 'worker_stakerApr_ASC', + WorkerStakerAprAscNullsFirst = 'worker_stakerApr_ASC_NULLS_FIRST', + WorkerStakerAprDesc = 'worker_stakerApr_DESC', + WorkerStakerAprDescNullsLast = 'worker_stakerApr_DESC_NULLS_LAST', + WorkerStatusAsc = 'worker_status_ASC', + WorkerStatusAscNullsFirst = 'worker_status_ASC_NULLS_FIRST', + WorkerStatusDesc = 'worker_status_DESC', + WorkerStatusDescNullsLast = 'worker_status_DESC_NULLS_LAST', + WorkerStoredDataAsc = 'worker_storedData_ASC', + WorkerStoredDataAscNullsFirst = 'worker_storedData_ASC_NULLS_FIRST', + WorkerStoredDataDesc = 'worker_storedData_DESC', + WorkerStoredDataDescNullsLast = 'worker_storedData_DESC_NULLS_LAST', + WorkerTotalDelegationAsc = 'worker_totalDelegation_ASC', + WorkerTotalDelegationAscNullsFirst = 'worker_totalDelegation_ASC_NULLS_FIRST', + WorkerTotalDelegationDesc = 'worker_totalDelegation_DESC', + WorkerTotalDelegationDescNullsLast = 'worker_totalDelegation_DESC_NULLS_LAST', + WorkerUptime24HoursAsc = 'worker_uptime24Hours_ASC', + WorkerUptime24HoursAscNullsFirst = 'worker_uptime24Hours_ASC_NULLS_FIRST', + WorkerUptime24HoursDesc = 'worker_uptime24Hours_DESC', + WorkerUptime24HoursDescNullsLast = 'worker_uptime24Hours_DESC_NULLS_LAST', + WorkerUptime90DaysAsc = 'worker_uptime90Days_ASC', + WorkerUptime90DaysAscNullsFirst = 'worker_uptime90Days_ASC_NULLS_FIRST', + WorkerUptime90DaysDesc = 'worker_uptime90Days_DESC', + WorkerUptime90DaysDescNullsLast = 'worker_uptime90Days_DESC_NULLS_LAST', + WorkerVersionAsc = 'worker_version_ASC', + WorkerVersionAscNullsFirst = 'worker_version_ASC_NULLS_FIRST', + WorkerVersionDesc = 'worker_version_DESC', + WorkerVersionDescNullsLast = 'worker_version_DESC_NULLS_LAST', + WorkerWebsiteAsc = 'worker_website_ASC', + WorkerWebsiteAscNullsFirst = 'worker_website_ASC_NULLS_FIRST', + WorkerWebsiteDesc = 'worker_website_DESC', + WorkerWebsiteDescNullsLast = 'worker_website_DESC_NULLS_LAST', +} + +export type WorkerRewardWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + amount_eq?: InputMaybe; + amount_gt?: InputMaybe; + amount_gte?: InputMaybe; + amount_in?: InputMaybe>; + amount_isNull?: InputMaybe; + amount_lt?: InputMaybe; + amount_lte?: InputMaybe; + amount_not_eq?: InputMaybe; + amount_not_in?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + stakersReward_eq?: InputMaybe; + stakersReward_gt?: InputMaybe; + stakersReward_gte?: InputMaybe; + stakersReward_in?: InputMaybe>; + stakersReward_isNull?: InputMaybe; + stakersReward_lt?: InputMaybe; + stakersReward_lte?: InputMaybe; + stakersReward_not_eq?: InputMaybe; + stakersReward_not_in?: InputMaybe>; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + worker?: InputMaybe; + worker_isNull?: InputMaybe; +}; + +export type WorkerRewardsConnection = { + __typename?: 'WorkerRewardsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type WorkerSnapshot = { + __typename?: 'WorkerSnapshot'; + epoch: Epoch; + id: Scalars['String']['output']; + timestamp: Scalars['DateTime']['output']; + uptime: Scalars['Float']['output']; + worker: Worker; +}; + +export type WorkerSnapshotDay = { + __typename?: 'WorkerSnapshotDay'; + timestamp: Scalars['DateTime']['output']; + uptime: Scalars['Float']['output']; +}; + +export type WorkerSnapshotEdge = { + __typename?: 'WorkerSnapshotEdge'; + cursor: Scalars['String']['output']; + node: WorkerSnapshot; +}; + +export enum WorkerSnapshotOrderByInput { + EpochEndAsc = 'epoch_end_ASC', + EpochEndAscNullsFirst = 'epoch_end_ASC_NULLS_FIRST', + EpochEndDesc = 'epoch_end_DESC', + EpochEndDescNullsLast = 'epoch_end_DESC_NULLS_LAST', + EpochEndedAtAsc = 'epoch_endedAt_ASC', + EpochEndedAtAscNullsFirst = 'epoch_endedAt_ASC_NULLS_FIRST', + EpochEndedAtDesc = 'epoch_endedAt_DESC', + EpochEndedAtDescNullsLast = 'epoch_endedAt_DESC_NULLS_LAST', + EpochIdAsc = 'epoch_id_ASC', + EpochIdAscNullsFirst = 'epoch_id_ASC_NULLS_FIRST', + EpochIdDesc = 'epoch_id_DESC', + EpochIdDescNullsLast = 'epoch_id_DESC_NULLS_LAST', + EpochNumberAsc = 'epoch_number_ASC', + EpochNumberAscNullsFirst = 'epoch_number_ASC_NULLS_FIRST', + EpochNumberDesc = 'epoch_number_DESC', + EpochNumberDescNullsLast = 'epoch_number_DESC_NULLS_LAST', + EpochStartAsc = 'epoch_start_ASC', + EpochStartAscNullsFirst = 'epoch_start_ASC_NULLS_FIRST', + EpochStartDesc = 'epoch_start_DESC', + EpochStartDescNullsLast = 'epoch_start_DESC_NULLS_LAST', + EpochStartedAtAsc = 'epoch_startedAt_ASC', + EpochStartedAtAscNullsFirst = 'epoch_startedAt_ASC_NULLS_FIRST', + EpochStartedAtDesc = 'epoch_startedAt_DESC', + EpochStartedAtDescNullsLast = 'epoch_startedAt_DESC_NULLS_LAST', + EpochStatusAsc = 'epoch_status_ASC', + EpochStatusAscNullsFirst = 'epoch_status_ASC_NULLS_FIRST', + EpochStatusDesc = 'epoch_status_DESC', + EpochStatusDescNullsLast = 'epoch_status_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', + UptimeAsc = 'uptime_ASC', + UptimeAscNullsFirst = 'uptime_ASC_NULLS_FIRST', + UptimeDesc = 'uptime_DESC', + UptimeDescNullsLast = 'uptime_DESC_NULLS_LAST', + WorkerAprAsc = 'worker_apr_ASC', + WorkerAprAscNullsFirst = 'worker_apr_ASC_NULLS_FIRST', + WorkerAprDesc = 'worker_apr_DESC', + WorkerAprDescNullsLast = 'worker_apr_DESC_NULLS_LAST', + WorkerBondAsc = 'worker_bond_ASC', + WorkerBondAscNullsFirst = 'worker_bond_ASC_NULLS_FIRST', + WorkerBondDesc = 'worker_bond_DESC', + WorkerBondDescNullsLast = 'worker_bond_DESC_NULLS_LAST', + WorkerClaimableRewardAsc = 'worker_claimableReward_ASC', + WorkerClaimableRewardAscNullsFirst = 'worker_claimableReward_ASC_NULLS_FIRST', + WorkerClaimableRewardDesc = 'worker_claimableReward_DESC', + WorkerClaimableRewardDescNullsLast = 'worker_claimableReward_DESC_NULLS_LAST', + WorkerClaimedRewardAsc = 'worker_claimedReward_ASC', + WorkerClaimedRewardAscNullsFirst = 'worker_claimedReward_ASC_NULLS_FIRST', + WorkerClaimedRewardDesc = 'worker_claimedReward_DESC', + WorkerClaimedRewardDescNullsLast = 'worker_claimedReward_DESC_NULLS_LAST', + WorkerCreatedAtAsc = 'worker_createdAt_ASC', + WorkerCreatedAtAscNullsFirst = 'worker_createdAt_ASC_NULLS_FIRST', + WorkerCreatedAtDesc = 'worker_createdAt_DESC', + WorkerCreatedAtDescNullsLast = 'worker_createdAt_DESC_NULLS_LAST', + WorkerDelegationCountAsc = 'worker_delegationCount_ASC', + WorkerDelegationCountAscNullsFirst = 'worker_delegationCount_ASC_NULLS_FIRST', + WorkerDelegationCountDesc = 'worker_delegationCount_DESC', + WorkerDelegationCountDescNullsLast = 'worker_delegationCount_DESC_NULLS_LAST', + WorkerDescriptionAsc = 'worker_description_ASC', + WorkerDescriptionAscNullsFirst = 'worker_description_ASC_NULLS_FIRST', + WorkerDescriptionDesc = 'worker_description_DESC', + WorkerDescriptionDescNullsLast = 'worker_description_DESC_NULLS_LAST', + WorkerDialOkAsc = 'worker_dialOk_ASC', + WorkerDialOkAscNullsFirst = 'worker_dialOk_ASC_NULLS_FIRST', + WorkerDialOkDesc = 'worker_dialOk_DESC', + WorkerDialOkDescNullsLast = 'worker_dialOk_DESC_NULLS_LAST', + WorkerEmailAsc = 'worker_email_ASC', + WorkerEmailAscNullsFirst = 'worker_email_ASC_NULLS_FIRST', + WorkerEmailDesc = 'worker_email_DESC', + WorkerEmailDescNullsLast = 'worker_email_DESC_NULLS_LAST', + WorkerIdAsc = 'worker_id_ASC', + WorkerIdAscNullsFirst = 'worker_id_ASC_NULLS_FIRST', + WorkerIdDesc = 'worker_id_DESC', + WorkerIdDescNullsLast = 'worker_id_DESC_NULLS_LAST', + WorkerJailedAsc = 'worker_jailed_ASC', + WorkerJailedAscNullsFirst = 'worker_jailed_ASC_NULLS_FIRST', + WorkerJailedDesc = 'worker_jailed_DESC', + WorkerJailedDescNullsLast = 'worker_jailed_DESC_NULLS_LAST', + WorkerNameAsc = 'worker_name_ASC', + WorkerNameAscNullsFirst = 'worker_name_ASC_NULLS_FIRST', + WorkerNameDesc = 'worker_name_DESC', + WorkerNameDescNullsLast = 'worker_name_DESC_NULLS_LAST', + WorkerOnlineAsc = 'worker_online_ASC', + WorkerOnlineAscNullsFirst = 'worker_online_ASC_NULLS_FIRST', + WorkerOnlineDesc = 'worker_online_DESC', + WorkerOnlineDescNullsLast = 'worker_online_DESC_NULLS_LAST', + WorkerPeerIdAsc = 'worker_peerId_ASC', + WorkerPeerIdAscNullsFirst = 'worker_peerId_ASC_NULLS_FIRST', + WorkerPeerIdDesc = 'worker_peerId_DESC', + WorkerPeerIdDescNullsLast = 'worker_peerId_DESC_NULLS_LAST', + WorkerQueries24HoursAsc = 'worker_queries24Hours_ASC', + WorkerQueries24HoursAscNullsFirst = 'worker_queries24Hours_ASC_NULLS_FIRST', + WorkerQueries24HoursDesc = 'worker_queries24Hours_DESC', + WorkerQueries24HoursDescNullsLast = 'worker_queries24Hours_DESC_NULLS_LAST', + WorkerQueries90DaysAsc = 'worker_queries90Days_ASC', + WorkerQueries90DaysAscNullsFirst = 'worker_queries90Days_ASC_NULLS_FIRST', + WorkerQueries90DaysDesc = 'worker_queries90Days_DESC', + WorkerQueries90DaysDescNullsLast = 'worker_queries90Days_DESC_NULLS_LAST', + WorkerScannedData24HoursAsc = 'worker_scannedData24Hours_ASC', + WorkerScannedData24HoursAscNullsFirst = 'worker_scannedData24Hours_ASC_NULLS_FIRST', + WorkerScannedData24HoursDesc = 'worker_scannedData24Hours_DESC', + WorkerScannedData24HoursDescNullsLast = 'worker_scannedData24Hours_DESC_NULLS_LAST', + WorkerScannedData90DaysAsc = 'worker_scannedData90Days_ASC', + WorkerScannedData90DaysAscNullsFirst = 'worker_scannedData90Days_ASC_NULLS_FIRST', + WorkerScannedData90DaysDesc = 'worker_scannedData90Days_DESC', + WorkerScannedData90DaysDescNullsLast = 'worker_scannedData90Days_DESC_NULLS_LAST', + WorkerServedData24HoursAsc = 'worker_servedData24Hours_ASC', + WorkerServedData24HoursAscNullsFirst = 'worker_servedData24Hours_ASC_NULLS_FIRST', + WorkerServedData24HoursDesc = 'worker_servedData24Hours_DESC', + WorkerServedData24HoursDescNullsLast = 'worker_servedData24Hours_DESC_NULLS_LAST', + WorkerServedData90DaysAsc = 'worker_servedData90Days_ASC', + WorkerServedData90DaysAscNullsFirst = 'worker_servedData90Days_ASC_NULLS_FIRST', + WorkerServedData90DaysDesc = 'worker_servedData90Days_DESC', + WorkerServedData90DaysDescNullsLast = 'worker_servedData90Days_DESC_NULLS_LAST', + WorkerStakerAprAsc = 'worker_stakerApr_ASC', + WorkerStakerAprAscNullsFirst = 'worker_stakerApr_ASC_NULLS_FIRST', + WorkerStakerAprDesc = 'worker_stakerApr_DESC', + WorkerStakerAprDescNullsLast = 'worker_stakerApr_DESC_NULLS_LAST', + WorkerStatusAsc = 'worker_status_ASC', + WorkerStatusAscNullsFirst = 'worker_status_ASC_NULLS_FIRST', + WorkerStatusDesc = 'worker_status_DESC', + WorkerStatusDescNullsLast = 'worker_status_DESC_NULLS_LAST', + WorkerStoredDataAsc = 'worker_storedData_ASC', + WorkerStoredDataAscNullsFirst = 'worker_storedData_ASC_NULLS_FIRST', + WorkerStoredDataDesc = 'worker_storedData_DESC', + WorkerStoredDataDescNullsLast = 'worker_storedData_DESC_NULLS_LAST', + WorkerTotalDelegationAsc = 'worker_totalDelegation_ASC', + WorkerTotalDelegationAscNullsFirst = 'worker_totalDelegation_ASC_NULLS_FIRST', + WorkerTotalDelegationDesc = 'worker_totalDelegation_DESC', + WorkerTotalDelegationDescNullsLast = 'worker_totalDelegation_DESC_NULLS_LAST', + WorkerUptime24HoursAsc = 'worker_uptime24Hours_ASC', + WorkerUptime24HoursAscNullsFirst = 'worker_uptime24Hours_ASC_NULLS_FIRST', + WorkerUptime24HoursDesc = 'worker_uptime24Hours_DESC', + WorkerUptime24HoursDescNullsLast = 'worker_uptime24Hours_DESC_NULLS_LAST', + WorkerUptime90DaysAsc = 'worker_uptime90Days_ASC', + WorkerUptime90DaysAscNullsFirst = 'worker_uptime90Days_ASC_NULLS_FIRST', + WorkerUptime90DaysDesc = 'worker_uptime90Days_DESC', + WorkerUptime90DaysDescNullsLast = 'worker_uptime90Days_DESC_NULLS_LAST', + WorkerVersionAsc = 'worker_version_ASC', + WorkerVersionAscNullsFirst = 'worker_version_ASC_NULLS_FIRST', + WorkerVersionDesc = 'worker_version_DESC', + WorkerVersionDescNullsLast = 'worker_version_DESC_NULLS_LAST', + WorkerWebsiteAsc = 'worker_website_ASC', + WorkerWebsiteAscNullsFirst = 'worker_website_ASC_NULLS_FIRST', + WorkerWebsiteDesc = 'worker_website_DESC', + WorkerWebsiteDescNullsLast = 'worker_website_DESC_NULLS_LAST', +} + +export type WorkerSnapshotWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + epoch?: InputMaybe; + epoch_isNull?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + uptime_eq?: InputMaybe; + uptime_gt?: InputMaybe; + uptime_gte?: InputMaybe; + uptime_in?: InputMaybe>; + uptime_isNull?: InputMaybe; + uptime_lt?: InputMaybe; + uptime_lte?: InputMaybe; + uptime_not_eq?: InputMaybe; + uptime_not_in?: InputMaybe>; + worker?: InputMaybe; + worker_isNull?: InputMaybe; +}; + +export type WorkerSnapshotsConnection = { + __typename?: 'WorkerSnapshotsConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export enum WorkerStatus { + Active = 'ACTIVE', + Deregistered = 'DEREGISTERED', + Deregistering = 'DEREGISTERING', + Registering = 'REGISTERING', + Unknow = 'UNKNOW', + Withdrawn = 'WITHDRAWN', +} + +export type WorkerStatusChange = { + __typename?: 'WorkerStatusChange'; + blockNumber: Scalars['Int']['output']; + id: Scalars['String']['output']; + pending: Scalars['Boolean']['output']; + status: WorkerStatus; + timestamp?: Maybe; + worker: Worker; +}; + +export type WorkerStatusChangeEdge = { + __typename?: 'WorkerStatusChangeEdge'; + cursor: Scalars['String']['output']; + node: WorkerStatusChange; +}; + +export enum WorkerStatusChangeOrderByInput { + BlockNumberAsc = 'blockNumber_ASC', + BlockNumberAscNullsFirst = 'blockNumber_ASC_NULLS_FIRST', + BlockNumberDesc = 'blockNumber_DESC', + BlockNumberDescNullsLast = 'blockNumber_DESC_NULLS_LAST', + IdAsc = 'id_ASC', + IdAscNullsFirst = 'id_ASC_NULLS_FIRST', + IdDesc = 'id_DESC', + IdDescNullsLast = 'id_DESC_NULLS_LAST', + PendingAsc = 'pending_ASC', + PendingAscNullsFirst = 'pending_ASC_NULLS_FIRST', + PendingDesc = 'pending_DESC', + PendingDescNullsLast = 'pending_DESC_NULLS_LAST', + StatusAsc = 'status_ASC', + StatusAscNullsFirst = 'status_ASC_NULLS_FIRST', + StatusDesc = 'status_DESC', + StatusDescNullsLast = 'status_DESC_NULLS_LAST', + TimestampAsc = 'timestamp_ASC', + TimestampAscNullsFirst = 'timestamp_ASC_NULLS_FIRST', + TimestampDesc = 'timestamp_DESC', + TimestampDescNullsLast = 'timestamp_DESC_NULLS_LAST', + WorkerAprAsc = 'worker_apr_ASC', + WorkerAprAscNullsFirst = 'worker_apr_ASC_NULLS_FIRST', + WorkerAprDesc = 'worker_apr_DESC', + WorkerAprDescNullsLast = 'worker_apr_DESC_NULLS_LAST', + WorkerBondAsc = 'worker_bond_ASC', + WorkerBondAscNullsFirst = 'worker_bond_ASC_NULLS_FIRST', + WorkerBondDesc = 'worker_bond_DESC', + WorkerBondDescNullsLast = 'worker_bond_DESC_NULLS_LAST', + WorkerClaimableRewardAsc = 'worker_claimableReward_ASC', + WorkerClaimableRewardAscNullsFirst = 'worker_claimableReward_ASC_NULLS_FIRST', + WorkerClaimableRewardDesc = 'worker_claimableReward_DESC', + WorkerClaimableRewardDescNullsLast = 'worker_claimableReward_DESC_NULLS_LAST', + WorkerClaimedRewardAsc = 'worker_claimedReward_ASC', + WorkerClaimedRewardAscNullsFirst = 'worker_claimedReward_ASC_NULLS_FIRST', + WorkerClaimedRewardDesc = 'worker_claimedReward_DESC', + WorkerClaimedRewardDescNullsLast = 'worker_claimedReward_DESC_NULLS_LAST', + WorkerCreatedAtAsc = 'worker_createdAt_ASC', + WorkerCreatedAtAscNullsFirst = 'worker_createdAt_ASC_NULLS_FIRST', + WorkerCreatedAtDesc = 'worker_createdAt_DESC', + WorkerCreatedAtDescNullsLast = 'worker_createdAt_DESC_NULLS_LAST', + WorkerDelegationCountAsc = 'worker_delegationCount_ASC', + WorkerDelegationCountAscNullsFirst = 'worker_delegationCount_ASC_NULLS_FIRST', + WorkerDelegationCountDesc = 'worker_delegationCount_DESC', + WorkerDelegationCountDescNullsLast = 'worker_delegationCount_DESC_NULLS_LAST', + WorkerDescriptionAsc = 'worker_description_ASC', + WorkerDescriptionAscNullsFirst = 'worker_description_ASC_NULLS_FIRST', + WorkerDescriptionDesc = 'worker_description_DESC', + WorkerDescriptionDescNullsLast = 'worker_description_DESC_NULLS_LAST', + WorkerDialOkAsc = 'worker_dialOk_ASC', + WorkerDialOkAscNullsFirst = 'worker_dialOk_ASC_NULLS_FIRST', + WorkerDialOkDesc = 'worker_dialOk_DESC', + WorkerDialOkDescNullsLast = 'worker_dialOk_DESC_NULLS_LAST', + WorkerEmailAsc = 'worker_email_ASC', + WorkerEmailAscNullsFirst = 'worker_email_ASC_NULLS_FIRST', + WorkerEmailDesc = 'worker_email_DESC', + WorkerEmailDescNullsLast = 'worker_email_DESC_NULLS_LAST', + WorkerIdAsc = 'worker_id_ASC', + WorkerIdAscNullsFirst = 'worker_id_ASC_NULLS_FIRST', + WorkerIdDesc = 'worker_id_DESC', + WorkerIdDescNullsLast = 'worker_id_DESC_NULLS_LAST', + WorkerJailedAsc = 'worker_jailed_ASC', + WorkerJailedAscNullsFirst = 'worker_jailed_ASC_NULLS_FIRST', + WorkerJailedDesc = 'worker_jailed_DESC', + WorkerJailedDescNullsLast = 'worker_jailed_DESC_NULLS_LAST', + WorkerNameAsc = 'worker_name_ASC', + WorkerNameAscNullsFirst = 'worker_name_ASC_NULLS_FIRST', + WorkerNameDesc = 'worker_name_DESC', + WorkerNameDescNullsLast = 'worker_name_DESC_NULLS_LAST', + WorkerOnlineAsc = 'worker_online_ASC', + WorkerOnlineAscNullsFirst = 'worker_online_ASC_NULLS_FIRST', + WorkerOnlineDesc = 'worker_online_DESC', + WorkerOnlineDescNullsLast = 'worker_online_DESC_NULLS_LAST', + WorkerPeerIdAsc = 'worker_peerId_ASC', + WorkerPeerIdAscNullsFirst = 'worker_peerId_ASC_NULLS_FIRST', + WorkerPeerIdDesc = 'worker_peerId_DESC', + WorkerPeerIdDescNullsLast = 'worker_peerId_DESC_NULLS_LAST', + WorkerQueries24HoursAsc = 'worker_queries24Hours_ASC', + WorkerQueries24HoursAscNullsFirst = 'worker_queries24Hours_ASC_NULLS_FIRST', + WorkerQueries24HoursDesc = 'worker_queries24Hours_DESC', + WorkerQueries24HoursDescNullsLast = 'worker_queries24Hours_DESC_NULLS_LAST', + WorkerQueries90DaysAsc = 'worker_queries90Days_ASC', + WorkerQueries90DaysAscNullsFirst = 'worker_queries90Days_ASC_NULLS_FIRST', + WorkerQueries90DaysDesc = 'worker_queries90Days_DESC', + WorkerQueries90DaysDescNullsLast = 'worker_queries90Days_DESC_NULLS_LAST', + WorkerScannedData24HoursAsc = 'worker_scannedData24Hours_ASC', + WorkerScannedData24HoursAscNullsFirst = 'worker_scannedData24Hours_ASC_NULLS_FIRST', + WorkerScannedData24HoursDesc = 'worker_scannedData24Hours_DESC', + WorkerScannedData24HoursDescNullsLast = 'worker_scannedData24Hours_DESC_NULLS_LAST', + WorkerScannedData90DaysAsc = 'worker_scannedData90Days_ASC', + WorkerScannedData90DaysAscNullsFirst = 'worker_scannedData90Days_ASC_NULLS_FIRST', + WorkerScannedData90DaysDesc = 'worker_scannedData90Days_DESC', + WorkerScannedData90DaysDescNullsLast = 'worker_scannedData90Days_DESC_NULLS_LAST', + WorkerServedData24HoursAsc = 'worker_servedData24Hours_ASC', + WorkerServedData24HoursAscNullsFirst = 'worker_servedData24Hours_ASC_NULLS_FIRST', + WorkerServedData24HoursDesc = 'worker_servedData24Hours_DESC', + WorkerServedData24HoursDescNullsLast = 'worker_servedData24Hours_DESC_NULLS_LAST', + WorkerServedData90DaysAsc = 'worker_servedData90Days_ASC', + WorkerServedData90DaysAscNullsFirst = 'worker_servedData90Days_ASC_NULLS_FIRST', + WorkerServedData90DaysDesc = 'worker_servedData90Days_DESC', + WorkerServedData90DaysDescNullsLast = 'worker_servedData90Days_DESC_NULLS_LAST', + WorkerStakerAprAsc = 'worker_stakerApr_ASC', + WorkerStakerAprAscNullsFirst = 'worker_stakerApr_ASC_NULLS_FIRST', + WorkerStakerAprDesc = 'worker_stakerApr_DESC', + WorkerStakerAprDescNullsLast = 'worker_stakerApr_DESC_NULLS_LAST', + WorkerStatusAsc = 'worker_status_ASC', + WorkerStatusAscNullsFirst = 'worker_status_ASC_NULLS_FIRST', + WorkerStatusDesc = 'worker_status_DESC', + WorkerStatusDescNullsLast = 'worker_status_DESC_NULLS_LAST', + WorkerStoredDataAsc = 'worker_storedData_ASC', + WorkerStoredDataAscNullsFirst = 'worker_storedData_ASC_NULLS_FIRST', + WorkerStoredDataDesc = 'worker_storedData_DESC', + WorkerStoredDataDescNullsLast = 'worker_storedData_DESC_NULLS_LAST', + WorkerTotalDelegationAsc = 'worker_totalDelegation_ASC', + WorkerTotalDelegationAscNullsFirst = 'worker_totalDelegation_ASC_NULLS_FIRST', + WorkerTotalDelegationDesc = 'worker_totalDelegation_DESC', + WorkerTotalDelegationDescNullsLast = 'worker_totalDelegation_DESC_NULLS_LAST', + WorkerUptime24HoursAsc = 'worker_uptime24Hours_ASC', + WorkerUptime24HoursAscNullsFirst = 'worker_uptime24Hours_ASC_NULLS_FIRST', + WorkerUptime24HoursDesc = 'worker_uptime24Hours_DESC', + WorkerUptime24HoursDescNullsLast = 'worker_uptime24Hours_DESC_NULLS_LAST', + WorkerUptime90DaysAsc = 'worker_uptime90Days_ASC', + WorkerUptime90DaysAscNullsFirst = 'worker_uptime90Days_ASC_NULLS_FIRST', + WorkerUptime90DaysDesc = 'worker_uptime90Days_DESC', + WorkerUptime90DaysDescNullsLast = 'worker_uptime90Days_DESC_NULLS_LAST', + WorkerVersionAsc = 'worker_version_ASC', + WorkerVersionAscNullsFirst = 'worker_version_ASC_NULLS_FIRST', + WorkerVersionDesc = 'worker_version_DESC', + WorkerVersionDescNullsLast = 'worker_version_DESC_NULLS_LAST', + WorkerWebsiteAsc = 'worker_website_ASC', + WorkerWebsiteAscNullsFirst = 'worker_website_ASC_NULLS_FIRST', + WorkerWebsiteDesc = 'worker_website_DESC', + WorkerWebsiteDescNullsLast = 'worker_website_DESC_NULLS_LAST', +} + +export type WorkerStatusChangeWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + blockNumber_eq?: InputMaybe; + blockNumber_gt?: InputMaybe; + blockNumber_gte?: InputMaybe; + blockNumber_in?: InputMaybe>; + blockNumber_isNull?: InputMaybe; + blockNumber_lt?: InputMaybe; + blockNumber_lte?: InputMaybe; + blockNumber_not_eq?: InputMaybe; + blockNumber_not_in?: InputMaybe>; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + pending_eq?: InputMaybe; + pending_isNull?: InputMaybe; + pending_not_eq?: InputMaybe; + status_eq?: InputMaybe; + status_in?: InputMaybe>; + status_isNull?: InputMaybe; + status_not_eq?: InputMaybe; + status_not_in?: InputMaybe>; + timestamp_eq?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_isNull?: InputMaybe; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not_eq?: InputMaybe; + timestamp_not_in?: InputMaybe>; + worker?: InputMaybe; + worker_isNull?: InputMaybe; +}; + +export type WorkerStatusChangesConnection = { + __typename?: 'WorkerStatusChangesConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type WorkerWhereInput = { + AND?: InputMaybe>; + OR?: InputMaybe>; + apr_eq?: InputMaybe; + apr_gt?: InputMaybe; + apr_gte?: InputMaybe; + apr_in?: InputMaybe>; + apr_isNull?: InputMaybe; + apr_lt?: InputMaybe; + apr_lte?: InputMaybe; + apr_not_eq?: InputMaybe; + apr_not_in?: InputMaybe>; + bond_eq?: InputMaybe; + bond_gt?: InputMaybe; + bond_gte?: InputMaybe; + bond_in?: InputMaybe>; + bond_isNull?: InputMaybe; + bond_lt?: InputMaybe; + bond_lte?: InputMaybe; + bond_not_eq?: InputMaybe; + bond_not_in?: InputMaybe>; + claimableReward_eq?: InputMaybe; + claimableReward_gt?: InputMaybe; + claimableReward_gte?: InputMaybe; + claimableReward_in?: InputMaybe>; + claimableReward_isNull?: InputMaybe; + claimableReward_lt?: InputMaybe; + claimableReward_lte?: InputMaybe; + claimableReward_not_eq?: InputMaybe; + claimableReward_not_in?: InputMaybe>; + claimedReward_eq?: InputMaybe; + claimedReward_gt?: InputMaybe; + claimedReward_gte?: InputMaybe; + claimedReward_in?: InputMaybe>; + claimedReward_isNull?: InputMaybe; + claimedReward_lt?: InputMaybe; + claimedReward_lte?: InputMaybe; + claimedReward_not_eq?: InputMaybe; + claimedReward_not_in?: InputMaybe>; + claims_every?: InputMaybe; + claims_none?: InputMaybe; + claims_some?: InputMaybe; + createdAt_eq?: InputMaybe; + createdAt_gt?: InputMaybe; + createdAt_gte?: InputMaybe; + createdAt_in?: InputMaybe>; + createdAt_isNull?: InputMaybe; + createdAt_lt?: InputMaybe; + createdAt_lte?: InputMaybe; + createdAt_not_eq?: InputMaybe; + createdAt_not_in?: InputMaybe>; + delegationCount_eq?: InputMaybe; + delegationCount_gt?: InputMaybe; + delegationCount_gte?: InputMaybe; + delegationCount_in?: InputMaybe>; + delegationCount_isNull?: InputMaybe; + delegationCount_lt?: InputMaybe; + delegationCount_lte?: InputMaybe; + delegationCount_not_eq?: InputMaybe; + delegationCount_not_in?: InputMaybe>; + delegations_every?: InputMaybe; + delegations_none?: InputMaybe; + delegations_some?: InputMaybe; + description_contains?: InputMaybe; + description_containsInsensitive?: InputMaybe; + description_endsWith?: InputMaybe; + description_eq?: InputMaybe; + description_gt?: InputMaybe; + description_gte?: InputMaybe; + description_in?: InputMaybe>; + description_isNull?: InputMaybe; + description_lt?: InputMaybe; + description_lte?: InputMaybe; + description_not_contains?: InputMaybe; + description_not_containsInsensitive?: InputMaybe; + description_not_endsWith?: InputMaybe; + description_not_eq?: InputMaybe; + description_not_in?: InputMaybe>; + description_not_startsWith?: InputMaybe; + description_startsWith?: InputMaybe; + dialOk_eq?: InputMaybe; + dialOk_isNull?: InputMaybe; + dialOk_not_eq?: InputMaybe; + email_contains?: InputMaybe; + email_containsInsensitive?: InputMaybe; + email_endsWith?: InputMaybe; + email_eq?: InputMaybe; + email_gt?: InputMaybe; + email_gte?: InputMaybe; + email_in?: InputMaybe>; + email_isNull?: InputMaybe; + email_lt?: InputMaybe; + email_lte?: InputMaybe; + email_not_contains?: InputMaybe; + email_not_containsInsensitive?: InputMaybe; + email_not_endsWith?: InputMaybe; + email_not_eq?: InputMaybe; + email_not_in?: InputMaybe>; + email_not_startsWith?: InputMaybe; + email_startsWith?: InputMaybe; + id_contains?: InputMaybe; + id_containsInsensitive?: InputMaybe; + id_endsWith?: InputMaybe; + id_eq?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_isNull?: InputMaybe; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not_contains?: InputMaybe; + id_not_containsInsensitive?: InputMaybe; + id_not_endsWith?: InputMaybe; + id_not_eq?: InputMaybe; + id_not_in?: InputMaybe>; + id_not_startsWith?: InputMaybe; + id_startsWith?: InputMaybe; + jailed_eq?: InputMaybe; + jailed_isNull?: InputMaybe; + jailed_not_eq?: InputMaybe; + name_contains?: InputMaybe; + name_containsInsensitive?: InputMaybe; + name_endsWith?: InputMaybe; + name_eq?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_isNull?: InputMaybe; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_containsInsensitive?: InputMaybe; + name_not_endsWith?: InputMaybe; + name_not_eq?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_startsWith?: InputMaybe; + name_startsWith?: InputMaybe; + online_eq?: InputMaybe; + online_isNull?: InputMaybe; + online_not_eq?: InputMaybe; + owner?: InputMaybe; + owner_isNull?: InputMaybe; + peerId_contains?: InputMaybe; + peerId_containsInsensitive?: InputMaybe; + peerId_endsWith?: InputMaybe; + peerId_eq?: InputMaybe; + peerId_gt?: InputMaybe; + peerId_gte?: InputMaybe; + peerId_in?: InputMaybe>; + peerId_isNull?: InputMaybe; + peerId_lt?: InputMaybe; + peerId_lte?: InputMaybe; + peerId_not_contains?: InputMaybe; + peerId_not_containsInsensitive?: InputMaybe; + peerId_not_endsWith?: InputMaybe; + peerId_not_eq?: InputMaybe; + peerId_not_in?: InputMaybe>; + peerId_not_startsWith?: InputMaybe; + peerId_startsWith?: InputMaybe; + queries24Hours_eq?: InputMaybe; + queries24Hours_gt?: InputMaybe; + queries24Hours_gte?: InputMaybe; + queries24Hours_in?: InputMaybe>; + queries24Hours_isNull?: InputMaybe; + queries24Hours_lt?: InputMaybe; + queries24Hours_lte?: InputMaybe; + queries24Hours_not_eq?: InputMaybe; + queries24Hours_not_in?: InputMaybe>; + queries90Days_eq?: InputMaybe; + queries90Days_gt?: InputMaybe; + queries90Days_gte?: InputMaybe; + queries90Days_in?: InputMaybe>; + queries90Days_isNull?: InputMaybe; + queries90Days_lt?: InputMaybe; + queries90Days_lte?: InputMaybe; + queries90Days_not_eq?: InputMaybe; + queries90Days_not_in?: InputMaybe>; + realOwner?: InputMaybe; + realOwner_isNull?: InputMaybe; + rewards_every?: InputMaybe; + rewards_none?: InputMaybe; + rewards_some?: InputMaybe; + scannedData24Hours_eq?: InputMaybe; + scannedData24Hours_gt?: InputMaybe; + scannedData24Hours_gte?: InputMaybe; + scannedData24Hours_in?: InputMaybe>; + scannedData24Hours_isNull?: InputMaybe; + scannedData24Hours_lt?: InputMaybe; + scannedData24Hours_lte?: InputMaybe; + scannedData24Hours_not_eq?: InputMaybe; + scannedData24Hours_not_in?: InputMaybe>; + scannedData90Days_eq?: InputMaybe; + scannedData90Days_gt?: InputMaybe; + scannedData90Days_gte?: InputMaybe; + scannedData90Days_in?: InputMaybe>; + scannedData90Days_isNull?: InputMaybe; + scannedData90Days_lt?: InputMaybe; + scannedData90Days_lte?: InputMaybe; + scannedData90Days_not_eq?: InputMaybe; + scannedData90Days_not_in?: InputMaybe>; + servedData24Hours_eq?: InputMaybe; + servedData24Hours_gt?: InputMaybe; + servedData24Hours_gte?: InputMaybe; + servedData24Hours_in?: InputMaybe>; + servedData24Hours_isNull?: InputMaybe; + servedData24Hours_lt?: InputMaybe; + servedData24Hours_lte?: InputMaybe; + servedData24Hours_not_eq?: InputMaybe; + servedData24Hours_not_in?: InputMaybe>; + servedData90Days_eq?: InputMaybe; + servedData90Days_gt?: InputMaybe; + servedData90Days_gte?: InputMaybe; + servedData90Days_in?: InputMaybe>; + servedData90Days_isNull?: InputMaybe; + servedData90Days_lt?: InputMaybe; + servedData90Days_lte?: InputMaybe; + servedData90Days_not_eq?: InputMaybe; + servedData90Days_not_in?: InputMaybe>; + snapshots_every?: InputMaybe; + snapshots_none?: InputMaybe; + snapshots_some?: InputMaybe; + stakerApr_eq?: InputMaybe; + stakerApr_gt?: InputMaybe; + stakerApr_gte?: InputMaybe; + stakerApr_in?: InputMaybe>; + stakerApr_isNull?: InputMaybe; + stakerApr_lt?: InputMaybe; + stakerApr_lte?: InputMaybe; + stakerApr_not_eq?: InputMaybe; + stakerApr_not_in?: InputMaybe>; + statusHistory_every?: InputMaybe; + statusHistory_none?: InputMaybe; + statusHistory_some?: InputMaybe; + status_eq?: InputMaybe; + status_in?: InputMaybe>; + status_isNull?: InputMaybe; + status_not_eq?: InputMaybe; + status_not_in?: InputMaybe>; + storedData_eq?: InputMaybe; + storedData_gt?: InputMaybe; + storedData_gte?: InputMaybe; + storedData_in?: InputMaybe>; + storedData_isNull?: InputMaybe; + storedData_lt?: InputMaybe; + storedData_lte?: InputMaybe; + storedData_not_eq?: InputMaybe; + storedData_not_in?: InputMaybe>; + totalDelegation_eq?: InputMaybe; + totalDelegation_gt?: InputMaybe; + totalDelegation_gte?: InputMaybe; + totalDelegation_in?: InputMaybe>; + totalDelegation_isNull?: InputMaybe; + totalDelegation_lt?: InputMaybe; + totalDelegation_lte?: InputMaybe; + totalDelegation_not_eq?: InputMaybe; + totalDelegation_not_in?: InputMaybe>; + uptime24Hours_eq?: InputMaybe; + uptime24Hours_gt?: InputMaybe; + uptime24Hours_gte?: InputMaybe; + uptime24Hours_in?: InputMaybe>; + uptime24Hours_isNull?: InputMaybe; + uptime24Hours_lt?: InputMaybe; + uptime24Hours_lte?: InputMaybe; + uptime24Hours_not_eq?: InputMaybe; + uptime24Hours_not_in?: InputMaybe>; + uptime90Days_eq?: InputMaybe; + uptime90Days_gt?: InputMaybe; + uptime90Days_gte?: InputMaybe; + uptime90Days_in?: InputMaybe>; + uptime90Days_isNull?: InputMaybe; + uptime90Days_lt?: InputMaybe; + uptime90Days_lte?: InputMaybe; + uptime90Days_not_eq?: InputMaybe; + uptime90Days_not_in?: InputMaybe>; + version_contains?: InputMaybe; + version_containsInsensitive?: InputMaybe; + version_endsWith?: InputMaybe; + version_eq?: InputMaybe; + version_gt?: InputMaybe; + version_gte?: InputMaybe; + version_in?: InputMaybe>; + version_isNull?: InputMaybe; + version_lt?: InputMaybe; + version_lte?: InputMaybe; + version_not_contains?: InputMaybe; + version_not_containsInsensitive?: InputMaybe; + version_not_endsWith?: InputMaybe; + version_not_eq?: InputMaybe; + version_not_in?: InputMaybe>; + version_not_startsWith?: InputMaybe; + version_startsWith?: InputMaybe; + website_contains?: InputMaybe; + website_containsInsensitive?: InputMaybe; + website_endsWith?: InputMaybe; + website_eq?: InputMaybe; + website_gt?: InputMaybe; + website_gte?: InputMaybe; + website_in?: InputMaybe>; + website_isNull?: InputMaybe; + website_lt?: InputMaybe; + website_lte?: InputMaybe; + website_not_contains?: InputMaybe; + website_not_containsInsensitive?: InputMaybe; + website_not_endsWith?: InputMaybe; + website_not_eq?: InputMaybe; + website_not_in?: InputMaybe>; + website_not_startsWith?: InputMaybe; + website_startsWith?: InputMaybe; +}; + +export type WorkersConnection = { + __typename?: 'WorkersConnection'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type SquidNetworkHeightQueryVariables = Exact<{ [key: string]: never }>; + +export type SquidNetworkHeightQuery = { + __typename?: 'Query'; + squidStatus?: { __typename?: 'SquidStatus'; height?: number }; +}; + +export type SettingsQueryVariables = Exact<{ [key: string]: never }>; + +export type SettingsQuery = { + __typename?: 'Query'; + settingsConnection: { + __typename?: 'SettingsConnection'; + edges: Array<{ + __typename?: 'SettingsEdge'; + node: { + __typename?: 'Settings'; + id: string; + bondAmount?: any; + delegationLimitCoefficient: number; + }; + }>; + }; +}; + +export type AccountQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type AccountQuery = { + __typename?: 'Query'; + accountById?: { + __typename?: 'Account'; + id: string; + type: AccountType; + balance: any; + owned: Array<{ __typename?: 'Account'; id: string; type: AccountType; balance: any }>; + }; +}; + +export type WorkerFragmentFragment = { + __typename?: 'Worker'; + id: string; + name?: string; + email?: string; + peerId: string; + website?: string; + status: WorkerStatus; + createdAt: any; + description?: string; + bond: any; + claimableReward: any; + claimedReward: any; + uptime24Hours?: number; + uptime90Days?: number; + totalDelegation: any; + delegationCount: number; + apr?: number; + stakerApr?: number; + online?: boolean; + jailed?: boolean; + dialOk?: boolean; + owner: { __typename?: 'Account'; id: string }; + realOwner: { __typename?: 'Account'; id: string }; +}; + +export type WorkerFullFragmentFragment = { + __typename?: 'Worker'; + queries24Hours?: any; + queries90Days?: any; + scannedData24Hours?: any; + scannedData90Days?: any; + servedData24Hours?: any; + servedData90Days?: any; + storedData?: any; + owner: { __typename?: 'Account'; id: string; type: AccountType }; +}; + +export type AllWorkersQueryVariables = Exact<{ [key: string]: never }>; + +export type AllWorkersQuery = { + __typename?: 'Query'; + workers: Array<{ + __typename?: 'Worker'; + id: string; + name?: string; + email?: string; + peerId: string; + website?: string; + status: WorkerStatus; + createdAt: any; + description?: string; + bond: any; + claimableReward: any; + claimedReward: any; + uptime24Hours?: number; + uptime90Days?: number; + totalDelegation: any; + delegationCount: number; + apr?: number; + stakerApr?: number; + online?: boolean; + jailed?: boolean; + dialOk?: boolean; + owner: { __typename?: 'Account'; id: string }; + realOwner: { __typename?: 'Account'; id: string }; + }>; +}; + +export type WorkerByPeerIdQueryVariables = Exact<{ + peerId: Scalars['String']['input']; + address: Scalars['String']['input']; +}>; + +export type WorkerByPeerIdQuery = { + __typename?: 'Query'; + workers: Array<{ + __typename?: 'Worker'; + id: string; + name?: string; + email?: string; + peerId: string; + website?: string; + status: WorkerStatus; + createdAt: any; + description?: string; + bond: any; + claimableReward: any; + claimedReward: any; + uptime24Hours?: number; + uptime90Days?: number; + totalDelegation: any; + delegationCount: number; + apr?: number; + stakerApr?: number; + online?: boolean; + jailed?: boolean; + dialOk?: boolean; + queries24Hours?: any; + queries90Days?: any; + scannedData24Hours?: any; + scannedData90Days?: any; + servedData24Hours?: any; + servedData90Days?: any; + storedData?: any; + myDelegations: Array<{ + __typename?: 'Delegation'; + deposit: any; + locked?: boolean; + owner: { __typename?: 'Account'; id: string; type: AccountType; balance: any }; + }>; + owner: { __typename?: 'Account'; id: string; type: AccountType }; + realOwner: { __typename?: 'Account'; id: string }; + }>; +}; + +export type WorkerDaysUptimeByIdQueryVariables = Exact<{ + id: Scalars['String']['input']; + from: Scalars['DateTime']['input']; +}>; + +export type WorkerDaysUptimeByIdQuery = { + __typename?: 'Query'; + workerSnapshotsByDay: Array<{ __typename?: 'WorkerSnapshotDay'; timestamp: any; uptime: number }>; +}; + +export type MyWorkersQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type MyWorkersQuery = { + __typename?: 'Query'; + workers: Array<{ + __typename?: 'Worker'; + id: string; + name?: string; + email?: string; + peerId: string; + website?: string; + status: WorkerStatus; + createdAt: any; + description?: string; + bond: any; + claimableReward: any; + claimedReward: any; + uptime24Hours?: number; + uptime90Days?: number; + totalDelegation: any; + delegationCount: number; + apr?: number; + stakerApr?: number; + online?: boolean; + jailed?: boolean; + dialOk?: boolean; + myDelegations: Array<{ + __typename?: 'Delegation'; + deposit: any; + locked?: boolean; + owner: { __typename?: 'Account'; id: string; type: AccountType; balance: any }; + }>; + owner: { __typename?: 'Account'; id: string }; + realOwner: { __typename?: 'Account'; id: string }; + }>; +}; + +export type MyAssetsQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type MyAssetsQuery = { + __typename?: 'Query'; + accounts: Array<{ + __typename?: 'Account'; + balance: any; + owned: Array<{ __typename?: 'Account'; balance: any }>; + }>; + workers: Array<{ __typename?: 'Worker'; bond: any; claimableReward: any }>; + delegations: Array<{ __typename?: 'Delegation'; claimableReward: any; deposit: any }>; +}; + +export type MyDelegationsQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type MyDelegationsQuery = { + __typename?: 'Query'; + delegations: Array<{ + __typename?: 'Delegation'; + claimableReward: any; + deposit: any; + worker: { + __typename?: 'Worker'; + id: string; + name?: string; + email?: string; + peerId: string; + website?: string; + status: WorkerStatus; + createdAt: any; + description?: string; + bond: any; + claimableReward: any; + claimedReward: any; + uptime24Hours?: number; + uptime90Days?: number; + totalDelegation: any; + delegationCount: number; + apr?: number; + stakerApr?: number; + online?: boolean; + jailed?: boolean; + dialOk?: boolean; + owner: { __typename?: 'Account'; id: string }; + realOwner: { __typename?: 'Account'; id: string }; + }; + owner: { __typename?: 'Account'; id: string; type: AccountType }; + }>; +}; + +export type MyClaimsAvailableQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type MyClaimsAvailableQuery = { + __typename?: 'Query'; + delegations: Array<{ + __typename?: 'Delegation'; + claimableReward: any; + deposit: any; + worker: { __typename?: 'Worker'; id: string; name?: string; peerId: string }; + owner: { __typename?: 'Account'; id: string; type: AccountType }; + }>; + workers: Array<{ + __typename?: 'Worker'; + id: string; + name?: string; + peerId: string; + claimableReward: any; + owner: { __typename?: 'Account'; id: string; type: AccountType }; + }>; +}; + +export type GatewayFragmentFragment = { + __typename?: 'Gateway'; + id: string; + name?: string; + status: GatewayStatus; + description?: string; + email?: string; + endpointUrl?: string; + website?: string; + createdAt: any; + operator?: { + __typename?: 'GatewayOperator'; + autoExtension: boolean; + stake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + pendingStake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + }; + owner?: { __typename?: 'Account'; id: string; type: AccountType }; +}; + +export type MyGatewaysQueryVariables = Exact<{ + address: Scalars['String']['input']; +}>; + +export type MyGatewaysQuery = { + __typename?: 'Query'; + gateways: Array<{ + __typename?: 'Gateway'; + id: string; + name?: string; + status: GatewayStatus; + description?: string; + email?: string; + endpointUrl?: string; + website?: string; + createdAt: any; + operator?: { + __typename?: 'GatewayOperator'; + autoExtension: boolean; + stake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + pendingStake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + }; + owner?: { __typename?: 'Account'; id: string; type: AccountType }; + }>; +}; + +export type GatewayByPeerIdQueryVariables = Exact<{ + peerId: Scalars['String']['input']; +}>; + +export type GatewayByPeerIdQuery = { + __typename?: 'Query'; + gatewayById?: { + __typename?: 'Gateway'; + id: string; + name?: string; + status: GatewayStatus; + description?: string; + email?: string; + endpointUrl?: string; + website?: string; + createdAt: any; + operator?: { + __typename?: 'GatewayOperator'; + autoExtension: boolean; + stake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + pendingStake?: { + __typename?: 'GatewayStake'; + amount: any; + locked: boolean; + lockStart: number; + lockEnd: number; + }; + }; + owner?: { __typename?: 'Account'; id: string; type: AccountType }; + }; +}; + +export const WorkerFragmentFragmentDoc = ` + fragment WorkerFragment on Worker { + id + name + email + peerId + website + status + createdAt + description + bond + claimableReward + claimedReward + uptime24Hours + uptime90Days + totalDelegation + delegationCount + apr + stakerApr + online + jailed + dialOk + owner { + id + } + realOwner { + id + } +} + `; +export const WorkerFullFragmentFragmentDoc = ` + fragment WorkerFullFragment on Worker { + queries24Hours + queries90Days + scannedData24Hours + scannedData90Days + servedData24Hours + servedData90Days + storedData + owner { + id + type + } +} + `; +export const GatewayFragmentFragmentDoc = ` + fragment GatewayFragment on Gateway { + id + name + status + description + email + endpointUrl + website + operator { + autoExtension + stake { + amount + locked + lockStart + lockEnd + } + pendingStake { + amount + locked + lockStart + lockEnd + } + } + owner { + id + type + } + createdAt +} + `; +export const SquidNetworkHeightDocument = ` + query squidNetworkHeight { + squidStatus { + height + } +} + `; + +export const useSquidNetworkHeightQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables?: SquidNetworkHeightQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: variables === undefined ? ['squidNetworkHeight'] : ['squidNetworkHeight', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + SquidNetworkHeightDocument, + variables, + ), + ...options, + }); +}; + +export const SettingsDocument = ` + query settings { + settingsConnection(orderBy: id_ASC) { + edges { + node { + id + bondAmount + delegationLimitCoefficient + } + } + } +} + `; + +export const useSettingsQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables?: SettingsQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: variables === undefined ? ['settings'] : ['settings', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + SettingsDocument, + variables, + ), + ...options, + }); +}; + +export const AccountDocument = ` + query account($address: String!) { + accountById(id: $address) { + id + type + balance + owned { + id + type + balance + } + } +} + `; + +export const useAccountQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: AccountQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['account', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + AccountDocument, + variables, + ), + ...options, + }); +}; + +export const AllWorkersDocument = ` + query allWorkers { + workers(where: {status_eq: ACTIVE}) { + ...WorkerFragment + } +} + ${WorkerFragmentFragmentDoc}`; + +export const useAllWorkersQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables?: AllWorkersQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: variables === undefined ? ['allWorkers'] : ['allWorkers', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + AllWorkersDocument, + variables, + ), + ...options, + }); +}; + +export const WorkerByPeerIdDocument = ` + query workerByPeerId($peerId: String!, $address: String!) { + workers(where: {peerId_eq: $peerId}, limit: 1) { + ...WorkerFragment + ...WorkerFullFragment + myDelegations: delegations(where: {realOwner: {id_eq: $address}}) { + deposit + locked + owner { + id + type + balance + } + } + } +} + ${WorkerFragmentFragmentDoc} +${WorkerFullFragmentFragmentDoc}`; + +export const useWorkerByPeerIdQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: WorkerByPeerIdQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['workerByPeerId', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + WorkerByPeerIdDocument, + variables, + ), + ...options, + }); +}; + +export const WorkerDaysUptimeByIdDocument = ` + query workerDaysUptimeById($id: String!, $from: DateTime!) { + workerSnapshotsByDay(workerId: $id, from: $from) { + timestamp + uptime + } +} + `; + +export const useWorkerDaysUptimeByIdQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: WorkerDaysUptimeByIdQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['workerDaysUptimeById', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + WorkerDaysUptimeByIdDocument, + variables, + ), + ...options, + }); +}; + +export const MyWorkersDocument = ` + query myWorkers($address: String!) { + workers(orderBy: id_ASC, where: {realOwner: {id_eq: $address}}) { + ...WorkerFragment + myDelegations: delegations(where: {realOwner: {id_eq: $address}}) { + deposit + locked + owner { + id + type + balance + } + } + } +} + ${WorkerFragmentFragmentDoc}`; + +export const useMyWorkersQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: MyWorkersQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['myWorkers', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + MyWorkersDocument, + variables, + ), + ...options, + }); +}; + +export const MyAssetsDocument = ` + query myAssets($address: String!) { + accounts(where: {id_eq: $address}) { + balance + owned { + balance + } + } + workers(where: {realOwner: {id_eq: $address}}) { + bond + claimableReward + } + delegations( + where: {realOwner: {id_eq: $address}, AND: {OR: [{deposit_gt: 0}, {claimableReward_gt: 0}]}} + ) { + claimableReward + deposit + } +} + `; + +export const useMyAssetsQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: MyAssetsQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['myAssets', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + MyAssetsDocument, + variables, + ), + ...options, + }); +}; + +export const MyDelegationsDocument = ` + query myDelegations($address: String!) { + delegations(where: {realOwner: {id_eq: $address}, deposit_gt: 0}) { + claimableReward + deposit + worker { + ...WorkerFragment + } + owner { + id + type + } + } +} + ${WorkerFragmentFragmentDoc}`; + +export const useMyDelegationsQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: MyDelegationsQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['myDelegations', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + MyDelegationsDocument, + variables, + ), + ...options, + }); +}; + +export const MyClaimsAvailableDocument = ` + query myClaimsAvailable($address: String!) { + delegations(where: {realOwner: {id_eq: $address}, claimableReward_gt: 0}) { + claimableReward + deposit + worker { + id + name + peerId + } + owner { + id + type + } + } + workers(where: {realOwner: {id_eq: $address}, claimableReward_gt: 0}) { + id + name + peerId + claimableReward + owner { + id + type + } + } +} + `; + +export const useMyClaimsAvailableQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: MyClaimsAvailableQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['myClaimsAvailable', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + MyClaimsAvailableDocument, + variables, + ), + ...options, + }); +}; + +export const MyGatewaysDocument = ` + query myGateways($address: String!) { + gateways( + orderBy: id_ASC + where: {owner: {id_eq: $address}, status_eq: REGISTERED} + ) { + ...GatewayFragment + } +} + ${GatewayFragmentFragmentDoc}`; + +export const useMyGatewaysQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: MyGatewaysQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['myGateways', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + MyGatewaysDocument, + variables, + ), + ...options, + }); +}; + +export const GatewayByPeerIdDocument = ` + query gatewayByPeerId($peerId: String!) { + gatewayById(id: $peerId) { + ...GatewayFragment + } +} + ${GatewayFragmentFragmentDoc}`; + +export const useGatewayByPeerIdQuery = ( + dataSource: { endpoint: string; fetchParams?: RequestInit }, + variables: GatewayByPeerIdQueryVariables, + options?: Omit, 'queryKey'> & { + queryKey?: UseQueryOptions['queryKey']; + }, +) => { + return useQuery({ + queryKey: ['gatewayByPeerId', variables], + queryFn: fetcher( + dataSource.endpoint, + dataSource.fetchParams || {}, + GatewayByPeerIdDocument, + variables, + ), + ...options, + }); +}; diff --git a/src/api/subsquid-network-squid/index.ts b/src/api/subsquid-network-squid/index.ts new file mode 100644 index 0000000..8a9ace7 --- /dev/null +++ b/src/api/subsquid-network-squid/index.ts @@ -0,0 +1,5 @@ +export * from './graphql'; +export * from './datasource'; +export * from './workers-graphql'; +export * from './accounts-graphql'; +export * from './settings-graphql'; diff --git a/src/api/subsquid-network-squid/settings-graphql.ts b/src/api/subsquid-network-squid/settings-graphql.ts new file mode 100644 index 0000000..2443bf2 --- /dev/null +++ b/src/api/subsquid-network-squid/settings-graphql.ts @@ -0,0 +1,20 @@ +import Decimal from 'decimal.js'; + +import { fromSqd } from '@api/contracts/utils'; + +import { SQUID_DATASOURCE } from './datasource'; +import { useSettingsQuery } from './graphql'; + +export function useNetworkSettings() { + const { data, isPending } = useSettingsQuery(SQUID_DATASOURCE); + + const settings = data?.settingsConnection.edges?.[0]?.node; + const bondAmount = settings?.bondAmount ? fromSqd(settings?.bondAmount) : new Decimal(100_000); + const delegationLimitInBp = settings?.delegationLimitCoefficient || 0.2; + + return { + bondAmount, + delegationLimit: bondAmount.mul(delegationLimitInBp), + isPending, + }; +} diff --git a/src/api/subsquid-network-squid/workers-graphql.ts b/src/api/subsquid-network-squid/workers-graphql.ts new file mode 100644 index 0000000..0f6dd3a --- /dev/null +++ b/src/api/subsquid-network-squid/workers-graphql.ts @@ -0,0 +1,356 @@ +import { useMemo } from 'react'; + +import Decimal from 'decimal.js'; +import { groupBy, mapValues, values } from 'lodash-es'; + +import { formatSqd, fromSqd, humanReadableSqd } from '@api/contracts/utils'; +import { useAccount } from '@network/useAccount.ts'; + +import { SQUID_DATASOURCE } from './datasource'; +import { + AccountType, + ClaimType, + MyDelegationsQuery, + useAllWorkersQuery, + useMyClaimsAvailableQuery, + useMyDelegationsQuery, + useMyWorkersQuery, + useWorkerByPeerIdQuery, + useWorkerDaysUptimeByIdQuery, + WorkerFragmentFragment, + WorkerFullFragmentFragment, +} from './graphql'; +import { useNetworkSettings } from './settings-graphql'; + +// inherit API interface for internal class +export interface BlockchainApiWorker extends WorkerFragmentFragment {} + +export class BlockchainApiWorker { + ownedByMe?: boolean; + totalDelegations: { + limit: Decimal; + total: Decimal; + capacity: Decimal; + utilizedPercent: Decimal; + } = { + limit: new Decimal(0), + total: new Decimal(0), + capacity: new Decimal(0), + utilizedPercent: new Decimal(0), + }; + delegationEnabled: boolean = false; + myDelegations: { owner: { id: string; type: AccountType }; deposit: string; locked: boolean }[] = + []; + myDelegationsTotal: Decimal; + + constructor({ + worker, + delegationLimit, + address, + }: { + worker: WorkerFragmentFragment; + delegationLimit: Decimal; + address?: `0x${string}`; + }) { + const totalDelegation = fromSqd(worker.totalDelegation); + const capacity = delegationLimit.minus(totalDelegation); + + Object.assign(this, { + ...worker, + createdAt: new Date(worker.createdAt), + totalDelegations: { + limit: delegationLimit, + total: totalDelegation, + capacity, + utilizedPercent: totalDelegation.div(delegationLimit).mul(100), + }, + delegationEnabled: capacity.greaterThan(0), + ownedByMe: worker?.realOwner.id === address, + }); + + this.myDelegationsTotal = this.myDelegations.reduce( + (t, r) => t.add(fromSqd(r.deposit)), + new Decimal(0), + ); + } +} + +// inherit API interface for internal class +export interface BlockchainApiFullWorker + extends WorkerFragmentFragment, + WorkerFullFragmentFragment { + owner: WorkerFullFragmentFragment['owner']; +} +export class BlockchainApiFullWorker extends BlockchainApiWorker {} + +export enum WorkerSortBy { + JoinedAt = 'joined_at', + Uptime24h = 'uptime_24h', + Uptime90d = 'uptime_90d', + StakerAPR = 'staker_apr', + DelegationCapacity = 'delegation_capacity', +} + +export enum SortDir { + Asc = 'asc', + Desc = 'desc', +} + +export function useWorkers({ + page, + perPage, + search, + sortBy, + sortDir, +}: { + page: number; + perPage: number; + search: string; + sortBy: WorkerSortBy; + sortDir: SortDir; +}) { + const { address } = useAccount(); + const { isPending: isSettingsLoading, delegationLimit } = useNetworkSettings(); + + const { data, isPending } = useAllWorkersQuery(SQUID_DATASOURCE, {}); + + const filteredData = useMemo(() => { + const filtered = (data?.workers || []) + .filter(w => { + if (search) { + const regex = new RegExp(`${search}`, 'i'); + + return w.peerId.match(regex) || w.name?.match(regex); + } + + return true; + }) + .map(worker => { + return new BlockchainApiWorker({ + worker, + address, + delegationLimit, + }); + }) + .sort((a, b) => { + if (sortDir === SortDir.Desc) { + [a, b] = [b, a]; + } + + switch (sortBy) { + case WorkerSortBy.Uptime90d: + return (a.uptime90Days || 0) - (b.uptime90Days || 0); + case WorkerSortBy.Uptime24h: + return (a.uptime24Hours || 0) - (b.uptime24Hours || 0); + case WorkerSortBy.DelegationCapacity: + return a.totalDelegations.capacity.minus(b.totalDelegations.capacity).toNumber(); + case WorkerSortBy.StakerAPR: + return (a.stakerApr || 0) - (b.stakerApr || 0); + default: + return a.createdAt.valueOf() - b.createdAt.valueOf(); + } + }); + + const totalPages = Math.ceil(filtered.length / perPage); + const normalizedPage = Math.min(Math.max(1, page), totalPages); + + return { + page: normalizedPage, + totalPages: Math.floor(filtered.length / perPage), + workers: filtered.slice((normalizedPage - 1) * perPage, normalizedPage * perPage), + }; + }, [data?.workers, search, sortBy, sortDir, address, delegationLimit, page, perPage]); + + return { + ...filteredData, + isLoading: isSettingsLoading || isPending, + }; +} + +export function useMyWorkers() { + const { address } = useAccount(); + const { isPending: isSettingsLoading, delegationLimit } = useNetworkSettings(); + + const enabled = !!address; + const { data, isLoading } = useMyWorkersQuery( + SQUID_DATASOURCE, + { + address: address || '', + }, + { + select: res => { + return res.workers.map( + w => + new BlockchainApiWorker({ + worker: w, + address, + delegationLimit, + }), + ); + }, + enabled, + }, + ); + + return { + data: data || [], + isLoading: enabled ? isSettingsLoading || isLoading : false, + }; +} + +export function useWorkerByPeerId(peerId?: string) { + const enabled = !!peerId; + const { address } = useAccount(); + const { isPending: isSettingsLoading, delegationLimit } = useNetworkSettings(); + + const { data, isPending } = useWorkerByPeerIdQuery( + SQUID_DATASOURCE, + { + peerId: peerId || '', + address: address || '', + }, + { + select: res => { + return new BlockchainApiFullWorker({ + worker: res.workers[0], + address, + delegationLimit, + }); + }, + enabled, + }, + ); + + return { + data, + isPending: enabled ? isSettingsLoading || isPending : false, + }; +} + +// TODO: remove hardcoded date +export function useWorkerDaysUptimeById(workerId?: string) { + const enabled = !!workerId; + + const { data, isLoading } = useWorkerDaysUptimeByIdQuery( + SQUID_DATASOURCE, + { + id: workerId || '', + from: '2024-01-23T12:00:00.000000Z', + }, + { + select: res => + res.workerSnapshotsByDay.map(({ timestamp, uptime }) => ({ + timestamp, + uptime, + })), + enabled, + }, + ); + + return { + data: data || [], + isLoading: enabled ? isLoading : false, + }; +} + +export function useMyClaimsAvailable({ source }: { source?: string } = {}) { + const { address } = useAccount(); + + const { data, isLoading } = useMyClaimsAvailableQuery(SQUID_DATASOURCE, { + address: address || '', + }); + + const { sources, claims, hasClaimsAvailable, currentSourceTotalClaimsAvailable } = useMemo(() => { + const allWorkers = [ + ...(data?.workers || []).map(w => ({ + ...w, + type: ClaimType.Worker, + })), + ...(data?.delegations || []).map(d => { + return { + ...d.worker, + type: ClaimType.Delegation, + owner: d.owner, + claimableReward: d.claimableReward, + }; + }), + ]; + + const filteredWorkers = source ? allWorkers.filter(w => w.owner.id === source) : allWorkers; + + return { + hasClaimsAvailable: allWorkers.some(w => w.claimableReward > 0), + currentSourceTotalClaimsAvailable: filteredWorkers.reduce( + (t, i) => t.add(i.claimableReward), + new Decimal(0), + ), + sources: values( + mapValues(groupBy(allWorkers, 'owner.id'), g => { + const total = g.reduce((t, i) => t.add(i.claimableReward), new Decimal(0)); + + return { + ...g[0].owner, + balance: total.toFixed(0), + balanceFormatted: formatSqd(total), + }; + }), + ), + + claims: values( + mapValues(groupBy(filteredWorkers, 'id'), g => { + const total = g.reduce((t, i) => t.add(i.claimableReward), new Decimal(0)); + + return { + ...g[0], + claimableReward: total, + claimableRewardFormatted: humanReadableSqd(total.toFixed(0)), + }; + }), + ), + }; + }, [data, source]); + + return { + isLoading, + hasClaimsAvailable, + currentSourceTotalClaimsAvailable, + sources, + claims, + }; +} + +type ArrayElement = + ArrayType extends readonly (infer ElementType)[] ? ElementType : never; + +type Delegation = ArrayElement & { + worker: BlockchainApiWorker; +}; + +export function useMyDelegations() { + const { address } = useAccount(); + const { isPending: isSettingsLoading, delegationLimit } = useNetworkSettings(); + + const { data, isLoading } = useMyDelegationsQuery(SQUID_DATASOURCE, { + address: address || '', + }); + + const delegations: Delegation[] = useMemo( + () => + (data?.delegations || []).map(d => { + return { + ...d, + worker: new BlockchainApiWorker({ + worker: d.worker, + address, + delegationLimit, + }), + }; + }), + [address, data?.delegations, delegationLimit], + ); + + return { + isLoading: isSettingsLoading || isLoading, + delegations, + }; +} diff --git a/src/api/types.ts b/src/api/types.ts new file mode 100644 index 0000000..c39180e --- /dev/null +++ b/src/api/types.ts @@ -0,0 +1 @@ +export type HttpResponse = { payload?: T; error?: string }; diff --git a/src/components/Alert/Alert.tsx b/src/components/Alert/Alert.tsx new file mode 100644 index 0000000..950af96 --- /dev/null +++ b/src/components/Alert/Alert.tsx @@ -0,0 +1,50 @@ +import React, { forwardRef } from 'react'; + +import { Alert as MaterialAlert, styled } from '@mui/material'; +import { InternalSnack, SnackbarContentProps, useSnackbar } from 'notistack'; + +export const AlertTitle = styled('div', { + name: 'AlertTitle', +})(({ theme }) => ({ + fontWeight: 500, + fontSize: '1.125rem', + marginBottom: theme.spacing(1), + maxWidth: 360, +})); + +export const AlertMessage = styled('div', { + name: 'AlertMessage', +})(({ theme }) => ({ + fontSize: '1rem', + fontWeight: 'normal', + maxWidth: 360, +})); + +export const Alert = forwardRef( + ( + { + id, + severity, + title, + message, + }: { + title?: string; + severity: 'warning'; + } & InternalSnack, + ref, + ) => { + const { closeSnackbar } = useSnackbar(); + + return ( + closeSnackbar(id)} + > + {title && {title}} + {message} + + ); + }, +); diff --git a/src/components/Alert/index.ts b/src/components/Alert/index.ts new file mode 100644 index 0000000..79e3b15 --- /dev/null +++ b/src/components/Alert/index.ts @@ -0,0 +1 @@ +export * from './Alert'; diff --git a/src/components/Avatar/Avatar.tsx b/src/components/Avatar/Avatar.tsx new file mode 100644 index 0000000..eed74ce --- /dev/null +++ b/src/components/Avatar/Avatar.tsx @@ -0,0 +1,58 @@ +import React, { useMemo } from 'react'; + +import { Avatar as MaterialAvatar, Box } from '@mui/material'; + +function stringToColor(string: string) { + let hash = 0; + let i; + + /* eslint-disable no-bitwise */ + for (i = 0; i < string.length; i += 1) { + hash = string.charCodeAt(i) + ((hash << 5) - hash); + } + + let color = '#'; + + for (i = 0; i < 3; i += 1) { + const value = (hash >> (i * 8)) & 0xff; + color += `00${value.toString(16)}`.slice(-2); + } + /* eslint-enable no-bitwise */ + + return color; +} + +// const OnlineOnTop = styled(OnlineCircle, { +// name: 'OnlineOnTop', +// })(() => ({ +// position: 'absolute', +// right: 2, +// bottom: 4, +// })); + +export const Avatar = ({ + name, + colorDescriminator = name, + size = 44, + variant, + // online, +}: { + name: string; + colorDescriminator?: string; + // online?: boolean; + size?: number; + variant?: 'circular' | 'rounded' | 'square'; +}) => { + const color = useMemo(() => { + return stringToColor(colorDescriminator); + }, [colorDescriminator]); + + return ( + + + {name.slice(0, 2).toUpperCase()} + + {/*{typeof online !== 'undefined' ? : null}*/} + + ); +}; diff --git a/src/components/Avatar/index.ts b/src/components/Avatar/index.ts new file mode 100644 index 0000000..27700fe --- /dev/null +++ b/src/components/Avatar/index.ts @@ -0,0 +1 @@ +export * from './Avatar'; diff --git a/src/components/BackButton/BackButton.tsx b/src/components/BackButton/BackButton.tsx new file mode 100644 index 0000000..be1b85c --- /dev/null +++ b/src/components/BackButton/BackButton.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import ArrowBack from '@mui/icons-material/ArrowBackIosNew'; +import { SxProps } from '@mui/material'; +import { Link } from 'react-router-dom'; + +import { RoundIconButton } from '@components/RoundIconButton'; + +export function BackButton({ path, sx }: { path: string; sx?: SxProps }) { + return ( + + + + + + ); +} diff --git a/src/components/BackButton/index.ts b/src/components/BackButton/index.ts new file mode 100644 index 0000000..b68e24e --- /dev/null +++ b/src/components/BackButton/index.ts @@ -0,0 +1 @@ +export * from './BackButton'; diff --git a/src/components/BlockchainContractError/BlockchainContractError.tsx b/src/components/BlockchainContractError/BlockchainContractError.tsx new file mode 100644 index 0000000..c2f5e8b --- /dev/null +++ b/src/components/BlockchainContractError/BlockchainContractError.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import { styled } from '@mui/material'; + +const Alert = styled('div')(({ theme }) => ({ + color: theme.palette.error.main, + margin: theme.spacing(2, 0), +})); + +export function BlockchainContractError({ error }: { error?: string | null }) { + if (!error) return null; + + const message = error.toLowerCase(); + if (message.includes('user rejected the request')) return null; + + return {error}; +} diff --git a/src/components/BlockchainContractError/index.ts b/src/components/BlockchainContractError/index.ts new file mode 100644 index 0000000..208664d --- /dev/null +++ b/src/components/BlockchainContractError/index.ts @@ -0,0 +1 @@ +export * from './BlockchainContractError'; diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx new file mode 100644 index 0000000..0c45cc8 --- /dev/null +++ b/src/components/Card/Card.tsx @@ -0,0 +1,58 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, Paper, styled } from '@mui/material'; +import { SxProps } from '@mui/system/styleFunctionSx'; +import classNames from 'classnames'; + +export const CardTitle = styled(Box)(({ theme }) => ({ + fontWeight: 500, + fontSize: '1.5rem', + lineHeight: 1, + marginBottom: theme.spacing(3), +})); + +export const CardWrapper = styled(Paper, { name: 'CardWrapper' })(({ theme }) => ({ + padding: theme.spacing(3), + borderRadius: 12, + boxShadow: `0px 4px 12px 0px #9595953D`, + + [theme.breakpoints.down('xxs')]: { + padding: theme.spacing(2), + }, + + '&.guideActive': { + position: 'relative', + zIndex: theme.zIndex.guide.highlight, + }, + + '&.disabled': { + padding: theme.spacing(5), + color: theme.palette.text.secondary, + textAlign: 'center', + }, + + '&.noShadow': { + boxShadow: 'none', + }, +})); + +export const Card = ({ + children, + title, + noShadow, + sx, +}: PropsWithChildren<{ noShadow?: boolean; title?: React.ReactNode; sx?: SxProps }>) => { + return ( + + {title ? {title} : null} + + {children} + + + ); +}; diff --git a/src/components/Card/index.ts b/src/components/Card/index.ts new file mode 100644 index 0000000..ca0b060 --- /dev/null +++ b/src/components/Card/index.ts @@ -0,0 +1 @@ +export * from './Card'; diff --git a/src/components/CircularProgress/CircularProgress.tsx b/src/components/CircularProgress/CircularProgress.tsx new file mode 100644 index 0000000..3835edb --- /dev/null +++ b/src/components/CircularProgress/CircularProgress.tsx @@ -0,0 +1,83 @@ +import React from 'react'; + +import { Stack, CircularProgress as MaterialCircularProgress, styled, Box } from '@mui/material'; + +const Percent = styled('div')(({ theme }) => ({ + fontWeight: 500, + fontSize: '0.75rem', + lineHeight: 1, + '&.secondary': { + color: theme.palette.secondary.contrastText, + }, + '&.success': { + color: theme.palette.success.contrastText, + }, + '&.info': { + color: theme.palette.info.contrastText, + }, + '&.error': { + color: theme.palette.error.dark, + }, + '&.warning': { + color: theme.palette.warning.contrastText, + }, +})); + +const Progress = styled(MaterialCircularProgress)(({ theme }) => ({ + '&.background': { + color: theme.palette.background.default, + }, + '&.secondary': { + color: theme.palette.secondary.contrastText, + }, + '&.success': { + color: theme.palette.success.contrastText, + }, + '&.info': { + color: theme.palette.info.contrastText, + }, + '&.warning': { + color: theme.palette.warning.contrastText, + }, + '&.error': { + color: theme.palette.error.contrastText, + }, +})); + +export function CircularProgress({ + percent, + color, + hideProgressBar, +}: { + percent: number; + hideProgressBar?: boolean; + color: 'primary' | 'info' | 'success' | 'error' | 'inherit' | 'warning'; +}) { + return ( + + {!hideProgressBar && ( + + + + + )} + {percent}% + + ); +} diff --git a/src/components/CircularProgress/index.ts b/src/components/CircularProgress/index.ts new file mode 100644 index 0000000..d5f1779 --- /dev/null +++ b/src/components/CircularProgress/index.ts @@ -0,0 +1 @@ +export * from './CircularProgress'; diff --git a/src/components/ConfirmDialog/ConfirmDialog.tsx b/src/components/ConfirmDialog/ConfirmDialog.tsx new file mode 100644 index 0000000..c27209c --- /dev/null +++ b/src/components/ConfirmDialog/ConfirmDialog.tsx @@ -0,0 +1,157 @@ +import React, { PropsWithChildren, SyntheticEvent } from 'react'; + +import CloseIcon from '@mui/icons-material/Close'; +import { LoadingButton } from '@mui/lab'; +import { + Box, + Button, + DialogContent, + DialogContentText, + IconButton, + styled, + useMediaQuery, + useTheme, +} from '@mui/material'; + +import { Dialog } from '@components/Dialog'; + +export const ConfirmWrapper = styled(Box, { + name: 'ConfirmWrapper', +})(({ theme }) => ({})); + +export const ConfirmDialogTitle = styled(Box, { + name: 'ConfirmDialogTitle', +})(({ theme: { spacing, breakpoints } }) => ({ + margin: spacing(3.5, 4, 2.5), + padding: 0, + fontWeight: 500, + fontSize: '1.125rem', + position: 'relative', + paddingRight: 45, + [breakpoints.down('xxs')]: { + margin: spacing(4, 3, 2, 3), + fontSize: '1rem', + }, +})); + +export const CloseIconButton = styled(IconButton, { + name: 'CloseIconButton', +})(({ theme: { spacing, breakpoints } }) => ({ + position: 'absolute', + top: -6, + right: -6, + opacity: 0.5, + [breakpoints.down('xxs')]: { + paddingLeft: '10px', + }, +})); + +export const Content = styled(DialogContent)(({ theme: { spacing, breakpoints } }) => ({ + padding: 0, + margin: spacing(1, 4, 4), + overflowY: 'visible', + [breakpoints.down('xxs')]: { + margin: spacing(0, 3, 4, 3), + }, +})); +export const Actions = styled(Box)(({ theme: { spacing, breakpoints } }) => ({ + padding: 0, + display: 'flex', + alignItems: 'center', + gap: spacing(2), + margin: spacing(4, 4), + '* > :not(:first-of-type)': { + marginLeft: 0, + }, + [breakpoints.down('xxs')]: { + margin: spacing(3, 3), + }, +})); + +export type ConfirmDialogProps = { + title: string; + open: boolean; + maxWidth?: string | number; + minWidth?: string | number; + confirmColor?: 'primary' | 'error' | 'success'; + confirmButtonText?: string; + cancelButtonText?: string; + disableBackdropClick?: boolean; + disableConfirmButton?: boolean; + hideCancelButton?: boolean; + hideConfirmButton?: boolean; + onResult?: (confirmed: boolean) => unknown; + onApprove?: () => unknown; + loading?: boolean; +}; + +export function ConfirmDialog({ + title, + children, + open, + maxWidth = 440, + minWidth = 440, + confirmColor = 'primary', + confirmButtonText = 'Confirm', + cancelButtonText = 'Cancel', + disableBackdropClick = false, + disableConfirmButton = false, + hideCancelButton = false, + hideConfirmButton = false, + loading = false, + onResult, + onApprove, +}: PropsWithChildren) { + const theme = useTheme(); + const mobile = useMediaQuery(theme.breakpoints.down('xxs')); + const onReject = (e: SyntheticEvent, reason?: 'backdropClick' | 'escapeKeyDown') => { + if (disableBackdropClick && reason === 'backdropClick') return; + + onResult?.(false); + }; + const handleApprove = () => { + onApprove?.(); + onResult?.(true); + }; + + return ( + + + + {title} + + + + + + {children} + + + {!hideCancelButton ? ( + + ) : null} + {!hideConfirmButton ? ( + + {confirmButtonText} + + ) : null} + + + + ); +} diff --git a/src/components/ConfirmDialog/index.ts b/src/components/ConfirmDialog/index.ts new file mode 100644 index 0000000..7c30ee3 --- /dev/null +++ b/src/components/ConfirmDialog/index.ts @@ -0,0 +1 @@ +export * from './ConfirmDialog'; diff --git a/src/components/ContractCallDialog/ContractCallDialog.tsx b/src/components/ContractCallDialog/ContractCallDialog.tsx new file mode 100644 index 0000000..4fb3e72 --- /dev/null +++ b/src/components/ContractCallDialog/ContractCallDialog.tsx @@ -0,0 +1,85 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, Button } from '@mui/material'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { useAccount } from 'wagmi'; + +import { ConfirmDialog, ConfirmDialogProps } from '@components/ConfirmDialog'; +import { WalletIcon } from '@icons/WalletIcon'; + +export function ContractCallDialog({ + title, + children, + open, + maxWidth, + minWidth = 600, + confirmColor = 'primary', + confirmButtonText = title, + cancelButtonText = 'Cancel', + hideCancelButton = true, + disableBackdropClick = true, + disableConfirmButton = false, + loading = false, + onResult, + onApprove, +}: PropsWithChildren) { + const { isConnected } = useAccount(); + const { openConnectModal } = useConnectModal(); + + if (!isConnected) { + return ( + + + + Connect your wallet to proceed + + + + + ); + } + + return ( + + {children} + + ); +} diff --git a/src/components/ContractCallDialog/index.ts b/src/components/ContractCallDialog/index.ts new file mode 100644 index 0000000..1785831 --- /dev/null +++ b/src/components/ContractCallDialog/index.ts @@ -0,0 +1 @@ +export * from './ContractCallDialog'; diff --git a/src/components/CopyToClipboard/CopyToClipboard.tsx b/src/components/CopyToClipboard/CopyToClipboard.tsx new file mode 100644 index 0000000..556f488 --- /dev/null +++ b/src/components/CopyToClipboard/CopyToClipboard.tsx @@ -0,0 +1,112 @@ +import React, { useRef, useState } from 'react'; + +import { IconButton, Stack, styled } from '@mui/material'; +import { Box } from '@mui/system'; +import { alpha } from '@mui/system/colorManipulator'; +import classnames from 'classnames'; + +import { CopyIcon } from '@icons/CopyIcon'; + +import { CopyToClipboardTooltip } from './CopyToClipboardTooltip'; + +export const Wrapper = styled(Stack)(({ theme }) => ({ + '& .copyButton': { + // marginTop: theme.spacing(-1), + padding: 0, + backgroundColor: 'transparent', + '& path': { + stroke: theme.palette.primary.main, + }, + }, + '&.gutterBottom': { + marginBottom: theme.spacing(1.5), + }, + '&.bordered': { + fontFamily: `'JetBrains Mono', monospace`, + fontSize: '1rem', + position: 'relative', + display: 'inline-block', + background: alpha(theme.palette.info.main, 0.2), + border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`, + borderRadius: 4, + marginTop: theme.spacing(1.5), + padding: theme.spacing(1, '45px', 1, 1.5), + wordBreak: 'break-word', + // boxSizing: 'border-box', + maxWidth: '100%', + '& .copyButton': { + position: 'absolute', + right: theme.spacing(1.5), + top: theme.spacing(1.5), + }, + }, + '&.fullWidth': { + display: 'block', + }, + '& .nowrap': { + whiteSpace: 'nowrap', + }, + '& .content': { + color: theme.palette.text.primary, + }, +})); + +export const CopyToClipboard = ({ + text, + content, + copyButtonSize = 16, + bordered = false, + fullWidth = false, + gutterBottom = false, +}: { + text: string; + content?: React.ReactNode; + copyButtonSize?: number; + bordered?: boolean; + fullWidth?: boolean; + gutterBottom?: boolean; +}) => { + const [copied, setCopied] = useState(false); + const ref = useRef(null); + + if (!text) return null; + + const handleClick = (event: React.MouseEvent) => { + event.stopPropagation(); + setCopied(true); + navigator.clipboard.writeText(text); + }; + + const handleSelect = () => { + if (!ref.current) return; + + window.getSelection()?.selectAllChildren(ref.current); + }; + + return ( + + + {content || text} + + + + + + + + ); +}; diff --git a/src/components/CopyToClipboard/CopyToClipboardTooltip.tsx b/src/components/CopyToClipboard/CopyToClipboardTooltip.tsx new file mode 100644 index 0000000..dca5c4d --- /dev/null +++ b/src/components/CopyToClipboard/CopyToClipboardTooltip.tsx @@ -0,0 +1,44 @@ +import React from 'react'; + +import CheckIcon from '@mui/icons-material/Check'; +import { Stack, Tooltip } from '@mui/material'; +import { Box } from '@mui/system'; + +export const CopyToClipboardTooltip = ({ + children, + copied, + setCopied, +}: { + children: JSX.Element; + copied: boolean; + setCopied: (copied: boolean) => void; +}) => { + return ( + + {copied ? ( + + Copied + + + ) : ( + Copy + )} + + } + arrow + // open + placement="top" + onClose={() => { + setTimeout(() => setCopied(false), 400); + }} + > + {children} + + ); +}; diff --git a/src/components/CopyToClipboard/index.ts b/src/components/CopyToClipboard/index.ts new file mode 100644 index 0000000..6fcb86b --- /dev/null +++ b/src/components/CopyToClipboard/index.ts @@ -0,0 +1 @@ +export * from './CopyToClipboard'; diff --git a/src/components/Dialog/Dialog.tsx b/src/components/Dialog/Dialog.tsx new file mode 100644 index 0000000..d49a61c --- /dev/null +++ b/src/components/Dialog/Dialog.tsx @@ -0,0 +1,11 @@ +import { Dialog as DialogMui, styled } from '@mui/material'; + +export const Dialog = styled(DialogMui, { + name: 'Dialog', +})(({ theme }) => ({ + '& .MuiBackdrop-root': { + backdropFilter: 'blur(5px)', + backgroundColor: + theme.palette.mode === 'light' ? 'rgba(166, 166, 166, 0.6)' : 'rgba(0, 0, 0, 0.2);', + }, +})); diff --git a/src/components/Dialog/index.ts b/src/components/Dialog/index.ts new file mode 100644 index 0000000..a5d3159 --- /dev/null +++ b/src/components/Dialog/index.ts @@ -0,0 +1 @@ +export * from './Dialog'; diff --git a/src/components/Form/ClickableTextField.tsx b/src/components/Form/ClickableTextField.tsx new file mode 100644 index 0000000..98b956b --- /dev/null +++ b/src/components/Form/ClickableTextField.tsx @@ -0,0 +1,100 @@ +import React from 'react'; + +import { Box, IconButton, styled, SxProps, TextField } from '@mui/material'; +import classnames from 'classnames'; + +import { EditIcon } from '@icons/EditIcon'; + +export const ClickableInput = styled(Box, { + name: 'ClickableInput', +})(() => ({ + cursor: 'pointer !important', +})); + +export const ClickableIconButton = styled(IconButton, { + name: 'ClickableIconButton', +})(() => ({ + boxSizing: 'content-box', + padding: 0, + width: 36, + height: 36, +})); + +export const StyledTextField = styled(TextField, { + name: 'ClickableTextField', +})(({ theme }) => ({ + '& > div': { + backgroundColor: `${theme.palette.background.input} !important`, + border: `1px solid ${theme.palette.background.default}`, + '&:hover': { + backgroundColor: `${theme.palette.background.input} !important`, + }, + + '& input': { + color: `${theme.palette.text.primary} !important`, + textFillColor: `${theme.palette.text.primary} !important`, + cursor: 'pointer !important', + }, + }, + + '&.disabled': { + '& input': { + cursor: 'default !important', + opacity: `0.5 !important`, + }, + + '&:hover > div': { + border: `1px solid ${theme.palette.background.default}`, + }, + }, + + '& .MuiFormLabel-root.Mui-focused': { + color: theme.palette.primary.main, + }, + + '& svg': { + stroke: theme.palette.primary.main, + }, +})); + +export const ClickableTextField = ({ + label, + value, + onClick, + endIcon, + disabled = false, +}: { + label: string; + value?: string; + onClick?: () => unknown; + endIcon?: React.ReactElement; + disabled?: boolean; +}) => { + const editable = !disabled; + + return ( + + + {endIcon || } + + ) : undefined, + }} + /> + + ); +}; diff --git a/src/components/Form/Form.tsx b/src/components/Form/Form.tsx new file mode 100644 index 0000000..927de45 --- /dev/null +++ b/src/components/Form/Form.tsx @@ -0,0 +1,24 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, SxProps } from '@mui/material'; + +export function Form({ + children, + maxWidth, + onSubmit, + sx, +}: PropsWithChildren<{ + maxWidth?: number; + onSubmit?: () => unknown; + sx?: SxProps; +}>) { + return ( + + {children} + + ); +} diff --git a/src/components/Form/FormRow.tsx b/src/components/Form/FormRow.tsx new file mode 100644 index 0000000..8c8b328 --- /dev/null +++ b/src/components/Form/FormRow.tsx @@ -0,0 +1,19 @@ +import { styled } from '@mui/material'; + +export const FormRow = styled('div')(({ theme: { spacing, breakpoints } }) => ({ + marginBottom: spacing(2), + marginTop: spacing(2), + + [breakpoints.down('xxs')]: { + marginBottom: spacing(1.5), + marginTop: spacing(1.5), + }, +})); + +export const FormSubmitRow = styled('div')(({ theme: { spacing, breakpoints } }) => ({ + marginBottom: spacing(3), + marginTop: spacing(3), + [breakpoints.down('xxs')]: { + marginTop: spacing(4), + }, +})); diff --git a/src/components/Form/FormikAutoComplete.tsx b/src/components/Form/FormikAutoComplete.tsx new file mode 100644 index 0000000..eef47eb --- /dev/null +++ b/src/components/Form/FormikAutoComplete.tsx @@ -0,0 +1,60 @@ +import React from 'react'; + +import { Autocomplete } from '@mui/lab'; +import { autocompleteClasses, styled, TextField } from '@mui/material'; + +const inputHeight = 54; +const FormikAutocomplete = styled(Autocomplete<{ label: string; value: string }>)( + ({ theme }) => ({ + [`& .${autocompleteClasses.inputRoot}`]: { + paddingTop: 16, + }, + + [`&.no-label .${autocompleteClasses.inputRoot}`]: { + paddingTop: 0, + paddingBottom: 0, + height: inputHeight, + }, + [`&.no-label .${autocompleteClasses.input}`]: { + margin: theme.spacing(0.5, 0), + }, + }), + { name: 'FormikAutocompleteInput' }, +); + +export function FormikAutoComplete({ + label, + id, + formik, + options, + clearable, +}: { + id: string; + formik: any; + options: { label: string; value: string }[]; + label?: string; + clearable?: boolean; +}) { + return ( + option.label} + disableClearable={!clearable as any} + onChange={(event, res) => { + if (!res) return; + + formik.setFieldValue(id, res.value); + }} + value={options.find(v => v.value === formik.values[id])} + renderInput={params => ( + + )} + /> + ); +} diff --git a/src/components/Form/FormikCheckBoxInput.tsx b/src/components/Form/FormikCheckBoxInput.tsx new file mode 100644 index 0000000..9f3bf3e --- /dev/null +++ b/src/components/Form/FormikCheckBoxInput.tsx @@ -0,0 +1,50 @@ +import React from 'react'; + +import { + Box, + Checkbox, + FormControlLabel, + formControlLabelClasses, + FormHelperText, + styled, +} from '@mui/material'; + +export const Label = styled(FormControlLabel)(({ theme: { palette, breakpoints } }) => ({ + marginRight: 0, + marginLeft: -10, + // marginBottom: spacing(1), + [`& .${formControlLabelClasses.label}`]: { + fontSize: '0.85rem', + color: palette.text.secondary, + }, + [breakpoints.down('xxs')]: { + [`& .${formControlLabelClasses.label}`]: { + lineHeight: 1.5, + fontSize: '14px', + }, + }, +})); + +export function FormikCheckBoxInput({ + label, + id, + formik, +}: { + id: string; + label: string | React.ReactElement; + formik?: any; +}) { + const hasError = formik.touched[id] && Boolean(formik.errors[id]); + + return ( + + + ); +} diff --git a/src/components/Form/FormikSelect.tsx b/src/components/Form/FormikSelect.tsx new file mode 100644 index 0000000..ff6f0d5 --- /dev/null +++ b/src/components/Form/FormikSelect.tsx @@ -0,0 +1,71 @@ +import React from 'react'; + +import { + InputLabel, + FormControl, + MenuItem, + Select, + styled, + FormHelperText, + SelectChangeEvent, +} from '@mui/material'; + +const FormSelect = styled(Select, { + name: 'FormSelect', +})(({ theme }) => ({ + '& .MuiSelect-select.MuiSelect-filled': { + paddingTop: 22, + }, + + '&.Mui-disabled': { + background: theme.palette.background.input, + '&:hover': { + border: `1px solid ${theme.palette.background.default}`, + }, + }, + + '& .MuiSvgIcon-root.Mui-disabled': { + display: 'none', + }, +})); + +export function FormikSelect({ + label, + id, + formik, + options, + disabled, + showErrorOnlyOfTouched, + onChange = event => { + formik.setFieldValue(id, event.target.value); + }, +}: { + id: string; + formik: any; + options: { label: React.ReactNode; value: string; disabled?: boolean }[]; + label?: string; + disabled?: boolean; + showErrorOnlyOfTouched?: boolean; + onChange?: (event: SelectChangeEvent) => unknown; +}) { + const actualError = + !showErrorOnlyOfTouched || (showErrorOnlyOfTouched && formik.touched[id]) + ? formik.errors[id] + : null; + + return ( + + {label && {label}} + + {options.map(o => { + return ( + + {o.label} + + ); + })} + + {actualError && {actualError}} + + ); +} diff --git a/src/components/Form/FormikSwitch.tsx b/src/components/Form/FormikSwitch.tsx new file mode 100644 index 0000000..517837a --- /dev/null +++ b/src/components/Form/FormikSwitch.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +import { Box, FormHelperText, Switch } from '@mui/material'; + +import { Label } from './FormikCheckBoxInput'; + +export function FormikSwitch({ + label, + id, + formik, +}: { + id: string; + label: string | React.ReactElement; + formik?: any; +}) { + const hasError = formik.touched[id] && Boolean(formik.errors[id]); + + return ( + + + ); +} diff --git a/src/components/Form/FormikTextInput.tsx b/src/components/Form/FormikTextInput.tsx new file mode 100644 index 0000000..35de4a3 --- /dev/null +++ b/src/components/Form/FormikTextInput.tsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react'; + +import { + IconButton, + InputAdornment, + styled, + SxProps, + TextField as MaterialTextField, +} from '@mui/material'; +import { InputProps as StandardInputProps } from '@mui/material/Input/Input'; + +import { VisibleIcon } from '@icons/VisibleIcon'; +import { VisibleOffIcon } from '@icons/VisibleOffIcon'; + +export const TextField = styled(MaterialTextField)(({ theme }) => ({ + '&.paper': { + '& .MuiFilledInput-root': { + background: theme.palette.background.paper, + }, + }, + [theme.breakpoints.down('xxs')]: { + '& .MuiInputLabel-root': { + left: '4px', + fontSize: '14px', + }, + '& .MuiFilledInput-input': { + paddingLeft: '16px', + fontSize: '14px', + }, + }, +})); + +export function FormikTextInput({ + label, + id, + formik, + multiline, + rows, + minRows, + maxRows, + variant, + helperText = '', + placeholder, + type = 'text', + InputProps, + error, + sx, + onFocus, + onBlur, + showErrorOnlyOfTouched = false, +}: { + id: string; + label?: string; + formik?: any; + multiline?: boolean; + rows?: number; + minRows?: number; + maxRows?: number; + variant?: 'paper'; + helperText?: string; + showErrorOnlyOfTouched?: boolean; + placeholder?: string; + error?: string; + type?: 'text' | 'password'; + sx?: SxProps; + InputProps?: Partial; + onFocus?: () => unknown; + onBlur?: () => unknown; +}) { + const [visible, setVisible] = useState(false); + + const actualError = error + ? error + : !showErrorOnlyOfTouched || (showErrorOnlyOfTouched && formik.touched[id]) + ? formik.errors[id] + : null; + + return ( + { + formik.handleBlur(e); + onBlur?.(); + }} + onFocus={onFocus} + error={Boolean(actualError)} + sx={sx} + helperText={actualError || helperText} + InputProps={ + InputProps || { + endAdornment: + type === 'password' ? ( + + setVisible(!visible)} edge="end" sx={{ mr: '-5px' }}> + {visible ? : } + + + ) : undefined, + } + } + /> + ); +} diff --git a/src/components/Form/TextInput.tsx b/src/components/Form/TextInput.tsx new file mode 100644 index 0000000..e79ab3d --- /dev/null +++ b/src/components/Form/TextInput.tsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import { TextField } from '@mui/material'; + +export function TextInput({ + label, + id, + value, + onChange, + error, + helperText, +}: { + id?: string; + label: string; + value?: string; + onChange?: (e: React.ChangeEvent) => unknown; + helperText?: string; + error?: boolean; +}) { + return ( + + ); +} diff --git a/src/components/Form/index.ts b/src/components/Form/index.ts new file mode 100644 index 0000000..117c1fe --- /dev/null +++ b/src/components/Form/index.ts @@ -0,0 +1,8 @@ +export * from './FormRow'; +export * from './Form'; +export * from './TextInput'; +export * from './FormikTextInput'; +export * from './FormikCheckBoxInput'; +export * from './ClickableTextField'; +export * from './FormikSelect'; +export * from './FormikSwitch'; diff --git a/src/components/GuidePopover/GuidePopover.tsx b/src/components/GuidePopover/GuidePopover.tsx new file mode 100644 index 0000000..d0990f6 --- /dev/null +++ b/src/components/GuidePopover/GuidePopover.tsx @@ -0,0 +1,183 @@ +import React, { PropsWithChildren } from 'react'; + +import { + Box, + Button, + Popover, + popoverClasses, + Stack, + styled, +} from '@mui/material'; + +const Guide = styled(Popover, { + name: 'Guide', +})(({ theme }) => ({ + zIndex: theme.zIndex.guide.content, + [`& .${popoverClasses.paper}`]: { + padding: theme.spacing(2.5), + fontSize: '0.875rem', + background: theme.palette.accent.main, + width: 360, + lineHeight: 1.7, + overflow: 'visible', + }, +})); + +const GuideProgress = styled('div', { + name: 'GuideProgress', +})(({ theme }) => ({ + marginBottom: theme.spacing(0.5), +})); + +const GuideTitle = styled('span', { + name: 'GuideTitle', +})(({ theme }) => ({ + marginLeft: theme.spacing(1.5), + fontSize: '0.875rem', + fontWeight: 700, +})); + +const GuideActions = styled(Stack, { + name: 'GuideActions', +})(({ theme }) => ({ + marginTop: theme.spacing(1), +})); + +const GuideButton = styled(Button, { + name: 'GuideButton', +})(({ theme }) => ({ + fontSize: '0.75rem', + padding: theme.spacing(0, 1), + minHeight: 24, + minWidth: 'auto', + '&.MuiButton-text': { + color: theme.palette.accent.contrastText, + }, + '&.MuiButton-contained': { + backgroundColor: theme.palette.accent.contrastText, + '&:hover': { + backgroundColor: theme.palette.accent.dark, + }, + }, +})); + +const GuideArrow = styled('div', { + name: 'GuideArrow', +})(({ theme }) => ({ + width: 0, + height: 0, + position: 'absolute', + top: '100%', + borderStyle: 'solid', + // background: theme.palette.accent.main, + + // transform: 'rotate(45deg)', + + '&.left': { + top: 30, + left: '0%', + borderWidth: '8px 8px 8px 0', + borderColor: `transparent ${theme.palette.accent.main} transparent transparent`, + marginTop: -8, + marginLeft: -8, + }, + '&.bottom': { + top: '100%', + left: '50%', + borderWidth: '8px 8px 0 8px', + borderColor: `${theme.palette.accent.main} transparent transparent transparent`, + }, + '&.right': { + top: 24, + left: '100%', + borderWidth: '8px 0 8px 8px', + borderColor: `transparent transparent transparent ${theme.palette.accent.main}`, + marginTop: -8, + }, +})); + +const margin = 24; + +export interface GuidePopoverBounding { + arrow?: 'left' | 'right' | 'bottom'; + horizontal?: 'right' | 'center' | 'left'; + open?: boolean; + position: { left: number; top: number }; + vertical?: 'top' | 'center' | 'bottom'; +} + +interface GuidePopoverProps extends PropsWithChildren, GuidePopoverBounding { + curStepIndex: number; + isFirst: boolean; + isLast: boolean; + next: () => void; + prev: () => void; + skip: () => void; + stepsLength: number; + title?: string; +} + +export const GuidePopover = (props: GuidePopoverProps) => { + const { + arrow, + children, + curStepIndex, + horizontal = 'right', + isFirst, + isLast, + next, + open = true, + position, + prev, + skip, + stepsLength, + title, + vertical = 'center', + } = props; + + return ( + + + + + {curStepIndex + 1} / {stepsLength - 1} + {title} + + {children} + + + Skip tour + + + {!isFirst && ( + + Prev + + )} + + {isLast ? 'Finish' : 'Next'} + + + + ); +}; diff --git a/src/components/GuidePopover/index.ts b/src/components/GuidePopover/index.ts new file mode 100644 index 0000000..60e376e --- /dev/null +++ b/src/components/GuidePopover/index.ts @@ -0,0 +1 @@ +export * from './GuidePopover'; diff --git a/src/components/HelpTooltip/HelpTooltip.tsx b/src/components/HelpTooltip/HelpTooltip.tsx new file mode 100644 index 0000000..48372ba --- /dev/null +++ b/src/components/HelpTooltip/HelpTooltip.tsx @@ -0,0 +1,36 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, Stack, styled, Tooltip } from '@mui/material'; + +export const Help = styled(Box)(({ theme, color }) => ({ + width: 15, + height: 15, + color: color === 'default' ? theme.palette.secondary.contrastText : '#fff', + backgroundColor: color === 'default' ? theme.palette.secondary.main : '#000', + borderRadius: 8, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontSize: '0.725rem', + lineHeight: '15px', + fontWeight: 500, + cursor: 'help', +})); + +export const HelpTooltip = ({ + help, + color = 'default', + children, +}: PropsWithChildren<{ + help: React.ReactNode; + color?: 'default' | 'black'; +}>) => { + return ( + + {children} + + ? + + + ); +}; diff --git a/src/components/HelpTooltip/index.ts b/src/components/HelpTooltip/index.ts new file mode 100644 index 0000000..0bba491 --- /dev/null +++ b/src/components/HelpTooltip/index.ts @@ -0,0 +1 @@ +export * from './HelpTooltip'; diff --git a/src/components/Loader/Loader.tsx b/src/components/Loader/Loader.tsx new file mode 100644 index 0000000..b73d877 --- /dev/null +++ b/src/components/Loader/Loader.tsx @@ -0,0 +1,33 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, useTheme } from '@mui/material'; + +export const Loader = ({ + minHeight = 300, + loading = true, + children, +}: PropsWithChildren<{ loading?: boolean; minHeight?: number }>) => { + const theme = useTheme(); + + if (loading) { + return ( + +
+
+
+
+ ); + } + + return <>{children}; +}; diff --git a/src/components/Loader/index.ts b/src/components/Loader/index.ts new file mode 100644 index 0000000..d5ce981 --- /dev/null +++ b/src/components/Loader/index.ts @@ -0,0 +1 @@ +export * from './Loader'; diff --git a/src/components/Logo/Logo.tsx b/src/components/Logo/Logo.tsx new file mode 100644 index 0000000..4672fcb --- /dev/null +++ b/src/components/Logo/Logo.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +import { Box, styled, useMediaQuery, useTheme } from '@mui/material'; + +export const LogoWrapper = styled('div', { + name: 'LogoWrapper', +})(() => ({ + display: 'flex', + alignItems: 'center', + '& img': { + display: 'block', + marginRight: 2, + }, +})); + +export const LogoPrimary = styled(Box, { + name: 'LogoPrimary', +})(({ theme }) => ({ + fontSize: '20px', + fontWeight: 700, + lineHeight: 1, + letterSpacing: '0 em', + marginLeft: theme.spacing(0.5), +})); + +export function Logo({ color = '#fff' }: { color?: string }) { + const theme = useTheme(); + const narrow = useMediaQuery(theme.breakpoints.down('lg')); + const size = 32; + + return ( + + + {!narrow ? SUBSQUID : null} + + ); +} diff --git a/src/components/Logo/index.ts b/src/components/Logo/index.ts new file mode 100644 index 0000000..d97c695 --- /dev/null +++ b/src/components/Logo/index.ts @@ -0,0 +1 @@ +export * from './Logo'; diff --git a/src/components/NetworkSwitcher/NetworkSwitcher.tsx b/src/components/NetworkSwitcher/NetworkSwitcher.tsx new file mode 100644 index 0000000..56b6420 --- /dev/null +++ b/src/components/NetworkSwitcher/NetworkSwitcher.tsx @@ -0,0 +1,39 @@ +import React from 'react'; + +import { Button, styled, SxProps } from '@mui/material'; +import capitalize from 'lodash-es/capitalize'; + +import { SwitchArrowsIcon } from '@icons/SwitchArrowsIcon'; +import { NetworkName, useSubsquidNetwork } from '@network/useSubsquidNetwork.ts'; + +const SwitchButton = styled(Button)<{ fill?: string }>(({ theme, fill }) => ({ + width: 'fit-content', + fontSize: '0.875rem', + color: fill || theme.palette?.primary?.contrastText, + gap: '0.625rem', +})); + +export function NetworkSwitcher({ + sx, + color, + hideText = false, +}: { + sx?: SxProps; + color?: string; + hideText?: boolean; +}) { + const [network, changNetwork] = useSubsquidNetwork(); + + const handleAppSwitch = () => { + changNetwork(network === NetworkName.Mainnet ? NetworkName.Testnet : NetworkName.Mainnet); + }; + + return ( + <> + + + {hideText ? null : `Switch to ${capitalize(network)}`} + + + ); +} diff --git a/src/components/NetworkSwitcher/index.ts b/src/components/NetworkSwitcher/index.ts new file mode 100644 index 0000000..14e38db --- /dev/null +++ b/src/components/NetworkSwitcher/index.ts @@ -0,0 +1 @@ +export * from './NetworkSwitcher.tsx'; diff --git a/src/components/Online/Online.tsx b/src/components/Online/Online.tsx new file mode 100644 index 0000000..17ee0ea --- /dev/null +++ b/src/components/Online/Online.tsx @@ -0,0 +1,30 @@ +import React from 'react'; + +import { StyledComponent } from '@emotion/styled'; +import { Box, styled } from '@mui/material'; + +export const OnlineCircle = styled(Box, { + name: 'OnlineCircle', +})(({ theme }) => ({ + width: 8, + height: 8, + borderRadius: '100%', + outline: '1px solid #fff', + + '&.online': { + background: theme.palette.success.main, + }, + '&.offline': { + background: theme.palette.error.main, + }, +})); + +export function Online({ + online = true, + Component = OnlineCircle, +}: { + online?: boolean; + Component?: StyledComponent; +}) { + return ; +} diff --git a/src/components/Online/index.ts b/src/components/Online/index.ts new file mode 100644 index 0000000..0b7f05b --- /dev/null +++ b/src/components/Online/index.ts @@ -0,0 +1 @@ +export * from './Online'; diff --git a/src/components/PageTabs/PageTabs.tsx b/src/components/PageTabs/PageTabs.tsx new file mode 100644 index 0000000..a8c464d --- /dev/null +++ b/src/components/PageTabs/PageTabs.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +import { styled, Tab, TabProps, Tabs } from '@mui/material'; +import classnames from 'classnames'; +import trimEnd from 'lodash-es/trimEnd'; +import { useLocation, useNavigate } from 'react-router-dom'; + +export const PageTabsRoot = styled(Tabs, { + name: 'PageTabs', +})(({ theme }) => ({ + marginBottom: theme.spacing(3), + maxWidth: '100%', + + [theme.breakpoints.down('xxs')]: { + marginBottom: theme.spacing(2), + // margin: theme.spacing(0, -2, 2), + // padding: theme.spacing(0, 2), + }, +})); + +export type PageTab = { + title: React.ReactNode; + path: string; + disabled?: boolean; +}; + +const PageTab = styled(Tab, { name: 'PageTab' })(({ theme }) => ({})); + +export const PageTabs = ({ + tabs, + prefix = '', + TabComponent = Tab, +}: { + tabs: PageTab[]; + prefix?: string; + TabComponent?: React.ElementType; +}) => { + const location = useLocation(); + const navigate = useNavigate(); + const currentPath = trimEnd(location.pathname, '/'); + + return ( + + {tabs.map(({ title, path, disabled }) => { + const linkPath = `${prefix}${path}`; + const active = currentPath === linkPath; + + return ( + navigate(linkPath)} + disabled={disabled} + data-before={title} + label={title} + /> + ); + })} + + ); +}; diff --git a/src/components/PageTabs/index.ts b/src/components/PageTabs/index.ts new file mode 100644 index 0000000..e568031 --- /dev/null +++ b/src/components/PageTabs/index.ts @@ -0,0 +1 @@ +export * from './PageTabs'; diff --git a/src/components/PeerId/PeerId.tsx b/src/components/PeerId/PeerId.tsx new file mode 100644 index 0000000..784ca91 --- /dev/null +++ b/src/components/PeerId/PeerId.tsx @@ -0,0 +1,17 @@ +import { styled } from '@mui/material'; +import { Box } from '@mui/system'; + +export function shortPeerId(p2pAddress: string) { + if (p2pAddress.length < 8) { + return '****'; + } + + return `${p2pAddress.slice(0, 4)}****${p2pAddress.slice(-4)}`; +} + +export const PeerIdShort = styled(Box, { + name: 'PeerIdShort', +})(() => ({ + minWidth: 90, + opacity: 0.8, +})); diff --git a/src/components/PeerId/index.ts b/src/components/PeerId/index.ts new file mode 100644 index 0000000..2457c13 --- /dev/null +++ b/src/components/PeerId/index.ts @@ -0,0 +1 @@ +export * from './PeerId'; diff --git a/src/components/Popover/PopoverContent.tsx b/src/components/Popover/PopoverContent.tsx new file mode 100644 index 0000000..9513a04 --- /dev/null +++ b/src/components/Popover/PopoverContent.tsx @@ -0,0 +1,23 @@ +import { styled, Table } from '@mui/material'; + +export const PopoverContent = styled('div')(({ theme }) => ({ + padding: theme.spacing(2, 2), + fontSize: '0.85rem', + lineHeight: 1, + color: theme.palette.text.default, + // width: 230, +})); + +export const PopoverTable = styled(Table)(({ theme }) => ({ + '& td, & th': { + border: 'none', + padding: theme.spacing(0.5, 0.5), + fontSize: '0.85rem', + }, + '& th': { + fontWeight: 700, + }, + '& td:first-child, & th:first-child': { + paddingRight: theme.spacing(1), + }, +})); diff --git a/src/components/Popover/index.ts b/src/components/Popover/index.ts new file mode 100644 index 0000000..82ebfca --- /dev/null +++ b/src/components/Popover/index.ts @@ -0,0 +1 @@ +export * from './PopoverContent'; diff --git a/src/components/RoundIconButton/RoundIconButton.tsx b/src/components/RoundIconButton/RoundIconButton.tsx new file mode 100644 index 0000000..5c6ad33 --- /dev/null +++ b/src/components/RoundIconButton/RoundIconButton.tsx @@ -0,0 +1,40 @@ +import { IconButton, iconButtonClasses, styled } from '@mui/material'; + +export const RoundIconButton = styled(IconButton)(({ theme: { palette } }) => ({ + background: palette.info.light, + color: palette.primary.main, + width: 32, + height: 32, + transition: 'all 300ms ease-out', + + '&.transparent': { + background: 'transparent', + color: palette.text.primary, + opacity: 0.6, + }, + + '&:hover': { + background: palette.accent.main, + color: palette.accent.contrastText, + opacity: 1, + }, + + [`&.${iconButtonClasses.sizeMedium}`]: { + width: 32, + height: 32, + '& svg': { + width: 20, + height: 20, + marginLeft: -2, + }, + }, + + [`&.${iconButtonClasses.sizeSmall}`]: { + width: 24, + height: 24, + '& svg': { + width: 18, + height: 18, + }, + }, +})); diff --git a/src/components/RoundIconButton/index.ts b/src/components/RoundIconButton/index.ts new file mode 100644 index 0000000..6204cf8 --- /dev/null +++ b/src/components/RoundIconButton/index.ts @@ -0,0 +1 @@ +export * from './RoundIconButton'; diff --git a/src/components/Search/Search.tsx b/src/components/Search/Search.tsx new file mode 100644 index 0000000..2a2f880 --- /dev/null +++ b/src/components/Search/Search.tsx @@ -0,0 +1,77 @@ +import React, { useCallback, useState } from 'react'; + +import SearchIcon from '@mui/icons-material/Search'; +import { Box, styled } from '@mui/material'; + +import { TextField } from '@components/Form'; + +export const Field = styled(TextField)(() => ({ + // background: theme.palette.background.default, + borderWidth: 0, + [`& .MuiInputBase-root`]: { + paddingLeft: 10, + }, + // '& svg': { + // position: 'absolute', + // }, + '& input': { + paddingTop: 0, + paddingBottom: 0, + paddingLeft: 5, + minHeight: 36, + }, +})); + +export const Search = ({ + value, + onChange, + fullWidth, + placeholder, +}: { + loading?: boolean; + value?: string; + onChange?: (value: string) => unknown; + fullWidth?: boolean; + placeholder?: string; +}) => { + const [realTimeValue, setRealTimeValue] = useState(value); + // eslint-disable-next-line react-hooks/exhaustive-deps + // const handleChange = useCallback( + // debounce(value => { + // onChange?.(value); + // }, 200), + // [onChange], + // ); + const handleChange = useCallback((value: string) => onChange?.(value), [onChange]); + + return ( + + { + const value = e.target.value; + setRealTimeValue(value); + handleChange(value); + }} + InputProps={{ + startAdornment: , + }} + /> + {/**/} + + ); +}; diff --git a/src/components/Search/index.ts b/src/components/Search/index.ts new file mode 100644 index 0000000..addd533 --- /dev/null +++ b/src/components/Search/index.ts @@ -0,0 +1 @@ +export * from './Search'; diff --git a/src/components/SortIcon/SortIcon.tsx b/src/components/SortIcon/SortIcon.tsx new file mode 100644 index 0000000..c485df8 --- /dev/null +++ b/src/components/SortIcon/SortIcon.tsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import ArrowUpward from '@mui/icons-material/ArrowUpward'; + +import { SortableIcon } from '@icons/SortableIcon'; + +export function SortIcon({ + query, + value, +}: { + query: { + sortDir?: string; + sortBy?: string; + }; + value: string; +}) { + if (query.sortBy !== value) { + return ; + } + + return ( + + ); +} diff --git a/src/components/SortIcon/index.ts b/src/components/SortIcon/index.ts new file mode 100644 index 0000000..ad77d54 --- /dev/null +++ b/src/components/SortIcon/index.ts @@ -0,0 +1 @@ +export * from './SortIcon'; diff --git a/src/components/SourceWallet/SourceWalletOption.tsx b/src/components/SourceWallet/SourceWalletOption.tsx new file mode 100644 index 0000000..b7969ad --- /dev/null +++ b/src/components/SourceWallet/SourceWalletOption.tsx @@ -0,0 +1,48 @@ +import React from 'react'; + +import { Box, Stack, styled } from '@mui/material'; + +import { formatSqd } from '@api/contracts/utils'; +import { AccountType, SourceWallet } from '@api/subsquid-network-squid'; + +const SourceWalletOptionWrapper = styled(Box, { + name: 'SourceWalletOptionWrapper', +})(() => ({ + fontSize: '0.875rem', + width: '100%', +})); + +const SourceWalletLabel = styled(Box, { + name: 'SourceWalletLabel', +})(({ theme }) => ({ + lineHeight: 1.2, + fontSize: '0.8rem', + marginTop: theme.spacing(0.5), +})); + +const SourceWalletStack = styled(Stack, { + name: 'SourceWalletStack', +})(() => ({ + width: '100%', +})); + +const SourceWalletBalance = styled(Stack, { + name: 'SourceWalletBalance', +})(({ theme }) => ({ + color: theme.palette.text.secondary, + textAlign: 'right', +})); + +export const SourceWalletOption = ({ source }: { source: SourceWallet }) => { + return ( + + + {source.type === AccountType.User ? 'Wallet' : 'Vesting contract'} + + + {source.id} + {formatSqd(source?.balance)} + + + ); +}; diff --git a/src/components/SourceWallet/index.ts b/src/components/SourceWallet/index.ts new file mode 100644 index 0000000..581026a --- /dev/null +++ b/src/components/SourceWallet/index.ts @@ -0,0 +1 @@ +export * from './SourceWalletOption'; diff --git a/src/components/SourceWallet/useMySourceOptions.tsx b/src/components/SourceWallet/useMySourceOptions.tsx new file mode 100644 index 0000000..80f9e6f --- /dev/null +++ b/src/components/SourceWallet/useMySourceOptions.tsx @@ -0,0 +1,26 @@ +import React from 'react'; + +import { SourceWallet, useMySources } from '@api/subsquid-network-squid'; + +import { SourceWalletOption } from './SourceWalletOption'; + +export function useMySourceOptions({ + enabled = true, + sourceDisabled, +}: { enabled?: boolean; sourceDisabled?: (w: SourceWallet) => boolean } = {}) { + const { sources, isPending } = useMySources({ enabled }); + + const options = sources.map(s => { + return { + label: , + value: s.id, + disabled: sourceDisabled?.(s), + }; + }); + + return { + sources, + isPending, + options, + }; +} diff --git a/src/components/StateSelect/StateSelect.tsx b/src/components/StateSelect/StateSelect.tsx new file mode 100644 index 0000000..c1f7f9c --- /dev/null +++ b/src/components/StateSelect/StateSelect.tsx @@ -0,0 +1,129 @@ +import React, { useState } from 'react'; + +import { nonNullable } from '@lib/array'; +import { + Checkbox, + ListItemText, + MenuItem, + Select, + selectClasses, + Stack, + styled, +} from '@mui/material'; + +export const PaperSelect = styled(Select, { + name: 'PaperSelect', +})(({ theme }) => ({ + borderRadius: 4, + fontSize: '0.875rem', + backgroundColor: theme.palette.background.paper, + + [`& .${selectClasses.icon}`]: { + width: 20, + height: 20, + marginTop: 3, + }, +})); + +export const PaperSelectControls = styled(Stack, { + name: 'PaperSelectControls', +})(({ theme }) => ({ + marginTop: theme.spacing(0.5), + marginBottom: theme.spacing(1), + [`& a`]: { + fontWeight: 500, + fontSize: '0.875rem', + }, + [`& a.disabled`]: { + cursor: 'default', + opacity: 0.5, + }, +})); + +export const PaperSelectMenuItem = styled(MenuItem, { + name: 'PaperSelectMenuItem', +})(({ theme }) => ({ + backgroundColor: `${theme.palette.background.paper} !important`, +})); + +export function StateSelect({ + options, + selected, + onChange, + renderValue, + renderMenuItem = item => item.name, +}: { + options: { name: string; value: string }[]; + selected: string[]; + onChange: (value: { name: string; value: string }[]) => unknown; + renderValue?: (value: { name: string; value: string }[]) => React.ReactNode; + renderMenuItem?: (value: { name: string; value: string }) => React.ReactNode; +}) { + const getAll = () => options.map(o => o.value); + const [state, setState] = useState(selected.length ? selected : getAll()); + + return ( + { + if (!e.target.value) return; + + setState(e.target.value as string[]); + }} + onClose={() => { + if (!state.length) { + setState(selected.length ? selected : getAll()); + return; + } + + onChange(state.map(v => options.find(o => o.value === v)).filter(nonNullable)); + }} + MenuProps={{ + sx: { + mt: 1, + }, + }} + renderValue={ + renderValue + ? value => + renderValue( + (value as string[]).map(v => options.find(o => o.value === v)).filter(nonNullable), + ) + : undefined + } + > + + { + e.preventDefault(); + e.stopPropagation(); + setState(getAll()); + }} + > + Select all + + { + e.preventDefault(); + e.stopPropagation(); + setState([]); + }} + > + Clear all + + + {options.map(item => ( + + + + + ))} + + ); +} diff --git a/src/components/StateSelect/index.ts b/src/components/StateSelect/index.ts new file mode 100644 index 0000000..d70862b --- /dev/null +++ b/src/components/StateSelect/index.ts @@ -0,0 +1 @@ +export * from './StateSelect'; diff --git a/src/components/StyledTooltip/StyledTooltip.tsx b/src/components/StyledTooltip/StyledTooltip.tsx new file mode 100644 index 0000000..4448833 --- /dev/null +++ b/src/components/StyledTooltip/StyledTooltip.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +import { styled, Tooltip, tooltipClasses, TooltipProps } from '@mui/material'; + +export const StyledTooltip = styled(({ className, ...props }: TooltipProps) => ( + +))(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + borderRadius: 8, + color: theme.palette.text.default, + }, +})); diff --git a/src/components/StyledTooltip/index.ts b/src/components/StyledTooltip/index.ts new file mode 100644 index 0000000..484b4fb --- /dev/null +++ b/src/components/StyledTooltip/index.ts @@ -0,0 +1 @@ +export * from './StyledTooltip'; diff --git a/src/components/Table/BorderedTable.tsx b/src/components/Table/BorderedTable.tsx new file mode 100644 index 0000000..e4aec2d --- /dev/null +++ b/src/components/Table/BorderedTable.tsx @@ -0,0 +1,95 @@ +import React, { PropsWithChildren, SyntheticEvent } from 'react'; + +import { Stack, styled, Table, TableCell } from '@mui/material'; +import { Box } from '@mui/system'; + +import { SortDir } from '@api/subsquid-network-squid'; +import { SortIcon } from '@components/SortIcon'; + +const borderRadius = 8; + +export const BorderedTable = styled(Table)(({ theme }) => ({ + boxShadow: `0px 4px 12px 0px #9595953D`, + borderRadius: borderRadius, + + '& td, & th': { + background: theme.palette.background.paper, + padding: theme.spacing(2, 5), + borderBottom: `1px solid ${theme.palette.background.content}`, + [theme.breakpoints.down('md')]: { + paddingLeft: theme.spacing(2.5), + paddingRight: theme.spacing(2.5), + }, + }, + + '& th': { + color: theme.palette.text.secondary, + fontWeight: 'normal', + lineHeight: 1, + fontSize: '0.875rem', + }, + + '& tr.hoverable:hover td, & tr.hovered td': { + cursor: 'pointer', + background: theme.palette.accent.main, + }, + + '& thead th:first-child': { borderTopLeftRadius: borderRadius }, + '& thead th:last-child': { borderTopRightRadius: borderRadius }, + + '& tbody tr:last-child td': { + borderBottom: 'none', + }, + '& tbody tr:last-child td:first-child': { + borderBottomLeftRadius: borderRadius, + }, + '& tbody tr:last-child td:last-child': { + borderBottomRightRadius: borderRadius, + }, +})); + +const ClickableStack = styled(Stack)(({ theme }) => ({ + cursor: 'pointer', + width: 'auto', + userSelect: 'none', +})); + +export function SortableHeaderCell({ + sort, + children, + query, + width, + setQuery, +}: PropsWithChildren<{ + sort: S; + width?: string | number; + query: { sortBy: string; sortDir: string }; + setQuery: { sortBy: (v: string) => unknown; sortDir: (v: string) => unknown }; +}>) { + const handleSortChange = (sortBy: S) => (e: SyntheticEvent) => { + e.preventDefault(); + + if (query.sortBy === sortBy) { + setQuery.sortDir(query.sortDir === SortDir.Asc ? SortDir.Desc : SortDir.Asc); + } else { + setQuery.sortBy(sortBy as string); + } + }; + + return ( + + + {children} + + + + + + ); +} diff --git a/src/components/Table/TableList.tsx b/src/components/Table/TableList.tsx new file mode 100644 index 0000000..2724791 --- /dev/null +++ b/src/components/Table/TableList.tsx @@ -0,0 +1,15 @@ +import { styled, Table } from '@mui/material'; + +export const TableList = styled(Table, { + name: 'TableList', +})(() => ({ + '& tbody tr:last-child td': { + border: 'none', + }, + '& tr td:first-child, & tr th:first-child': { + paddingLeft: 0, + }, + '& tr td:last-child, & tr th:last-child': { + paddingRight: 0, + }, +})); diff --git a/src/components/TopBanner/TopBanner.tsx b/src/components/TopBanner/TopBanner.tsx new file mode 100644 index 0000000..2fb8af4 --- /dev/null +++ b/src/components/TopBanner/TopBanner.tsx @@ -0,0 +1,56 @@ +import React from 'react'; + +import { Box, styled } from '@mui/material'; + +export function useBannerHeight() { + return 0; +} + +const TopBannerWrapper = styled(Box, { + name: 'TopBannerWrapper', +})(({ theme }) => { + const height = useBannerHeight(); + + return { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: theme.palette.background.paper, + color: theme.palette.text.primary, + fontSize: '0.875rem', + lineHeight: 1, + gap: theme.spacing(2), + height, + + '& .description': {}, + + '& a': { + fontSize: '0.875rem', + lineHeight: 1, + fontWeight: 500, + cursor: 'pointer', + }, + + [theme.breakpoints.down('xxs')]: { + alignItems: 'flex-start', + padding: '10px 0', + + '& .description': { + flexFlow: 'column', + gap: 0, + + '& div': { + marginTop: 2, + marginBottom: 6, + }, + }, + }, + }; +}); + +export const TopBanner = () => { + const height = useBannerHeight(); + if (height === 0) return null; + + return ; +}; diff --git a/src/components/TopBanner/index.ts b/src/components/TopBanner/index.ts new file mode 100644 index 0000000..d54f302 --- /dev/null +++ b/src/components/TopBanner/index.ts @@ -0,0 +1 @@ +export * from './TopBanner'; diff --git a/src/hooks/demoFeaturesEnabled.ts b/src/hooks/demoFeaturesEnabled.ts new file mode 100644 index 0000000..3835ba7 --- /dev/null +++ b/src/hooks/demoFeaturesEnabled.ts @@ -0,0 +1,7 @@ +import process from 'process'; + +export function demoFeaturesEnabled() { + return ( + process.env.ENABLE_DEMO_FEATURES === 'true' || localStorage.getItem('demo-features') === 'true' + ); +} diff --git a/src/hooks/useLocalStorageState.ts b/src/hooks/useLocalStorageState.ts new file mode 100644 index 0000000..cc48103 --- /dev/null +++ b/src/hooks/useLocalStorageState.ts @@ -0,0 +1,18 @@ +import useLocalStorageState from 'use-local-storage-state'; + +export { useLocalStorageState }; + +export const localStorageStringSerializer = { + stringify: (value: unknown) => String(value), + parse: (value: unknown) => String(value), +}; + +export const localStorageNumberSerializer = { + stringify: (value: unknown) => String(value), + parse: (value: unknown) => Number(value), +}; + +export const localStorageBoolSerializer = { + stringify: (value: unknown) => String(value), + parse: (value: unknown) => value === 'true', +}; diff --git a/src/hooks/useLocationState.ts b/src/hooks/useLocationState.ts new file mode 100644 index 0000000..5b91afb --- /dev/null +++ b/src/hooks/useLocationState.ts @@ -0,0 +1,144 @@ +import { isArray, isDate, mapValues, pickBy } from 'lodash-es'; +import qs from 'qs'; +import { useNavigate, useLocation } from 'react-router-dom'; + +// eslint-disable-next-line @typescript-eslint/no-namespace +export namespace Location { + export class Param { + public initial?: unknown; + public options: { + onStateChange?: (state: T) => T; + } = {}; + + public parse(v: any): any { + return v; + } + } + + export class Bool extends Param { + constructor(public initial?: boolean) { + super(); + } + + parse(val: any): boolean | undefined { + if (typeof val === 'boolean') return val; + else if (val === 'true') return true; + else if (val === 'false') return false; + + return undefined; + } + } + + export class String extends Param { + constructor(public initial?: string) { + super(); + } + } + + export class Enum extends Param { + constructor(public initial?: T) { + super(); + } + } + + export class Number extends Param { + constructor(public initial?: number) { + super(); + } + + parse(val: any): number { + if (typeof val === 'number') return val; + + return parseInt(val, 10); + } + } + + export class IsoDate extends Param { + constructor(public initial?: Date) { + super(); + } + + parse(val: any): Date { + if (isDate(val)) return val; + + return new Date(val); + } + } +} + +type TypeName = T extends (infer U)[] + ? U + : T extends Location.String + ? string + : T extends Location.Enum + ? U + : T extends Location.Number + ? number + : T extends Location.Bool + ? boolean + : never; + +export function useLocationState< + Query extends Record, + State = { + [P in keyof Query]: TypeName; + }, + SetState = { [P in keyof State]: (val: State[P]) => void }, +>(params: Query): [values: State, setValues: SetState] { + const location = useLocation(); + const navigate = useNavigate(); + + const initialState = mapValues(params, v => v.initial); + const queryValues = pickBy( + mapValues(qs.parse(location.search.substring(1)), (v, k) => { + if (!params[k]) return null; + + let val = params[k]?.parse(v); + if (isArray(initialState[k]) && val && !isArray(val)) { + val = [val]; + } + + return val; + }), + v => v !== null, + ); + + const state = pickBy( + { + ...initialState, + ...queryValues, + }, + v => typeof v !== 'undefined', + ) as State; + + const keys = Object.keys(initialState) as Array; + const setState = keys.reduce((t, k) => { + t[k] = (val: State[keyof State]) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if ('page' in state) { + delete state['page']; + } + + if (typeof val !== 'undefined') { + if (val instanceof Date) { + state[k] = val.toISOString() as any; + } else { + state[k] = val; + } + } else { + delete state[k]; + } + + const clearState = pickBy(state as Record, (v, k) => { + return v !== initialState[k]; + }); + location.search = '?' + qs.stringify(clearState); + navigate(location); + }; + + return t; + }, Object.create(null)); + + return [state, setState]; +} diff --git a/src/hooks/useSquidNetworkHeightHooks.ts b/src/hooks/useSquidNetworkHeightHooks.ts new file mode 100644 index 0000000..ba6f1c4 --- /dev/null +++ b/src/hooks/useSquidNetworkHeightHooks.ts @@ -0,0 +1,78 @@ +import { useEffect, useMemo } from 'react'; + +import { logger } from '@logger'; +import { useQueryClient } from '@tanstack/react-query'; +import { max, partition } from 'lodash-es'; + +import { SQUID_DATASOURCE, useSquidNetworkHeightQuery } from '@api/subsquid-network-squid'; +import { localStorageStringSerializer, useLocalStorageState } from '@hooks/useLocalStorageState'; + +type HeightHook = { height: number; invalidateQueries: unknown[] }; + +export function useSquidNetworkHeightHooks() { + const queryClient = useQueryClient(); + const [heightHooksRaw, setHeightHooksRaw] = useLocalStorageState('squid_height_hooks', { + defaultValue: '[]', + serializer: localStorageStringSerializer, + }); + const { data, isLoading } = useSquidNetworkHeightQuery( + SQUID_DATASOURCE, + {}, + { + refetchInterval: 2000, + }, + ); + + const currentHeight = data?.squidStatus?.height || 0; + + const heightHooks: HeightHook[] = useMemo(() => { + try { + return JSON.parse(heightHooksRaw); + } catch (e: any) { + logger.error(`Cant parse json form squid_height_hooks: ${e.message}`); + return []; + } + }, [heightHooksRaw]); + + const maxWaitedHook = useMemo(() => { + return max(heightHooks.map(h => h.height)) || 0; + }, [heightHooks]); + + const setWaitHeight = useMemo(() => { + return (height: bigint | string, invalidateQueries: unknown[] = []) => { + heightHooks.push({ + height: Number(height), + invalidateQueries: invalidateQueries, + }); + + setHeightHooksRaw(JSON.stringify(heightHooks)); + }; + }, [heightHooks, setHeightHooksRaw]); + + useEffect(() => { + const [notReady, ready] = partition(heightHooks, hook => hook.height > currentHeight); + if (!ready.length) return; + + const topInvalidate = ready.map(hook => hook.invalidateQueries); + logger.debug(`Executing hooks for ${ready.map(h => h.height).join(`, `)} heights`); + Promise.all( + topInvalidate.map(invalidate => { + return queryClient.invalidateQueries({ queryKey: invalidate }); + }), + ) + .catch(e => { + logger.error(e); + }) + .finally(() => { + setHeightHooksRaw(JSON.stringify(notReady)); + }); + }, [currentHeight, heightHooks, queryClient, setHeightHooksRaw]); + + return { + isLoading, + isWaiting: heightHooks.length > 0, + waitHeight: maxWaitedHook, + currentHeight: currentHeight ? String(currentHeight) : undefined, + setWaitHeight, + }; +} diff --git a/src/i18n/dateFormat.ts b/src/i18n/dateFormat.ts new file mode 100644 index 0000000..a915b20 --- /dev/null +++ b/src/i18n/dateFormat.ts @@ -0,0 +1,21 @@ +import { format, isValid } from 'date-fns'; + +export function dateFormat( + value: Date | string | number | undefined, + tpl: 'dateTime' | 'date' | string = 'date', +) { + if (!value) return null; + + if (tpl === 'dateTime') { + tpl = 'dd.MM.yyyy HH:mm:ss'; + } else if (tpl === 'date') { + tpl = 'dd.MM.yyyy'; + } + + if (value.valueOf() === 0) return null; + + const date = new Date(value); + if (!isValid(date)) return null; + + return format(new Date(value), tpl); +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..d6af046 --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1 @@ +export * from './dateFormat'; diff --git a/src/icons/AccountIcon.tsx b/src/icons/AccountIcon.tsx new file mode 100644 index 0000000..4864a14 --- /dev/null +++ b/src/icons/AccountIcon.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +export function AccountIcon() { + return ( + + + + ); +} diff --git a/src/icons/Checkbox.tsx b/src/icons/Checkbox.tsx new file mode 100644 index 0000000..15ff78c --- /dev/null +++ b/src/icons/Checkbox.tsx @@ -0,0 +1,57 @@ +import React from 'react'; + +export function CheckboxCheckedIcon({ size = 20 }: { size?: number }) { + return ( + + + + + ); +} + +export function CheckboxUncheckedIcon({ size = 20 }: { size?: number }) { + return ( + + + + ); +} + +export function CheckboxIndeterminateIcon({ size = 20 }: { size?: number }) { + return ( + + + + + ); +} diff --git a/src/icons/ComputersIcon.tsx b/src/icons/ComputersIcon.tsx new file mode 100644 index 0000000..17f05fe --- /dev/null +++ b/src/icons/ComputersIcon.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +export function ComputersIcon() { + return ( + + + + + + + + + ); +} diff --git a/src/icons/ConfettiBigIcon.tsx b/src/icons/ConfettiBigIcon.tsx new file mode 100644 index 0000000..70cafaa --- /dev/null +++ b/src/icons/ConfettiBigIcon.tsx @@ -0,0 +1,5 @@ +import React from 'react'; + +export function ConfettiBigIcon({ size = 100 }: { size?: number }) { + return ; +} diff --git a/src/icons/ContactsIcon.tsx b/src/icons/ContactsIcon.tsx new file mode 100644 index 0000000..5f562c9 --- /dev/null +++ b/src/icons/ContactsIcon.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +export function ContactsIcon({ size = 24 }: { size?: number }) { + return ( + + + + ); +} diff --git a/src/icons/CopyIcon.tsx b/src/icons/CopyIcon.tsx new file mode 100644 index 0000000..fcf13c8 --- /dev/null +++ b/src/icons/CopyIcon.tsx @@ -0,0 +1,26 @@ +import React from 'react'; + +export function CopyIcon({ size = 20, strokeWidth }: { size?: number; strokeWidth?: number }) { + return ( + + + + + ); +} diff --git a/src/icons/DashboardIcon.tsx b/src/icons/DashboardIcon.tsx new file mode 100644 index 0000000..e983299 --- /dev/null +++ b/src/icons/DashboardIcon.tsx @@ -0,0 +1,24 @@ +import React from 'react'; + +export function DashboardIcon() { + return ( + + + + + + + ); +} diff --git a/src/icons/DocumentIcon.tsx b/src/icons/DocumentIcon.tsx new file mode 100644 index 0000000..69cd7db --- /dev/null +++ b/src/icons/DocumentIcon.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +export function DocumentIcon({ size = 24, fill = '#A0A1A6' }: { size?: number; fill?: string }) { + return ( + + + + + ); +} diff --git a/src/icons/EditIcon.tsx b/src/icons/EditIcon.tsx new file mode 100644 index 0000000..4011fbc --- /dev/null +++ b/src/icons/EditIcon.tsx @@ -0,0 +1,35 @@ +import React from 'react'; + +export function EditIcon({ size = 20, color = '#384955' }: { size?: number; color?: string }) { + return ( + + + + + + + + + + + + ); +} diff --git a/src/icons/LogoutIcon.tsx b/src/icons/LogoutIcon.tsx new file mode 100644 index 0000000..f4ae55d --- /dev/null +++ b/src/icons/LogoutIcon.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +export function LogoutIcon() { + return ( + + + + ); +} diff --git a/src/icons/MenuIcon.tsx b/src/icons/MenuIcon.tsx new file mode 100644 index 0000000..f206eff --- /dev/null +++ b/src/icons/MenuIcon.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +export function MenuIcon() { + return ( + + + + + + ); +} diff --git a/src/icons/NoWalletIcon.tsx b/src/icons/NoWalletIcon.tsx new file mode 100644 index 0000000..9af9c0c --- /dev/null +++ b/src/icons/NoWalletIcon.tsx @@ -0,0 +1,45 @@ +import React from 'react'; + +export function NoWalletIcon({ size = 20 }: { size?: number }) { + return ( + + + + + + + + + + + + + ); +} diff --git a/src/icons/OpenInNewIcon.tsx b/src/icons/OpenInNewIcon.tsx new file mode 100644 index 0000000..3769191 --- /dev/null +++ b/src/icons/OpenInNewIcon.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +export function OpenInNewIcon({ size = 20, fill = '#A0A1A6' }: { size?: number; fill?: string }) { + return ( + + + + + ); +} diff --git a/src/icons/SortableIcon.tsx b/src/icons/SortableIcon.tsx new file mode 100644 index 0000000..00908ee --- /dev/null +++ b/src/icons/SortableIcon.tsx @@ -0,0 +1,24 @@ +import React from 'react'; + +export function SortableIcon({ size = 16 }: { size?: number }) { + return ( + + + + + + + ); +} diff --git a/src/icons/SwitchArrowsIcon.tsx b/src/icons/SwitchArrowsIcon.tsx new file mode 100644 index 0000000..213ec96 --- /dev/null +++ b/src/icons/SwitchArrowsIcon.tsx @@ -0,0 +1,28 @@ +import React from 'react'; + +import { useTheme } from '@mui/material'; + +export function SwitchArrowsIcon({ size = 24, fill }: { size?: number; fill?: string }) { + const theme = useTheme(); + + const currentFill = fill || theme.palette.primary.contrastText; + + return ( + + + + + ); +} diff --git a/src/icons/VisibleIcon.tsx b/src/icons/VisibleIcon.tsx new file mode 100644 index 0000000..da45a2d --- /dev/null +++ b/src/icons/VisibleIcon.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +export function VisibleIcon() { + return ( + + + + + + + + + + + + ); +} diff --git a/src/icons/VisibleOffIcon.tsx b/src/icons/VisibleOffIcon.tsx new file mode 100644 index 0000000..b5e6d99 --- /dev/null +++ b/src/icons/VisibleOffIcon.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +export function VisibleOffIcon() { + return ( + + + + + + + + + + + + ); +} diff --git a/src/icons/WalletIcon.tsx b/src/icons/WalletIcon.tsx new file mode 100644 index 0000000..8b5a6d1 --- /dev/null +++ b/src/icons/WalletIcon.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +export function WalletIcon({ size = 24 }: { size?: number }) { + return ( + + + + + ); +} diff --git a/src/index.d.tsx b/src/index.d.tsx new file mode 100644 index 0000000..52fa961 --- /dev/null +++ b/src/index.d.tsx @@ -0,0 +1,10 @@ +declare module 'use-element-position' { + import { MutableRefObject } from 'react'; + + export function useElementPosition(initial: { + left?: number; + top?: number; + width?: number; + height?: number; + }): [MutableRefObject, { left: number; top: number; width: number; height: number }]; +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..0893f2b --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,128 @@ +import React from 'react'; + +import { info } from '@logger'; +import * as Sentry from '@sentry/react'; +import { createRoot } from 'react-dom/client'; +import { useNavigate } from 'react-router-dom'; +import { useDisconnect } from 'wagmi'; + +import { queryClient } from '@api/client'; + +import App from './App'; + +declare global { + interface process { + env: { + APP_VERSION: string; + DOCS_API_URL: string; + DISABLE_DEMO_FEATURES: string; + + /** NETWORK **/ + DEFAULT_NETWORK: string; + SQUID_API_URL: string; + WALLET_CONNECT_PROJECT_ID: string; + BLOCK_CHAIN_NODE_ADDRESS: string; + SQD_CONTRACT_ADDRESS: string; + WORKER_REGISTRATION_CONTRACT_ADDRESS: string; + STAKING_REGISTRATION_CONTRACT_ADDRESS: string; + }; + } + + interface Window { + gtag(event: string, action: string, params?: Record): void; + } +} + +info(` +---------------- +Subsquid Network App v.${process.env.APP_VERSION} +---------------- +`); + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const container = document.getElementById('root')!; +const loader = document.getElementById('loader'); + +function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +export async function hideLoader(delay = 100) { + loader?.classList.remove('visible'); + await sleep(delay); + loader?.classList.remove('show'); +} + +export async function appShowLoader() { + loader?.classList.add('show'); + await sleep(1); + loader?.classList.add('visible'); +} + +if (process.env.SENTRY_DSN) { + Sentry.init({ + dsn: process.env.SENTRY_DSN, + environment: process.env.APP_ENV, + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration({ + maskAllText: false, + blockAllMedia: false, + }), + ], + ignoreErrors: [ + // Random plugins/extensions + 'top.GLOBALS', + // See: http://blog.errorception.com/2012/03/tale-of-unfindable-js-error.html + 'originalCreateNotification', + 'canvas.contentDocument', + ], + denyUrls: [ + // Extensions + /extensions\//i, + /^chrome:\/\//i, + /^chrome-extension:\/\//i, + /^moz-extension:\/\//i, + ], + // Performance Monitoring + tracesSampleRate: 1.0, // Capture 100% of the transactions + // Set 'tracePropagationTargets' to control for which URLs distributed tracing should be enabled + // tracePropagationTargets: [/^https:\/\/yourserver\.io\/api/], + // Session Replay + replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production. + replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur. + }); +} + +export function useAppReload({ + delay = 500, + to, +}: { + delay?: number; + to?: string; +} = {}) { + const navigate = useNavigate(); + const { disconnectAsync } = useDisconnect(); + + return async () => { + await appShowLoader(); + await sleep(delay); + + root.unmount(); + + await disconnectAsync(); + queryClient.clear(); + if (to) { + navigate(to); + } + + root = createRoot(container); + root.render(); + + await hideLoader(); + }; +} + +let root = createRoot(container); +root.render(); +// hideLoader(0); diff --git a/src/layouts/NetworkLayout/BasicMenuItem.tsx b/src/layouts/NetworkLayout/BasicMenuItem.tsx new file mode 100644 index 0000000..fdbf9ab --- /dev/null +++ b/src/layouts/NetworkLayout/BasicMenuItem.tsx @@ -0,0 +1,80 @@ +import React, { forwardRef } from 'react'; + +import { + ListItemIcon, + ListItemText, + listItemTextClasses, + MenuItem, + menuItemClasses, + styled, +} from '@mui/material'; +import classnames from 'classnames'; + +const Item = styled(MenuItem)(({ theme }) => ({ + height: '40px', + + marginTop: theme.spacing(1.5), + transition: 'all ease-out 150ms', + paddingLeft: theme.spacing(1.5), + paddingRight: theme.spacing(1), + borderRadius: '2px', + '& path': { + transition: 'fill ease-out 150ms', + }, + [`&:hover, &.hovered`]: { + backgroundColor: theme.palette.primary.main, + color: theme.palette.primary.contrastText, + '& path': { + fill: theme.palette.primary.contrastText, + }, + }, + + [`& .${menuItemClasses.selected}`]: {}, + [`& .MuiListItemIcon-root`]: { + minWidth: 32, + }, +})); + +const Text = styled(ListItemText)(() => ({ + [`& .${listItemTextClasses.primary}`]: { + fontSize: '0.875rem', + }, +})); + +export const BasicMenuItem = forwardRef( + ( + { + LeftIcon, + RightIcon, + label, + onClick, + disabled, + hovered, + }: { + onClick?: (event: React.MouseEvent) => unknown; + label: React.ReactNode; + LeftIcon: any; + RightIcon?: any; + disabled?: boolean; + hovered?: boolean; + }, + ref: any, + ) => { + return ( + + + + + {label} + {RightIcon ? : null} + + ); + }, +); diff --git a/src/layouts/NetworkLayout/CenteredPageWrapper.tsx b/src/layouts/NetworkLayout/CenteredPageWrapper.tsx new file mode 100644 index 0000000..a22af0f --- /dev/null +++ b/src/layouts/NetworkLayout/CenteredPageWrapper.tsx @@ -0,0 +1,16 @@ +import { styled } from '@mui/material'; + +export const CenteredPageWrapper = styled('div', { + name: 'CenteredPageWrapper', +})(({ theme: { breakpoints } }) => ({ + maxWidth: 800, + margin: '0 auto', + + '&.wide': { + maxWidth: 1200, + + [breakpoints.down('lg')]: { + maxWidth: 800, + }, + }, +})); diff --git a/src/layouts/NetworkLayout/LogoutMenuItem.tsx b/src/layouts/NetworkLayout/LogoutMenuItem.tsx new file mode 100644 index 0000000..9a65484 --- /dev/null +++ b/src/layouts/NetworkLayout/LogoutMenuItem.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +import { LogoutIcon } from '@icons/LogoutIcon'; + +import { useAppReload } from '../../index.tsx'; + +import { BasicMenuItem } from './BasicMenuItem'; + +export function LogoutMenuItem() { + const reload = useAppReload({ clearStorage: true, to: '/' }); + + return reload()} />; +} diff --git a/src/layouts/NetworkLayout/NetworkLayout.tsx b/src/layouts/NetworkLayout/NetworkLayout.tsx new file mode 100644 index 0000000..2b16304 --- /dev/null +++ b/src/layouts/NetworkLayout/NetworkLayout.tsx @@ -0,0 +1,313 @@ +import React, { PropsWithChildren, useState } from 'react'; + +import { + AppBar as AppBarMaterial, + Box, + IconButton, + Slide, + styled, + useMediaQuery, + useTheme, +} from '@mui/material'; +import { alpha } from '@mui/system/colorManipulator'; +import classnames from 'classnames'; +import { Outlet } from 'react-router-dom'; + +import { Logo } from '@components/Logo'; +import { NetworkSwitcher } from '@components/NetworkSwitcher'; +import { TopBanner, useBannerHeight } from '@components/TopBanner'; +import { MenuIcon } from '@icons/MenuIcon'; +import { UserMenu } from '@layouts/NetworkLayout/UserMenu.tsx'; +import { useSwitchNetwork } from '@network/useSwitchNetwork'; + +import '@rainbow-me/rainbowkit/styles.css'; + +import { ColorVariant } from '../../theme'; + +import { NetworkMenu } from './NetworkMenu'; +import { SyncSquidSnackbar } from './SyncSquidSnackbar'; + +const APP_BAR_HEIGHT = 52; +const SIDEBAR_WIDTH = { + M: 248, + L: 320, +}; + +export const Main = styled('div', { + name: 'Main', +})(({ theme }) => ({ + minHeight: '100%', + background: theme.palette.background.paper, + display: 'flex', + flexFlow: 'column', + position: 'relative', +})); + +export const AppToolbar = styled(Box, { name: 'AppToolbar' })(({ theme }) => ({ + display: 'flex', + flexFlow: 'row', + alignItems: 'center', + height: APP_BAR_HEIGHT, + paddingRight: theme.spacing(3), + + [theme.breakpoints.down('xs')]: { + paddingRight: theme.spacing(2), + }, +})); + +export const AppToolbarSidebar = styled('div', { + name: 'AppToolbarSidebar', +})(({ theme }) => ({ + width: SIDEBAR_WIDTH.L, + display: 'flex', + alignItems: 'center', + paddingLeft: theme.spacing(3), + + '& .MenuBurger path': { + stroke: '#fff', + }, + + [theme.breakpoints.down('xl')]: { + width: SIDEBAR_WIDTH.M, + }, + + [theme.breakpoints.down('md')]: { + width: 'auto', + '&:after': { + display: 'none', + }, + }, + + [theme.breakpoints.down('xs')]: { + paddingLeft: theme.spacing(2), + }, +})); + +export const AppToolbarContent = styled('div', { + name: 'AppToolbarContent', +})(({ theme }) => ({ + flex: 1, + paddingLeft: theme.spacing(3), + display: 'flex', + justifyContent: 'flex-end', + + [theme.breakpoints.down('xl')]: { + width: 'auto', + borderRight: 'none', + // paddingLeft: theme.spacing(2), + }, + [theme.breakpoints.down('md')]: { + paddingLeft: theme.spacing(0), + }, +})); + +export const Content = styled('div', { + name: 'Content', +})(({ theme }) => { + const bannerHeight = useBannerHeight(); + + return { + flex: 1, + background: theme.palette.background.content, + display: 'flex', + alignItems: 'stretch', + justifyContent: 'center', + paddingTop: APP_BAR_HEIGHT + bannerHeight, + paddingLeft: SIDEBAR_WIDTH.M, + minWidth: 350, + + '&.narrow': { + paddingLeft: 0, + }, + + [theme.breakpoints.up('xl')]: { + paddingLeft: SIDEBAR_WIDTH.L, + }, + }; +}); + +export const ContentWrapper = styled('div', { + name: 'ContentWrapper', +})(({ theme }) => ({ + margin: theme.spacing(0, 'auto'), + padding: theme.spacing(7.5), + flex: '1', + // alignSelf: 'center', + color: alpha(theme.palette.text.primary, 0.8), + maxWidth: '100%', + + [theme.breakpoints.up('xl')]: { + maxWidth: 1200, + boxSizing: 'content-box', + }, + [theme.breakpoints.down('md')]: { + padding: theme.spacing(7.5, 3), + }, + [theme.breakpoints.down('sm')]: { + padding: theme.spacing(7.5, 2), + }, + [theme.breakpoints.down('xxs')]: { + padding: theme.spacing(3, 2), + }, +})); + +const Sidebar = styled('div', { + name: 'Sidebar', +})(({ theme, color }) => { + const variant: ColorVariant = + color && color in theme.palette ? (color as ColorVariant) : 'primary'; + + const bannerHeight = useBannerHeight(); + + return { + display: 'flex', + flexFlow: 'column', + alignItems: 'stretch', + marginTop: APP_BAR_HEIGHT + bannerHeight, + background: theme.palette.background.paper, + position: 'fixed', + top: 0, + // paddingTop: theme.spacing(0), + bottom: 0, + paddingBottom: theme.spacing(3), + zIndex: theme.zIndex.appBar - 1, + boxShadow: '-5px 4px 20px rgba(0, 0, 0, 0.25)', + width: SIDEBAR_WIDTH.M, + overflowY: 'auto', + + [theme.breakpoints.up('xl')]: { + width: SIDEBAR_WIDTH.L, + }, + + '&.guideActive': { + zIndex: theme.zIndex.guide.highlight, + }, + + '& .MuiButtonBase-root:hover': { + color: theme.palette[variant].main, + '& path': { + fill: theme.palette[variant].main, + }, + }, + '& .MuiButtonBase-root.selected': { + color: theme.palette[variant].contrastText, + background: theme.palette[variant].main, + '& path': { + fill: theme.palette[variant].contrastText, + }, + }, + '& .MuiButtonBase-root.selected:hover': { + color: theme.palette[variant].contrastText, + '& path': { + fill: theme.palette[variant].contrastText, + }, + }, + }; +}); + +const AppBar = styled(AppBarMaterial, { + name: 'AppBar', +})(({ theme }) => { + return { + position: 'fixed', + top: 0, + right: 0, + left: 0, + background: theme.palette.info.main, + zIndex: theme.zIndex.appBar, + boxShadow: 'none', + + '&.guideActive': { + zIndex: theme.zIndex.guide.highlight, + }, + }; +}); + +const AppToolbarDivider = styled('div', { + name: 'AppToolbarContent', +})(({ theme }) => ({ + width: 1, + height: 20, + background: alpha(theme.palette.primary.contrastText, 0.6), + margin: theme.spacing(0, 3), +})); + +const MenuButton = styled(IconButton, { + name: 'MenuButton', +})(({ theme }) => ({ + margin: theme.spacing(0, 0, 0, 1), + transition: 'transform 300ms ease-out', + + '&.open': { + transform: `rotateZ(90deg);`, + }, + + '& path': { + stroke: theme.palette.primary.contrastText, + }, + + [theme.breakpoints.down('xs')]: { + margin: 0, + }, +})); + +export const NetworkLayout = ({ + children, + stretchContent = true, +}: PropsWithChildren<{ + stretchContent?: boolean; +}>) => { + useSwitchNetwork(); + + const theme = useTheme(); + const narrowLg = useMediaQuery(theme.breakpoints.down('lg')); + const narrowXs = useMediaQuery(theme.breakpoints.down('xs')); + const isMobile = useMediaQuery(theme.breakpoints.down('xxs')); + + const [isMenuOpen, setIsMenuOpen] = useState(false); + + const centeredSx = { + alignSelf: stretchContent ? 'stretch' : 'flex-start', + }; + + return ( +
+ + + + + + {narrowXs ? null : } + {narrowLg ? ( + setIsMenuOpen(open => !open)} + > + + + ) : null} + + + + {narrowXs ? null : } + {narrowXs ? : null} + + + + + + + setIsMenuOpen(false)} /> + + + + + {children} + + + +
+ ); +}; diff --git a/src/layouts/NetworkLayout/NetworkMenu.tsx b/src/layouts/NetworkLayout/NetworkMenu.tsx new file mode 100644 index 0000000..30e0a81 --- /dev/null +++ b/src/layouts/NetworkLayout/NetworkMenu.tsx @@ -0,0 +1,164 @@ +import React, { ForwardedRef, forwardRef } from 'react'; + +import { Box, Button, buttonClasses, styled } from '@mui/material'; +import { Link, useLocation } from 'react-router-dom'; + +import { AccountIcon } from '@icons/AccountIcon'; +import { ComputersIcon } from '@icons/ComputersIcon'; +import { ContactsIcon } from '@icons/ContactsIcon'; +import { DashboardIcon } from '@icons/DashboardIcon'; +import { DocumentIcon } from '@icons/DocumentIcon'; +import { OpenInNewIcon } from '@icons/OpenInNewIcon'; + +interface NetworkMenuProps { + onItemClick: () => void; +} + +const MenuItem = styled(Button)(({ theme: { palette, spacing } }) => ({ + display: 'flex', + justifyContent: 'flex-start', + alignItems: 'center', + height: 60, + width: '100%', + color: palette.text.secondary, + + fontWeight: 500, + textAlign: 'center', + padding: spacing(0, 3), + borderRadius: 0, + marginBottom: spacing(1.5), + '& .leftIcon': { + marginRight: spacing(2), + display: 'flex', + width: '20px', + alignItems: 'center', + }, + '& .rightIcon': { + height: '20px', + }, + '& svg:not(.badge) path': { + transition: 'fill 300ms ease-out', + }, + ['&:hover']: { + backgroundColor: palette.background.paper, + color: palette.info.contrastText, + // '& svg:not(.badge) path': { + // fill: 'red', + // }, + // '& svg.badge path': { + // fill: 'inherit', + // }, + }, + [`&.selected`]: { + // backgroundColor: palette.info.main, + // color: palette.info.contrastText, + // '& svg:not(.badge) path': { + // fill: palette.info.contrastText, + // }, + }, + + [`&.${buttonClasses.disabled}`]: { + opacity: 0.4, + backgroundColor: 'transparent', + color: palette.text.secondary, + '& svg:not(.badge) path': { + fill: palette.text.secondary, + }, + }, +})); + +const Text = styled(Box)({ + fontSize: '0.875rem', + flex: 1, + textAlign: 'left', +}); + +export const Item = forwardRef( + ( + { + forceActive, + forceInactive, + path, + target, + label, + disabled, + LeftIcon, + RightIcon, + onClick, + }: { + forceActive?: boolean; + forceInactive?: boolean; + path: string; + target?: string; + disabled?: boolean; + LeftIcon: any; + RightIcon?: any; + label?: string; + onClick?: () => void; + }, + ref: ForwardedRef, + ) => { + const location = useLocation(); + const active = forceActive || (!forceInactive && location.pathname.startsWith(path)); + + const button = ( + + + + + {label} + {RightIcon ? ( + + + + ) : null} + + ); + + if (disabled) return button; + + return ( + + {button} + + ); + }, +); + +export const NetworkMenu = ({ onItemClick }: NetworkMenuProps) => { + return ( + <> +
+ + + + + +
+ + + + + ); +}; diff --git a/src/layouts/NetworkLayout/NetworkPageTitle.tsx b/src/layouts/NetworkLayout/NetworkPageTitle.tsx new file mode 100644 index 0000000..9bcff03 --- /dev/null +++ b/src/layouts/NetworkLayout/NetworkPageTitle.tsx @@ -0,0 +1,69 @@ +import React, { PropsWithChildren, ReactNode } from 'react'; + +import { Box, styled, Typography } from '@mui/material'; +import { SxProps } from '@mui/system/styleFunctionSx'; + +import { BackButton } from '@components/BackButton'; + +const PageTitleWrapper = styled('div', { + name: 'PageTitleWrapper', +})(({ theme }) => ({ + marginBottom: theme.spacing(5), + + '& .title': { + display: 'flex', + alignItems: 'center', + gap: theme.spacing(3.5), + + [theme.breakpoints.down('xxs')]: { + gap: theme.spacing(2), + }, + }, + + '& .endAdornment': { + marginLeft: 'auto', + }, + + [theme.breakpoints.down('xxs')]: { + marginBottom: theme.spacing(4), + }, +})); + +const PageDescription = styled(Typography)(({ theme }) => ({ + fontSize: '1.125rem', + color: theme.palette.text.secondary, + lineHeight: 1.6, + // maxWidth: 600, +})); + +export function NetworkPageTitle({ + backPath, + children, + endAdornment, + sx, + title, +}: PropsWithChildren<{ + backPath?: string; + endAdornment?: ReactNode; + sx?: SxProps; + title?: string; +}>) { + return ( + + +
+ {backPath ? : null} + {title} + {endAdornment ?
{endAdornment}
: null} +
+
+ {children ? {children} : null} +
+ ); +} diff --git a/src/layouts/NetworkLayout/PageTitle.tsx b/src/layouts/NetworkLayout/PageTitle.tsx new file mode 100644 index 0000000..d033624 --- /dev/null +++ b/src/layouts/NetworkLayout/PageTitle.tsx @@ -0,0 +1,62 @@ +import React, { PropsWithChildren } from 'react'; + +import { Box, styled, Typography } from '@mui/material'; +import { SxProps } from '@mui/system/styleFunctionSx'; + +import { BackButton } from '@components/BackButton'; + +const PageTitleWrapper = styled('div', { + name: 'PageTitleWrapper', +})(({ theme }) => ({ + marginBottom: theme.spacing(5), + + '& .title': { + display: 'flex', + alignItems: 'center', + gap: theme.spacing(3.5), + + [theme.breakpoints.down('xxs')]: { + gap: theme.spacing(2), + }, + }, + + [theme.breakpoints.down('xxs')]: { + marginBottom: theme.spacing(4), + }, +})); + +const PageDescription = styled(Typography)(({ theme }) => ({ + fontSize: '1.125rem', + color: theme.palette.text.secondary, + lineHeight: 1.6, + // maxWidth: 600, +})); + +export function PageTitle({ + backPath, + children, + sx, + title, +}: PropsWithChildren<{ + backPath?: string; + sx?: SxProps; + title?: string; +}>) { + return ( + + +
+ {backPath ? : null} + {title} +
+
+ {children ? {children} : null} +
+ ); +} diff --git a/src/layouts/NetworkLayout/SyncSquidSnackbar.tsx b/src/layouts/NetworkLayout/SyncSquidSnackbar.tsx new file mode 100644 index 0000000..b9d1ec5 --- /dev/null +++ b/src/layouts/NetworkLayout/SyncSquidSnackbar.tsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import { Box, CircularProgress, Paper, Stack } from '@mui/material'; + +import { useSquidNetworkHeightHooks } from '@hooks/useSquidNetworkHeightHooks'; + +export const SyncSquidSnackbar = () => { + const { isWaiting, waitHeight, currentHeight } = useSquidNetworkHeightHooks(); + + if (!isWaiting) return null; + + return ( + + + + + + Synced {currentHeight} block of {waitHeight} + + + + + ); +}; diff --git a/src/layouts/NetworkLayout/UserMenu.tsx b/src/layouts/NetworkLayout/UserMenu.tsx new file mode 100644 index 0000000..923cefd --- /dev/null +++ b/src/layouts/NetworkLayout/UserMenu.tsx @@ -0,0 +1,104 @@ +import React, { useCallback, useMemo, useRef, useState } from 'react'; + +import { ExpandMore } from '@mui/icons-material'; +import { Box, Button, Menu, Stack, styled } from '@mui/material'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { useAccount } from 'wagmi'; + +import { WalletIcon } from '@icons/WalletIcon.tsx'; + +import { LogoutMenuItem } from './LogoutMenuItem'; + +export const UserMenuStyled = styled(Menu, { + name: 'UserMenuStyled', +})(() => ({ + minWidth: '100%', +})); + +export const ConnectButton = styled(Button, { + name: 'ConnectButton', +})(({ theme }) => ({ + color: theme.palette.info.contrastText, +})); + +export const Dropdown = styled(Button)(({ theme }) => ({ + color: theme.palette.primary.contrastText, + cursor: 'pointer', + textAlign: 'left', +})); + +export function UserMenu() { + const { address, isConnected } = useAccount(); + const { openConnectModal } = useConnectModal(); + const ref = useRef(null); + const [open, setOpen] = useState(false); + + const handleOpen = useCallback(() => { + setOpen(true); + }, []); + const handleClose = useCallback(() => { + setOpen(false); + }, []); + + const maskedAddress = useMemo(() => { + return address ? `${address.substring(0, 4)}...${address?.slice(-4)}` : ''; + }, [address]); + + if (!address || !isConnected) { + return ( + } onClick={openConnectModal}> + Connect wallet + + ); + } + + return ( + <> + + {maskedAddress} + + + + + + + + + ); +} diff --git a/src/layouts/NetworkLayout/index.ts b/src/layouts/NetworkLayout/index.ts new file mode 100644 index 0000000..f8d2535 --- /dev/null +++ b/src/layouts/NetworkLayout/index.ts @@ -0,0 +1,5 @@ +export * from './NetworkPageTitle'; +export * from './NetworkLayout'; +export * from './NetworkMenu'; +export * from './CenteredPageWrapper.tsx'; +export * from './PageTitle.tsx'; diff --git a/src/lib/array/index.ts b/src/lib/array/index.ts new file mode 100644 index 0000000..55a8e78 --- /dev/null +++ b/src/lib/array/index.ts @@ -0,0 +1 @@ +export * from './nonNullable'; diff --git a/src/lib/array/nonNullable.ts b/src/lib/array/nonNullable.ts new file mode 100644 index 0000000..3e06bb1 --- /dev/null +++ b/src/lib/array/nonNullable.ts @@ -0,0 +1,3 @@ +export function nonNullable(value: T): value is NonNullable { + return value !== null && value !== undefined; +} diff --git a/src/lib/formatters/formatters.ts b/src/lib/formatters/formatters.ts new file mode 100644 index 0000000..149e24b --- /dev/null +++ b/src/lib/formatters/formatters.ts @@ -0,0 +1,23 @@ +import prettyBytes from 'pretty-bytes'; + +export function percentFormatter(value?: number | string) { + if (!value) return '0%'; + + return `${Number(value).toFixed(2)}%`; +} + +const formatter8 = new Intl.NumberFormat('fr-FR', { + maximumFractionDigits: 8, +}); + +export function numberWithSpacesFormatter(val?: number | string) { + if (val === undefined) return ''; + + return formatter8.format(Number(val)).replace(',', '.'); +} + +export function bytesFormatter(val?: number | string) { + if (!val) return '0 GB'; + + return prettyBytes(Number(val), { maximumFractionDigits: 0 }); +} diff --git a/src/logger/index.ts b/src/logger/index.ts new file mode 100644 index 0000000..1ff09ef --- /dev/null +++ b/src/logger/index.ts @@ -0,0 +1 @@ +export * from './logger'; diff --git a/src/logger/logger.ts b/src/logger/logger.ts new file mode 100644 index 0000000..cf38340 --- /dev/null +++ b/src/logger/logger.ts @@ -0,0 +1,14 @@ +export function debug(message: string) { + return console.log(`%c${message}`, ''); +} +export function info(message: string) { + return console.log(`%c${message}`, 'color: #66B2FF; font-size: 16px'); +} +export function error(message: Error | string | unknown) { + return console.error(`%c${message}`, 'color: red; font-size: 16px'); +} +export const logger = { + debug, + info, + error, +}; diff --git a/src/network/ConnectedWalletRequired.tsx b/src/network/ConnectedWalletRequired.tsx new file mode 100644 index 0000000..7c90b24 --- /dev/null +++ b/src/network/ConnectedWalletRequired.tsx @@ -0,0 +1,31 @@ +import React, { ReactElement } from 'react'; + +import { Box, Button, styled } from '@mui/material'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { useAccount } from 'wagmi'; + +import { WalletIcon } from '@icons/WalletIcon'; + +export const ConnectButton = styled(Button, { + name: 'ConnectButton', +})(({ theme }) => ({ + color: theme.palette.info.contrastText, +})); + +export function ConnectedWalletRequired({ children }: { children: ReactElement }) { + const { isConnected } = useAccount(); + const { openConnectModal } = useConnectModal(); + + if (!isConnected) { + return ( + + Connect your wallet to proceed + } onClick={openConnectModal}> + Connect wallet + + + ); + } + + return children; +} diff --git a/src/network/config.ts b/src/network/config.ts new file mode 100644 index 0000000..5376d2d --- /dev/null +++ b/src/network/config.ts @@ -0,0 +1,63 @@ +import { connectorsForWallets } from '@rainbow-me/rainbowkit'; +import { metaMaskWallet, walletConnectWallet } from '@rainbow-me/rainbowkit/wallets'; +import { configureChains, createConfig } from 'wagmi'; +import { Chain } from 'wagmi'; +import { arbitrumSepolia, hardhat } from 'wagmi/chains'; +import { jsonRpcProvider } from 'wagmi/providers/jsonRpc'; +import { publicProvider } from 'wagmi/providers/public'; + +export let CHAIN: Chain = arbitrumSepolia; +if (process.env.NETWORK === 'hardhat') { + CHAIN = { + ...hardhat, + contracts: { + multicall3: { + address: process.env.MULTICALL_3_CONTRACT_ADDRESS, + } as any, + }, + }; +} + +const privateNode = process.env.BLOCK_CHAIN_NODE_ADDRESS; + +const { + chains: configuredChains, + publicClient, + webSocketPublicClient, +} = configureChains( + [CHAIN], + [ + privateNode + ? jsonRpcProvider({ + rpc: () => ({ + http: privateNode, + }), + }) + : publicProvider(), + ], +); + +const connectors = connectorsForWallets([ + { + groupName: 'Recommended', + wallets: [ + walletConnectWallet({ + projectId: process.env.WALLET_CONNECT_PROJECT_ID || '', + chains: configuredChains, + }), + metaMaskWallet({ + projectId: process.env.WALLET_CONNECT_PROJECT_ID || '', + chains: configuredChains, + }), + ], + }, +]); + +export const wagmiConfig = createConfig({ + autoConnect: true, + publicClient, + connectors, + webSocketPublicClient, +}); + +export const chains = configuredChains; diff --git a/src/network/useAccount.ts b/src/network/useAccount.ts new file mode 100644 index 0000000..e3feb5c --- /dev/null +++ b/src/network/useAccount.ts @@ -0,0 +1,11 @@ +import { useAccount as useOriginalAccount } from 'wagmi'; + +export function useAccount() { + const { address, isConnected, connector } = useOriginalAccount(); + + return { + address: address?.toLowerCase() as `0x${string}` | undefined, + isConnected, + connector, + }; +} diff --git a/src/network/useContracts.ts b/src/network/useContracts.ts new file mode 100644 index 0000000..1f9bb72 --- /dev/null +++ b/src/network/useContracts.ts @@ -0,0 +1,40 @@ +import { SQD_TOKEN } from '@api/contracts/consts.ts'; + +import { NetworkName, useSubsquidNetwork } from './useSubsquidNetwork.ts'; + +export function useContracts(): { + SQD: `0x${string}`; + WORKER_REGISTRATION: `0x${string}`; + STAKING: `0x${string}`; + REWARD_TREASURY: `0x${string}`; + REWARD_DISTRIBUTION: `0x${string}`; + GATEWAY_REGISTRATION: `0x${string}`; + SQD_TOKEN: string; +} { + const [network] = useSubsquidNetwork(); + + switch (network) { + case NetworkName.Testnet: { + return { + SQD: `0x24f9C46d86c064a6FA2a568F918fe62fC6917B3c`, + WORKER_REGISTRATION: `0x7Bf0B1ee9767eAc70A857cEbb24b83115093477F`, + STAKING: `0x2b0d385dbc2eb2946448d1f6be6bfa9bb53f68c9`, + REWARD_TREASURY: `0xBE8518812597C37FA807b1B8A4a3Bb98849E67ab`, + REWARD_DISTRIBUTION: `0xcd7560602c6583a1e6dc38df271a3ab5a2023d9b`, + GATEWAY_REGISTRATION: `0x01D7D0CC06cDdD744a9E06C9bc5249DA6da3e848`, + SQD_TOKEN: 'tSQD', + }; + } + case NetworkName.Mainnet: { + return { + SQD: `0x1337420ded5adb9980cfc35f8f2b054ea86f8ab1`, + WORKER_REGISTRATION: `0xxxxxxxxxxxx`, + STAKING: `0xxxxxxxxxxxx`, + REWARD_TREASURY: `0xxxxxxxxxxxx`, + REWARD_DISTRIBUTION: `0xxxxxxxxxxxx`, + GATEWAY_REGISTRATION: `0xxxxxxxxxxxx`, + SQD_TOKEN: 'SQD', + }; + } + } +} diff --git a/src/network/useSubsquidNetwork.ts b/src/network/useSubsquidNetwork.ts new file mode 100644 index 0000000..6c38632 --- /dev/null +++ b/src/network/useSubsquidNetwork.ts @@ -0,0 +1,23 @@ +import useLocalStorageState from 'use-local-storage-state'; + +import { localStorageStringSerializer } from '@hooks/useLocalStorageState.ts'; + +export enum NetworkName { + Testnet = 'testnet', + Mainnet = 'mainnet', +} + +const defaultApp = (process.env.DEFAULT_NETWORK as NetworkName) || NetworkName.Testnet; + +function validate(app: NetworkName): NetworkName { + return Object.values(NetworkName).includes(app) ? (app as NetworkName) : defaultApp; +} + +export function useSubsquidNetwork(): [NetworkName, (app: NetworkName) => void] { + const [app, changeApp] = useLocalStorageState('network', { + serializer: localStorageStringSerializer, + defaultValue: defaultApp, + }); + + return [validate(app), changeApp]; +} diff --git a/src/network/useSwitchNetwork.ts b/src/network/useSwitchNetwork.ts new file mode 100644 index 0000000..1b51d5c --- /dev/null +++ b/src/network/useSwitchNetwork.ts @@ -0,0 +1,55 @@ +import { useCallback, useEffect } from 'react'; + +import { useSnackbar } from 'notistack'; +import { useAccount, useDisconnect, useNetwork } from 'wagmi'; + +import { SQD_DECIMALS, SQD_TOKEN } from '@api/contracts/consts.ts'; +import { useContracts } from '@network/useContracts.ts'; + +import { chains } from './config.ts'; + +export function useSwitchNetwork() { + const contracts = useContracts(); + const { isConnected, connector } = useAccount(); + const { chain } = useNetwork(); + const { disconnect } = useDisconnect(); + const { enqueueSnackbar } = useSnackbar(); + + const importMetamaskSqdToken = useCallback(async () => { + if (!connector) return; + + const provider = await connector.getProvider(); + + let tokenImported = false; + try { + const wasAdded = await provider.request({ + method: 'wallet_watchAsset', + params: { + type: 'ERC20', + options: { + address: contracts.SQD, + symbol: SQD_TOKEN, + decimals: SQD_DECIMALS, + }, + }, + }); + + tokenImported = !!wasAdded; + } catch {} + + if (!tokenImported) { + enqueueSnackbar('Adding tSQD to your MetaMask account will allow you track balance.', { + title: 'Metamask', + variant: 'subsquid', + severity: 'warning', + }); + } + }, [connector, enqueueSnackbar]); + + useEffect(() => { + if (!isConnected) return; + else if (chains[0].id === chain?.id) return; + + disconnect(); + }, [chain?.id, disconnect, isConnected]); +} diff --git a/src/pages/GatewayPage/AddNewGateway.tsx b/src/pages/GatewayPage/AddNewGateway.tsx new file mode 100644 index 0000000..d4d6fd3 --- /dev/null +++ b/src/pages/GatewayPage/AddNewGateway.tsx @@ -0,0 +1,160 @@ +import React, { useEffect } from 'react'; + +import { LoadingButton } from '@mui/lab'; +import { Box } from '@mui/material'; +import { useFormik } from 'formik'; +import { useNavigate } from 'react-router-dom'; + +import { useRegisterGateway } from '@api/contracts/gateway-registration/useRegisterGateway'; +import { useMySources } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { Card } from '@components/Card'; +import { Form, FormikSwitch, FormikTextInput, FormRow } from '@components/Form'; +import { FormikSelect } from '@components/Form/FormikSelect'; +import { Loader } from '@components/Loader'; +import { SourceWalletOption } from '@components/SourceWallet'; +import { CenteredPageWrapper, NetworkPageTitle } from '@layouts/NetworkLayout'; + +import { addGatewaySchema } from './gateway-schema'; + +export function AddNewGateway() { + const navigate = useNavigate(); + const { registerGateway, isLoading: isRegistering, error } = useRegisterGateway(); + const { sources, isPending: isDataLoading } = useMySources(); + + const formik = useFormik({ + initialValues: { + name: '', + description: '', + website: '', + public: false, + email: '', + peerId: '', + endpointUrl: '', + source: '', + }, + validationSchema: addGatewaySchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const source = sources.find(s => s.id === values.source); + if (!source) return; + + const castedValues = addGatewaySchema.cast(values); + if (!castedValues.public) { + delete castedValues.email; + } + + const { success } = await registerGateway({ + ...castedValues, + source, + }); + if (!success) return; + + navigate('/profile/gateways'); + }, + }); + + useEffect(() => { + if (isDataLoading) return; + else if (formik.values.source) return; + + const contract = sources[0]; + if (!contract) return; + + formik.setValues({ + ...formik.values, + source: contract.id, + }); + }, [formik, isDataLoading, sources]); + + if (isDataLoading) return ; + + return ( + + + +
+ + + { + return { + label: , + value: s.id, + }; + })} + formik={formik} + /> + + + + + + + + + + + + + {formik.values.public ? ( + <> + + + + + + + + + + + + + + ) : null} + + + + + Register + + + +
+
+ ); +} diff --git a/src/pages/GatewayPage/Gateway.tsx b/src/pages/GatewayPage/Gateway.tsx new file mode 100644 index 0000000..edc0b05 --- /dev/null +++ b/src/pages/GatewayPage/Gateway.tsx @@ -0,0 +1,45 @@ +import React from 'react'; + +import { Divider } from '@mui/material'; +import { Box } from '@mui/system'; +import { useParams, useSearchParams } from 'react-router-dom'; + +import { useGatewayByPeerId } from '@api/subsquid-network-squid/gateways-graphql'; +import { BackButton } from '@components/BackButton'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { CenteredPageWrapper } from '@layouts/NetworkLayout'; + +import { GatewayCard } from './GatewayCard'; +import { GatewayUnregister } from './GatewayUnregister'; + +export const Gateway = ({ backPath }: { backPath: string }) => { + const { peerId } = useParams<{ peerId: string }>(); + const { data: gateway, isLoading } = useGatewayByPeerId(peerId); + + const [searchParams] = useSearchParams(); + + if (isLoading) return ; + else if (!gateway) { + return ( + + Gateway {peerId} not found + + ); + } + + return ( + + + + + + + + + + + + + ); +}; diff --git a/src/pages/GatewayPage/GatewayCard.tsx b/src/pages/GatewayPage/GatewayCard.tsx new file mode 100644 index 0000000..f62a57e --- /dev/null +++ b/src/pages/GatewayPage/GatewayCard.tsx @@ -0,0 +1,78 @@ +import React from 'react'; + +import { Divider, IconButton, Stack, styled } from '@mui/material'; +import { Box } from '@mui/system'; +import { Link } from 'react-router-dom'; + +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { Avatar } from '@components/Avatar'; +import { CopyToClipboard } from '@components/CopyToClipboard'; +import { GatewayStake } from '@pages/GatewayPage/GatewayStake'; +import { GatewayUnstake } from '@pages/GatewayPage/GatewayUnstake'; + +export const PeerIdRow = styled(Box, { + name: 'PeerIdRow', +})(({ theme }) => ({ + marginTop: theme.spacing(0.5), + marginBottom: theme.spacing(1.5), + color: theme.palette.importantLink.main, + fontSize: '0.875rem', +})); + +export const GatewayDescription = styled(Box, { + name: 'GatewayDescription', +})(({ theme }) => ({ + fontSize: '1rem', + color: theme.palette.text.secondary, + lineHeight: 1.8, +})); + +function GatewayTitle({ gateway }: { gateway: BlockchainGateway }) { + return ( + + + {gateway.name || gateway.id} + + + {Number(gateway.totalStaked) > 0 || Number(gateway.pendingStaked) > 0 ? null : ( + + )} + {Number(gateway.totalStaked) > 0 || Number(gateway.pendingStaked) > 0 ? ( + + ) : null} + {/*{gateway.ownedByMe ? (*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/*) : null}*/} + + + ); +} + +export const GatewayCard = ({ gateway }: { gateway: BlockchainGateway }) => { + return ( + + + + + + + {gateway.description} + + + + + + + + + ); +}; diff --git a/src/pages/GatewayPage/GatewayName.tsx b/src/pages/GatewayPage/GatewayName.tsx new file mode 100644 index 0000000..f380ab7 --- /dev/null +++ b/src/pages/GatewayPage/GatewayName.tsx @@ -0,0 +1,35 @@ +import React from 'react'; + +import { Stack, styled } from '@mui/material'; +import { Box } from '@mui/system'; + +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { Avatar } from '@components/Avatar'; +import { CopyToClipboard } from '@components/CopyToClipboard'; +import { PeerIdShort, shortPeerId } from '@components/PeerId'; + +const Name = styled(Box, { + name: 'Name', +})(({ theme }) => ({ + marginBottom: theme.spacing(0.5), + fontWeight: 500, +})); + +export const GatewayName = ({ gateway }: { gateway: BlockchainGateway }) => { + return ( + + + + {gateway.name ? {gateway.name} : null} + + + {shortPeerId(gateway.id)}} + /> + + + + + ); +}; diff --git a/src/pages/GatewayPage/GatewayStake.tsx b/src/pages/GatewayPage/GatewayStake.tsx new file mode 100644 index 0000000..17848a6 --- /dev/null +++ b/src/pages/GatewayPage/GatewayStake.tsx @@ -0,0 +1,176 @@ +import React, { useEffect, useState } from 'react'; + +import { Button, Chip } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +import { useStakeGateway } from '@api/contracts/gateway-registration/useStakeGateway'; +import { formatSqd, fromSqd } from '@api/contracts/utils'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { ContractCallDialog } from '@components/ContractCallDialog'; +import { Form, FormikSelect, FormikSwitch, FormikTextInput, FormRow } from '@components/Form'; +import { Loader } from '@components/Loader'; +import { useMySourceOptions } from '@components/SourceWallet/useMySourceOptions'; + +const MIN_BLOCKS_LOCK = 1000; + +export const stakeSchema = yup.object({ + source: yup.string().label('Source').trim().required('Source is required'), + amount: yup + .number() + .label('Amount') + .moreThan(0) + .required('Amount is required') + .max(yup.ref('max'), ({ max }) => `Amount should be less than ${formatSqd(max)} `), + max: yup.number().label('Max').required('Max is required'), + autoExtension: yup.boolean().label('Auto extend').default(true), + durationBlocks: yup + .number() + .label('Locked blocks duration') + .min(MIN_BLOCKS_LOCK, ({ min }) => `Tokens must be locked at least ${min} blocks`) + .required('Lock min blocks is required'), +}); + +export function GatewayStake({ gateway }: { gateway: BlockchainGateway }) { + const { stakeToGateway, error, isLoading } = useStakeGateway(); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const { + sources, + options, + isPending: isSourceLoading, + } = useMySourceOptions({ + enabled: open, + sourceDisabled: s => new Decimal(s.balance).lessThanOrEqualTo(0), + }); + + const formik = useFormik({ + initialValues: { + source: '', + amount: 0, + max: 0, + autoExtension: false, + durationBlocks: MIN_BLOCKS_LOCK, + }, + validationSchema: stakeSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const wallet = sources.find(w => w?.id === values.source); + if (!wallet) return; + + const { failedReason } = await stakeToGateway({ + gateway, + amount: values.amount, + durationBlocks: values.durationBlocks, + autoExtension: values.autoExtension, + wallet, + }); + + if (!failedReason) { + handleClose(); + } + }, + }); + + useEffect(() => { + if (isSourceLoading) return; + else if (formik.values.source) return; + + const source = + sources.find(c => new Decimal(c.balance).greaterThanOrEqualTo(0)) || sources?.[0]; + if (!source) return; + + formik.setValues({ + ...formik.values, + source: source.id, + max: fromSqd(source.balance).toNumber(), + }); + }, [formik, isSourceLoading, sources]); + + return ( + <> + + { + if (!confirmed) return handleClose(); + + formik.handleSubmit(); + }} + loading={isLoading} + confirmButtonText="Get CU" + > + {isSourceLoading ? ( + + ) : ( +
+ + { + const wallet = sources.find(w => w?.id === e.target.value); + if (!wallet) return; + + formik.setFieldValue('source', wallet.id); + + const balance = fromSqd(wallet.balance).toNumber(); + formik.setFieldValue('max', balance); + }} + /> + + + { + formik.setValues({ + ...formik.values, + amount: formik.values.max, + }); + }} + label="Max" + /> + ), + }} + /> + + + + + + + + + + )} +
+ + ); +} diff --git a/src/pages/GatewayPage/GatewayUnregister.tsx b/src/pages/GatewayPage/GatewayUnregister.tsx new file mode 100644 index 0000000..7f5bed2 --- /dev/null +++ b/src/pages/GatewayPage/GatewayUnregister.tsx @@ -0,0 +1,41 @@ +import React from 'react'; + +import { LoadingButton } from '@mui/lab'; +import { Box } from '@mui/material'; +import { useNavigate } from 'react-router-dom'; + +import { useUnregisterGateway } from '@api/contracts/gateway-registration/useUnregisterGateway'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { BlockchainContractError } from '@components/BlockchainContractError'; + +export function GatewayUnregister({ gateway }: { gateway: BlockchainGateway }) { + const navigate = useNavigate(); + const { + unregisterGateway, + error: unregisterError, + isLoading: isUnregistering, + } = useUnregisterGateway(); + + if (!gateway.ownedByMe) return null; + + return ( + + { + const { failedReason } = await unregisterGateway({ gateway }); + + if (!failedReason) { + navigate('/profile/gateways'); + } + }} + variant="contained" + color="error" + > + Unregister + + + + + ); +} diff --git a/src/pages/GatewayPage/GatewayUnstake.tsx b/src/pages/GatewayPage/GatewayUnstake.tsx new file mode 100644 index 0000000..5352161 --- /dev/null +++ b/src/pages/GatewayPage/GatewayUnstake.tsx @@ -0,0 +1,145 @@ +import React, { useMemo, useState } from 'react'; + +import { Button } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +import { useUnstakeGateway } from '@api/contracts/gateway-registration/useUnstakeGateway'; +import { formatSqd } from '@api/contracts/utils'; +import { useMySources } from '@api/subsquid-network-squid'; +import { BlockchainGateway } from '@api/subsquid-network-squid/gateways-graphql'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { ContractCallDialog } from '@components/ContractCallDialog'; +import { Form, FormikSelect, FormRow } from '@components/Form'; +import { Loader } from '@components/Loader'; +import { SourceWalletOption } from '@components/SourceWallet'; + +export const stakeSchema = yup.object({ + source: yup.string().label('Source').trim().required('Source is required'), + // amount: yup + // .number() + // .label('Amount') + // .moreThan(0) + // .required('Amount is required') + // .max(yup.ref('max'), ({ max }) => `Amount should be less than ${formatSqd(max)} `), +}); + +export function GatewayUnstake({ gateway }: { gateway: BlockchainGateway }) { + const { unstakeFromGateway, error, isLoading } = useUnstakeGateway(); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const { sources, isPending: isSourceLoading } = useMySources({ + enabled: open, + }); + + const options = useMemo(() => { + return [ + { + label: ( + + ), + value: gateway.owner.id, + disabled: new Decimal(gateway.totalStaked).lessThanOrEqualTo(0), + }, + ]; + }, [gateway]); + + const formik = useFormik({ + initialValues: { + source: gateway.owner.id, + max: Number(gateway.totalStaked), + }, + validationSchema: stakeSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const wallet = sources.find(w => w?.id === values.source); + if (!wallet) return; + + const { failedReason } = await unstakeFromGateway({ + gateway, + }); + + if (!failedReason) { + handleClose(); + } + }, + }); + + return ( + <> + + { + if (!confirmed) return handleClose(); + + formik.handleSubmit(); + }} + loading={isLoading} + confirmColor="error" + > + {isSourceLoading ? ( + + ) : ( +
+ + + + {/**/} + {/* {*/} + {/* formik.setValues({*/} + {/* ...formik.values,*/} + {/* amount: fromSqd(gateway.totalStaked).toNumber(),*/} + {/* });*/} + {/* }}*/} + {/* label="Max"*/} + {/* />*/} + {/* ),*/} + {/* }}*/} + {/* />*/} + {/**/} + + + )} +
+ + ); +} diff --git a/src/pages/GatewayPage/gateway-schema.ts b/src/pages/GatewayPage/gateway-schema.ts new file mode 100644 index 0000000..a6c3f38 --- /dev/null +++ b/src/pages/GatewayPage/gateway-schema.ts @@ -0,0 +1,36 @@ +import * as yup from 'yup'; + +export const editGatewaySchema = yup.object({ + name: yup.string().label('Name').max(255).trim().required('Gateway name is required'), + public: yup.boolean(), + endpointUrl: yup + .string() + .when('public', { + is: true, + then: schema => schema.required('Public endpoint URL is required'), + }) + .label('Endpoint URL') + .trim(), + description: yup.string().label('Description').max(2000).trim(), + email: yup + .string() + .label('Email address') + .trim() + .when('public', { + is: true, + then: schema => schema.required('Email is required'), + }), + website: yup.string().label('Website').trim(), +}); + +export const addGatewaySchema = editGatewaySchema.shape({ + peerId: yup + .string() + .matches(/^[a-z1-9]+$/i, 'Peer ID must contains only base 58 symbols') + .max(52) + .min(52) + .label('Peer ID') + .trim() + .required('Peer ID is required'), + // vestingContract: yup.string().label('Vesting contract address').trim(), +}); diff --git a/src/pages/MaintenancePage/MaintenancePage.tsx b/src/pages/MaintenancePage/MaintenancePage.tsx new file mode 100644 index 0000000..07c7e39 --- /dev/null +++ b/src/pages/MaintenancePage/MaintenancePage.tsx @@ -0,0 +1,141 @@ +import React from 'react'; + +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; +import { Box, styled, useMediaQuery, useTheme } from '@mui/material'; + +import { Card } from '@components/Card'; +import { ConfettiBigIcon } from '@icons/ConfettiBigIcon'; + +const Line = styled(Box, { + name: 'Line', +})(({ theme }) => ({ + margin: theme.spacing(2, 0), + display: 'flex', + alignItems: 'center', + '& svg': { + marginLeft: -2, + marginRight: 5, + }, + '& a': { + color: theme.palette.importantLink.main, + [theme.breakpoints.down('xs')]: { + flex: 1, + lineHeight: 1.2, + }, + }, +})); + +export function MaintenancePage() { + const theme = useTheme(); + const mobile = useMediaQuery(theme.breakpoints.down('xxs')); + + return ( + + + + + + + + Testnet phase 1.0 is over! Great job! + + Phase 2.0 starts on 15.01.2024 + + + Meanwhile you can complete the following quests and get rewarded: + + + + Migrate PoolTogether Subgraph + +  2250 tSQD + + + + + + Migrate Friendtech Subgraph + +  750 tSQD + + + + + Migrate Pepe Subgraph + +  750 tSQD + + + + + Migrate Tornado Cash Subgraph + +  750 tSQD + + + + + Migrate Lens Subgraph + +  2250 tSQD + + + + + Migrate Farcaster Subgraph + +  1250 tSQD + + + + + ); +} diff --git a/src/pages/NetworkDashboard/NetworkDashboardPage.tsx b/src/pages/NetworkDashboard/NetworkDashboardPage.tsx new file mode 100644 index 0000000..001371e --- /dev/null +++ b/src/pages/NetworkDashboard/NetworkDashboardPage.tsx @@ -0,0 +1,22 @@ +import React from 'react'; + +import { Box, styled } from '@mui/material'; + +import { CenteredPageWrapper, PageTitle } from '@layouts/NetworkLayout'; + +const PanelsWrapper = styled(Box)(({ theme: { spacing } }) => ({ + display: 'flex', + flexDirection: 'column', + gap: spacing(10), +})); + +const NetworkDashboardPage = () => { + return ( + + + + + ); +}; + +export default NetworkDashboardPage; diff --git a/src/pages/NotFound/NotFoundPage.tsx b/src/pages/NotFound/NotFoundPage.tsx new file mode 100644 index 0000000..664c9ac --- /dev/null +++ b/src/pages/NotFound/NotFoundPage.tsx @@ -0,0 +1,5 @@ +import React from 'react'; + +export function NotFoundPage() { + return
Page not found
; +} diff --git a/src/pages/NotFound/index.ts b/src/pages/NotFound/index.ts new file mode 100644 index 0000000..642c600 --- /dev/null +++ b/src/pages/NotFound/index.ts @@ -0,0 +1 @@ +export { NotFoundPage } from './NotFoundPage'; diff --git a/src/pages/Profile/MyAssets.tsx b/src/pages/Profile/MyAssets.tsx new file mode 100644 index 0000000..35b9f34 --- /dev/null +++ b/src/pages/Profile/MyAssets.tsx @@ -0,0 +1,111 @@ +import React, { useMemo } from 'react'; + +import { Box, Chip, Stack } from '@mui/material'; +import { Cell, Pie, PieChart } from 'recharts'; + +import { formatSqd, fromSqd } from '@api/contracts/utils'; +import { useMyAssets } from '@api/subsquid-network-squid'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { NetworkPageTitle } from '@layouts/NetworkLayout'; +import { ClaimButton } from '@pages/WorkersPage/ClaimButton'; + +export function MyAssets() { + const { isLoading, assets } = useMyAssets(); + + const data = useMemo( + () => [ + { + name: 'Available', + value: fromSqd(assets.balance).toNumber(), + background: '#E3F7E0', + color: '#55AD44', + }, + { + name: 'Claimable', + value: fromSqd(assets.claimable).toNumber(), + background: '#D1E3FF', + color: '#3880EC', + }, + { + name: 'Bonded', + value: fromSqd(assets.bonded).toNumber(), + background: '#EBEBEB', + color: '#2B2B2B', + }, + { + name: 'Delegated', + value: fromSqd(assets.delegated).toNumber(), + background: '#E8CDEB', + color: '#B721FD', + }, + ], + [assets], + ); + + if (isLoading) return ; + + return ( + + } /> + + + + + {data.map(d => { + return ( + + + {formatSqd(d.value, 2)} + + ); + })} + + + + + {data.map(i => ( + { + e.preventDefault(); + }} + key={i.name} + fill={i.background} + /> + ))} + + + + + Total + + {formatSqd(assets.total, 2)} + + + + + + + + ); +} diff --git a/src/pages/Profile/MyDelegations.tsx b/src/pages/Profile/MyDelegations.tsx new file mode 100644 index 0000000..a04d2c3 --- /dev/null +++ b/src/pages/Profile/MyDelegations.tsx @@ -0,0 +1,68 @@ +import React from 'react'; + +import { percentFormatter } from '@lib/formatters/formatters.ts'; +import { Box, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; +import { useNavigate } from 'react-router-dom'; + +import { formatSqd } from '@api/contracts/utils'; +import { useMyDelegations } from '@api/subsquid-network-squid'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { BorderedTable } from '@components/Table/BorderedTable'; +import { NetworkPageTitle } from '@layouts/NetworkLayout'; +import { WorkerStatus } from '@pages/WorkersPage/WorkerStatus'; + +import { WorkerName } from '../WorkersPage/WorkerName'; + +export function MyDelegations() { + const navigate = useNavigate(); + const { delegations, isLoading } = useMyDelegations(); + + if (isLoading) return ; + + return ( + + + {delegations.length ? ( + + + + Worker + Status + Uptime last 24h + Uptime last 90 days + APR + My delegation + + + + {delegations.map(d => { + return ( + + navigate(`/profile/workers/${d.worker.peerId}?backPath=/profile/delegations`) + } + className="hoverable" + key={d.worker.peerId} + > + + + + + + + {percentFormatter(d.worker.uptime24Hours)} + {percentFormatter(d.worker.uptime90Days)} + {percentFormatter(d.worker.stakerApr)} + {formatSqd(d.deposit)} + + ); + })} + + + ) : ( + No items to show + )} + + ); +} diff --git a/src/pages/Profile/MyGateways.tsx b/src/pages/Profile/MyGateways.tsx new file mode 100644 index 0000000..fc49aee --- /dev/null +++ b/src/pages/Profile/MyGateways.tsx @@ -0,0 +1,67 @@ +import React from 'react'; + +import { dateFormat } from '@i18n'; +import { Box, Button, Stack, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; +import { Link, useNavigate } from 'react-router-dom'; + +import { formatSqd } from '@api/contracts/utils'; +import { useMyGateways } from '@api/subsquid-network-squid/gateways-graphql'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { BorderedTable } from '@components/Table/BorderedTable'; +import { NetworkPageTitle } from '@layouts/NetworkLayout'; +import { GatewayName } from '@pages/GatewayPage/GatewayName'; + +export function MyGateways() { + const navigate = useNavigate(); + const { data, isLoading } = useMyGateways(); + + if (isLoading) return ; + + return ( + + + + + + + } + /> + {data.length ? ( + + + + Gateway + Pending lock + Locked + Created + + + + {data.map(gateway => { + return ( + navigate(`/profile/gateways/${gateway.id}`)} + className="hoverable" + key={gateway.id} + > + + + + {formatSqd(gateway.pendingStaked)} + {formatSqd(gateway.totalStaked)} + {dateFormat(gateway.createdAt)} + + ); + })} + + + ) : ( + No items to show + )} + + ); +} diff --git a/src/pages/Profile/MyWorkers.tsx b/src/pages/Profile/MyWorkers.tsx new file mode 100644 index 0000000..b622b80 --- /dev/null +++ b/src/pages/Profile/MyWorkers.tsx @@ -0,0 +1,77 @@ +import React from 'react'; + +import { percentFormatter } from '@lib/formatters/formatters.ts'; +import { Box, Button, Stack, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; +import { Link, useNavigate } from 'react-router-dom'; + +import { formatSqd } from '@api/contracts/utils'; +import { useMyWorkers } from '@api/subsquid-network-squid'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { BorderedTable } from '@components/Table/BorderedTable'; +import { NetworkPageTitle } from '@layouts/NetworkLayout'; +import { WorkerStatus } from '@pages/WorkersPage/WorkerStatus'; + +import { WorkerName } from '../WorkersPage/WorkerName'; + +export function MyWorkers() { + const navigate = useNavigate(); + const { data, isLoading } = useMyWorkers(); + + if (isLoading) return ; + + return ( + + + + + + + } + /> + {data.length ? ( + + + + Worker + Status + Uptime last 24 hours + Uptime last 90 days + APR + Total delegated + Claimable rewards + + + + {data.map(worker => { + return ( + navigate(`/profile/workers/${worker.peerId}`)} + className="hoverable" + key={worker.peerId} + > + + + + + + + {percentFormatter(worker.uptime24Hours)} + {percentFormatter(worker.uptime90Days)} + {percentFormatter(worker.apr)} + {formatSqd(worker.totalDelegations.total)} + {formatSqd(worker.claimableReward)} + + ); + })} + + + ) : ( + No items to show + )} + + ); +} diff --git a/src/pages/Profile/ProfilePage.tsx b/src/pages/Profile/ProfilePage.tsx new file mode 100644 index 0000000..7c93235 --- /dev/null +++ b/src/pages/Profile/ProfilePage.tsx @@ -0,0 +1,86 @@ +import React from 'react'; + +import { Box, Button, Stack, styled, Tab } from '@mui/material'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { Outlet } from 'react-router-dom'; +import { useAccount } from 'wagmi'; + +import { PageTabs } from '@components/PageTabs'; +import { WalletIcon } from '@icons/WalletIcon'; +import { CenteredPageWrapper } from '@layouts/NetworkLayout'; + +export const DelegationTab = styled(Tab)(({ theme }) => ({ + textTransform: 'none', + background: 'transparent', + + '&:hover': { + color: theme.palette.text.primary, + }, + '&.selected': { + color: theme.palette.text.primary, + background: 'transparent', + fontWeight: 500, + }, + '&.Mui-disabled': { + opacity: 0.3, + }, +})); + +export function ProfilePage() { + const { isConnected } = useAccount(); + const { openConnectModal } = useConnectModal(); + + if (!isConnected) { + return ( + + + + Connect your wallet to proceed + + + + + ); + } + + return ( + + + + + + + + + ); +} diff --git a/src/pages/Profile/helpers.ts b/src/pages/Profile/helpers.ts new file mode 100644 index 0000000..c114426 --- /dev/null +++ b/src/pages/Profile/helpers.ts @@ -0,0 +1,38 @@ +export const shortenP2p = (p2pAddress: string) => { + if (p2pAddress.length < 5) { + return '****'; + } + + return `${p2pAddress.slice(0, 4)}****${p2pAddress.slice(-4)}`; +}; + +export const formatBytes = (bytes: string | number) => { + const bytesNumber = Number(bytes); + if (bytesNumber >= 1e12) { + return `${Math.round(bytesNumber * 1e-12)} TB`; + } else if (bytesNumber >= 1e9) { + return `${Math.round(bytesNumber * 1e-9)} GB`; + } else { + return `${Math.round(bytesNumber * 1e-6)} MB`; + } +}; + +export function stringToColor(string: string) { + let hash = 0; + let i; + + /* eslint-disable no-bitwise */ + for (i = 0; i < string.length; i += 1) { + hash = string.charCodeAt(i) + ((hash << 5) - hash); + } + + let color = '#'; + + for (i = 0; i < 3; i += 1) { + const value = (hash >> (i * 8)) & 0xff; + color += `00${value.toString(16)}`.slice(-2); + } + /* eslint-enable no-bitwise */ + + return color; +} diff --git a/src/pages/WorkersPage/AddNewWorker.tsx b/src/pages/WorkersPage/AddNewWorker.tsx new file mode 100644 index 0000000..b120d83 --- /dev/null +++ b/src/pages/WorkersPage/AddNewWorker.tsx @@ -0,0 +1,131 @@ +import React, { useEffect } from 'react'; + +import { LoadingButton } from '@mui/lab'; +import { Box } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import { useNavigate } from 'react-router-dom'; + +import { useRegisterWorker } from '@api/contracts/worker-registration/useRegisterWorker'; +import { useMySources } from '@api/subsquid-network-squid'; +import { useNetworkSettings } from '@api/subsquid-network-squid/settings-graphql'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { Card } from '@components/Card'; +import { Form, FormikTextInput, FormRow } from '@components/Form'; +import { FormikSelect } from '@components/Form/FormikSelect'; +import { Loader } from '@components/Loader'; +import { SourceWalletOption } from '@components/SourceWallet'; +import { CenteredPageWrapper, NetworkPageTitle } from '@layouts/NetworkLayout'; + +import { addWorkerSchema } from './worker-schema'; + +export function AddNewWorker() { + const navigate = useNavigate(); + const { registerWorker, isLoading, error } = useRegisterWorker(); + const { bondAmount, isPending: isSettingsLoading } = useNetworkSettings(); + const { vestingContracts, isPending: isContractsLoading } = useMySources(); + + const formik = useFormik({ + initialValues: { + name: '', + description: '', + website: '', + email: '', + peerId: '', + vestingContract: '', + }, + validationSchema: addWorkerSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const { success } = await registerWorker(values); + if (!success) return; + + navigate('/profile/workers'); + }, + }); + + useEffect(() => { + if (isContractsLoading) return; + else if (formik.values.vestingContract) return; + else if (isSettingsLoading) return; + + const contract = vestingContracts.find( + c => new Decimal(c.balance).greaterThanOrEqualTo(bondAmount) || vestingContracts[0], + ); + if (!contract) return; + + formik.setValues({ + ...formik.values, + vestingContract: contract.id, + }); + }, [formik, isContractsLoading, vestingContracts, bondAmount, isSettingsLoading]); + + if (isContractsLoading) return ; + + return ( + + + {/*Worker registration Lorem ipsum dolor sit amet consectetur. Learn more quis tempus proin. Id*/} + {/*rhoncus cras nibh vitae in quis porttitor cum laoreet. Integer consectetur lacus at netus.*/} + {/*Tincidunt aliquam.*/} + + +
+ + + { + return { + label: , + value: s.id, + disabled: new Decimal(s.balance).lessThan(bondAmount), + }; + })} + formik={formik} + /> + + + + + + + + + + + + + + + + + + + + + Approve transaction + + + +
+
+ ); +} diff --git a/src/pages/WorkersPage/ClaimButton.tsx b/src/pages/WorkersPage/ClaimButton.tsx new file mode 100644 index 0000000..88b426b --- /dev/null +++ b/src/pages/WorkersPage/ClaimButton.tsx @@ -0,0 +1,144 @@ +import React, { useEffect, useState } from 'react'; + +import { Button, TableBody, TableCell, TableRow } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +import { useClaim } from '@api/contracts/claim'; +import { ClaimType, useMyClaimsAvailable } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { ContractCallDialog } from '@components/ContractCallDialog'; +import { Form, FormikSelect, FormRow } from '@components/Form'; +import { Loader } from '@components/Loader'; +import { SourceWalletOption } from '@components/SourceWallet'; +import { TableList } from '@components/Table/TableList.tsx'; +import { WorkerName } from '@pages/WorkersPage/WorkerName'; + +export const claimSchema = yup.object({ + source: yup.string().label('Source').trim().required('Source is required'), +}); + +export function ClaimButton() { + const { claim, error, isLoading } = useClaim(); + const formik = useFormik({ + initialValues: { + source: '', + amount: 0, + max: 0, + }, + validationSchema: claimSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const wallet = sources.find(w => w?.id === values.source); + if (!wallet) return; + + const { failedReason } = await claim({ + wallet, + }); + + if (!failedReason) { + handleClose(); + } + }, + }); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const { + claims, + hasClaimsAvailable, + sources, + isLoading: isClaimsLoading, + currentSourceTotalClaimsAvailable, + } = useMyClaimsAvailable({ + source: formik.values.source, + }); + + const options = sources.map(s => { + return { + label: , + value: s.id, + disabled: new Decimal(s.balance).lessThanOrEqualTo(0), + }; + }); + + useEffect(() => { + if (isClaimsLoading) return; + else if (formik.values.source) return; + + const source = sources.find(c => new Decimal(c.balance).greaterThan(0)) || sources?.[0]; + if (!source) return; + + formik.setValues({ + ...formik.values, + source: source.id, + }); + }, [formik, isClaimsLoading, sources]); + + return ( + <> + + { + if (!confirmed) return handleClose(); + + formik.handleSubmit(); + }} + loading={isLoading} + confirmColor="success" + disableConfirmButton={currentSourceTotalClaimsAvailable.lessThanOrEqualTo(0)} + > + {isClaimsLoading ? ( + + ) : ( +
+ + + + + + + {claims.map(w => { + return ( + + + + + + {w.type === ClaimType.Worker ? 'Worker reward' : 'Delegation reward'} + + {w.claimableRewardFormatted} + + ); + })} + + + + + + )} +
+ + ); +} diff --git a/src/pages/WorkersPage/MyWorkerStat.tsx b/src/pages/WorkersPage/MyWorkerStat.tsx new file mode 100644 index 0000000..5999d43 --- /dev/null +++ b/src/pages/WorkersPage/MyWorkerStat.tsx @@ -0,0 +1,44 @@ +import React from 'react'; + +import { Box, Divider, Stack, styled } from '@mui/material'; + +import { formatSqd } from '@api/contracts/utils'; +import { BlockchainApiWorker } from '@api/subsquid-network-squid'; +import { Card } from '@components/Card'; + +export const MyWorkerLabel = styled(Box, { + name: 'MyWorkerLabel', +})(({ theme }) => ({ + color: theme.palette.text.primary, +})); +export const MyWorkerValue = styled(Box, { + name: 'MyWorkerValue', +})(({ theme }) => ({ + color: theme.palette.text.secondary, +})); + +export const MyWorkerStat = ({ worker }: { worker: BlockchainApiWorker }) => { + return ( + + } + spacing={3} + direction="row" + justifyContent="space-between" + > + + My Bond + {formatSqd(worker.bond)} + + + My total rewards + {formatSqd(worker.claimedReward)} + + + Claimable rewards + {formatSqd(worker.claimableReward)} + + + + ); +}; diff --git a/src/pages/WorkersPage/StatusBar.tsx b/src/pages/WorkersPage/StatusBar.tsx new file mode 100644 index 0000000..f6d33ee --- /dev/null +++ b/src/pages/WorkersPage/StatusBar.tsx @@ -0,0 +1,87 @@ +import React from 'react'; + +import { nonNullable } from '@lib/array'; +import { percentFormatter } from '@lib/formatters/formatters.ts'; +import { Box, Palette, styled, useTheme } from '@mui/material'; + +import { StyledTooltip } from '@components/StyledTooltip'; + +interface UptimeItem { + tooltipText: string; + backgroundColor: string; +} + +const statusBarWidth = 6; + +export const StyledBar = styled(Box)(({ theme: { palette } }) => ({ + width: `${statusBarWidth}px`, + height: '34px', + borderRadius: '1px', + cursor: 'pointer', + + '&:hover': { + background: palette.grayScale.gray500, + }, +})); + +const setUptimeItem = (palette: Palette, uptime?: number): UptimeItem => { + if (!nonNullable(uptime)) { + return { + tooltipText: 'No data available for this period.', + backgroundColor: palette.networkStatus.noData, + }; + } + + if (uptime >= 99) { + return { + tooltipText: `Uptime ${percentFormatter(uptime)}`, + backgroundColor: palette.networkStatus.online, + }; + } + + if (uptime >= 90) { + return { + tooltipText: `Uptime ${percentFormatter(uptime)}`, + backgroundColor: palette.networkStatus.downtime, + }; + } + + return { + tooltipText: `Uptime ${percentFormatter(uptime)}`, + backgroundColor: palette.networkStatus.offline, + }; +}; + +const PopperProps = { + modifiers: [ + { + name: 'offset', + options: { + offset: [0, -8], + }, + }, + ], +}; + +export const StatusBar = ({ dayUptime }: { dayUptime: { date: string; uptime?: number } }) => { + const { palette } = useTheme(); + + const uptimeItem = setUptimeItem(palette, dayUptime.uptime); + const tooltipContent = ( + + {dayUptime.date ? {dayUptime.date} : null} + {uptimeItem.tooltipText} + + ); + + return ( + + + + ); +}; diff --git a/src/pages/WorkersPage/UptimeGraph.tsx b/src/pages/WorkersPage/UptimeGraph.tsx new file mode 100644 index 0000000..76a3f47 --- /dev/null +++ b/src/pages/WorkersPage/UptimeGraph.tsx @@ -0,0 +1,82 @@ +import React, { useMemo } from 'react'; + +import { dateFormat } from '@i18n'; +import { percentFormatter } from '@lib/formatters/formatters.ts'; +import { Box, styled, useMediaQuery, useTheme } from '@mui/material'; +import { keyBy } from 'lodash-es'; + +import { BlockchainApiFullWorker, useWorkerDaysUptimeById } from '@api/subsquid-network-squid'; + +import { StatusBar } from './StatusBar'; + +const StyledTitle = styled(Box)(({ theme: { spacing } }) => ({ + lineHeight: '1.875rem', + marginBottom: spacing(2), +})); + +const StyledGraph = styled(Box)(({ theme: { spacing } }) => ({ + display: 'flex', + justifyContent: 'space-between', + marginBottom: spacing(1), +})); + +const StyledNotes = styled(Box)(({ theme: { spacing } }) => ({ + display: 'flex', + justifyContent: 'space-between', + fontSize: '.875rem', + lineHeight: '1.25rem', + opacity: '.8', + marginBottom: spacing(2), +})); + +const oneDayInMilliseconds = 24 * 60 * 60 * 1000; + +export const UptimeGraph = ({ worker }: { worker: BlockchainApiFullWorker }) => { + const theme = useTheme(); + const w1200 = useMediaQuery(theme.breakpoints.up(1200)); + const w1000 = useMediaQuery(theme.breakpoints.up(1000)); + const w600 = useMediaQuery(theme.breakpoints.up(600)); + + const snapshots = useWorkerDaysUptimeById(worker.id); + + const displayedDays = w1200 ? 90 : w1000 ? 60 : w600 ? 45 : 30; + + const data = useMemo(() => { + const uptimes = keyBy( + snapshots.data.map(s => ({ + uptime: s.uptime, + date: dateFormat(s.timestamp), + })), + 'date', + ); + + return new Array(90) + .fill('') + .map((_, index) => { + const date = dateFormat(new Date(new Date().getTime() - oneDayInMilliseconds * index))!; + + return { + uptime: uptimes[date]?.uptime, + date, + }; + }) + .reverse() + .slice(-displayedDays); + }, [snapshots.data, displayedDays]); + + return ( + + {displayedDays} days uptime + + {data.map(d => ( + + ))} + + +
{displayedDays} days ago
+
{percentFormatter(worker.uptime90Days)} uptime
+
Today
+
+
+ ); +}; diff --git a/src/pages/WorkersPage/Worker.tsx b/src/pages/WorkersPage/Worker.tsx new file mode 100644 index 0000000..58a02a0 --- /dev/null +++ b/src/pages/WorkersPage/Worker.tsx @@ -0,0 +1,72 @@ +import React from 'react'; + +import { Divider } from '@mui/material'; +import { Box } from '@mui/system'; +import { useParams, useSearchParams } from 'react-router-dom'; + +import { useWorkerByPeerId } from '@api/subsquid-network-squid'; +import { BackButton } from '@components/BackButton'; +import { Card } from '@components/Card'; +import { Loader } from '@components/Loader'; +import { CenteredPageWrapper } from '@layouts/NetworkLayout'; +import { WorkerUnregister } from '@pages/WorkersPage/WorkerUnregister'; + +import { MyWorkerStat } from './MyWorkerStat'; +import { WorkerCard } from './WorkerCard'; +import { WorkerStatistics } from './WorkerStatistics'; + +const sx = { + background: '#000', + color: '#fff', + + '&:hover': { + background: '#333', + color: '#fff', + }, +}; + +const Worker = ({ backPath }: { backPath: string }) => { + const { peerId } = useParams<{ peerId: string }>(); + const { data: worker, isPending } = useWorkerByPeerId(peerId); + + const [searchParams] = useSearchParams(); + + if (isPending) return ; + else if (!worker) { + return ( + + Worker {peerId} not found + + ); + } + + return ( + + + + + + + + {worker.ownedByMe ? ( + + + + ) : null} + + + + + + {worker.ownedByMe ? ( + <> + + + + ) : null} + + + ); +}; + +export default Worker; diff --git a/src/pages/WorkersPage/WorkerCard.tsx b/src/pages/WorkersPage/WorkerCard.tsx new file mode 100644 index 0000000..14299e2 --- /dev/null +++ b/src/pages/WorkersPage/WorkerCard.tsx @@ -0,0 +1,114 @@ +import React from 'react'; + +import { dateFormat } from '@i18n'; +import { Divider, IconButton, Stack, styled } from '@mui/material'; +import { Box } from '@mui/system'; +import { Link } from 'react-router-dom'; + +import { + BlockchainApiFullWorker, + WorkerStatus as BlockchainWorkerStatus, +} from '@api/subsquid-network-squid'; +import { Avatar } from '@components/Avatar'; +import { CopyToClipboard } from '@components/CopyToClipboard'; +import { EditIcon } from '@icons/EditIcon'; + +import { WorkerDelegate } from './WorkerDelegate'; +import { WorkerStatus } from './WorkerStatus'; +import { WorkerUndelegate } from './WorkerUndelegate'; + +export const WorkerDescLabel = styled(Box, { + name: 'WorkerDescLabel', +})(({ theme }) => ({ + color: theme.palette.text.primary, +})); +export const WorkerDescValue = styled(Box, { + name: 'WorkerDescValue', +})(({ theme }) => ({ + color: theme.palette.text.secondary, +})); +export const PeerIdRow = styled(Box, { + name: 'PeerIdRow', +})(({ theme }) => ({ + marginTop: theme.spacing(0.5), + marginBottom: theme.spacing(1.5), + color: theme.palette.importantLink.main, + fontSize: '0.875rem', +})); + +export const WorkerDescription = styled(Box, { + name: 'WorkerDescription', +})(({ theme }) => ({ + fontSize: '1rem', + color: theme.palette.text.secondary, + lineHeight: 1.8, +})); + +function WorkerTitle({ worker }: { worker: BlockchainApiFullWorker }) { + return ( + + {worker.name || worker.peerId} + + + + + {worker.status === BlockchainWorkerStatus.Active ? ( + + ) : null} + {worker.myDelegationsTotal.greaterThan(0) ? : null} + {worker.ownedByMe ? ( + + + + + + ) : null} + + + ); +} + +export const WorkerCard = ({ worker }: { worker: BlockchainApiFullWorker }) => { + return ( + + + + + + + {worker.description} + + + + + + + + + {/**/} + {/* Website*/} + {/* {worker.website || '-'}*/} + {/**/} + {/**/} + {/* Contact*/} + {/* {worker.email || '-'}*/} + {/**/} + {/**/} + {/* Version*/} + {/* -*/} + {/**/} + + Joined + {dateFormat(worker.createdAt)} + + + + + + ); +}; diff --git a/src/pages/WorkersPage/WorkerDelegate.tsx b/src/pages/WorkersPage/WorkerDelegate.tsx new file mode 100644 index 0000000..2cf9c25 --- /dev/null +++ b/src/pages/WorkersPage/WorkerDelegate.tsx @@ -0,0 +1,150 @@ +import React, { useEffect, useState } from 'react'; + +import { Button, Chip } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +import { useWorkerDelegate } from '@api/contracts/staking'; +import { formatSqd, humanReadableSqd, toSqd } from '@api/contracts/utils'; +import { BlockchainApiWorker } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { ContractCallDialog } from '@components/ContractCallDialog'; +import { Form, FormikSelect, FormikTextInput, FormRow } from '@components/Form'; +import { Loader } from '@components/Loader'; +import { useMySourceOptions } from '@components/SourceWallet/useMySourceOptions'; + +export const delegateSchema = yup.object({ + source: yup.string().label('Source').trim().required('Source is required'), + amount: yup + .number() + .label('Amount') + .moreThan(0) + .required('Amount is required') + .max(yup.ref('max'), ({ max }) => `Amount should be less than ${formatSqd(max)} `), + max: yup.number().label('Max').required('Max is required'), +}); + +export function WorkerDelegate({ worker }: { worker: BlockchainApiWorker }) { + const { delegateToWorker, error, isLoading } = useWorkerDelegate(); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const { + sources, + options, + isPending: isSourceLoading, + } = useMySourceOptions({ + enabled: open, + sourceDisabled: s => new Decimal(s.balance).lessThanOrEqualTo(0), + }); + + const formik = useFormik({ + initialValues: { + source: '', + amount: '0', + max: '0', + }, + validationSchema: delegateSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const wallet = sources.find(w => w?.id === values.source); + if (!wallet) return; + + const { failedReason } = await delegateToWorker({ + worker, + amount: toSqd(values.amount), + wallet, + }); + + if (!failedReason) { + handleClose(); + } + }, + }); + + useEffect(() => { + if (isSourceLoading) return; + else if (formik.values.source) return; + + const source = + sources.find(c => new Decimal(c.balance).greaterThanOrEqualTo(0)) || sources?.[0]; + if (!source) return; + + formik.setValues({ + ...formik.values, + source: source.id, + max: humanReadableSqd(source.balance), + }); + }, [formik, isSourceLoading, sources]); + + return ( + <> + + { + if (!confirmed) return handleClose(); + + formik.handleSubmit(); + }} + loading={isLoading} + > + {isSourceLoading ? ( + + ) : ( +
+ + { + const wallet = sources.find(w => w?.id === e.target.value); + if (!wallet) return; + + formik.setFieldValue('source', wallet.id); + formik.setFieldValue('max', humanReadableSqd(wallet.balance)); + }} + /> + + + { + formik.setValues({ + ...formik.values, + amount: formik.values.max, + }); + }} + label="Max" + /> + ), + }} + /> + + + + )} +
+ + ); +} diff --git a/src/pages/WorkersPage/WorkerDelegationCapacity.tsx b/src/pages/WorkersPage/WorkerDelegationCapacity.tsx new file mode 100644 index 0000000..b39d901 --- /dev/null +++ b/src/pages/WorkersPage/WorkerDelegationCapacity.tsx @@ -0,0 +1,118 @@ +import React from 'react'; + +import { + Box, + CircularProgress, + circularProgressClasses, + Stack, + styled, + TableBody, + TableCell, + TableRow, +} from '@mui/material'; +import { bindHover, bindPopover, usePopupState } from 'material-ui-popup-state/hooks'; +import HoverPopover from 'material-ui-popup-state/HoverPopover'; + +import { formatSqd } from '@api/contracts/utils'; +import { BlockchainApiWorker } from '@api/subsquid-network-squid'; +import { PopoverContent, PopoverTable } from '@components/Popover'; + +const WorkerCapacityValue = styled(Box, { + name: 'WorkerCapacityValue', +})(({ theme }) => ({ + fontWeight: 700, + color: theme.palette.secondary.contrastText, + lineHeight: 1, +})); + +const DelegationCircularProgress = styled(CircularProgress, { + name: 'DelegationCircularProgress', +})(({ theme }) => ({ + position: 'absolute', + top: 0, + left: 0, + [`& .${circularProgressClasses.circleDeterminate}`]: { + color: theme.palette.secondary.contrastText, + }, +})); + +const DelegationCircularBackground = styled(CircularProgress, { + name: 'DelegationCircularBackground', +})(() => ({ + [`& .${circularProgressClasses.circleDeterminate}`]: { + color: '#CBCBCB', + }, +})); + +const DelegationCircularHolder = styled(Box, { + name: 'DelegationCircularHolder', +})(() => ({ + position: 'relative', + height: 16, + display: 'flex', +})); + +export const WorkerDelegationCapacity = ({ + value: { capacity, utilizedPercent, limit, total }, +}: { + value: BlockchainApiWorker['totalDelegations']; +}) => { + const popupState = usePopupState({ variant: 'popover', popupId: 'delegation' }); + + return ( + + + + + + + {utilizedPercent.equals(0) + ? '0' + : utilizedPercent.lessThan(1) + ? '<1' + : utilizedPercent.toFixed(0)} + % + + + + + + + Delegation capacity + {formatSqd(capacity)} + + + Delegated + {formatSqd(total)} + + + Delegation limit + {formatSqd(limit)} + + + + + + + ); +}; diff --git a/src/pages/WorkersPage/WorkerEdit.tsx b/src/pages/WorkersPage/WorkerEdit.tsx new file mode 100644 index 0000000..738f3d1 --- /dev/null +++ b/src/pages/WorkersPage/WorkerEdit.tsx @@ -0,0 +1,100 @@ +import React from 'react'; + +import { LoadingButton } from '@mui/lab'; +import { Box } from '@mui/material'; +import { useFormik } from 'formik'; +import { useParams } from 'react-router-dom'; + +import { useUpdateWorker } from '@api/contracts/worker-registration/useUpdateWorker'; +import { BlockchainApiFullWorker, useWorkerByPeerId } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { Card } from '@components/Card'; +import { Form, FormikTextInput, FormRow } from '@components/Form'; +import { Loader } from '@components/Loader'; +import { NetworkPageTitle, CenteredPageWrapper } from '@layouts/NetworkLayout'; +import { editWorkerSchema } from '@pages/WorkersPage/worker-schema'; + +function WorkerForm({ worker }: { worker: BlockchainApiFullWorker }) { + const { updateWorker, isLoading: isUpdating, error } = useUpdateWorker(); + + const formik = useFormik({ + initialValues: { + name: worker.name || '', + description: worker.description || '', + website: worker.website || '', + email: worker.email || '', + }, + validationSchema: editWorkerSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const { success } = await updateWorker({ + ...values, + peerId: worker.peerId, + source: worker.owner, + }); + if (!success) return; + }, + }); + + return ( +
+ + + + + + + + + + + + + + + + + + Update + + + +
+ ); +} + +export function WorkerEdit() { + const { peerId } = useParams<{ peerId: string }>(); + const { data: worker, isPending } = useWorkerByPeerId(peerId); + + if (isPending) return ; + else if (!worker) { + return ( + + Worker {peerId} not found + + ); + } + + return ( + + + + + ); +} diff --git a/src/pages/WorkersPage/WorkerName.tsx b/src/pages/WorkersPage/WorkerName.tsx new file mode 100644 index 0000000..a0e5681 --- /dev/null +++ b/src/pages/WorkersPage/WorkerName.tsx @@ -0,0 +1,50 @@ +import React from 'react'; + +import { Stack, styled } from '@mui/material'; +import { Box } from '@mui/system'; + +import { BlockchainApiWorker } from '@api/subsquid-network-squid'; +import { Avatar } from '@components/Avatar'; +import { CopyToClipboard } from '@components/CopyToClipboard'; +import { PeerIdShort, shortPeerId } from '@components/PeerId'; + +// import { WorkerDelegationCapacity } from './WorkerDelegationCapacity'; + +const Name = styled(Box, { + name: 'Name', +})(({ theme }) => ({ + marginBottom: theme.spacing(0.5), + fontWeight: 500, +})); + +export const WorkerName = ({ + worker, +}: { + worker: Pick & { + totalDelegations?: BlockchainApiWorker['totalDelegations']; + }; +}) => { + return ( + + + + {worker.name ? {worker.name} : null} + + + {shortPeerId(worker.peerId)}} + /> + + {/*{worker.totalDelegations ? (*/} + {/* */} + {/*) : null}*/} + + + + ); +}; diff --git a/src/pages/WorkersPage/WorkerStatistics.tsx b/src/pages/WorkersPage/WorkerStatistics.tsx new file mode 100644 index 0000000..07691b4 --- /dev/null +++ b/src/pages/WorkersPage/WorkerStatistics.tsx @@ -0,0 +1,127 @@ +import React from 'react'; + +import { + bytesFormatter, + numberWithSpacesFormatter, + percentFormatter, +} from '@lib/formatters/formatters.ts'; +import { Box, Divider, Stack, styled } from '@mui/material'; + +import { BlockchainApiFullWorker } from '@api/subsquid-network-squid'; +import { Card } from '@components/Card'; +import { Online } from '@components/Online'; + +import { UptimeGraph } from './UptimeGraph'; + +export const WorkerColumnLabel = styled(Box, { + name: 'WorkerColumnLabel', +})(() => ({ + fontWeight: 500, +})); + +export const WorkerColumn = styled(Box, { + name: 'WorkerColumnLabel', +})(() => ({ + flex: 1, +})); + +export const WorkerDescTable = styled(Box, { + name: 'WorkerDescTable', +})(() => ({ + flex: 1, +})); + +export const WorkerDescRow = styled(Box, { + name: 'WorkerDescRow', +})(({ theme }) => ({ + display: 'flex', + alignItems: 'flex-start', + margin: theme.spacing(5, 0), + lineHeight: 1.4, +})); +export const WorkerDescLabel = styled(Box, { + name: 'WorkerDescLabel', +})(() => ({ + fontWeight: 500, +})); +export const WorkerDescValue = styled(Box, { + name: 'WorkerDescValue', +})(({ theme }) => ({ + flex: 1, + color: theme.palette.text.secondary, + marginLeft: theme.spacing(2), +})); + +export const WorkerStatistics = ({ worker }: { worker: BlockchainApiFullWorker }) => { + return ( + + Worker statistics}> + } + > + + + APR + {percentFormatter(worker.stakerApr)} + + + {/**/} + {/* */} + {/* Delegation capacity*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/**/} + + + Delegators + {worker.delegationCount} + + + + + Health + + + + + + + + + + + + {/**/} + {/* Total worker rewards*/} + {/* {worker.tot}*/} + {/**/} + {/**/} + {/* Total delegators rewards*/} + {/* */} + {/**/} + + Queries, last 24 hours / last 90 days + + {numberWithSpacesFormatter(worker.queries24Hours)} /{' '} + {numberWithSpacesFormatter(worker.queries90Days)} + + + + Data served, last 24 hours / last 90 days + + {bytesFormatter(worker.servedData24Hours)} / {bytesFormatter(worker.servedData90Days)} + + + + Data stored + {bytesFormatter(worker.storedData)} + + + + ); +}; diff --git a/src/pages/WorkersPage/WorkerStatus.tsx b/src/pages/WorkersPage/WorkerStatus.tsx new file mode 100644 index 0000000..25eba7d --- /dev/null +++ b/src/pages/WorkersPage/WorkerStatus.tsx @@ -0,0 +1,66 @@ +import React from 'react'; + +import { Chip as MaterialChip, chipClasses, styled } from '@mui/material'; +import capitalize from 'lodash-es/capitalize'; + +import { BlockchainApiWorker, WorkerStatus as Status } from '@api/subsquid-network-squid'; + +export const Chip = styled(MaterialChip)( + ({ + theme: { + spacing, + palette: { error }, + }, + }) => ({ + fontSize: '0.75rem', + fontWeight: 500, + lineHeight: 1, + height: 24, + + [`& .${chipClasses.label}`]: { + padding: spacing(0.5, 1), + }, + + [`&.MuiChip-filledError`]: { + background: error.main, + color: error.contrastText, + }, + + [`&.${chipClasses.colorSuccess}`]: { + background: '#E3F7E0', + color: '#55AD44', + }, + }), +); + +export function workerStatus(worker: BlockchainApiWorker): { + label: string; + color: 'error' | 'success' | 'default'; +} { + if (!worker.status) return { label: 'Unknown', color: 'default' }; + + switch (worker.status) { + case Status.Active: + if (worker.jailed) { + return { label: 'Jailed', color: 'error' }; + } else if (!worker.online) { + return { label: 'Offline', color: 'default' }; + } + + return { label: 'Online', color: 'success' }; + case Status.Registering: + return { label: 'Registration pending', color: 'default' }; + case Status.Deregistering: + return { label: 'Unregistration pending', color: 'default' }; + case Status.Deregistered: + return { label: 'Deregistered', color: 'default' }; + } + + return { label: capitalize(worker.status), color: 'default' }; +} + +export function WorkerStatus({ worker }: { worker: BlockchainApiWorker }) { + const { label, color } = workerStatus(worker); + + return ; +} diff --git a/src/pages/WorkersPage/WorkerUndelegate.tsx b/src/pages/WorkersPage/WorkerUndelegate.tsx new file mode 100644 index 0000000..37a2578 --- /dev/null +++ b/src/pages/WorkersPage/WorkerUndelegate.tsx @@ -0,0 +1,164 @@ +import React, { useEffect, useMemo, useState } from 'react'; + +import { Button, Chip } from '@mui/material'; +import Decimal from 'decimal.js'; +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +import { useWorkerUndelegate } from '@api/contracts/staking'; +import { formatSqd, humanReadableSqd, toSqd } from '@api/contracts/utils'; +import { BlockchainApiWorker } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; +import { ContractCallDialog } from '@components/ContractCallDialog'; +import { Form, FormikSelect, FormikTextInput, FormRow } from '@components/Form'; +import { SourceWalletOption } from '@components/SourceWallet'; + +export const undelegateSchema = yup.object({ + source: yup.string().label('Source').trim().required('Source is required'), + amount: yup + .number() + .label('Amount') + .moreThan(0) + .required('Amount is required') + .max(yup.ref('max'), ({ max }) => `Amount should be less than ${formatSqd(max)} `), + max: yup.string().label('Max').required('Max is required'), +}); + +export function WorkerUndelegate({ worker }: { worker: BlockchainApiWorker }) { + const { undelegateFromWorker, error, isLoading } = useWorkerUndelegate(); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const options = useMemo( + () => + (worker.myDelegations || []) + .filter(s => !new Decimal(s.deposit).isZero()) + .map(s => { + return { + label: ( + + ), + value: s.owner.id, + }; + }), + [worker.myDelegations], + ); + + const formik = useFormik({ + initialValues: { + source: '', + amount: '0', + max: '0', + }, + validationSchema: undelegateSchema, + validateOnChange: true, + validateOnBlur: true, + validateOnMount: true, + + onSubmit: async values => { + const wallet = worker.myDelegations.find(w => w?.owner.id === values.source); + if (!wallet) return; + + const { failedReason } = await undelegateFromWorker({ + worker, + amount: toSqd(values.amount), + wallet: { + id: wallet.owner.id, + type: wallet.owner.type, + }, + }); + if (!failedReason) { + handleClose(); + } + }, + }); + + useEffect(() => { + if (formik.values.source) return; + + const source = worker.myDelegations.filter(s => !new Decimal(s.deposit).isZero())?.[0]; + if (!source) return; + + formik.setValues({ + ...formik.values, + source: source.owner.id, + max: humanReadableSqd(source.deposit), + }); + }, [formik, worker.myDelegations]); + + return ( + <> + + { + if (!confirmed) return handleClose(); + + formik.handleSubmit(); + }} + confirmColor="error" + > +
+ + { + const wallet = worker.myDelegations.find(s => s.owner.id === e.target.value); + if (!wallet) return; + + formik.setFieldValue('source', wallet.owner.id); + formik.setFieldValue('max', humanReadableSqd(wallet.deposit)); + }} + /> + + + { + formik.setValues({ + ...formik.values, + amount: formik.values.max, + }); + }} + label="Max" + /> + ), + }} + /> + + + +
+ + ); +} diff --git a/src/pages/WorkersPage/WorkerUnregister.tsx b/src/pages/WorkersPage/WorkerUnregister.tsx new file mode 100644 index 0000000..972f6d0 --- /dev/null +++ b/src/pages/WorkersPage/WorkerUnregister.tsx @@ -0,0 +1,59 @@ +import React from 'react'; + +import { LoadingButton } from '@mui/lab'; +import { Box } from '@mui/material'; + +import { useUnregisterWorker } from '@api/contracts/worker-registration/useUnregisterWorker'; +import { useWithdrawWorker } from '@api/contracts/worker-registration/useWithdrawWorker'; +import { BlockchainApiFullWorker, WorkerStatus } from '@api/subsquid-network-squid'; +import { BlockchainContractError } from '@components/BlockchainContractError'; + +export function WorkerUnregister({ worker }: { worker: BlockchainApiFullWorker }) { + const { + unregisterWorker, + error: unregisterError, + isLoading: isUnregistering, + } = useUnregisterWorker(); + const { withdrawWorker, error: withdrawError, isLoading: isWithdrawing } = useWithdrawWorker(); + + if (!worker.ownedByMe) return null; + + return ( + + + {worker.status === WorkerStatus.Deregistered ? ( + { + await withdrawWorker({ + peerId: worker.peerId, + source: worker.owner, + }); + }} + variant="contained" + color="success" + > + Withdraw + + ) : worker.status === WorkerStatus.Active || + worker.status === WorkerStatus.Deregistering ? ( + { + await unregisterWorker({ + peerId: worker.peerId, + source: worker.owner, + }); + }} + variant="contained" + color="error" + > + Unregister + + ) : null} + + + + ); +} diff --git a/src/pages/WorkersPage/WorkersPage.tsx b/src/pages/WorkersPage/WorkersPage.tsx new file mode 100644 index 0000000..311803d --- /dev/null +++ b/src/pages/WorkersPage/WorkersPage.tsx @@ -0,0 +1,140 @@ +import React from 'react'; + +import { dateFormat } from '@i18n'; +import { percentFormatter } from '@lib/formatters/formatters.ts'; +import { ArrowBackIosNew, ArrowForwardIos } from '@mui/icons-material'; +import { IconButton, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; +import { Box } from '@mui/system'; +import { useNavigate } from 'react-router-dom'; + +import { SortDir, useWorkers, WorkerSortBy } from '@api/subsquid-network-squid'; +import { Loader } from '@components/Loader'; +import { Search } from '@components/Search/Search'; +import { BorderedTable, SortableHeaderCell } from '@components/Table/BorderedTable'; +import { Location, useLocationState } from '@hooks/useLocationState'; +import { WorkerStatus } from '@pages/WorkersPage/WorkerStatus'; + +import { WorkerName } from './WorkerName'; + +function TableNavigation({ + totalPages, + setPage, + page, +}: { + setPage?: (page: number) => unknown; + page: number; + totalPages: number; +}) { + const hasPrevPage = page > 1; + const hasNextPage = page <= totalPages; + + return ( + + { + setPage?.(page - 1); + }} + disabled={!hasPrevPage} + > + + + { + setPage?.(page + 1); + }} + disabled={!hasNextPage} + > + + + + ); +} + +export function WorkersPage() { + const navigate = useNavigate(); + const [query, setQuery] = useLocationState({ + page: new Location.Number(1), + search: new Location.String(''), + sortBy: new Location.Enum(WorkerSortBy.JoinedAt), + sortDir: new Location.Enum(SortDir.Desc), + }); + const { workers, totalPages, page, isLoading } = useWorkers({ + search: query.search, + page: query.page, + perPage: 20, + sortBy: query.sortBy as WorkerSortBy, + sortDir: query.sortDir as SortDir, + }); + + if (isLoading) return ; + + return ( + <> + + + + + + + Worker + Status + + Uptime last 24 hours + + + Uptime last 90 days + + + APR + + {/**/} + {/* Delegation capacity*/} + {/**/} + + Joined date + + + + + {workers.map(worker => { + return ( + navigate(`/workers/${worker.peerId}`)} + className="hoverable" + key={worker.peerId} + > + + + + + + + {percentFormatter(worker.uptime24Hours)} + {percentFormatter(worker.uptime90Days)} + {percentFormatter(worker.stakerApr)} + {/*{formatSqd(worker.totalDelegations.capacity, 0)}*/} + {dateFormat(worker.createdAt)} + + ); + })} + + + + + ); +} diff --git a/src/pages/WorkersPage/worker-schema.ts b/src/pages/WorkersPage/worker-schema.ts new file mode 100644 index 0000000..10d5a69 --- /dev/null +++ b/src/pages/WorkersPage/worker-schema.ts @@ -0,0 +1,24 @@ +import * as yup from 'yup'; + +export const editWorkerSchema = yup.object({ + name: yup.string().label('Name').max(255).trim().required('Worker name is required'), + description: yup.string().label('Description').max(2000).trim(), + email: yup.string().label('Email address').trim().required('Email is required'), + website: yup.string().label('Website').trim(), +}); + +export const addWorkerSchema = editWorkerSchema.shape({ + peerId: yup + .string() + .matches(/^[a-z1-9]+$/i, 'Peer ID must contains only base 58 symbols') + .max(52) + .min(52) + .label('Peer ID') + .trim() + .required('Peer ID is required'), + vestingContract: yup + .string() + .label('Vesting contract address') + .trim() + .required('Vesting contract address is required'), +}); diff --git a/src/theme/index.ts b/src/theme/index.ts new file mode 100644 index 0000000..7b1f54e --- /dev/null +++ b/src/theme/index.ts @@ -0,0 +1 @@ +export * from './theme'; diff --git a/src/theme/network-light.ts b/src/theme/network-light.ts new file mode 100644 index 0000000..52b856e --- /dev/null +++ b/src/theme/network-light.ts @@ -0,0 +1,91 @@ +import { alpha } from '@mui/system/colorManipulator'; + +export const NetworkLightTheme = { + primary: { + main: '#000000', + light: '#333333', + contrastText: '#fff', + }, + secondary: { + main: '#E8CDEB', + contrastText: '#B721FD', + }, + info: { + light: '#3880EC', + main: '#2c2c2c', + contrastText: '#fff', + }, + success: { + light: '#55AD44', + main: '#1FB48E', + dark: '#148568', + contrastText: '#fff', + }, + error: { + main: '#FD6E65', + dark: '#E7362B', + contrastText: '#fff', + }, + warning: { + main: '#F5EDBF', + contrastText: '#DC9101', + dark: '#F90', + }, + importantLink: { + main: '#3880EC', + hover: '#66a0f5', + }, + text: { + primary: '#1D1D1F', + secondary: alpha('#1D1D1F', 0.5), + default: alpha('#1D1D1F', 0.8), + disabled: alpha('#1D1D1F', 0.3), + }, + background: { + default: '#f2f2f2', + paper: '#fff', + input: '#f2f2f2', + content: '#f6f8fb', + }, + divider: 'rgba(29, 29, 31, 0.1)', + code: { + background: '#FBFBFB', + border: alpha('#1D1D1F', 0.1), + }, + alerts: { + info: { + background: '#E8E7E7', + text: '#231F20', + }, + success: { + background: '#96F3C6', + text: '#231F20', + }, + warning: { + background: '#FCE38E', + + text: '#231F20', + }, + error: { + background: '#FBB9B2', + contrastText: '#CA0E01', + text: '#231F20', + }, + }, + networkStatus: { + online: '#65C971', + downtime: '#FE8E0A', + offline: '#D65745', + noData: '#B4BAC4', + }, + accent: { + light: '#569AFF', + main: '#EBF2FD', + contrastText: '#3880EC', + dark: '#1055BD', + }, + grayScale: { + gray500: '#7E7E7E', + gray800: '#DEDEDE', + }, +}; diff --git a/src/theme/theme.tsx b/src/theme/theme.tsx new file mode 100644 index 0000000..0f36874 --- /dev/null +++ b/src/theme/theme.tsx @@ -0,0 +1,673 @@ +import React, { useMemo } from 'react'; + +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import { AppBarPropsColorOverrides } from '@mui/material/AppBar/AppBar'; +import { createTheme as createMuiTheme } from '@mui/material/styles'; +import { alpha } from '@mui/system/colorManipulator'; +import { OverridableStringUnion } from '@mui/types'; + +import { localStorageStringSerializer, useLocalStorageState } from '@hooks/useLocalStorageState'; +import { + CheckboxCheckedIcon, + CheckboxIndeterminateIcon, + CheckboxUncheckedIcon, +} from '@icons/Checkbox'; + +import { NetworkLightTheme } from './network-light'; + +const COLORS = { + light: NetworkLightTheme, + dark: NetworkLightTheme, +}; + +export type PaletteType = 'light' | 'dark'; + +const loader = document.getElementById('loader'); + +const defaultTheme = 'light'; + +export function useThemeState(): [PaletteType, (palette: PaletteType) => void] { + const [theme, setThemeName] = useLocalStorageState<'light' | 'dark'>('theme', { + serializer: localStorageStringSerializer, + defaultValue: defaultTheme, + }); + + const parsedTheme = ['dark', 'light'].includes(theme) ? theme : defaultTheme; + + return [ + parsedTheme, + theme => { + if (theme === 'dark') { + loader?.classList.add('dark'); + } else { + loader?.classList.remove('dark'); + } + + setThemeName(theme); + }, + ]; +} + +const spacing = 8; + +declare module '@mui/material' { + export interface ZIndex { + guide: { + background: number; + highlight: number; + content: number; + }; + } + + export interface BreakpointOverrides { + xxs: true; + } + + export interface AppBarPropsColorOverrides { + info: true; + } + + export interface ChipPropsVariantOverrides { + squared: true; + } +} + +declare module '@mui/material/styles/createPalette' { + export interface TypeBackground { + input: string; + content: string; + } + + export interface TypeText { + default: string; + } + + export interface Palette { + importantLink: PaletteColor; + code: { + background: string; + border: string; + }; + alerts: { + error: { + background: string; + text: string; + contrastText: string; + }; + }; + networkStatus: { + online: string; + offline: string; + downtime: string; + noData: string; + }; + accent: { + light: string; + main: string; + contrastText: string; + dark: string; + }; + grayScale: { + gray500: string; + gray800: string; + }; + } + export interface PaletteOptions { + importantLink: PaletteColorOptions; + code: { + background: string; + border: string; + }; + alerts: { + warning: { + background: string; + text: string; + }; + }; + networkStatus: { + online: string; + offline: string; + downtime: string; + noData: string; + }; + accent: { + light: string; + main: string; + contrastText: string; + dark: string; + }; + grayScale: { + gray500: string; + gray800: string; + }; + } +} + +declare module 'notistack' { + interface VariantOverrides { + subsquid: { + title: string; + severity: 'warning' | 'success' | 'error' | 'info'; + }; + } +} + +const fontFamily = `'Inter', sans-serif`; + +export type ColorVariant = OverridableStringUnion< + 'primary' | 'secondary', + AppBarPropsColorOverrides +>; + +export const useCreateTheme = (mode: PaletteType) => { + const colors = COLORS[mode]; + + return useMemo( + () => + createMuiTheme({ + breakpoints: { + values: { + xxs: 480, + xs: 600, + sm: 800, + md: 1000, + lg: 1200, + xl: 1536, + }, + }, + typography: { + fontFamily, + h1: { + fontSize: 32, + lineHeight: 1.5, + fontWeight: 500, + color: colors.text?.primary, + letterSpacing: '-0.02em', + }, + h2: { + fontSize: 24, + lineHeight: 1, + fontWeight: 500, + color: colors.text?.primary, + letterSpacing: '-0.02em', + }, + h3: { + fontSize: 17, + lineHeight: 1.5, + fontWeight: 400, + letterSpacing: '-0.02em', + }, + h4: { + fontSize: 16, + lineHeight: 1.5, + fontWeight: 400, + letterSpacing: '-0.02em', + }, + h5: { + fontSize: 15, + lineHeight: 1.5, + fontWeight: 400, + letterSpacing: '-0.02em', + }, + h6: { + fontSize: 14, + lineHeight: 1.5, + fontWeight: 400, + letterSpacing: '-0.02em', + }, + body1: { + fontSize: 16, + lineHeight: '24px', + fontWeight: 400, + letterSpacing: '-0.02em', + }, + body2: { + fontSize: 13, + lineHeight: '20px', + fontWeight: 400, + letterSpacing: '-0.02em', + }, + caption: { + fontSize: 11, + lineHeight: '16px', + fontWeight: 400, + letterSpacing: '-0.02em', + }, + button: { + fontSize: '1rem', + lineHeight: '24px', + fontWeight: 500, + color: '#fff', + }, + }, + palette: { + mode, + primary: colors.primary, + secondary: colors.secondary, + importantLink: colors.importantLink, + info: colors.info, + success: colors.success, + error: colors.error, + warning: colors.warning, + text: colors.text, + background: colors.background, + code: colors.code, + divider: colors.divider, + alerts: colors.alerts, + networkStatus: colors.networkStatus, + accent: colors.accent, + grayScale: colors.grayScale, + }, + spacing, + zIndex: { + guide: { + background: 10000, + highlight: 10001, + content: 10002, + }, + }, + components: { + MuiCssBaseline: { + styleOverrides: { + body: { + background: colors.background.content, + minWidth: 350, + }, + a: { + color: colors.importantLink.main, + textDecoration: 'none', + '&:hover': { + color: colors.importantLink.hover, + }, + }, + '#cf-turnstile': { + width: 'auto !important', + margin: '0px 0 20px', + iframe: { + width: '100% !important', + }, + }, + }, + }, + MuiAvatar: { + styleOverrides: { + root: { + // border: `1px solid ${borderColor}`, + }, + colorDefault: { + background: colors.primary.main, + overflow: 'hidden', + '& svg': { + transform: 'scale(1.5) translateY(3px)', + '& path': { + fill: colors.primary.contrastText, + }, + }, + }, + }, + }, + + MuiTabs: { + styleOverrides: { + root: {}, + indicator: { + display: 'none', + }, + }, + }, + MuiTab: { + styleOverrides: { + root: { + textTransform: 'none', + background: 'transparent', + borderRadius: 4, + marginRight: spacing * 2, + minWidth: 'auto', + minHeight: 40, + padding: 12, + lineHeight: 1, + transition: 'background-color,color 300ms ease-out', + color: colors.text.secondary, + fontWeight: 400, + '&:hover': { + color: colors.primary.main, + }, + '&.selected': { + background: colors.info.light, + color: colors.primary.main, + fontWeight: 500, + }, + '&.Mui-disabled': { + opacity: 0.3, + }, + '&:before': { + fontWeight: 500, + content: 'attr(data-before)', + visibility: 'hidden', + height: 0, + }, + }, + }, + }, + MuiFormHelperText: { + styleOverrides: { + root: { + marginLeft: 0, + marginRight: 0, + '&.Mui-error': { + // color: colors.error.contrastText, + }, + }, + }, + }, + MuiButton: { + styleOverrides: { + root: { + textTransform: 'none', + transition: 'all 300ms ease-out', + + borderRadius: 4, + }, + sizeSmall: { + minHeight: 36, + fontSize: '1rem', + fontWeight: 500, + paddingLeft: spacing * 2, + paddingRight: spacing * 2, + }, + sizeLarge: { + minHeight: 52, + borderRadius: 8, + }, + + contained: { + boxShadow: 'none', + textShadow: 'none', + '&:hover': { + boxShadow: 'none', + textShadow: 'none', + }, + }, + containedPrimary: { + '&.Mui-disabled': { + background: colors.primary.main, + color: colors.primary.contrastText, + opacity: 0.5, + '& .MuiCircularProgress-circle': { + stroke: colors.primary.contrastText, + }, + }, + }, + containedInfo: { + background: alpha(colors.info.main, 0.5), + color: colors.primary.main, + + '&:hover': { + background: alpha(colors.info.main, 0.6), + color: colors.primary.main, + }, + }, + containedError: { + '&.Mui-disabled': { + background: colors.error.main, + color: colors.error.contrastText, + opacity: 0.5, + }, + }, + }, + }, + MuiInputLabel: { + styleOverrides: { + root: { + marginBottom: spacing, + }, + }, + }, + MuiFormControl: {}, + MuiFilledInput: { + styleOverrides: { + root: { + background: colors.background.input, + border: `1px solid ${colors.background.default}`, + borderRadius: 8, + transition: 'all 300ms ease-out', + + '& .MuiSelect-select.MuiSelect-filled': { + paddingTop: 8, + paddingBottom: 8, + }, + '& input': { + borderRadius: 8, + // fontSize: '0.875rem', + }, + + '&:hover': { + background: colors.background.input, + border: `1px solid ${colors.primary.main}`, + }, + '&.Mui-focused': { + border: `1px solid ${colors.primary.main}`, + background: colors.background.input, + }, + '&:before': { + display: 'none', + }, + '&:after': { + display: 'none', + }, + }, + sizeSmall: { + borderRadius: 4, + '& .MuiSelect-select.MuiSelect-filled': { + paddingTop: 6, + paddingBottom: 6, + }, + }, + + inputTypeSearch: {}, + input: { + paddingTop: 22, + '&:before': { + display: 'none', + }, + '&:after': { + display: 'none', + }, + '&:-webkit-autofill': { + // backgroundClip: 'text', + // fontFamily, + }, + }, + inputHiddenLabel: { + paddingTop: `${spacing}px !important`, + paddingBottom: `${spacing}px !important`, + }, + inputMultiline: { + paddingTop: 0, + }, + }, + }, + MuiInput: { + styleOverrides: { + root: { + '&:before': { + borderWidth: '1px !important', + borderColor: '#1D1D1F !important', + }, + '&:after': { + borderWidth: '1px', + }, + }, + }, + }, + MuiCheckbox: { + defaultProps: { + checkedIcon: , + icon: , + indeterminateIcon: , + }, + styleOverrides: { + root: { + marginRight: 4, + }, + }, + }, + MuiSelect: { + styleOverrides: { + filled: { + paddingTop: 8, + }, + icon: { + // marginRight: 5, + }, + }, + defaultProps: { + IconComponent: KeyboardArrowDownIcon, + }, + }, + MuiMenu: { + styleOverrides: { + paper: { + border: `1px solid ${colors.divider}`, + boxShadow: '0px 4px 14px rgba(101, 101, 101, 0.21)', + }, + }, + defaultProps: { + // disableScrollLock: true, + PaperProps: { + sx: { + marginTop: 1, + }, + }, + }, + }, + MuiPaper: { + styleOverrides: { + elevation1: { + border: `1px solid ${colors.divider}`, + boxShadow: 'none', + }, + }, + }, + MuiDialog: { + styleOverrides: { + container: {}, + paper: { + boxShadow: 'none', + }, + }, + }, + MuiTable: { + styleOverrides: { + root: {}, + }, + }, + MuiAlert: { + styleOverrides: { + filledWarning: { + background: colors.alerts.warning.background, + color: colors.alerts.warning.text, + }, + outlinedWarning: { + background: colors.alerts.warning.background, + color: colors.alerts.warning.text, + }, + standardWarning: { + background: colors.alerts.warning.background, + color: colors.alerts.warning.text, + }, + filledSuccess: { + background: colors.alerts.success.background, + color: colors.alerts.success.text, + }, + outlinedSuccess: { + borderColor: colors.alerts.success.background, + color: colors.alerts.success.text, + }, + standardSuccess: { + background: colors.alerts.success.background, + color: colors.alerts.success.text, + }, + filledError: { + background: colors.alerts.error.background, + color: colors.alerts.error.text, + }, + outlinedError: { + background: colors.alerts.error.background, + color: colors.alerts.error.text, + }, + standardError: { + background: colors.alerts.error.background, + color: colors.alerts.error.text, + }, + filledInfo: { + background: colors.alerts.info.background, + color: colors.alerts.info.text, + }, + outlinedInfo: { + borderColor: colors.alerts.info.background, + color: colors.alerts.info.text, + + '& svg': { + fill: colors.primary.main, + }, + }, + standardInfo: { + background: colors.alerts.info.background, + color: colors.alerts.info.text, + }, + }, + }, + MuiLinearProgress: { + styleOverrides: { + root: { + borderRadius: 6, + height: 6, + }, + }, + }, + MuiPopover: { + styleOverrides: { + root: {}, + }, + }, + MuiTooltip: { + styleOverrides: { + tooltip: { + background: colors.background.paper, + color: colors.text.secondary, + fontSize: '0.875rem', + fontWeight: 400, + lineHeight: 1.6, + maxWidth: 400, + padding: `${spacing * 1.5}px ${spacing * 2.5}px`, + boxShadow: `0px 4px 14px rgba(101, 101, 101, 0.21)`, + border: `1px solid ${alpha(colors.text.primary, 0.2)}`, + }, + arrow: { + '&:before': { + background: colors.background.paper, + position: 'absolute', + zIndex: 2, + }, + '&:after': { + content: '""', + margin: 'auto', + display: 'block', + width: '100%', + height: '100%', + background: alpha(colors.text.primary, 0.2), + position: 'absolute', + top: 1, + transformOrigin: '100% 0', + transform: 'rotate(45deg)', + zIndex: 1, + }, + }, + }, + }, + }, + }), + [colors, mode], + ); +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3f0a866 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,48 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "allowJs": true, + + /* Linting */ + "strict": true, + + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Paths */ + "baseUrl": "./", + "paths": { + "@components/*": ["src/components/*"], + "@layouts/*": ["src/layouts/*"], + "@contexts/*": ["src/contexts/*"], + "@loaders/*": ["src/loaders/*"], + "@hooks/*": ["src/hooks/*"], + "@utils/*": ["src/utils/*"], + "@pages/*": ["src/pages/*"], + "@api/*": ["src/api/*"], + "@lib/*": ["src/lib/*"], + "@icons/*": ["src/icons/*"], + "@images/*": ["src/images/*"], + "@i18n": ["src/i18n/index"], + "@logger": ["src/logger/index"], + "@apps": ["src/apps/apps"], + "@apps/*": ["src/apps/*"], + "@network/*": ["src/network/*"], + } + }, + "include": [ + "src", + ], + "exclude": ["dist", "node_modules"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..9e59260 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,30 @@ +import react from '@vitejs/plugin-react'; +import { defineConfig, splitVendorChunkPlugin } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +import 'dotenv/config'; + +const encode = JSON.stringify; + +// https://vitejs.dev/config/ +export default defineConfig({ + define: { + 'process.env.APP_VERSION': encode(process.env.APP_VERSION || 'local'), + + 'process.env.DISCORD_API_URL': encode( + process.env.DISCORD_API_URL || 'https://discord.com/invite/subsquid', + ), + 'process.env.DOCS_API_URL': encode(process.env.DOCS_API_URL || 'https://docs.subsquid.io'), + + 'process.env.SQUID_API_URL': encode(process.env.SQUID_API_URL || 'http://localhost:4350'), + 'process.env.WALLET_CONNECT_PROJECT_ID': encode(process.env.WALLET_CONNECT_PROJECT_ID || ''), + 'process.env.ENABLE_DEMO_FEATURES': encode(process.env.ENABLE_DEMO_FEATURES || 'false'), + 'process.env.BLOCK_CHAIN_NODE_ADDRESS': encode(process.env.BLOCK_CHAIN_NODE_ADDRESS), + 'process.env.MULTICALL_3_CONTRACT_ADDRESS': encode( + process.env.MULTICALL_3_CONTRACT_ADDRESS || '', + ), + 'process.env.DEFAULT_NETWORK': encode(process.env.DEFAULT_NETWORK || 'testnet'), + 'process.env.SENTRY_DSN': encode(process.env.SENTRY_DSN || ''), + }, + plugins: [tsconfigPaths(), react(), splitVendorChunkPlugin()], +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..ed79b43 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,12711 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + +"@adraffy/ens-normalize@npm:1.10.0": + version: 1.10.0 + resolution: "@adraffy/ens-normalize@npm:1.10.0" + checksum: 10c0/78ae700847a2516d5a0ae12c4e23d09392a40c67e73b137eb7189f51afb1601c8d18784aeda2ed288a278997824dc924d1f398852c21d41ee2c4c564f2fb4d26 + languageName: node + linkType: hard + +"@adraffy/ens-normalize@npm:1.10.1": + version: 1.10.1 + resolution: "@adraffy/ens-normalize@npm:1.10.1" + checksum: 10c0/fdd647604e8fac6204921888aaf5a6bc65eabf0d2921bc5f93b64d01f4bc33ead167c1445f7de05468d05cd92ac31b74c68d2be840c62b79d73693308f885c06 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@ardatan/relay-compiler@npm:12.0.0": + version: 12.0.0 + resolution: "@ardatan/relay-compiler@npm:12.0.0" + dependencies: + "@babel/core": "npm:^7.14.0" + "@babel/generator": "npm:^7.14.0" + "@babel/parser": "npm:^7.14.0" + "@babel/runtime": "npm:^7.0.0" + "@babel/traverse": "npm:^7.14.0" + "@babel/types": "npm:^7.0.0" + babel-preset-fbjs: "npm:^3.4.0" + chalk: "npm:^4.0.0" + fb-watchman: "npm:^2.0.0" + fbjs: "npm:^3.0.0" + glob: "npm:^7.1.1" + immutable: "npm:~3.7.6" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + relay-runtime: "npm:12.0.0" + signedsource: "npm:^1.0.0" + yargs: "npm:^15.3.1" + peerDependencies: + graphql: "*" + bin: + relay-compiler: bin/relay-compiler + checksum: 10c0/7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 + languageName: node + linkType: hard + +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: "npm:^2.6.1" + checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": + version: 7.24.2 + resolution: "@babel/code-frame@npm:7.24.2" + dependencies: + "@babel/highlight": "npm:^7.24.2" + picocolors: "npm:^1.0.0" + checksum: 10c0/d1d4cba89475ab6aab7a88242e1fd73b15ecb9f30c109b69752956434d10a26a52cbd37727c4eca104b6d45227bd1dfce39a6a6f4a14c9b2f07f871e968cf406 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.23.5": + version: 7.24.1 + resolution: "@babel/compat-data@npm:7.24.1" + checksum: 10c0/8a1935450345c326b14ea632174696566ef9b353bd0d6fb682456c0774342eeee7654877ced410f24a731d386fdcbf980b75083fc764964d6f816b65792af2f5 + languageName: node + linkType: hard + +"@babel/core@npm:^7.14.0, @babel/core@npm:^7.22.9": + version: 7.24.1 + resolution: "@babel/core@npm:7.24.1" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.1" + "@babel/generator": "npm:^7.24.1" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.24.1" + "@babel/parser": "npm:^7.24.1" + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/b085b0bc65c225f20b9d5f7b05c8b127c005a73c355d4a7480f099de5d6757abafa7f60786eb95e6d098a6b5c34618e7b0950d60ef55139db04d8767d410e0a9 + languageName: node + linkType: hard + +"@babel/core@npm:^7.23.5": + version: 7.24.3 + resolution: "@babel/core@npm:7.24.3" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.2" + "@babel/generator": "npm:^7.24.1" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.24.1" + "@babel/parser": "npm:^7.24.1" + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/e6e756b6de27d0312514a005688fa1915c521ad4269a388913eff2120a546538078f8488d6d16e86f851872f263cb45a6bbae08738297afb9382600d2ac342a9 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/generator@npm:7.24.1" + dependencies: + "@babel/types": "npm:^7.24.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/f0eea7497657cdf68cfb4b7d181588e1498eefd1f303d73b0d8ca9b21a6db27136a6f5beb8f988b6bdcd4249870826080950450fd310951de42ecf36df274881 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6": + version: 7.24.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/45372890634c37deefc81f44b7d958fe210f7da7d8a2239c9849c6041a56536f74bf3aa2d115bc06d5680d0dc49c1303f74a045d76ae0dd1592c7d5c0c268ebc + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" + dependencies: + "@babel/types": "npm:^7.23.0" + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15": + version: 7.24.1 + resolution: "@babel/helper-module-imports@npm:7.24.1" + dependencies: + "@babel/types": "npm:^7.24.0" + checksum: 10c0/9242a9af73e7eb3fe106d7e55c157149f7f38df6494980744e99fc608103c2ee20726df9596fae722c57ae89c9c304200673b733c3c1c5312385ff26ebd2a4fa + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.24.0 + resolution: "@babel/helper-plugin-utils@npm:7.24.0" + checksum: 10c0/90f41bd1b4dfe7226b1d33a4bb745844c5c63e400f9e4e8bf9103a7ceddd7d425d65333b564d9daba3cebd105985764d51b4bd4c95822b97c2e3ac1201a8a5da + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/helper-replace-supers@npm:7.24.1" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/d39a3df7892b7c3c0e307fb229646168a9bd35e26a72080c2530729322600e8cff5f738f44a14860a2358faffa741b6a6a0d6749f113387b03ddbfa0ec10e1a0 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.24.1 + resolution: "@babel/helper-string-parser@npm:7.24.1" + checksum: 10c0/2f9bfcf8d2f9f083785df0501dbab92770111ece2f90d120352fda6dd2a7d47db11b807d111e6f32aa1ba6d763fe2dc6603d153068d672a5d0ad33ca802632b2 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/helpers@npm:7.24.1" + dependencies: + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/b3445860ae749fc664682b291f092285e949114e8336784ae29f88eb4c176279b01cc6740005a017a0389ae4b4e928d5bbbc01de7da7e400c972e3d6f792063a + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.24.2": + version: 7.24.2 + resolution: "@babel/highlight@npm:7.24.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/98ce00321daedeed33a4ed9362dc089a70375ff1b3b91228b9f05e6591d387a81a8cba68886e207861b8871efa0bc997ceabdd9c90f6cce3ee1b2f7f941b42db + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/parser@npm:7.24.1" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/d2a8b99aa5f33182b69d5569367403a40e7c027ae3b03a1f81fd8ac9b06ceb85b31f6ee4267fb90726dc2ac99909c6bdaa9cf16c379efab73d8dfe85cee32c50 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-properties@npm:^7.0.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 + languageName: node + linkType: hard + +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": + version: 7.20.7 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" + dependencies: + "@babel/compat-data": "npm:^7.20.5" + "@babel/helper-compilation-targets": "npm:^7.20.7" + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.20.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.0.0": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/plugin-syntax-flow@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/618de04360a96111408abdaafaba2efbaef0d90faad029d50e0281eaad5d7c7bd2ce4420bbac0ee27ad84c2b7bbc3e48f782064f81ed5bc40c398637991004c7 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0": + version: 7.24.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/72f0340d73e037f0702c61670054e0af66ece7282c5c2f4ba8de059390fee502de282defdf15959cd9f71aa18dc5c5e4e7a0fde317799a0600c6c4e0a656d82b + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.23.3": + version: 7.24.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6cec76fbfe6ca81c9345c2904d8d9a8a0df222f9269f0962ed6eb2eb8f3f10c2f15e993d1ef09dbaf97726bf1792b5851cf5bd9a769f966a19448df6be95d19a + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f44bfacf087dc21b422bab99f4e9344ee7b695b05c947dacae66de05c723ab9d91800be7edc1fa016185e8c819f3aca2b4a5f66d8a4d1e47d9bad80b8fa55b8e + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6fbaa85f5204f34845dfc0bebf62fdd3ac5a286241c85651e59d426001e7a1785ac501f154e093e0b8ee49e1f51e3f8b06575a5ae8d4a9406d43e4816bf18c37 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-block-scoping@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1a230ad95d9672626831e22df9b4838901681fa11d44c3811d71ca64ea53f5e87de2abef865f70fe62657053278d9034cc4ea3bab0fd3300bdf9e73b3f85f97a + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-classes@npm:7.24.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-replace-supers": "npm:^7.24.1" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/586a95826be4d68056fa23d8e6c34353ce2ea59bf3ca8cf62bc784e60964d492d76e1b48760c43fd486ffb65a79d3fed9a4f91289e4f526f88c3b6acc0dfb00e + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/template": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8292c508b656b7722e2c2ca0f6f31339852e3ed2b9b80f6e068a4010e961b431ca109ecd467fc906283f4b1574c1e7b1cb68d35a4dea12079d386c15ff7e0eac + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a08e706a9274a699abc3093f38c72d4a5354eac11c44572cc9ea049915b6e03255744297069fd94fcce82380725c5d6b1b11b9a84c0081aa3aa6fc2fdab98ef6 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/plugin-syntax-flow": "npm:^7.24.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e6aa9cbad0441867598d390d4df65bc8c6b797574673e4eedbdae0cc528e81e00f4b2cd38f7d138b0f04bcdd2540384a9812d5d76af5abfa06aee1c7fc20ca58 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-for-of@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e4bc92b1f334246e62d4bde079938df940794db564742034f6597f2e38bd426e11ae8c5670448e15dd6e45c462f2a9ab3fa87259bddf7c08553ffd9457fc2b2c + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-function-name@npm:7.24.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/65c1735ec3b5e43db9b5aebf3c16171c04b3050c92396b9e22dda0d2aaf51f43fdcf147f70a40678fd9a4ee2272a5acec4826e9c21bcf968762f4c184897ad75 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-literals@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a27cc7d565ee57b5a2bf136fa889c5c2f5988545ae7b3b2c83a7afe5dd37dfac80dca88b1c633c65851ce6af7d2095c04c01228657ce0198f918e64b5ccd01fa + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2af731d02aa4c757ef80c46df42264128cbe45bfd15e1812d1a595265b690a44ad036041c406a73411733540e1c4256d8174705ae6b8cfaf757fc175613993fd + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-simple-access": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/efb3ea2047604a7eb44a9289311ebb29842fe6510ff8b66a77a60440448c65e1312a60dc48191ed98246bdbd163b5b6f3348a0669bcc0e3809e69c7c776b20fa + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-object-super@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-replace-supers": "npm:^7.24.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d30e6b9e59a707efd7ed524fc0a8deeea046011a6990250f2e9280516683138e2d13d9c52daf41d78407bdab0378aef7478326f2a15305b773d851cb6e106157 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7": + version: 7.24.1 + resolution: "@babel/plugin-transform-parameters@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eee8d2f72d3ee0876dc8d85f949f4adf34685cfe36c814ebc20c96315f3891a53d43c764d636b939e34d55e6a6a4af9aa57ed0d7f9439eb5771a07277c669e55 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3bf3e01f7bb8215a8b6d0081b6f86fea23e3a4543b619e059a264ede028bc58cdfb0acb2c43271271915a74917effa547bc280ac636a9901fa9f2fb45623f87e + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-react-display-name@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/adf1a3cb0df8134533a558a9072a67e34127fd489dfe431c3348a86dd41f3e74861d5d5134bbb68f61a9cdb3f7e79b2acea1346be94ce4d3328a64e5a9e09be1 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": + version: 7.24.1 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ea362ff94b535c753f560eb1f5e063dc72bbbca17ed58837a949a7b289d5eacc7b0a28296d1932c94429b168d6040cdee5484a59b9e3c021f169e0ee137e6a27 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": + version: 7.24.1 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ea8e3263c0dc51fbc97c156cc647150a757cc56de10781287353d0ce9b2dcd6b6d93d573c0142d7daf5d6fb554c74fa1971ae60764924ea711161d8458739b63 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.0.0": + version: 7.23.4 + resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/types": "npm:^7.23.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8273347621183aada3cf1f3019d8d5f29467ba13a75b72cb405bc7f23b7e05fd85f4edb1e4d9f0103153dddb61826a42dc24d466480d707f8932c1923a4c25fa + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-spread@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/50a0302e344546d57e5c9f4dea575f88e084352eeac4e9a3e238c41739eef2df1daf4a7ebbb3ccb7acd3447f6a5ce9938405f98bf5f5583deceb8257f5a673c9 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.0.0": + version: 7.24.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f73bcda5488eb81c6e7a876498d9e6b72be32fca5a4d9db9053491a2d1300cd27b889b463fd2558f3cd5826a85ed00f61d81b234aa55cb5a0abf1b6fa1bd5026 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.23.4, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": + version: 7.24.1 + resolution: "@babel/runtime@npm:7.24.1" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/500c6a99ddd84f37c7bc5dbc84777af47b1372b20e879941670451d55484faf18a673c5ebee9ca2b0f36208a729417873b35b1b92e76f811620f6adf7b8cb0f1 + languageName: node + linkType: hard + +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/template@npm:7.24.0" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/9d3dd8d22fe1c36bc3bdef6118af1f4b030aaf6d7d2619f5da203efa818a2185d717523486c111de8d99a8649ddf4bbf6b2a7a64962d8411cf6a8fa89f010e54 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/traverse@npm:7.24.1" + dependencies: + "@babel/code-frame": "npm:^7.24.1" + "@babel/generator": "npm:^7.24.1" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/c087b918f6823776537ba246136c70e7ce0719fc05361ebcbfd16f4e6f2f6f1f8f4f9167f1d9b675f27d12074839605189cc9d689de20b89a85e7c140f23daab + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.24.0, @babel/types@npm:^7.8.3": + version: 7.24.0 + resolution: "@babel/types@npm:7.24.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.23.4" + "@babel/helper-validator-identifier": "npm:^7.22.20" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/777a0bb5dbe038ca4c905fdafb1cdb6bdd10fe9d63ce13eca0bd91909363cbad554a53dc1f902004b78c1dcbc742056f877f2c99eeedff647333b1fadf51235d + languageName: node + linkType: hard + +"@coinbase/wallet-sdk@npm:^3.6.6": + version: 3.7.2 + resolution: "@coinbase/wallet-sdk@npm:3.7.2" + dependencies: + "@metamask/safe-event-emitter": "npm:2.0.0" + "@solana/web3.js": "npm:^1.70.1" + bind-decorator: "npm:^1.0.11" + bn.js: "npm:^5.1.1" + buffer: "npm:^6.0.3" + clsx: "npm:^1.1.0" + eth-block-tracker: "npm:6.1.0" + eth-json-rpc-filters: "npm:5.1.0" + eth-rpc-errors: "npm:4.0.2" + json-rpc-engine: "npm:6.1.0" + keccak: "npm:^3.0.1" + preact: "npm:^10.5.9" + qs: "npm:^6.10.3" + rxjs: "npm:^6.6.3" + sha.js: "npm:^2.4.11" + stream-browserify: "npm:^3.0.0" + util: "npm:^0.12.4" + checksum: 10c0/0b76bc5b032e2ae39ba8f6e2c758c77c9cb366675822a50ab89d0d176e9b654b1a65a7f1363f9272fd04c8e01a01ad78523b8cac0ca95ef8f6e9a781e3fb20b6 + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/babel-plugin@npm:11.11.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.16.7" + "@babel/runtime": "npm:^7.18.3" + "@emotion/hash": "npm:^0.9.1" + "@emotion/memoize": "npm:^0.8.1" + "@emotion/serialize": "npm:^1.1.2" + babel-plugin-macros: "npm:^3.1.0" + convert-source-map: "npm:^1.5.0" + escape-string-regexp: "npm:^4.0.0" + find-root: "npm:^1.1.0" + source-map: "npm:^0.5.7" + stylis: "npm:4.2.0" + checksum: 10c0/89cbb6ec0e52c8ee9c2a4b9889ccd4fc3a75d28091d835bfac6d7c4565d3338621e23af0a85f3bcd133e1cae795c692e1dadada015784d4b0554aa5bb111df43 + languageName: node + linkType: hard + +"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" + dependencies: + "@emotion/memoize": "npm:^0.8.1" + "@emotion/sheet": "npm:^1.2.2" + "@emotion/utils": "npm:^1.2.1" + "@emotion/weak-memoize": "npm:^0.3.1" + stylis: "npm:4.2.0" + checksum: 10c0/a23ab5ab2fd08e904698106d58ad3536fed51cc1aa0ef228e95bb640eaf11f560dbd91a395477b0d84e1e3c20150263764b4558517cf6576a89d2d6cc5253688 + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.0, @emotion/hash@npm:^0.9.1": + version: 0.9.1 + resolution: "@emotion/hash@npm:0.9.1" + checksum: 10c0/cdafe5da63fc1137f3db6e232fdcde9188b2b47ee66c56c29137199642a4086f42382d866911cfb4833cae2cc00271ab45cad3946b024f67b527bb7fac7f4c9d + languageName: node + linkType: hard + +"@emotion/is-prop-valid@npm:^1.2.1": + version: 1.2.2 + resolution: "@emotion/is-prop-valid@npm:1.2.2" + dependencies: + "@emotion/memoize": "npm:^0.8.1" + checksum: 10c0/bb1530dcb4e0e5a4fabb219279f2d0bc35796baf66f6241f98b0d03db1985c890a8cafbea268e0edefd5eeda143dbd5c09a54b5fba74cee8c69b98b13194af50 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: 10c0/dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78 + languageName: node + linkType: hard + +"@emotion/react@npm:^11.11.4, @emotion/react@npm:^11.8.1": + version: 11.11.4 + resolution: "@emotion/react@npm:11.11.4" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/cache": "npm:^11.11.0" + "@emotion/serialize": "npm:^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" + "@emotion/utils": "npm:^1.2.1" + "@emotion/weak-memoize": "npm:^0.3.1" + hoist-non-react-statics: "npm:^3.3.1" + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/6df892fd9e04b5c8c37aacfd7f461631e04e00e845edc3c5b2955ab8ad681abf5cd49584101f579427e08b82f2f88369c78d37ae2fe9360a8f68fd4e51b8e448 + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3": + version: 1.1.3 + resolution: "@emotion/serialize@npm:1.1.3" + dependencies: + "@emotion/hash": "npm:^0.9.1" + "@emotion/memoize": "npm:^0.8.1" + "@emotion/unitless": "npm:^0.8.1" + "@emotion/utils": "npm:^1.2.1" + csstype: "npm:^3.0.2" + checksum: 10c0/875241eafaa30e7d3b7cf9b585d8c1f224cbf627a674e87eb1d7662dafa76a8c8d67f14a79dbf7d1eaa017e9f68389962990fbcc699d5ad65035a1a047432a3f + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: 10c0/69827a1bfa43d7b188f1d8cea42163143a36312543fdade5257c459a2b3efd7ce386aac84ba152bc2517a4f7e54384c04800b26adb382bb284ac7e4ad40e584b + languageName: node + linkType: hard + +"@emotion/styled@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/styled@npm:11.11.0" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/is-prop-valid": "npm:^1.2.1" + "@emotion/serialize": "npm:^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" + "@emotion/utils": "npm:^1.2.1" + peerDependencies: + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/a168bd7a8a6f254e54a321be4c7b7dd4bf65815e6570ba7c5a435b7d5aeebd76434e04886db7799a955817c8d5bf0103a3dcc3c785fba2bb53922320dda59a10 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/unitless@npm:0.8.1" + checksum: 10c0/a1ed508628288f40bfe6dd17d431ed899c067a899fa293a13afe3aed1d70fac0412b8a215fafab0b42829360db687fecd763e5f01a64ddc4a4b58ec3112ff548 + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": + version: 1.0.1 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/a15b2167940e3a908160687b73fc4fcd81e59ab45136b6967f02c7c419d9a149acd22a416b325c389642d4f1c3d33cf4196cad6b618128b55b7c74f6807a240b + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: 10c0/db43ca803361740c14dfb1cca1464d10d27f4c8b40d3e8864e6932ccf375d1450778ff4e4eadee03fb97f2aeb18de9fae98294905596a12ff7d4cd1910414d8d + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: 10c0/ed514b3cb94bbacece4ac2450d98898066c0a0698bdeda256e312405ca53634cb83c75889b25cd8bbbe185c80f4c05a1f0a0091e1875460ba6be61d0334f0b8a + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/aix-ppc64@npm:0.20.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm64@npm:0.20.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm@npm:0.20.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-x64@npm:0.20.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-arm64@npm:0.20.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-x64@npm:0.20.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-arm64@npm:0.20.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-x64@npm:0.20.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm64@npm:0.20.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm@npm:0.20.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ia32@npm:0.20.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-loong64@npm:0.20.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-mips64el@npm:0.20.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ppc64@npm:0.20.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-riscv64@npm:0.20.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-s390x@npm:0.20.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-x64@npm:0.20.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/netbsd-x64@npm:0.20.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/openbsd-x64@npm:0.20.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/sunos-x64@npm:0.20.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-arm64@npm:0.20.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-ia32@npm:0.20.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-x64@npm:0.20.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.0": + version: 8.57.0 + resolution: "@eslint/js@npm:8.57.0" + checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.0.0": + version: 1.6.0 + resolution: "@floating-ui/core@npm:1.6.0" + dependencies: + "@floating-ui/utils": "npm:^0.2.1" + checksum: 10c0/667a68036f7dd5ed19442c7792a6002ca02d1799221c4396691bbe0b6008b48f6ccad581225e81fa266bb91232f6c66838a5f825f554217e1ec886178b93381b + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.1, @floating-ui/dom@npm:^1.6.1": + version: 1.6.3 + resolution: "@floating-ui/dom@npm:1.6.3" + dependencies: + "@floating-ui/core": "npm:^1.0.0" + "@floating-ui/utils": "npm:^0.2.0" + checksum: 10c0/d6cac10877918ce5a8d1a24b21738d2eb130a0191043d7c0dd43bccac507844d3b4dc5d4107d3891d82f6007945ca8fb4207a1252506e91c37e211f0f73cf77e + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.8": + version: 2.0.8 + resolution: "@floating-ui/react-dom@npm:2.0.8" + dependencies: + "@floating-ui/dom": "npm:^1.6.1" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/4d87451e2dcc54b4753a0d81181036e47821cfd0d4c23f7e9c31590c7c91fb15fb0a5a458969a5ddabd61601eca5875ebd4e40bff37cee31f373b8f1ccc64518 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.1": + version: 0.2.1 + resolution: "@floating-ui/utils@npm:0.2.1" + checksum: 10c0/ee77756712cf5b000c6bacf11992ffb364f3ea2d0d51cc45197a7e646a17aeb86ea4b192c0b42f3fbb29487aee918a565e84f710b8c3645827767f406a6b4cc9 + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:^5.0.2": + version: 5.0.2 + resolution: "@graphql-codegen/add@npm:5.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/667bacb3c4a1f1e041b54d96e802e89e057f20a4129fc1dd3ab72848f2531e8d74d415607d581630073bbc34831c8e6da4f9d669cb761ccc0cc4102c86eae5d0 + languageName: node + linkType: hard + +"@graphql-codegen/cli@npm:^5.0.2": + version: 5.0.2 + resolution: "@graphql-codegen/cli@npm:5.0.2" + dependencies: + "@babel/generator": "npm:^7.18.13" + "@babel/template": "npm:^7.18.10" + "@babel/types": "npm:^7.18.13" + "@graphql-codegen/client-preset": "npm:^4.2.2" + "@graphql-codegen/core": "npm:^4.0.2" + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/apollo-engine-loader": "npm:^8.0.0" + "@graphql-tools/code-file-loader": "npm:^8.0.0" + "@graphql-tools/git-loader": "npm:^8.0.0" + "@graphql-tools/github-loader": "npm:^8.0.0" + "@graphql-tools/graphql-file-loader": "npm:^8.0.0" + "@graphql-tools/json-file-loader": "npm:^8.0.0" + "@graphql-tools/load": "npm:^8.0.0" + "@graphql-tools/prisma-loader": "npm:^8.0.0" + "@graphql-tools/url-loader": "npm:^8.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@whatwg-node/fetch": "npm:^0.8.0" + chalk: "npm:^4.1.0" + cosmiconfig: "npm:^8.1.3" + debounce: "npm:^1.2.0" + detect-indent: "npm:^6.0.0" + graphql-config: "npm:^5.0.2" + inquirer: "npm:^8.0.0" + is-glob: "npm:^4.0.1" + jiti: "npm:^1.17.1" + json-to-pretty-yaml: "npm:^1.2.2" + listr2: "npm:^4.0.5" + log-symbols: "npm:^4.0.0" + micromatch: "npm:^4.0.5" + shell-quote: "npm:^1.7.3" + string-env-interpolation: "npm:^1.0.1" + ts-log: "npm:^2.2.3" + tslib: "npm:^2.4.0" + yaml: "npm:^2.3.1" + yargs: "npm:^17.0.0" + peerDependencies: + "@parcel/watcher": ^2.1.0 + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + "@parcel/watcher": + optional: true + bin: + gql-gen: cjs/bin.js + graphql-code-generator: cjs/bin.js + graphql-codegen: cjs/bin.js + graphql-codegen-esm: esm/bin.js + checksum: 10c0/6a54981bc0c40f2c95ab38563af1bb9b1ce5b01ba81ebef830f33b9e46623e86fef9ab41059e1187524029b430c8cd58e4e9f4e255f588dec1eaed6b329d6b9d + languageName: node + linkType: hard + +"@graphql-codegen/client-preset@npm:^4.2.2": + version: 4.2.4 + resolution: "@graphql-codegen/client-preset@npm:4.2.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/template": "npm:^7.20.7" + "@graphql-codegen/add": "npm:^5.0.2" + "@graphql-codegen/gql-tag-operations": "npm:4.0.6" + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/typed-document-node": "npm:^5.0.6" + "@graphql-codegen/typescript": "npm:^4.0.6" + "@graphql-codegen/typescript-operations": "npm:^4.2.0" + "@graphql-codegen/visitor-plugin-common": "npm:^5.1.0" + "@graphql-tools/documents": "npm:^1.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-typed-document-node/core": "npm:3.2.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/7e6a9ad92d2503f20b5c6abba0f50b46170b7692234bc6d1cc0656a63915de7a2190f260124107e8ba5780a0a5b6f26358e5590070d29738dc73c829958ffcc5 + languageName: node + linkType: hard + +"@graphql-codegen/core@npm:^4.0.2": + version: 4.0.2 + resolution: "@graphql-codegen/core@npm:4.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/schema": "npm:^10.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/8387a91dd852e8c45e76843453fc50dba4e63079f1ecfe2242f3c49561d229d55d1083905f46049ddd7f9f94b8e55a96e6deeac8a0c1db34a7312f5f216ca229 + languageName: node + linkType: hard + +"@graphql-codegen/gql-tag-operations@npm:4.0.6": + version: 4.0.6 + resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.6" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/visitor-plugin-common": "npm:5.1.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/e974f167c1672e8db68ddff9bc563cfce33879cc5a8014e91d73e4968443bfc5fd60d40721d12b06eb4351e39efeb823aff1b0e71c6bd73f95594600e791143c + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" + dependencies: + "@graphql-tools/utils": "npm:^8.8.0" + change-case-all: "npm:1.0.14" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^3.0.0": + version: 3.1.2 + resolution: "@graphql-codegen/plugin-helpers@npm:3.1.2" + dependencies: + "@graphql-tools/utils": "npm:^9.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/fbe326270aef17792b326ad8d8ae3e82acf1b60f3137a4d99eb605c0c8d709830537fec112705484b5fd2c9ee1d0588fbf4269f31c9a5852567c5d4c0c7057b7 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^5.0.3": + version: 5.0.3 + resolution: "@graphql-codegen/plugin-helpers@npm:5.0.3" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/1ea0d46ccdf449f43afe8ee0222bf96769b3efdb8262688964f4eff725c43caac4caa36859bcbd6a2ba611aea2adaa6bb2e86bc1d06ec9636f11952ebe260036 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:^4.0.2": + version: 4.0.2 + resolution: "@graphql-codegen/schema-ast@npm:4.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/533b1bfa6c01d02ff2ec688a478e8daeb9bda1d69d63b1bca8adf9ab606a4a315da4e0f45444836646b8e539e8c76891af536afd9fb3a7e36d40f8bd04218748 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:^5.0.6": + version: 5.0.6 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.6" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/visitor-plugin-common": "npm:5.1.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/d4a0ab10df7f2a91b4b2bac9a8ac01c161263cb2b69053ada4f46f431e30feb7a3d82d0960d5eaeab06ce44bb2ddaabea2f487854beef077be1b669e17f3ebc0 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:^4.2.0": + version: 4.2.0 + resolution: "@graphql-codegen/typescript-operations@npm:4.2.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/typescript": "npm:^4.0.6" + "@graphql-codegen/visitor-plugin-common": "npm:5.1.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/40fdf8060a179e4403f16da1902f45332dbc3d02a7d0bda26e8901c42b9fec0cc4ca6c01d81983c2730b28ccacee3c6489039c50419fbb19eeae9cb88372719a + languageName: node + linkType: hard + +"@graphql-codegen/typescript-react-query@npm:^6.1.0": + version: 6.1.0 + resolution: "@graphql-codegen/typescript-react-query@npm:6.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^3.0.0" + "@graphql-codegen/visitor-plugin-common": "npm:2.13.1" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/fc4786ddc4a10520ac85c627e270a8ae1e1d84903ae691f2e8fc997cb4a4cc19c9d65c494a587cb19946f650c90e70128b8af6f0e3407ecc6fed1685a1bc68fd + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:^4.0.6": + version: 4.0.6 + resolution: "@graphql-codegen/typescript@npm:4.0.6" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/schema-ast": "npm:^4.0.2" + "@graphql-codegen/visitor-plugin-common": "npm:5.1.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/68b6f1780d0c411e8fa1a1f62e03a2a2113fb00e51f6b09b03684e5bdefded7f320ecb78c1c8b24fe24f89a1af3362a498ed421e18168b44c9dce2d669e7c9c1 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^2.7.2" + "@graphql-tools/optimize": "npm:^1.3.0" + "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" + "@graphql-tools/utils": "npm:^8.8.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.14" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:5.1.0, @graphql-codegen/visitor-plugin-common@npm:^5.1.0": + version: 5.1.0 + resolution: "@graphql-codegen/visitor-plugin-common@npm:5.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/optimize": "npm:^2.0.0" + "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/500b0da52c9e1aab514db3eb2481d5c780238a5382745f354779d69d17d5d2b0b9e07386690557f0c387d0634f02c7f93c71d4e228843db2c5292ac414ebc875 + languageName: node + linkType: hard + +"@graphql-tools/apollo-engine-loader@npm:^8.0.0": + version: 8.0.1 + resolution: "@graphql-tools/apollo-engine-loader@npm:8.0.1" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/utils": "npm:^10.0.13" + "@whatwg-node/fetch": "npm:^0.9.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/4ef280a8246d2b1ff2be1ad9334fe8d69147b0ed3a32a65f50057ddee27b44708bba8030f75c330e1615d428750ee276919e4ddd4ce16befa4e328f12226afc1 + languageName: node + linkType: hard + +"@graphql-tools/batch-execute@npm:^9.0.4": + version: 9.0.4 + resolution: "@graphql-tools/batch-execute@npm:9.0.4" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/a15d96573d4b1c94795018e306095cbf00129a27fa038204f0709b11851b2b53acf9e75e023420dcaa0b505f953c98208e1d8fe6b18562fe5ade4660c475fe4e + languageName: node + linkType: hard + +"@graphql-tools/code-file-loader@npm:^8.0.0": + version: 8.1.1 + resolution: "@graphql-tools/code-file-loader@npm:8.1.1" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:8.3.0" + "@graphql-tools/utils": "npm:^10.0.13" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/7ab2665f2b00b71a25b1351fe38a1c4d629ab72ce11a05473ce1112e65d4ae9a0e7a5a1afda56b26358cc9745691f7ec030b1d0f2ddced81bbe533f7faecf2f8 + languageName: node + linkType: hard + +"@graphql-tools/delegate@npm:^10.0.4": + version: 10.0.4 + resolution: "@graphql-tools/delegate@npm:10.0.4" + dependencies: + "@graphql-tools/batch-execute": "npm:^9.0.4" + "@graphql-tools/executor": "npm:^1.2.1" + "@graphql-tools/schema": "npm:^10.0.3" + "@graphql-tools/utils": "npm:^10.0.13" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.5.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/60013686e247cee18de197a0f5be163e283e344f26ba83291e111312a41713ec5548cfcf1a0b7fa4bad6a99ff9e26bca481fbedd7533822056b8909e0e4aca04 + languageName: node + linkType: hard + +"@graphql-tools/documents@npm:^1.0.0": + version: 1.0.0 + resolution: "@graphql-tools/documents@npm:1.0.0" + dependencies: + lodash.sortby: "npm:^4.7.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^1.1.2": + version: 1.1.2 + resolution: "@graphql-tools/executor-graphql-ws@npm:1.1.2" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + "@types/ws": "npm:^8.0.0" + graphql-ws: "npm:^5.14.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:^8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/ba7546bf7a4edbf89fd4076ed5cfd0f272415dfc1714c4b3c4595e5e25346afd777db8c8260591ade4da01b2ffaceeae3ad817f8799a647787c0f2ca9d3ede12 + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^1.0.9": + version: 1.0.9 + resolution: "@graphql-tools/executor-http@npm:1.0.9" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/fetch": "npm:^0.9.0" + extract-files: "npm:^11.0.0" + meros: "npm:^1.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/d1e5bea39ca4c2d6069f097ebbe6f96690a7497b384766a8616fb26cb59ae4a0a2fff31ceb1a4f682dc0d78772d157a786cf680d2ac2ac3fbc2eb18b8813e8f3 + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^1.0.6": + version: 1.0.6 + resolution: "@graphql-tools/executor-legacy-ws@npm:1.0.6" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + "@types/ws": "npm:^8.0.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:^8.15.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/288091b4ebda83baaf8581620047d3df9ba3a3df6bd554399b67e20d25c6825e3356e18d4d222188a5e44bf7f6c6fee2470b09e14eace149221d02e0caebc8dc + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^1.2.1": + version: 1.2.2 + resolution: "@graphql-tools/executor@npm:1.2.2" + dependencies: + "@graphql-tools/utils": "npm:^10.1.1" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/e657c665df06594f276a2abf9dad4075334bc9da43ed08f72dbc23adc6996d0157812011edc1795d8e5d022dcbe219003cdd7cbc3cbd17f63baa64b93c718da7 + languageName: node + linkType: hard + +"@graphql-tools/git-loader@npm:^8.0.0": + version: 8.0.5 + resolution: "@graphql-tools/git-loader@npm:8.0.5" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:8.3.0" + "@graphql-tools/utils": "npm:^10.0.13" + is-glob: "npm:4.0.3" + micromatch: "npm:^4.0.4" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/cef82269561ee24593e952dac608042874ef74da8e9495b9fc0901eb6578b0f94fac640fe3a9b8abccd1020e013b4580fda5c779a15a5eb45c52af5bf6c0ffcf + languageName: node + linkType: hard + +"@graphql-tools/github-loader@npm:^8.0.0": + version: 8.0.1 + resolution: "@graphql-tools/github-loader@npm:8.0.1" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/executor-http": "npm:^1.0.9" + "@graphql-tools/graphql-tag-pluck": "npm:^8.0.0" + "@graphql-tools/utils": "npm:^10.0.13" + "@whatwg-node/fetch": "npm:^0.9.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/83787b69d696e69c618993fa9fe73fec82daab849173a1b96a538c33c4988b14f506a4604712882c30f537d0aa81eabf21ce30effda369c7d1763d8f14adf711 + languageName: node + linkType: hard + +"@graphql-tools/graphql-file-loader@npm:^8.0.0": + version: 8.0.1 + resolution: "@graphql-tools/graphql-file-loader@npm:8.0.1" + dependencies: + "@graphql-tools/import": "npm:7.0.1" + "@graphql-tools/utils": "npm:^10.0.13" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/d27a9dc5329f16cdeeb9fd32f465da8ed0ef4127f10a9862f8b7096ccaaa33aa8d15c6269b2c27a8669531f95f4d9ac162e8b799434cbe4dabe02f4e6fd628a9 + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:8.3.0, @graphql-tools/graphql-tag-pluck@npm:^8.0.0": + version: 8.3.0 + resolution: "@graphql-tools/graphql-tag-pluck@npm:8.3.0" + dependencies: + "@babel/core": "npm:^7.22.9" + "@babel/parser": "npm:^7.16.8" + "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/traverse": "npm:^7.16.8" + "@babel/types": "npm:^7.16.8" + "@graphql-tools/utils": "npm:^10.0.13" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c5ca7470d610228b5f7a5fcf1ed594fc373f66b02123f0ef39108bb3874f4a81391783441ff97db8511c7f2487b6e18010428b48d54fe63b685e6c625065015d + languageName: node + linkType: hard + +"@graphql-tools/import@npm:7.0.1": + version: 7.0.1 + resolution: "@graphql-tools/import@npm:7.0.1" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + resolve-from: "npm:5.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/20d693874ceb1e4213f1d276786f87fe6b158125a103d9631f844b433aa0c2e0afd444b99393558ff88f5be7787e2d40f8c49739d1096e9312bc45ca6a4a5f51 + languageName: node + linkType: hard + +"@graphql-tools/json-file-loader@npm:^8.0.0": + version: 8.0.1 + resolution: "@graphql-tools/json-file-loader@npm:8.0.1" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/690c7d58dd06c6c5109fa09820648c581cd4b1ca3842ec121d6ae44a324b1e1c16f32b662fb92a6699bcb9be676fe4fe2e9a9f50a6d4df7f3d991e9167115841 + languageName: node + linkType: hard + +"@graphql-tools/load@npm:^8.0.0": + version: 8.0.2 + resolution: "@graphql-tools/load@npm:8.0.2" + dependencies: + "@graphql-tools/schema": "npm:^10.0.3" + "@graphql-tools/utils": "npm:^10.0.13" + p-limit: "npm:3.1.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/845535c3d47aba69feb29091f7c3829ea4684041e763c73929c670eaa0e8cf82e1981dac7e6fe30426e384fa81fd9de0ee62d3d2de0a4e92b3a5380d8af71063 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:^9.0.0, @graphql-tools/merge@npm:^9.0.3": + version: 9.0.3 + resolution: "@graphql-tools/merge@npm:9.0.3" + dependencies: + "@graphql-tools/utils": "npm:^10.0.13" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/ce2a6763488dbeeb778824780037ce5a00fd8c4a6337078d52c4fb4bcac28759b801ede280014d281472ee92416114e4c0eca621c618db617cb351df7d751570 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^1.3.0": + version: 1.4.0 + resolution: "@graphql-tools/optimize@npm:1.4.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/10be773b0082fe54b9505469a89925f1a5e33f866453b88cd411261951e8718f8720451e07c56cbfb762970b56b9b45c7c748d62afcdcf9414ec64533e94e543 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-tools/optimize@npm:2.0.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd + languageName: node + linkType: hard + +"@graphql-tools/prisma-loader@npm:^8.0.0": + version: 8.0.3 + resolution: "@graphql-tools/prisma-loader@npm:8.0.3" + dependencies: + "@graphql-tools/url-loader": "npm:^8.0.2" + "@graphql-tools/utils": "npm:^10.0.13" + "@types/js-yaml": "npm:^4.0.0" + "@types/json-stable-stringify": "npm:^1.0.32" + "@whatwg-node/fetch": "npm:^0.9.0" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.1" + dotenv: "npm:^16.0.0" + graphql-request: "npm:^6.0.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" + jose: "npm:^5.0.0" + js-yaml: "npm:^4.0.0" + json-stable-stringify: "npm:^1.0.1" + lodash: "npm:^4.17.20" + scuid: "npm:^1.1.0" + tslib: "npm:^2.4.0" + yaml-ast-parser: "npm:^0.0.43" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/603274a1384af429b6558f9d4bca2b6263a6a6a3cc24c3c66ed0a7d6e6656f3e27035cd1ee12baa844dc9b6c42d90170a48ea0c8e475914f8c98c566cc729bd7 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": + version: 6.5.18 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.18" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/9d74d65da8bf474e256ff0cfb77afb442a968451ded6a92b8348d8ac1bca3b2c13a578ab29ac869d10d53e0101219fe8283d485fff920aa7abcc68fcbbdd9a36 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^7.0.0": + version: 7.0.1 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.1" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^10.0.13" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/4bb08c764b645fc602f8c45c518d576132dcd50e6ac35a70ae1dc6aff57521ad96be85ee72ea2cecc05d3d281fcbb47a976a7549034b0230deeae5de74cb24bc + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:^10.0.0, @graphql-tools/schema@npm:^10.0.3": + version: 10.0.3 + resolution: "@graphql-tools/schema@npm:10.0.3" + dependencies: + "@graphql-tools/merge": "npm:^9.0.3" + "@graphql-tools/utils": "npm:^10.0.13" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/420bfa29d00927da085a3e521d7d6de5694f3abcdf5ba18655cc2a6b6145816d74503b13ba3ea15c7c65411023c9d81cfb73e7d49aa35ccfb91943f16ab9db8f + languageName: node + linkType: hard + +"@graphql-tools/url-loader@npm:^8.0.0, @graphql-tools/url-loader@npm:^8.0.2": + version: 8.0.2 + resolution: "@graphql-tools/url-loader@npm:8.0.2" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/delegate": "npm:^10.0.4" + "@graphql-tools/executor-graphql-ws": "npm:^1.1.2" + "@graphql-tools/executor-http": "npm:^1.0.9" + "@graphql-tools/executor-legacy-ws": "npm:^1.0.6" + "@graphql-tools/utils": "npm:^10.0.13" + "@graphql-tools/wrap": "npm:^10.0.2" + "@types/ws": "npm:^8.0.0" + "@whatwg-node/fetch": "npm:^0.9.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.11" + ws: "npm:^8.12.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/7ae1084bb2218c0b085cfc6c70a6a488225e4154873495a768bbcc6f3b9537384eb5062400b784e3558645ee95384d5aa44a634d60246809bb3604f2ac4ffa84 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.0.13, @graphql-tools/utils@npm:^10.1.1": + version: 10.1.2 + resolution: "@graphql-tools/utils@npm:10.1.2" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" + dset: "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/ae78ef4f6c8e58e0ca4023b66229ddd1263caee58ca8353cc4dca8ded5c751f4f2711ff9fbe830dbd84f05ae850db96c6098012644d47142b34ad2d4e96731ae + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.2.1": + version: 9.2.1 + resolution: "@graphql-tools/utils@npm:9.2.1" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^10.0.2": + version: 10.0.5 + resolution: "@graphql-tools/wrap@npm:10.0.5" + dependencies: + "@graphql-tools/delegate": "npm:^10.0.4" + "@graphql-tools/schema": "npm:^10.0.3" + "@graphql-tools/utils": "npm:^10.1.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/3987542491c352eab70bd0691fb5685fe09ea28ffdbb14b5daa83d27d2cc6a8ac443370ecc3771ab127803e2bf045c675b21bae05ee26b2cde5b6ba6fd18533f + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.14": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.2 + resolution: "@humanwhocodes/object-schema@npm:2.0.2" + checksum: 10c0/6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@kamilkisiela/fast-url-parser@npm:^1.1.4": + version: 1.1.4 + resolution: "@kamilkisiela/fast-url-parser@npm:1.1.4" + checksum: 10c0/2c85202cb4924720ac812c8bc06967fd5df4db759a68aa3acc2962b8cf9e2b3bc131de863f00473c0b0602df13891b35140f667a87eea04c9b897b6c1ae89c4a + languageName: node + linkType: hard + +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": + version: 1.2.0 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.0" + checksum: 10c0/016168cf6901ab343462c13fb168dda6d549f8b42680aa394e6b7cd0af7cce51271e00dbfa5bbbe388912bf89cbb8f941a21cc3ec9bf95d6a84b6241aa9e5a72 + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.0.0" + checksum: 10c0/10f1d25e24e32feb21c4c6f9e11d062901241602e12c4ecf746b3138f87fed4d8394194645514d5c1bfd5f33f3fd56ee8ef41344e2cb4413c40fe4961ec9d419 + languageName: node + linkType: hard + +"@metamask/safe-event-emitter@npm:2.0.0, @metamask/safe-event-emitter@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/safe-event-emitter@npm:2.0.0" + checksum: 10c0/a86b91f909834dc14de7eadd38b22d4975f6529001d265cd0f5c894351f69f39447f1ef41b690b9849c86dd2a25a39515ef5f316545d36aea7b3fc50ee930933 + languageName: node + linkType: hard + +"@metamask/utils@npm:^3.0.1": + version: 3.6.0 + resolution: "@metamask/utils@npm:3.6.0" + dependencies: + "@types/debug": "npm:^4.1.7" + debug: "npm:^4.3.4" + semver: "npm:^7.3.8" + superstruct: "npm:^1.0.3" + checksum: 10c0/4efcdb04d65dabada1c6918a76a2b7ee226bea309a351670d46737e58bf8d9fb17dfe1b707eaee69f865ccc237dcd6df75b487ccdbe6dd77de52c4cd9ee08cf8 + languageName: node + linkType: hard + +"@motionone/animation@npm:^10.15.1, @motionone/animation@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/animation@npm:10.17.0" + dependencies: + "@motionone/easing": "npm:^10.17.0" + "@motionone/types": "npm:^10.17.0" + "@motionone/utils": "npm:^10.17.0" + tslib: "npm:^2.3.1" + checksum: 10c0/51873c9532ccb9f2b8475e871ba3eeebff2171bb2bd88e76bcf1fdb5bc1a7150f319c148063d17c16597038a8993c68033d918cc73a9fec40bb1f78ee8a52764 + languageName: node + linkType: hard + +"@motionone/dom@npm:^10.16.2, @motionone/dom@npm:^10.16.4": + version: 10.17.0 + resolution: "@motionone/dom@npm:10.17.0" + dependencies: + "@motionone/animation": "npm:^10.17.0" + "@motionone/generators": "npm:^10.17.0" + "@motionone/types": "npm:^10.17.0" + "@motionone/utils": "npm:^10.17.0" + hey-listen: "npm:^1.0.8" + tslib: "npm:^2.3.1" + checksum: 10c0/bca972f6d60aa1462993ea1b36f0ba702c8c4644b602e460834d3a4ce88f3c7c1dcfec8810c6598e9cf502ad6d3af718a889ab1661c97ec162979fe9a0ff36ab + languageName: node + linkType: hard + +"@motionone/easing@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/easing@npm:10.17.0" + dependencies: + "@motionone/utils": "npm:^10.17.0" + tslib: "npm:^2.3.1" + checksum: 10c0/9e82cf970cb754c44bc8226fd660c4a546aa06bb6eabb0b8be3a1466fc07920da13195e76d09d81704d059411584ba66de3bfc0192acc585a6fe352bf3e3fe22 + languageName: node + linkType: hard + +"@motionone/generators@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/generators@npm:10.17.0" + dependencies: + "@motionone/types": "npm:^10.17.0" + "@motionone/utils": "npm:^10.17.0" + tslib: "npm:^2.3.1" + checksum: 10c0/b1a951d7c20474b34d31cb199907a3ee4ae5074ff2ab49e18e54a63f5eacba6662e179a76f9b64ed7eaac5922ae934eaeca567f2a48c5a1a3ebf59cc5a43fc9f + languageName: node + linkType: hard + +"@motionone/svelte@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/svelte@npm:10.16.4" + dependencies: + "@motionone/dom": "npm:^10.16.4" + tslib: "npm:^2.3.1" + checksum: 10c0/a3f91d3ac5617ac8a2847abc0c8fad417cdc2cd9d814d60f7de2c909e4beeaf834b45a4288c8af6d26f62958a6c69714313b37ea6cd5aa2a9d1ad5198ec5881f + languageName: node + linkType: hard + +"@motionone/types@npm:^10.15.1, @motionone/types@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/types@npm:10.17.0" + checksum: 10c0/9c91d887b368c93e860c1ff4b245d60d33966ec5bd2525ce91c4e2904c223f79333013fe06140feeab23f27ad9e8546a151e8357c5dc5218c5b658486bac3f82 + languageName: node + linkType: hard + +"@motionone/utils@npm:^10.15.1, @motionone/utils@npm:^10.17.0": + version: 10.17.0 + resolution: "@motionone/utils@npm:10.17.0" + dependencies: + "@motionone/types": "npm:^10.17.0" + hey-listen: "npm:^1.0.8" + tslib: "npm:^2.3.1" + checksum: 10c0/a90dc772245fa379d522d752dcbe80b02b1fcb17da6a3f3ebc725ac0e99b7847d39f1f4a29f10cbf5e8b6157766191ba03e96c75b0fa8378e3a1c4cc8cad728a + languageName: node + linkType: hard + +"@motionone/vue@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/vue@npm:10.16.4" + dependencies: + "@motionone/dom": "npm:^10.16.4" + tslib: "npm:^2.3.1" + checksum: 10c0/0f3096c0956848cb67c4926e65b7034d854cf704573a277679713c5a8045347c3c043f50adad0c84ee3e88c046d35ab88ec4380e5acd729f81900381e0b1fd0d + languageName: node + linkType: hard + +"@mui/base@npm:5.0.0-beta.40": + version: 5.0.0-beta.40 + resolution: "@mui/base@npm:5.0.0-beta.40" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@floating-ui/react-dom": "npm:^2.0.8" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + "@popperjs/core": "npm:^2.11.8" + clsx: "npm:^2.1.0" + prop-types: "npm:^15.8.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/631b4ee389e23d82c16c5845c2849af43000f52f1def639b9bb5bf39fd09f4eab93787d32950b715a7de7b689faab53bb7c9a78f6fd12b663876cf8128d45de1 + languageName: node + linkType: hard + +"@mui/core-downloads-tracker@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/core-downloads-tracker@npm:5.15.14" + checksum: 10c0/9b0845b6071d5fbdacd0bbeba0aa913b2a9c1df3a993a1328bb7ff971aa75f6b69f6c779880303fe836d36ade3471278aff5ee17928c3cf45853d7ee4e815440 + languageName: node + linkType: hard + +"@mui/icons-material@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/icons-material@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + peerDependencies: + "@mui/material": ^5.0.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d0da0ea908c07bd38095d07565e6acfe97ac2ededb8826253675df9ed6c23db65cb4239dbcf55f6a22d43228cb32914e107c2c546308e3f8b908e05e0ee8e3b4 + languageName: node + linkType: hard + +"@mui/lab@npm:^5.0.0-alpha.169": + version: 5.0.0-alpha.169 + resolution: "@mui/lab@npm:5.0.0-alpha.169" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/base": "npm:5.0.0-beta.40" + "@mui/system": "npm:^5.15.14" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + clsx: "npm:^2.1.0" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@mui/material": ">=5.15.0" + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/dcc6026c3ec17ab0c530587785f505d54880e7a82276e77740a86a31f1aa12eb6775c0f4c5392701c487e420609332617280bbee430a0e4e15abeffb1970d6c7 + languageName: node + linkType: hard + +"@mui/material@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/material@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/base": "npm:5.0.0-beta.40" + "@mui/core-downloads-tracker": "npm:^5.15.14" + "@mui/system": "npm:^5.15.14" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + "@types/react-transition-group": "npm:^4.4.10" + clsx: "npm:^2.1.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + react-is: "npm:^18.2.0" + react-transition-group: "npm:^4.4.5" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/ff1372510a6eead377bcd8c984426315c52078a5f1de53b99a8916e604b854d0a6fb958f4bfc6367dc47c8d38cd2f97632d950a400722adda6b2e162ec4dddb5 + languageName: node + linkType: hard + +"@mui/private-theming@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/private-theming@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/utils": "npm:^5.15.14" + prop-types: "npm:^15.8.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/28889505874f03e2aeeb147bc5eefcc537825a91ab9c771a5e60ea0df1eab760e900a3a50fec55b25bc9087e9030be37adbe1acdd81a3e2fcca5a1e0cf5979ec + languageName: node + linkType: hard + +"@mui/styled-engine@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/styled-engine@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@emotion/cache": "npm:^11.11.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.4.1 + "@emotion/styled": ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: 10c0/0d262ea0b3c117f865af1cd52b992592c24432e491b35e712159bb49adfd776ee9a532abbc4ab08889f308e75d30082a0fee809119d5d61a82b3277212655319 + languageName: node + linkType: hard + +"@mui/system@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/system@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@mui/private-theming": "npm:^5.15.14" + "@mui/styled-engine": "npm:^5.15.14" + "@mui/types": "npm:^7.2.14" + "@mui/utils": "npm:^5.15.14" + clsx: "npm:^2.1.0" + csstype: "npm:^3.1.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/42efdaaf42e63109fd0b8de8f316716e23532fcccba1e536d64a48242bfeafe772790c9f901776f6835382c7d596c57ecc7e90dd3f3d5a07976ddb6176f25bcb + languageName: node + linkType: hard + +"@mui/types@npm:^7.2.14": + version: 7.2.14 + resolution: "@mui/types@npm:7.2.14" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d4e0a9fce4bddfb5e0b7b6be1b15b591df33bb90ef0087e4bd5fe85f00f62776c7ed0e4698e7fb43213e1f04064aac1695b53ca52aaeaee7dbba248a792bdd1e + languageName: node + linkType: hard + +"@mui/utils@npm:^5.15.14": + version: 5.15.14 + resolution: "@mui/utils@npm:5.15.14" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@types/prop-types": "npm:^15.7.11" + prop-types: "npm:^15.8.1" + react-is: "npm:^18.2.0" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/36265988477637a011361456b40929de928e215466b72e6c48673a2088610d83e09960a3e0608100448910683079fc80a5e11dbf49b9ce7109dd8e49403ae3b3 + languageName: node + linkType: hard + +"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:1.3.2" + checksum: 10c0/0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 + languageName: node + linkType: hard + +"@noble/curves@npm:^1.2.0": + version: 1.4.0 + resolution: "@noble/curves@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: 10c0/31fbc370df91bcc5a920ca3f2ce69c8cf26dc94775a36124ed8a5a3faf0453badafd2ee4337061ffea1b43c623a90ee8b286a5a81604aaf9563bdad7ff795d18 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: 10c0/2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.3.3": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + +"@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2": + version: 1.3.3 + resolution: "@noble/hashes@npm:1.3.3" + checksum: 10c0/23c020b33da4172c988e44100e33cd9f8f6250b68b43c467d3551f82070ebd9716e0d9d2347427aa3774c85934a35fa9ee6f026fca2117e3fa12db7bedae7668 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.1 + resolution: "@npmcli/agent@npm:2.2.1" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.1" + checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + languageName: node + linkType: hard + +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-wasm@npm:2.4.1" + dependencies: + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + napi-wasm: "npm:^1.1.0" + checksum: 10c0/30a0d4e618c4867a5990025df56dff3a31a01f78b2d108b31e6ed7fabf123a13fd79ee292f547b572e439d272a6157c2ba9fb8e527456951c14283f872bdc16f + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-x64": "npm:2.4.1" + "@parcel/watcher-freebsd-x64": "npm:2.4.1" + "@parcel/watcher-linux-arm-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-musl": "npm:2.4.1" + "@parcel/watcher-linux-x64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-x64-musl": "npm:2.4.1" + "@parcel/watcher-win32-arm64": "npm:2.4.1" + "@parcel/watcher-win32-ia32": "npm:2.4.1" + "@parcel/watcher-win32-x64": "npm:2.4.1" + detect-libc: "npm:^1.0.3" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/33b7112094b9eb46c234d824953967435b628d3d93a0553255e9910829b84cab3da870153c3a870c31db186dc58f3b2db81382fcaee3451438aeec4d786a6211 + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" + dependencies: + asn1js: "npm:^3.0.5" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/65f16b2a7eb91365b6dac47730ffcad4617ef04b821e0a4286c379ac7283588b0a6744032ee686e0914a0886c2a055108ed945b9c4d22821a3b123640b61f3b2 + languageName: node + linkType: hard + +"@peculiar/json-schema@npm:^1.1.12": + version: 1.1.12 + resolution: "@peculiar/json-schema@npm:1.1.12" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 + languageName: node + linkType: hard + +"@peculiar/webcrypto@npm:^1.4.0": + version: 1.4.5 + resolution: "@peculiar/webcrypto@npm:1.4.5" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + webcrypto-core: "npm:^1.7.8" + checksum: 10c0/7cefe2a1329e3d41721268cf483dfd7a7a3bfbdaaba0ca8db9a538b49a51c6977f66f7f85e6f0c2162ff8d09540821bedc6766586d83c4be565b1af49ea81a86 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.1.0": + version: 0.1.1 + resolution: "@pkgr/core@npm:0.1.1" + checksum: 10c0/3f7536bc7f57320ab2cf96f8973664bef624710c403357429fbf680a5c3b4843c1dbd389bb43daa6b1f6f1f007bb082f5abcb76bb2b5dc9f421647743b71d3d8 + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 + languageName: node + linkType: hard + +"@rainbow-me/rainbowkit@npm:^1.3.6": + version: 1.3.6 + resolution: "@rainbow-me/rainbowkit@npm:1.3.6" + dependencies: + "@vanilla-extract/css": "npm:1.14.0" + "@vanilla-extract/dynamic": "npm:2.1.0" + "@vanilla-extract/sprinkles": "npm:1.6.1" + clsx: "npm:2.1.0" + qrcode: "npm:1.5.3" + react-remove-scroll: "npm:2.5.7" + ua-parser-js: "npm:^1.0.37" + peerDependencies: + react: ">=17" + react-dom: ">=17" + viem: ~0.3.19 || ^1.0.0 + wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0 + checksum: 10c0/2629ec739d39f124d50cdb12bb3b49783b4da545b04df4113c662a5844b355c87d475ba53965a59a3d7cc2ad5cf8bbccf002eda34ef56290fcb21123c323341c + languageName: node + linkType: hard + +"@remix-run/router@npm:1.15.3": + version: 1.15.3 + resolution: "@remix-run/router@npm:1.15.3" + checksum: 10c0/aea197447cee21e137d70f0c93e00de70c64fcfae20ae349ade9dc4202e782bd94dbc88be7302d13b6aa6cde38a701b074cd8e09a161d14cecda832a36dd2695 + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:^3.0.4": + version: 3.0.5 + resolution: "@repeaterjs/repeater@npm:3.0.5" + checksum: 10c0/e6e1aca2bbfe0b8e974bc5185a6839f9e78ec8acb96b6d6911a9dfc958443689f9bc38bcc6d554e6c8598f597f0151841aafbd1ee3ef16262ee93d18b2c1d4b5 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.13.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-android-arm64@npm:4.13.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.13.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.13.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.13.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.13.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.13.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.13.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.13.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.13.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.13.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.13.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@safe-global/safe-apps-provider@npm:^0.18.1": + version: 0.18.2 + resolution: "@safe-global/safe-apps-provider@npm:0.18.2" + dependencies: + "@safe-global/safe-apps-sdk": "npm:^9.0.0" + events: "npm:^3.3.0" + checksum: 10c0/599cc714acdb008d57f341e86298d05dd390ded2622dec8171293cb9877be9d36c2877c930e2b935f2f12eda1e11223fa6aaf277673eaccb471bbae51b652def + languageName: node + linkType: hard + +"@safe-global/safe-apps-sdk@npm:^8.1.0": + version: 8.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:8.1.0" + dependencies: + "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" + viem: "npm:^1.0.0" + checksum: 10c0/b6ad0610ed39a1106ecaa91e43e411dd361c8d4d9712cb3fbf15342950b86fe387ce331bd91ae35c90ff036cded188272ea45ca4e3534c2b08e7e3d3c741fdc0 + languageName: node + linkType: hard + +"@safe-global/safe-apps-sdk@npm:^9.0.0": + version: 9.0.0 + resolution: "@safe-global/safe-apps-sdk@npm:9.0.0" + dependencies: + "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" + viem: "npm:^1.6.0" + checksum: 10c0/04f50e68fe8f9fff513b8c5dcf0455c8636b54bb5677a7ff7b96c3d718c948fbc4d5da11112e69da83b811fdfae285d25ad07f88d2111d7e55d68085cb59692e + languageName: node + linkType: hard + +"@safe-global/safe-gateway-typescript-sdk@npm:^3.5.3": + version: 3.19.0 + resolution: "@safe-global/safe-gateway-typescript-sdk@npm:3.19.0" + checksum: 10c0/0f04b63e60f9ecbfed9f1832e381d69bba5c115f9c8f402002c37e2c1d93efb92d76d9edd8054217650860a7753ccb11f86820cde195ecd781aea95bd47e9d9f + languageName: node + linkType: hard + +"@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2": + version: 1.1.5 + resolution: "@scure/base@npm:1.1.5" + checksum: 10c0/6eb07be0202fac74a57c79d0d00a45f6f7e57447010c1e3d90a4275d197829727b7abc54b248fc6f9bef9ae374f7be5ee9154dde5b5b73da773560bf17aa8504 + languageName: node + linkType: hard + +"@scure/bip32@npm:1.3.2": + version: 1.3.2 + resolution: "@scure/bip32@npm:1.3.2" + dependencies: + "@noble/curves": "npm:~1.2.0" + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.2" + checksum: 10c0/2e9c1ce67f72b6c3329483f5fd39fb43ba6dcf732ed7ac63b80fa96341d2bc4cad1ea4c75bfeb91e801968c00df48b577b015fd4591f581e93f0d91178e630ca + languageName: node + linkType: hard + +"@scure/bip39@npm:1.2.1": + version: 1.2.1 + resolution: "@scure/bip39@npm:1.2.1" + dependencies: + "@noble/hashes": "npm:~1.3.0" + "@scure/base": "npm:~1.1.0" + checksum: 10c0/fe951f69dd5a7cdcefbe865bce1b160d6b59ba19bd01d09f0718e54fce37a7d8be158b32f5455f0e9c426a7fbbede3e019bf0baa99bacc88ef26a76a07e115d4 + languageName: node + linkType: hard + +"@sentry-internal/feedback@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry-internal/feedback@npm:7.108.0" + dependencies: + "@sentry/core": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/aa6a4f9e2ec0fc5dc35c101e05dc76f8d44fcacf6b8031c81e6b5e884ebb58c6e995e90fb3ba7c1af7eba949d2c36b0a08e49048e800a9525355999729502476 + languageName: node + linkType: hard + +"@sentry-internal/replay-canvas@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry-internal/replay-canvas@npm:7.108.0" + dependencies: + "@sentry/core": "npm:7.108.0" + "@sentry/replay": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/2827ba43dbf57d6bc9c7d0305ba9f4e3dddb26213a0ff8ca657869dce6f6e6769b66b65f858af4e123946ef01be5f4b2a8a87fb8a5f85f20ac66bfd174972595 + languageName: node + linkType: hard + +"@sentry-internal/tracing@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry-internal/tracing@npm:7.108.0" + dependencies: + "@sentry/core": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/55f5ac30b8073e04b3f6b92d3348f8efa69a3ab5d6bdab69ce871f7f29413a58e829c2164c87ff0235986be1587ba9ce983b288aa05d0d8b38023400d91312f0 + languageName: node + linkType: hard + +"@sentry/browser@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry/browser@npm:7.108.0" + dependencies: + "@sentry-internal/feedback": "npm:7.108.0" + "@sentry-internal/replay-canvas": "npm:7.108.0" + "@sentry-internal/tracing": "npm:7.108.0" + "@sentry/core": "npm:7.108.0" + "@sentry/replay": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/434e8f1dcd16d100bdd31605d79192eb5eceee3476cc38440f1e2b959132605228af0525acbc541f209fc2a0dbb6bfc4cae2ededed61ecdd96908167aa77b2d9 + languageName: node + linkType: hard + +"@sentry/core@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry/core@npm:7.108.0" + dependencies: + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/793a201b83c751fc162ae1bc911de9f7a0837b208be966493fa698e65a7572c9e2b93caf4980e9ff988349fd298ec89cf8e8326260e39ad86b7898ff267bd566 + languageName: node + linkType: hard + +"@sentry/react@npm:^7.108.0": + version: 7.108.0 + resolution: "@sentry/react@npm:7.108.0" + dependencies: + "@sentry/browser": "npm:7.108.0" + "@sentry/core": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + hoist-non-react-statics: "npm:^3.3.2" + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + checksum: 10c0/e303566267fb0d6e8d4a2df96d0dd4d645dd47efd76c5483cf3280a99645b15710ceec585a019de16f467689ea46a94fc3ffa6eece9a8f6c2fb527a3e9d57a86 + languageName: node + linkType: hard + +"@sentry/replay@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry/replay@npm:7.108.0" + dependencies: + "@sentry-internal/tracing": "npm:7.108.0" + "@sentry/core": "npm:7.108.0" + "@sentry/types": "npm:7.108.0" + "@sentry/utils": "npm:7.108.0" + checksum: 10c0/960f4fd866e0cfb434b3581751433d5fa8a2e9ba5e5aff474906437eb54a19458fcd5cefda6fbeb4f5b9c2f1e547be4625951087e2ae8f9b24b87f272ce260c9 + languageName: node + linkType: hard + +"@sentry/types@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry/types@npm:7.108.0" + checksum: 10c0/464ad6e430008fe3cfd3e30df7273b8cdeccfd474d19d05a9ac419749d4adad89c643b20af79199a614bff820cdd1aa01dc3df74307861bec7e90e4d8ac63ea4 + languageName: node + linkType: hard + +"@sentry/utils@npm:7.108.0": + version: 7.108.0 + resolution: "@sentry/utils@npm:7.108.0" + dependencies: + "@sentry/types": "npm:7.108.0" + checksum: 10c0/2b9f5c5763b672cc54fe6821f444dbcf5621a99988c153ab85e268bd1f217c160f351d3c6ad8ec1373049b855df1a7ae51d2110b8c7ce42b490511606e9ff08b + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@solana/buffer-layout@npm:^4.0.1": + version: 4.0.1 + resolution: "@solana/buffer-layout@npm:4.0.1" + dependencies: + buffer: "npm:~6.0.3" + checksum: 10c0/6535f3908cf6dfc405b665795f0c2eaa0482a8c6b1811403945cf7b450e7eb7b40acce3e8af046f2fcc3eea1a15e61d48c418315d813bee4b720d56b00053305 + languageName: node + linkType: hard + +"@solana/web3.js@npm:^1.70.1": + version: 1.91.1 + resolution: "@solana/web3.js@npm:1.91.1" + dependencies: + "@babel/runtime": "npm:^7.23.4" + "@noble/curves": "npm:^1.2.0" + "@noble/hashes": "npm:^1.3.3" + "@solana/buffer-layout": "npm:^4.0.1" + agentkeepalive: "npm:^4.5.0" + bigint-buffer: "npm:^1.1.5" + bn.js: "npm:^5.2.1" + borsh: "npm:^0.7.0" + bs58: "npm:^4.0.1" + buffer: "npm:6.0.3" + fast-stable-stringify: "npm:^1.0.0" + jayson: "npm:^4.1.0" + node-fetch: "npm:^2.7.0" + rpc-websockets: "npm:^7.5.1" + superstruct: "npm:^0.14.2" + checksum: 10c0/77ea6fbbc32da892d005217eb20ebab7956ff1b7e7989d66dc5eb5ff0d7e136014ce8df97458686994542c415cbfbac8473756ccce3a31fbde3f331c6a3d50b1 + languageName: node + linkType: hard + +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 10c0/8ec16795a6f94264f93514661e024c5b0434d75000ea133923c57f0db30eab8ddc74fa35f5ff1ae4886803a8b92e169b828512c9e6bc02c818688d0f5b9f5aef + languageName: node + linkType: hard + +"@stablelib/binary@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/binary@npm:1.0.1" + dependencies: + "@stablelib/int": "npm:^1.0.1" + checksum: 10c0/154cb558d8b7c20ca5dc2e38abca2a3716ce36429bf1b9c298939cea0929766ed954feb8a9c59245ac64c923d5d3466bb7d99f281debd3a9d561e1279b11cd35 + languageName: node + linkType: hard + +"@stablelib/bytes@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/bytes@npm:1.0.1" + checksum: 10c0/ee99bb15dac2f4ae1aa4e7a571e76483617a441feff422442f293993bc8b2c7ef021285c98f91a043bc05fb70502457799e28ffd43a8564a17913ee5ce889237 + languageName: node + linkType: hard + +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + dependencies: + "@stablelib/aead": "npm:^1.0.1" + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/chacha": "npm:^1.0.1" + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/poly1305": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/fe202aa8aface111c72bc9ec099f9c36a7b1470eda9834e436bb228618a704929f095b937f04e867fe4d5c40216ff089cbfeb2eeb092ab33af39ff333eb2c1e6 + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/4d70b484ae89416d21504024f977f5517bf16b344b10fb98382c9e3e52fe8ca77ac65f5d6a358d8b152f2c9ffed101a1eb15ed1707cdf906e1b6624db78d2d16 + languageName: node + linkType: hard + +"@stablelib/constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/constant-time@npm:1.0.1" + checksum: 10c0/694a282441215735a1fdfa3d06db5a28ba92423890967a154514ef28e0d0298ce7b6a2bc65ebc4273573d6669a6b601d330614747aa2e69078c1d523d7069e12 + languageName: node + linkType: hard + +"@stablelib/ed25519@npm:^1.0.2": + version: 1.0.3 + resolution: "@stablelib/ed25519@npm:1.0.3" + dependencies: + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha512": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/b4a05e3c24dabd8a9e0b5bd72dea761bfb4b5c66404308e9f0529ef898e75d6f588234920762d5372cb920d9d47811250160109f02d04b6eed53835fb6916eb9 + languageName: node + linkType: hard + +"@stablelib/hash@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hash@npm:1.0.1" + checksum: 10c0/58b5572a4067820b77a1606ed2d4a6dc4068c5475f68ba0918860a5f45adf60b33024a0cea9532dcd8b7345c53b3c9636a23723f5f8ae83e0c3648f91fb5b5cc + languageName: node + linkType: hard + +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/hmac": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/722d30e36afa8029fda2a9e8c65ad753deff92a234e708820f9fd39309d2494e1c035a4185f29ae8d7fbf8a74862b27128c66a1fb4bd7a792bd300190080dbe9 + languageName: node + linkType: hard + +"@stablelib/hmac@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hmac@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/a111d5e687966b62c81f7dbd390f13582b027edee9bd39df6474a6472e5ad89d705e735af32bae2c9280a205806649f54b5ff8c4e8c8a7b484083a35b257e9e6 + languageName: node + linkType: hard + +"@stablelib/int@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/int@npm:1.0.1" + checksum: 10c0/e1a6a7792fc2146d65de56e4ef42e8bc385dd5157eff27019b84476f564a1a6c43413235ed0e9f7c9bb8907dbdab24679467aeb10f44c92e6b944bcd864a7ee0 + languageName: node + linkType: hard + +"@stablelib/keyagreement@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/keyagreement@npm:1.0.1" + dependencies: + "@stablelib/bytes": "npm:^1.0.1" + checksum: 10c0/18c9e09772a058edee265c65992ec37abe4ab5118171958972e28f3bbac7f2a0afa6aaf152ec1d785452477bdab5366b3f5b750e8982ae9ad090f5fa2e5269ba + languageName: node + linkType: hard + +"@stablelib/poly1305@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/poly1305@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/080185ffa92f5111e6ecfeab7919368b9984c26d048b9c09a111fbc657ea62bb5dfe6b56245e1804ce692a445cc93ab6625936515fa0e7518b8f2d86feda9630 + languageName: node + linkType: hard + +"@stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": + version: 1.0.2 + resolution: "@stablelib/random@npm:1.0.2" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/ebb217cfb76db97d98ec07bd7ce03a650fa194b91f0cb12382738161adff1830f405de0e9bad22bbc352422339ff85f531873b6a874c26ea9b59cfcc7ea787e0 + languageName: node + linkType: hard + +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/e29ee9bc76eece4345e9155ce4bdeeb1df8652296be72bd2760523ad565e3b99dca85b81db3b75ee20b34837077eb8542ca88f153f162154c62ba1f75aecc24a + languageName: node + linkType: hard + +"@stablelib/sha512@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha512@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/84549070a383f4daf23d9065230eb81bc8f590c68bf5f7968f1b78901236b3bb387c14f63773dc6c3dc78e823b1c15470d2a04d398a2506391f466c16ba29b58 + languageName: node + linkType: hard + +"@stablelib/wipe@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/wipe@npm:1.0.1" + checksum: 10c0/c5a54f769c286a5b3ecff979471dfccd4311f2e84a959908e8c0e3aa4eed1364bd9707f7b69d1384b757e62cc295c221fa27286c7f782410eb8a690f30cfd796 + languageName: node + linkType: hard + +"@stablelib/x25519@npm:^1.0.3": + version: 1.0.3 + resolution: "@stablelib/x25519@npm:1.0.3" + dependencies: + "@stablelib/keyagreement": "npm:^1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/d8afe8a120923a434359d7d1c6759780426fed117a84a6c0f84d1a4878834cb4c2d7da78a1fa7cf227ce3924fdc300cd6ed6e46cf2508bf17b1545c319ab8418 + languageName: node + linkType: hard + +"@subsquid/subsquid-web@workspace:.": + version: 0.0.0-use.local + resolution: "@subsquid/subsquid-web@workspace:." + dependencies: + "@emotion/react": "npm:^11.11.4" + "@emotion/styled": "npm:^11.11.0" + "@graphql-codegen/add": "npm:^5.0.2" + "@graphql-codegen/cli": "npm:^5.0.2" + "@graphql-codegen/typescript": "npm:^4.0.6" + "@graphql-codegen/typescript-operations": "npm:^4.2.0" + "@graphql-codegen/typescript-react-query": "npm:^6.1.0" + "@mui/icons-material": "npm:^5.15.14" + "@mui/lab": "npm:^5.0.0-alpha.169" + "@mui/material": "npm:^5.15.14" + "@rainbow-me/rainbowkit": "npm:^1.3.6" + "@sentry/react": "npm:^7.108.0" + "@tanstack/react-query": "npm:^5.28.9" + "@types/jest": "npm:^29.5.12" + "@types/lodash-es": "npm:^4.17.12" + "@types/ms": "npm:^0.7.34" + "@types/pretty-bytes": "npm:^5.2.0" + "@types/qs": "npm:^6.9.14" + "@types/query-string": "npm:^6.3.0" + "@types/react-dom": "npm:^18.2.22" + "@types/react-scroll": "npm:^1.8.10" + "@types/react-select": "npm:5.0.1" + "@types/react-syntax-highlighter": "npm:^15.5.11" + "@typescript-eslint/eslint-plugin": "npm:^7.4.0" + "@typescript-eslint/parser": "npm:^7.4.0" + "@vitejs/plugin-react": "npm:^4.2.1" + axios: "npm:^1.6.8" + base58-universal: "npm:^2.0.0" + bs58: "npm:^5.0.0" + buffer: "npm:^6.0.3" + classnames: "npm:^2.5.1" + country-list: "npm:^2.3.0" + date-fns: "npm:^3.6.0" + decimal.js: "npm:^10.4.3" + dotenv: "npm:^16.4.5" + eslint: "npm:^8.57.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-import: "npm:^2.29.1" + eslint-plugin-jest: "npm:^27.9.0" + eslint-plugin-prettier: "npm:^5.1.3" + eslint-plugin-react: "npm:^7.34.1" + eslint-plugin-react-hooks: "npm:^4.6.0" + eslint-plugin-react-native: "npm:^4.1.0" + eslint-plugin-sort-keys-fix: "npm:^1.1.2" + ethers: "npm:^6.11.1" + formik: "npm:^2.4.5" + graphql: "npm:^16.8.1" + husky: "npm:^9.0.11" + lint-staged: "npm:^15.2.2" + lodash-es: "npm:^4.17.21" + material-ui-popup-state: "npm:^5.1.0" + notistack: "npm:^3.0.1" + prettier: "npm:^3.2.5" + pretty-bytes: "npm:^6.1.1" + react: "npm:^18.2.0" + react-dom: "npm:^18.2.0" + react-router-dom: "npm:^6.22.3" + react-scroll: "npm:^1.9.0" + react-syntax-highlighter: "npm:^15.5.0" + recharts: "npm:^2.12.3" + typescript: "npm:^5.4.3" + use-element-position: "npm:^1.0.13" + use-local-storage-state: "npm:^19.2.0" + viem: "npm:^1.21.1" + vite: "npm:^5.2.6" + vite-tsconfig-paths: "npm:^4.3.2" + wagmi: "npm:^1.4.12" + yup: "npm:^1.4.0" + languageName: unknown + linkType: soft + +"@tanstack/query-core@npm:4.36.1": + version: 4.36.1 + resolution: "@tanstack/query-core@npm:4.36.1" + checksum: 10c0/f286529dbd4c9cdb237ef0bfa72d785c74b5d0958290e8d85c343043ba7be4bbc6cb771167d8c13ca12bd4f37412a3d8b69331f57daa375b2071fd4752aed66a + languageName: node + linkType: hard + +"@tanstack/query-core@npm:5.28.9": + version: 5.28.9 + resolution: "@tanstack/query-core@npm:5.28.9" + checksum: 10c0/bba29392deb8eb1c58012cf298452a6ea2c03e1cf0ff17e09b39093777adcf6670c31a039d4c8ffc4a16a1f512af984cceed6351d30f377342963ce4c4b92a2b + languageName: node + linkType: hard + +"@tanstack/query-persist-client-core@npm:4.36.1": + version: 4.36.1 + resolution: "@tanstack/query-persist-client-core@npm:4.36.1" + dependencies: + "@tanstack/query-core": "npm:4.36.1" + checksum: 10c0/e1c623cf1d43560fcf2f4f8489f8dbae35172c13d563da63c0db9e18937fb55f157a8b2c94011e30ffb1d6f2f40a1cb60dcebe2c9ef2931c0d2e5ca377a28cd8 + languageName: node + linkType: hard + +"@tanstack/query-sync-storage-persister@npm:^4.27.1": + version: 4.36.1 + resolution: "@tanstack/query-sync-storage-persister@npm:4.36.1" + dependencies: + "@tanstack/query-persist-client-core": "npm:4.36.1" + checksum: 10c0/ae2d71f59d57d07cf3f96402d01e3b51fa9516cb3e7f2a33787af8d3f8eb56d206b9ca474033afc72dd74badbf8773f8799ab757ace8577f446542407c2850d1 + languageName: node + linkType: hard + +"@tanstack/react-query-persist-client@npm:^4.28.0": + version: 4.36.1 + resolution: "@tanstack/react-query-persist-client@npm:4.36.1" + dependencies: + "@tanstack/query-persist-client-core": "npm:4.36.1" + peerDependencies: + "@tanstack/react-query": ^4.36.1 + checksum: 10c0/a4bdca1ac7d0852f28b3c00a8e5d061be9f54d0d81254cc006e165b86cc514af759f017261ad83f2c76cd404381223627f52e6def1d0814fd7da13fee14f64ff + languageName: node + linkType: hard + +"@tanstack/react-query@npm:^4.28.0": + version: 4.36.1 + resolution: "@tanstack/react-query@npm:4.36.1" + dependencies: + "@tanstack/query-core": "npm:4.36.1" + use-sync-external-store: "npm:^1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: "*" + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/15d9c98269d52fbdd49f4eb4b077b5d70346f904ea2ae51fd0400949d731afde658919a1143dd849fb50d4c5b6d0ab072e7b313a098ef316dd1c24089653f626 + languageName: node + linkType: hard + +"@tanstack/react-query@npm:^5.28.9": + version: 5.28.9 + resolution: "@tanstack/react-query@npm:5.28.9" + dependencies: + "@tanstack/query-core": "npm:5.28.9" + peerDependencies: + react: ^18.0.0 + checksum: 10c0/2f6dcc691074f99cbd52a80f26bbc1dcad536700fda09d156ac430b917f054d1d206459be0deb6baa8933075ffcf6457925db6b76bf8634bee48805fde8d3037 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.20.5 + resolution: "@types/babel__traverse@npm:7.20.5" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/033abcb2f4c084ad33e30c3efaad82161240f351e3c71b6154ed289946b33b363696c0fbd42502b68e4582a87413c418321f40eb1ea863e34fe525641345e05b + languageName: node + linkType: hard + +"@types/connect@npm:^3.4.33": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/d3-array@npm:^3.0.3": + version: 3.2.1 + resolution: "@types/d3-array@npm:3.2.1" + checksum: 10c0/38bf2c778451f4b79ec81a2288cb4312fe3d6449ecdf562970cc339b60f280f31c93a024c7ff512607795e79d3beb0cbda123bb07010167bce32927f71364bca + languageName: node + linkType: hard + +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae + languageName: node + linkType: hard + +"@types/d3-ease@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/d3-ease@npm:3.0.2" + checksum: 10c0/aff5a1e572a937ee9bff6465225d7ba27d5e0c976bd9eacdac2e6f10700a7cb0c9ea2597aff6b43a6ed850a3210030870238894a77ec73e309b4a9d0333f099c + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:^3.0.1": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" + dependencies: + "@types/d3-color": "npm:*" + checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 + languageName: node + linkType: hard + +"@types/d3-path@npm:*": + version: 3.1.0 + resolution: "@types/d3-path@npm:3.1.0" + checksum: 10c0/85e8b3aa968a60a5b33198ade06ae7ffedcf9a22d86f24859ff58e014b053ccb7141ec163b78d547bc8215bb12bb54171c666057ab6156912814005b686afb31 + languageName: node + linkType: hard + +"@types/d3-scale@npm:^4.0.2": + version: 4.0.8 + resolution: "@types/d3-scale@npm:4.0.8" + dependencies: + "@types/d3-time": "npm:*" + checksum: 10c0/57de90e4016f640b83cb960b7e3a0ab3ed02e720898840ddc5105264ffcfea73336161442fdc91895377c2d2f91904d637282f16852b8535b77e15a761c8e99e + languageName: node + linkType: hard + +"@types/d3-shape@npm:^3.1.0": + version: 3.1.6 + resolution: "@types/d3-shape@npm:3.1.6" + dependencies: + "@types/d3-path": "npm:*" + checksum: 10c0/0625715925d3c7ed3d44ce998b42c993f063c31605b6e4a8046c4be0fe724e2d214fc83e86d04f429a30a6e1f439053e92b0d9e59e1180c3a5327b4a6e79fa0a + languageName: node + linkType: hard + +"@types/d3-time@npm:*, @types/d3-time@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/d3-time@npm:3.0.3" + checksum: 10c0/245a8aadca504df27edf730de502e47a68f16ae795c86b5ca35e7afa91c133aa9ef4d08778f8cf1ed2be732f89a4105ba4b437ce2afbdfd17d3d937b6ba5f568 + languageName: node + linkType: hard + +"@types/d3-timer@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 + languageName: node + linkType: hard + +"@types/debug@npm:^4.1.7": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/estree@npm:1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/hast@npm:^2.0.0": + version: 2.3.10 + resolution: "@types/hast@npm:2.3.10" + dependencies: + "@types/unist": "npm:^2" + checksum: 10c0/16daac35d032e656defe1f103f9c09c341a6dc553c7ec17b388274076fa26e904a71ea5ea41fd368a6d5f1e9e53be275c80af7942b9c466d8511d261c9529c7e + languageName: node + linkType: hard + +"@types/hoist-non-react-statics@npm:^3.3.1": + version: 3.3.5 + resolution: "@types/hoist-non-react-statics@npm:3.3.5" + dependencies: + "@types/react": "npm:*" + hoist-non-react-statics: "npm:^3.3.0" + checksum: 10c0/2a3b64bf3d9817d7830afa60ee314493c475fb09570a64e7737084cd482d2177ebdddf888ce837350bac51741278b077683facc9541f052d4bbe8487b4e3e618 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:^29.5.12": + version: 29.5.12 + resolution: "@types/jest@npm:29.5.12" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/25fc8e4c611fa6c4421e631432e9f0a6865a8cb07c9815ec9ac90d630271cad773b2ee5fe08066f7b95bebd18bb967f8ce05d018ee9ab0430f9dfd1d84665b6f + languageName: node + linkType: hard + +"@types/js-yaml@npm:^4.0.0": + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: 10c0/24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json-stable-stringify@npm:^1.0.32": + version: 1.0.36 + resolution: "@types/json-stable-stringify@npm:1.0.36" + checksum: 10c0/c2f0d0075bd04681d664a7ac4ef5078289b2f790f9737cd3457b5cc199d39df2efe132e04574ad5f89c9ae50096d44c9ca5ec4aebcd6005b969009f725dbcb79 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/lodash-es@npm:^4.17.12": + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" + dependencies: + "@types/lodash": "npm:*" + checksum: 10c0/5d12d2cede07f07ab067541371ed1b838a33edb3c35cb81b73284e93c6fd0c4bbeaefee984e69294bffb53f62d7272c5d679fdba8e595ff71e11d00f2601dde0 + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.17.0 + resolution: "@types/lodash@npm:4.17.0" + checksum: 10c0/4c5b41c9a6c41e2c05d08499e96f7940bcf194dcfa84356235b630da920c2a5e05f193618cea76006719bec61c76617dff02defa9d29934f9f6a76a49291bd8f + languageName: node + linkType: hard + +"@types/ms@npm:*, @types/ms@npm:^0.7.34": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 20.11.30 + resolution: "@types/node@npm:20.11.30" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/867cfaf969c6d8850d8d7304e7ab739898a50ecb1395b61ff2335644f5f48d7a46fbc4a14cee967aed65ec134b61a746edae70d1f32f11321ccf29165e3bc4e6 + languageName: node + linkType: hard + +"@types/node@npm:18.15.13": + version: 18.15.13 + resolution: "@types/node@npm:18.15.13" + checksum: 10c0/6e5f61c559e60670a7a8fb88e31226ecc18a21be103297ca4cf9848f0a99049dae77f04b7ae677205f2af494f3701b113ba8734f4b636b355477a6534dbb8ada + languageName: node + linkType: hard + +"@types/node@npm:^12.12.54": + version: 12.20.55 + resolution: "@types/node@npm:12.20.55" + checksum: 10c0/3b190bb0410047d489c49bbaab592d2e6630de6a50f00ba3d7d513d59401d279972a8f5a598b5bb8ddc1702f8a2f4ec57a65d93852f9c329639738e7053637d1 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/pretty-bytes@npm:^5.2.0": + version: 5.2.0 + resolution: "@types/pretty-bytes@npm:5.2.0" + dependencies: + pretty-bytes: "npm:*" + checksum: 10c0/6d0edc2b2d9bb1adffe53666f9d31ec12c10ea9f7bf95c9a97f7e16c131f1280f7e2182bef5bea9251cf3894ca0f8239ce9b51746fcfaa58bdc0f44909c8bf40 + languageName: node + linkType: hard + +"@types/prop-types@npm:*, @types/prop-types@npm:^15.7.11, @types/prop-types@npm:^15.7.3": + version: 15.7.11 + resolution: "@types/prop-types@npm:15.7.11" + checksum: 10c0/e53423cf9d510515ef8b47ff42f4f1b65a7b7b37c8704e2dbfcb9a60defe0c0e1f3cb1acfdeb466bad44ca938d7c79bffdd51b48ffb659df2432169d0b27a132 + languageName: node + linkType: hard + +"@types/qs@npm:^6.9.14": + version: 6.9.14 + resolution: "@types/qs@npm:6.9.14" + checksum: 10c0/11ad1eb7f6d7c216002789959d88acc7c43f72854fa4335f01de0df41b4c4024668dace8a37ba12270314345ede0ec6b07f93053a45e7bd4cd7318a3dcf0b6b8 + languageName: node + linkType: hard + +"@types/query-string@npm:^6.3.0": + version: 6.3.0 + resolution: "@types/query-string@npm:6.3.0" + dependencies: + query-string: "npm:*" + checksum: 10c0/57901848165463e125ca22fbfbafa2032f9e39a79e2de02a0dae1071c3d6741322c2c8eaee5a8e82e6401f79cf75f6524c5a880a7e382dbac39e19f73908b1c1 + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.2.22": + version: 18.2.22 + resolution: "@types/react-dom@npm:18.2.22" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/cd85b5f402126e44b8c7b573e74737389816abcc931b2b14d8f946ba81cce8637ea490419488fcae842efb1e2f69853bc30522e43fd8359e1007d4d14b8d8146 + languageName: node + linkType: hard + +"@types/react-scroll@npm:^1.8.10": + version: 1.8.10 + resolution: "@types/react-scroll@npm:1.8.10" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/fd488a2446f3654c7594fa664a3592661d2685608717f80e32d3749f496974d20876bcb127522a69b8249c2f513895a84b89bf6eeb95442fc6f5e7023f6baaff + languageName: node + linkType: hard + +"@types/react-select@npm:5.0.1": + version: 5.0.1 + resolution: "@types/react-select@npm:5.0.1" + dependencies: + react-select: "npm:*" + checksum: 10c0/6ea7f3beaebb38e537e5b742a0d8b49f212bdf1dade9f9ce5e3c91e24aad95284aeda0efc8a235e05a7102748f475c4476fb6830030b5574fdf19c3f1d908027 + languageName: node + linkType: hard + +"@types/react-syntax-highlighter@npm:^15.5.11": + version: 15.5.11 + resolution: "@types/react-syntax-highlighter@npm:15.5.11" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/b091ac86d72fcc27ff77007577cc64f604ed9de5b7cc3f986301fe7fa7a2a42d1347fb0bf19ff2223c152f9468a42b796f44e97fe526073ee168a3ee64266518 + languageName: node + linkType: hard + +"@types/react-transition-group@npm:^4.4.0, @types/react-transition-group@npm:^4.4.10": + version: 4.4.10 + resolution: "@types/react-transition-group@npm:4.4.10" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/3eb9bca143abc21eb781aa5cb1bded0c9335689d515bf0513fb8e63217b7a8122c6a323ecd5644a06938727e1f467ee061d8df1c93b68825a80ff1b47ab777a2 + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:^18.0.26": + version: 18.2.67 + resolution: "@types/react@npm:18.2.67" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/d8c49476ca8c96cbbcd8b1fd1bf881396dbf548fdadb0b6463d0bb262e5013e0a239994842d09e74f9c21dcaf620555bc1f1485f8578b0498af87bc06291f5a2 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.8 + resolution: "@types/scheduler@npm:0.16.8" + checksum: 10c0/f86de504945b8fc41b1f391f847444d542e2e4067cf7e5d9bfeb5d2d2393d3203b1161bc0ef3b1e104d828dabfb60baf06e8d2c27e27ff7e8258e6e618d8c4ec + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/trusted-types@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c + languageName: node + linkType: hard + +"@types/unist@npm:^2": + version: 2.0.10 + resolution: "@types/unist@npm:2.0.10" + checksum: 10c0/5f247dc2229944355209ad5c8e83cfe29419fa7f0a6d557421b1985a1500444719cc9efcc42c652b55aab63c931813c88033e0202c1ac684bcd4829d66e44731 + languageName: node + linkType: hard + +"@types/ws@npm:^7.4.4": + version: 7.4.7 + resolution: "@types/ws@npm:7.4.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/f1f53febd8623a85cef2652949acd19d83967e350ea15a851593e3033501750a1e04f418552e487db90a3d48611a1cff3ffcf139b94190c10f2fd1e1dc95ff10 + languageName: node + linkType: hard + +"@types/ws@npm:^8.0.0": + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.4.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:7.4.0" + "@typescript-eslint/type-utils": "npm:7.4.0" + "@typescript-eslint/utils": "npm:7.4.0" + "@typescript-eslint/visitor-keys": "npm:7.4.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^7.0.0 + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/840da6536da48e95602ee11450485bdba34d357f2b6dbbad4cc80d2491a3ee4eda35bd23345f4c9cfc0e3c3b05bd1257bb40ea32fe27b023252bb3177668c642 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/parser@npm:7.4.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:7.4.0" + "@typescript-eslint/types": "npm:7.4.0" + "@typescript-eslint/typescript-estree": "npm:7.4.0" + "@typescript-eslint/visitor-keys": "npm:7.4.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/70ae32d406685e83fc26b4f4d3eb90c59965e0ff4fec4fd89ecd3cb386376bedb75cd8c11691b9de4743243d61a7d17ae242fe6c689a7c443a8977bc9755700b + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/scope-manager@npm:7.4.0" + dependencies: + "@typescript-eslint/types": "npm:7.4.0" + "@typescript-eslint/visitor-keys": "npm:7.4.0" + checksum: 10c0/d1dddf6819d753063fbbcae2cd01e861d0162a9755c6c786901654ccb9d316ca1dcc5887a61fb70e72372db4c2e67c6d1890f09d8b0270971c18b48808765ba9 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/type-utils@npm:7.4.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:7.4.0" + "@typescript-eslint/utils": "npm:7.4.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/17cc4159095f978fe885dba7299fc3bdb89b74068f2c30aff55b3281a2920ab0a8f5ebb15276bd3dd22ae5504e15dc6ac5021c8f0a5c05cf3f5e514f90049c96 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/types@npm:7.4.0" + checksum: 10c0/685df163cdd6d546de8a2d22896e461777a89756faf1f34342c959e7d3f4cc75b1f47a96da50483fe1da75d06515bb105f58339d277ad7e02c15ab61c90ad097 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.4.0" + dependencies: + "@typescript-eslint/types": "npm:7.4.0" + "@typescript-eslint/visitor-keys": "npm:7.4.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/31910f9283bcb2db7d3dd77b5a3b0c52e9769cd296e78a5ba742360f9e1971a6a3e1b5eb31109b4d584a62c2caa3075a346c5413b55e28cda0226a73865d62b7 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/utils@npm:7.4.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:7.4.0" + "@typescript-eslint/types": "npm:7.4.0" + "@typescript-eslint/typescript-estree": "npm:7.4.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^8.56.0 + checksum: 10c0/347897e0c20e752b62988cbc6477a3788140671692f383355c1fa21e21272561a1bb81927cf99b4ec6fe6094fdb4d010e330ef58674020513e9209992db8aac1 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^5.10.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:7.4.0": + version: 7.4.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.4.0" + dependencies: + "@typescript-eslint/types": "npm:7.4.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/bd2ca99f4a771494b89124a1e4cd7f3c817ca4916b8a0168c5c226a245f25cf646b10095100fb8cb6d97134f63fa5bb15098daa94f48657b65332e8671ffdb52 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@vanilla-extract/css@npm:1.14.0": + version: 1.14.0 + resolution: "@vanilla-extract/css@npm:1.14.0" + dependencies: + "@emotion/hash": "npm:^0.9.0" + "@vanilla-extract/private": "npm:^1.0.3" + chalk: "npm:^4.1.1" + css-what: "npm:^6.1.0" + cssesc: "npm:^3.0.0" + csstype: "npm:^3.0.7" + deep-object-diff: "npm:^1.1.9" + deepmerge: "npm:^4.2.2" + media-query-parser: "npm:^2.0.2" + modern-ahocorasick: "npm:^1.0.0" + outdent: "npm:^0.8.0" + checksum: 10c0/8e5d6419af7249c873db4acf9751044245a004133073fe6c85ae800f6b88794ac4e323612c2dc6fa67ea797bdebf57432f153311e86ab3707110f18d5b038557 + languageName: node + linkType: hard + +"@vanilla-extract/dynamic@npm:2.1.0": + version: 2.1.0 + resolution: "@vanilla-extract/dynamic@npm:2.1.0" + dependencies: + "@vanilla-extract/private": "npm:^1.0.3" + checksum: 10c0/dcb8149bd815c4be75184f90e350750b6bc16ffdb5841f62f7211385478589dc0a0b261a442011149c2edbdbd83a956a425eec94f6c735f269a1cdb310541a66 + languageName: node + linkType: hard + +"@vanilla-extract/private@npm:^1.0.3": + version: 1.0.3 + resolution: "@vanilla-extract/private@npm:1.0.3" + checksum: 10c0/62a74cb4fce877debb8043cda8b9efb8ca142b56d6a64525929a16a6e6c4f9bc181a6ea099b5b6ed08d0c7b3e8389b7e05f7fe9b4b0fae6eb74c2a69cb6ee2f7 + languageName: node + linkType: hard + +"@vanilla-extract/sprinkles@npm:1.6.1": + version: 1.6.1 + resolution: "@vanilla-extract/sprinkles@npm:1.6.1" + peerDependencies: + "@vanilla-extract/css": ^1.0.0 + checksum: 10c0/7ddd2ab7c88b5740260e09aba5399d938d9a46142a0652842e8cd3fe34cd2fd2fbeb75060718bb44cb1a81dce280bb9955ae35defd89f7045e3a6822baf2b5ae + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:^4.2.1": + version: 4.2.1 + resolution: "@vitejs/plugin-react@npm:4.2.1" + dependencies: + "@babel/core": "npm:^7.23.5" + "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + checksum: 10c0/de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 + languageName: node + linkType: hard + +"@wagmi/connectors@npm:3.1.11": + version: 3.1.11 + resolution: "@wagmi/connectors@npm:3.1.11" + dependencies: + "@coinbase/wallet-sdk": "npm:^3.6.6" + "@safe-global/safe-apps-provider": "npm:^0.18.1" + "@safe-global/safe-apps-sdk": "npm:^8.1.0" + "@walletconnect/ethereum-provider": "npm:2.11.0" + "@walletconnect/legacy-provider": "npm:^2.0.0" + "@walletconnect/modal": "npm:2.6.2" + "@walletconnect/utils": "npm:2.11.0" + abitype: "npm:0.8.7" + eventemitter3: "npm:^4.0.7" + peerDependencies: + typescript: ">=5.0.4" + viem: ">=0.3.35" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/55a2c5553ad082619b727531c6565fc17e14168817b7621d6589e51bf38c5d4a4a83ec96552d2ed0cbda21a16e2222936e7930caeaed832e509f9cdba0385296 + languageName: node + linkType: hard + +"@wagmi/core@npm:1.4.13": + version: 1.4.13 + resolution: "@wagmi/core@npm:1.4.13" + dependencies: + "@wagmi/connectors": "npm:3.1.11" + abitype: "npm:0.8.7" + eventemitter3: "npm:^4.0.7" + zustand: "npm:^4.3.1" + peerDependencies: + typescript: ">=5.0.4" + viem: ">=0.3.35" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/68a18c896614320618e281ee22e06823ca3504df52afcefddc232fe96c792d37f8fbad3f3917afb6b3950d1d811abb7e1c2b65f0eb7eb4c7371fbd2cb4d5acd9 + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/core@npm:2.11.0" + dependencies: + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-provider": "npm:1.0.13" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.0.1" + "@walletconnect/relay-api": "npm:^1.0.9" + "@walletconnect/relay-auth": "npm:^1.0.4" + "@walletconnect/safe-json": "npm:^1.0.2" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.11.0" + "@walletconnect/utils": "npm:2.11.0" + events: "npm:^3.3.0" + isomorphic-unfetch: "npm:3.1.0" + lodash.isequal: "npm:4.5.0" + uint8arrays: "npm:^3.1.0" + checksum: 10c0/673a9f3127a69a03de8de9626365b157ad6ce272b9ee04d3f67802685861f9f3ee748686662122d27212223f66054c49f0bf392f97e2fd18fab74789d0a87246 + languageName: node + linkType: hard + +"@walletconnect/crypto@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/crypto@npm:1.0.3" + dependencies: + "@walletconnect/encoding": "npm:^1.0.2" + "@walletconnect/environment": "npm:^1.0.1" + "@walletconnect/randombytes": "npm:^1.0.3" + aes-js: "npm:^3.1.2" + hash.js: "npm:^1.1.7" + tslib: "npm:1.14.1" + checksum: 10c0/dfe35bdafd28f48d1bdb5f4dc091da8361b1d8bef71c0ebc5f56e23363a4adc7d90215fbf6b90acb28634a05058bd0ff65d6dd48a92a6ab653cc8c847f5a7807 + languageName: node + linkType: hard + +"@walletconnect/encoding@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/encoding@npm:1.0.2" + dependencies: + is-typedarray: "npm:1.0.0" + tslib: "npm:1.14.1" + typedarray-to-buffer: "npm:3.1.5" + checksum: 10c0/ee94e8486d71094e3d23d91c392460a1fcedaf7ac1d541f5c4b0472fbed170c1e0962e29eb7e1b72cd8aefa1332e7b88182ecbc0b3b32adfb3242dbce1c1b236 + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/08eacce6452950a17f4209c443bd4db6bf7bddfc860593bdbd49edda9d08821696dee79e5617a954fbe90ff32c1d1f1691ef0c77455ed3e4201b328856a5e2f7 + languageName: node + linkType: hard + +"@walletconnect/ethereum-provider@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/ethereum-provider@npm:2.11.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:^1.0.7" + "@walletconnect/jsonrpc-provider": "npm:^1.0.13" + "@walletconnect/jsonrpc-types": "npm:^1.0.3" + "@walletconnect/jsonrpc-utils": "npm:^1.0.8" + "@walletconnect/modal": "npm:^2.6.2" + "@walletconnect/sign-client": "npm:2.11.0" + "@walletconnect/types": "npm:2.11.0" + "@walletconnect/universal-provider": "npm:2.11.0" + "@walletconnect/utils": "npm:2.11.0" + events: "npm:^3.3.0" + checksum: 10c0/7aaa416dfd96de32d0e44baba411c61c518a31bd067f8070b253da2adf9905bc0bd6589a75eb9b5cc12877027798f1e084d1782c26e831221fdbe8013b625a63 + languageName: node + linkType: hard + +"@walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/919a97e1dacf7096aefe07af810362cfc190533a576dcfa21387295d825a3c3d5f90bedee73235b1b343f5c696f242d7bffc5ea3359d3833541349ca23f50df8 + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.1": + version: 1.2.1 + resolution: "@walletconnect/heartbeat@npm:1.2.1" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/5ad46f26dcb7b9b3227f004cd74b18741d4cd32c21825a036eb03985c67a0cf859c285bc5635401966a99129e854d72de3458ff592370575ef7e52f5dd12ebbc + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-http-connection@npm:^1.0.4, @walletconnect/jsonrpc-http-connection@npm:^1.0.7": + version: 1.0.7 + resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.7" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.6" + "@walletconnect/safe-json": "npm:^1.0.1" + cross-fetch: "npm:^3.1.4" + tslib: "npm:1.14.1" + checksum: 10c0/24272eca0d2b20397b2c83ecaac324cbc857fab4a4c2699332ea5c8b81096b1cf4a3c60f51c82ca9e98ab87a213c04bf047037478b089effabe0139005c71867 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-provider@npm:1.0.13, @walletconnect/jsonrpc-provider@npm:^1.0.13, @walletconnect/jsonrpc-provider@npm:^1.0.6": + version: 1.0.13 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.13" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.8" + "@walletconnect/safe-json": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/9b5b2f0ce516d2ddebe2cd1a2c8ea18a6b765b0d068162caf39745c18534e264a0cc6198adb869ba8684d0efa563be30956a3b9a7cc82b80b9e263f6211e30ab + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.3, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/a0fc8a88c62795bf4bf83d4e98a4e2cdd659ef70c73642582089fdf0994c54fd8050aa6cca85cfdcca6b77994e71334895e7a19649c325a8c822b059c2003884 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.4, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.7, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" + dependencies: + "@walletconnect/environment": "npm:^1.0.1" + "@walletconnect/jsonrpc-types": "npm:^1.0.3" + tslib: "npm:1.14.1" + checksum: 10c0/e4a6bd801cf555bca775e03d961d1fe5ad0a22838e3496adda43ab4020a73d1b38de7096c06940e51f00fccccc734cd422fe4f1f7a8682302467b9c4d2a93d5d + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.6" + "@walletconnect/safe-json": "npm:^1.0.2" + events: "npm:^3.3.0" + ws: "npm:^7.5.1" + checksum: 10c0/a710ecc51f8d3ed819ba6d6e53151ef274473aa8746ffdeaffaa3d4c020405bc694b0d179649fc2510a556eb4daf02f4a9e3dacef69ff95f673939bd67be649e + languageName: node + linkType: hard + +"@walletconnect/keyvaluestorage@npm:^1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.1" + idb-keyval: "npm:^6.2.1" + unstorage: "npm:^1.9.0" + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 10c0/de2ec39d09ce99370865f7d7235b93c42b3e4fd3406bdbc644329eff7faea2722618aa88ffc4ee7d20b1d6806a8331261b65568187494cbbcceeedbe79dc30e8 + languageName: node + linkType: hard + +"@walletconnect/legacy-client@npm:^2.0.0": + version: 2.0.0 + resolution: "@walletconnect/legacy-client@npm:2.0.0" + dependencies: + "@walletconnect/crypto": "npm:^1.0.3" + "@walletconnect/encoding": "npm:^1.0.2" + "@walletconnect/jsonrpc-utils": "npm:^1.0.4" + "@walletconnect/legacy-types": "npm:^2.0.0" + "@walletconnect/legacy-utils": "npm:^2.0.0" + "@walletconnect/safe-json": "npm:^1.0.1" + "@walletconnect/window-getters": "npm:^1.0.1" + "@walletconnect/window-metadata": "npm:^1.0.1" + detect-browser: "npm:^5.3.0" + query-string: "npm:^6.13.5" + checksum: 10c0/00820b607301d94385e631c2e039450bc72ae71943cb67d06125509c8e8039e275d605c4a3d0c10e94f847c03c8a6437aa86f945581c57e84571ff827062dc8b + languageName: node + linkType: hard + +"@walletconnect/legacy-modal@npm:^2.0.0": + version: 2.0.0 + resolution: "@walletconnect/legacy-modal@npm:2.0.0" + dependencies: + "@walletconnect/legacy-types": "npm:^2.0.0" + "@walletconnect/legacy-utils": "npm:^2.0.0" + copy-to-clipboard: "npm:^3.3.3" + preact: "npm:^10.12.0" + qrcode: "npm:^1.5.1" + checksum: 10c0/92a35d6710e84ac2caa1dc540317d264ca3d612dde5b502de39ee27f3e27eb1d6a92c49e3cf20322c82366fd53cab87de197184ef6000b926d1a7ff724921693 + languageName: node + linkType: hard + +"@walletconnect/legacy-provider@npm:^2.0.0": + version: 2.0.0 + resolution: "@walletconnect/legacy-provider@npm:2.0.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:^1.0.4" + "@walletconnect/jsonrpc-provider": "npm:^1.0.6" + "@walletconnect/legacy-client": "npm:^2.0.0" + "@walletconnect/legacy-modal": "npm:^2.0.0" + "@walletconnect/legacy-types": "npm:^2.0.0" + "@walletconnect/legacy-utils": "npm:^2.0.0" + checksum: 10c0/770f8998ccdceb3ed01afa9955c096467b58f138095d93e4bf6b70d3d7cb7a873786cf79c93cb706a5b7230627fca8999e779215478b3842f2814a85be13edf9 + languageName: node + linkType: hard + +"@walletconnect/legacy-types@npm:^2.0.0": + version: 2.0.0 + resolution: "@walletconnect/legacy-types@npm:2.0.0" + dependencies: + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + checksum: 10c0/a115e4cc251d61ddc8c31c14ab9745248db68e4b36decf0e4d9d7e7de02ccb9d3e3a5dd55796f9531a17594c82dcdfd05d5bc1bc4d50f2a0e3f59b98c98b567d + languageName: node + linkType: hard + +"@walletconnect/legacy-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "@walletconnect/legacy-utils@npm:2.0.0" + dependencies: + "@walletconnect/encoding": "npm:^1.0.2" + "@walletconnect/jsonrpc-utils": "npm:^1.0.4" + "@walletconnect/legacy-types": "npm:^2.0.0" + "@walletconnect/safe-json": "npm:^1.0.1" + "@walletconnect/window-getters": "npm:^1.0.1" + "@walletconnect/window-metadata": "npm:^1.0.1" + detect-browser: "npm:^5.3.0" + query-string: "npm:^6.13.5" + checksum: 10c0/457312842a062f9f990dc16af4e84c012c5c39ed0e541a6b1337dcdb8631a2ddacd7790ad40d2f35ee81b158c4e69a4db5399b050cfd324e80450343eae9cdc7 + languageName: node + linkType: hard + +"@walletconnect/logger@npm:^2.0.1": + version: 2.0.1 + resolution: "@walletconnect/logger@npm:2.0.1" + dependencies: + pino: "npm:7.11.0" + tslib: "npm:1.14.1" + checksum: 10c0/1778686f608f03bc8a67fb560a2694e8aef74b392811508e98cc158d1839a1bb0a0256eb2ed719c4ee17e65a11543ddc4f9059d3bdd5dddcca6359ba1bab18bd + languageName: node + linkType: hard + +"@walletconnect/modal-core@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-core@npm:2.6.2" + dependencies: + valtio: "npm:1.11.2" + checksum: 10c0/5e3fb21a1fc923ec0d2a3e33cc360e3d56278a211609d5fd4cc4d6e3b4f1acb40b9783fcc771b259b78c7e731af3862def096aa1da2e210e7859729808304c94 + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-ui@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": "npm:2.6.2" + lit: "npm:2.8.0" + motion: "npm:10.16.2" + qrcode: "npm:1.5.3" + checksum: 10c0/5d8f0a2703b9757dfa48ad3e48a40e64608f6a28db31ec93a2f10e942dcc5ee986c03ffdab94018e905836d339131fc928bc14614a94943011868cdddc36a32a + languageName: node + linkType: hard + +"@walletconnect/modal@npm:2.6.2, @walletconnect/modal@npm:^2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": "npm:2.6.2" + "@walletconnect/modal-ui": "npm:2.6.2" + checksum: 10c0/1cc309f63d061e49fdf7b10d28093d7ef1a47f4624f717f8fd3bf6097ac3b00cea4acc45c50e8bd386d4bcfdf10f4dcba960f7129c557b9dc42ef7d05b970807 + languageName: node + linkType: hard + +"@walletconnect/randombytes@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/randombytes@npm:1.0.3" + dependencies: + "@walletconnect/encoding": "npm:^1.0.2" + "@walletconnect/environment": "npm:^1.0.1" + randombytes: "npm:^2.1.0" + tslib: "npm:1.14.1" + checksum: 10c0/3391eb97db9240479744f2de2c56c5cded6c11fa3a391dd6da6acf763cf62b77249396c538b51324ae1434b0914f765cbeea45db949ca97e6b132677c8a3b64d + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:^1.0.9": + version: 1.0.9 + resolution: "@walletconnect/relay-api@npm:1.0.9" + dependencies: + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/e5994c63619b89cae45428108857389536f3c7e43a92f324a8ef305f351cf125dcfafeb9c480f23798c162ca2cad7b8f91828bae28a84cf869c3e7ee1dcca9dd + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:^1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": "npm:^1.0.2" + "@stablelib/random": "npm:^1.0.1" + "@walletconnect/safe-json": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + uint8arrays: "npm:^3.0.0" + checksum: 10c0/e90294ff718c5c1e49751a28916aaac45dd07d694f117052506309eb05b68cc2c72d9b302366e40d79ef952c22bd0bbea731d09633a6663b0ab8e18b4804a832 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/8689072018c1ff7ab58eca67bd6f06b53702738d8183d67bfe6ed220aeac804e41901b8ee0fb14299e83c70093fafb90a90992202d128d53b2832bb01b591752 + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/sign-client@npm:2.11.0" + dependencies: + "@walletconnect/core": "npm:2.11.0" + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:^2.0.1" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.11.0" + "@walletconnect/utils": "npm:2.11.0" + events: "npm:^3.3.0" + checksum: 10c0/92b8d66248b805849b70f35adc7f55bd7c9d6f35f5e980b1e90d71a86b008e43527b2dd8e47860d080cf296dcdf9ecfecb604b75ea0a1164c715dce4f66dadd0 + languageName: node + linkType: hard + +"@walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/6317f93086e36daa3383cab4a8579c7d0bed665fb0f8e9016575200314e9ba5e61468f66142a7bb5b8489bb4c9250196576d90a60b6b00e0e856b5d0ab6ba474 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/types@npm:2.11.0" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.0.1" + events: "npm:^3.3.0" + checksum: 10c0/7fa2493d8a9c938821f5234b4d2a087f903359875925a7abea3a0640aa765886c01b4846bbe5e39923b48883f7fd92c3f4ff8e643c4c894c50e9f715b3a881d8 + languageName: node + linkType: hard + +"@walletconnect/universal-provider@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/universal-provider@npm:2.11.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:^1.0.7" + "@walletconnect/jsonrpc-provider": "npm:1.0.13" + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + "@walletconnect/jsonrpc-utils": "npm:^1.0.7" + "@walletconnect/logger": "npm:^2.0.1" + "@walletconnect/sign-client": "npm:2.11.0" + "@walletconnect/types": "npm:2.11.0" + "@walletconnect/utils": "npm:2.11.0" + events: "npm:^3.3.0" + checksum: 10c0/78a3a16ef7a539caae0796745d80b211a918570bb2476ae064a56537e6aa1d038f53ed86588afd7f62cb833b2c690d9da3fee859a4a1926a79df79dd1f5176a9 + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/utils@npm:2.11.0" + dependencies: + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:^1.0.3" + "@walletconnect/relay-api": "npm:^1.0.9" + "@walletconnect/safe-json": "npm:^1.0.2" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.11.0" + "@walletconnect/window-getters": "npm:^1.0.1" + "@walletconnect/window-metadata": "npm:^1.0.1" + detect-browser: "npm:5.3.0" + query-string: "npm:7.1.3" + uint8arrays: "npm:^3.1.0" + checksum: 10c0/2219408f2a9bbca8d263a89dd54ae3e466f6d4b32b6b25f253d7f84f7e58c5836f4a08ab287c2d9ab5446c727624821597fa16d64d8c5ca748f8e1cba729a929 + languageName: node + linkType: hard + +"@walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/c3aedba77aa9274b8277c4189ec992a0a6000377e95656443b3872ca5b5fe77dd91170b1695027fc524dc20362ce89605d277569a0d9a5bedc841cdaf14c95df + languageName: node + linkType: hard + +"@walletconnect/window-metadata@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" + dependencies: + "@walletconnect/window-getters": "npm:^1.0.1" + tslib: "npm:1.14.1" + checksum: 10c0/f190e9bed77282d8ba868a4895f4d813e135f9bbecb8dd4aed988ab1b06992f78128ac19d7d073cf41d8a6a74d0c055cd725908ce0a894649fd25443ad934cf4 + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.0.3": + version: 0.0.3 + resolution: "@whatwg-node/events@npm:0.0.3" + checksum: 10c0/87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.1.0": + version: 0.1.1 + resolution: "@whatwg-node/events@npm:0.1.1" + checksum: 10c0/7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.8.0": + version: 0.8.8 + resolution: "@whatwg-node/fetch@npm:0.8.8" + dependencies: + "@peculiar/webcrypto": "npm:^1.4.0" + "@whatwg-node/node-fetch": "npm:^0.3.6" + busboy: "npm:^1.6.0" + urlpattern-polyfill: "npm:^8.0.0" + web-streams-polyfill: "npm:^3.2.1" + checksum: 10c0/37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.9.0": + version: 0.9.17 + resolution: "@whatwg-node/fetch@npm:0.9.17" + dependencies: + "@whatwg-node/node-fetch": "npm:^0.5.7" + urlpattern-polyfill: "npm:^10.0.0" + checksum: 10c0/6638f1d456d17c9eab55f6278aa8045157ceb43a27acc65def1b7a2a3b80ef1b79f4c203e523865c9bcf1236ef64e1378ab0627e91932c97e9f1f3a129b17195 + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.3.6": + version: 0.3.6 + resolution: "@whatwg-node/node-fetch@npm:0.3.6" + dependencies: + "@whatwg-node/events": "npm:^0.0.3" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + fast-url-parser: "npm:^1.1.3" + tslib: "npm:^2.3.1" + checksum: 10c0/49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.5.7": + version: 0.5.8 + resolution: "@whatwg-node/node-fetch@npm:0.5.8" + dependencies: + "@kamilkisiela/fast-url-parser": "npm:^1.1.4" + "@whatwg-node/events": "npm:^0.1.0" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + tslib: "npm:^2.3.1" + checksum: 10c0/5cc97976661e9b72938855dae1ac6db842598b92195ac056d3a53edf557202d6cc0fbb9a77ceaeb9fc2ef5bb471dd683bd182cb24bcc87975f880a6745a4b5c9 + languageName: node + linkType: hard + +"JSONStream@npm:^1.3.5": + version: 1.3.5 + resolution: "JSONStream@npm:1.3.5" + dependencies: + jsonparse: "npm:^1.2.0" + through: "npm:>=2.2.7 <3" + bin: + JSONStream: ./bin.js + checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"abitype@npm:0.8.7": + version: 0.8.7 + resolution: "abitype@npm:0.8.7" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + checksum: 10c0/94cc27cdd2398552285329b53aecc9777dfb9eca89c9615160c79a868e2417ddd331a5d49a6ce8f58c62b9e4026e8b0850e62a9aba960ae93b6a2b32f748a1d6 + languageName: node + linkType: hard + +"abitype@npm:0.9.8": + version: 0.9.8 + resolution: "abitype@npm:0.9.8" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/ec559461d901d456820faf307e21b2c129583d44f4c68257ed9d0d44eae461114a7049046e715e069bc6fa70c410f644e06bdd2c798ac30d0ada794cd2a6c51e + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.2.0, acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^7.1.1": + version: 7.4.1 + resolution: "acorn@npm:7.4.1" + bin: + acorn: bin/acorn + checksum: 10c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 + languageName: node + linkType: hard + +"acorn@npm:^8.11.3, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" + bin: + acorn: bin/acorn + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + languageName: node + linkType: hard + +"aes-js@npm:4.0.0-beta.5": + version: 4.0.0-beta.5 + resolution: "aes-js@npm:4.0.0-beta.5" + checksum: 10c0/444f4eefa1e602cbc4f2a3c644bc990f93fd982b148425fee17634da510586fc09da940dcf8ace1b2d001453c07ff042e55f7a0482b3cc9372bf1ef75479090c + languageName: node + linkType: hard + +"aes-js@npm:^3.1.2": + version: 3.1.2 + resolution: "aes-js@npm:3.1.2" + checksum: 10c0/2568cc67af66fd9d41de25dc73d49ae810269c7648bbb1928b9f84d8fd6ddb4e39ed506d1be6794f5ffd567aadea75fc6895ef34d2b70b764f539f72a6a2baeb + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.5.0": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^6.2.0": + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" + dependencies: + type-fest: "npm:^3.0.0" + checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + is-string: "npm:^1.0.7" + checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.4": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"array.prototype.toreversed@npm:^1.1.2": + version: 1.1.2 + resolution: "array.prototype.toreversed@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/2b7627ea85eae1e80ecce665a500cc0f3355ac83ee4a1a727562c7c2a1d5f1c0b4dd7b65c468ec6867207e452ba01256910a2c0b41486bfdd11acf875a7a3435 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.3": + version: 1.1.3 + resolution: "array.prototype.tosorted@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.1.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/a27e1ca51168ecacf6042901f5ef021e43c8fa04b6c6b6f2a30bac3645cd2b519cecbe0bc45db1b85b843f64dc3207f0268f700b4b9fbdec076d12d432cf0865 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"asap@npm:~2.0.3": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: "npm:^1.3.2" + pvutils: "npm:^1.1.3" + tslib: "npm:^2.4.0" + checksum: 10c0/bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-mutex@npm:^0.2.6": + version: 0.2.6 + resolution: "async-mutex@npm:0.2.6" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/440f1388fdbf2021261ba05952765182124a333681692fdef6af13935c20bfc2017e24e902362f12b29094a77b359ce3131e8dd45b1db42f1d570927ace9e7d9 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + +"auto-bind@npm:~4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: 10c0/12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"axios@npm:^1.6.8": + version: 1.6.8 + resolution: "axios@npm:1.6.8" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/0f22da6f490335479a89878bc7d5a1419484fbb437b564a80c34888fc36759ae4f56ea28d55a191695e5ed327f0bad56e7ff60fb6770c14d1be6501505d47ab9 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + cosmiconfig: "npm:^7.0.0" + resolve: "npm:^1.19.0" + checksum: 10c0/c6dfb15de96f67871d95bd2e8c58b0c81edc08b9b087dc16755e7157f357dc1090a8dc60ebab955e92587a9101f02eba07e730adc253a1e4cf593ca3ebd3839c + languageName: node + linkType: hard + +"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": + version: 7.0.0-beta.0 + resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" + checksum: 10c0/67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 + languageName: node + linkType: hard + +"babel-preset-fbjs@npm:^3.4.0": + version: 3.4.0 + resolution: "babel-preset-fbjs@npm:3.4.0" + dependencies: + "@babel/plugin-proposal-class-properties": "npm:^7.0.0" + "@babel/plugin-proposal-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-syntax-class-properties": "npm:^7.0.0" + "@babel/plugin-syntax-flow": "npm:^7.0.0" + "@babel/plugin-syntax-jsx": "npm:^7.0.0" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-transform-arrow-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoping": "npm:^7.0.0" + "@babel/plugin-transform-classes": "npm:^7.0.0" + "@babel/plugin-transform-computed-properties": "npm:^7.0.0" + "@babel/plugin-transform-destructuring": "npm:^7.0.0" + "@babel/plugin-transform-flow-strip-types": "npm:^7.0.0" + "@babel/plugin-transform-for-of": "npm:^7.0.0" + "@babel/plugin-transform-function-name": "npm:^7.0.0" + "@babel/plugin-transform-literals": "npm:^7.0.0" + "@babel/plugin-transform-member-expression-literals": "npm:^7.0.0" + "@babel/plugin-transform-modules-commonjs": "npm:^7.0.0" + "@babel/plugin-transform-object-super": "npm:^7.0.0" + "@babel/plugin-transform-parameters": "npm:^7.0.0" + "@babel/plugin-transform-property-literals": "npm:^7.0.0" + "@babel/plugin-transform-react-display-name": "npm:^7.0.0" + "@babel/plugin-transform-react-jsx": "npm:^7.0.0" + "@babel/plugin-transform-shorthand-properties": "npm:^7.0.0" + "@babel/plugin-transform-spread": "npm:^7.0.0" + "@babel/plugin-transform-template-literals": "npm:^7.0.0" + babel-plugin-syntax-trailing-function-commas: "npm:^7.0.0-beta.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-x@npm:^3.0.2": + version: 3.0.9 + resolution: "base-x@npm:3.0.9" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/e6bbeae30b24f748b546005affb710c5fbc8b11a83f6cd0ca999bd1ab7ad3a22e42888addc40cd145adc4edfe62fcfab4ebc91da22e4259aae441f95a77aee1a + languageName: node + linkType: hard + +"base-x@npm:^4.0.0": + version: 4.0.0 + resolution: "base-x@npm:4.0.0" + checksum: 10c0/0cb47c94535144ab138f70bb5aa7e6e03049ead88615316b62457f110fc204f2c3baff5c64a1c1b33aeb068d79a68092c08a765c7ccfa133eee1e70e4c6eb903 + languageName: node + linkType: hard + +"base58-universal@npm:^2.0.0": + version: 2.0.0 + resolution: "base58-universal@npm:2.0.0" + checksum: 10c0/f21fd50904e1f2d083832e39269058ffbd95592ad27fc2acc53ad3d9d7eacfa82c4e655181e0fd8a817619f4c925a42baca877276dd73e755d30f52def748ab6 + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"bigint-buffer@npm:^1.1.5": + version: 1.1.5 + resolution: "bigint-buffer@npm:1.1.5" + dependencies: + bindings: "npm:^1.3.0" + node-gyp: "npm:latest" + checksum: 10c0/aa41e53d38242a2f05f85b08eaf592635f92e5328822784cda518232b1644efdbf29ab3664951b174cc645848add4605488e25c9439bcc749660c885b4ff6118 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bind-decorator@npm:^1.0.11": + version: 1.0.11 + resolution: "bind-decorator@npm:1.0.11" + checksum: 10c0/265f1d5cc110075898b0c5f671bb06a05fb3193ee8899e4b66d48bc620248918cf24b14f798cf230ef717063458dc306dbf801268c45989f8546299a541a60fe + languageName: node + linkType: hard + +"bindings@npm:^1.3.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bn.js@npm:^5.1.1, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + +"borsh@npm:^0.7.0": + version: 0.7.0 + resolution: "borsh@npm:0.7.0" + dependencies: + bn.js: "npm:^5.2.0" + bs58: "npm:^4.0.0" + text-encoding-utf-8: "npm:^1.0.2" + checksum: 10c0/513b3e51823d2bf5be77cec27742419d2b0427504825dd7ceb00dedb820f246a4762f04b83d5e3aa39c8e075b3cbaeb7ca3c90bd1cbeecccb4a510575be8c581 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + +"browserslist@npm:^4.22.2": + version: 4.23.0 + resolution: "browserslist@npm:4.23.0" + dependencies: + caniuse-lite: "npm:^1.0.30001587" + electron-to-chromium: "npm:^1.4.668" + node-releases: "npm:^2.0.14" + update-browserslist-db: "npm:^1.0.13" + bin: + browserslist: cli.js + checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 + languageName: node + linkType: hard + +"bs58@npm:^4.0.0, bs58@npm:^4.0.1": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: "npm:^3.0.2" + checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 + languageName: node + linkType: hard + +"bs58@npm:^5.0.0": + version: 5.0.0 + resolution: "bs58@npm:5.0.0" + dependencies: + base-x: "npm:^4.0.0" + checksum: 10c0/0d1b05630b11db48039421b5975cb2636ae0a42c62f770eec257b2e5c7d94cb5f015f440785f3ec50870a6e9b1132b35bd0a17c7223655b22229f24b2a3491d1 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer@npm:6.0.3, buffer@npm:^6.0.3, buffer@npm:~6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"bufferutil@npm:^4.0.1": + version: 4.0.8 + resolution: "bufferutil@npm:4.0.8" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/36cdc5b53a38d9f61f89fdbe62029a2ebcd020599862253fefebe31566155726df9ff961f41b8c97b02b4c12b391ef97faf94e2383392654cf8f0ed68f76e47c + languageName: node + linkType: hard + +"busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.2 + resolution: "cacache@npm:18.0.2" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: "npm:^3.1.2" + tslib: "npm:^2.0.3" + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001587": + version: 1.0.30001599 + resolution: "caniuse-lite@npm:1.0.30001599" + checksum: 10c0/8b3b9610b5be88533a3c8d0770d6896f7b1a9fee3dbeb7339e4ee119a514c81e5e07a628a5a289a6541ca291ac78a9402f5a99cf6012139e91f379083488a8eb + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 + languageName: node + linkType: hard + +"chalk@npm:5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"change-case-all@npm:1.0.14": + version: 1.0.14 + resolution: "change-case-all@npm:1.0.14" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e + languageName: node + linkType: hard + +"change-case-all@npm:1.0.15": + version: 1.0.15 + resolution: "change-case-all@npm:1.0.15" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 + languageName: node + linkType: hard + +"change-case@npm:^4.1.2": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: "npm:^4.1.2" + capital-case: "npm:^1.0.4" + constant-case: "npm:^3.0.4" + dot-case: "npm:^3.0.4" + header-case: "npm:^2.0.4" + no-case: "npm:^3.0.4" + param-case: "npm:^3.0.4" + pascal-case: "npm:^3.1.2" + path-case: "npm:^3.0.4" + sentence-case: "npm:^3.0.4" + snake-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 + languageName: node + linkType: hard + +"character-entities-legacy@npm:^1.0.0": + version: 1.1.4 + resolution: "character-entities-legacy@npm:1.1.4" + checksum: 10c0/ea4ca9c29887335eed86d78fc67a640168342b1274da84c097abb0575a253d1265281a5052f9a863979e952bcc267b4ecaaf4fe233a7e1e0d8a47806c65b96c7 + languageName: node + linkType: hard + +"character-entities@npm:^1.0.0": + version: 1.2.4 + resolution: "character-entities@npm:1.2.4" + checksum: 10c0/ad015c3d7163563b8a0ee1f587fb0ef305ef344e9fd937f79ca51cccc233786a01d591d989d5bf7b2e66b528ac9efba47f3b1897358324e69932f6d4b25adfe1 + languageName: node + linkType: hard + +"character-reference-invalid@npm:^1.0.0": + version: 1.1.4 + resolution: "character-reference-invalid@npm:1.1.4" + checksum: 10c0/29f05081c5817bd1e975b0bf61e77b60a40f62ad371d0f0ce0fdb48ab922278bc744d1fbe33771dced751887a8403f265ff634542675c8d7375f6ff4811efd0e + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"citty@npm:^0.1.5, citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: "npm:^3.2.3" + checksum: 10c0/d26ad82a9a4a8858c7e149d90b878a3eceecd4cfd3e2ed3cd5f9a06212e451fb4f8cbe0fa39a3acb1b3e8f18e22db8ee5def5829384bad50e823d4b301609b48 + languageName: node + linkType: hard + +"classnames@npm:^2.2.6, classnames@npm:^2.5.1": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-cursor@npm:4.0.0" + dependencies: + restore-cursor: "npm:^4.0.0" + checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cli-truncate@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-truncate@npm:4.0.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^7.0.0" + checksum: 10c0/d7f0b73e3d9b88cb496e6c086df7410b541b56a43d18ade6a573c9c18bd001b1c3fba1ad578f741a4218fdc794d042385f8ac02c25e1c295a2d8b9f3cb86eb4c + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: "npm:^8.0.1" + is-wsl: "npm:^3.1.0" + is64bit: "npm:^2.0.0" + checksum: 10c0/02bb5f3d0a772bd84ec26a3566c72c2319a9f3b4cb8338370c3bffcf0073c80b834abe1a6945bea4f2cbea28e1627a975aaac577e3f61a868d924ce79138b041 + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"clsx@npm:2.1.0, clsx@npm:^2.0.0, clsx@npm:^2.1.0": + version: 2.1.0 + resolution: "clsx@npm:2.1.0" + checksum: 10c0/c09c00ad14f638366ca814097e6cab533dfa1972a358da5b557be487168acbb25b4c1395e89ffa842a8a61ba87a462d2b4885bc9d4f8410b598f3cb339599cdb + languageName: node + linkType: hard + +"clsx@npm:^1.1.0": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"colorette@npm:^2.0.16, colorette@npm:^2.0.20": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^1.0.0": + version: 1.0.8 + resolution: "comma-separated-tokens@npm:1.0.8" + checksum: 10c0/c3bcfeaa6d50313528a006a40bcc0f9576086665c9b48d4b3a76ddd63e7d6174734386c98be1881cbf6ecfc25e1db61cd775a7b896d2ea7a65de28f83a0f9b17 + languageName: node + linkType: hard + +"commander@npm:11.1.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 + languageName: node + linkType: hard + +"commander@npm:^2.20.3": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"common-tags@npm:1.8.2": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 10c0/c606220524ec88a05bb1baf557e9e0e04a0c08a9c35d7a08652d99de195c4ddcb6572040a7df57a18ff38bbc13ce9880ad032d56630cef27bef72768ef0ac078 + languageName: node + linkType: hard + +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case: "npm:^2.0.2" + checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-es@npm:^1.0.0": + version: 1.0.0 + resolution: "cookie-es@npm:1.0.0" + checksum: 10c0/49fb5d5d050e34b5b5f6e31b47d28364d149a31322994568a826a8d137f36792f0365cedc587ab880a1826db41f644d349930523d980f2a0ac3608d63db9263b + languageName: node + linkType: hard + +"copy-to-clipboard@npm:^3.3.3": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: "npm:^1.0.6" + checksum: 10c0/3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.1.3": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + path-type: "npm:^4.0.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + +"country-list@npm:^2.3.0": + version: 2.3.0 + resolution: "country-list@npm:2.3.0" + checksum: 10c0/30272157f083cae781d34b2b67493ce244153688729f1d5b992bc7be7b8d3bcc11dedeca5c8f09fed721d3fb49c73d2366527e900b0a9ae008b316d6670ffdc6 + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.4, cross-fetch@npm:^3.1.5": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + languageName: node + linkType: hard + +"cross-inspect@npm:1.0.0": + version: 1.0.0 + resolution: "cross-inspect@npm:1.0.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"crossws@npm:^0.2.0, crossws@npm:^0.2.2": + version: 0.2.4 + resolution: "crossws@npm:0.2.4" + peerDependencies: + uWebSockets.js: "*" + peerDependenciesMeta: + uWebSockets.js: + optional: true + checksum: 10c0/b950c64d36f3f11fdb8e0faf3107598660d89d77eb860e68b535fe6acba9f0f2f0507cc7250bd219a3ef2fe08718db91b591e6912b7324fcfc8fd1b8d9f78c96 + languageName: node + linkType: hard + +"css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2, csstype@npm:^3.0.7, csstype@npm:^3.1.3": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.1.6": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: "npm:1 - 2" + checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 + languageName: node + linkType: hard + +"d3-color@npm:1 - 3": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 10c0/a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c + languageName: node + linkType: hard + +"d3-ease@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-ease@npm:3.0.1" + checksum: 10c0/fec8ef826c0cc35cda3092c6841e07672868b1839fcaf556e19266a3a37e6bc7977d8298c0fcb9885e7799bfdcef7db1baaba9cd4dcf4bc5e952cf78574a88b0 + languageName: node + linkType: hard + +"d3-format@npm:1 - 3": + version: 3.1.0 + resolution: "d3-format@npm:3.1.0" + checksum: 10c0/049f5c0871ebce9859fc5e2f07f336b3c5bfff52a2540e0bac7e703fce567cd9346f4ad1079dd18d6f1e0eaa0599941c1810898926f10ac21a31fd0a34b4aa75 + languageName: node + linkType: hard + +"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + checksum: 10c0/19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a + languageName: node + linkType: hard + +"d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 10c0/dc1d58ec87fa8319bd240cf7689995111a124b141428354e9637aa83059eb12e681f77187e0ada5dedfce346f7e3d1f903467ceb41b379bfd01cd8e31721f5da + languageName: node + linkType: hard + +"d3-scale@npm:^4.0.2": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: "npm:2.10.0 - 3" + d3-format: "npm:1 - 3" + d3-interpolate: "npm:1.2.0 - 3" + d3-time: "npm:2.1.1 - 3" + d3-time-format: "npm:2 - 4" + checksum: 10c0/65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 + languageName: node + linkType: hard + +"d3-shape@npm:^3.1.0": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: "npm:^3.1.0" + checksum: 10c0/f1c9d1f09926daaf6f6193ae3b4c4b5521e81da7d8902d24b38694517c7f527ce3c9a77a9d3a5722ad1e3ff355860b014557b450023d66a944eabf8cfde37132 + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: "npm:1 - 3" + checksum: 10c0/735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.0.0": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: "npm:2 - 3" + checksum: 10c0/a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 + languageName: node + linkType: hard + +"d3-timer@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 10c0/d4c63cb4bb5461d7038aac561b097cd1c5673969b27cbdd0e87fa48d9300a538b9e6f39b4a7f0e3592ef4f963d858c8a9f0e92754db73116770856f2fc04561a + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + languageName: node + linkType: hard + +"dataloader@npm:^2.2.2": + version: 2.2.2 + resolution: "dataloader@npm:2.2.2" + checksum: 10c0/125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba + languageName: node + linkType: hard + +"date-fns@npm:^3.6.0": + version: 3.6.0 + resolution: "date-fns@npm:3.6.0" + checksum: 10c0/0b5fb981590ef2f8e5a3ba6cd6d77faece0ea7f7158948f2eaae7bbb7c80a8f63ae30b01236c2923cf89bb3719c33aeb150c715ea4fe4e86e37dcf06bed42fb6 + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 10c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decimal.js-light@npm:^2.4.1": + version: 2.5.1 + resolution: "decimal.js-light@npm:2.5.1" + checksum: 10c0/4fd33f535aac9e5bd832796831b65d9ec7914ad129c7437b3ab991b0c2eaaa5a57e654e6174c4a17f1b3895ea366f0c1ab4955cdcdf7cfdcf3ad5a58b456c020 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.3": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0, decode-uri-component@npm:^0.2.2": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.4.1": + version: 0.4.1 + resolution: "decode-uri-component@npm:0.4.1" + checksum: 10c0/a180bbdb5398ec8270d236a3ac07cb988bbf6097428481780b85840f088951dc0318a8d8f9d56796e1a322b55b29859cea29982f22f9b03af0bc60974c54e591 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deep-object-diff@npm:^1.1.9": + version: 1.1.9 + resolution: "deep-object-diff@npm:1.1.9" + checksum: 10c0/12cfd1b000d16c9192fc649923c972f8aac2ddca4f71a292f8f2c1e2d5cf3c9c16c85e73ab3e7d8a89a5ec6918d6460677d0b05bd160f7bd50bb4816d496dc24 + languageName: node + linkType: hard + +"deepmerge@npm:^2.1.1": + version: 2.2.1 + resolution: "deepmerge@npm:2.2.1" + checksum: 10c0/4379288cabd817587cee92a095ea65d18317b45e48010a2e0d87982b5f432239a144f9c8ebd4ab090cc21f0cb47e51ebfe32921f329b3b3084a2711d5d63e450 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"defu@npm:^6.1.3, defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5 + languageName: node + linkType: hard + +"delay@npm:^5.0.0": + version: 5.0.0 + resolution: "delay@npm:5.0.0" + checksum: 10c0/01cdc4cd0cd35fb622518a3df848e67e09763a38e7cdada2232b6fda9ddda72eddcf74f0e24211200fbe718434f2335f2a2633875a6c96037fefa6de42896ad7 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 10c0/9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c + languageName: node + linkType: hard + +"destr@npm:^2.0.1, destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 10c0/10e7eff5149e2839a4dd29a1e9617c3c675a3b53608d78d74fc6f4abc31daa977e6de08e0eea78965527a0d5a35467ae2f9624e0a4646d54aa1162caa094473e + languageName: node + linkType: hard + +"detect-browser@npm:5.3.0, detect-browser@npm:^5.3.0": + version: 5.3.0 + resolution: "detect-browser@npm:5.3.0" + checksum: 10c0/88d49b70ce3836e7971345b2ebdd486ad0d457d1e4f066540d0c12f9210c8f731ccbed955fcc9af2f048f5d4629702a8e46bedf5bcad42ad49a3a0927bfd5a76 + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: 10c0/e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"dijkstrajs@npm:^1.0.1": + version: 1.0.3 + resolution: "dijkstrajs@npm:1.0.3" + checksum: 10c0/2183d61ac1f25062f3c3773f3ea8d9f45ba164a00e77e07faf8cc5750da966222d1e2ce6299c875a80f969190c71a0973042192c5624d5223e4ed196ff584c99 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-helpers@npm:^5.0.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": "npm:^7.8.7" + csstype: "npm:^3.0.2" + checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0, dotenv@npm:^16.4.5": + version: 16.4.5 + resolution: "dotenv@npm:16.4.5" + checksum: 10c0/48d92870076832af0418b13acd6e5a5a3e83bb00df690d9812e94b24aff62b88ade955ac99a05501305b8dc8f1b0ee7638b18493deb6fe93d680e5220936292f + languageName: node + linkType: hard + +"dset@npm:^3.1.2": + version: 3.1.3 + resolution: "dset@npm:3.1.3" + checksum: 10c0/b1ff68f1f42af373baa85b00b04d89094cd0d7f74f94bd11364cba575f2762ed52a0a0503bbfcc92eccd07c6d55426813c8a7a6cfa020338eaea1f4edfd332c2 + languageName: node + linkType: hard + +"duplexify@npm:^4.1.2": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.2" + checksum: 10c0/8a7621ae95c89f3937f982fe36d72ea997836a708471a75bb2a0eecde3330311b1e128a6dad510e0fd64ace0c56bff3484ed2e82af0e465600c82117eadfbda5 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.668": + version: 1.4.711 + resolution: "electron-to-chromium@npm:1.4.711" + checksum: 10c0/1bb10bc9c92721dca5ff71cc333ba1df076de09e16114405252c1168fb03e7f16493127df7e360fb93eb588b47840d7b74546ba8c56dadd0e8a43522562f6aeb + languageName: node + linkType: hard + +"emoji-regex@npm:^10.3.0": + version: 10.3.0 + resolution: "emoji-regex@npm:10.3.0" + checksum: 10c0/b4838e8dcdceb44cf47f59abe352c25ff4fe7857acaf5fb51097c427f6f75b44d052eb907a7a3b86f86bc4eae3a93f5c2b7460abe79c407307e6212d65c91163 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encode-utf8@npm:^1.0.3": + version: 1.0.3 + resolution: "encode-utf8@npm:1.0.3" + checksum: 10c0/6b3458b73e868113d31099d7508514a5c627d8e16d1e0542d1b4e3652299b8f1f590c468e2b9dcdf1b4021ee961f31839d0be9d70a7f2a8a043c63b63c9b3a88 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2": + version: 1.23.2 + resolution: "es-abstract@npm:1.23.2" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.7" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.5" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/1262ebb7cdb79f255fc7d1f4505c0de2d88d117a0b21d0c984c28a0126efa717ef011f07d502353987cbade39f12c0a5ae59aef0b1231a51ce1b991e4e87c8bb + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.17": + version: 1.0.18 + resolution: "es-iterator-helpers@npm:1.0.18" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/93be402e01fa3d8bf62fcadd2fb3055126ffcfe8846911b10b85918ef46775252696c84e6191ec8125bedb61e92242ad1a54a86118436ba19814720cb9ff4aed + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"es6-promise@npm:^4.0.3": + version: 4.2.8 + resolution: "es6-promise@npm:4.2.8" + checksum: 10c0/2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 + languageName: node + linkType: hard + +"es6-promisify@npm:^5.0.0": + version: 5.0.0 + resolution: "es6-promisify@npm:5.0.0" + dependencies: + es6-promise: "npm:^4.0.3" + checksum: 10c0/23284c6a733cbf7842ec98f41eac742c9f288a78753c4fe46652bae826446ced7615b9e8a5c5f121a08812b1cd478ea58630f3e1c3d70835bd5dcd69c7cd75c9 + languageName: node + linkType: hard + +"esbuild@npm:^0.20.1": + version: 0.20.2 + resolution: "esbuild@npm:0.20.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.20.2" + "@esbuild/android-arm": "npm:0.20.2" + "@esbuild/android-arm64": "npm:0.20.2" + "@esbuild/android-x64": "npm:0.20.2" + "@esbuild/darwin-arm64": "npm:0.20.2" + "@esbuild/darwin-x64": "npm:0.20.2" + "@esbuild/freebsd-arm64": "npm:0.20.2" + "@esbuild/freebsd-x64": "npm:0.20.2" + "@esbuild/linux-arm": "npm:0.20.2" + "@esbuild/linux-arm64": "npm:0.20.2" + "@esbuild/linux-ia32": "npm:0.20.2" + "@esbuild/linux-loong64": "npm:0.20.2" + "@esbuild/linux-mips64el": "npm:0.20.2" + "@esbuild/linux-ppc64": "npm:0.20.2" + "@esbuild/linux-riscv64": "npm:0.20.2" + "@esbuild/linux-s390x": "npm:0.20.2" + "@esbuild/linux-x64": "npm:0.20.2" + "@esbuild/netbsd-x64": "npm:0.20.2" + "@esbuild/openbsd-x64": "npm:0.20.2" + "@esbuild/sunos-x64": "npm:0.20.2" + "@esbuild/win32-arm64": "npm:0.20.2" + "@esbuild/win32-ia32": "npm:0.20.2" + "@esbuild/win32-x64": "npm:0.20.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/66398f9fb2c65e456a3e649747b39af8a001e47963b25e86d9c09d2a48d61aa641b27da0ce5cad63df95ad246105e1d83e7fee0e1e22a0663def73b1c5101112 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^9.1.0": + version: 9.1.0 + resolution: "eslint-config-prettier@npm:9.1.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/6d332694b36bc9ac6fdb18d3ca2f6ac42afa2ad61f0493e89226950a7091e38981b66bac2b47ba39d15b73fff2cd32c78b850a9cf9eed9ca9a96bfb2f3a2f10d + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.8.0": + version: 2.8.1 + resolution: "eslint-module-utils@npm:2.8.1" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/1aeeb97bf4b688d28de136ee57c824480c37691b40fa825c711a4caf85954e94b99c06ac639d7f1f6c1d69223bd21bcb991155b3e589488e958d5b83dfd0f882 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.29.1": + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" + dependencies: + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" + semver: "npm:^6.3.1" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196 + languageName: node + linkType: hard + +"eslint-plugin-jest@npm:^27.9.0": + version: 27.9.0 + resolution: "eslint-plugin-jest@npm:27.9.0" + dependencies: + "@typescript-eslint/utils": "npm:^5.10.0" + peerDependencies: + "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: 10c0/b8b09f7d8ba3d84a8779a6e95702a6e4dce45ab034e4edf5ddb631e77cd38dcdf791dfd9228e0a0d1d80d1eb2d278deb62ad2ec39f10fb8fd43cec07304e0c38 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^5.1.3": + version: 5.1.3 + resolution: "eslint-plugin-prettier@npm:5.1.3" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + synckit: "npm:^0.8.6" + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: "*" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 10c0/f45d5fc1fcfec6b0cf038a7a65ddd10a25df4fe3f9e1f6b7f0d5100e66f046a26a2492e69ee765dddf461b93c114cf2e1eb18d4970aafa6f385448985c136e09 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^4.6.0": + version: 4.6.0 + resolution: "eslint-plugin-react-hooks@npm:4.6.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 + languageName: node + linkType: hard + +"eslint-plugin-react-native-globals@npm:^0.1.1": + version: 0.1.2 + resolution: "eslint-plugin-react-native-globals@npm:0.1.2" + checksum: 10c0/ddb4ec5e31f6e72a66d51218c8f0b558b5366d614598fbec1833ac529db2c2dc1724c7ed71c1fcf922251b8438634f704d265c9bedf51aecfe807ec4a0403c09 + languageName: node + linkType: hard + +"eslint-plugin-react-native@npm:^4.1.0": + version: 4.1.0 + resolution: "eslint-plugin-react-native@npm:4.1.0" + dependencies: + eslint-plugin-react-native-globals: "npm:^0.1.1" + peerDependencies: + eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/9aedccde6227b78bad7c243844aca0860fca2dccd635e91e745bcd617c1e7fb889fa212917cf7b56860335a147fc7c8dc339d1976330ec4f896fe9156b35b162 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.34.1": + version: 7.34.1 + resolution: "eslint-plugin-react@npm:7.34.1" + dependencies: + array-includes: "npm:^3.1.7" + array.prototype.findlast: "npm:^1.2.4" + array.prototype.flatmap: "npm:^1.3.2" + array.prototype.toreversed: "npm:^1.1.2" + array.prototype.tosorted: "npm:^1.1.3" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.17" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.7" + object.fromentries: "npm:^2.0.7" + object.hasown: "npm:^1.1.3" + object.values: "npm:^1.1.7" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.10" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/7c61b1314d37a4ac2f2474f9571f801f1a1a5d81dcd4abbb5d07145406518722fb792367267757ee116bde254be9753242d6b93c9619110398b3fe1746e4848c + languageName: node + linkType: hard + +"eslint-plugin-sort-keys-fix@npm:^1.1.2": + version: 1.1.2 + resolution: "eslint-plugin-sort-keys-fix@npm:1.1.2" + dependencies: + espree: "npm:^6.1.2" + esutils: "npm:^2.0.2" + natural-compare: "npm:^1.4.0" + requireindex: "npm:~1.2.0" + checksum: 10c0/4b916168b1d295cc4eca37a0ede149534ce3a25df0501ef92fdbda3ea2c6e8bdd2c25a2d6bce7cdf31900f34edbde3c45b4062f5b4fcefa82ce9ac49f2958615 + languageName: node + linkType: hard + +"eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^1.1.0": + version: 1.3.0 + resolution: "eslint-visitor-keys@npm:1.3.0" + checksum: 10c0/10c91fdbbe36810dd4308e57f9a8bc7177188b2a70247e54e3af1fa05ebc66414ae6fd4ce3c6c6821591f43a556e9037bc6b071122e099b5f8b7d2f76df553e3 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:^8.57.0": + version: 8.57.0 + resolution: "eslint@npm:8.57.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.0" + "@humanwhocodes/config-array": "npm:^0.11.14" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 + languageName: node + linkType: hard + +"espree@npm:^6.1.2": + version: 6.2.1 + resolution: "espree@npm:6.2.1" + dependencies: + acorn: "npm:^7.1.1" + acorn-jsx: "npm:^5.2.0" + eslint-visitor-keys: "npm:^1.1.0" + checksum: 10c0/499b47bc599ac3515598072ca787016bdaf0d463467ee1c7113061949359a26d74b8fb344afdad63e38b0e81c7b068013125f7a123d0776e0d75fffe2fc9cfac + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"eth-block-tracker@npm:6.1.0": + version: 6.1.0 + resolution: "eth-block-tracker@npm:6.1.0" + dependencies: + "@metamask/safe-event-emitter": "npm:^2.0.0" + "@metamask/utils": "npm:^3.0.1" + json-rpc-random-id: "npm:^1.0.1" + pify: "npm:^3.0.0" + checksum: 10c0/31cee76eeab18e68363aafbc1687f496f21e6e1a3aab9efe2582abc1885f77c37191006809f1819c81611019512375f9987f9fcae1ed4ac4650fb1582387fdcf + languageName: node + linkType: hard + +"eth-json-rpc-filters@npm:5.1.0": + version: 5.1.0 + resolution: "eth-json-rpc-filters@npm:5.1.0" + dependencies: + "@metamask/safe-event-emitter": "npm:^2.0.0" + async-mutex: "npm:^0.2.6" + eth-query: "npm:^2.1.2" + json-rpc-engine: "npm:^6.1.0" + pify: "npm:^5.0.0" + checksum: 10c0/70598749ed369e1ae2013d7f48421a82636f3dc803976f5e7a4a7109e8df6ef0532010a635645e5f83fa8ed8054b5338d4dbd4901d41392155eec91c69df5492 + languageName: node + linkType: hard + +"eth-query@npm:^2.1.2": + version: 2.1.2 + resolution: "eth-query@npm:2.1.2" + dependencies: + json-rpc-random-id: "npm:^1.0.0" + xtend: "npm:^4.0.1" + checksum: 10c0/ef28d14bfad14b8813c9ba8f9f0baf8778946a4797a222b8a039067222ac68aa3d9d53ed22a71c75b99240a693af1ed42508a99fd484cce2a7726822723346b7 + languageName: node + linkType: hard + +"eth-rpc-errors@npm:4.0.2": + version: 4.0.2 + resolution: "eth-rpc-errors@npm:4.0.2" + dependencies: + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/e777788481945e7cfa1068bbf2e6368dfa2c65e0b8e50d15ea902369cc9509d7c157c8e384341ddfcd7e7d045a5f0d8e28cac7c6d0d4dffe94c35342e78f7e3f + languageName: node + linkType: hard + +"eth-rpc-errors@npm:^4.0.2": + version: 4.0.3 + resolution: "eth-rpc-errors@npm:4.0.3" + dependencies: + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/332cbc5a957b62bb66ea01da2a467da65026df47e6516a286a969cad74d6002f2b481335510c93f12ca29c46ebc8354e39e2240769d86184f9b4c30832cf5466 + languageName: node + linkType: hard + +"ethers@npm:^6.11.1": + version: 6.11.1 + resolution: "ethers@npm:6.11.1" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.1" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@types/node": "npm:18.15.13" + aes-js: "npm:4.0.0-beta.5" + tslib: "npm:2.4.0" + ws: "npm:8.5.0" + checksum: 10c0/97a920e0244ba6cd1622b58a448c87f26dad20bad242777abb2e583d045bf7752218477bd7367ba6518c2a5e2b16030afff15e87b705526d0ea667498c27ac89 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.1, eventemitter3@npm:^4.0.7": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"execa@npm:8.0.1, execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"expect@npm:^29.0.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"extract-files@npm:^11.0.0": + version: 11.0.0 + resolution: "extract-files@npm:11.0.0" + checksum: 10c0/7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 + languageName: node + linkType: hard + +"eyes@npm:^0.1.8": + version: 0.1.8 + resolution: "eyes@npm:0.1.8" + checksum: 10c0/4c79a9cbf45746d8c9f48cc957e35ad8ea336add1c7b8d5a0e002efc791a7a62b27b2188184ef1a1eea7bc3cd06b161791421e0e6c5fe78309705a162c53eea8 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-equals@npm:^5.0.1": + version: 5.0.1 + resolution: "fast-equals@npm:5.0.1" + checksum: 10c0/d7077b8b681036c2840ed9860a3048e44fc268fad2b525b8f25b43458be0c8ad976152eb4b475de9617170423c5b802121ebb61ed6641c3ac035fadaf805c8c0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-querystring@npm:^1.1.1": + version: 1.1.2 + resolution: "fast-querystring@npm:1.1.2" + dependencies: + fast-decode-uri-component: "npm:^1.0.1" + checksum: 10c0/e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 + languageName: node + linkType: hard + +"fast-redact@npm:^3.0.0": + version: 3.5.0 + resolution: "fast-redact@npm:3.5.0" + checksum: 10c0/7e2ce4aad6e7535e0775bf12bd3e4f2e53d8051d8b630e0fa9e67f68cb0b0e6070d2f7a94b1d0522ef07e32f7c7cda5755e2b677a6538f1e9070ca053c42343a + languageName: node + linkType: hard + +"fast-safe-stringify@npm:^2.0.6": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d + languageName: node + linkType: hard + +"fast-stable-stringify@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-stable-stringify@npm:1.0.0" + checksum: 10c0/1d773440c7a9615950577665074746c2e92edafceefa789616ecb6166229e0ccc6dae206ca9b9f7da0d274ba5779162aab2d07940a0f6e52a41a4e555392eb3b + languageName: node + linkType: hard + +"fast-url-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: "npm:^1.3.2" + checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"fault@npm:^1.0.0": + version: 1.0.4 + resolution: "fault@npm:1.0.4" + dependencies: + format: "npm:^0.2.0" + checksum: 10c0/c86c11500c1b676787296f31ade8473adcc6784f118f07c1a9429730b6288d0412f96e069ce010aa57e4f65a9cccb5abee8868bbe3c5f10de63b20482c9baebd + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 10c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f + languageName: node + linkType: hard + +"fbjs@npm:^3.0.0": + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" + dependencies: + cross-fetch: "npm:^3.1.5" + fbjs-css-vars: "npm:^1.0.0" + loose-envify: "npm:^1.0.0" + object-assign: "npm:^4.1.0" + promise: "npm:^7.1.1" + setimmediate: "npm:^1.0.5" + ua-parser-js: "npm:^1.0.35" + checksum: 10c0/66d0a2fc9a774f9066e35ac2ac4bf1245931d27f3ac287c7d47e6aa1fc152b243c2109743eb8f65341e025621fb51a12038fadb9fd8fda2e3ddae04ebab06f91 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf + languageName: node + linkType: hard + +"filter-obj@npm:^5.1.0": + version: 5.1.0 + resolution: "filter-obj@npm:5.1.0" + checksum: 10c0/716e8ad2bc352e206556b3e5695b3cdff8aab80c53ea4b00c96315bbf467b987df3640575100aef8b84e812cf5ea4251db4cd672bbe33b1e78afea88400c67dd + languageName: node + linkType: hard + +"find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: 10c0/1abc7f3bf2f8d78ff26d9e00ce9d0f7b32e5ff6d1da2857bcdf4746134c422282b091c672cde0572cac3840713487e0a7a636af9aa1b74cb11894b447a521efa + languageName: node + linkType: hard + +"find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + languageName: node + linkType: hard + +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"format@npm:^0.2.0": + version: 0.2.2 + resolution: "format@npm:0.2.2" + checksum: 10c0/6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6 + languageName: node + linkType: hard + +"formik@npm:^2.4.5": + version: 2.4.5 + resolution: "formik@npm:2.4.5" + dependencies: + "@types/hoist-non-react-statics": "npm:^3.3.1" + deepmerge: "npm:^2.1.1" + hoist-non-react-statics: "npm:^3.3.0" + lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + react-fast-compare: "npm:^2.0.1" + tiny-warning: "npm:^1.0.2" + tslib: "npm:^2.0.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/61f0d9eb092edd122f0d2988ca3d0a01073bde38af977e96ba9818382dc1fefd4cdb016cd61f08443055a748bbbbe2a95347d4528b81cc5c1c6f75865fc84927 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-east-asian-width@npm:^1.0.0": + version: 1.2.0 + resolution: "get-east-asian-width@npm:1.2.0" + checksum: 10c0/914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 10c0/2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 + languageName: node + linkType: hard + +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 10c0/61237342fe035967e5ad1b67a2dee347a64de093bf1222b7cd50072568d73c48dad5cc5cd4fa44635b7cfdcd14d6c47554edb9891c2ec70ab33ecb831683e257 + languageName: node + linkType: hard + +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"glob@npm:^7.1.1, glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: "npm:^1.1.3" + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + languageName: node + linkType: hard + +"globby@npm:^11.0.3, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"globrex@npm:^0.1.2": + version: 0.1.2 + resolution: "globrex@npm:0.1.2" + checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 + languageName: node + linkType: hard + +"goober@npm:^2.0.33": + version: 2.1.14 + resolution: "goober@npm:2.1.14" + peerDependencies: + csstype: ^3.0.10 + checksum: 10c0/184eda787a9a14cffbaa8284e98dc127095e538b4acab2a84b81babca84253bb883e16208822e02584f27c7a69f3ec47341e5060dfa40a0e07c32ac1f79b2714 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"graphql-config@npm:^5.0.2": + version: 5.0.3 + resolution: "graphql-config@npm:5.0.3" + dependencies: + "@graphql-tools/graphql-file-loader": "npm:^8.0.0" + "@graphql-tools/json-file-loader": "npm:^8.0.0" + "@graphql-tools/load": "npm:^8.0.0" + "@graphql-tools/merge": "npm:^9.0.0" + "@graphql-tools/url-loader": "npm:^8.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + cosmiconfig: "npm:^8.1.0" + jiti: "npm:^1.18.2" + minimatch: "npm:^4.2.3" + string-env-interpolation: "npm:^1.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: 10c0/dadd04b08b0af5b9652ef1e8baf09adb7221ffca48e5272d933ee6faf0b962260a46b5e0da536576de56ffbdca118b257038e3319834045403fec9528b743e78 + languageName: node + linkType: hard + +"graphql-request@npm:^6.0.0": + version: 6.1.0 + resolution: "graphql-request@npm:6.1.0" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.2.0" + cross-fetch: "npm:^3.1.5" + peerDependencies: + graphql: 14 - 16 + checksum: 10c0/f8167925a110e8e1de93d56c14245e7e64391dc8dce5002dd01bf24a3059f345d4ca1bb6ce2040e2ec78264211b0704e75da3e63984f0f74d2042f697a4e8cc6 + languageName: node + linkType: hard + +"graphql-tag@npm:^2.11.0": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: "npm:^2.1.0" + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 + languageName: node + linkType: hard + +"graphql-ws@npm:^5.14.0": + version: 5.15.0 + resolution: "graphql-ws@npm:5.15.0" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 10c0/4fcd93ed75261681b1def8cd96d1db0fc650586b145325b3fc134ab9c27ed48fbedad3e8261e3f3df65758a332d0420b8c60e13abb1ee8329ef624e312b61ccc + languageName: node + linkType: hard + +"graphql@npm:^16.8.1": + version: 16.8.1 + resolution: "graphql@npm:16.8.1" + checksum: 10c0/129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a + languageName: node + linkType: hard + +"h3@npm:^1.10.2, h3@npm:^1.11.1": + version: 1.11.1 + resolution: "h3@npm:1.11.1" + dependencies: + cookie-es: "npm:^1.0.0" + crossws: "npm:^0.2.2" + defu: "npm:^6.1.4" + destr: "npm:^2.0.3" + iron-webcrypto: "npm:^1.0.0" + ohash: "npm:^1.1.3" + radix3: "npm:^1.1.0" + ufo: "npm:^1.4.0" + uncrypto: "npm:^0.1.3" + unenv: "npm:^1.9.0" + checksum: 10c0/bd02bfae536a0facb9ddcd85bd51ad16264ea6fd331a548540a0846e426348449fcbcb10b0fa08673cd1d9c60e6ff5d8f56e7ec2e1ee43fda460d8c16866cbfa + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hash.js@npm:^1.1.7": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^2.0.0": + version: 2.2.5 + resolution: "hast-util-parse-selector@npm:2.2.5" + checksum: 10c0/29b7ee77960ded6a99d30c287d922243071cc07b39f2006f203bd08ee54eb8f66bdaa86ef6527477c766e2382d520b60ee4e4087f189888c35d8bcc020173648 + languageName: node + linkType: hard + +"hastscript@npm:^6.0.0": + version: 6.0.0 + resolution: "hastscript@npm:6.0.0" + dependencies: + "@types/hast": "npm:^2.0.0" + comma-separated-tokens: "npm:^1.0.0" + hast-util-parse-selector: "npm:^2.0.0" + property-information: "npm:^5.0.0" + space-separated-tokens: "npm:^1.0.0" + checksum: 10c0/f76d9cf373cb075c8523c8ad52709f09f7e02b7c9d3152b8d35c65c265b9f1878bed6023f215a7d16523921036d40a7da292cb6f4399af9b5eccac2a5a5eb330 + languageName: node + linkType: hard + +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: "npm:^1.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb + languageName: node + linkType: hard + +"hey-listen@npm:^1.0.8": + version: 1.0.8 + resolution: "hey-listen@npm:1.0.8" + checksum: 10c0/38db3028b4756f3d536c0f6a92da53bad577ab649b06dddfd0a4d953f9a46bbc6a7f693c8c5b466a538d6d23dbc469260c848427f0de14198a2bbecbac37b39e + languageName: node + linkType: hard + +"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": + version: 10.7.3 + resolution: "highlight.js@npm:10.7.3" + checksum: 10c0/073837eaf816922427a9005c56c42ad8786473dc042332dfe7901aa065e92bc3d94ebf704975257526482066abb2c8677cc0326559bb8621e046c21c5991c434 + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 10c0/1ea04d50d9a84ad6e7d9ee621160ce9515936e32e7f5ba445db48a5d72681858002c934c7f3ae5f474b301c1cd6b418aee3f6a2f109822109e606cc1a6c17c03 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"husky@npm:^9.0.11": + version: 9.0.11 + resolution: "husky@npm:9.0.11" + bin: + husky: bin.mjs + checksum: 10c0/2c787dcf74a837fc9a4fea7da907509d4bd9a289f4ea10ecc9d86279e4d4542b0f5f6443a619bccae19e265f2677172cc2b86aae5c932a35a330cc227d914605 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 10c0/9f0c83703a365e00bd0b4ed6380ce509a06dedfc6ec39b2ba5740085069fd2f2ff5c14ba19356488e3612a2f9c49985971982d836460a982a5d0b4019eeba48a + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd + languageName: node + linkType: hard + +"immutable@npm:~3.7.6": + version: 3.7.6 + resolution: "immutable@npm:3.7.6" + checksum: 10c0/efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"import-from@npm:4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inquirer@npm:^8.0.0": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"internmap@npm:1 - 2": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"iron-webcrypto@npm:^1.0.0": + version: 1.1.0 + resolution: "iron-webcrypto@npm:1.1.0" + checksum: 10c0/58c783a3f18128e37918f83c8cd2703b2494ccec9316a0de5194b0b52282d9eac12a5a0a8c18da6b55940c3f9957a5ae10b786616692a1e5a12caaa019dde8de + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: "npm:^1.0.0" + is-windows: "npm:^1.0.1" + checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 + languageName: node + linkType: hard + +"is-alphabetical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphabetical@npm:1.0.4" + checksum: 10c0/1505b1de5a1fd74022c05fb21b0e683a8f5229366bac8dc4d34cf6935bcfd104d1125a5e6b083fb778847629f76e5bdac538de5367bdf2b927a1356164e23985 + languageName: node + linkType: hard + +"is-alphanumerical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphanumerical@npm:1.0.4" + dependencies: + is-alphabetical: "npm:^1.0.0" + is-decimal: "npm:^1.0.0" + checksum: 10c0/d623abae7130a7015c6bf33d99151d4e7005572fd170b86568ff4de5ae86ac7096608b87dd4a1d4dbbd497e392b6396930ba76c9297a69455909cebb68005905 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: "npm:^1.1.13" + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-decimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-decimal@npm:1.0.4" + checksum: 10c0/a4ad53c4c5c4f5a12214e7053b10326711f6a71f0c63ba1314a77bd71df566b778e4ebd29f9fb6815f07a4dc50c3767fb19bd6fc9fa05e601410f1d64ffeac48 + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^5.0.0": + version: 5.0.0 + resolution: "is-fullwidth-code-point@npm:5.0.0" + dependencies: + get-east-asian-width: "npm:^1.0.0" + checksum: 10c0/cd591b27d43d76b05fa65ed03eddce57a16e1eca0b7797ff7255de97019bcaf0219acfc0c4f7af13319e13541f2a53c0ace476f442b13267b9a6a7568f2b65c8 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + +"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-hexadecimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-hexadecimal@npm:1.0.4" + checksum: 10c0/ec4c64e5624c0f240922324bc697e166554f09d3ddc7633fc526084502626445d0a871fbd8cae52a9844e83bd0bb414193cc5a66806d7b2867907003fc70c5ea + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: "npm:^1.0.0" + checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-typedarray@npm:1.0.0, is-typedarray@npm:^1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: "npm:^0.1.2" + checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: "npm:^0.1.0" + checksum: 10c0/9f3741d4b7560e2a30b9ce0c79bb30c7bdcc5df77c897bd59bb68f0fd882ae698015e8da81d48331def66c778d430c1ae3cb8c1fcc34e96c576b66198395faa7 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isomorphic-unfetch@npm:3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: "npm:^2.6.1" + unfetch: "npm:^4.2.0" + checksum: 10c0/d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 + languageName: node + linkType: hard + +"isomorphic-ws@npm:^4.0.1": + version: 4.0.1 + resolution: "isomorphic-ws@npm:4.0.1" + peerDependencies: + ws: "*" + checksum: 10c0/7cb90dc2f0eb409825558982fb15d7c1d757a88595efbab879592f9d2b63820d6bbfb5571ab8abe36c715946e165a413a99f6aafd9f40ab1f514d73487bc9996 + languageName: node + linkType: hard + +"isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 + languageName: node + linkType: hard + +"isows@npm:1.0.3": + version: 1.0.3 + resolution: "isows@npm:1.0.3" + peerDependencies: + ws: "*" + checksum: 10c0/adec15db704bb66615dd8ef33f889d41ae2a70866b21fa629855da98cc82a628ae072ee221fe9779a9a19866cad2a3e72593f2d161a0ce0e168b4484c7df9cd2 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"jayson@npm:^4.1.0": + version: 4.1.0 + resolution: "jayson@npm:4.1.0" + dependencies: + "@types/connect": "npm:^3.4.33" + "@types/node": "npm:^12.12.54" + "@types/ws": "npm:^7.4.4" + JSONStream: "npm:^1.3.5" + commander: "npm:^2.20.3" + delay: "npm:^5.0.0" + es6-promisify: "npm:^5.0.0" + eyes: "npm:^0.1.8" + isomorphic-ws: "npm:^4.0.1" + json-stringify-safe: "npm:^5.0.1" + uuid: "npm:^8.3.2" + ws: "npm:^7.4.5" + bin: + jayson: bin/jayson.js + checksum: 10c0/1b3a642eab65e7c07be45d6b9c08c1713348ed71454e37536f479400eb6c7257061fab74430d4677d1cedbed18db8fe8370202f0b52fac87d9c7af1140aa293d + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jiti@npm:^1.17.1, jiti@npm:^1.18.2, jiti@npm:^1.21.0": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + languageName: node + linkType: hard + +"jose@npm:^5.0.0": + version: 5.2.3 + resolution: "jose@npm:5.2.3" + checksum: 10c0/7cf02e1d1d6226b6ee136fb6c53fd4dde9cfdaf1613ceaab3a5629803eaa80cbfd77cddc38a54c55c82b8f63428677660c93fc87493818a07adc9c0c77ef16ff + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-rpc-engine@npm:6.1.0, json-rpc-engine@npm:^6.1.0": + version: 6.1.0 + resolution: "json-rpc-engine@npm:6.1.0" + dependencies: + "@metamask/safe-event-emitter": "npm:^2.0.0" + eth-rpc-errors: "npm:^4.0.2" + checksum: 10c0/29c480f88152b1987ab0f58f9242ee163d5a7e95cd0d8ae876c08b21657022b82f6008f5eecd048842fb7f6fc3b4e364fde99ca620458772b6abd1d2c1e020d5 + languageName: node + linkType: hard + +"json-rpc-random-id@npm:^1.0.0, json-rpc-random-id@npm:^1.0.1": + version: 1.0.1 + resolution: "json-rpc-random-id@npm:1.0.1" + checksum: 10c0/8d4594a3d4ef5f4754336e350291a6677fc6e0d8801ecbb2a1e92e50ca04a4b57e5eb97168a4b2a8e6888462133cbfee13ea90abc008fb2f7279392d83d3ee7a + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stable-stringify@npm:^1.0.1": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde + languageName: node + linkType: hard + +"json-stringify-safe@npm:^5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + languageName: node + linkType: hard + +"json-to-pretty-yaml@npm:^1.2.2": + version: 1.2.2 + resolution: "json-to-pretty-yaml@npm:1.2.2" + dependencies: + remedial: "npm:^1.0.7" + remove-trailing-spaces: "npm:^1.0.6" + checksum: 10c0/d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonc-parser@npm:^3.2.0": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + languageName: node + linkType: hard + +"jsonparse@npm:^1.2.0": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"keccak@npm:^3.0.1": + version: 3.0.4 + resolution: "keccak@npm:3.0.4" + dependencies: + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/153525c1c1f770beadb8f8897dec2f1d2dcbee11d063fe5f61957a5b236bfd3d2a111ae2727e443aa6a848df5edb98b9ef237c78d56df49087b0ca8a232ca9cd + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: 10c0/0e028ebeda79a4e48c7e36708dbe7ced233c7a1f1bc925e506f150dd2ce43178bee8d20361c445bd915569709d9dc9ea80063b4d3c3cf5d615ab43aa31d3ec3d + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"lilconfig@npm:3.0.0": + version: 3.0.0 + resolution: "lilconfig@npm:3.0.0" + checksum: 10c0/7f5ee7a658dc016cacf146815e8d88b06f06f4402823b8b0934e305a57a197f55ccc9c5cd4fb5ea1b2b821c8ccaf2d54abd59602a4931af06eabda332388d3e6 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"lint-staged@npm:^15.2.2": + version: 15.2.2 + resolution: "lint-staged@npm:15.2.2" + dependencies: + chalk: "npm:5.3.0" + commander: "npm:11.1.0" + debug: "npm:4.3.4" + execa: "npm:8.0.1" + lilconfig: "npm:3.0.0" + listr2: "npm:8.0.1" + micromatch: "npm:4.0.5" + pidtree: "npm:0.6.0" + string-argv: "npm:0.3.2" + yaml: "npm:2.3.4" + bin: + lint-staged: bin/lint-staged.js + checksum: 10c0/a1ba6c7ee53e30a0f6ea9a351d95d3d0d2be916a41b561e22907e9ea513eb18cb3dbe65bff3ec13fad15777999efe56b2e2a95427e31d12a9b7e7948c3630ee2 + languageName: node + linkType: hard + +"listhen@npm:^1.7.2": + version: 1.7.2 + resolution: "listhen@npm:1.7.2" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + "@parcel/watcher-wasm": "npm:^2.4.1" + citty: "npm:^0.1.6" + clipboardy: "npm:^4.0.0" + consola: "npm:^3.2.3" + crossws: "npm:^0.2.0" + defu: "npm:^6.1.4" + get-port-please: "npm:^3.1.2" + h3: "npm:^1.10.2" + http-shutdown: "npm:^1.2.2" + jiti: "npm:^1.21.0" + mlly: "npm:^1.6.1" + node-forge: "npm:^1.3.1" + pathe: "npm:^1.1.2" + std-env: "npm:^3.7.0" + ufo: "npm:^1.4.0" + untun: "npm:^0.1.3" + uqr: "npm:^0.1.2" + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: 10c0/cd4d0651686b88c61a5bd5d5afc03feb99e352eb7862260112010655cf7997fb3356e61317f09555e2b7412175ae05265fc9e97458aa014586bf9fa4ab22bd5a + languageName: node + linkType: hard + +"listr2@npm:8.0.1": + version: 8.0.1 + resolution: "listr2@npm:8.0.1" + dependencies: + cli-truncate: "npm:^4.0.0" + colorette: "npm:^2.0.20" + eventemitter3: "npm:^5.0.1" + log-update: "npm:^6.0.0" + rfdc: "npm:^1.3.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10c0/b565d6ceb3a4c2dbe0c1735c0fd907afd0d6f89de21aced8e05187b2d88ca2f8f9ebc5d743885396a00f05f13146f6be744d098a56ce0402cf1cd131485a7ff1 + languageName: node + linkType: hard + +"listr2@npm:^4.0.5": + version: 4.0.5 + resolution: "listr2@npm:4.0.5" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.16" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.5.5" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 + languageName: node + linkType: hard + +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.1.0" + "@lit/reactive-element": "npm:^1.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/f44c12fa3423a4e9ca5b84651410687e14646bb270ac258325e6905affac64a575f041f8440377e7ebaefa3910b6f0d6b8b1e902cb1aa5d0849b3fdfbf4fb3b6 + languageName: node + linkType: hard + +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" + dependencies: + "@types/trusted-types": "npm:^2.0.2" + checksum: 10c0/90057dee050803823ac884c1355b0213ab8c05fbe2ec63943c694b61aade5d36272068f3925f45a312835e504f9c9784738ef797009f0a756a750351eafb52d5 + languageName: node + linkType: hard + +"lit@npm:2.8.0": + version: 2.8.0 + resolution: "lit@npm:2.8.0" + dependencies: + "@lit/reactive-element": "npm:^1.6.0" + lit-element: "npm:^3.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/bf33c26b1937ee204aed1adbfa4b3d43a284e85aad8ea9763c7865365917426eded4e5888158b4136095ea42054812561fe272862b61775f1198fad3588b071f + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 + languageName: node + linkType: hard + +"lodash.isequal@npm:4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: 10c0/fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 + languageName: node + linkType: hard + +"lodash.throttle@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.throttle@npm:4.1.1" + checksum: 10c0/14628013e9e7f65ac904fc82fd8ecb0e55a9c4c2416434b1dd9cf64ae70a8937f0b15376a39a68248530adc64887ed0fe2b75204b2c9ec3eea1cb2d66ddd125d + languageName: node + linkType: hard + +"lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + +"log-update@npm:^6.0.0": + version: 6.0.0 + resolution: "log-update@npm:6.0.0" + dependencies: + ansi-escapes: "npm:^6.2.0" + cli-cursor: "npm:^4.0.0" + slice-ansi: "npm:^7.0.0" + strip-ansi: "npm:^7.1.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10c0/e0b3c3401ef49ce3eb17e2f83d644765e4f7988498fc1344eaa4f31ab30e510dcc469a7fb64dc01bd1c8d9237d917598fa677a9818705fb3774c10f6e9d4b27c + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lower-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + +"lowlight@npm:^1.17.0": + version: 1.20.0 + resolution: "lowlight@npm:1.20.0" + dependencies: + fault: "npm:^1.0.0" + highlight.js: "npm:~10.7.0" + checksum: 10c0/728bce6f6fe8b157f48d3324e597f452ce0eed2ccff1c0f41a9047380f944e971eb45bceb31f08fbb64d8f338dabb166f10049b35b92c7ec5cf0241d6adb3dea + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + languageName: node + linkType: hard + +"material-ui-popup-state@npm:^5.1.0": + version: 5.1.0 + resolution: "material-ui-popup-state@npm:5.1.0" + dependencies: + "@babel/runtime": "npm:^7.20.6" + "@types/prop-types": "npm:^15.7.3" + "@types/react": "npm:^18.0.26" + classnames: "npm:^2.2.6" + prop-types: "npm:^15.7.2" + peerDependencies: + "@mui/material": ^5.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/a45ce00ced7b4908423955993de671c1c7677ae3e784e2a56eea79a30f5e50b29ded428d397c485e129db0486e55dd228a6f303bcc70750e03c5e0973c5b1604 + languageName: node + linkType: hard + +"media-query-parser@npm:^2.0.2": + version: 2.0.2 + resolution: "media-query-parser@npm:2.0.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + checksum: 10c0/91a987e9f6620f5c7d0fcf22bd0a106bbaccdef96aba62c461656ee656e141dd2b60f2f1d99411799183c2ea993bd177ca92c26c08bf321fbc0c846ab391d79c + languageName: node + linkType: hard + +"memoize-one@npm:^6.0.0": + version: 6.0.0 + resolution: "memoize-one@npm:6.0.0" + checksum: 10c0/45c88e064fd715166619af72e8cf8a7a17224d6edf61f7a8633d740ed8c8c0558a4373876c9b8ffc5518c2b65a960266adf403cc215cb1e90f7e262b58991f54 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" + peerDependencies: + "@types/node": ">=13" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 + languageName: node + linkType: hard + +"micromatch@npm:4.0.5, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^4.2.3": + version: 4.2.3 + resolution: "minimatch@npm:4.2.3" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mlly@npm:^1.2.0, mlly@npm:^1.6.1": + version: 1.6.1 + resolution: "mlly@npm:1.6.1" + dependencies: + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.0.3" + ufo: "npm:^1.3.2" + checksum: 10c0/a7bf26b3d4f83b0f5a5232caa3af44be08b464f562f31c11d885d1bc2d43b7d717137d47b0c06fdc69e1b33ffc09f902b6d2b18de02c577849d40914e8785092 + languageName: node + linkType: hard + +"modern-ahocorasick@npm:^1.0.0": + version: 1.0.1 + resolution: "modern-ahocorasick@npm:1.0.1" + checksum: 10c0/90ef4516ba8eef136d0cd4949faacdadee02217b8e25deda2881054ca8fcc32b985ef159b6e794c40e11c51040303c8e2975b20b23b86ec8a2a63516bbf93add + languageName: node + linkType: hard + +"motion@npm:10.16.2": + version: 10.16.2 + resolution: "motion@npm:10.16.2" + dependencies: + "@motionone/animation": "npm:^10.15.1" + "@motionone/dom": "npm:^10.16.2" + "@motionone/svelte": "npm:^10.16.2" + "@motionone/types": "npm:^10.15.1" + "@motionone/utils": "npm:^10.15.1" + "@motionone/vue": "npm:^10.16.2" + checksum: 10c0/ea3fa2c7ce881824bcefa39b96b5e2b802d4b664b8a64644cded11197c9262e2a5b14b2e9516940e06cec37d3c39e4c79b26825c447f71ba1cfd7e3370efbe61 + languageName: node + linkType: hard + +"mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"multiformats@npm:^9.4.2": + version: 9.9.0 + resolution: "multiformats@npm:9.9.0" + checksum: 10c0/1fdb34fd2fb085142665e8bd402570659b50a5fae5994027e1df3add9e1ce1283ed1e0c2584a5c63ac0a58e871b8ee9665c4a99ca36ce71032617449d48aa975 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"napi-wasm@npm:^1.1.0": + version: 1.1.0 + resolution: "napi-wasm@npm:1.1.0" + checksum: 10c0/074df6b5b72698f07b39ca3c448a3fcbaf8e6e78521f0cb3aefd8c2f059d69eae0e3bfe367b4aa3df1976c25e351e4e52a359f22fb2c379eb6781bfa042f582b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + +"node-addon-api@npm:^2.0.0": + version: 2.0.2 + resolution: "node-addon-api@npm:2.0.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/ade6c097ba829fa4aee1ca340117bb7f8f29fdae7b777e343a9d5cbd548481d1f0894b7b907d23ce615c70d932e8f96154caed95c3fa935cfe8cf87546510f64 + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/2e096ab079e3c46d33b0e252386e9c239c352f7cc6d75363d9a3c00bdff34c1a5da170da861917512843f213c32d024ced9dc9552b968029786480d18727ec66 + languageName: node + linkType: hard + +"node-fetch-native@npm:^1.4.0, node-fetch-native@npm:^1.6.1, node-fetch-native@npm:^1.6.2": + version: 1.6.2 + resolution: "node-fetch-native@npm:1.6.2" + checksum: 10c0/2c1e94ce6e5b8a8ca85d5cdb837bc098ba2a54dea07e3509250288bebca8147950e1bef10db30120b389263ec0064e0562effdd085bb49d4e2046ebd963ee98d + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.7.0": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": + version: 4.8.0 + resolution: "node-gyp-build@npm:4.8.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/85324be16f81f0235cbbc42e3eceaeb1b5ab94c8d8f5236755e1435b4908338c65a4e75f66ee343cbcb44ddf9b52a428755bec16dcd983295be4458d95c8e1ad + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + languageName: node + linkType: hard + +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: "npm:^1.0.1" + checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"notistack@npm:^3.0.1": + version: 3.0.1 + resolution: "notistack@npm:3.0.1" + dependencies: + clsx: "npm:^1.1.0" + goober: "npm:^2.0.33" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/dd5bd492dbaf8d07a1f45a53ae195c5d481bc7136d73a756eb076534d315216a3cd2f4628263be55ad21d8bfed6ec546e5063584ffcc2798fb2aac56e5ccf0cf + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.7": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.7": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.1": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.3": + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" + dependencies: + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/8a41ba4fb1208a85c2275e9b5098071beacc24345b9a71ab98ef0a1c61b34dc74c6b460ff1e1884c33843d8f2553df64a10eec2b74b3ed009e3b2710c826bd2c + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.1.7": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 + languageName: node + linkType: hard + +"ofetch@npm:^1.3.3": + version: 1.3.3 + resolution: "ofetch@npm:1.3.3" + dependencies: + destr: "npm:^2.0.1" + node-fetch-native: "npm:^1.4.0" + ufo: "npm:^1.3.0" + checksum: 10c0/ac4d2519841c6ffcbb3f5dee6db7f29dc273e15d8fd6ee89d9dbfae7c0542cd72a2424e8527ae7147b36eec35667066754aeb69dc7c02e6c8dcb943579e9764e + languageName: node + linkType: hard + +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 10c0/928f5bdbd8cd73f90cf544c0533dbda8e0a42d9b8c7454ab89e64e4d11bc85f85242830b4e107426ce13dc4dd3013286f8f5e0c84abd8942a014b907d9692540 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: 10c0/d4e1f0bea59f39aa435baaee7d76955527e245538cffc1d7bb0c165ae85e37f67690aa9272247ced17bad76052afdb45faf5ea304a2248e070202d4554c4e30c + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" + dependencies: + "@aashutoshrathi/word-wrap": "npm:^1.2.3" + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"outdent@npm:^0.8.0": + version: 0.8.0 + resolution: "outdent@npm:0.8.0" + checksum: 10c0/d8a6c38b838b7ac23ebf1cc50442312f4efe286b211dbe5c71fa84d5daa2512fb94a8f2df1389313465acb0b4e5fa72270dd78f519f3d4db5bc22b2762c86827 + languageName: node + linkType: hard + +"p-limit@npm:3.1.0, p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-entities@npm:^2.0.0": + version: 2.0.0 + resolution: "parse-entities@npm:2.0.0" + dependencies: + character-entities: "npm:^1.0.0" + character-entities-legacy: "npm:^1.0.0" + character-reference-invalid: "npm:^1.0.0" + is-alphanumerical: "npm:^1.0.0" + is-decimal: "npm:^1.0.0" + is-hexadecimal: "npm:^1.0.0" + checksum: 10c0/f85a22c0ea406ff26b53fdc28641f01cc36fa49eb2e3135f02693286c89ef0bcefc2262d99b3688e20aac2a14fd10b75c518583e875c1b9fe3d1f937795e0854 + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: "npm:^1.0.0" + map-cache: "npm:^0.2.0" + path-root: "npm:^0.1.1" + checksum: 10c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + languageName: node + linkType: hard + +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: 10c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: "npm:^0.1.0" + checksum: 10c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pidtree@npm:0.6.0": + version: 0.6.0 + resolution: "pidtree@npm:0.6.0" + bin: + pidtree: bin/pidtree.js + checksum: 10c0/0829ec4e9209e230f74ebf4265f5ccc9ebfb488334b525cb13f86ff801dca44b362c41252cd43ae4d7653a10a5c6ab3be39d2c79064d6895e0d78dc50a5ed6e9 + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pify@npm:^5.0.0": + version: 5.0.0 + resolution: "pify@npm:5.0.0" + checksum: 10c0/9f6f3cd1f159652692f514383efe401a06473af35a699962230ad1c4c9796df5999961461fc1a3b81eed8e3e74adb8bd032474fb3f93eb6bdbd9f33328da1ed2 + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: "npm:^4.1.2" + split2: "npm:^4.0.0" + checksum: 10c0/0d0e30399028ec156642b4cdfe1a040b9022befdc38e8f85935d1837c3da6050691888038433f88190d1a1eff5d90abe17ff7e6edffc09baa2f96e51b6808183 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 10c0/9e8ccac9ce04a27ccc7aa26481d431b9e037d866b101b89d895c60b925baffb82685e84d5c29b05d8e3d7c146d766a9b08949cb24ab1ec526a16134c9962d649 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.0.0" + on-exit-leak-free: "npm:^0.2.0" + pino-abstract-transport: "npm:v0.5.0" + pino-std-serializers: "npm:^4.0.0" + process-warning: "npm:^1.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.1.0" + safe-stable-stringify: "npm:^2.1.0" + sonic-boom: "npm:^2.2.1" + thread-stream: "npm:^0.15.1" + bin: + pino: bin.js + checksum: 10c0/4cc1ed9d25a4bc5d61c836a861279fa0039159b8f2f37ec337e50b0a61f3980dab5d2b1393daec26f68a19c423262649f0818654c9ad102c35310544a202c62c + languageName: node + linkType: hard + +"pkg-types@npm:^1.0.3": + version: 1.0.3 + resolution: "pkg-types@npm:1.0.3" + dependencies: + jsonc-parser: "npm:^3.2.0" + mlly: "npm:^1.2.0" + pathe: "npm:^1.1.0" + checksum: 10c0/7f692ff2005f51b8721381caf9bdbc7f5461506ba19c34f8631660a215c8de5e6dca268f23a319dd180b8f7c47a0dc6efea14b376c485ff99e98d810b8f786c4 + languageName: node + linkType: hard + +"pngjs@npm:^5.0.0": + version: 5.0.0 + resolution: "pngjs@npm:5.0.0" + checksum: 10c0/c074d8a94fb75e2defa8021e85356bf7849688af7d8ce9995b7394d57cd1a777b272cfb7c4bce08b8d10e71e708e7717c81fd553a413f21840c548ec9d4893c6 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"postcss@npm:^8.4.36": + version: 8.4.38 + resolution: "postcss@npm:8.4.38" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.2.0" + checksum: 10c0/955407b8f70cf0c14acf35dab3615899a2a60a26718a63c848cf3c29f2467b0533991b985a2b994430d890bd7ec2b1963e36352b0774a19143b5f591540f7c06 + languageName: node + linkType: hard + +"preact@npm:^10.12.0, preact@npm:^10.5.9": + version: 10.19.7 + resolution: "preact@npm:10.19.7" + checksum: 10c0/27ee3eb40bdc83cc917c29b74526537ff05922dca210818999d7d5b546619fc6dcb7d6460b54198c018ba62c43b59e914676a8cb91548a2dfac3eee8efae334d + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier@npm:^3.2.5": + version: 3.2.5 + resolution: "prettier@npm:3.2.5" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6 + languageName: node + linkType: hard + +"pretty-bytes@npm:*, pretty-bytes@npm:^6.1.1": + version: 6.1.1 + resolution: "pretty-bytes@npm:6.1.1" + checksum: 10c0/c7a660b933355f3b4587ad3f001c266a8dd6afd17db9f89ebc50812354bb142df4b9600396ba5999bdb1f9717300387dc311df91895c5f0f2a1780e22495b5f8 + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"prismjs@npm:^1.27.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 10c0/d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6 + languageName: node + linkType: hard + +"prismjs@npm:~1.27.0": + version: 1.27.0 + resolution: "prismjs@npm:1.27.0" + checksum: 10c0/841cbf53e837a42df9155c5ce1be52c4a0a8967ac916b52a27d066181a3578186c634e52d06d0547fb62b65c486b99b95f826dd54966619f9721b884f486b498 + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: 10c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promise@npm:^7.1.1": + version: 7.3.1 + resolution: "promise@npm:7.3.1" + dependencies: + asap: "npm:~2.0.3" + checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f + languageName: node + linkType: hard + +"prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"property-expr@npm:^2.0.5": + version: 2.0.6 + resolution: "property-expr@npm:2.0.6" + checksum: 10c0/69b7da15038a1146d6447c69c445306f66a33c425271235bb20507f1846dbf9577a8f9dfafe8acbfcb66f924b270157f155248308f026a68758f35fc72265b3c + languageName: node + linkType: hard + +"property-information@npm:^5.0.0": + version: 5.6.0 + resolution: "property-information@npm:5.6.0" + dependencies: + xtend: "npm:^4.0.0" + checksum: 10c0/d54b77c31dc13bb6819559080b2c67d37d94be7dc271f404f139a16a57aa96fcc0b3ad806d4a5baef9e031744853e4afe3df2e37275aacb1f78079bbb652c5af + languageName: node + linkType: hard + +"proxy-compare@npm:2.5.1": + version: 2.5.1 + resolution: "proxy-compare@npm:2.5.1" + checksum: 10c0/116fc69ae9a6bb3654e6907fb09b73e84aa47c89275ca52648fc1d2ac8b35dbf54daa8bab078d7a735337c928e87eb52059e705434adf14989bbe6c5dcdd08fa + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + languageName: node + linkType: hard + +"punycode@npm:^1.3.2": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" + dependencies: + tslib: "npm:^2.6.1" + checksum: 10c0/d425aed316907e0b447a459bfb97c55d22270c3cfdba5a07ec90da0737b0e40f4f1771a444636f85bb6a453de90ff8c6b5f4f6ddba7597977166af49974b4534 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 10c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac + languageName: node + linkType: hard + +"qrcode@npm:1.5.3, qrcode@npm:^1.5.1": + version: 1.5.3 + resolution: "qrcode@npm:1.5.3" + dependencies: + dijkstrajs: "npm:^1.0.1" + encode-utf8: "npm:^1.0.3" + pngjs: "npm:^5.0.0" + yargs: "npm:^15.3.1" + bin: + qrcode: bin/qrcode + checksum: 10c0/eb961cd8246e00ae338b6d4a3a28574174456db42cec7070aa2b315fb6576b7f040b0e4347be290032e447359a145c68cb60ef884d55ca3e1076294fed46f719 + languageName: node + linkType: hard + +"qs@npm:^6.10.3": + version: 6.12.0 + resolution: "qs@npm:6.12.0" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10c0/e165a77ac5f3ca60c15c5f3d51b321ddec7aa438804436b29d160117bc6fb7bf7dab94abd0c7d7c0785890d3a75ae41e1d6346e158aaf1540c6fe53a31f11675 + languageName: node + linkType: hard + +"query-string@npm:*": + version: 9.0.0 + resolution: "query-string@npm:9.0.0" + dependencies: + decode-uri-component: "npm:^0.4.1" + filter-obj: "npm:^5.1.0" + split-on-first: "npm:^3.0.0" + checksum: 10c0/6b4f2f08e5ab288088a2e5b0671be7ffb9c2de57fa12e54d8e352ce5f278a1a96235d8b8d467b8f7fea3e200f7afb7062244ac0113f291e4d6a98caeb44f235b + languageName: node + linkType: hard + +"query-string@npm:7.1.3": + version: 7.1.3 + resolution: "query-string@npm:7.1.3" + dependencies: + decode-uri-component: "npm:^0.2.2" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/a896c08e9e0d4f8ffd89a572d11f668c8d0f7df9c27c6f49b92ab31366d3ba0e9c331b9a620ee747893436cd1f2f821a6327e2bc9776bde2402ac6c270b801b2 + languageName: node + linkType: hard + +"query-string@npm:^6.13.5": + version: 6.14.1 + resolution: "query-string@npm:6.14.1" + dependencies: + decode-uri-component: "npm:^0.2.0" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/900e0fa788000e9dc5f929b6f4141742dcf281f02d3bab9714bc83bea65fab3de75169ea8d61f19cda996bc0dcec72e156efe3c5614c6bce65dcf234ac955b14 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + +"radix3@npm:^1.1.0": + version: 1.1.1 + resolution: "radix3@npm:1.1.1" + checksum: 10c0/8290c00b32508d709e8d99627c800f5ea84edf96430f473ca3fd9389449bf82e9fd29854f3890f7b5c86eda94de297239ed7ab240ec3a60350b595927bf63839 + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"react-dom@npm:^18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-fast-compare@npm:^2.0.1": + version: 2.0.4 + resolution: "react-fast-compare@npm:2.0.4" + checksum: 10c0/f0300c677e95198b5f993cbb8a983dab09586157dc678f9e2b5b29ff941b6677a8776fbbdc425ce102fad86937e36bb45cfcfd797f006270b97ccf287ebfb885 + languageName: node + linkType: hard + +"react-is@npm:^16.10.2, react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + languageName: node + linkType: hard + +"react-refresh@npm:^0.14.0": + version: 0.14.0 + resolution: "react-refresh@npm:0.14.0" + checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d + languageName: node + linkType: hard + +"react-remove-scroll-bar@npm:^2.3.4": + version: 2.3.6 + resolution: "react-remove-scroll-bar@npm:2.3.6" + dependencies: + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/4e32ee04bf655a8bd3b4aacf6ffc596ae9eb1b9ba27eef83f7002632ee75371f61516ae62250634a9eae4b2c8fc6f6982d9b182de260f6c11841841e6e2e7515 + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.7": + version: 2.5.7 + resolution: "react-remove-scroll@npm:2.5.7" + dependencies: + react-remove-scroll-bar: "npm:^2.3.4" + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.1.0" + use-callback-ref: "npm:^1.3.0" + use-sidecar: "npm:^1.1.2" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/dcd523ada602bd0a839c2032cadf0b3e4af55ee85acefee3760976a9cceaa4606927801b093bbb8bf3c2989c71e048f5428c2c6eb9e6681762e86356833d039b + languageName: node + linkType: hard + +"react-router-dom@npm:^6.22.3": + version: 6.22.3 + resolution: "react-router-dom@npm:6.22.3" + dependencies: + "@remix-run/router": "npm:1.15.3" + react-router: "npm:6.22.3" + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 10c0/39b0472db5d153cbbbf4f5df5c0b26f2b75ffd7b857d7b67d17e03f4618d806b957cf033fbeb265bb317ade951e6ce0d576311bdf6eb15a7013203079cfadf03 + languageName: node + linkType: hard + +"react-router@npm:6.22.3": + version: 6.22.3 + resolution: "react-router@npm:6.22.3" + dependencies: + "@remix-run/router": "npm:1.15.3" + peerDependencies: + react: ">=16.8" + checksum: 10c0/a2c85c3d1fa93585e312b1f7e6e21d1ca421875013a8d879e109d3ed41fb035bc93faef4cd42b354ea18d039bc50b679bf752679ad83ac26a986e3432fbd0462 + languageName: node + linkType: hard + +"react-scroll@npm:^1.9.0": + version: 1.9.0 + resolution: "react-scroll@npm:1.9.0" + dependencies: + lodash.throttle: "npm:^4.1.1" + prop-types: "npm:^15.7.2" + peerDependencies: + react: ^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/bcaa045740351ba1373d2e3f236b1ff0d383e4e5efd43d87644c165a3c1c4988bd0361515c487688daf39c122b035c8a014fcd9184f51deb4a0d2c232ac5fb61 + languageName: node + linkType: hard + +"react-select@npm:*": + version: 5.8.0 + resolution: "react-select@npm:5.8.0" + dependencies: + "@babel/runtime": "npm:^7.12.0" + "@emotion/cache": "npm:^11.4.0" + "@emotion/react": "npm:^11.8.1" + "@floating-ui/dom": "npm:^1.0.1" + "@types/react-transition-group": "npm:^4.4.0" + memoize-one: "npm:^6.0.0" + prop-types: "npm:^15.6.0" + react-transition-group: "npm:^4.3.0" + use-isomorphic-layout-effect: "npm:^1.1.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/b4b98aaf117ee5cc4642871b7bd51fd0e2697988d0b880f30b21e933ca90258959147117d8aada36713b622e0e4cb06bd18ec02069f3f108896e0d31e69e3c16 + languageName: node + linkType: hard + +"react-smooth@npm:^4.0.0": + version: 4.0.0 + resolution: "react-smooth@npm:4.0.0" + dependencies: + fast-equals: "npm:^5.0.1" + prop-types: "npm:^15.8.1" + react-transition-group: "npm:^4.4.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/b5d1028e46467adebb3d754d1f93f9d051e9f3c817a57f167c8fbb1a79579809bfc65a491a6578ed5165fa0845a36d28a46378a25894c76b78f37a9cfba8a7a1 + languageName: node + linkType: hard + +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: "npm:^1.0.0" + invariant: "npm:^2.2.4" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad + languageName: node + linkType: hard + +"react-syntax-highlighter@npm:^15.5.0": + version: 15.5.0 + resolution: "react-syntax-highlighter@npm:15.5.0" + dependencies: + "@babel/runtime": "npm:^7.3.1" + highlight.js: "npm:^10.4.1" + lowlight: "npm:^1.17.0" + prismjs: "npm:^1.27.0" + refractor: "npm:^3.6.0" + peerDependencies: + react: ">= 0.14.0" + checksum: 10c0/2bf57a1ea151f688efc7eba355677577c9bb55f05f9df7ef86627aae42f63f505486cddf3f4a628aecc51ec75e89beb9533201570d03201c4bf7d69d61d2545d + languageName: node + linkType: hard + +"react-transition-group@npm:^4.3.0, react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": "npm:^7.5.5" + dom-helpers: "npm:^5.0.1" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 10c0/2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 + languageName: node + linkType: hard + +"react@npm:^18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 10c0/c0f8ae531d1f51fe6343d47a2a1e5756e19b65a81b4a9642b9ebb4874e0d8b5f3799bc600bf4592838242477edc6f57778593f21b71d90f8ad0d8a317bbfae1c + languageName: node + linkType: hard + +"recharts-scale@npm:^0.4.4": + version: 0.4.5 + resolution: "recharts-scale@npm:0.4.5" + dependencies: + decimal.js-light: "npm:^2.4.1" + checksum: 10c0/64ce1fc4ebe62001787bf4dc4cbb779452d33831619309c71c50277c58e8968ffe98941562d9d0d5ffdb02588ebd62f4fe6548fa826110fd458db9c3cc6dadc1 + languageName: node + linkType: hard + +"recharts@npm:^2.12.3": + version: 2.12.3 + resolution: "recharts@npm:2.12.3" + dependencies: + clsx: "npm:^2.0.0" + eventemitter3: "npm:^4.0.1" + lodash: "npm:^4.17.21" + react-is: "npm:^16.10.2" + react-smooth: "npm:^4.0.0" + recharts-scale: "npm:^0.4.4" + tiny-invariant: "npm:^1.3.1" + victory-vendor: "npm:^36.6.8" + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/0401699a6e965ef486e1cc586e25a8a1af8c1f1eb9268c2dee0d0e853a0a86941496b51817334447d1ada6c09eeeb201faba5bb7761e8c8f1d3b00b3d992e2a4 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.1" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/baf4ef8ee6ff341600f4720b251cf5a6cb552d6a6ab0fdc036988c451bf16f920e5feb0d46bd4f530a5cce568f1f7aca2d77447ca798920749cfc52783c39b55 + languageName: node + linkType: hard + +"refractor@npm:^3.6.0": + version: 3.6.0 + resolution: "refractor@npm:3.6.0" + dependencies: + hastscript: "npm:^6.0.0" + parse-entities: "npm:^2.0.0" + prismjs: "npm:~1.27.0" + checksum: 10c0/63ab62393c8c2fd7108c2ea1eff721c0ad2a1a6eee60fdd1b47f4bb25cf298667dc97d041405b3e718b0817da12b37a86ed07ebee5bd2ca6405611f1bae456db + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 + languageName: node + linkType: hard + +"relay-runtime@npm:12.0.0": + version: 12.0.0 + resolution: "relay-runtime@npm:12.0.0" + dependencies: + "@babel/runtime": "npm:^7.0.0" + fbjs: "npm:^3.0.0" + invariant: "npm:^2.2.4" + checksum: 10c0/f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 + languageName: node + linkType: hard + +"remedial@npm:^1.0.7": + version: 1.0.8 + resolution: "remedial@npm:1.0.8" + checksum: 10c0/ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc + languageName: node + linkType: hard + +"remove-trailing-spaces@npm:^1.0.6": + version: 1.0.8 + resolution: "remove-trailing-spaces@npm:1.0.8" + checksum: 10c0/b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + +"requireindex@npm:~1.2.0": + version: 1.2.0 + resolution: "requireindex@npm:1.2.0" + checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 + languageName: node + linkType: hard + +"resolve-from@npm:5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve@npm:^1.19.0, resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"restore-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "restore-cursor@npm:4.0.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.3.1 + resolution: "rfdc@npm:1.3.1" + checksum: 10c0/69f65e3ed30970f8055fac9fbbef9ce578800ca19554eab1dcbffe73a4b8aef536bc4248313889cf25e3b4e38b212c721eabe30856575bf2b2bc3d90f8ba93ef + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rollup@npm:^4.13.0": + version: 4.13.0 + resolution: "rollup@npm:4.13.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.13.0" + "@rollup/rollup-android-arm64": "npm:4.13.0" + "@rollup/rollup-darwin-arm64": "npm:4.13.0" + "@rollup/rollup-darwin-x64": "npm:4.13.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.13.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.13.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.13.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.13.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.13.0" + "@rollup/rollup-linux-x64-musl": "npm:4.13.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.13.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.13.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.13.0" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/90f8cdf9c2115223cbcfe91d932170a85c0928ae1943f45af6877907ea150585b80f656cf2bc471c6f809cb7e158dd85dbea9f91ab4fd5bce0eaf6c3f5f4fd92 + languageName: node + linkType: hard + +"rpc-websockets@npm:^7.5.1": + version: 7.9.0 + resolution: "rpc-websockets@npm:7.9.0" + dependencies: + "@babel/runtime": "npm:^7.17.2" + bufferutil: "npm:^4.0.1" + eventemitter3: "npm:^4.0.7" + utf-8-validate: "npm:^5.0.2" + uuid: "npm:^8.3.2" + ws: "npm:^8.5.0" + dependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/f614b4e79fee18a93228868d7b0cd15ab1dd26f56deddd7a2191432a744f771dad57ba2c217a8d4d596c565b4aa524637fce0a0163fea6151df8fc002f0a3207 + languageName: node + linkType: hard + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:^6.6.3": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: "npm:^1.9.0" + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.1.0": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + languageName: node + linkType: hard + +"scuid@npm:^1.1.0": + version: 1.1.0 + resolution: "scuid@npm:1.1.0" + checksum: 10c0/01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 + languageName: node + linkType: hard + +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + languageName: node + linkType: hard + +"sha.js@npm:^2.4.11": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"signedsource@npm:^1.0.0": + version: 1.0.0 + resolution: "signedsource@npm:1.0.0" + checksum: 10c0/dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + languageName: node + linkType: hard + +"slice-ansi@npm:^7.0.0": + version: 7.1.0 + resolution: "slice-ansi@npm:7.1.0" + dependencies: + ansi-styles: "npm:^6.2.1" + is-fullwidth-code-point: "npm:^5.0.0" + checksum: 10c0/631c971d4abf56cf880f034d43fcc44ff883624867bf11ecbd538c47343911d734a4656d7bc02362b40b89d765652a7f935595441e519b59e2ad3f4d5d6fe7ca + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + languageName: node + linkType: hard + +"socks@npm:^2.7.1": + version: 2.8.1 + resolution: "socks@npm:2.8.1" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/ac77b515c260473cc7c4452f09b20939e22510ce3ae48385c516d1d5784374d5cc75be3cb18ff66cc985a7f4f2ef8fef84e984c5ec70aad58355ed59241f40a8 + languageName: node + linkType: hard + +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/6b40f2e91a999819b1dc24018a5d1c8b74e66e5d019eabad17d5b43fc309b32255b7c405ed6ec885693c8f2b969099ce96aeefde027180928bc58c034234a86d + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 + languageName: node + linkType: hard + +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + +"space-separated-tokens@npm:^1.0.0": + version: 1.1.5 + resolution: "space-separated-tokens@npm:1.1.5" + checksum: 10c0/3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9 + languageName: node + linkType: hard + +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 10c0/56df8344f5a5de8521898a5c090023df1d8b8c75be6228f56c52491e0fc1617a5236f2ac3a066adb67a73231eac216ccea7b5b4a2423a543c277cb2f48d24c29 + languageName: node + linkType: hard + +"split-on-first@npm:^3.0.0": + version: 3.0.0 + resolution: "split-on-first@npm:3.0.0" + checksum: 10c0/a1262eae12b68de235e1a08e011bf5b42c42621985ddf807e6221fb1e2b3304824913ae7019f18436b96b8fab8aef5f1ad80dedd2385317fdc51b521c3882cd0 + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + +"sponge-case@npm:^1.0.1": + version: 1.0.1 + resolution: "sponge-case@npm:1.0.1" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e + languageName: node + linkType: hard + +"stream-browserify@npm:^3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: "npm:~2.0.4" + readable-stream: "npm:^3.5.0" + checksum: 10c0/ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.2": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: 10c0/010cbc78da0e2cf833b0f5dc769e21ae74cdc5d5f5bd555f14a4a4876c8ad2c85ab8b5bdf9a722dc71a11dcd3184085e1c3c0bd50ec6bb85fffc0f28cf82597d + languageName: node + linkType: hard + +"string-argv@npm:0.3.2": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82 + languageName: node + linkType: hard + +"string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: 10c0/410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string-width@npm:^7.0.0": + version: 7.1.0 + resolution: "string-width@npm:7.1.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/68a99fbc3bd3d8eb42886ff38dce819767dee55f606f74dfa4687a07dfd21262745d9683df0aa53bf81a5dd47c13da921a501925b974bec66a7ddd634fef0634 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.10": + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.5" + regexp.prototype.flags: "npm:^1.5.0" + set-function-name: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/cd7495fb0de16d43efeee3887b98701941f3817bd5f09351ad1825b023d307720c86394d56d56380563d97767ab25bf5448db239fcecbb85c28e2180f23e324a + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 10c0/a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 + languageName: node + linkType: hard + +"superstruct@npm:^0.14.2": + version: 0.14.2 + resolution: "superstruct@npm:0.14.2" + checksum: 10c0/e5518f6701524fb8cbae504a84dc9c304bf3fe01616230a5eb4e14af9bfc4e3518b94bfe457e57a5d1b99a2b54f82881b4a39e0b266caa6053f84aa294613b94 + languageName: node + linkType: hard + +"superstruct@npm:^1.0.3": + version: 1.0.4 + resolution: "superstruct@npm:1.0.4" + checksum: 10c0/d355f1a96fa314e9df217aa371e8f22854644e7b600b7b0faa36860a8e50f61a60a6f1189ecf166171bf438aa6581bbd0d3adae1a65f03a3c43c62fd843e925c + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"swap-case@npm:^2.0.2": + version: 2.0.2 + resolution: "swap-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb + languageName: node + linkType: hard + +"synckit@npm:^0.8.6": + version: 0.8.8 + resolution: "synckit@npm:0.8.8" + dependencies: + "@pkgr/core": "npm:^0.1.0" + tslib: "npm:^2.6.2" + checksum: 10c0/c3d3aa8e284f3f84f2f868b960c9f49239b364e35f6d20825a448449a3e9c8f49fe36cdd5196b30615682f007830d46f2ea354003954c7336723cb821e4b6519 + languageName: node + linkType: hard + +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: 10c0/1969974ea5d31a9ac7c38f2657cfe8255b36f9e1d5ba3c58cb84c24fbeedf562778b8511f18a0abe6d70ae90148cfcaf145ecf26e37c0a53a3829076f3238cbb + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 + languageName: node + linkType: hard + +"text-encoding-utf-8@npm:^1.0.2": + version: 1.0.2 + resolution: "text-encoding-utf-8@npm:1.0.2" + checksum: 10c0/87a64b394c850e8387c2ca7fc6929a26ce97fb598f1c55cd0fdaec4b8e2c3ed6770f65b2f3309c9175ef64ac5e403c8e48b53ceeb86d2897940c5e19cc00bb99 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: "npm:^0.1.0" + checksum: 10c0/f92f1b5a9f3f35a72c374e3fecbde6f14d69d5325ad9ce88930af6ed9c7c1ec814367716b712205fa4f06242ae5dd97321ae2c00b43586590ed4fa861f3c29ae + languageName: node + linkType: hard + +"through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"tiny-case@npm:^1.0.3": + version: 1.0.3 + resolution: "tiny-case@npm:1.0.3" + checksum: 10c0/c0cbed35884a322265e2cd61ff435168d1ea523f88bf3864ce14a238ae9169e732649776964283a66e4eb882e655992081d4daf8c865042e2233425866111b35 + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.3.1": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10c0/65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a + languageName: node + linkType: hard + +"tiny-warning@npm:^1.0.2": + version: 1.0.3 + resolution: "tiny-warning@npm:1.0.3" + checksum: 10c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa + languageName: node + linkType: hard + +"title-case@npm:^3.0.3": + version: 3.0.3 + resolution: "title-case@npm:3.0.3" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toggle-selection@npm:^1.0.6": + version: 1.0.6 + resolution: "toggle-selection@npm:1.0.6" + checksum: 10c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179 + languageName: node + linkType: hard + +"toposort@npm:^2.0.2": + version: 2.0.2 + resolution: "toposort@npm:2.0.2" + checksum: 10c0/ab9ca91fce4b972ccae9e2f539d755bf799a0c7eb60da07fd985fce0f14c159ed1e92305ff55697693b5bc13e300f5417db90e2593b127d421c9f6c440950222 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.3.0 + resolution: "ts-api-utils@npm:1.3.0" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c + languageName: node + linkType: hard + +"ts-log@npm:^2.2.3": + version: 2.2.5 + resolution: "ts-log@npm:2.2.5" + checksum: 10c0/bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 + languageName: node + linkType: hard + +"tsconfck@npm:^3.0.3": + version: 3.0.3 + resolution: "tsconfck@npm:3.0.3" + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + bin: + tsconfck: bin/tsconfck.js + checksum: 10c0/d45009230c4caa5fc765bdded96f3b8703a7cdd44a1d63024914b0fb1c4dabf9e94d28cc9f9edccaef9baa7b99adc963502d34943d82fcb07b92e1161ee03c56 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:2.4.0": + version: 2.4.0 + resolution: "tslib@npm:2.4.0" + checksum: 10c0/eb19bda3ae545b03caea6a244b34593468e23d53b26bf8649fbc20fce43e9b21a71127fd6d2b9662c0fe48ee6ff668ead48fd00d3b88b2b716b1c12edae25b5d + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:~2.6.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"tslib@npm:~2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: 10c0/9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.5": + version: 1.0.5 + resolution: "typed-array-length@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/5cc0f79196e70a92f8f40846cfa62b3de6be51e83f73655e137116cf65e3c29a288502b18cc8faf33c943c2470a4569009e1d6da338441649a2db2f135761ad5 + languageName: node + linkType: hard + +"typedarray-to-buffer@npm:3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: "npm:^1.0.0" + checksum: 10c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 + languageName: node + linkType: hard + +"typescript@npm:^5.4.3": + version: 5.4.3 + resolution: "typescript@npm:5.4.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/22443a8760c3668e256c0b34b6b45c359ef6cecc10c42558806177a7d500ab1a7d7aac1f976d712e26989ddf6731d2fbdd3212b7c73290a45127c1c43ba2005a + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.4.3#optional!builtin": + version: 5.4.3 + resolution: "typescript@patch:typescript@npm%3A5.4.3#optional!builtin::version=5.4.3&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6e51f8b7e6ec55b897b9e56b67e864fe8f44e30f4a14357aad5dc0f7432db2f01efc0522df0b6c36d361c51f2dc3dcac5c832efd96a404cfabf884e915d38828 + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.35, ua-parser-js@npm:^1.0.37": + version: 1.0.37 + resolution: "ua-parser-js@npm:1.0.37" + checksum: 10c0/dac8cf82a55b2e097bd2286954e01454c4cfcf23c9d9b56961ce94bda3cec5a38ca536e6e84c20a4000a9d4b4a4abcbd98ec634ccebe21be36595ea3069126e4 + languageName: node + linkType: hard + +"ufo@npm:^1.3.0, ufo@npm:^1.3.2, ufo@npm:^1.4.0": + version: 1.5.2 + resolution: "ufo@npm:1.5.2" + checksum: 10c0/2925eaf8004fa6f18612ef235c255a857caf90fe75ff25ed679776136e82aa3e1de1406ac238a33ae5b72d09865ad5041e6d2fb52fe8024d59db5db6721b21e1 + languageName: node + linkType: hard + +"uint8arrays@npm:^3.0.0, uint8arrays@npm:^3.1.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: "npm:^9.4.2" + checksum: 10c0/9946668e04f29b46bbb73cca3d190f63a2fbfe5452f8e6551ef4257d9d597b72da48fa895c15ef2ef772808a5335b3305f69da5f13a09f8c2924896b409565ff + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 + languageName: node + linkType: hard + +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 10c0/74a29afefd76d5b77bedc983559ceb33f5bbc8dada84ff33755d1e3355da55a4e03a10e7ce717918c436b4dfafde1782e799ebaf2aadd775612b49f7b5b2998e + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"unenv@npm:^1.9.0": + version: 1.9.0 + resolution: "unenv@npm:1.9.0" + dependencies: + consola: "npm:^3.2.3" + defu: "npm:^6.1.3" + mime: "npm:^3.0.0" + node-fetch-native: "npm:^1.6.1" + pathe: "npm:^1.1.1" + checksum: 10c0/d00012badc83731c07f08d5129c702c49c0212375eb3732b27aae89ace3c67162dbaea4496965676f18fc06b0ec445d91385e283f5fd3e4540dda8b0b5424f81 + languageName: node + linkType: hard + +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 10c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: "npm:^2.1.1" + checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e + languageName: node + linkType: hard + +"unstorage@npm:^1.9.0": + version: 1.10.2 + resolution: "unstorage@npm:1.10.2" + dependencies: + anymatch: "npm:^3.1.3" + chokidar: "npm:^3.6.0" + destr: "npm:^2.0.3" + h3: "npm:^1.11.1" + listhen: "npm:^1.7.2" + lru-cache: "npm:^10.2.0" + mri: "npm:^1.2.0" + node-fetch-native: "npm:^1.6.2" + ofetch: "npm:^1.3.3" + ufo: "npm:^1.4.0" + peerDependencies: + "@azure/app-configuration": ^1.5.0 + "@azure/cosmos": ^4.0.0 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^4.0.1 + "@azure/keyvault-secrets": ^4.8.0 + "@azure/storage-blob": ^12.17.0 + "@capacitor/preferences": ^5.0.7 + "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@planetscale/database": ^1.16.0 + "@upstash/redis": ^1.28.4 + "@vercel/kv": ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + checksum: 10c0/89d61e6b2165ddc78005b8a4a340576877b56b70ec0b318f7cf2e74ee7ab19006036267ba28587100fa7256c573db3bd720700daf6586bbdcad4ed60b64c4284 + languageName: node + linkType: hard + +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: "npm:^0.1.5" + consola: "npm:^3.2.3" + pathe: "npm:^1.1.1" + bin: + untun: bin/untun.mjs + checksum: 10c0/2b44a4cc84a5c21994f43b9f55348e5a8d9dd5fd0ad8fb5cd091b6f6b53d506b1cdb90e89cc238d61b46d488f7a89ab0d1a5c735bfc835581c7b22a236381295 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" + dependencies: + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 + languageName: node + linkType: hard + +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 + languageName: node + linkType: hard + +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 + languageName: node + linkType: hard + +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 10c0/40cd81b4c13f1764d52ec28da2d58e60816e6fae54d4eb75b32fbf3137937f438eff16c766139fb0faec5d248a5314591f5a0dbd694e569d419eed6f3bd80242 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 10c0/43593f2a89bd54f2d5b5105ef4896ac5c5db66aef723759fbd15cd5eb1ea6cdae9d112e257eda9bbc3fb0cd90be6ac6e9689abe4ca69caa33114f42a27363531 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^8.0.0": + version: 8.0.2 + resolution: "urlpattern-polyfill@npm:8.0.2" + checksum: 10c0/5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 + languageName: node + linkType: hard + +"use-callback-ref@npm:^1.3.0": + version: 1.3.1 + resolution: "use-callback-ref@npm:1.3.1" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/6666cd62e13053d03e453b5199037cb8f6475a8f55afd664ff488bd8f2ee2ede4da3b220dd7e60f5ecd4926133364fbf4b1aed463eeb8203e7c5be3b1533b59b + languageName: node + linkType: hard + +"use-element-position@npm:^1.0.13": + version: 1.0.13 + resolution: "use-element-position@npm:1.0.13" + dependencies: + use-element: "npm:^1.0.13" + peerDependencies: + react: ^16.7.0 + checksum: 10c0/c07e9961ac71fb838b7cadfe128d647e4f9378473a7631adb18e4a4aee0728756064a8c7c5aec66f08eb73407924959fef8ed0ab97563eceea81693601a331cd + languageName: node + linkType: hard + +"use-element@npm:^1.0.13": + version: 1.0.13 + resolution: "use-element@npm:1.0.13" + peerDependencies: + react: ^16.7.0 + checksum: 10c0/8e66116d189bf948a15f0a4544306ace5346ee1b45fb568c4eaa7279272172fe8c5caa70dec545151b77cbb31a8a4326d63f6bf11c7407c91469cacb77ed2152 + languageName: node + linkType: hard + +"use-isomorphic-layout-effect@npm:^1.1.2": + version: 1.1.2 + resolution: "use-isomorphic-layout-effect@npm:1.1.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d8deea8b85e55ac6daba237a889630bfdbf0ebf60e9e22b6a78a78c26fabe6025e04ada7abef1e444e6786227d921e648b2707db8b3564daf757264a148a6e23 + languageName: node + linkType: hard + +"use-local-storage-state@npm:^19.2.0": + version: 19.2.0 + resolution: "use-local-storage-state@npm:19.2.0" + peerDependencies: + react: ">=18" + react-dom: ">=18" + checksum: 10c0/8d72074ace946aea31bb1e7532aa6c14d11ca7f41c2938efe80e956be57ff9274d2bc89aac373e8af1196387ebfd64cca129e9993160383e82b45c75a9e628e3 + languageName: node + linkType: hard + +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: "npm:^1.1.0" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 + languageName: node + linkType: hard + +"use-sync-external-store@npm:1.2.0, use-sync-external-store@npm:^1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 + languageName: node + linkType: hard + +"utf-8-validate@npm:^5.0.2": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.12.4": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"valtio@npm:1.11.2": + version: 1.11.2 + resolution: "valtio@npm:1.11.2" + dependencies: + proxy-compare: "npm:2.5.1" + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@types/react": ">=16.8" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + checksum: 10c0/9ed337d1da4a3730d429b3415c2cb63340998000e62fb3e545e2fc05d27f55fc510abc89046d6719b4cae02742cdb733fe235bade90bfae50a0e13ece2287106 + languageName: node + linkType: hard + +"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: 10c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 + languageName: node + linkType: hard + +"victory-vendor@npm:^36.6.8": + version: 36.9.2 + resolution: "victory-vendor@npm:36.9.2" + dependencies: + "@types/d3-array": "npm:^3.0.3" + "@types/d3-ease": "npm:^3.0.0" + "@types/d3-interpolate": "npm:^3.0.1" + "@types/d3-scale": "npm:^4.0.2" + "@types/d3-shape": "npm:^3.1.0" + "@types/d3-time": "npm:^3.0.0" + "@types/d3-timer": "npm:^3.0.0" + d3-array: "npm:^3.1.6" + d3-ease: "npm:^3.0.1" + d3-interpolate: "npm:^3.0.1" + d3-scale: "npm:^4.0.2" + d3-shape: "npm:^3.1.0" + d3-time: "npm:^3.0.0" + d3-timer: "npm:^3.0.1" + checksum: 10c0/bad36de3bf4d406834743c2e99a8281d786af324d7e84b7f7a2fc02c27a3779034fb0c3c4707d4c8e68683334d924a67100cfa13985235565e83b9877f8e2ffd + languageName: node + linkType: hard + +"viem@npm:^1.0.0, viem@npm:^1.21.1, viem@npm:^1.6.0": + version: 1.21.4 + resolution: "viem@npm:1.21.4" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.0" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@scure/bip32": "npm:1.3.2" + "@scure/bip39": "npm:1.2.1" + abitype: "npm:0.9.8" + isows: "npm:1.0.3" + ws: "npm:8.13.0" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/8b29c790181e44c4c95b9ffed1a8c1b6c2396eb949b95697cc390ca8c49d88ef9e2cd56bd4800b90a9bbc93681ae8d63045fc6fa06e00d84f532bef77967e751 + languageName: node + linkType: hard + +"vite-tsconfig-paths@npm:^4.3.2": + version: 4.3.2 + resolution: "vite-tsconfig-paths@npm:4.3.2" + dependencies: + debug: "npm:^4.1.1" + globrex: "npm:^0.1.2" + tsconfck: "npm:^3.0.3" + peerDependencies: + vite: "*" + peerDependenciesMeta: + vite: + optional: true + checksum: 10c0/f390ac1d1c3992fc5ac50f9274c1090f8b55ab34a89ea88893db9a6924a3b26c9f64bc1163615150ad100749db73b6b2cf1d57f6cd60df6e762ceb5b8ad30024 + languageName: node + linkType: hard + +"vite@npm:^5.2.6": + version: 5.2.6 + resolution: "vite@npm:5.2.6" + dependencies: + esbuild: "npm:^0.20.1" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.36" + rollup: "npm:^4.13.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/9ccaa65521b738ed5d6ad9cd118584a833191d29649eaa77ccb8096a60ded2ca9014193b8b866ad76054d0c89443f7b68b578686e4e2ef83147273e7788408c2 + languageName: node + linkType: hard + +"wagmi@npm:^1.4.12": + version: 1.4.13 + resolution: "wagmi@npm:1.4.13" + dependencies: + "@tanstack/query-sync-storage-persister": "npm:^4.27.1" + "@tanstack/react-query": "npm:^4.28.0" + "@tanstack/react-query-persist-client": "npm:^4.28.0" + "@wagmi/core": "npm:1.4.13" + abitype: "npm:0.8.7" + use-sync-external-store: "npm:^1.2.0" + peerDependencies: + react: ">=17.0.0" + typescript: ">=5.0.4" + viem: ">=0.3.35" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/2a6a23f058b44566c8fb94dfda9b62c82aff3c006caf5b59cb8a01afedf9f48fc90ec4232d15124241e0400e09b17606d4defe4afbf4bb57b2d833b447e58345 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.2.1": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f + languageName: node + linkType: hard + +"webcrypto-core@npm:^1.7.8": + version: 1.7.8 + resolution: "webcrypto-core@npm:1.7.8" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + asn1js: "npm:^3.0.1" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/4c6ef9ae4ae27489f88b7c571494b058120178528f25efe87b97cbc64ead03a6468a614f6269927d13735e4f5ce1d1f7599cf4385ee9b61a13921964a5748a66 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: "npm:^1.1.5" + has-tostringtag: "npm:^1.0.0" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.9" + checksum: 10c0/2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrap-ansi@npm:^9.0.0": + version: 9.0.0 + resolution: "wrap-ansi@npm:9.0.0" + dependencies: + ansi-styles: "npm:^6.2.1" + string-width: "npm:^7.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"ws@npm:8.13.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + languageName: node + linkType: hard + +"ws@npm:8.5.0": + version: 8.5.0 + resolution: "ws@npm:8.5.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/0baeee03e97865accda8fad51e8e5fa17d19b8e264529efdf662bbba2acc1c7f1de8316287e6df5cb639231a96009e6d5234b57e6ff36ee2d04e49a0995fec2f + languageName: node + linkType: hard + +"ws@npm:^7.4.5, ws@npm:^7.5.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 + languageName: node + linkType: hard + +"ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.15.0, ws@npm:^8.5.0": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/a7783bb421c648b1e622b423409cb2a58ac5839521d2f689e84bc9dc41d59379c692dd405b15a997ea1d4c0c2e5314ad707332d0c558f15232d2bc07c0b4618a + languageName: node + linkType: hard + +"xtend@npm:^4.0.0, xtend@npm:^4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml-ast-parser@npm:^0.0.43": + version: 0.0.43 + resolution: "yaml-ast-parser@npm:0.0.43" + checksum: 10c0/4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 + languageName: node + linkType: hard + +"yaml@npm:2.3.4": + version: 2.3.4 + resolution: "yaml@npm:2.3.4" + checksum: 10c0/cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yaml@npm:^2.3.1": + version: 2.4.1 + resolution: "yaml@npm:2.4.1" + bin: + yaml: bin.mjs + checksum: 10c0/816057dbaea16a7dfb0b868ace930f143dece96bbb4c4fbb6f38aa389166f897240d9fa535dbfd6b1b0d9442416f4abcc698e63f82394d0c67b329aa6c2be576 + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: "npm:^6.0.0" + decamelize: "npm:^1.2.0" + find-up: "npm:^4.1.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^4.2.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^18.1.2" + checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d + languageName: node + linkType: hard + +"yargs@npm:^17.0.0": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yup@npm:^1.4.0": + version: 1.4.0 + resolution: "yup@npm:1.4.0" + dependencies: + property-expr: "npm:^2.0.5" + tiny-case: "npm:^1.0.3" + toposort: "npm:^2.0.2" + type-fest: "npm:^2.19.0" + checksum: 10c0/fe142141365eed0f78fb2e18bdd2f10bf101385dae12a5f9de14884448067bdca16a54b547fc0bffec04a098dd70b4519ff366422f3da006fd11a0717a7863ac + languageName: node + linkType: hard + +"zustand@npm:^4.3.1": + version: 4.5.2 + resolution: "zustand@npm:4.5.2" + dependencies: + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/aee26f11facebb39b016e89539f72a72c2c00151208907fc909c3cedd455728240e09e01d98ebd3b63a2a3518a5917eac5de6c853743ca55a1655296d750bb48 + languageName: node + linkType: hard