diff --git a/.vscode/settings.json b/.vscode/settings.json index 62787842..46b1ef28 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,6 @@ }, "eslint.nodePath": ".yarn/sdks", "prettier.prettierPath": ".yarn/sdks/prettier/index.js", - "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true } diff --git a/packages/ensjs-react/.eslintrc.json b/packages/ensjs-react/.eslintrc.json new file mode 100644 index 00000000..7515f862 --- /dev/null +++ b/packages/ensjs-react/.eslintrc.json @@ -0,0 +1,67 @@ +{ + "extends": ["airbnb", "airbnb-typescript"], + "plugins": ["@typescript-eslint", "prettier"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json" + }, + "rules": { + "react/react-in-jsx-scope": "off", + "react/jsx-props-no-spreading": "off", + "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }], + "import/extensions": [ + "error", + "ignorePackages", + { + "js": "never", + "jsx": "never", + "ts": "never", + "tsx": "never" + } + ], + "no-console": "off", + "no-restricted-syntax": [ + "error", + { + "selector": "CallExpression[callee.object.name='console'][callee.property.name!=/^(log|warn|error|info|trace)$/]", + "message": "Unexpected property on console object was called" + } + ], + "prettier/prettier": "error", + "import/prefer-default-export": "off", + "no-underscore-dangle": "off", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "default", + "format": ["camelCase", "UPPER_CASE", "PascalCase"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": "variable", + "format": ["camelCase", "UPPER_CASE", "PascalCase"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": "property", + "format": ["camelCase", "UPPER_CASE", "PascalCase"], + "leadingUnderscore": "allowSingleOrDouble", + "trailingUnderscore": "allow" + }, + { + "selector": "typeLike", + "format": ["PascalCase"] + } + ], + "radix": "off", + "consistent-return": "off", + "jsx-a11y/anchor-is-valid": "off", + "no-return-assign": "off", + "react/require-default-props": "off", + "react/function-component-definition": "off", + "react/no-unstable-nested-components": ["off", { "allowAsProps": true }], + "react/jsx-no-useless-fragment": "off" + } +} diff --git a/packages/ensjs-react/package.json b/packages/ensjs-react/package.json new file mode 100644 index 00000000..33e7a274 --- /dev/null +++ b/packages/ensjs-react/package.json @@ -0,0 +1,31 @@ +{ + "name": "@ensdomains/ensjs-react", + "version": "0.1.0", + "description": "ENS react library for contract interaction", + "repository": "git@github.com:ensdomains/ensjs-v3.git", + "author": "ENS Labs Ltd", + "license": "MIT", + "devDependencies": { + "@ensdomains/ensjs": "workspace:*", + "@tanstack/react-query": "^4.19.1", + "@types/react": "^18.0.26", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^16.1.2", + "ethers": "^5.6.1", + "react": "^18.2.0", + "typescript": "^4.9.3", + "wagmi": "^0.8.10" + }, + "peerDependencies": { + "@ensdomains/ensjs": "*", + "ethers": ">=5.6.1", + "react": ">=16", + "wagmi": ">=0.8.10" + }, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/providers": "^5.6.2", + "dataloader": "^2.1.0" + } +} diff --git a/packages/ensjs-react/src/hooks/index.ts b/packages/ensjs-react/src/hooks/index.ts new file mode 100644 index 00000000..505b8641 --- /dev/null +++ b/packages/ensjs-react/src/hooks/index.ts @@ -0,0 +1,16 @@ +export { default as useAddr } from './useAddr' +export { default as useAvailable } from './useAvailable' +export { default as useContentHash } from './useContentHash' +export { default as useDNSOwner } from './useDNSOwner' +export { default as useExpiry } from './useExpiry' +export { default as useHistory } from './useHistory' +export { default as useNames } from './useNames' +export { default as useOwner } from './useOwner' +export { default as usePrice } from './usePrice' +export { default as usePrimary } from './usePrimary' +export { default as useProfile } from './useProfile' +export { default as useResolver } from './useResolver' +export { default as useSubnames } from './useSubnames' +export { default as useText } from './useText' +export { default as useValidate } from './useValidate' +export { default as useWrapperData } from './useWrapperData' diff --git a/packages/ensjs-react/src/hooks/useAddr.ts b/packages/ensjs-react/src/hooks/useAddr.ts new file mode 100644 index 00000000..99a93a84 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useAddr.ts @@ -0,0 +1,32 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined + coinType: Parameters[1] +} & QueryConfig, Error> + +const useAddr = ({ + name, + coinType, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getAddr } = useEns() + return useCachedQuery( + ['getAddr', { name, coinType }], + () => getAddr(name!, coinType), + { + enabled: Boolean(enabled && ready && coinType && name), + onError, + onSettled, + onSuccess, + }, + ) +} + +export default useAddr diff --git a/packages/ensjs-react/src/hooks/useAvailable.ts b/packages/ensjs-react/src/hooks/useAvailable.ts new file mode 100644 index 00000000..0c3b1b86 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useAvailable.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useAvailable = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getAvailable } = useEns() + return useCachedQuery(['useAvailable', name], () => getAvailable(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useAvailable diff --git a/packages/ensjs-react/src/hooks/useCachedQuery.ts b/packages/ensjs-react/src/hooks/useCachedQuery.ts new file mode 100644 index 00000000..640298a4 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useCachedQuery.ts @@ -0,0 +1,68 @@ +import { + QueryFunction, + QueryKey, + QueryObserverResult, + UseQueryOptions, +} from '@tanstack/react-query' +import { useQuery } from 'wagmi' + +export type UseQueryResult = Pick< + QueryObserverResult, + | 'data' + | 'error' + | 'fetchStatus' + | 'isError' + | 'isFetched' + | 'isFetchedAfterMount' + | 'isFetching' + | 'isLoading' + | 'isRefetching' + | 'isSuccess' + | 'refetch' +> & { + isCachedData: boolean + isIdle: boolean + status: 'idle' | 'loading' | 'success' | 'error' + internal: Pick< + QueryObserverResult, + | 'dataUpdatedAt' + | 'errorUpdatedAt' + | 'failureCount' + | 'isLoadingError' + | 'isPaused' + | 'isPlaceholderData' + | 'isPreviousData' + | 'isRefetchError' + | 'isStale' + | 'remove' + > +} +export type DefinedUseQueryResult = Omit< + UseQueryResult, + 'data' +> & { + data: TData +} + +export function useCachedQuery< + TQueryFnData, + TError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + queryKey: TQueryKey, + queryFn: QueryFunction, + options?: UseQueryOptions, +): UseQueryResult { + const query = useQuery( + queryKey, + queryFn, + options as any, + ) + const { isFetched, isFetchedAfterMount, status } = query + + return { + ...query, + isCachedData: status === 'success' && isFetched && !isFetchedAfterMount, + } +} diff --git a/packages/ensjs-react/src/hooks/useContentHash.ts b/packages/ensjs-react/src/hooks/useContentHash.ts new file mode 100644 index 00000000..46063789 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useContentHash.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useContentHash = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getContentHash } = useEns() + return useCachedQuery(['getContentHash', name], () => getContentHash(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useContentHash diff --git a/packages/ensjs-react/src/hooks/useDNSOwner.ts b/packages/ensjs-react/src/hooks/useDNSOwner.ts new file mode 100644 index 00000000..1c101fb9 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useDNSOwner.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useDNSOwner = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getDNSOwner } = useEns() + return useCachedQuery(['getDNSOwner', name], () => getDNSOwner(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useDNSOwner diff --git a/packages/ensjs-react/src/hooks/useExpiry.ts b/packages/ensjs-react/src/hooks/useExpiry.ts new file mode 100644 index 00000000..ba3011c9 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useExpiry.ts @@ -0,0 +1,28 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined + contract: Parameters['1'] +} & QueryConfig, Error> + +const useExpiry = ({ + name, + contract, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getExpiry } = useEns() + return useCachedQuery(['getExpiry', name], () => getExpiry(name!, contract), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useExpiry diff --git a/packages/ensjs-react/src/hooks/useHistory.ts b/packages/ensjs-react/src/hooks/useHistory.ts new file mode 100644 index 00000000..bfeb4593 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useHistory.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useHistory = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getHistory } = useEns() + return useCachedQuery(['getHistory', name], () => getHistory(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useHistory diff --git a/packages/ensjs-react/src/hooks/useNames.ts b/packages/ensjs-react/src/hooks/useNames.ts new file mode 100644 index 00000000..48132863 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useNames.ts @@ -0,0 +1,25 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = Parameters[0] & + QueryConfig, Error> + +const useNames = ({ + onError, + onSettled, + onSuccess, + enabled = true, + ...arg0 +}: Args) => { + const { ready, getNames } = useEns() + return useCachedQuery(['getNames', arg0], () => getNames(arg0), { + enabled: Boolean(enabled && ready && arg0.address), + onError, + onSettled, + onSuccess, + }) +} + +export default useNames diff --git a/packages/ensjs-react/src/hooks/useOwner.ts b/packages/ensjs-react/src/hooks/useOwner.ts new file mode 100644 index 00000000..0c673611 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useOwner.ts @@ -0,0 +1,28 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined + contract: Parameters['1'] +} & QueryConfig, Error> + +const useOwner = ({ + name, + contract, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getOwner } = useEns() + return useCachedQuery(['getOwner', name], () => getOwner(name!, contract), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useOwner diff --git a/packages/ensjs-react/src/hooks/usePrice.ts b/packages/ensjs-react/src/hooks/usePrice.ts new file mode 100644 index 00000000..2c3cf995 --- /dev/null +++ b/packages/ensjs-react/src/hooks/usePrice.ts @@ -0,0 +1,34 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + nameOrNames: Parameters['0'] + duration: Parameters['1'] + legacy?: Parameters['2'] +} & QueryConfig, Error> + +const usePrice = ({ + nameOrNames, + duration, + legacy, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getPrice } = useEns() + return useCachedQuery( + ['getPrice', { nameOrNames, duration, legacy }], + () => getPrice(nameOrNames, duration, legacy), + { + enabled: Boolean(enabled && ready && nameOrNames), + onError, + onSettled, + onSuccess, + }, + ) +} + +export default usePrice diff --git a/packages/ensjs-react/src/hooks/usePrimary.ts b/packages/ensjs-react/src/hooks/usePrimary.ts new file mode 100644 index 00000000..0c241072 --- /dev/null +++ b/packages/ensjs-react/src/hooks/usePrimary.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const usePrimary = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getName } = useEns() + return useCachedQuery(['getName', name], () => getName(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default usePrimary diff --git a/packages/ensjs-react/src/hooks/useProfile.ts b/packages/ensjs-react/src/hooks/useProfile.ts new file mode 100644 index 00000000..20588048 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useProfile.ts @@ -0,0 +1,32 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + nameOrAddress: Parameters[0] +} & Parameters[1] & + QueryConfig, Error> + +const useProfile = ({ + nameOrAddress, + onError, + onSettled, + onSuccess, + enabled = true, + ...arg1 +}: Args) => { + const { ready, getProfile } = useEns() + return useCachedQuery( + ['getProfile', { nameOrAddress, ...arg1 }], + () => getProfile(nameOrAddress, arg1), + { + enabled: Boolean(enabled && ready && nameOrAddress), + onError, + onSettled, + onSuccess, + }, + ) +} + +export default useProfile diff --git a/packages/ensjs-react/src/hooks/useRecords.ts b/packages/ensjs-react/src/hooks/useRecords.ts new file mode 100644 index 00000000..b04bf952 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useRecords.ts @@ -0,0 +1,32 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: Parameters[0] +} & Parameters[1] & + QueryConfig, Error> + +const useRecords = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, + ...arg1 +}: Args) => { + const { ready, getRecords } = useEns() + return useCachedQuery( + ['getRecords', { name, ...arg1 }], + () => getRecords(name, arg1), + { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }, + ) +} + +export default useRecords diff --git a/packages/ensjs-react/src/hooks/useResolver.ts b/packages/ensjs-react/src/hooks/useResolver.ts new file mode 100644 index 00000000..f9b83ce8 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useResolver.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useResolver = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getResolver } = useEns() + return useCachedQuery(['getResolver', name], () => getResolver(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useResolver diff --git a/packages/ensjs-react/src/hooks/useSubnames.ts b/packages/ensjs-react/src/hooks/useSubnames.ts new file mode 100644 index 00000000..0b668089 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useSubnames.ts @@ -0,0 +1,25 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = Parameters[0] & + QueryConfig, Error> + +const useSubnames = ({ + onError, + onSettled, + onSuccess, + enabled = true, + ...arg0 +}: Args) => { + const { ready, getSubnames } = useEns() + return useCachedQuery(['getSubnames', arg0], () => getSubnames(arg0), { + enabled: Boolean(enabled && ready && arg0.name), + onError, + onSettled, + onSuccess, + }) +} + +export default useSubnames diff --git a/packages/ensjs-react/src/hooks/useSupportsTLD.ts b/packages/ensjs-react/src/hooks/useSupportsTLD.ts new file mode 100644 index 00000000..90b19177 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useSupportsTLD.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useSupportsTLD = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, supportsTLD } = useEns() + return useCachedQuery(['supportsTLD', name], () => supportsTLD(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useSupportsTLD diff --git a/packages/ensjs-react/src/hooks/useText.ts b/packages/ensjs-react/src/hooks/useText.ts new file mode 100644 index 00000000..8c9b7041 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useText.ts @@ -0,0 +1,28 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined + key: string +} & QueryConfig, Error> + +const useText = ({ + name, + key, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getText } = useEns() + return useCachedQuery(['getText', { name, key }], () => getText(name!, key), { + enabled: Boolean(enabled && ready && key && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useText diff --git a/packages/ensjs-react/src/hooks/useValidate.ts b/packages/ensjs-react/src/hooks/useValidate.ts new file mode 100644 index 00000000..17fb5e68 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useValidate.ts @@ -0,0 +1,57 @@ +import { isAddress } from 'ethers/lib/utils' +import { useEffect, useMemo, useState } from 'react' + +import { + parseInputType, + validateName, +} from '@ensdomains/ensjs/utils/validation' + +const useValidate = (input: string, skip?: any) => { + const { normalisedName, valid, type } = useMemo(() => { + let _normalisedName = '' + let _inputType: ReturnType | undefined + let _valid: boolean | undefined + if (!skip) { + try { + _normalisedName = validateName(decodeURIComponent(input)) + _inputType = parseInputType(_normalisedName) + _valid = + _inputType.type !== 'unknown' && _inputType.info !== 'unsupported' + // eslint-disable-next-line no-empty + } catch { + _valid = false + } + } + return { normalisedName: _normalisedName, valid: _valid, type: _inputType } + }, [input, skip]) + + return { + valid, + type, + name: normalisedName, + labelCount: normalisedName.split('.').length, + } +} + +export const useValidateOrAddress = (input: string, skip?: any) => { + const [inputIsAddress, setIsAddress] = useState(false) + const { valid, type, name, labelCount } = useValidate(input, skip) + + useEffect(() => { + if (!skip) { + if (isAddress(input)) { + setIsAddress(true) + } else { + setIsAddress(false) + } + } + }, [input, skip]) + + if (inputIsAddress) { + return { valid: true, type: 'address', output: input } + } + + return { valid, type, output: name, labelCount } +} + +export default useValidate diff --git a/packages/ensjs-react/src/hooks/useWrapperData.ts b/packages/ensjs-react/src/hooks/useWrapperData.ts new file mode 100644 index 00000000..73e17c67 --- /dev/null +++ b/packages/ensjs-react/src/hooks/useWrapperData.ts @@ -0,0 +1,26 @@ +import { PublicENS, QueryConfig } from '../types' +import { useEns } from '../utils/EnsProvider' + +import { useCachedQuery } from './useCachedQuery' + +type Args = { + name: string | null | undefined +} & QueryConfig, Error> + +const useWrapperData = ({ + name, + onError, + onSettled, + onSuccess, + enabled = true, +}: Args) => { + const { ready, getWrapperData } = useEns() + return useCachedQuery(['getWrapperData', name], () => getWrapperData(name!), { + enabled: Boolean(enabled && ready && name), + onError, + onSettled, + onSuccess, + }) +} + +export default useWrapperData diff --git a/packages/ensjs-react/src/index.ts b/packages/ensjs-react/src/index.ts new file mode 100644 index 00000000..54ba5c7d --- /dev/null +++ b/packages/ensjs-react/src/index.ts @@ -0,0 +1 @@ +export { EnsProvider, useEns } from './utils/EnsProvider' diff --git a/packages/ensjs-react/src/types.ts b/packages/ensjs-react/src/types.ts new file mode 100644 index 00000000..4fbd4924 --- /dev/null +++ b/packages/ensjs-react/src/types.ts @@ -0,0 +1,20 @@ +import { ENS } from '@ensdomains/ensjs' +import { UseQueryOptions } from '@tanstack/react-query' + +type PublicInterface = { [Key in keyof Type]: Type[Key] } + +export type PublicENS = PublicInterface + +export type ReturnedENS = { + [key in keyof PublicENS]: Awaited> +} + +export type QueryConfig = { + enabled?: UseQueryOptions['enabled'] + /** Function fires if mutation encounters error */ + onError?: UseQueryOptions['onError'] + /** Function fires when mutation is either successfully fetched or encounters error */ + onSettled?: UseQueryOptions['onSettled'] + /** Function fires when mutation is successful and will be passed the mutation's result */ + onSuccess?: UseQueryOptions['onSuccess'] +} diff --git a/packages/ensjs-react/src/utils/EnsProvider.tsx b/packages/ensjs-react/src/utils/EnsProvider.tsx new file mode 100644 index 00000000..0c93d586 --- /dev/null +++ b/packages/ensjs-react/src/utils/EnsProvider.tsx @@ -0,0 +1,44 @@ +import React, { + createContext, + useContext, + useEffect, + useMemo, + useState, +} from 'react' +import { useProvider } from 'wagmi' + +import { ENS } from '@ensdomains/ensjs' +import { PublicENS } from '../types' + +const EnsContext = createContext({ ...new ENS(), ready: false }) + +const EnsProvider = ({ + children, + opts, +}: { + children: React.ReactNode + opts: ConstructorParameters[0] +}) => { + const provider = useProvider() + const currentEns = useMemo(() => new ENS(opts), [opts]) + const [ready, setReady] = useState(false) + + useEffect(() => { + setReady(false) + currentEns.setProvider(provider as any).then(() => setReady(true)) + }, [provider]) + + return ( + ({ ...currentEns, ready }), [currentEns, ready])} + > + {children} + + ) +} + +function useEns(): PublicENS & { ready: boolean } { + const context = useContext(EnsContext) + return context +} +export { useEns, EnsProvider } diff --git a/packages/ensjs-react/src/utils/constants.ts b/packages/ensjs-react/src/utils/constants.ts new file mode 100644 index 00000000..a15d31b3 --- /dev/null +++ b/packages/ensjs-react/src/utils/constants.ts @@ -0,0 +1,52 @@ +export const emptyAddress = '0x0000000000000000000000000000000000000000' + +export const networkName = { + // eslint-disable-next-line @typescript-eslint/naming-convention + '1': 'mainnet', + // eslint-disable-next-line @typescript-eslint/naming-convention + '5': 'goerli', + // eslint-disable-next-line @typescript-eslint/naming-convention + '4': 'rinkeby', + // eslint-disable-next-line @typescript-eslint/naming-convention + '3': 'ropsten', + // eslint-disable-next-line @typescript-eslint/naming-convention + '1337': 'local', +} + +interface ResolverAddresses { + [key: string]: string[] +} + +// Ordered by recency +export const RESOLVER_ADDRESSES: ResolverAddresses = { + // eslint-disable-next-line @typescript-eslint/naming-convention + '1': [ + '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41', + '0xdaaf96c344f63131acadd0ea35170e7892d3dfba', + '0x226159d592e2b063810a10ebf6dcbada94ed68b8', + '0x1da022710df5002339274aadee8d58218e9d6ab5', + ], + // eslint-disable-next-line @typescript-eslint/naming-convention + '5': [ + '0xE264d5bb84bA3b8061ADC38D3D76e6674aB91852', + '0x121304143ea8101e69335f309e2062d299a234b5', + '0xff77b96d6bafcec0d684bb528b22e0ab09c70663', + '0x6e1b40ed2d626b97a43d2c12e48a6de49a03c7a4', + '0xc1ea41786094d1fbe5aded033b5370d51f7a3f96', + '0xbbe3fd189d18c8b73ba54e9dd01f89e6b3ee71f0', + '0x4B1488B7a6B320d2D721406204aBc3eeAa9AD329', + ], + // eslint-disable-next-line @typescript-eslint/naming-convention + '1337': [ + '0x70e0bA845a1A0F2DA3359C97E0285013525FFC49', + '0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB', + ], +} + +export const RESOLVER_INTERFACE_IDS = { + addrInterfaceId: '0x3b3b57de', + txtInterfaceId: '0x59d1d43c', + contentHashInterfaceId: '0xbc1c58d1', +} + +export const GRACE_PERIOD = 90 * 24 * 60 * 60 * 1000 diff --git a/packages/ensjs-react/src/utils/registrationStatus.ts b/packages/ensjs-react/src/utils/registrationStatus.ts new file mode 100644 index 00000000..47bb24e8 --- /dev/null +++ b/packages/ensjs-react/src/utils/registrationStatus.ts @@ -0,0 +1,79 @@ +import { BigNumber } from 'ethers' + +import type { ReturnedENS } from '../types' + +import { emptyAddress } from './constants' +import { checkETH2LDName, checkETHName } from './utils' + +export type RegistrationStatus = + | 'invalid' + | 'registered' + | 'gracePeriod' + | 'premium' + | 'available' + | 'short' + | 'notImported' + | 'notOwned' + | 'unsupportedTLD' + +export const getRegistrationStatus = ({ + name, + ownerData, + wrapperData, + expiryData, + priceData, + supportedTLD, +}: { + name: string | null + ownerData?: ReturnedENS['getOwner'] + wrapperData?: ReturnedENS['getWrapperData'] + expiryData?: ReturnedENS['getExpiry'] + priceData?: ReturnedENS['getPrice'] + supportedTLD?: boolean +}): RegistrationStatus => { + const labels = name?.split('.') || [] + const isDotETH = checkETHName(labels) + const isDotEth2ld = checkETH2LDName(isDotETH, labels, true) + + if (isDotEth2ld && labels[0].length < 3) { + return 'short' + } + + if (!ownerData && !wrapperData) return 'invalid' + + if (!isDotETH && !supportedTLD) { + return 'unsupportedTLD' + } + + if (isDotEth2ld) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + if (expiryData && expiryData.expiry) { + const { expiry: _expiry, gracePeriod } = expiryData as { + expiry: Date | string + gracePeriod: number + } + const expiry = new Date(_expiry) + if (expiry.getTime() > Date.now()) { + return 'registered' + } + if (expiry.getTime() + gracePeriod > Date.now()) { + return 'gracePeriod' + } + const { premium } = priceData as { + base: BigNumber + premium: BigNumber + } + if (premium.gt(0)) { + return 'premium' + } + } + return 'available' + } + if (ownerData && ownerData.owner !== emptyAddress) { + return 'registered' + } + if (labels.length > 2) { + return 'notOwned' + } + return 'notImported' +} diff --git a/packages/ensjs-react/src/utils/utils.ts b/packages/ensjs-react/src/utils/utils.ts new file mode 100644 index 00000000..35798d7f --- /dev/null +++ b/packages/ensjs-react/src/utils/utils.ts @@ -0,0 +1,25 @@ +import { toUtf8Bytes } from 'ethers/lib/utils.js' +import { useQuery } from 'wagmi' + +export const yearsToSeconds = (years: number) => years * 60 * 60 * 24 * 365 + +export const isLabelTooLong = (label: string) => { + const bytes = toUtf8Bytes(label) + return bytes.byteLength > 255 +} + +export const checkETHName = (labels: string[]) => + labels[labels.length - 1] === 'eth' + +export const checkETH2LDName = ( + isDotETH: boolean, + labels: string[], + canBeShort?: boolean, +) => isDotETH && labels.length === 2 && (canBeShort || labels[0].length >= 3) + +export const checkCachedData = ({ + status, + isFetched, + isFetchedAfterMount, +}: Omit>, 'data'>) => + status === 'success' && isFetched && !isFetchedAfterMount diff --git a/packages/ensjs-react/tsconfig.json b/packages/ensjs-react/tsconfig.json new file mode 100644 index 00000000..a5db0940 --- /dev/null +++ b/packages/ensjs-react/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + // "types": ["jest"], + // "outDir": "./dist", + "jsx": "preserve", + "declaration": true, + "downlevelIteration": true, + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "isolatedModules": true, + "incremental": true, + "importsNotUsedAsValues": "remove", + "lib": ["dom", "dom.iterable", "esnext"], + "target": "es6", + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["src/**/*"] +} diff --git a/packages/ensjs/package.json b/packages/ensjs/package.json index fae0bec4..9d5f52b0 100644 --- a/packages/ensjs/package.json +++ b/packages/ensjs/package.json @@ -94,6 +94,7 @@ "@typechain/ethers-v5": "^10.1.0", "@types/bn.js": "^5.1.0", "@types/jest": "^27.4.1", + "@types/node": "^18.11.13", "@types/traverse": "^0.6.32", "dotenv": "^16.0.0", "esbuild": "^0.15.6", diff --git a/packages/ensjs/src/index.ts b/packages/ensjs/src/index.ts index ceeb29cd..eef93c7b 100644 --- a/packages/ensjs/src/index.ts +++ b/packages/ensjs/src/index.ts @@ -1,4 +1,7 @@ -import type { JsonRpcSigner } from '@ethersproject/providers' +import type { + JsonRpcSigner, + TransactionRequest, +} from '@ethersproject/providers' import { ContractTransaction, ethers, PopulatedTransaction } from 'ethers' import { getContractAddress as _getContractAddress } from './contracts/getContractAddress' import ContractManager from './contracts/index' @@ -15,7 +18,6 @@ import type createSubname from './functions/createSubname' import type deleteSubname from './functions/deleteSubname' import type getAvailable from './functions/getAvailable' import type getDNSOwner from './functions/getDNSOwner' -import type supportsTLD from './functions/supportsTLD' import type getExpiry from './functions/getExpiry' import type { getHistory } from './functions/getHistory' import type getName from './functions/getName' @@ -46,13 +48,14 @@ import type setName from './functions/setName' import type setRecord from './functions/setRecord' import type setRecords from './functions/setRecords' import type setResolver from './functions/setResolver' +import type supportsTLD from './functions/supportsTLD' import type transferController from './functions/transferController' import type transferName from './functions/transferName' import type transferSubname from './functions/transferSubname' import type unwrapName from './functions/unwrapName' import type wrapName from './functions/wrapName' import GqlManager from './GqlManager' -import singleCall from './utils/singleCall' +import DataLoader from './utils/autobatch' import writeTx from './utils/writeTx' export type { @@ -203,6 +206,45 @@ export class ENS { this.getContractAddress = options?.getContractAddress || _getContractAddress } + providerCall = async (txs: readonly TransactionRequest[]) => { + if (!this.provider) throw new Error('ENS provider not set') + if (txs.length === 1) { + const call = await this.provider.call({ + ...txs[0], + ccipReadEnabled: true, + }) + return [call] + } + + const multicalls = await this.multicallWrapper.raw( + txs as TransactionRequest[], + ) + const call = await this.provider.call({ + ...multicalls, + ccipReadEnabled: true, + }) + const decoded = await this.multicallWrapper.decode(call, txs) + return decoded.map((d: any) => d.returnData) + } + + protected batchInstances = { + provider: new DataLoader(this.providerCall), + } + + protected callFunction = ( + ensData: any, + func: { + raw: (...args: any[]) => Promise<{ to: string; data: string }> + decode: (...args: any[]) => Promise + }, + ...data: any[] + ) => + func + .raw(ensData, ...data) + .then((rawData) => this.batchInstances.provider.load(rawData)) + .catch(() => null) + .then((ret) => func.decode(ensData, ret, ...data)) + /** * Checks for an initial provider and if it exists, sets it as the provider * @returns {Promise} - A promise that resolves when the provider is checked, and set if needed @@ -303,8 +345,7 @@ export class ENS { >(dependencies as any) // return singleCall function with dependencies forwarded - return singleCall( - thisRef.provider!, + return thisRef.callFunction( dependenciesToForward, mod[exportName], ...args, diff --git a/packages/ensjs/src/utils/autobatch.ts b/packages/ensjs/src/utils/autobatch.ts new file mode 100644 index 00000000..36fa387c --- /dev/null +++ b/packages/ensjs/src/utils/autobatch.ts @@ -0,0 +1,239 @@ +/* eslint-disable no-var */ +/* eslint-disable no-nested-ternary */ +/* eslint-disable @typescript-eslint/no-use-before-define */ +/** + * Copyright (c) 2019-present, GraphQL Foundation + * + * This source code is licensed under the MIT license. + */ + +// Private: cached resolved Promise instance +var resolvedPromise: Promise | null = null + +// A Function, which when given an Array of keys, returns a Promise of an Array +// of values or Errors. +export type BatchLoadFn = ( + keys: ReadonlyArray, +) => Promise> + +/** + * A `DataLoader` creates a public API for loading data from a particular + * data back-end with unique keys such as the `id` column of a SQL table or + * document name in a MongoDB database, given a batch loading function. + * + * Each `DataLoader` instance contains a unique memoized cache. Use caution when + * used in long-lived applications or those which serve many users with + * different access permissions and consider creating a new instance per + * web request. + */ +class DataLoader { + constructor(batchLoadFn: BatchLoadFn) { + if (typeof batchLoadFn !== 'function') { + throw new TypeError( + 'DataLoader must be constructed with a function which accepts ' + + `Array and returns Promise>, but got: ${batchLoadFn}.`, + ) + } + this._batchLoadFn = batchLoadFn + this._maxBatchSize = Infinity + this._batchScheduleFn = enqueuePostPromiseJob + this._batch = null + } + + // Private + _batchLoadFn: BatchLoadFn + + _maxBatchSize: number + + _batchScheduleFn: (fn: () => void) => void + + _batch: Batch | null + + /** + * Loads a key, returning a `Promise` for the value represented by that key. + */ + load(key: K): Promise { + if (key === null || key === undefined) { + throw new TypeError( + 'The loader.load() function must be called with a value, ' + + `but got: ${String(key)}.`, + ) + } + + const batch = getCurrentBatch(this) + + // Otherwise, produce a new Promise for this key, and enqueue it to be + // dispatched along with the current batch. + batch.keys.push(key) + const promise = new Promise((resolve, reject) => { + batch.callbacks.push({ resolve, reject }) + }) + + return promise as Promise + } +} + +// Private: Enqueue a Job to be executed after all "PromiseJobs" Jobs. +// +// ES6 JavaScript uses the concepts Job and JobQueue to schedule work to occur +// after the current execution context has completed: +// http://www.ecma-international.org/ecma-262/6.0/#sec-jobs-and-job-queues +// +// Node.js uses the `process.nextTick` mechanism to implement the concept of a +// Job, maintaining a global FIFO JobQueue for all Jobs, which is flushed after +// the current call stack ends. +// +// When calling `then` on a Promise, it enqueues a Job on a specific +// "PromiseJobs" JobQueue which is flushed in Node as a single Job on the +// global JobQueue. +// +// DataLoader batches all loads which occur in a single frame of execution, but +// should include in the batch all loads which occur during the flushing of the +// "PromiseJobs" JobQueue after that same execution frame. +// +// In order to avoid the DataLoader dispatch Job occuring before "PromiseJobs", +// A Promise Job is created with the sole purpose of enqueuing a global Job, +// ensuring that it always occurs after "PromiseJobs" ends. +// +// Node.js's job queue is unique. Browsers do not have an equivalent mechanism +// for enqueuing a job to be performed after promise microtasks and before the +// next macrotask. For browser environments, a macrotask is used (via +// setImmediate or setTimeout) at a potential performance penalty. +const enqueuePostPromiseJob = + typeof process === 'object' && typeof process.nextTick === 'function' + ? function (fn: Function) { + if (!resolvedPromise) { + resolvedPromise = Promise.resolve() + } + resolvedPromise.then(() => { + process.nextTick(fn) + }) + } + : typeof setImmediate === 'function' + ? function (fn: (...args: any[]) => void) { + setImmediate(fn) + } + : function (fn: Function) { + setTimeout(fn) + } + +// Private: Describes a batch of requests +type Batch = { + hasDispatched: boolean + keys: Array + callbacks: Array<{ + resolve: (value: V) => void + reject: (error: Error) => void + }> +} + +// Private: Either returns the current batch, or creates and schedules a +// dispatch of a new batch for the given loader. +function getCurrentBatch(loader: DataLoader): Batch { + // If there is an existing batch which has not yet dispatched and is within + // the limit of the batch size, then return it. + const existingBatch = loader._batch + if ( + existingBatch !== null && + !existingBatch.hasDispatched && + existingBatch.keys.length < loader._maxBatchSize + ) { + return existingBatch + } + + // Otherwise, create a new batch for this loader. + const newBatch = { hasDispatched: false, keys: [], callbacks: [] } + + // Store it on the loader so it may be reused. + loader._batch = newBatch + + // Then schedule a task to dispatch this batch of requests. + loader._batchScheduleFn(() => { + dispatchBatch(loader, newBatch) + }) + + return newBatch +} + +function dispatchBatch(loader: DataLoader, batch: Batch) { + // Mark this batch as having been dispatched. + batch.hasDispatched = true + + // If there's nothing to load, resolve any cache hits and return early. + if (batch.keys.length === 0) { + return + } + + // Call the provided batchLoadFn for this loader with the batch's keys and + // with the loader as the `this` context. + const batchPromise = loader._batchLoadFn(batch.keys) + + // Assert the expected response from batchLoadFn + if (!batchPromise || typeof batchPromise.then !== 'function') { + return failedDispatch( + batch, + new TypeError( + 'DataLoader must be constructed with a function which accepts ' + + 'Array and returns Promise>, but the function did ' + + `not return a Promise: ${String(batchPromise)}.`, + ), + ) + } + + // Await the resolution of the call to batchLoadFn. + batchPromise + .then((values) => { + // Assert the expected resolution from batchLoadFn. + if (!isArrayLike(values)) { + throw new TypeError( + 'DataLoader must be constructed with a function which accepts ' + + 'Array and returns Promise>, but the function did ' + + `not return a Promise of an Array: ${String(values)}.`, + ) + } + if (values.length !== batch.keys.length) { + throw new TypeError( + 'DataLoader must be constructed with a function which accepts ' + + 'Array and returns Promise>, but the function did ' + + 'not return a Promise of an Array of the same length as the Array ' + + 'of keys.' + + `\n\nKeys:\n${String(batch.keys)}` + + `\n\nValues:\n${String(values)}`, + ) + } + + // Step through values, resolving or rejecting each Promise in the batch. + for (let i = 0; i < batch.callbacks.length; i += 1) { + const value = values[i] + if (value instanceof Error) { + batch.callbacks[i].reject(value) + } else { + batch.callbacks[i].resolve(value) + } + } + }) + .catch((error) => { + failedDispatch(batch, error) + }) +} + +// Private: do not cache individual loads if the entire batch dispatch fails, +// but still reject each request so they do not hang. +function failedDispatch(batch: Batch, error: Error) { + for (let i = 0; i < batch.keys.length; i += 1) { + batch.callbacks[i].reject(error) + } +} + +// Private +function isArrayLike(x: any): boolean { + return ( + typeof x === 'object' && + x !== null && + typeof x.length === 'number' && + (x.length === 0 || + (x.length > 0 && Object.prototype.hasOwnProperty.call(x, x.length - 1))) + ) +} + +export default DataLoader diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddf34c38..0bd7f81c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -100,6 +100,7 @@ importers: '@typechain/ethers-v5': ^10.1.0 '@types/bn.js': ^5.1.0 '@types/jest': ^27.4.1 + '@types/node': ^18.11.13 '@types/traverse': ^0.6.32 dns-packet: ^5.3.1 dotenv: ^16.0.0 @@ -135,7 +136,7 @@ importers: dns-packet: 5.4.0 ethers: 5.6.9 graphql: 16.6.0 - graphql-request: 5.1.0-next.3_graphql@16.6.0 + graphql-request: 5.1.0-next.6_graphql@16.6.0 idna-uts46-hx: 3.4.0 traverse: 0.6.6 devDependencies: @@ -152,6 +153,7 @@ importers: '@typechain/ethers-v5': 10.1.0_fbp5tbcdjjq4jan7wzeon4p3qq '@types/bn.js': 5.1.0 '@types/jest': 27.5.2 + '@types/node': 18.11.13 '@types/traverse': 0.6.32 dotenv: 16.0.1 esbuild: 0.15.6 @@ -169,11 +171,42 @@ importers: node-fetch-commonjs: 3.1.1 solc: 0.8.16 ts-jest: 27.1.5_2adzr5bv2qpyd5zjpgodfe3dyu - ts-node: 10.9.1_litewngskstwdadyxlilaik57a + ts-node: 10.9.1_dau4gm4dni7hlzkcqqylii7toy typechain: 8.1.0_typescript@4.7.4 typescript: 4.7.4 wait-on: 6.0.1 + packages/ensjs-react: + specifiers: + '@ensdomains/ensjs': workspace:* + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/providers': ^5.6.2 + '@tanstack/react-query': ^4.19.1 + '@types/react': ^18.0.26 + dataloader: ^2.1.0 + eslint-config-airbnb: ^19.0.4 + eslint-config-airbnb-base: ^15.0.0 + eslint-config-airbnb-typescript: ^16.1.2 + ethers: ^5.6.1 + react: ^18.2.0 + typescript: ^4.9.3 + wagmi: ^0.8.10 + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/providers': 5.6.8 + dataloader: 2.1.0 + devDependencies: + '@ensdomains/ensjs': link:../ensjs + '@tanstack/react-query': 4.19.1_react@18.2.0 + '@types/react': 18.0.26 + eslint-config-airbnb: 19.0.4 + eslint-config-airbnb-base: 15.0.0 + eslint-config-airbnb-typescript: 16.2.0 + ethers: 5.6.9 + react: 18.2.0 + typescript: 4.9.3 + wagmi: 0.8.10_jvlfdwijrklnrxx2cuazqrvqtu + packages: /@ampproject/remapping/2.2.0: @@ -228,6 +261,18 @@ packages: jsesc: 2.5.2 dev: true + /@babel/helper-compilation-targets/7.18.9: + resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.18.8 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.3 + semver: 6.3.0 + dev: true + /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10: resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} engines: {node: '>=6.9.0'} @@ -241,6 +286,21 @@ packages: semver: 6.3.0 dev: true + /@babel/helper-define-polyfill-provider/0.3.3: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/helper-compilation-targets': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} @@ -289,6 +349,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-simple-access/7.18.6: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} @@ -465,6 +530,22 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-transform-runtime/7.19.6: + resolution: {integrity: sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + babel-plugin-polyfill-corejs2: 0.3.3 + babel-plugin-polyfill-corejs3: 0.6.0 + babel-plugin-polyfill-regenerator: 0.4.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/runtime/7.18.9: resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} engines: {node: '>=6.9.0'} @@ -511,6 +592,36 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@coinbase/wallet-sdk/3.6.2: + resolution: {integrity: sha512-HzxajB+qS+G9//c+th5uJ8KSt+jQ6/U+cgL9Sv89Wx6Mif+Lg5HxGtc6JQcIdHuYk9AFX+nXNSXtTGRdpHkdDg==} + engines: {node: '>= 10.0.0'} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + '@solana/web3.js': 1.52.0 + bind-decorator: 1.0.11 + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 4.4.3 + eth-json-rpc-filters: 4.2.2 + eth-rpc-errors: 4.0.2 + json-rpc-engine: 6.1.0 + keccak: 3.0.2 + preact: 10.11.3 + qs: 6.11.0 + rxjs: 6.6.7 + sha.js: 2.4.11 + stream-browserify: 3.0.0 + util: 0.12.4 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - react-native + - supports-color + - utf-8-validate + dev: true + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -738,7 +849,7 @@ packages: dependencies: '@resolver-engine/imports': 0.3.3 '@resolver-engine/imports-fs': 0.3.3 - '@typechain/ethers-v5': 2.0.0_typechain@3.0.0 + '@typechain/ethers-v5': 2.0.0_oai42fke67omxp5i2g4vu7ymuy '@types/mkdirp': 0.5.2 '@types/node-fetch': 2.6.2 ethers: 5.6.9 @@ -894,10 +1005,21 @@ packages: '@ethersproject/transactions': 5.6.2 '@ethersproject/web': 5.6.1 + /@ethersproject/abstract-provider/5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + /@ethersproject/abstract-signer/5.6.2: resolution: {integrity: sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==} dependencies: - '@ethersproject/abstract-provider': 5.6.1 + '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.6.2 '@ethersproject/bytes': 5.6.1 '@ethersproject/logger': 5.6.0 @@ -912,11 +1034,25 @@ packages: '@ethersproject/logger': 5.6.0 '@ethersproject/rlp': 5.6.1 + /@ethersproject/address/5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + /@ethersproject/base64/5.6.1: resolution: {integrity: sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==} dependencies: '@ethersproject/bytes': 5.6.1 + /@ethersproject/base64/5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + /@ethersproject/basex/5.6.1: resolution: {integrity: sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==} dependencies: @@ -930,21 +1066,38 @@ packages: '@ethersproject/logger': 5.6.0 bn.js: 5.2.1 + /@ethersproject/bignumber/5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + /@ethersproject/bytes/5.6.1: resolution: {integrity: sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==} dependencies: '@ethersproject/logger': 5.6.0 + /@ethersproject/bytes/5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + /@ethersproject/constants/5.6.1: resolution: {integrity: sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==} dependencies: '@ethersproject/bignumber': 5.6.2 + /@ethersproject/constants/5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + /@ethersproject/contracts/5.6.2: resolution: {integrity: sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==} dependencies: '@ethersproject/abi': 5.6.4 - '@ethersproject/abstract-provider': 5.6.1 + '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.6.2 '@ethersproject/address': 5.6.1 '@ethersproject/bignumber': 5.6.2 @@ -1005,14 +1158,28 @@ packages: '@ethersproject/bytes': 5.6.1 js-sha3: 0.8.0 + /@ethersproject/keccak256/5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + /@ethersproject/logger/5.6.0: resolution: {integrity: sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==} + /@ethersproject/logger/5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + /@ethersproject/networks/5.6.4: resolution: {integrity: sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==} dependencies: '@ethersproject/logger': 5.6.0 + /@ethersproject/networks/5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + /@ethersproject/pbkdf2/5.6.1: resolution: {integrity: sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==} dependencies: @@ -1024,27 +1191,32 @@ packages: dependencies: '@ethersproject/logger': 5.6.0 + /@ethersproject/properties/5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + /@ethersproject/providers/5.6.8: resolution: {integrity: sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==} dependencies: - '@ethersproject/abstract-provider': 5.6.1 + '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.6.2 - '@ethersproject/address': 5.6.1 - '@ethersproject/base64': 5.6.1 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 '@ethersproject/basex': 5.6.1 - '@ethersproject/bignumber': 5.6.2 - '@ethersproject/bytes': 5.6.1 - '@ethersproject/constants': 5.6.1 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 '@ethersproject/hash': 5.6.1 - '@ethersproject/logger': 5.6.0 - '@ethersproject/networks': 5.6.4 - '@ethersproject/properties': 5.6.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 '@ethersproject/random': 5.6.1 - '@ethersproject/rlp': 5.6.1 + '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.6.1 - '@ethersproject/strings': 5.6.1 - '@ethersproject/transactions': 5.6.2 - '@ethersproject/web': 5.6.1 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 bech32: 1.1.4 ws: 7.4.6 transitivePeerDependencies: @@ -1063,6 +1235,12 @@ packages: '@ethersproject/bytes': 5.6.1 '@ethersproject/logger': 5.6.0 + /@ethersproject/rlp/5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + /@ethersproject/sha2/5.6.1: resolution: {integrity: sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==} dependencies: @@ -1080,6 +1258,16 @@ packages: elliptic: 6.5.4 hash.js: 1.1.7 + /@ethersproject/signing-key/5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + /@ethersproject/solidity/5.6.1: resolution: {integrity: sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==} dependencies: @@ -1097,6 +1285,13 @@ packages: '@ethersproject/constants': 5.6.1 '@ethersproject/logger': 5.6.0 + /@ethersproject/strings/5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + /@ethersproject/transactions/5.6.2: resolution: {integrity: sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==} dependencies: @@ -1110,6 +1305,19 @@ packages: '@ethersproject/rlp': 5.6.1 '@ethersproject/signing-key': 5.6.2 + /@ethersproject/transactions/5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + /@ethersproject/units/5.6.1: resolution: {integrity: sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==} dependencies: @@ -1120,7 +1328,7 @@ packages: /@ethersproject/wallet/5.6.2: resolution: {integrity: sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==} dependencies: - '@ethersproject/abstract-provider': 5.6.1 + '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.6.2 '@ethersproject/address': 5.6.1 '@ethersproject/bignumber': 5.6.2 @@ -1145,6 +1353,15 @@ packages: '@ethersproject/properties': 5.6.0 '@ethersproject/strings': 5.6.1 + /@ethersproject/web/5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + /@ethersproject/wordlists/5.6.1: resolution: {integrity: sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==} dependencies: @@ -1210,7 +1427,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -1231,7 +1448,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -1275,7 +1492,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 jest-mock: 27.5.1 dev: true @@ -1285,7 +1502,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.6.5 + '@types/node': 18.11.13 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -1314,7 +1531,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -1398,7 +1615,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -1438,6 +1655,35 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@json-rpc-tools/provider/1.7.6: + resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + '@json-rpc-tools/utils': 1.7.6 + axios: 0.21.4 + safe-json-utils: 1.1.1 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + + /@json-rpc-tools/types/1.7.6: + resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + keyvaluestorage-interface: 1.0.0 + dev: true + + /@json-rpc-tools/utils/1.7.6: + resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + '@json-rpc-tools/types': 1.7.6 + '@pedrouid/environment': 1.0.1 + dev: true + /@leichtgewicht/ip-codec/2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} @@ -1451,6 +1697,10 @@ packages: tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 + /@metamask/safe-event-emitter/2.0.0: + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + dev: true + /@multiformats/base-x/4.0.1: resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} dev: false @@ -1577,6 +1827,10 @@ packages: - utf-8-validate dev: true + /@pedrouid/environment/1.0.1: + resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} + dev: true + /@resolver-engine/core/0.3.3: resolution: {integrity: sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==} dependencies: @@ -1733,6 +1987,41 @@ packages: '@sinonjs/commons': 1.8.3 dev: true + /@solana/buffer-layout/4.0.0: + resolution: {integrity: sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==} + engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 + dev: true + + /@solana/web3.js/1.52.0: + resolution: {integrity: sha512-oG1+BX4nVYZ0OBzmk6DRrY8oBYMsbXVQEf9N9JOfKm+wXSmjxVEEo8v3IPV8mKwR0JvUWuE8lOn3IUDiMlRLgg==} + engines: {node: '>=12.20.0'} + dependencies: + '@babel/runtime': 7.18.9 + '@ethersproject/sha2': 5.6.1 + '@solana/buffer-layout': 4.0.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.1 + fast-stable-stringify: 1.0.0 + jayson: 3.7.0 + js-sha3: 0.8.0 + node-fetch: 2.6.7 + react-native-url-polyfill: 1.3.0 + rpc-websockets: 7.5.0 + secp256k1: 4.0.3 + superstruct: 0.14.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - react-native + - utf-8-validate + dev: true + /@solidity-parser/parser/0.14.3: resolution: {integrity: sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw==} dependencies: @@ -1906,6 +2195,52 @@ packages: dependencies: defer-to-connect: 2.0.1 + /@tanstack/query-core/4.19.1: + resolution: {integrity: sha512-Zp0aIose5C8skBzqbVFGk9HJsPtUhRVDVNWIqVzFbGQQgYSeLZMd3Sdb4+EnA5wl1J7X+bre2PJGnQg9x/zHOA==} + dev: true + + /@tanstack/query-persist-client-core/4.19.1: + resolution: {integrity: sha512-Tlx9tgeYMDoJ5w8O79TXx85Bk46LDQLvojdjWzQbzKWPIEtvwK6OmG2Z3zxz6qEA3FiVmG0BYjsVMsT6PZOhGg==} + peerDependencies: + '@tanstack/query-core': 4.19.1 + dev: true + + /@tanstack/query-sync-storage-persister/4.19.1: + resolution: {integrity: sha512-gY8rDi6XJ4zPgPF8wEsryu8a87+E9vIByXWryoVO0ucKJzgjVLFNargPSZcMMvRsVw7nhyDCCd/nZZgW+Z3C9g==} + dependencies: + '@tanstack/query-persist-client-core': 4.19.1 + transitivePeerDependencies: + - '@tanstack/query-core' + dev: true + + /@tanstack/react-query-persist-client/4.19.1_tbzjkhe5jt5eajidrzbcozbyna: + resolution: {integrity: sha512-uNHCBfK7YiNXTjlO3B/Rym7HrNX6OnrcWIw3iiuGFK+gC566/BB3lcLHvriHwanxbnFvWiua8g9hvddeXVQzeA==} + peerDependencies: + '@tanstack/react-query': 4.19.1 + dependencies: + '@tanstack/query-persist-client-core': 4.19.1 + '@tanstack/react-query': 4.19.1_react@18.2.0 + transitivePeerDependencies: + - '@tanstack/query-core' + dev: true + + /@tanstack/react-query/4.19.1_react@18.2.0: + resolution: {integrity: sha512-5dvHvmc0vrWI03AJugzvKfirxCyCLe+qawrWFCXdu8t7dklIhJ7D5ZhgTypv7mMtIpdHPcECtCiT/+V74wCn2A==} + 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 + dependencies: + '@tanstack/query-core': 4.19.1 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + /@tootallnate/once/1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -2050,16 +2385,14 @@ packages: typescript: 4.7.4 dev: true - /@typechain/ethers-v5/2.0.0_typechain@3.0.0: + /@typechain/ethers-v5/2.0.0_oai42fke67omxp5i2g4vu7ymuy: resolution: {integrity: sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==} peerDependencies: + ethers: ^5.0.0 typechain: ^3.0.0 dependencies: ethers: 5.6.9 typechain: 3.0.0_typescript@4.7.4 - transitivePeerDependencies: - - bufferutil - - utf-8-validate dev: false /@types/abstract-leveldown/7.2.0: @@ -2097,28 +2430,34 @@ packages: /@types/bn.js/4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/bn.js/5.1.0: resolution: {integrity: sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/cacheable-request/6.0.2: resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.6.5 + '@types/node': 18.11.13 '@types/responselike': 1.0.0 /@types/chai/4.3.3: resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 18.6.5 + dev: true + /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 dev: true /@types/http-cache-semantics/4.0.1: @@ -2161,7 +2500,7 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/level-errors/3.0.0: resolution: {integrity: sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==} @@ -2171,7 +2510,7 @@ packages: dependencies: '@types/abstract-leveldown': 7.2.0 '@types/level-errors': 3.0.0 - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/lru-cache/5.1.1: resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} @@ -2179,49 +2518,69 @@ packages: /@types/mkdirp/0.5.2: resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 dev: false /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 form-data: 3.0.1 dev: false /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + /@types/node/18.11.13: + resolution: {integrity: sha512-IASpMGVcWpUsx5xBOrxMj7Bl8lqfuTY7FKAnPmu5cHkfQVWF8GulWS1jbRqA934qZL35xh5xN/+Xe/i26Bod4w==} + /@types/node/18.6.5: resolution: {integrity: sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==} + dev: true /@types/pbkdf2/3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/prettier/2.7.0: resolution: {integrity: sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==} + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + /@types/qs/6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true + /@types/react/18.0.26: + resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: true + /@types/resolve/0.0.8: resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 dev: false /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: true /@types/secp256k1/4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 /@types/seedrandom/3.0.1: resolution: {integrity: sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==} @@ -2262,6 +2621,12 @@ packages: '@types/underscore': 1.11.4 dev: false + /@types/ws/7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 18.6.5 + dev: true + /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -2418,6 +2783,234 @@ packages: /@ungap/promise-all-settled/1.1.2: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + /@wagmi/core/0.7.9_uvsxu4ihzaiezctz7bt3hdam3q: + resolution: {integrity: sha512-97KCELUP5Q1AagRyE7SmpLh4/v3xdcy/XMbybLvvtQbgmi3y5oEzy4h/wJMY1hEZlmicqyWZAHHm6xIr1tP5HA==} + peerDependencies: + '@coinbase/wallet-sdk': '>=3.3.0' + '@walletconnect/ethereum-provider': '>=1.7.5' + ethers: '>=5.5.1' + peerDependenciesMeta: + '@coinbase/wallet-sdk': + optional: true + '@walletconnect/ethereum-provider': + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.6.2 + '@walletconnect/ethereum-provider': 1.8.0 + abitype: 0.1.8_typescript@4.9.3 + ethers: 5.6.9 + eventemitter3: 4.0.7 + zustand: 4.1.5_react@18.2.0 + transitivePeerDependencies: + - immer + - react + - typescript + dev: true + + /@walletconnect/browser-utils/1.8.0: + resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} + dependencies: + '@walletconnect/safe-json': 1.0.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/window-getters': 1.0.0 + '@walletconnect/window-metadata': 1.0.0 + detect-browser: 5.2.0 + dev: true + + /@walletconnect/client/1.8.0: + resolution: {integrity: sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==} + dependencies: + '@walletconnect/core': 1.8.0 + '@walletconnect/iso-crypto': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@walletconnect/core/1.8.0: + resolution: {integrity: sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==} + dependencies: + '@walletconnect/socket-transport': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@walletconnect/crypto/1.0.3: + resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==} + dependencies: + '@walletconnect/encoding': 1.0.2 + '@walletconnect/environment': 1.0.1 + '@walletconnect/randombytes': 1.0.3 + aes-js: 3.1.2 + hash.js: 1.1.7 + tslib: 1.14.1 + dev: true + + /@walletconnect/encoding/1.0.2: + resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==} + dependencies: + is-typedarray: 1.0.0 + tslib: 1.14.1 + typedarray-to-buffer: 3.1.5 + dev: true + + /@walletconnect/environment/1.0.1: + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + dependencies: + tslib: 1.14.1 + dev: true + + /@walletconnect/ethereum-provider/1.8.0: + resolution: {integrity: sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q==} + dependencies: + '@walletconnect/client': 1.8.0 + '@walletconnect/jsonrpc-http-connection': 1.0.4 + '@walletconnect/jsonrpc-provider': 1.0.6 + '@walletconnect/signer-connection': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + eip1193-provider: 1.0.1 + eventemitter3: 4.0.7 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: true + + /@walletconnect/iso-crypto/1.8.0: + resolution: {integrity: sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==} + dependencies: + '@walletconnect/crypto': 1.0.3 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + dev: true + + /@walletconnect/jsonrpc-http-connection/1.0.4: + resolution: {integrity: sha512-ji79pspdBhmIbTwve383tMaDu5Le9plW+oj5GE2aqzxIl3ib8JvRBZRn5lGEBGqVCvqB3MBJL7gBlEwpyRtoxQ==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.4 + '@walletconnect/safe-json': 1.0.1 + cross-fetch: 3.1.5 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + dev: true + + /@walletconnect/jsonrpc-provider/1.0.6: + resolution: {integrity: sha512-f5vQxr53vUVQ51/9mRLb1OiNciT/546XZ68Byn9OYnDBGeGJXK2kQWDHp8sPWZbN5x0p7B6asdCWMVFJ6danlw==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.4 + '@walletconnect/safe-json': 1.0.1 + tslib: 1.14.1 + dev: true + + /@walletconnect/jsonrpc-types/1.0.2: + resolution: {integrity: sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + dev: true + + /@walletconnect/jsonrpc-utils/1.0.4: + resolution: {integrity: sha512-y0+tDxcTZ9BHBBKBJbjZxLUXb+zQZCylf7y/jTvDPNx76J0hYYc+F9zHzyqBLeorSKepLTk6yI8hw3NXbAQB3g==} + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.2 + tslib: 1.14.1 + dev: true + + /@walletconnect/mobile-registry/1.4.0: + resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} + deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' + dev: true + + /@walletconnect/qrcode-modal/1.8.0: + resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} + dependencies: + '@walletconnect/browser-utils': 1.8.0 + '@walletconnect/mobile-registry': 1.4.0 + '@walletconnect/types': 1.8.0 + copy-to-clipboard: 3.3.3 + preact: 10.4.1 + qrcode: 1.4.4 + dev: true + + /@walletconnect/randombytes/1.0.3: + resolution: {integrity: sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==} + dependencies: + '@walletconnect/encoding': 1.0.2 + '@walletconnect/environment': 1.0.1 + randombytes: 2.1.0 + tslib: 1.14.1 + dev: true + + /@walletconnect/safe-json/1.0.0: + resolution: {integrity: sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==} + dev: true + + /@walletconnect/safe-json/1.0.1: + resolution: {integrity: sha512-Fm7e31oSYY15NQr8SsLJheKAy5L744udZf2lJKcz6wFmPJEzf7hOF0866o/rrldRzJnjZ4H2GJ45pFudsnLW5A==} + dependencies: + tslib: 1.14.1 + dev: true + + /@walletconnect/signer-connection/1.8.0: + resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} + dependencies: + '@walletconnect/client': 1.8.0 + '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.4 + '@walletconnect/qrcode-modal': 1.8.0 + '@walletconnect/types': 1.8.0 + eventemitter3: 4.0.7 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@walletconnect/socket-transport/1.8.0: + resolution: {integrity: sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==} + dependencies: + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + ws: 7.5.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@walletconnect/types/1.8.0: + resolution: {integrity: sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==} + dev: true + + /@walletconnect/utils/1.8.0: + resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} + dependencies: + '@walletconnect/browser-utils': 1.8.0 + '@walletconnect/encoding': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.4 + '@walletconnect/types': 1.8.0 + bn.js: 4.11.8 + js-sha3: 0.8.0 + query-string: 6.13.5 + dev: true + + /@walletconnect/window-getters/1.0.0: + resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} + dev: true + + /@walletconnect/window-metadata/1.0.0: + resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} + dependencies: + '@walletconnect/window-getters': 1.0.0 + dev: true + /@yarnpkg/lockfile/1.1.0: resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} dev: false @@ -2428,10 +3021,27 @@ packages: dev: false optional: true + /JSONStream/1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + /abab/2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true + /abitype/0.1.8_typescript@4.9.3: + resolution: {integrity: sha512-2pde0KepTzdfu19ZrzYTYVIWo69+6UbBCY4B1RDiwWgo2XZtFSJhF6C+XThuRXbbZ823J0Rw1Y5cP0NXYVcCdQ==} + engines: {pnpm: '>=7'} + peerDependencies: + typescript: '>=4.7.4' + dependencies: + typescript: 4.9.3 + dev: true + /abort-controller/3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -2549,8 +3159,6 @@ packages: /aes-js/3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} - dev: false - optional: true /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -2611,6 +3219,11 @@ packages: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} + /ansi-regex/4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: true + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2799,6 +3412,12 @@ packages: /async-limiter/1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + /async-mutex/0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + dependencies: + tslib: 2.4.0 + dev: true + /async/1.5.2: resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} dev: false @@ -2833,6 +3452,14 @@ packages: /aws4/1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + /axios/0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.1 + transitivePeerDependencies: + - debug + dev: true + /axios/0.21.4_debug@4.3.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: @@ -3066,6 +3693,39 @@ packages: '@types/babel__traverse': 7.18.0 dev: true + /babel-plugin-polyfill-corejs2/0.3.3: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.18.8 + '@babel/helper-define-polyfill-provider': 0.3.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.6.0: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-define-polyfill-provider': 0.3.3 + core-js-compat: 3.26.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.4.1: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-define-polyfill-provider': 0.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-syntax-async-functions/6.13.0: resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} dev: false @@ -3489,6 +4149,14 @@ packages: /big.js/6.2.1: resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} + /bigint-buffer/1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + dev: true + /bignumber.js/7.2.1: resolution: {integrity: sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==} @@ -3504,12 +4172,14 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /bind-decorator/1.0.11: + resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} + dev: true + /bindings/1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 - dev: false - optional: true /bip39/2.5.0: resolution: {integrity: sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==} @@ -3538,6 +4208,10 @@ packages: /bn.js/4.11.6: resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + /bn.js/4.11.8: + resolution: {integrity: sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==} + dev: true + /bn.js/4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -3566,6 +4240,14 @@ packages: /boolbase/1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + /borsh/0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + dev: true + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -3687,6 +4369,17 @@ packages: update-browserslist-db: 1.0.5_browserslist@4.21.3 dev: true + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001436 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + dev: true + /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -3712,6 +4405,27 @@ packages: node-int64: 0.4.0 dev: true + /btoa/1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + dev: true + + /buffer-alloc-unsafe/1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: true + + /buffer-alloc/1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: true + + /buffer-fill/1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: true + /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3732,6 +4446,13 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /buffer/6.0.1: + resolution: {integrity: sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -3857,6 +4578,10 @@ packages: /caniuse-lite/1.0.30001380: resolution: {integrity: sha512-OO+pPubxx16lkI7TVrbFpde8XHz66SMwstl1YWpg6uMGw56XnhYVwtPIjvX4kYpzwMwQKr4DDce394E03dQPGg==} + /caniuse-lite/1.0.30001436: + resolution: {integrity: sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==} + dev: true + /caseless/0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4089,6 +4814,14 @@ packages: wrap-ansi: 2.1.0 dev: false + /cliui/5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -4104,7 +4837,11 @@ packages: /clone/2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} - dev: false + + /clsx/1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: true /co/4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -4191,7 +4928,6 @@ packages: /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false /commander/3.0.2: resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} @@ -4297,6 +5033,18 @@ packages: engines: {node: '>=0.10.0'} dev: false + /copy-to-clipboard/3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + dev: true + + /core-js-compat/3.26.1: + resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} + dependencies: + browserslist: 4.21.4 + dev: true + /core-js-pure/3.24.1: resolution: {integrity: sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==} requiresBuild: true @@ -4457,6 +5205,10 @@ packages: cssom: 0.3.8 dev: true + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + dev: true + /cuint/0.2.2: resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} dev: false @@ -4486,6 +5238,10 @@ packages: whatwg-url: 8.7.0 dev: true + /dataloader/2.1.0: + resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} + dev: false + /date-fns/2.29.2: resolution: {integrity: sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==} engines: {node: '>=0.11'} @@ -4682,6 +5438,11 @@ packages: resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} dev: false + /delay/5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + dev: true + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4711,6 +5472,10 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-browser/5.2.0: + resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} + dev: true + /detect-indent/4.0.0: resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} engines: {node: '>=0.10.0'} @@ -4757,6 +5522,10 @@ packages: miller-rabin: 4.0.1 randombytes: 2.1.0 + /dijkstrajs/1.0.2: + resolution: {integrity: sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==} + dev: true + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4857,9 +5626,23 @@ packages: /ee-first/1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + /eip1193-provider/1.0.1: + resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} + dependencies: + '@json-rpc-tools/provider': 1.7.6 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + /electron-to-chromium/1.4.225: resolution: {integrity: sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==} + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + dev: true + /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -4880,6 +5663,10 @@ packages: engines: {node: '>=10'} dev: true + /emoji-regex/7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + dev: true + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5022,6 +5809,12 @@ packages: /es6-promise/4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + /es6-promisify/5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: true + /es6-symbol/3.1.3: resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: @@ -5270,6 +6063,19 @@ packages: source-map: 0.6.1 dev: true + /eslint-config-airbnb-base/15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + object.assign: 4.1.3 + object.entries: 1.1.5 + semver: 6.3.0 + dev: true + /eslint-config-airbnb-base/15.0.0_jatgrcxl4x7ywe7ak6cnjca2ae: resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5285,6 +6091,17 @@ packages: semver: 6.3.0 dev: true + /eslint-config-airbnb-typescript/16.2.0: + resolution: {integrity: sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + '@typescript-eslint/parser': ^5.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + eslint-config-airbnb-base: 15.0.0 + dev: true + /eslint-config-airbnb-typescript/16.2.0_2p33354vws2q7hfbt5tyy4qhyy: resolution: {integrity: sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA==} peerDependencies: @@ -5300,6 +6117,21 @@ packages: eslint-plugin-import: 2.26.0_qfqnhzzittf54udqwes54xx65q dev: true + /eslint-config-airbnb/19.0.4: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint-config-airbnb-base: 15.0.0 + object.assign: 4.1.3 + object.entries: 1.1.5 + dev: true + /eslint-config-airbnb/19.0.4_jatgrcxl4x7ywe7ak6cnjca2ae: resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5586,12 +6418,39 @@ packages: - supports-color dev: false + /eth-block-tracker/4.4.3: + resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} + dependencies: + '@babel/plugin-transform-runtime': 7.19.6 + '@babel/runtime': 7.18.9 + eth-query: 2.1.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + safe-event-emitter: 1.0.1 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + /eth-ens-namehash/2.0.8: resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==} dependencies: idna-uts46-hx: 2.3.1 js-sha3: 0.5.7 + /eth-json-rpc-filters/4.2.2: + resolution: {integrity: sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + async-mutex: 0.2.6 + eth-json-rpc-middleware: 6.0.0 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + transitivePeerDependencies: + - encoding + dev: true + /eth-json-rpc-infura/3.2.1: resolution: {integrity: sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==} dependencies: @@ -5621,8 +6480,26 @@ packages: promise-to-callback: 1.0.0 tape: 4.16.1 transitivePeerDependencies: - - supports-color - dev: false + - supports-color + dev: false + + /eth-json-rpc-middleware/6.0.0: + resolution: {integrity: sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==} + dependencies: + btoa: 1.2.1 + clone: 2.1.2 + eth-query: 2.1.2 + eth-rpc-errors: 3.0.0 + eth-sig-util: 1.4.2 + ethereumjs-util: 5.2.1 + json-rpc-engine: 5.4.0 + json-stable-stringify: 1.0.1 + node-fetch: 2.6.7 + pify: 3.0.0 + safe-event-emitter: 1.0.1 + transitivePeerDependencies: + - encoding + dev: true /eth-lib/0.1.29: resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} @@ -5650,7 +6527,18 @@ packages: dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 - dev: false + + /eth-rpc-errors/3.0.0: + resolution: {integrity: sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==} + dependencies: + fast-safe-stringify: 2.1.1 + dev: true + + /eth-rpc-errors/4.0.2: + resolution: {integrity: sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==} + dependencies: + fast-safe-stringify: 2.1.1 + dev: true /eth-sig-util/1.4.2: resolution: {integrity: sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==} @@ -5658,7 +6546,6 @@ packages: dependencies: ethereumjs-abi: github.com/ethereumjs/ethereumjs-abi/ee3994657fa7a427238e6ba92a84d0b529bbcde0 ethereumjs-util: 5.2.1 - dev: false /eth-sig-util/3.0.0: resolution: {integrity: sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==} @@ -5879,7 +6766,6 @@ packages: ethjs-util: 0.1.6 rlp: 2.2.7 safe-buffer: 5.2.1 - dev: false /ethereumjs-util/6.2.1: resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} @@ -6036,10 +6922,13 @@ packages: /eventemitter3/4.0.4: resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: false /evp_bytestokey/1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -6212,6 +7101,11 @@ packages: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} + /eyes/0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + dev: true + /fake-merkle-patricia-tree/1.0.1: resolution: {integrity: sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==} dependencies: @@ -6253,6 +7147,14 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fast-stable-stringify/1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + dev: true + /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: @@ -6287,8 +7189,6 @@ packages: /file-uri-to-path/1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false - optional: true /filename-regex/2.0.1: resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} @@ -6364,6 +7264,13 @@ packages: dependencies: locate-path: 2.0.0 + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -6927,8 +7834,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphql-request/5.1.0-next.3_graphql@16.6.0: - resolution: {integrity: sha512-DzFHEz4/fUIWvo/CiWF3FnTejsaFDel/Fcu4YY34OYiFERG8LSsmGhKvwBWWygJYyzdQ5h4P42xv11+kdBheHg==} + /graphql-request/5.1.0-next.6_graphql@16.6.0: + resolution: {integrity: sha512-s+B7wfdbPf/0zWIdfL1dUzAke37JNMuJ5cZIr0AgG97vIzxht9l/igx6cQc3f6uvnkCtAgd6FQPSEb0P8iWqAA==} peerDependencies: graphql: 14 - 16 dependencies: @@ -7062,7 +7969,7 @@ packages: source-map-support: 0.5.21 stacktrace-parser: 0.1.10 true-case-path: 2.2.1 - ts-node: 10.9.1_litewngskstwdadyxlilaik57a + ts-node: 10.9.1_dau4gm4dni7hlzkcqqylii7toy tsort: 0.0.1 typescript: 4.7.4 undici: 5.9.1 @@ -7576,7 +8483,6 @@ packages: /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} - dev: false /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -7774,6 +8680,10 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -7789,6 +8699,14 @@ packages: engines: {node: '>=0.10.0'} dev: false + /isomorphic-ws/4.0.1_ws@7.4.6: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 7.4.6 + dev: true + /isstream/0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -7845,6 +8763,29 @@ packages: has-to-string-tag-x: 1.4.1 is-object: 1.0.2 + /jayson/3.7.0: + resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@types/connect': 3.4.35 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1_ws@7.4.6 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + uuid: 8.3.2 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /jest-changed-files/27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7861,7 +8802,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -7944,7 +8885,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_litewngskstwdadyxlilaik57a + ts-node: 10.9.1_dau4gm4dni7hlzkcqqylii7toy transitivePeerDependencies: - bufferutil - canvas @@ -7987,7 +8928,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -8005,7 +8946,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -8021,7 +8962,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.6.5 + '@types/node': 18.11.13 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -8043,7 +8984,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -8103,7 +9044,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 dev: true /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: @@ -8159,7 +9100,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.10 @@ -8216,7 +9157,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 graceful-fs: 4.2.10 dev: true @@ -8255,7 +9196,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -8280,7 +9221,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.6.5 + '@types/node': 18.11.13 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -8291,7 +9232,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.6.5 + '@types/node': 18.11.13 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -8462,6 +9403,21 @@ packages: - supports-color dev: false + /json-rpc-engine/5.4.0: + resolution: {integrity: sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==} + dependencies: + eth-rpc-errors: 3.0.0 + safe-event-emitter: 1.0.1 + dev: true + + /json-rpc-engine/6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + eth-rpc-errors: 4.0.2 + dev: true + /json-rpc-error/2.0.0: resolution: {integrity: sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==} dependencies: @@ -8470,7 +9426,6 @@ packages: /json-rpc-random-id/1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - dev: false /json-schema-traverse/0.3.1: resolution: {integrity: sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==} @@ -8490,7 +9445,6 @@ packages: resolution: {integrity: sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==} dependencies: jsonify: 0.0.0 - dev: false /json-stringify-safe/5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -8532,7 +9486,11 @@ packages: /jsonify/0.0.0: resolution: {integrity: sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==} - dev: false + + /jsonparse/1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true /jsprim/1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} @@ -8571,6 +9529,10 @@ packages: compress-brotli: 1.3.8 json-buffer: 3.0.1 + /keyvaluestorage-interface/1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + dev: true + /kind-of/3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -8852,6 +9814,14 @@ packages: p-locate: 2.0.0 path-exists: 3.0.0 + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -8872,6 +9842,10 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + /lodash.flatten/4.4.0: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} dev: true @@ -8910,7 +9884,6 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: false /loupe/2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} @@ -9891,6 +10864,13 @@ packages: dependencies: p-limit: 1.3.0 + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -10144,6 +11124,16 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + /pify/3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify/5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true + /pinkie-promise/2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} engines: {node: '>=0.10.0'} @@ -10166,6 +11156,11 @@ packages: find-up: 4.1.0 dev: true + /pngjs/3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: true + /posix-character-classes/0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -10176,6 +11171,14 @@ packages: requiresBuild: true dev: false + /preact/10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + dev: true + + /preact/10.4.1: + resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} + dev: true + /precond/0.2.3: resolution: {integrity: sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==} engines: {node: '>= 0.6'} @@ -10360,6 +11363,20 @@ packages: hasBin: true dev: false + /qrcode/1.4.4: + resolution: {integrity: sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==} + engines: {node: '>=4'} + hasBin: true + dependencies: + buffer: 5.7.1 + buffer-alloc: 1.2.0 + buffer-from: 1.1.2 + dijkstrajs: 1.0.2 + isarray: 2.0.5 + pngjs: 3.4.0 + yargs: 13.3.2 + dev: true + /qs/6.10.3: resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} engines: {node: '>=0.6'} @@ -10384,6 +11401,15 @@ packages: object-assign: 4.1.1 strict-uri-encode: 1.1.0 + /query-string/6.13.5: + resolution: {integrity: sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: true + /querystring/0.2.0: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} @@ -10438,6 +11464,21 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true + /react-native-url-polyfill/1.3.0: + resolution: {integrity: sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ==} + peerDependencies: + react-native: '*' + dependencies: + whatwg-url-without-unicode: 8.0.0-3 + dev: true + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: true + /read-pkg-up/1.0.1: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} engines: {node: '>=0.10.0'} @@ -10632,6 +11673,10 @@ packages: /require-main-filename/1.0.1: resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} + /require-main-filename/2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + /resolve-alpn/1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -10730,6 +11775,18 @@ packages: dependencies: bn.js: 5.2.1 + /rpc-websockets/7.5.0: + resolution: {integrity: sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==} + dependencies: + '@babel/runtime': 7.18.9 + eventemitter3: 4.0.7 + uuid: 8.3.2 + ws: 8.11.0_22kvxa7zeyivx4jp72v2w3pkvy + optionalDependencies: + bufferutil: 4.0.6 + utf-8-validate: 5.0.9 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -10739,6 +11796,13 @@ packages: /rustbn.js/0.2.0: resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + /rxjs/6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + /rxjs/7.5.6: resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} dependencies: @@ -10755,7 +11819,10 @@ packages: deprecated: Renamed to @metamask/safe-event-emitter dependencies: events: 3.3.0 - dev: false + + /safe-json-utils/1.1.1: + resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} + dev: true /safe-regex/1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} @@ -11217,6 +12284,11 @@ packages: resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} dev: false + /split-on-first/1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: true + /split-string/3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -11297,6 +12369,13 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + /stream-browserify/3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + /stream-to-pull-stream/1.7.3: resolution: {integrity: sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==} dependencies: @@ -11308,6 +12387,11 @@ packages: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} + /strict-uri-encode/2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: true + /string-format/2.0.0: resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} dev: true @@ -11336,6 +12420,15 @@ packages: strip-ansi: 4.0.0 dev: false + /string-width/3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11394,6 +12487,13 @@ packages: dependencies: ansi-regex: 3.0.1 + /strip-ansi/5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: true + /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11440,6 +12540,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /superstruct/0.14.2: + resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} + dev: true + /supports-color/2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -11603,6 +12707,10 @@ packages: resolution: {integrity: sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==} deprecated: testrpc has been renamed to ganache-cli, please use this package from now on. + /text-encoding-utf-8/1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + dev: true + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -11612,7 +12720,6 @@ packages: /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -11693,6 +12800,10 @@ packages: safe-regex: 1.1.0 dev: false + /toggle-selection/1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: true + /toidentifier/1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -11820,7 +12931,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-node/10.9.1_litewngskstwdadyxlilaik57a: + /ts-node/10.9.1_dau4gm4dni7hlzkcqqylii7toy: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11840,6 +12951,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 + '@types/node': 18.11.13 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -12023,6 +13135,12 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript/4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + /typewise-core/1.2.0: resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} dev: false @@ -12115,6 +13233,17 @@ packages: isobject: 3.0.1 dev: false + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-browserslist-db/1.0.5_browserslist@4.21.3: resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} hasBin: true @@ -12170,6 +13299,14 @@ packages: querystring: 0.2.0 dev: false + /use-sync-external-store/1.2.0_react@18.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: true + /use/3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} engines: {node: '>=0.10.0'} @@ -12292,6 +13429,36 @@ packages: xml-name-validator: 3.0.0 dev: true + /wagmi/0.8.10_jvlfdwijrklnrxx2cuazqrvqtu: + resolution: {integrity: sha512-svS/Debs6maJX3TlPDXNo+UDfZn8VCHzN2xcMMjPjcu2Z9k2iwFwC0TMLxM1itluzrTcw9n8F8E+f6gb+Aw+EQ==} + peerDependencies: + ethers: '>=5.5.1' + react: '>=17.0.0' + dependencies: + '@coinbase/wallet-sdk': 3.6.2 + '@tanstack/query-sync-storage-persister': 4.19.1 + '@tanstack/react-query': 4.19.1_react@18.2.0 + '@tanstack/react-query-persist-client': 4.19.1_tbzjkhe5jt5eajidrzbcozbyna + '@wagmi/core': 0.7.9_uvsxu4ihzaiezctz7bt3hdam3q + '@walletconnect/ethereum-provider': 1.8.0 + abitype: 0.1.8_typescript@4.9.3 + ethers: 5.6.9 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + transitivePeerDependencies: + - '@babel/core' + - '@tanstack/query-core' + - bufferutil + - debug + - encoding + - immer + - react-dom + - react-native + - supports-color + - typescript + - utf-8-validate + dev: true + /wait-on/6.0.1: resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} @@ -13186,6 +14353,15 @@ packages: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} dev: true + /whatwg-url-without-unicode/8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} + dependencies: + buffer: 5.7.1 + punycode: 2.1.1 + webidl-conversions: 5.0.0 + dev: true + /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -13215,7 +14391,6 @@ packages: /which-module/2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: false /which-typed-array/1.1.8: resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} @@ -13271,6 +14446,15 @@ packages: string-width: 1.0.2 strip-ansi: 3.0.1 + /wrap-ansi/5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -13332,6 +14516,35 @@ packages: utf-8-validate: optional: true + /ws/7.5.3: + resolution: {integrity: sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws/8.11.0_22kvxa7zeyivx4jp72v2w3pkvy: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.6 + utf-8-validate: 5.0.9 + dev: true + /xhr-request-promise/0.1.3: resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} dependencies: @@ -13393,6 +14606,10 @@ packages: /y18n/3.2.2: resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + /y18n/4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -13416,6 +14633,13 @@ packages: engines: {node: '>= 6'} dev: false + /yargs-parser/13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + /yargs-parser/2.4.1: resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==} dependencies: @@ -13467,6 +14691,21 @@ packages: yargs-parser: 8.1.0 dev: false + /yargs/13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 13.1.2 + dev: true + /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -13526,6 +14765,22 @@ packages: ethers: 5.6.9 dev: true + /zustand/4.1.5_react@18.2.0: + resolution: {integrity: sha512-PsdRT8Bvq22Yyh1tvpgdHNE7OAeFKqJXUxtJvj1Ixw2B9O2YZ1M34ImQ+xyZah4wZrR4lENMoDUutKPpyXCQ/Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + dependencies: + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + github.com/ethereumjs/ethereumjs-abi/ee3994657fa7a427238e6ba92a84d0b529bbcde0: resolution: {tarball: https://codeload.github.com/ethereumjs/ethereumjs-abi/tar.gz/ee3994657fa7a427238e6ba92a84d0b529bbcde0} name: ethereumjs-abi @@ -13533,4 +14788,3 @@ packages: dependencies: bn.js: 4.12.0 ethereumjs-util: 6.2.1 - dev: false