diff --git a/.browserlistrc b/.browserlistrc
new file mode 100644
index 000000000..617929258
--- /dev/null
+++ b/.browserlistrc
@@ -0,0 +1,7 @@
+last 1 Chrome version
+last 1 Firefox version
+last 2 Edge major versions
+last 2 Safari major version
+last 2 iOS major versions
+Firefox ESR
+not IE 9-11
\ No newline at end of file
diff --git a/.env b/.env
new file mode 100644
index 000000000..154aa821b
--- /dev/null
+++ b/.env
@@ -0,0 +1,2 @@
+VITE_WALLET_CONNECT_PROJECT_ID=
+VITE_INFURA_ID=
diff --git a/.eslintrc.json b/.eslintrc.json
index 35ea19bb3..4dcc7dca2 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -6,6 +6,7 @@
"formatjs",
"unused-imports",
"simple-import-sort",
+ "import",
"prettier"
],
"overrides": [
@@ -27,24 +28,29 @@
}
],
"react/react-in-jsx-scope": "off",
+ "no-empty": ["error", { "allowEmptyCatch": true }],
// Unused imports rules
"unused-imports/no-unused-imports": "error",
- "unused-imports/no-unused-vars": "warn",
+ "unused-imports/no-unused-vars": [
+ "warn",
+ {
+ "varsIgnorePattern": "^_",
+ "args": "none",
+ "argsIgnorePattern": "^_",
+ "ignoreRestSiblings": true
+ }
+ ],
// Import ordering rules
"simple-import-sort/imports": [
"warn",
{
"groups": [
- // Side effect imports
["^\\u0000"],
- // React Package(s) comes first as seperate group
["^react(-dom(/client)?)?$"],
- // All other imports
["^@?\\w"],
["^((?!\\u0000$)|/.*|$)"],
["^\\."],
- // Type imports: keep these last!
["^@?\\w.*\\u0000$"],
["^.*\\u0000$"],
["^\\..*\\u0000$"]
@@ -54,6 +60,7 @@
// import types rules
"@typescript-eslint/consistent-type-imports": "error",
+ "import/consistent-type-specifier-style": ["error", "prefer-top-level"],
// FormatJS rules
"formatjs/enforce-default-message": ["error", "literal"],
diff --git a/.gitignore b/.gitignore
index 51b9af526..94d719317 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,6 @@ testem.log
# System Files
.DS_Store
Thumbs.db
+
+# env
+.env.local
\ No newline at end of file
diff --git a/apps/.gitkeep b/apps/oeth/public/.gitkeep
similarity index 100%
rename from apps/.gitkeep
rename to apps/oeth/public/.gitkeep
diff --git a/apps/oeth/public/favicon.ico b/apps/oeth/public/favicon.ico
deleted file mode 100644
index 317ebcb23..000000000
Binary files a/apps/oeth/public/favicon.ico and /dev/null differ
diff --git a/apps/oeth/src/App.tsx b/apps/oeth/src/App.tsx
new file mode 100644
index 000000000..999231de7
--- /dev/null
+++ b/apps/oeth/src/App.tsx
@@ -0,0 +1,39 @@
+import { Container, Stack } from '@mui/material';
+import { HistoryView } from '@origin/oeth/history';
+import { SwapView } from '@origin/oeth/swap';
+import { WrapView } from '@origin/oeth/wrap';
+import { Route, Routes } from 'react-router-dom';
+
+import { ApyHeader } from './components/ApyHeader';
+import { Topnav } from './components/Topnav';
+
+export function App() {
+ return (
+
+
+
+
+
+
+ } />
+ } />
+ } />
+ } />
+
+
+
+
+ );
+}
diff --git a/apps/oeth/src/clients/index.ts b/apps/oeth/src/clients/index.ts
new file mode 100644
index 000000000..a116ec85e
--- /dev/null
+++ b/apps/oeth/src/clients/index.ts
@@ -0,0 +1,2 @@
+export * from './reactQuery';
+export * from './wagmi';
diff --git a/apps/oeth/src/clients/reactQuery.ts b/apps/oeth/src/clients/reactQuery.ts
new file mode 100644
index 000000000..b29dac653
--- /dev/null
+++ b/apps/oeth/src/clients/reactQuery.ts
@@ -0,0 +1,5 @@
+import { QueryClient } from '@tanstack/react-query';
+
+export const queryClient = new QueryClient({
+ defaultOptions: { queries: { staleTime: 1000 * 60 * 20 } },
+});
diff --git a/apps/oeth/src/clients/wagmi.ts b/apps/oeth/src/clients/wagmi.ts
new file mode 100644
index 000000000..5c807f52c
--- /dev/null
+++ b/apps/oeth/src/clients/wagmi.ts
@@ -0,0 +1,63 @@
+import { connectorsForWallets } from '@rainbow-me/rainbowkit';
+import {
+ argentWallet,
+ braveWallet,
+ coinbaseWallet,
+ imTokenWallet,
+ injectedWallet,
+ ledgerWallet,
+ metaMaskWallet,
+ rainbowWallet,
+ safeWallet,
+ walletConnectWallet,
+} from '@rainbow-me/rainbowkit/wallets';
+import { configureChains, createConfig } from 'wagmi';
+import { goerli, localhost, mainnet } from 'wagmi/chains';
+import { infuraProvider } from 'wagmi/providers/infura';
+import { publicProvider } from 'wagmi/providers/public';
+
+const VITE_WALLET_CONNECT_PROJECT_ID = import.meta.env
+ .VITE_WALLET_CONNECT_PROJECT_ID;
+const VITE_INFURA_ID = import.meta.env.VITE_INFURA_ID;
+
+export const { chains, publicClient, webSocketPublicClient } = configureChains(
+ [mainnet, goerli, localhost],
+ [infuraProvider({ apiKey: VITE_INFURA_ID }), publicProvider()],
+);
+
+const connectors = connectorsForWallets([
+ {
+ groupName: 'Recommended',
+ wallets: [
+ metaMaskWallet({
+ chains,
+ shimDisconnect: true,
+ projectId: VITE_WALLET_CONNECT_PROJECT_ID,
+ }),
+ ledgerWallet({ chains, projectId: VITE_WALLET_CONNECT_PROJECT_ID }),
+ walletConnectWallet({
+ chains,
+ projectId: VITE_WALLET_CONNECT_PROJECT_ID,
+ }),
+ coinbaseWallet({ appName: 'mStable', chains }),
+ ],
+ },
+ {
+ groupName: 'Others',
+ wallets: [
+ injectedWallet({ chains, shimDisconnect: true }),
+ safeWallet({ chains }),
+ rainbowWallet({ chains, projectId: VITE_WALLET_CONNECT_PROJECT_ID }),
+ braveWallet({ chains, shimDisconnect: true }),
+ argentWallet({ chains, projectId: VITE_WALLET_CONNECT_PROJECT_ID }),
+ imTokenWallet({ chains, projectId: VITE_WALLET_CONNECT_PROJECT_ID }),
+ ],
+ },
+]);
+
+export const wagmiConfig = createConfig({
+ autoConnect: true,
+ connectors,
+ publicClient,
+ webSocketPublicClient,
+});
diff --git a/apps/oeth/src/components/App.tsx b/apps/oeth/src/components/App.tsx
deleted file mode 100644
index 45621181b..000000000
--- a/apps/oeth/src/components/App.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { HistoryView, SwapView, WrapView } from '@origin/defi/oeth';
-import { Route, Routes } from 'react-router-dom';
-
-import { Layout } from './Layout';
-
-export function App() {
- return (
-
- }>
- } />
- } />
- } />
- } />
-
-
- );
-}
diff --git a/apps/oeth/src/components/ApyHeader.tsx b/apps/oeth/src/components/ApyHeader.tsx
new file mode 100644
index 000000000..ad87e571b
--- /dev/null
+++ b/apps/oeth/src/components/ApyHeader.tsx
@@ -0,0 +1,233 @@
+import React, { useState } from 'react';
+
+import {
+ alpha,
+ Box,
+ Divider,
+ IconButton,
+ Menu,
+ MenuItem,
+ Stack,
+ Typography,
+} from '@mui/material';
+import { Icon } from '@origin/shared/components';
+import { tokens } from '@origin/shared/contracts';
+import { useIntl } from 'react-intl';
+import { useAccount, useBalance } from 'wagmi';
+
+const days = [7, 30];
+
+export function ApyHeader() {
+ const intl = useIntl();
+ const [selectedPeriod, setSelectedPeriod] = useState(30);
+ const [anchorEl, setAnchorEl] = React.useState(null);
+ const { address } = useAccount();
+ const { data: oethBalance } = useBalance({
+ address,
+ token: tokens.mainnet.OUSD.address,
+ watch: true,
+ });
+
+ const handleClose = () => {
+ setAnchorEl(null);
+ };
+
+ return (
+ <>
+
+
+
+
+ {intl.formatMessage(
+ { defaultMessage: '{days} day trailing APY' },
+ { days: selectedPeriod },
+ )}
+
+
+
+ {intl.formatNumber(6.71 / 100, {
+ minimumFractionDigits: 2,
+ style: 'percent',
+ })}
+
+ setAnchorEl(e.currentTarget)}
+ sx={{
+ backgroundColor: (theme) =>
+ alpha(theme.palette.common.white, 0.15),
+ marginInlineStart: 1,
+ alignSelf: 'center',
+ position: 'relative',
+ height: '26px',
+ borderRadius: '100%',
+ top: '-2px',
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function ValueContainer({
+ text,
+ value,
+ icon,
+}: {
+ text: string;
+ value: string;
+ icon?: string;
+}) {
+ return (
+
+
+ {text}
+
+
+ {icon ? (
+
+ ) : undefined}
+
+ {value}
+
+
+ );
+}
diff --git a/apps/oeth/src/components/Layout.tsx b/apps/oeth/src/components/Layout.tsx
deleted file mode 100644
index 5589d5111..000000000
--- a/apps/oeth/src/components/Layout.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import { Container } from '@mui/material';
-import { TopNav } from '@origin/shared/components';
-import { useIntl } from 'react-intl';
-import { Outlet } from 'react-router-dom';
-
-export function Layout() {
- const intl = useIntl();
-
- return (
- <>
-
-
-
-
- >
- );
-}
diff --git a/apps/oeth/src/components/Topnav.tsx b/apps/oeth/src/components/Topnav.tsx
new file mode 100644
index 000000000..ed9c2148b
--- /dev/null
+++ b/apps/oeth/src/components/Topnav.tsx
@@ -0,0 +1,208 @@
+import { useState } from 'react';
+
+import {
+ alpha,
+ Box,
+ Divider,
+ Link as MuiLink,
+ Tab,
+ Tabs,
+ useTheme,
+} from '@mui/material';
+import { OpenAccountModalButton } from '@origin/shared/providers';
+import { useIntl } from 'react-intl';
+import { Link } from 'react-router-dom';
+
+import type { BoxProps } from '@mui/material';
+
+export function Topnav(props: BoxProps) {
+ const theme = useTheme();
+ const intl = useIntl();
+ const [value, setValue] = useState(0);
+
+ return (
+
+ ({
+ '& img': {
+ maxHeight: {
+ xs: '1rem',
+ md: '1.5rem',
+ },
+ maxWidth: {
+ xs: theme.typography.pxToRem(100),
+ sm: theme.typography.pxToRem(120),
+ md: theme.typography.pxToRem(180),
+ },
+ },
+ })}
+ onClick={() => setValue(0)}
+ >
+
+
+ setValue(value)}
+ sx={{
+ order: {
+ xs: 2,
+ md: 0,
+ },
+ gridColumn: {
+ xs: 'span 2',
+ md: 'span 1',
+ },
+ backgroundColor: 'transparent',
+ minHeight: 0,
+ overflow: 'visible',
+ '& .MuiTabs-fixed': {
+ overflow: 'visible !important',
+ },
+ fontSize: {
+ xs: '0.875rem',
+ md: '1rem',
+ },
+ '& .MuiTabs-flexContainer': {
+ justifyContent: {
+ xs: 'center',
+ md: 'flex-start',
+ },
+ },
+ }}
+ value={value}
+ >
+ {[
+ intl.formatMessage({ defaultMessage: 'Swap' }),
+ intl.formatMessage({ defaultMessage: 'Wrap' }),
+ intl.formatMessage({ defaultMessage: 'History' }),
+ ].map((tab) => (
+
+ `linear-gradient(90deg, ${alpha(
+ theme.palette.primary.main,
+ 0.4,
+ )} 0%, ${alpha(theme.palette.primary.dark, 0.4)} 100%)`,
+ position: 'absolute',
+ left: 0,
+ bottom: 0,
+ zIndex: 2,
+ },
+ }}
+ >
+ ))}
+
+
+ a': {
+ fontSize: {
+ xs: '0.75rem',
+ md: '1rem',
+ },
+ color: (theme) => theme.palette.primary.contrastText,
+ lineHeight: (theme) => theme.spacing(3),
+ },
+ }}
+ >
+ theme.shadows['24'],
+ display: 'grid',
+ placeContent: 'center',
+ paddingInline: {
+ md: 3,
+ xs: 2,
+ },
+ fontFamily: 'Inter',
+ fontStyle: 'normal',
+ fontWeight: 500,
+ background: ` linear-gradient(0deg, ${alpha(
+ theme.palette.common.white,
+ 0.05,
+ )} 0%, ${alpha(theme.palette.common.white, 0.05)} 100%), ${
+ theme.palette.background.paper
+ };`,
+ '&:hover': {
+ background: (theme) => theme.palette.background.paper,
+ backgroundImage: 'none',
+ },
+ }}
+ >
+ {theme.breakpoints.down('md')
+ ? intl.formatMessage({ defaultMessage: 'IPFS' })
+ : intl.formatMessage({ defaultMessage: 'View on IPFS' })}
+
+
+
+
+
+ );
+}
diff --git a/apps/oeth/src/components/index.tsx b/apps/oeth/src/components/index.tsx
deleted file mode 100644
index 9342f378e..000000000
--- a/apps/oeth/src/components/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export * from './App';
\ No newline at end of file
diff --git a/apps/oeth/src/env.d.ts b/apps/oeth/src/env.d.ts
new file mode 100644
index 000000000..147044ddc
--- /dev/null
+++ b/apps/oeth/src/env.d.ts
@@ -0,0 +1,10 @@
+///
+
+interface ImportMetaEnv {
+ readonly VITE_WALLET_CONNECT_PROJECT_ID: string;
+ readonly VITE_INFURA_ID: string;
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
diff --git a/apps/oeth/src/lang/en.json b/apps/oeth/src/lang/en.json
index 2654cb997..b3f86c1e0 100644
--- a/apps/oeth/src/lang/en.json
+++ b/apps/oeth/src/lang/en.json
@@ -1,8 +1,146 @@
{
+ "+U6ozc": {
+ "defaultMessage": "Type"
+ },
+ "+vVZ/G": {
+ "defaultMessage": "Connect"
+ },
+ "/23BOU": {
+ "defaultMessage": "Pending yield"
+ },
+ "0fR+fE": {
+ "defaultMessage": "Route"
+ },
+ "52pR3B": {
+ "defaultMessage": "Swap via {name}"
+ },
+ "67ACiw": {
+ "defaultMessage": "Liquid Staked Ether 2.0"
+ },
+ "BY343C": {
+ "defaultMessage": "Change"
+ },
+ "CcqmCh": {
+ "defaultMessage": "OETH Balance"
+ },
+ "JCo6tU": {
+ "defaultMessage": "WETH"
+ },
+ "JrepQU": {
+ "defaultMessage": "Gas:"
+ },
+ "NXI/XL": {
+ "defaultMessage": "Auto"
+ },
+ "O1F5Cx": {
+ "defaultMessage": "Connect your wallet to see your history"
+ },
+ "P7PLVj": {
+ "defaultMessage": "Date"
+ },
+ "PzlMqG": {
+ "defaultMessage": "Best"
+ },
+ "QDdmJX": {
+ "defaultMessage": "Swap for {name}"
+ },
+ "SSCpzG": {
+ "defaultMessage": "Wrapped wOETH is a non-rebasing tokenized vault that appreciates in value instead of growing in number."
+ },
+ "TE51b7": {
+ "defaultMessage": "Export CSV"
+ },
+ "U0+mZs": {
+ "defaultMessage": "Frax Ether"
+ },
+ "V/q7w4": {
+ "defaultMessage": "Finding the best route..."
+ },
+ "VNvqEh": {
+ "defaultMessage": "stETH"
+ },
+ "WwtFYK": {
+ "defaultMessage": "frxETH"
+ },
+ "YnftYz": {
+ "defaultMessage": "Wait time:"
+ },
+ "ZmLuI/": {
+ "defaultMessage": "Rate:"
+ },
+ "ZrmBE1": {
+ "defaultMessage": "{days} day trailing APY"
+ },
+ "aA9zvD": {
+ "defaultMessage": "The best swap route factors in the best price after transaction costs"
+ },
+ "aWpBzj": {
+ "defaultMessage": "Show more"
+ },
+ "c0b5XV": {
+ "defaultMessage": "Rate"
+ },
+ "cOB9Jx": {
+ "defaultMessage": "Yield"
+ },
+ "djJp6c": {
+ "defaultMessage": "History"
+ },
+ "eTeBsj": {
+ "defaultMessage": "Price tolerance"
+ },
+ "gcuDcH": {
+ "defaultMessage": "Sent"
+ },
+ "hMFTdI": {
+ "defaultMessage": "Gas Price"
+ },
+ "i8dYu2": {
+ "defaultMessage": "GWEI"
+ },
+ "kZcqo0": {
+ "defaultMessage": "%"
+ },
+ "mt0/Cd": {
+ "defaultMessage": "Waiting time:"
+ },
+ "om9WOe": {
+ "defaultMessage": "rETH"
+ },
+ "pg4o1k": {
+ "defaultMessage": "Rocket Pool ETH"
+ },
+ "qIoHXA": {
+ "defaultMessage": "Lifetime earnings"
+ },
+ "qY1iOf": {
+ "defaultMessage": "{days} day trailing"
+ },
+ "r7kiOG": {
+ "defaultMessage": "Wrap"
+ },
+ "s8BnAC": {
+ "defaultMessage": "Swap"
+ },
+ "s8UwDT": {
+ "defaultMessage": "Wrapped Ether"
+ },
+ "sGU9Dr": {
+ "defaultMessage": "ETH"
+ },
+ "tio9Gt": {
+ "defaultMessage": "IPFS"
+ },
+ "xZIm6b": {
+ "defaultMessage": "Your transaction may be frontrun"
+ },
"xomxyH": {
"defaultMessage": "Welcome to DefiOeth!"
},
- "y6cogA": {
- "defaultMessage": "test OEth"
+ "z/wUXE": {
+ "defaultMessage": "Received"
+ },
+ "zbaTLV": {
+ "defaultMessage": "View on IPFS"
}
}
diff --git a/apps/oeth/src/lang/enUS.json b/apps/oeth/src/lang/enUS.json
index 688bdab96..2796fee5c 100644
--- a/apps/oeth/src/lang/enUS.json
+++ b/apps/oeth/src/lang/enUS.json
@@ -1,4 +1,50 @@
{
+ "+U6ozc": "Type",
+ "+vVZ/G": "Connect",
+ "/23BOU": "Pending yield",
+ "0fR+fE": "Route",
+ "52pR3B": "Swap via {name}",
+ "67ACiw": "Liquid Staked Ether 2.0",
+ "BY343C": "Change",
+ "CcqmCh": "OETH Balance",
+ "JCo6tU": "WETH",
+ "JrepQU": "Gas:",
+ "NXI/XL": "Auto",
+ "O1F5Cx": "Connect your wallet to see your history",
+ "P7PLVj": "Date",
+ "PzlMqG": "Best",
+ "QDdmJX": "Swap for {name}",
+ "SSCpzG": "Wrapped wOETH is a non-rebasing tokenized vault that appreciates in value instead of growing in number.",
+ "TE51b7": "Export CSV",
+ "U0+mZs": "Frax Ether",
+ "V/q7w4": "Finding the best route...",
+ "VNvqEh": "stETH",
+ "WwtFYK": "frxETH",
+ "YnftYz": "Wait time:",
+ "ZmLuI/": "Rate:",
+ "ZrmBE1": "{days} day trailing APY",
+ "aA9zvD": "The best swap route factors in the best price after transaction costs",
+ "aWpBzj": "Show more",
+ "c0b5XV": "Rate",
+ "cOB9Jx": "Yield",
+ "djJp6c": "History",
+ "eTeBsj": "Price tolerance",
+ "gcuDcH": "Sent",
+ "hMFTdI": "Gas Price",
+ "i8dYu2": "GWEI",
+ "kZcqo0": "%",
+ "mt0/Cd": "Waiting time:",
+ "om9WOe": "rETH",
+ "pg4o1k": "Rocket Pool ETH",
+ "qIoHXA": "Lifetime earnings",
+ "qY1iOf": "{days} day trailing",
+ "r7kiOG": "Wrap",
+ "s8BnAC": "Swap",
+ "s8UwDT": "Wrapped Ether",
+ "sGU9Dr": "ETH",
+ "tio9Gt": "IPFS",
+ "xZIm6b": "Your transaction may be frontrun",
"xomxyH": "Welcome to DefiOeth!",
- "y6cogA": "test OEth"
+ "z/wUXE": "Received",
+ "zbaTLV": "View on IPFS"
}
\ No newline at end of file
diff --git a/apps/oeth/src/main.tsx b/apps/oeth/src/main.tsx
index 5e65c7a48..39e46ad93 100644
--- a/apps/oeth/src/main.tsx
+++ b/apps/oeth/src/main.tsx
@@ -1,31 +1,42 @@
+import '@rainbow-me/rainbowkit/styles.css';
+import './polyfills';
+
import { StrictMode } from 'react';
import * as ReactDOM from 'react-dom/client';
-import { BrowserRouter } from 'react-router-dom';
-import { QueryClientProvider } from '@tanstack/react-query';
-import { queryClient } from '@origin/shared/data-access';
-import { theme } from '@origin/shared/theme';
+
import {
CssBaseline,
Experimental_CssVarsProvider as CssVarsProvider,
} from '@mui/material';
+import { theme } from '@origin/shared/theme';
+import { composeContexts } from '@origin/shared/utils';
+import { darkTheme, RainbowKitProvider } from '@rainbow-me/rainbowkit';
+import { QueryClientProvider } from '@tanstack/react-query';
import { IntlProvider } from 'react-intl';
+import { BrowserRouter } from 'react-router-dom';
+import { WagmiConfig } from 'wagmi';
+
+import { App } from './App';
+import { chains, queryClient, wagmiConfig } from './clients';
import { en } from './lang';
-import { App } from './components';
const root = ReactDOM.createRoot(
- document.getElementById('root') as HTMLElement
+ document.getElementById('root') as HTMLElement,
);
root.render(
-
-
-
-
-
-
-
-
-
-
-
-
+ composeContexts(
+ [
+ [StrictMode],
+ [IntlProvider, { messages: en, locale: 'en', defaultLocale: 'en' }],
+ [BrowserRouter],
+ [QueryClientProvider, { client: queryClient }],
+ [CssVarsProvider, { theme: theme, defaultMode: 'dark' }],
+ [WagmiConfig, { config: wagmiConfig }],
+ [RainbowKitProvider, { chains: chains, theme: darkTheme() }],
+ ],
+ <>
+
+
+ >,
+ ),
);
diff --git a/apps/oeth/src/polyfills.ts b/apps/oeth/src/polyfills.ts
new file mode 100644
index 000000000..6fcfffd6a
--- /dev/null
+++ b/apps/oeth/src/polyfills.ts
@@ -0,0 +1,8 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { Buffer } from 'buffer';
+
+window.global = window.global ?? window;
+window.Buffer = window.Buffer ?? Buffer;
+window.process = window.process ?? ({ env: {} } as any);
+
+export {};
diff --git a/apps/oeth/tsconfig.app.json b/apps/oeth/tsconfig.app.json
index e4322b551..fc0ac957a 100644
--- a/apps/oeth/tsconfig.app.json
+++ b/apps/oeth/tsconfig.app.json
@@ -6,7 +6,8 @@
},
"files": [
"../../node_modules/@nx/react/typings/cssmodule.d.ts",
- "../../node_modules/@nx/react/typings/image.d.ts"
+ "../../node_modules/@nx/react/typings/image.d.ts",
+ "../../libs/shared/theme/src/theme.d.ts"
],
"exclude": [
"src/**/*.spec.ts",
diff --git a/apps/oeth/tsconfig.json b/apps/oeth/tsconfig.json
index fdfab6c30..0b77af82e 100644
--- a/apps/oeth/tsconfig.json
+++ b/apps/oeth/tsconfig.json
@@ -4,7 +4,6 @@
"allowJs": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
- "strict": true,
"types": ["vite/client", "vitest"]
},
"files": [],
diff --git a/apps/oeth/vite.config.ts b/apps/oeth/vite.config.ts
index 89ae276f5..e1b3e9e4e 100644
--- a/apps/oeth/vite.config.ts
+++ b/apps/oeth/vite.config.ts
@@ -20,6 +20,15 @@ export default defineConfig({
host: 'localhost',
},
+ optimizeDeps: {
+ esbuildOptions: {
+ target: 'esnext',
+ supported: {
+ bigint: true,
+ },
+ },
+ },
+
plugins: [
svgr(),
react({
@@ -41,7 +50,7 @@ export default defineConfig({
viteStaticCopy({
targets: [
{
- src: path.resolve(__dirname, '../../libs/shared/assets/files/*'),
+ src: path.resolve(__dirname, '../../libs/shared/assets/files/**/*'),
dest: './images',
},
],
diff --git a/libs/.gitkeep b/apps/ousd/public/.gitkeep
similarity index 100%
rename from libs/.gitkeep
rename to apps/ousd/public/.gitkeep
diff --git a/apps/ousd/public/favicon.ico b/apps/ousd/public/favicon.ico
deleted file mode 100644
index 317ebcb23..000000000
Binary files a/apps/ousd/public/favicon.ico and /dev/null differ
diff --git a/apps/ousd/src/main.tsx b/apps/ousd/src/main.tsx
index 3c52a6263..b71db345e 100644
--- a/apps/ousd/src/main.tsx
+++ b/apps/ousd/src/main.tsx
@@ -1,18 +1,20 @@
import { StrictMode } from 'react';
import * as ReactDOM from 'react-dom/client';
-import { OUSDRoot } from './components';
-import { QueryClientProvider } from '@tanstack/react-query';
-import { queryClient } from '@origin/shared/data-access';
+
import {
CssBaseline,
Experimental_CssVarsProvider as CssVarsProvider,
} from '@mui/material';
+import { queryClient } from '@origin/shared/data-access';
import { theme } from '@origin/shared/theme';
+import { QueryClientProvider } from '@tanstack/react-query';
import { IntlProvider } from 'react-intl';
+
+import { OUSDRoot } from './components';
import { en } from './lang';
const root = ReactDOM.createRoot(
- document.getElementById('root') as HTMLElement
+ document.getElementById('root') as HTMLElement,
);
root.render(
@@ -24,5 +26,5 @@ root.render(
-
+ ,
);
diff --git a/apps/ousd/tsconfig.json b/apps/ousd/tsconfig.json
index fdfab6c30..0b77af82e 100644
--- a/apps/ousd/tsconfig.json
+++ b/apps/ousd/tsconfig.json
@@ -4,7 +4,6 @@
"allowJs": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
- "strict": true,
"types": ["vite/client", "vitest"]
},
"files": [],
diff --git a/libs/oeth/history/.babelrc b/libs/oeth/history/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/oeth/history/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/oeth/history/.eslintrc.json b/libs/oeth/history/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/oeth/history/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/oeth/history/README.md b/libs/oeth/history/README.md
new file mode 100644
index 000000000..70bea331f
--- /dev/null
+++ b/libs/oeth/history/README.md
@@ -0,0 +1,7 @@
+# oeth-history
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test oeth-history` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/oeth/history/project.json b/libs/oeth/history/project.json
new file mode 100644
index 000000000..031db8b96
--- /dev/null
+++ b/libs/oeth/history/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "oeth-history",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/oeth/history/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/oeth/history/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/oeth/history/src/components/HistoryButton.tsx b/libs/oeth/history/src/components/HistoryButton.tsx
new file mode 100644
index 000000000..b62a708fd
--- /dev/null
+++ b/libs/oeth/history/src/components/HistoryButton.tsx
@@ -0,0 +1,67 @@
+import { alpha, Box, Button } from '@mui/material';
+
+import type { BoxProps, ButtonProps } from '@mui/material';
+
+interface Props extends ButtonProps {
+ circle?: boolean;
+ selected?: boolean;
+}
+
+export function HistoryFilterButton({
+ children,
+ circle = false,
+ onClick,
+ selected = false,
+ sx,
+ ...rest
+}: Props) {
+ return (
+
+ );
+}
+
+function Circle(props: BoxProps) {
+ return (
+ theme.palette.background.default,
+ height: '0.5rem',
+ width: '0.5rem',
+ borderRadius: '100%',
+ ...props,
+ }}
+ />
+ );
+}
diff --git a/libs/oeth/history/src/components/HistoryCard.tsx b/libs/oeth/history/src/components/HistoryCard.tsx
new file mode 100644
index 000000000..c13d944c7
--- /dev/null
+++ b/libs/oeth/history/src/components/HistoryCard.tsx
@@ -0,0 +1,83 @@
+import { useState } from 'react';
+
+import { Box, Button, Stack, Typography } from '@mui/material';
+import { Card } from '@origin/shared/components';
+import { useIntl } from 'react-intl';
+
+import { HistoryFilterButton } from './HistoryButton';
+import { HistoryTable } from './HistoryTable';
+
+import type { ColumnFilter } from '@tanstack/react-table';
+
+export function HistoryCard() {
+ const [isConnected, setConnectionState] = useState(false);
+ const intl = useIntl();
+ const [filter, setFilter] = useState({
+ id: 'type',
+ value: [],
+ });
+
+ function filterRows(value: string) {
+ setFilter((prev) => {
+ if ((prev.value as string[]).includes(value)) {
+ return {
+ ...prev,
+ value: [...(prev.value as string[]).filter((val) => val !== value)],
+ };
+ } else {
+ return {
+ ...prev,
+ value: [...(prev.value as string[]), value],
+ };
+ }
+ });
+ }
+ return (
+
+ History
+
+ {[
+ intl.formatMessage({ defaultMessage: 'Received' }),
+ intl.formatMessage({ defaultMessage: 'Sent' }),
+ intl.formatMessage({ defaultMessage: 'Swap' }),
+ intl.formatMessage({ defaultMessage: 'Yield' }),
+ ].map((label) => (
+ filterRows(label.toLowerCase())}
+ >
+ {label}
+
+ ))}
+
+
+ {intl.formatMessage({ defaultMessage: 'Export CSV' })}
+
+
+ }
+ >
+ {isConnected ? (
+
+ ) : (
+
+
+ {intl.formatMessage({
+ defaultMessage: 'Connect your wallet to see your history',
+ })}
+
+
+
+ )}
+
+ );
+}
diff --git a/libs/oeth/history/src/components/HistoryTable.tsx b/libs/oeth/history/src/components/HistoryTable.tsx
new file mode 100644
index 000000000..2401bb7dc
--- /dev/null
+++ b/libs/oeth/history/src/components/HistoryTable.tsx
@@ -0,0 +1,166 @@
+import { useEffect, useMemo, useState } from 'react';
+
+import {
+ Box,
+ Pagination,
+ Stack,
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableRow,
+} from '@mui/material';
+import { LinkIcon, quantityFormat } from '@origin/shared/components';
+import {
+ createColumnHelper,
+ flexRender,
+ getCoreRowModel,
+ getFilteredRowModel,
+ getPaginationRowModel,
+ useReactTable,
+} from '@tanstack/react-table';
+import { useIntl } from 'react-intl';
+
+import type { ColumnFilter, ColumnFiltersState } from '@tanstack/react-table';
+
+type Filter = 'swap' | 'yield' | 'received' | 'sent';
+
+export interface HistoryRow {
+ date: Date;
+ type: Filter;
+ change: number;
+ balance: number;
+ link: string;
+}
+
+interface Props {
+ rows: HistoryRow[];
+ isLoading: boolean;
+ filter: ColumnFilter;
+}
+
+const columnHelper = createColumnHelper();
+
+export function HistoryTable({ rows, filter }: Props) {
+ const intl = useIntl();
+ const [columnFilters, setColumnFilters] = useState([]);
+ const columns = useMemo(
+ () => [
+ columnHelper.accessor('date', {
+ cell: (info) => intl.formatDate(info.getValue()),
+ header: intl.formatMessage({ defaultMessage: 'Date' }),
+ }),
+ columnHelper.accessor('type', {
+ id: 'type',
+ cell: (info) => info.getValue(),
+ header: intl.formatMessage({ defaultMessage: 'Type' }),
+ enableColumnFilter: true,
+ filterFn: (row, _, value) => {
+ if (!value.value.length) return true;
+ return value.value.includes(row.original.type);
+ },
+ }),
+ columnHelper.accessor('change', {
+ cell: (info) => intl.formatNumber(info.getValue(), quantityFormat),
+ header: intl.formatMessage({ defaultMessage: 'Change' }),
+ }),
+ columnHelper.accessor('balance', {
+ cell: (info) => (
+
+
+ {intl.formatNumber(info.getValue(), quantityFormat)}
+
+
+
+
+ ),
+ header: intl.formatMessage({ defaultMessage: 'OETH Balance' }),
+ }),
+ ],
+ [intl],
+ );
+
+ const table = useReactTable({
+ data: rows,
+ columns,
+ state: {
+ pagination: {
+ pageSize: 20,
+ pageIndex: 0,
+ },
+ columnFilters,
+ },
+ getCoreRowModel: getCoreRowModel(),
+ getPaginationRowModel: getPaginationRowModel(),
+ getFilteredRowModel: getFilteredRowModel(),
+ onColumnFiltersChange: setColumnFilters,
+ // add when we do server side pagination
+ // manualPagination: true,
+ pageCount: rows.length / 3,
+ // add when we do server side pagination
+ // onPaginationChange: setPagination
+ });
+
+ useEffect(() => {
+ table.getColumn('type')?.setFilterValue(filter);
+ }, [filter, table]);
+ return (
+
+
+
+ {table.getHeaderGroups().map((headerGroup) => (
+
+ {headerGroup.headers.map((header) => (
+
+ {flexRender(
+ header.column.columnDef.header,
+ header.getContext(),
+ )}
+
+ ))}
+
+ ))}
+
+
+ {table.getRowModel().rows.map((row) => (
+
+ {row.getVisibleCells().map((cell) => (
+
+ {flexRender(cell.column.columnDef.cell, cell.getContext())}
+
+ ))}
+
+ ))}
+
+
+ table.setPageIndex(page)}
+ />
+
+ );
+}
diff --git a/libs/oeth/history/src/index.ts b/libs/oeth/history/src/index.ts
new file mode 100644
index 000000000..286a630ac
--- /dev/null
+++ b/libs/oeth/history/src/index.ts
@@ -0,0 +1 @@
+export * from './views/HistoryView';
diff --git a/libs/oeth/history/src/views/HistoryView.tsx b/libs/oeth/history/src/views/HistoryView.tsx
new file mode 100644
index 000000000..be369b9e6
--- /dev/null
+++ b/libs/oeth/history/src/views/HistoryView.tsx
@@ -0,0 +1,5 @@
+import { HistoryCard } from '../components/HistoryCard';
+
+export function HistoryView() {
+ return ;
+}
diff --git a/libs/oeth/history/tsconfig.json b/libs/oeth/history/tsconfig.json
new file mode 100644
index 000000000..90fcf85c5
--- /dev/null
+++ b/libs/oeth/history/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/oeth/history/tsconfig.lib.json b/libs/oeth/history/tsconfig.lib.json
new file mode 100644
index 000000000..78f9e0f1c
--- /dev/null
+++ b/libs/oeth/history/tsconfig.lib.json
@@ -0,0 +1,24 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts",
+ "../../../libs/shared/theme/src/theme.d.ts"
+ ],
+ "exclude": [
+ "jest.config.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.js",
+ "src/**/*.test.js",
+ "src/**/*.spec.jsx",
+ "src/**/*.test.jsx"
+ ],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/libs/oeth/swap/.babelrc b/libs/oeth/swap/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/oeth/swap/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/oeth/swap/.eslintrc.json b/libs/oeth/swap/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/oeth/swap/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/oeth/swap/README.md b/libs/oeth/swap/README.md
new file mode 100644
index 000000000..ec3526d64
--- /dev/null
+++ b/libs/oeth/swap/README.md
@@ -0,0 +1,7 @@
+# oeth-swap
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test oeth-swap` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/oeth/swap/project.json b/libs/oeth/swap/project.json
new file mode 100644
index 000000000..377e5422d
--- /dev/null
+++ b/libs/oeth/swap/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "oeth-swap",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/oeth/swap/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/oeth/swap/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/oeth/swap/src/components/BestRoutes.tsx b/libs/oeth/swap/src/components/BestRoutes.tsx
new file mode 100644
index 000000000..2484e3889
--- /dev/null
+++ b/libs/oeth/swap/src/components/BestRoutes.tsx
@@ -0,0 +1,33 @@
+import { Box } from '@mui/material';
+
+import { SwapRouteCard } from './SwapRouteCard';
+
+import type { Route } from './SwapRoute';
+
+interface Props {
+ routes: Route[];
+ selected: number;
+ onSelect: (index: number) => void;
+}
+
+export function BestRoutes({ routes, selected, onSelect }: Props) {
+ return (
+
+ {routes.slice(0, 2).map((route, index) => (
+ onSelect(index)}
+ route={route}
+ />
+ ))}
+
+ );
+}
diff --git a/libs/oeth/swap/src/components/GasPopover.tsx b/libs/oeth/swap/src/components/GasPopover.tsx
new file mode 100644
index 000000000..2fbdfcb30
--- /dev/null
+++ b/libs/oeth/swap/src/components/GasPopover.tsx
@@ -0,0 +1,206 @@
+import { useState } from 'react';
+
+import {
+ alpha,
+ Box,
+ Button,
+ FormControl,
+ FormHelperText,
+ IconButton,
+ InputAdornment,
+ InputBase,
+ InputLabel,
+ Popover,
+ Stack,
+ useTheme,
+} from '@mui/material';
+import { produce } from 'immer';
+import { useIntl } from 'react-intl';
+import { useFeeData } from 'wagmi';
+
+import { useSwapState } from '../state';
+
+import type { Theme } from '@mui/material';
+import type { ChangeEvent } from 'react';
+
+const defaultSlippage = 0.01;
+
+const gridStyles = {
+ display: 'grid',
+ gridTemplateColumns: (theme: Theme) => `1.5fr 1fr`,
+ gap: 1,
+ justifyContent: 'space-between',
+ alignItems: 'center',
+};
+
+export function GasPopover() {
+ const theme = useTheme();
+ const intl = useIntl();
+ const [anchorEl, setAnchorEl] = useState(null);
+ const [{ slippage }, setSwapState] = useSwapState();
+ const { data: feeData } = useFeeData({ formatUnits: 'gwei' });
+
+ const handleSlippageChange = (evt: ChangeEvent) => {};
+
+ return (
+ <>
+ setAnchorEl(e.currentTarget)}
+ data-testid="gas-popover-button"
+ >
+
+
+ setAnchorEl(null)}
+ anchorOrigin={{
+ vertical: 'bottom',
+ horizontal: 'center',
+ }}
+ transformOrigin={{
+ vertical: 'top',
+ horizontal: 'right',
+ }}
+ sx={{
+ '& .MuiPaper-root.MuiPopover-paper': {
+ padding: 3,
+ boxSizing: 'border-box',
+ maxWidth: {
+ xs: '90vw',
+ md: '16.5rem',
+ },
+ width: '100%',
+ border: '1px solid',
+ borderColor: 'grey.700',
+ [theme.breakpoints.down('md')]: {
+ left: '0 !important',
+ right: 0,
+ marginInline: 'auto',
+ },
+ },
+ }}
+ >
+
+
+
+ {intl.formatMessage({ defaultMessage: 'Slippage' })}
+
+
+
+ {intl.formatMessage({ defaultMessage: '%' })}
+
+ }
+ />
+
+
+
+ {slippage > 1 ? (
+ theme.typography.pxToRem(12),
+ color: (theme) => theme.palette.warning.main,
+ fontWeight: 400,
+ fontStyle: 'normal',
+ }}
+ >
+ {intl.formatMessage({
+ defaultMessage: 'Your transaction may be frontrun',
+ })}
+
+ ) : null}
+
+
+
+ {intl.formatMessage({ defaultMessage: 'Gas Price' })}
+
+
+
+ {intl.formatMessage({ defaultMessage: 'GWEI' })}
+
+ }
+ />
+
+
+
+
+ >
+ );
+}
diff --git a/libs/oeth/swap/src/components/SwapInfo.tsx b/libs/oeth/swap/src/components/SwapInfo.tsx
new file mode 100644
index 000000000..2249ca993
--- /dev/null
+++ b/libs/oeth/swap/src/components/SwapInfo.tsx
@@ -0,0 +1,43 @@
+import { Box, Tooltip, Typography } from '@mui/material';
+import { useIntl } from 'react-intl';
+
+import type { Theme } from '@mui/material';
+
+export function SwapInfo() {
+ const intl = useIntl();
+ return (
+
+ {intl.formatMessage({
+ defaultMessage:
+ 'The best swap route factors in the best price after transaction costs',
+ })}
+
+ }
+ componentsProps={{
+ tooltip: {
+ sx: {
+ paddingInline: 2,
+ paddingBlock: 1.5,
+ borderRadius: 2,
+ border: '1px solid',
+ borderColor: (theme) => theme.palette.grey[500],
+ boxShadow: (theme: Theme) => theme.shadows[23],
+ },
+ },
+ }}
+ >
+ theme.typography.pxToRem(12),
+ height: (theme) => theme.typography.pxToRem(12),
+ color: (theme) => theme.palette.text.secondary,
+ }}
+ >
+
+ );
+}
diff --git a/libs/oeth/swap/src/components/SwapRoute.tsx b/libs/oeth/swap/src/components/SwapRoute.tsx
new file mode 100644
index 000000000..853e896b7
--- /dev/null
+++ b/libs/oeth/swap/src/components/SwapRoute.tsx
@@ -0,0 +1,112 @@
+import { useState } from 'react';
+
+import { Skeleton, Stack, Typography } from '@mui/material';
+import { Card, cardStyles } from '@origin/shared/components';
+import { useIntl } from 'react-intl';
+
+import { BestRoutes } from './BestRoutes';
+import { SwapInfo } from './SwapInfo';
+import { SwapRouteAccordion } from './SwapRouteAccordion';
+
+interface Swap {
+ type: 'swap';
+}
+export interface Redeem {
+ type: 'redeem';
+ tokenAbbreviation: string;
+ waitTime: string;
+}
+
+export type Route = {
+ name: string;
+ icon: string | string[];
+ quantity: number;
+ value: number;
+ rate: number;
+ transactionCost: number;
+} & (Swap | Redeem);
+
+interface Props {
+ isLoading: boolean;
+ routes: Route[];
+}
+
+export function SwapRoute({ isLoading = false, routes }: Props) {
+ const intl = useIntl();
+ const [selectedRoute, setSelectedRoute] = useState(0);
+
+ const hasContent = routes.length > 0;
+ return (
+ theme.palette.background.default,
+ backgroundColor: 'grey.900',
+ }}
+ title={
+ isLoading ? (
+ theme.typography.pxToRem(12),
+ display: 'flex',
+ alignItems: 'center',
+ }}
+ >
+ theme.palette.primary.contrastText,
+ }}
+ />
+ {intl.formatMessage({
+ defaultMessage: 'Finding the best route...',
+ })}
+
+ ) : (
+
+ {intl.formatMessage({ defaultMessage: 'Route' })}
+
+
+ )
+ }
+ sxCardTitle={{ borderBottom: 'none', paddingBlock: 1, paddingInline: 2 }}
+ sxCardContent={{
+ ...(hasContent
+ ? cardStyles
+ : {
+ p: 0,
+ paddingBlock: 0,
+ paddingInline: 0,
+ '&:last-child': { pb: 0 },
+ }),
+ }}
+ >
+ {hasContent ? (
+ <>
+ setSelectedRoute(index)}
+ />
+ setSelectedRoute(index)}
+ sx={{ mt: 2 }}
+ />
+ >
+ ) : undefined}
+
+ );
+}
diff --git a/libs/oeth/swap/src/components/SwapRouteAccordion.tsx b/libs/oeth/swap/src/components/SwapRouteAccordion.tsx
new file mode 100644
index 000000000..96d6816cc
--- /dev/null
+++ b/libs/oeth/swap/src/components/SwapRouteAccordion.tsx
@@ -0,0 +1,112 @@
+import {
+ Accordion,
+ AccordionDetails,
+ AccordionSummary,
+ Box,
+ Stack,
+ Typography,
+} from '@mui/material';
+import { useIntl } from 'react-intl';
+
+import { SwapRouteAccordionItem } from './SwapRouteAccordionItem';
+
+import type { SxProps } from '@mui/material';
+
+import type { Route } from './SwapRoute';
+
+interface Props {
+ routes: Route[];
+ selected: number;
+ onSelect: (index: number) => void;
+ sx?: SxProps;
+}
+
+export function SwapRouteAccordion({ routes, selected, onSelect, sx }: Props) {
+ const intl = useIntl();
+ return (
+
+ theme.typography.pxToRem(14),
+ display: 'flex',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ '& .MuiAccordionSummary-content': {
+ margin: 0,
+ },
+ padding: 0,
+ '&.Mui-expanded': {
+ minHeight: 0,
+ '& img': {
+ transform: 'rotate(-180deg)',
+ },
+ },
+ }}
+ >
+
+ {intl.formatMessage({ defaultMessage: 'Show more' })}
+
+
+ theme.typography.pxToRem(12),
+ width: (theme) => theme.typography.pxToRem(12),
+ alignSelf: 'center',
+ }}
+ >
+
+ theme.spacing(-1),
+ '&:before': {
+ content: '""',
+ width: (theme) => `calc(100% + ${theme.spacing(2)})`,
+ position: 'absolute',
+ left: (theme) => theme.spacing(-1),
+ height: '1px',
+ borderBlockEnd: '1px solid',
+ display: 'block',
+ borderColor: 'grey.800',
+ },
+ }}
+ >
+
+ {routes.slice(2).map((route, index) => (
+
+ ))}
+
+
+
+ );
+}
diff --git a/libs/oeth/swap/src/components/SwapRouteAccordionItem.tsx b/libs/oeth/swap/src/components/SwapRouteAccordionItem.tsx
new file mode 100644
index 000000000..2ee3f1c41
--- /dev/null
+++ b/libs/oeth/swap/src/components/SwapRouteAccordionItem.tsx
@@ -0,0 +1,133 @@
+import { alpha, Box, Stack, Typography, useTheme } from '@mui/material';
+import { currencyFormat, quantityFormat } from '@origin/shared/components';
+import { useIntl } from 'react-intl';
+
+import { SwapInfo } from './SwapInfo';
+
+import type { Route } from './SwapRoute';
+
+interface Props {
+ route: Route;
+ selected: number;
+ index: number;
+ onSelect: (index: number) => void;
+}
+
+export function SwapRouteAccordionItem({
+ route,
+ selected,
+ index,
+ onSelect,
+}: Props) {
+ const theme = useTheme();
+ const intl = useIntl();
+ return (
+
+ `linear-gradient(${theme.palette.grey[800]}, ${
+ theme.palette.grey[800]
+ }) padding-box,
+ linear-gradient(90deg, ${alpha(
+ theme.palette.primary.main,
+ 0.4,
+ )} 0%, ${alpha(
+ theme.palette.primary.dark,
+ 0.4,
+ )} 100%) border-box;`,
+ },
+ ...(selected === index
+ ? {
+ borderColor: 'transparent',
+ background: (theme) =>
+ `linear-gradient(${theme.palette.grey[800]}, ${theme.palette.grey[800]}) padding-box,
+ linear-gradient(90deg, ${theme.palette.primary.main} 0%, ${theme.palette.primary.dark} 100%) border-box;`,
+ }
+ : {}),
+ }}
+ onClick={() => onSelect(index)}
+ role="button"
+ >
+
+
+ theme.typography.pxToRem(24),
+ width: (theme) => theme.typography.pxToRem(24),
+ }}
+ />
+
+
+ {intl.formatNumber(route.quantity, quantityFormat)}
+
+
+ ({intl.formatNumber(route.value, currencyFormat)})
+
+
+
+ {route.type === 'swap'
+ ? intl.formatMessage(
+ { defaultMessage: 'Swap via {name}' },
+ { name: route.name },
+ )
+ : intl.formatMessage(
+ { defaultMessage: 'Swap for {name}' },
+ { name: route.name },
+ )}
+
+
+
+
+
+ Rate
+
+
+
+ 1:{intl.formatNumber(route.rate, quantityFormat)}
+
+
+
+
+ Est gas:
+
+ ~{intl.formatNumber(route.transactionCost, currencyFormat)}
+
+
+
+
+
+ );
+}
diff --git a/libs/oeth/swap/src/components/SwapRouteCard.tsx b/libs/oeth/swap/src/components/SwapRouteCard.tsx
new file mode 100644
index 000000000..9c99910c2
--- /dev/null
+++ b/libs/oeth/swap/src/components/SwapRouteCard.tsx
@@ -0,0 +1,194 @@
+import { alpha, Box, Card, CardHeader, Stack, Typography } from '@mui/material';
+import { currencyFormat } from '@origin/shared/components';
+import { useIntl } from 'react-intl';
+
+import type { Route } from './SwapRoute';
+
+interface Props {
+ index: number;
+ selected: number;
+ onSelect: (index: number) => void;
+ route: Route;
+}
+
+export function SwapRouteCard({ index, selected, onSelect, route }: Props) {
+ const intl = useIntl();
+ return (
+ `1px solid ${theme.palette.grey[800]}`,
+ borderRadius: 1,
+ ...(selected === index
+ ? {
+ background: `linear-gradient(var(--mui-palette-grey-800), var(--mui-palette-grey-800)) padding-box,
+ linear-gradient(90deg, var(--mui-palette-primary-main) 0%, var(--mui-palette-primary-dark) 100%) border-box;`,
+ borderColor: 'transparent',
+ }
+ : {
+ '&:hover': {
+ borderColor: 'transparent',
+ background: (
+ theme,
+ ) => `linear-gradient(var(--mui-palette-grey-800), var(--mui-palette-grey-800)) padding-box,
+ linear-gradient(90deg, ${alpha(
+ theme.palette.primary.main,
+ 0.4,
+ )} 0%, ${alpha(
+ theme.palette.primary.dark,
+ 0.4,
+ )} 100%) border-box;`,
+ },
+ }),
+ }}
+ role="button"
+ onClick={() => onSelect(index)}
+ >
+
+
+
+
+ {route.quantity}
+
+ ({intl.formatNumber(route.value, currencyFormat)})
+
+
+
+ {index === 0 ? (
+ theme.shape.borderRadius,
+ background: (theme) => theme.palette.background.gradient1,
+ color: 'primary.contrastText',
+ fontSize: (theme) => theme.typography.pxToRem(12),
+ top: (theme) => theme.spacing(-3),
+ right: (theme) => theme.spacing(-2),
+ paddingInline: 1,
+ }}
+ >
+ {intl.formatMessage({ defaultMessage: 'Best' })}
+
+ ) : undefined}
+
+
+
+ ({intl.formatNumber(route.value, currencyFormat)})
+
+ >
+ }
+ >
+
+
+ {route.name}
+
+
+
+ {intl.formatMessage({ defaultMessage: 'Rate:' })}
+
+ 1:{route.rate}
+
+
+
+
+ {intl.formatMessage({
+ defaultMessage: 'Gas:',
+ })}
+
+
+ ~{intl.formatNumber(route.transactionCost, currencyFormat)}
+
+
+ {route.type === 'redeem' ? (
+
+
+ {intl.formatMessage({
+ defaultMessage: 'Wait time:',
+ })}
+
+ {/* TODO better logic for coloring -> prob time should come as a ms duration and getting it formated */}
+
+ ~{route.waitTime}
+
+
+ ) : undefined}
+
+
+ );
+}
diff --git a/libs/oeth/swap/src/constants.ts b/libs/oeth/swap/src/constants.ts
new file mode 100644
index 000000000..c444e05ec
--- /dev/null
+++ b/libs/oeth/swap/src/constants.ts
@@ -0,0 +1,10 @@
+import { tokens } from '@origin/shared/contracts';
+
+export const swapTokens = [
+ tokens.mainnet.ETH,
+ tokens.mainnet.OETH,
+ tokens.mainnet.WETH,
+ tokens.mainnet.stETH,
+ tokens.mainnet.frxETH,
+ tokens.mainnet.sfrxETH,
+];
diff --git a/libs/oeth/swap/src/index.ts b/libs/oeth/swap/src/index.ts
new file mode 100644
index 000000000..d29bf0360
--- /dev/null
+++ b/libs/oeth/swap/src/index.ts
@@ -0,0 +1 @@
+export * from './views/SwapView';
diff --git a/libs/oeth/swap/src/state.ts b/libs/oeth/swap/src/state.ts
new file mode 100644
index 000000000..7ddffd2a5
--- /dev/null
+++ b/libs/oeth/swap/src/state.ts
@@ -0,0 +1,33 @@
+import { useState } from 'react';
+
+import { tokens } from '@origin/shared/contracts';
+import { useDebouncedEffect } from '@react-hookz/web';
+import { produce } from 'immer';
+import { createContainer } from 'react-tracked';
+
+import type { Token } from '@origin/shared/contracts';
+
+export const { Provider: SwapProvider, useTracked: useSwapState } =
+ createContainer(() => {
+ const [state, setState] = useState({
+ amountIn: 0n,
+ tokenIn: tokens.mainnet.ETH as Token,
+ amountOut: 0n,
+ tokenOut: tokens.mainnet.OETH as Token,
+ slippage: 0.01,
+ });
+
+ useDebouncedEffect(
+ () => {
+ setState(
+ produce((draft) => {
+ draft.amountOut = draft.amountIn;
+ }),
+ );
+ },
+ [state.amountIn],
+ 1e3,
+ );
+
+ return [state, setState];
+ });
diff --git a/libs/oeth/swap/src/views/SwapView.tsx b/libs/oeth/swap/src/views/SwapView.tsx
new file mode 100644
index 000000000..4a0622ea5
--- /dev/null
+++ b/libs/oeth/swap/src/views/SwapView.tsx
@@ -0,0 +1,221 @@
+import { useState } from 'react';
+
+import { alpha, Box, IconButton, Stack } from '@mui/material';
+import { Card, TokenInput } from '@origin/shared/components';
+import { TokenSelectModal, usePrices } from '@origin/shared/providers';
+import { isNilOrEmpty } from '@origin/shared/utils';
+import { produce } from 'immer';
+import { useIntl } from 'react-intl';
+import { useAccount, useBalance } from 'wagmi';
+
+import { GasPopover } from '../components/GasPopover';
+import { SwapRoute } from '../components/SwapRoute';
+import { swapTokens } from '../constants';
+import { SwapProvider, useSwapState } from '../state';
+
+import type { IconButtonProps } from '@mui/material';
+import type { Token } from '@origin/shared/contracts';
+
+export const SwapView = () => (
+
+
+
+);
+
+function SwapViewWrapped() {
+ const intl = useIntl();
+ const { address, isConnected } = useAccount();
+ const [tokenModal, setTokenModal] = useState<'tokenIn' | 'tokenOut' | null>(
+ null,
+ );
+ const [{ amountIn, amountOut, tokenIn, tokenOut }, setSwapState] =
+ useSwapState();
+ const { data: prices, isLoading: isPriceLoading } = usePrices();
+ const { data: balTokenIn, isLoading: isBalTokenInLoading } = useBalance({
+ address,
+ token: tokenIn.address,
+ });
+ const { data: balTokenOut, isLoading: isBalTokenOutLoading } = useBalance({
+ address,
+ token: tokenOut.address,
+ });
+
+ const handleCloseSelectionModal = () => {
+ setTokenModal(null);
+ };
+
+ const handleSelectToken = (value: Token) => {
+ setSwapState(
+ produce((draft) => {
+ draft[tokenModal] = value;
+ }),
+ );
+ };
+
+ const handleExchangeTokens = () => {
+ setSwapState(
+ produce((draft) => {
+ draft.amountIn = 0n;
+ draft.amountOut = 0n;
+ const oldTokenOut = draft.tokenOut;
+ draft.tokenOut = draft.tokenIn;
+ draft.tokenIn = oldTokenOut;
+ }),
+ );
+ };
+
+ return (
+ <>
+
+ {intl.formatMessage({ defaultMessage: 'Swap' })}
+
+
+ }
+ >
+
+ {
+ setSwapState(
+ produce((draft) => {
+ draft.amountIn = val;
+ }),
+ );
+ }}
+ balance={balTokenIn?.value}
+ isBalanceLoading={isBalTokenInLoading}
+ token={tokenIn}
+ onTokenClick={() => {
+ setTokenModal('tokenIn');
+ }}
+ tokenPriceUsd={prices?.[tokenIn.symbol]}
+ isPriceLoading={isPriceLoading}
+ isConnected={isConnected}
+ sx={{
+ backgroundColor: 'grey.900',
+ padding: 2.875,
+ border: '1px solid',
+ borderColor: 'divider',
+ borderRadius: 1,
+ borderEndStartRadius: 0,
+ borderEndEndRadius: 0,
+ '&:hover, &:focus-within': {
+ borderColor: 'transparent',
+ borderStartStartRadius: (theme) => theme.shape.borderRadius,
+ borderStartEndRadius: (theme) => theme.shape.borderRadius,
+ },
+ '&:hover': {
+ background: (theme) =>
+ `linear-gradient(${theme.palette.grey[900]}, ${
+ theme.palette.grey[900]
+ }) padding-box,
+ linear-gradient(90deg, ${alpha(
+ theme.palette.primary.main,
+ 0.4,
+ )} 0%, ${alpha(
+ theme.palette.primary.dark,
+ 0.4,
+ )} 100%) border-box;`,
+ },
+ '&:focus-within': {
+ background: (theme) =>
+ `linear-gradient(${theme.palette.grey[900]}, ${theme.palette.grey[900]}) padding-box,
+ linear-gradient(90deg, var(--mui-palette-primary-main) 0%, var(--mui-palette-primary-dark) 100%) border-box;`,
+ },
+ }}
+ />
+ {
+ setTokenModal('tokenOut');
+ }}
+ tokenPriceUsd={prices?.[tokenOut.symbol]}
+ isPriceLoading={isPriceLoading}
+ inputProps={{ readOnly: true }}
+ isConnected={isConnected}
+ sx={{
+ border: '1px solid',
+ borderColor: 'divider',
+ borderTop: 0,
+ borderRadius: 1,
+ borderStartStartRadius: 0,
+ borderStartEndRadius: 0,
+ backgroundColor: (theme) => alpha(theme.palette.grey[400], 0.2),
+ padding: 2.875,
+ }}
+ />
+
+
+
+
+
+ >
+ );
+}
+
+function SwapButton(props: IconButtonProps) {
+ return (
+ theme.palette.background.paper,
+ strokeWidth: (theme) => theme.typography.pxToRem(2),
+ stroke: (theme) => theme.palette.grey[700],
+ backgroundColor: (theme) => theme.palette.divider,
+ '& img': {
+ transition: (theme) => theme.transitions.create('transform'),
+ },
+ '&:hover': {
+ backgroundColor: (theme) => theme.palette.background.default,
+ '& img': {
+ transform: 'rotate(-180deg)',
+ },
+ },
+ ...props?.sx,
+ }}
+ >
+
+
+ );
+}
diff --git a/libs/oeth/swap/tsconfig.json b/libs/oeth/swap/tsconfig.json
new file mode 100644
index 000000000..90fcf85c5
--- /dev/null
+++ b/libs/oeth/swap/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/oeth/swap/tsconfig.lib.json b/libs/oeth/swap/tsconfig.lib.json
new file mode 100644
index 000000000..d11ac2d7a
--- /dev/null
+++ b/libs/oeth/swap/tsconfig.lib.json
@@ -0,0 +1,30 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts",
+ "../../../libs/shared/theme/src/theme.d.ts"
+ ],
+ "exclude": [
+ "jest.config.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.js",
+ "src/**/*.test.js",
+ "src/**/*.spec.jsx",
+ "src/**/*.test.jsx"
+ ],
+ "include": [
+ "src/**/*.js",
+ "src/**/*.jsx",
+ "src/**/*.ts",
+ "src/**/*.tsx",
+ "../../shared/providers/src/wagmi/components/TokenSelectModal.tsx"
+ ]
+}
diff --git a/libs/oeth/wrap/.babelrc b/libs/oeth/wrap/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/oeth/wrap/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/oeth/wrap/.eslintrc.json b/libs/oeth/wrap/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/oeth/wrap/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/oeth/wrap/README.md b/libs/oeth/wrap/README.md
new file mode 100644
index 000000000..446cad759
--- /dev/null
+++ b/libs/oeth/wrap/README.md
@@ -0,0 +1,7 @@
+# oeth-wrap
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test oeth-wrap` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/oeth/wrap/project.json b/libs/oeth/wrap/project.json
new file mode 100644
index 000000000..1f8a9626e
--- /dev/null
+++ b/libs/oeth/wrap/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "oeth-wrap",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/oeth/wrap/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/oeth/wrap/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/oeth/wrap/src/components/SwapWrap.tsx b/libs/oeth/wrap/src/components/SwapWrap.tsx
new file mode 100644
index 000000000..84ff7c5b8
--- /dev/null
+++ b/libs/oeth/wrap/src/components/SwapWrap.tsx
@@ -0,0 +1,63 @@
+import { useState } from 'react';
+
+import { SwapCard } from '@origin/shared/components';
+import random from 'lodash/random';
+import { useIntl } from 'react-intl';
+
+export function PortfolioSwap() {
+ const intl = useIntl();
+ const [values, setValues] = useState({
+ baseToken: {
+ abbreviation: 'OETH',
+ imgSrc: 'https://app.oeth.com/images/currency/oeth-icon-small.svg',
+ quantity: 0,
+ },
+ exchangeCurrency: {
+ abbreviation: 'wOETH',
+ imgSrc: 'https://app.oeth.com/images/currency/woeth-icon-small.svg',
+ quantity: 0,
+ },
+ });
+
+ function handleValueChange(value: string) {
+ const number = parseInt(value) || 0;
+ setValues((prev) => ({
+ baseToken: {
+ ...prev.baseToken,
+ quantity: number,
+ },
+ exchangeCurrency: {
+ ...prev.exchangeCurrency,
+ quantity: number * random(number - 0.5, number, true),
+ },
+ }));
+ }
+
+ function swapTokens() {
+ setValues((prev) => ({
+ baseToken: {
+ ...prev.exchangeCurrency,
+ quantity: prev.baseToken.quantity,
+ },
+ exchangeCurrency: {
+ ...prev.baseToken,
+ quantity:
+ prev.baseToken.quantity *
+ random(prev.baseToken.quantity - 0.5, prev.baseToken.quantity, true),
+ },
+ }));
+ }
+
+ return (
+
+ );
+}
diff --git a/libs/oeth/wrap/src/index.ts b/libs/oeth/wrap/src/index.ts
new file mode 100644
index 000000000..0fe462b97
--- /dev/null
+++ b/libs/oeth/wrap/src/index.ts
@@ -0,0 +1 @@
+export * from './views/WrapView';
diff --git a/libs/oeth/wrap/src/views/WrapView.tsx b/libs/oeth/wrap/src/views/WrapView.tsx
new file mode 100644
index 000000000..0dcab5d10
--- /dev/null
+++ b/libs/oeth/wrap/src/views/WrapView.tsx
@@ -0,0 +1,50 @@
+import { Button, Stack } from '@mui/material';
+import { ActionButton, Card } from '@origin/shared/components';
+import { useIntl } from 'react-intl';
+
+import { PortfolioSwap } from '../components/SwapWrap';
+
+export function WrapView() {
+ const intl = useIntl();
+
+ return (
+
+
+
+
+
+ console.log('test')}>
+ {intl.formatMessage({ defaultMessage: 'Connect' })}
+
+
+ );
+}
diff --git a/libs/oeth/wrap/tsconfig.json b/libs/oeth/wrap/tsconfig.json
new file mode 100644
index 000000000..90fcf85c5
--- /dev/null
+++ b/libs/oeth/wrap/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/oeth/wrap/tsconfig.lib.json b/libs/oeth/wrap/tsconfig.lib.json
new file mode 100644
index 000000000..78f9e0f1c
--- /dev/null
+++ b/libs/oeth/wrap/tsconfig.lib.json
@@ -0,0 +1,24 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts",
+ "../../../libs/shared/theme/src/theme.d.ts"
+ ],
+ "exclude": [
+ "jest.config.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.js",
+ "src/**/*.test.js",
+ "src/**/*.spec.jsx",
+ "src/**/*.test.jsx"
+ ],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/libs/shared/assets/files/tokens/DAI.svg b/libs/shared/assets/files/tokens/DAI.svg
new file mode 100644
index 000000000..55f30e4ad
--- /dev/null
+++ b/libs/shared/assets/files/tokens/DAI.svg
@@ -0,0 +1,6 @@
+
diff --git a/libs/shared/assets/files/tokens/ETH.svg b/libs/shared/assets/files/tokens/ETH.svg
new file mode 100644
index 000000000..c330fd730
--- /dev/null
+++ b/libs/shared/assets/files/tokens/ETH.svg
@@ -0,0 +1,16 @@
+
diff --git a/libs/shared/assets/files/tokens/OETH.svg b/libs/shared/assets/files/tokens/OETH.svg
new file mode 100644
index 000000000..e12abe4ae
--- /dev/null
+++ b/libs/shared/assets/files/tokens/OETH.svg
@@ -0,0 +1,29 @@
+
diff --git a/libs/shared/assets/files/tokens/OGN.svg b/libs/shared/assets/files/tokens/OGN.svg
new file mode 100644
index 000000000..bc220e5ba
--- /dev/null
+++ b/libs/shared/assets/files/tokens/OGN.svg
@@ -0,0 +1,14 @@
+
diff --git a/libs/shared/assets/files/tokens/OGV.svg b/libs/shared/assets/files/tokens/OGV.svg
new file mode 100644
index 000000000..0f57558f3
--- /dev/null
+++ b/libs/shared/assets/files/tokens/OGV.svg
@@ -0,0 +1,10 @@
+
diff --git a/libs/shared/assets/files/tokens/OUSD.svg b/libs/shared/assets/files/tokens/OUSD.svg
new file mode 100644
index 000000000..412c5703c
--- /dev/null
+++ b/libs/shared/assets/files/tokens/OUSD.svg
@@ -0,0 +1,3 @@
+
diff --git a/libs/shared/assets/files/tokens/USDC.svg b/libs/shared/assets/files/tokens/USDC.svg
new file mode 100644
index 000000000..9303ee78e
--- /dev/null
+++ b/libs/shared/assets/files/tokens/USDC.svg
@@ -0,0 +1,6 @@
+
diff --git a/libs/shared/assets/files/tokens/USDT.svg b/libs/shared/assets/files/tokens/USDT.svg
new file mode 100644
index 000000000..c7088804d
--- /dev/null
+++ b/libs/shared/assets/files/tokens/USDT.svg
@@ -0,0 +1,6 @@
+
diff --git a/libs/shared/assets/files/tokens/WETH.svg b/libs/shared/assets/files/tokens/WETH.svg
new file mode 100644
index 000000000..54781a0fc
--- /dev/null
+++ b/libs/shared/assets/files/tokens/WETH.svg
@@ -0,0 +1,19 @@
+
diff --git a/libs/shared/assets/files/tokens/WOETH.svg b/libs/shared/assets/files/tokens/WOETH.svg
new file mode 100644
index 000000000..856f1950d
--- /dev/null
+++ b/libs/shared/assets/files/tokens/WOETH.svg
@@ -0,0 +1,31 @@
+
diff --git a/libs/shared/assets/files/tokens/WOUSD.svg b/libs/shared/assets/files/tokens/WOUSD.svg
new file mode 100644
index 000000000..6d665bf22
--- /dev/null
+++ b/libs/shared/assets/files/tokens/WOUSD.svg
@@ -0,0 +1,37 @@
+
diff --git a/libs/shared/assets/files/tokens/frxETH.svg b/libs/shared/assets/files/tokens/frxETH.svg
new file mode 100644
index 000000000..88b0ff85f
--- /dev/null
+++ b/libs/shared/assets/files/tokens/frxETH.svg
@@ -0,0 +1,17 @@
+
diff --git a/libs/shared/assets/files/tokens/rETH.svg b/libs/shared/assets/files/tokens/rETH.svg
new file mode 100644
index 000000000..6e86e83b2
--- /dev/null
+++ b/libs/shared/assets/files/tokens/rETH.svg
@@ -0,0 +1,9 @@
+
diff --git a/libs/shared/assets/files/tokens/sfrxETH.svg b/libs/shared/assets/files/tokens/sfrxETH.svg
new file mode 100644
index 000000000..289b9156d
--- /dev/null
+++ b/libs/shared/assets/files/tokens/sfrxETH.svg
@@ -0,0 +1,18 @@
+
diff --git a/libs/shared/assets/files/tokens/stETH.svg b/libs/shared/assets/files/tokens/stETH.svg
new file mode 100644
index 000000000..76e013643
--- /dev/null
+++ b/libs/shared/assets/files/tokens/stETH.svg
@@ -0,0 +1,18 @@
+
diff --git a/libs/shared/components/src/Cards/index.tsx b/libs/shared/components/src/Cards/index.ts
similarity index 100%
rename from libs/shared/components/src/Cards/index.tsx
rename to libs/shared/components/src/Cards/index.ts
diff --git a/libs/shared/components/src/Inputs/BigIntInput.tsx b/libs/shared/components/src/Inputs/BigIntInput.tsx
new file mode 100644
index 000000000..665635807
--- /dev/null
+++ b/libs/shared/components/src/Inputs/BigIntInput.tsx
@@ -0,0 +1,106 @@
+import { forwardRef, useEffect, useState } from 'react';
+
+import { InputBase } from '@mui/material';
+import { isNilOrEmpty } from '@origin/shared/utils';
+import { formatUnits, parseUnits } from 'viem';
+
+import type { InputBaseProps } from '@mui/material';
+import type { ChangeEvent } from 'react';
+
+export type BigintInputProps = {
+ value: bigint;
+ decimals?: number;
+ onChange?: (value: bigint) => void;
+ isLoading?: boolean;
+ isError?: boolean;
+} & Omit;
+
+export const BigIntInput = forwardRef(
+ ({ value, decimals = 18, isLoading, isError, onChange, ...rest }, ref) => {
+ const [strVal, setStrVal] = useState(formatUnits(value, decimals));
+
+ useEffect(() => {
+ if (value === 0n && (isNilOrEmpty(strVal) || strVal === '0.')) {
+ return;
+ }
+
+ if (value === 0n && !/0\.0+$/.test(strVal)) {
+ setStrVal('');
+ return;
+ }
+
+ if (
+ isNilOrEmpty(strVal) ||
+ strVal === '0.' ||
+ value !== parseUnits(strVal, decimals)
+ ) {
+ setStrVal(formatUnits(value, decimals));
+ }
+ }, [value, decimals, strVal]);
+
+ const handleChange = (evt: ChangeEvent) => {
+ if (evt.target.validity.valid) {
+ const val =
+ isNilOrEmpty(evt.target.value) || evt.target.value === '.'
+ ? '0'
+ : evt.target.value.replace(/\.0+$/, '');
+
+ try {
+ const num = parseUnits(val, decimals);
+ setStrVal(evt.target.value === '.' ? '0.' : evt.target.value);
+ if (onChange && num !== value) {
+ onChange(num);
+ }
+ } catch {}
+ }
+ };
+
+ return (
+
+ );
+ },
+);
+
+BigIntInput.displayName = 'BigIntInput';
diff --git a/libs/shared/components/src/Inputs/TokenInput.tsx b/libs/shared/components/src/Inputs/TokenInput.tsx
new file mode 100644
index 000000000..cd464dd56
--- /dev/null
+++ b/libs/shared/components/src/Inputs/TokenInput.tsx
@@ -0,0 +1,178 @@
+import { forwardRef } from 'react';
+
+import { alpha, Box, Button, Skeleton, Stack, Typography } from '@mui/material';
+import { useIntl } from 'react-intl';
+import { formatUnits } from 'viem';
+
+import { BigIntInput } from './BigIntInput';
+
+import type { StackProps } from '@mui/material';
+import type { Token } from '@origin/shared/contracts';
+
+import type { BigintInputProps } from './BigIntInput';
+
+export type TokenInputProps = {
+ amount: bigint;
+ decimals?: number;
+ onAmountChange?: (value: bigint) => void;
+ isAmountLoading?: boolean;
+ isAmountDisabled?: boolean;
+ isAmountError?: boolean;
+ isConnected: boolean;
+ balance?: bigint;
+ isBalanceLoading?: boolean;
+ disableMaxClick?: boolean;
+ token: Token;
+ onTokenClick: () => void;
+ tokenPriceUsd?: number;
+ isPriceLoading?: boolean;
+ inputProps?: Omit<
+ BigintInputProps,
+ 'value' | 'decimals' | 'onChange' | 'isLoading' | 'isError'
+ >;
+} & StackProps;
+
+export const TokenInput = forwardRef(
+ (
+ {
+ amount,
+ decimals = 18,
+ onAmountChange,
+ isAmountLoading,
+ isAmountDisabled,
+ isAmountError,
+ isConnected,
+ balance = 0n,
+ isBalanceLoading,
+ disableMaxClick,
+ token,
+ onTokenClick,
+ tokenPriceUsd = 0,
+ isPriceLoading,
+ inputProps,
+ ...rest
+ },
+ ref,
+ ) => {
+ const intl = useIntl();
+
+ const handleMaxClick = () => {
+ if (onAmountChange) {
+ onAmountChange(balance);
+ }
+ };
+
+ const bal = +formatUnits(balance, decimals);
+ const amountUsd = +formatUnits(amount, decimals) * tokenPriceUsd;
+
+ return (
+
+
+
+ {isPriceLoading ? (
+
+ ) : tokenPriceUsd > 0 ? (
+
+ {intl.formatNumber(amountUsd, {
+ style: 'currency',
+ currency: 'usd',
+ maximumFractionDigits: 4,
+ })}
+
+ ) : null}
+
+
+ {isConnected && (
+
+ {isBalanceLoading ? (
+
+ ) : (
+ <>
+
+ {intl.formatNumber(bal, { maximumFractionDigits: 4 })}
+ {token.symbol}
+
+ {!disableMaxClick && (
+
+ )}
+ >
+ )}
+
+ )}
+
+
+
+ );
+ },
+);
+
+TokenInput.displayName = 'TokenInput';
+
+type TokenButtonProps = { token: Token; isDisabled?: boolean } & StackProps;
+
+function TokenButton({ token, isDisabled, ...rest }: TokenButtonProps) {
+ return (
+ alpha(theme.palette.common.white, 0.1),
+ fontStyle: 'normal',
+ cursor: 'pointer',
+ fontWeight: 500,
+ gap: 1,
+ ':hover': {
+ background: (theme) =>
+ `linear-gradient(#3B3C3E, #3B3C3E) padding-box, linear-gradient(90deg, ${alpha(
+ theme.palette.primary.main,
+ 0.4,
+ )} 0%, ${alpha(theme.palette.primary.dark, 0.4)} 100%) border-box;`,
+ },
+ ...rest?.sx,
+ }}
+ {...rest}
+ >
+
+
+ {token.symbol}
+
+ {!isDisabled && }
+
+ );
+}
diff --git a/libs/shared/components/src/Inputs/index.ts b/libs/shared/components/src/Inputs/index.ts
new file mode 100644
index 000000000..c64c7dfc1
--- /dev/null
+++ b/libs/shared/components/src/Inputs/index.ts
@@ -0,0 +1,2 @@
+export * from './BigIntInput';
+export * from './TokenInput';
diff --git a/libs/shared/components/src/LinkIcon/LinkIcon.tsx b/libs/shared/components/src/LinkIcon/LinkIcon.tsx
deleted file mode 100644
index ba3ff18df..000000000
--- a/libs/shared/components/src/LinkIcon/LinkIcon.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Box, Link } from '@mui/material';
-
-interface Props {
- url: string;
- size?: string;
-}
-
-export function LinkIcon({ url, size = '0.875rem' }: Props) {
- return (
-
-
-
- );
-}
diff --git a/libs/shared/components/src/LinkIcon/index.tsx b/libs/shared/components/src/LinkIcon/index.tsx
index 1718f57d5..ba3ff18df 100644
--- a/libs/shared/components/src/LinkIcon/index.tsx
+++ b/libs/shared/components/src/LinkIcon/index.tsx
@@ -1 +1,18 @@
-export * from './LinkIcon';
+import { Box, Link } from '@mui/material';
+
+interface Props {
+ url: string;
+ size?: string;
+}
+
+export function LinkIcon({ url, size = '0.875rem' }: Props) {
+ return (
+
+
+
+ );
+}
diff --git a/libs/shared/components/src/Loader/index.tsx b/libs/shared/components/src/Loader/index.ts
similarity index 100%
rename from libs/shared/components/src/Loader/index.tsx
rename to libs/shared/components/src/Loader/index.ts
diff --git a/libs/shared/components/src/MiddleTruncated/index.tsx b/libs/shared/components/src/MiddleTruncated/index.tsx
new file mode 100644
index 000000000..4a7429f16
--- /dev/null
+++ b/libs/shared/components/src/MiddleTruncated/index.tsx
@@ -0,0 +1,57 @@
+import { Box, Typography } from '@mui/material';
+import { isNilOrEmpty } from '@origin/shared/utils';
+
+import type { SxProps, Theme, TypographyProps } from '@mui/material';
+
+export type MiddleTruncatedProps = {
+ children: string;
+ textProps?: Omit;
+ end?: number;
+} & TypographyProps;
+
+const truncate: SxProps = {
+ overflow: 'hidden',
+ whiteSpace: 'nowrap',
+ textOverflow: 'ellipsis',
+};
+
+export const MiddleTruncated = ({
+ children,
+ textProps,
+ end = 4,
+ ...rest
+}: MiddleTruncatedProps) => {
+ if (isNilOrEmpty(children)) return null;
+
+ if (children.length <= end) {
+ return (
+
+
+ {children}
+
+
+ );
+ }
+
+ const partStart = children.substring(0, children.length - end);
+ const partEnd = children.slice(children.length - end);
+ const breakspace =
+ children[children.length - end - 1] === ' ' &&
+ children[children.length - end] !== ' ';
+
+ return (
+
+
+ {partStart}
+
+ {breakspace && }
+ {partEnd}
+
+ );
+};
diff --git a/libs/shared/components/src/Mix/index.tsx b/libs/shared/components/src/Mix/index.ts
similarity index 100%
rename from libs/shared/components/src/Mix/index.tsx
rename to libs/shared/components/src/Mix/index.ts
diff --git a/libs/shared/components/src/index.ts b/libs/shared/components/src/index.ts
index 0c0f87547..4f3c27667 100644
--- a/libs/shared/components/src/index.ts
+++ b/libs/shared/components/src/index.ts
@@ -1,4 +1,8 @@
export * from './Cards';
-export * from './top-nav';
-export * from './LinkIcon';
export * from './DataTable';
+export * from './Inputs';
+export * from './LinkIcon';
+export * from './Loader';
+export * from './MiddleTruncated';
+export * from './Mix';
+export * from './top-nav';
diff --git a/libs/shared/components/src/top-nav/ConnectedButton.tsx b/libs/shared/components/src/top-nav/ConnectedButton.tsx
index 322acf78a..a8d215e4d 100644
--- a/libs/shared/components/src/top-nav/ConnectedButton.tsx
+++ b/libs/shared/components/src/top-nav/ConnectedButton.tsx
@@ -12,9 +12,9 @@ import {
} from '@mui/material';
import { useIntl } from 'react-intl';
-import { LinkIcon } from '../LinkIcon/LinkIcon';
+import { LinkIcon } from '../LinkIcon';
+import { MiddleTruncated } from '../MiddleTruncated';
import { Icon } from './Icon';
-import { UserId } from './UserId';
import { styles } from './utils';
import type { ButtonProps, SxProps, Theme } from '@mui/material';
@@ -36,6 +36,7 @@ export function ConnectedButton({
const theme = useTheme();
const intl = useIntl();
const [anchor, setAnchor] = useState(null);
+
return (
<>
theme.spacing(3),
}}
/>
-
+ {userId}
-
+ {userId}
@@ -151,17 +152,11 @@ export function ConnectedButton({
);
}
-interface ConnectButtonProps extends ButtonProps {
+export type ConnectButtonProps = {
connected: boolean;
-}
+} & ButtonProps;
-export function ConnectButton({
- onClick,
- children,
- connected,
- sx,
- ...rest
-}: ConnectButtonProps) {
+export function ConnectButton({ connected, ...rest }: ConnectButtonProps) {
return (
+ />
);
}
diff --git a/libs/shared/components/src/top-nav/Transaction.tsx b/libs/shared/components/src/top-nav/Transaction.tsx
index 2ec8ada3d..1a2a7d5ce 100644
--- a/libs/shared/components/src/top-nav/Transaction.tsx
+++ b/libs/shared/components/src/top-nav/Transaction.tsx
@@ -2,7 +2,7 @@ import { keyframes } from '@emotion/react';
import { Stack, Typography } from '@mui/material';
import { useIntl } from 'react-intl';
-import { LinkIcon } from '../LinkIcon/LinkIcon';
+import { LinkIcon } from '../LinkIcon';
import { Icon } from './Icon';
import { messages } from './utils';
diff --git a/libs/shared/components/src/top-nav/index.ts b/libs/shared/components/src/top-nav/index.ts
new file mode 100644
index 000000000..57a9a76c3
--- /dev/null
+++ b/libs/shared/components/src/top-nav/index.ts
@@ -0,0 +1,2 @@
+export * from './ConnectedButton';
+export * from './Icon';
diff --git a/libs/shared/components/src/top-nav/index.tsx b/libs/shared/components/src/top-nav/index.tsx
deleted file mode 100644
index 0b5f66e91..000000000
--- a/libs/shared/components/src/top-nav/index.tsx
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './TopNav';
-export * from './Icon';
diff --git a/libs/shared/components/tsconfig.json b/libs/shared/components/tsconfig.json
index d29cb83ed..3426c8242 100644
--- a/libs/shared/components/tsconfig.json
+++ b/libs/shared/components/tsconfig.json
@@ -4,7 +4,6 @@
"allowJs": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
- "strict": true,
"types": ["vitest"]
},
"files": [],
diff --git a/libs/shared/contracts/.babelrc b/libs/shared/contracts/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/shared/contracts/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/shared/contracts/.eslintrc.json b/libs/shared/contracts/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/shared/contracts/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/shared/contracts/README.md b/libs/shared/contracts/README.md
new file mode 100644
index 000000000..474d2492c
--- /dev/null
+++ b/libs/shared/contracts/README.md
@@ -0,0 +1,7 @@
+# shared-contracts
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test shared-contracts` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/shared/contracts/project.json b/libs/shared/contracts/project.json
new file mode 100644
index 000000000..39cb67ed6
--- /dev/null
+++ b/libs/shared/contracts/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "shared-contracts",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/shared/contracts/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/shared/contracts/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/shared/contracts/src/abis/ChainlinkAggregatorV3Interface.json b/libs/shared/contracts/src/abis/ChainlinkAggregatorV3Interface.json
new file mode 100644
index 000000000..cd65e8125
--- /dev/null
+++ b/libs/shared/contracts/src/abis/ChainlinkAggregatorV3Interface.json
@@ -0,0 +1,350 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "AggregatorV3Interface",
+ "sourceName": "/",
+ "abi": [
+ {
+ "inputs": [
+ { "internalType": "address", "name": "_aggregator", "type": "address" },
+ {
+ "internalType": "address",
+ "name": "_accessController",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "int256",
+ "name": "current",
+ "type": "int256"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "roundId",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "updatedAt",
+ "type": "uint256"
+ }
+ ],
+ "name": "AnswerUpdated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "roundId",
+ "type": "uint256"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "startedBy",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "startedAt",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewRound",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferRequested",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "inputs": [],
+ "name": "acceptOwnership",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "accessController",
+ "outputs": [
+ {
+ "internalType": "contract AccessControllerInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "aggregator",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "_aggregator", "type": "address" }
+ ],
+ "name": "confirmAggregator",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "description",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }
+ ],
+ "name": "getAnswer",
+ "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint80", "name": "_roundId", "type": "uint80" }
+ ],
+ "name": "getRoundData",
+ "outputs": [
+ { "internalType": "uint80", "name": "roundId", "type": "uint80" },
+ { "internalType": "int256", "name": "answer", "type": "int256" },
+ { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
+ { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
+ {
+ "internalType": "uint80",
+ "name": "answeredInRound",
+ "type": "uint80"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "_roundId", "type": "uint256" }
+ ],
+ "name": "getTimestamp",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "latestAnswer",
+ "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "latestRound",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "latestRoundData",
+ "outputs": [
+ { "internalType": "uint80", "name": "roundId", "type": "uint80" },
+ { "internalType": "int256", "name": "answer", "type": "int256" },
+ { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
+ { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
+ {
+ "internalType": "uint80",
+ "name": "answeredInRound",
+ "type": "uint80"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "latestTimestamp",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ { "internalType": "address payable", "name": "", "type": "address" }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }],
+ "name": "phaseAggregators",
+ "outputs": [
+ {
+ "internalType": "contract AggregatorV2V3Interface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "phaseId",
+ "outputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "_aggregator", "type": "address" }
+ ],
+ "name": "proposeAggregator",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "proposedAggregator",
+ "outputs": [
+ {
+ "internalType": "contract AggregatorV2V3Interface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint80", "name": "_roundId", "type": "uint80" }
+ ],
+ "name": "proposedGetRoundData",
+ "outputs": [
+ { "internalType": "uint80", "name": "roundId", "type": "uint80" },
+ { "internalType": "int256", "name": "answer", "type": "int256" },
+ { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
+ { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
+ {
+ "internalType": "uint80",
+ "name": "answeredInRound",
+ "type": "uint80"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "proposedLatestRoundData",
+ "outputs": [
+ { "internalType": "uint80", "name": "roundId", "type": "uint80" },
+ { "internalType": "int256", "name": "answer", "type": "int256" },
+ { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
+ { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
+ {
+ "internalType": "uint80",
+ "name": "answeredInRound",
+ "type": "uint80"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_accessController",
+ "type": "address"
+ }
+ ],
+ "name": "setController",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "_to", "type": "address" }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "version",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
diff --git a/libs/shared/contracts/src/abis/CompensationClaims.json b/libs/shared/contracts/src/abis/CompensationClaims.json
new file mode 100644
index 000000000..ec7f6a657
--- /dev/null
+++ b/libs/shared/contracts/src/abis/CompensationClaims.json
@@ -0,0 +1,234 @@
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "symbol",
+ "type": "string"
+ }
+ ],
+ "name": "tokEthPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "symbol",
+ "type": "string"
+ }
+ ],
+ "name": "tokUsdPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "ethUsdPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "feed",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "directToUsd",
+ "type": "bool"
+ }
+ ],
+ "name": "registerFeed",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "symbol",
+ "type": "string"
+ }
+ ],
+ "name": "price",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "ethFeed_",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "_feed",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "_symbol",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "_directToUsd",
+ "type": "bool"
+ }
+ ],
+ "name": "FeedRegistered",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/CurveAddressProvider.json b/libs/shared/contracts/src/abis/CurveAddressProvider.json
new file mode 100644
index 000000000..7f12fb7bf
--- /dev/null
+++ b/libs/shared/contracts/src/abis/CurveAddressProvider.json
@@ -0,0 +1,303 @@
+{
+ "_format": "",
+ "contractName": "CurveAddressProvider",
+ "sourceName": "/",
+ "abi": [
+ {
+ "name": "NewAddressIdentifier",
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "id",
+ "indexed": true
+ },
+ {
+ "type": "address",
+ "name": "addr",
+ "indexed": false
+ },
+ {
+ "type": "string",
+ "name": "description",
+ "indexed": false
+ }
+ ],
+ "anonymous": false,
+ "type": "event"
+ },
+ {
+ "name": "AddressModified",
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "id",
+ "indexed": true
+ },
+ {
+ "type": "address",
+ "name": "new_address",
+ "indexed": false
+ },
+ {
+ "type": "uint256",
+ "name": "version",
+ "indexed": false
+ }
+ ],
+ "anonymous": false,
+ "type": "event"
+ },
+ {
+ "name": "CommitNewAdmin",
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "deadline",
+ "indexed": true
+ },
+ {
+ "type": "address",
+ "name": "admin",
+ "indexed": true
+ }
+ ],
+ "anonymous": false,
+ "type": "event"
+ },
+ {
+ "name": "NewAdmin",
+ "inputs": [
+ {
+ "type": "address",
+ "name": "admin",
+ "indexed": true
+ }
+ ],
+ "anonymous": false,
+ "type": "event"
+ },
+ {
+ "outputs": [],
+ "inputs": [
+ {
+ "type": "address",
+ "name": "_admin"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "name": "get_registry",
+ "outputs": [
+ {
+ "type": "address",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "max_id",
+ "outputs": [
+ {
+ "type": "uint256",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "get_address",
+ "outputs": [
+ {
+ "type": "address",
+ "name": ""
+ }
+ ],
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "_id"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "add_new_id",
+ "outputs": [
+ {
+ "type": "uint256",
+ "name": ""
+ }
+ ],
+ "inputs": [
+ {
+ "type": "address",
+ "name": "_address"
+ },
+ {
+ "type": "string",
+ "name": "_description"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "set_address",
+ "outputs": [
+ {
+ "type": "bool",
+ "name": ""
+ }
+ ],
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "_id"
+ },
+ {
+ "type": "address",
+ "name": "_address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "unset_address",
+ "outputs": [
+ {
+ "type": "bool",
+ "name": ""
+ }
+ ],
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "_id"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "commit_transfer_ownership",
+ "outputs": [
+ {
+ "type": "bool",
+ "name": ""
+ }
+ ],
+ "inputs": [
+ {
+ "type": "address",
+ "name": "_new_admin"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "apply_transfer_ownership",
+ "outputs": [
+ {
+ "type": "bool",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "revert_transfer_ownership",
+ "outputs": [
+ {
+ "type": "bool",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "name": "admin",
+ "outputs": [
+ {
+ "type": "address",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "transfer_ownership_deadline",
+ "outputs": [
+ {
+ "type": "uint256",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "future_admin",
+ "outputs": [
+ {
+ "type": "address",
+ "name": ""
+ }
+ ],
+ "inputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "name": "get_id_info",
+ "outputs": [
+ {
+ "type": "address",
+ "name": "addr"
+ },
+ {
+ "type": "bool",
+ "name": "is_active"
+ },
+ {
+ "type": "uint256",
+ "name": "version"
+ },
+ {
+ "type": "uint256",
+ "name": "last_modified"
+ },
+ {
+ "type": "string",
+ "name": "description"
+ }
+ ],
+ "inputs": [
+ {
+ "type": "uint256",
+ "name": "arg0"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
\ No newline at end of file
diff --git a/libs/shared/contracts/src/abis/OETHProxy.json b/libs/shared/contracts/src/abis/OETHProxy.json
new file mode 100644
index 000000000..e28529545
--- /dev/null
+++ b/libs/shared/contracts/src/abis/OETHProxy.json
@@ -0,0 +1,183 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/OETHZapper.json b/libs/shared/contracts/src/abis/OETHZapper.json
new file mode 100644
index 000000000..0dc4b0fdb
--- /dev/null
+++ b/libs/shared/contracts/src/abis/OETHZapper.json
@@ -0,0 +1,158 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "OETHZapper",
+ "sourceName": "contracts/vault/OETHZapper.sol",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_oeth",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_vault",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "asset",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Zap",
+ "type": "event"
+ },
+ {
+ "inputs": [],
+ "name": "deposit",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "minOETH",
+ "type": "uint256"
+ }
+ ],
+ "name": "depositSFRXETH",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "frxeth",
+ "outputs": [
+ {
+ "internalType": "contract IERC20",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "oeth",
+ "outputs": [
+ {
+ "internalType": "contract IERC20",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "sfrxeth",
+ "outputs": [
+ {
+ "internalType": "contract ISfrxETH",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "vault",
+ "outputs": [
+ {
+ "internalType": "contract IVault",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "weth",
+ "outputs": [
+ {
+ "internalType": "contract IWETH9",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "receive"
+ }
+ ],
+ "bytecode": "0x60c060405234801561001057600080fd5b5060405161091038038061091083398101604081905261002f91610198565b6001600160601b0319606083811b821660805282901b1660a05260405163095ea7b360e01b81526001600160a01b0382166004820152600019602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063095ea7b390604401602060405180830381600087803b1580156100a657600080fd5b505af11580156100ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100de91906101cb565b5060405163095ea7b360e01b81526001600160a01b03821660048201526000196024820152735e8422345238f34275888049021821e8e08caa1f9063095ea7b390604401602060405180830381600087803b15801561013c57600080fd5b505af1158015610150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017491906101cb565b5050506101f4565b80516001600160a01b038116811461019357600080fd5b919050565b600080604083850312156101ab57600080fd5b6101b48361017c565b91506101c26020840161017c565b90509250929050565b6000602082840312156101dd57600080fd5b815180151581146101ed57600080fd5b9392505050565b60805160601c60a05160601c6106dc6102346000396000818161019a015261044a015260008181610130015281816104bf01526105b401526106dc6000f3fe6080604052600436106100745760003560e01c8063ccfe2a691161004e578063ccfe2a691461011e578063d0e30db014610152578063d443e97d14610168578063fbfa77cf1461018857600080fd5b80633fc8cef3146100895780636f708a9d146100ce578063a07311af146100f657600080fd5b36610084576100816101bc565b50005b600080fd5b34801561009557600080fd5b506100b173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100da57600080fd5b506100b1735e8422345238f34275888049021821e8e08caa1f81565b34801561010257600080fd5b506100b173ac3e018457b222d93114458476f3e3416abbe38f81565b34801561012a57600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b61015a6101bc565b6040519081526020016100c5565b34801561017457600080fd5b5061015a610183366004610684565b610299565b34801561019457600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b60008047905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561021157600080fd5b505af1158015610225573d6000803e3d6000fd5b505060405184815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee93503392507f9d0b99c299bdb5656c0c9db6e1886c612db5c2881760ea54ab244f6338b4ebd6915060200160405180910390a361029373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28261039e565b91505090565b604051635d043b2960e11b81526004810183905230602482015233604482015260009073ac3e018457b222d93114458476f3e3416abbe38f9063ba08765290606401602060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d919061066b565b5060405183815273ac3e018457b222d93114458476f3e3416abbe38f9033907f9d0b99c299bdb5656c0c9db6e1886c612db5c2881760ea54ab244f6338b4ebd69060200160405180910390a3610397735e8422345238f34275888049021821e8e08caa1f8361039e565b9392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a082319060240160206040518083038186803b1580156103e257600080fd5b505afa1580156103f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041a919061066b565b604051630ab714fb60e11b81526001600160a01b03868116600483015260248201839052604482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063156e29f690606401600060405180830381600087803b15801561049057600080fd5b505af11580156104a4573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a082319060240160206040518083038186803b15801561050a57600080fd5b505afa15801561051e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610542919061066b565b9050838110156105985760405162461bcd60e51b815260206004820152601960248201527f5a61707065723a206e6f7420656e6f756768206d696e74656400000000000000604482015260640160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190610649565b61064157600080fd5b949350505050565b60006020828403121561065b57600080fd5b8151801515811461039757600080fd5b60006020828403121561067d57600080fd5b5051919050565b6000806040838503121561069757600080fd5b5050803592602090910135915056fea2646970667358221220f5f670173d99f62fa4b62b0fa3f719c63e881f37d20d2de7ee51ff7674dfa72664736f6c63430008070033",
+ "deployedBytecode": "0x6080604052600436106100745760003560e01c8063ccfe2a691161004e578063ccfe2a691461011e578063d0e30db014610152578063d443e97d14610168578063fbfa77cf1461018857600080fd5b80633fc8cef3146100895780636f708a9d146100ce578063a07311af146100f657600080fd5b36610084576100816101bc565b50005b600080fd5b34801561009557600080fd5b506100b173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100da57600080fd5b506100b1735e8422345238f34275888049021821e8e08caa1f81565b34801561010257600080fd5b506100b173ac3e018457b222d93114458476f3e3416abbe38f81565b34801561012a57600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b61015a6101bc565b6040519081526020016100c5565b34801561017457600080fd5b5061015a610183366004610684565b610299565b34801561019457600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b60008047905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561021157600080fd5b505af1158015610225573d6000803e3d6000fd5b505060405184815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee93503392507f9d0b99c299bdb5656c0c9db6e1886c612db5c2881760ea54ab244f6338b4ebd6915060200160405180910390a361029373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28261039e565b91505090565b604051635d043b2960e11b81526004810183905230602482015233604482015260009073ac3e018457b222d93114458476f3e3416abbe38f9063ba08765290606401602060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d919061066b565b5060405183815273ac3e018457b222d93114458476f3e3416abbe38f9033907f9d0b99c299bdb5656c0c9db6e1886c612db5c2881760ea54ab244f6338b4ebd69060200160405180910390a3610397735e8422345238f34275888049021821e8e08caa1f8361039e565b9392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a082319060240160206040518083038186803b1580156103e257600080fd5b505afa1580156103f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041a919061066b565b604051630ab714fb60e11b81526001600160a01b03868116600483015260248201839052604482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063156e29f690606401600060405180830381600087803b15801561049057600080fd5b505af11580156104a4573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a082319060240160206040518083038186803b15801561050a57600080fd5b505afa15801561051e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610542919061066b565b9050838110156105985760405162461bcd60e51b815260206004820152601960248201527f5a61707065723a206e6f7420656e6f756768206d696e74656400000000000000604482015260640160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190610649565b61064157600080fd5b949350505050565b60006020828403121561065b57600080fd5b8151801515811461039757600080fd5b60006020828403121561067d57600080fd5b5051919050565b6000806040838503121561069757600080fd5b5050803592602090910135915056fea2646970667358221220f5f670173d99f62fa4b62b0fa3f719c63e881f37d20d2de7ee51ff7674dfa72664736f6c63430008070033",
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
diff --git a/libs/shared/contracts/src/abis/OGNStakingProxy.json b/libs/shared/contracts/src/abis/OGNStakingProxy.json
new file mode 100644
index 000000000..fc2fa5f61
--- /dev/null
+++ b/libs/shared/contracts/src/abis/OGNStakingProxy.json
@@ -0,0 +1,202 @@
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/OUSDProxy.json b/libs/shared/contracts/src/abis/OUSDProxy.json
new file mode 100644
index 000000000..fc2fa5f61
--- /dev/null
+++ b/libs/shared/contracts/src/abis/OUSDProxy.json
@@ -0,0 +1,202 @@
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/OracleRouter.json b/libs/shared/contracts/src/abis/OracleRouter.json
new file mode 100644
index 000000000..97c38a158
--- /dev/null
+++ b/libs/shared/contracts/src/abis/OracleRouter.json
@@ -0,0 +1,40 @@
+[
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_asset",
+ "type": "address"
+ }
+ ],
+ "name": "cacheDecimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "asset",
+ "type": "address"
+ }
+ ],
+ "name": "price",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/Swapper1InchV5.json b/libs/shared/contracts/src/abis/Swapper1InchV5.json
new file mode 100644
index 000000000..00c69fbf5
--- /dev/null
+++ b/libs/shared/contracts/src/abis/Swapper1InchV5.json
@@ -0,0 +1,67 @@
+[
+ {
+ "inputs": [],
+ "name": "SWAP_ROUTER",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "_assets",
+ "type": "address[]"
+ }
+ ],
+ "name": "approveAssets",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_fromAsset",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_toAsset",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_fromAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_minToAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "swap",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "toAssetAmount",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/UniswapV2Router.json b/libs/shared/contracts/src/abis/UniswapV2Router.json
new file mode 100644
index 000000000..579aa86be
--- /dev/null
+++ b/libs/shared/contracts/src/abis/UniswapV2Router.json
@@ -0,0 +1,980 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "UniswapRouterV2",
+ "sourceName": "",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_factory",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_WETH",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [],
+ "name": "WETH",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenA",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenB",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountADesired",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountBDesired",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountAMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountBMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "addLiquidity",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountB",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenDesired",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETHMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "addLiquidityETH",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountToken",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETH",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "factory",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveOut",
+ "type": "uint256"
+ }
+ ],
+ "name": "getAmountIn",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveOut",
+ "type": "uint256"
+ }
+ ],
+ "name": "getAmountOut",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ }
+ ],
+ "name": "getAmountsIn",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ }
+ ],
+ "name": "getAmountsOut",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveB",
+ "type": "uint256"
+ }
+ ],
+ "name": "quote",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountB",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenA",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenB",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountAMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountBMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeLiquidity",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountB",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETHMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeLiquidityETH",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountToken",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETH",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETHMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountETH",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETHMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "approveMax",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeLiquidityETHWithPermit",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountToken",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETH",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountTokenMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountETHMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "approveMax",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountETH",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenA",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenB",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "liquidity",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountAMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountBMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "approveMax",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeLiquidityWithPermit",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountB",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapETHForExactTokens",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactETHForTokens",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactTokensForETH",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactTokensForTokens",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMin",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountInMax",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapTokensForExactETH",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountInMax",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "path",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ }
+ ],
+ "name": "swapTokensForExactTokens",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "amounts",
+ "type": "uint256[]"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "receive"
+ }
+ ],
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
\ No newline at end of file
diff --git a/libs/shared/contracts/src/abis/UniswapV3Quoter.json b/libs/shared/contracts/src/abis/UniswapV3Quoter.json
new file mode 100644
index 000000000..b76ee1b4a
--- /dev/null
+++ b/libs/shared/contracts/src/abis/UniswapV3Quoter.json
@@ -0,0 +1,200 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "Quoter",
+ "sourceName": "contracts/lens/Quoter.sol",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_factory",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_WETH9",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [],
+ "name": "WETH9",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "factory",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "name": "quoteExactInput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "name": "quoteExactInputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "name": "quoteExactOutput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "name": "quoteExactOutputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int256",
+ "name": "amount0Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "int256",
+ "name": "amount1Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ }
+ ],
+ "name": "uniswapV3SwapCallback",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
diff --git a/libs/shared/contracts/src/abis/UniswapV3SwapRouter.json b/libs/shared/contracts/src/abis/UniswapV3SwapRouter.json
new file mode 100644
index 000000000..798b6cbc2
--- /dev/null
+++ b/libs/shared/contracts/src/abis/UniswapV3SwapRouter.json
@@ -0,0 +1,572 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "SwapRouter",
+ "sourceName": "contracts/SwapRouter.sol",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_factory",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_WETH9",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [],
+ "name": "WETH9",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMinimum",
+ "type": "uint256"
+ }
+ ],
+ "internalType": "struct ISwapRouter.ExactInputParams",
+ "name": "params",
+ "type": "tuple"
+ }
+ ],
+ "name": "exactInput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOutMinimum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "internalType": "struct ISwapRouter.ExactInputSingleParams",
+ "name": "params",
+ "type": "tuple"
+ }
+ ],
+ "name": "exactInputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountInMaximum",
+ "type": "uint256"
+ }
+ ],
+ "internalType": "struct ISwapRouter.ExactOutputParams",
+ "name": "params",
+ "type": "tuple"
+ }
+ ],
+ "name": "exactOutput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountInMaximum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "internalType": "struct ISwapRouter.ExactOutputSingleParams",
+ "name": "params",
+ "type": "tuple"
+ }
+ ],
+ "name": "exactOutputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "factory",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes[]",
+ "name": "data",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "multicall",
+ "outputs": [
+ {
+ "internalType": "bytes[]",
+ "name": "results",
+ "type": "bytes[]"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "refundETH",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "selfPermit",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "nonce",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "expiry",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "selfPermitAllowed",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "nonce",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "expiry",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "selfPermitAllowedIfNecessary",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "deadline",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "selfPermitIfNecessary",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountMinimum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ }
+ ],
+ "name": "sweepToken",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountMinimum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeBips",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "feeRecipient",
+ "type": "address"
+ }
+ ],
+ "name": "sweepTokenWithFee",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int256",
+ "name": "amount0Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "int256",
+ "name": "amount1Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "uniswapV3SwapCallback",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountMinimum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ }
+ ],
+ "name": "unwrapWETH9",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountMinimum",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeBips",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "feeRecipient",
+ "type": "address"
+ }
+ ],
+ "name": "unwrapWETH9WithFee",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "receive"
+ }
+ ],
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
diff --git a/libs/shared/contracts/src/abis/VaultProxy.json b/libs/shared/contracts/src/abis/VaultProxy.json
new file mode 100644
index 000000000..fc2fa5f61
--- /dev/null
+++ b/libs/shared/contracts/src/abis/VaultProxy.json
@@ -0,0 +1,202 @@
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/WOETHProxy.json b/libs/shared/contracts/src/abis/WOETHProxy.json
new file mode 100644
index 000000000..e28529545
--- /dev/null
+++ b/libs/shared/contracts/src/abis/WOETHProxy.json
@@ -0,0 +1,183 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ }
+]
diff --git a/libs/shared/contracts/src/abis/WOUSDProxy.json b/libs/shared/contracts/src/abis/WOUSDProxy.json
new file mode 100644
index 000000000..e28529545
--- /dev/null
+++ b/libs/shared/contracts/src/abis/WOUSDProxy.json
@@ -0,0 +1,183 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "GovernorshipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousGovernor",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "PendingGovernorshipTransfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "Upgraded",
+ "type": "event"
+ },
+ {
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "claimGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "governor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_logic",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_initGovernor",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "isGovernor",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_newGovernor",
+ "type": "address"
+ }
+ ],
+ "name": "transferGovernance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "upgradeTo",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "upgradeToAndCall",
+ "outputs": [],
+ "stateMutability": "payable",
+ "type": "function"
+ }
+]
diff --git a/libs/shared/contracts/src/contracts.ts b/libs/shared/contracts/src/contracts.ts
new file mode 100644
index 000000000..c03b2f0aa
--- /dev/null
+++ b/libs/shared/contracts/src/contracts.ts
@@ -0,0 +1,96 @@
+import { mainnet } from 'wagmi/chains';
+
+import ChainlinkAggregatorV3Interface from './abis/ChainlinkAggregatorV3Interface.json';
+import CompensationClaims from './abis/CompensationClaims.json';
+import CurveAddressProvider from './abis/CurveAddressProvider.json';
+import OETHZapper from './abis/OETHZapper.json';
+import OGNStakingProxy from './abis/OGNStakingProxy.json';
+import OracleRouter from './abis/OracleRouter.json';
+import Swapper1InchV5 from './abis/Swapper1InchV5.json';
+import UniswapV2Router from './abis/UniswapV2Router.json';
+import UniswapV3Quoter from './abis/UniswapV3Quoter.json';
+import UniswapV3SwapRouter from './abis/UniswapV3SwapRouter.json';
+import VaultProxy from './abis/VaultProxy.json';
+
+export const contracts = {
+ mainnet: {
+ vault: {
+ address: '0x39254033945AA2E4809Cc2977E7087BEE48bd7Ab',
+ chainId: mainnet.id,
+ abi: VaultProxy,
+ name: 'vault',
+ },
+ uniV3SwapRouter: {
+ address: '0xe592427a0aece92de3edee1f18e0157c05861564',
+ chainId: mainnet.id,
+ abi: UniswapV3SwapRouter,
+ name: 'uniV3SwapRouter',
+ },
+ uniV3SwapQuoter: {
+ address: '0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6',
+ chainId: mainnet.id,
+ abi: UniswapV3Quoter,
+ name: 'uniV3SwapQuoter',
+ },
+ uniV2Router: {
+ address: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
+ chainId: mainnet.id,
+ abi: UniswapV2Router,
+ name: 'uniV2Router',
+ },
+ sushiRouter: {
+ address: '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F',
+ chainId: mainnet.id,
+ abi: UniswapV2Router,
+ name: 'sushiRouter',
+ },
+ ognStaking: {
+ address: '0x501804B374EF06fa9C427476147ac09F1551B9A0',
+ chainId: mainnet.id,
+ abi: OGNStakingProxy,
+ name: 'ognStaking',
+ },
+ compensation: {
+ address: '0x9C94df9d594BA1eb94430C006c269C314B1A8281',
+ chainId: mainnet.id,
+ abi: CompensationClaims,
+ name: 'compensation',
+ },
+ chainlinkEthAggregator: {
+ address: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419',
+ chainId: mainnet.id,
+ abi: ChainlinkAggregatorV3Interface,
+ name: 'chainlinkEthAggregator',
+ },
+ chainlinkFastGasAggregator: {
+ address: '0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C',
+ chainId: mainnet.id,
+ abi: ChainlinkAggregatorV3Interface,
+ name: 'chainlinkFastGasAggregator',
+ },
+ curveAddressProvider: {
+ address: '0x0000000022d53366457f9d5e68ec105046fc4383',
+ chainId: mainnet.id,
+ abi: CurveAddressProvider,
+ name: 'curveAddressProvider',
+ },
+ zapper: {
+ address: '0x9858e47BCbBe6fBAC040519B02d7cd4B2C470C66',
+ chainId: mainnet.id,
+ abi: OETHZapper,
+ name: 'zapper',
+ },
+ oracleRouter: {
+ address: '0x3cCD26E82F7305B12742fBb36708B42f82B61dBa',
+ chainId: mainnet.id,
+ abi: OracleRouter,
+ name: 'oracleRouter',
+ },
+ swapper1InchV5: {
+ address: '0xcD0fcF8a31Bc78ec07752e9CCD3960E936D18366',
+ chainId: mainnet.id,
+ abi: Swapper1InchV5,
+ name: 'oracleRouter',
+ },
+ },
+} as const;
diff --git a/libs/shared/contracts/src/index.ts b/libs/shared/contracts/src/index.ts
new file mode 100644
index 000000000..74e085082
--- /dev/null
+++ b/libs/shared/contracts/src/index.ts
@@ -0,0 +1,3 @@
+export * from './contracts';
+export * from './tokens';
+export * from './types';
diff --git a/libs/shared/contracts/src/tokens.ts b/libs/shared/contracts/src/tokens.ts
new file mode 100644
index 000000000..8cf962f5c
--- /dev/null
+++ b/libs/shared/contracts/src/tokens.ts
@@ -0,0 +1,170 @@
+import { erc20ABI } from 'wagmi';
+import { mainnet } from 'wagmi/chains';
+
+import OETH from './abis/OETHProxy.json';
+import OUSD from './abis/OUSDProxy.json';
+import WOETH from './abis/WOETHProxy.json';
+import WOUSD from './abis/WOUSDProxy.json';
+
+export const tokens = {
+ mainnet: {
+ ETH: {
+ address: undefined,
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'ETH',
+ icon: '/images/tokens/ETH.svg',
+ decimals: 18,
+ symbol: 'ETH',
+ },
+ WETH: {
+ address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Wrapped Ether',
+ icon: '/images/tokens/WETH.svg',
+ decimals: 18,
+ symbol: 'WETH',
+ },
+ // Native stablecoins
+ DAI: {
+ address: '0x6b175474e89094c44da98b954eedeac495271d0f',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Dai Stablecoin',
+ icon: '/images/tokens/DAI.svg',
+ decimals: 18,
+ symbol: 'DAI',
+ },
+ USDC: {
+ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'USD Coin',
+ icon: '/images/tokens/USDC.svg',
+ decimals: 6,
+ symbol: 'USDC',
+ },
+ USDT: {
+ address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Tether USD',
+ icon: '/images/tokens/USDT.svg',
+ decimals: 6,
+ symbol: 'USDT',
+ },
+ TUSD: {
+ address: '0x0000000000085d4780B73119b644AE5ecd22b376',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'TrueUSD',
+ icon: '/images/tokens/TUSD.svg',
+ decimals: 18,
+ symbol: 'TUSD',
+ },
+ // Origin
+ OETH: {
+ address: '0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3',
+ chainId: mainnet.id,
+ abi: OETH,
+ name: 'Origin Ether',
+ icon: '/images/tokens/OETH.svg',
+ decimals: 18,
+ symbol: 'OETH',
+ },
+ WOETH: {
+ address: '0xDcEe70654261AF21C44c093C300eD3Bb97b78192',
+ chainId: mainnet.id,
+ abi: WOETH,
+ name: 'Wrapped Origin Ether',
+ icon: '/images/tokens/WOETH.svg',
+ decimals: 18,
+ symbol: 'WOETH',
+ },
+ OUSD: {
+ address: '0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86',
+ chainId: mainnet.id,
+ abi: OUSD,
+ name: 'Origin Dollar',
+ icon: '/images/tokens/OUSD.svg',
+ decimals: 18,
+ symbol: 'OUSD',
+ },
+ WOUSD: {
+ address: '0xD2af830E8CBdFed6CC11Bab697bB25496ed6FA62',
+ chainId: mainnet.id,
+ abi: WOUSD,
+ name: 'WrappedOrigin Dollar',
+ icon: '/images/tokens/WOUSD.svg',
+ decimals: 18,
+ symbol: 'WOUSD',
+ },
+ OGN: {
+ address: '0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Origin Token',
+ icon: '/images/tokens/OGN.svg',
+ decimals: 18,
+ symbol: 'OGN',
+ },
+ OGV: {
+ address: '0x9c354503C38481a7A7a51629142963F98eCC12D0',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Origin Dollar Governance',
+ icon: '/images/tokens/OGV.svg',
+ decimals: 18,
+ symbol: 'OGV',
+ },
+ veOGV: {
+ address: '0x0C4576Ca1c365868E162554AF8e385dc3e7C66D9',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Staked Origin Dollar Governance',
+ icon: '/images/tokens/OGV.svg',
+ decimals: 18,
+ symbol: 'veOGV',
+ },
+ // 1-inch LP
+ stETH: {
+ address: '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Liquid Staked Ether 2.0',
+ icon: '/images/tokens/stETH.svg',
+ decimals: 18,
+ symbol: 'stETH',
+ },
+ // rocket pool
+ rETH: {
+ address: '0xae78736Cd615f374D3085123A210448E74Fc6393',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Rocket Pool ETH',
+ icon: '/images/tokens/rETH.svg',
+ decimals: 18,
+ symbol: 'rETH',
+ },
+ // Frax
+ frxETH: {
+ address: '0x5e8422345238f34275888049021821e8e08caa1f',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Frax Ether',
+ icon: '/images/tokens/frxETH.svg',
+ decimals: 18,
+ symbol: 'frxETH',
+ },
+ sfrxETH: {
+ address: '0xac3E018457B222d93114458476f3E3416Abbe38F',
+ chainId: mainnet.id,
+ abi: erc20ABI,
+ name: 'Staked Frax Ether',
+ icon: ' /images/tokens/sfrxETH.svg',
+ decimals: 18,
+ symbol: 'sfrxETH',
+ },
+ },
+} as const;
diff --git a/libs/shared/contracts/src/types.ts b/libs/shared/contracts/src/types.ts
new file mode 100644
index 000000000..77949a852
--- /dev/null
+++ b/libs/shared/contracts/src/types.ts
@@ -0,0 +1,12 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import type { HexAddress } from '@origin/shared/utils';
+
+export type Contract = {
+ address: undefined | HexAddress;
+ chainId: number;
+ abi: any;
+ name?: string;
+ icon?: string;
+};
+
+export type Token = { symbol: string; decimals: number } & Contract;
diff --git a/libs/shared/contracts/tsconfig.json b/libs/shared/contracts/tsconfig.json
new file mode 100644
index 000000000..5157d5b9a
--- /dev/null
+++ b/libs/shared/contracts/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "resolveJsonModule": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/shared/contracts/tsconfig.lib.json b/libs/shared/contracts/tsconfig.lib.json
new file mode 100644
index 000000000..c96232320
--- /dev/null
+++ b/libs/shared/contracts/tsconfig.lib.json
@@ -0,0 +1,13 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts"
+ ],
+ "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.spec.tsx", "src/**/*.test.tsx", "src/**/*.spec.js", "src/**/*.test.js", "src/**/*.spec.jsx", "src/**/*.test.jsx"],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/libs/shared/data-access/src/client.ts b/libs/shared/data-access/src/client.ts
index c31c09836..b29dac653 100644
--- a/libs/shared/data-access/src/client.ts
+++ b/libs/shared/data-access/src/client.ts
@@ -2,4 +2,4 @@ import { QueryClient } from '@tanstack/react-query';
export const queryClient = new QueryClient({
defaultOptions: { queries: { staleTime: 1000 * 60 * 20 } },
-});
\ No newline at end of file
+});
diff --git a/libs/shared/providers/.babelrc b/libs/shared/providers/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/shared/providers/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/shared/providers/.eslintrc.json b/libs/shared/providers/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/shared/providers/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/shared/providers/README.md b/libs/shared/providers/README.md
new file mode 100644
index 000000000..41bd7cbc3
--- /dev/null
+++ b/libs/shared/providers/README.md
@@ -0,0 +1,7 @@
+# shared-providers
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test shared-providers` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/shared/providers/project.json b/libs/shared/providers/project.json
new file mode 100644
index 000000000..9b4551d2b
--- /dev/null
+++ b/libs/shared/providers/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "shared-providers",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/shared/providers/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/shared/providers/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/shared/providers/src/index.ts b/libs/shared/providers/src/index.ts
new file mode 100644
index 000000000..14734c906
--- /dev/null
+++ b/libs/shared/providers/src/index.ts
@@ -0,0 +1,2 @@
+export * from './prices';
+export * from './wagmi';
diff --git a/libs/shared/providers/src/prices/constants.ts b/libs/shared/providers/src/prices/constants.ts
new file mode 100644
index 000000000..8727d6fea
--- /dev/null
+++ b/libs/shared/providers/src/prices/constants.ts
@@ -0,0 +1,18 @@
+import type { SupportedToken } from './types';
+
+export const coingeckoApiEndpoint = 'https://api.coingecko.com/api/v3';
+
+export const coingeckoTokenIds: Record = {
+ ETH: 'ethereum',
+ WETH: 'weth',
+ DAI: 'dai',
+ USDC: 'usd-coin',
+ USDT: 'tether',
+ TUSD: 'true-usd',
+ OETH: 'origin-ether',
+ OUSD: 'origin-dollar',
+ stETH: 'staked-ether',
+ rETH: 'rocket-pool-eth',
+ frxETH: 'frax-ether',
+ sfrxETH: 'staked-frax-ether',
+};
diff --git a/libs/shared/providers/src/prices/hooks.ts b/libs/shared/providers/src/prices/hooks.ts
new file mode 100644
index 000000000..77ed146a9
--- /dev/null
+++ b/libs/shared/providers/src/prices/hooks.ts
@@ -0,0 +1,44 @@
+import { isNilOrEmpty } from '@origin/shared/utils';
+import { useQuery } from '@tanstack/react-query';
+import axios from 'axios';
+
+import { coingeckoApiEndpoint, coingeckoTokenIds } from './constants';
+
+import type { UseQueryOptions } from '@tanstack/react-query';
+
+import type { SupportedToken } from './types';
+
+export const usePrices = (
+ tokens?: SupportedToken[],
+ options?: UseQueryOptions<
+ Record,
+ Error,
+ Record,
+ ['usePrices', SupportedToken[]]
+ >,
+) => {
+ return useQuery({
+ queryKey: ['usePrices', tokens] as const,
+ queryFn: async ({ queryKey }) => {
+ let tokens = queryKey[1];
+ if (isNilOrEmpty(tokens)) {
+ tokens = Object.keys(coingeckoTokenIds) as SupportedToken[];
+ }
+
+ const res = await axios.get(
+ `${coingeckoApiEndpoint}/simple/price?ids=${tokens
+ .map((t) => coingeckoTokenIds[t])
+ .join('%2C')}&vs_currencies=usd`,
+ );
+
+ return tokens.reduce(
+ (acc, curr) => ({
+ ...acc,
+ [curr]: res?.data?.[coingeckoTokenIds[curr]]?.usd ?? 0,
+ }),
+ {},
+ );
+ },
+ ...options,
+ });
+};
diff --git a/libs/shared/providers/src/prices/index.ts b/libs/shared/providers/src/prices/index.ts
new file mode 100644
index 000000000..4cc90d02b
--- /dev/null
+++ b/libs/shared/providers/src/prices/index.ts
@@ -0,0 +1 @@
+export * from './hooks';
diff --git a/libs/shared/providers/src/prices/types.ts b/libs/shared/providers/src/prices/types.ts
new file mode 100644
index 000000000..9b87b7eec
--- /dev/null
+++ b/libs/shared/providers/src/prices/types.ts
@@ -0,0 +1,13 @@
+export type SupportedToken =
+ | 'ETH'
+ | 'WETH'
+ | 'DAI'
+ | 'USDC'
+ | 'USDT'
+ | 'TUSD'
+ | 'OETH'
+ | 'OUSD'
+ | 'stETH'
+ | 'rETH'
+ | 'frxETH'
+ | 'sfrxETH';
diff --git a/libs/shared/providers/src/wagmi/components/AddressLabel.tsx b/libs/shared/providers/src/wagmi/components/AddressLabel.tsx
new file mode 100644
index 000000000..d5371a699
--- /dev/null
+++ b/libs/shared/providers/src/wagmi/components/AddressLabel.tsx
@@ -0,0 +1,37 @@
+import { Skeleton } from '@mui/material';
+import { MiddleTruncated } from '@origin/shared/components';
+import { mainnet, useEnsName } from 'wagmi';
+
+import type { MiddleTruncatedProps } from '@origin/shared/components';
+import type { HexAddress } from '@origin/shared/utils';
+
+type AddressLabelProps = {
+ address: HexAddress;
+ enableEnsName?: boolean;
+} & Omit;
+
+export const AddressLabel = ({
+ address,
+ enableEnsName = false,
+ ...rest
+}: AddressLabelProps) => {
+ const { data: ensName, isLoading: isEnsNameLoading } = useEnsName({
+ address,
+ enabled: enableEnsName,
+ chainId: mainnet.id,
+ });
+
+ return enableEnsName ? (
+ isEnsNameLoading ? (
+
+ ) : (
+
+ {ensName ?? address}
+
+ )
+ ) : (
+
+ {address}
+
+ );
+};
diff --git a/libs/shared/providers/src/wagmi/components/OpenAccountModalButton.tsx b/libs/shared/providers/src/wagmi/components/OpenAccountModalButton.tsx
new file mode 100644
index 000000000..0a962b61e
--- /dev/null
+++ b/libs/shared/providers/src/wagmi/components/OpenAccountModalButton.tsx
@@ -0,0 +1,87 @@
+import { ConnectButton as CustomButton } from '@origin/shared/components';
+import { ConnectButton } from '@rainbow-me/rainbowkit';
+import { useIntl } from 'react-intl';
+
+import { AddressLabel } from './AddressLabel';
+
+import type { ButtonProps } from '@mui/material';
+import type { HexAddress } from '@origin/shared/utils';
+import type { MouseEvent } from 'react';
+
+interface OpenAccountModalButtonProps extends ButtonProps {
+ connectLabel?: string;
+}
+
+export const OpenAccountModalButton = ({
+ connectLabel,
+ ...props
+}: OpenAccountModalButtonProps) => {
+ const intl = useIntl();
+
+ const handleClick =
+ (handler: () => void) => (evt: MouseEvent) => {
+ if (props?.onClick) {
+ props.onClick(evt);
+ }
+ handler();
+ };
+
+ return (
+
+ {({
+ account,
+ chain,
+ openChainModal,
+ openConnectModal,
+ openAccountModal,
+ mounted,
+ }) => {
+ if (!mounted || !account || !chain) {
+ return (
+
+ {connectLabel ||
+ intl.formatMessage({ defaultMessage: 'Connect' })}
+
+ );
+ }
+
+ if (chain.unsupported) {
+ return (
+
+ {intl.formatMessage({
+ defaultMessage: 'Wrong Network',
+ })}
+
+ );
+ }
+
+ return (
+ ) => {
+ if (props?.onClick) {
+ props.onClick(evt);
+ }
+ openAccountModal();
+ }}
+ >
+
+
+ );
+ }}
+
+ );
+};
diff --git a/libs/shared/providers/src/wagmi/components/TokenSelectModal.tsx b/libs/shared/providers/src/wagmi/components/TokenSelectModal.tsx
new file mode 100644
index 000000000..0d3fa1bb4
--- /dev/null
+++ b/libs/shared/providers/src/wagmi/components/TokenSelectModal.tsx
@@ -0,0 +1,151 @@
+import {
+ Box,
+ Dialog,
+ MenuItem,
+ MenuList,
+ Skeleton,
+ Stack,
+ Typography,
+} from '@mui/material';
+import { useIntl } from 'react-intl';
+import { useAccount, useBalance } from 'wagmi';
+
+import { usePrices } from '../../prices';
+
+import type { DialogProps, MenuItemProps } from '@mui/material';
+import type { Token } from '@origin/shared/contracts';
+
+export type TokenSelectModalProps = {
+ tokens: Token[];
+ onSelectToken: (value: Token) => void;
+ selectedTokenSymbol?: string;
+} & DialogProps;
+
+export const TokenSelectModal = ({
+ tokens,
+ onSelectToken,
+ selectedTokenSymbol,
+ onClose,
+ ...rest
+}: TokenSelectModalProps) => {
+ return (
+
+ );
+};
+
+type TokenListItemProps = {
+ token: Token;
+ selected: boolean;
+} & MenuItemProps;
+
+function TokenListItem({ token, selected, ...rest }: TokenListItemProps) {
+ const intl = useIntl();
+ const { address } = useAccount();
+ const { data: balance, isLoading: isBalanceLoading } = useBalance({
+ address,
+ token: token.address,
+ });
+ const { data: prices } = usePrices();
+
+ const bal = parseFloat(balance?.formatted ?? '0');
+ const balUsd = bal * (prices?.[token.symbol] ?? 0);
+
+ return (
+
+ );
+}
diff --git a/libs/shared/providers/src/wagmi/index.ts b/libs/shared/providers/src/wagmi/index.ts
new file mode 100644
index 000000000..cce378ad8
--- /dev/null
+++ b/libs/shared/providers/src/wagmi/index.ts
@@ -0,0 +1,3 @@
+export * from './components/AddressLabel';
+export * from './components/OpenAccountModalButton';
+export * from './components/TokenSelectModal';
diff --git a/libs/shared/providers/tsconfig.json b/libs/shared/providers/tsconfig.json
new file mode 100644
index 000000000..90fcf85c5
--- /dev/null
+++ b/libs/shared/providers/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/shared/providers/tsconfig.lib.json b/libs/shared/providers/tsconfig.lib.json
new file mode 100644
index 000000000..c96232320
--- /dev/null
+++ b/libs/shared/providers/tsconfig.lib.json
@@ -0,0 +1,13 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts"
+ ],
+ "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.spec.tsx", "src/**/*.test.tsx", "src/**/*.spec.js", "src/**/*.test.js", "src/**/*.spec.jsx", "src/**/*.test.jsx"],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/libs/shared/storybook/tsconfig.json b/libs/shared/storybook/tsconfig.json
index 6dca5acab..47c4b25cd 100644
--- a/libs/shared/storybook/tsconfig.json
+++ b/libs/shared/storybook/tsconfig.json
@@ -3,14 +3,13 @@
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
- "strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"jsx": "react-jsx"
},
- "files": [],
+ "files": ["../../../libs/shared/theme/src/theme.d.ts"],
"include": [],
"references": [
{
diff --git a/libs/shared/theme/src/theme.d.ts b/libs/shared/theme/src/theme.d.ts
new file mode 100644
index 000000000..d6b375e4d
--- /dev/null
+++ b/libs/shared/theme/src/theme.d.ts
@@ -0,0 +1,29 @@
+import '@mui/material/styles';
+
+declare module '@mui/material/styles' {
+ interface TypeBackground {
+ gradient1: string;
+ gradient2: string;
+ gradient3: string;
+ gradientSuccess: string;
+ gradientHover: string;
+ gradientHoverActionButton: string;
+ }
+
+ interface TypeBackgroundOptions {
+ gradient1: string;
+ gradient2: string;
+ gradient3: string;
+ gradientSuccess: string;
+ gradientHover: string;
+ gradientHoverActionButton: string;
+ }
+
+ interface Shape {
+ cardBorderRadius: number;
+ }
+
+ interface ShapeOptions {
+ cardBorderRadius: number;
+ }
+}
diff --git a/libs/shared/theme/src/theme.tsx b/libs/shared/theme/src/theme.tsx
index 9b90ffdd0..f58554f2a 100644
--- a/libs/shared/theme/src/theme.tsx
+++ b/libs/shared/theme/src/theme.tsx
@@ -4,34 +4,6 @@ import {
} from '@mui/material/styles';
import shadows from '@mui/material/styles/shadows';
-declare module '@mui/material/styles' {
- interface TypeBackground {
- gradient1: string;
- gradient2: string;
- gradient3: string;
- gradientSuccess: string;
- gradientHover: string;
- gradientHoverActionButton: string;
- }
-
- interface TypeBackgroundOptions {
- gradient1: string;
- gradient2: string;
- gradient3: string;
- gradientSuccess: string;
- gradientHover: string;
- gradientHoverActionButton: string;
- }
-
- interface Shape {
- cardBorderRadius: number;
- }
-
- interface ShapeOptions {
- cardBorderRadius: number;
- }
-}
-
export const theme = extendTheme({
colorSchemes: {
dark: {
diff --git a/libs/shared/theme/tsconfig.lib.json b/libs/shared/theme/tsconfig.lib.json
index 7b862025e..79e57218a 100644
--- a/libs/shared/theme/tsconfig.lib.json
+++ b/libs/shared/theme/tsconfig.lib.json
@@ -6,7 +6,8 @@
},
"files": [
"../../../node_modules/@nx/react/typings/cssmodule.d.ts",
- "../../../node_modules/@nx/react/typings/image.d.ts"
+ "../../../node_modules/@nx/react/typings/image.d.ts",
+ "./src/theme.d.ts"
],
"exclude": [
"jest.config.ts",
diff --git a/libs/shared/utils/.babelrc b/libs/shared/utils/.babelrc
new file mode 100644
index 000000000..1ea870ead
--- /dev/null
+++ b/libs/shared/utils/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/libs/shared/utils/.eslintrc.json b/libs/shared/utils/.eslintrc.json
new file mode 100644
index 000000000..a786f2cf3
--- /dev/null
+++ b/libs/shared/utils/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/libs/shared/utils/README.md b/libs/shared/utils/README.md
new file mode 100644
index 000000000..038826ff7
--- /dev/null
+++ b/libs/shared/utils/README.md
@@ -0,0 +1,7 @@
+# shared-utils
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test shared-utils` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/shared/utils/project.json b/libs/shared/utils/project.json
new file mode 100644
index 000000000..f2d296b69
--- /dev/null
+++ b/libs/shared/utils/project.json
@@ -0,0 +1,20 @@
+{
+ "name": "shared-utils",
+ "$schema": "../../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "libs/shared/utils/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": [
+ "{options.outputFile}"
+ ],
+ "options": {
+ "lintFilePatterns": [
+ "libs/shared/utils/**/*.{ts,tsx,js,jsx}"
+ ]
+ }
+ }
+ }
+}
diff --git a/libs/shared/utils/src/BigDecimal.ts b/libs/shared/utils/src/BigDecimal.ts
new file mode 100644
index 000000000..4d6ef7d19
--- /dev/null
+++ b/libs/shared/utils/src/BigDecimal.ts
@@ -0,0 +1,108 @@
+import { formatUnits, parseUnits } from 'viem';
+
+const DEFAULT_DECIMALS = 18;
+
+export class BigDecimal {
+ value: bigint;
+ decimals: number;
+
+ constructor(num: bigint, decimals = DEFAULT_DECIMALS) {
+ this.value = num ? (typeof num === 'bigint' ? num : BigInt(num)) : 0n;
+ this.decimals = decimals;
+ }
+
+ static ZERO(): BigDecimal {
+ return new BigDecimal(0n, DEFAULT_DECIMALS);
+ }
+
+ static ONE(decimals = DEFAULT_DECIMALS): BigDecimal {
+ return new BigDecimal(parseUnits('1', decimals), decimals);
+ }
+
+ static parse(
+ amountStr: `${number}`,
+ decimals = DEFAULT_DECIMALS,
+ ): BigDecimal {
+ return new BigDecimal(parseUnits(amountStr, decimals), decimals);
+ }
+
+ static fromSimple(
+ amountNum: number,
+ decimals = DEFAULT_DECIMALS,
+ ): BigDecimal {
+ return new BigDecimal(BigInt(amountNum), decimals);
+ }
+
+ get string(): string {
+ return formatUnits(this.value, this.decimals);
+ }
+
+ get simple(): number {
+ return parseFloat(this.string);
+ }
+
+ get simpleRounded(): number {
+ return parseFloat(this.simple.toFixed(3).slice(0, -1));
+ }
+
+ toJSON(): string {
+ return JSON.stringify({
+ decimals: this.decimals,
+ value: this.value.toString(),
+ });
+ }
+
+ toFixed(decimalPlaces = 2): number {
+ return parseFloat(this.simple.toFixed(decimalPlaces + 1).slice(0, -1));
+ }
+
+ toPercent(decimalPlaces = 2): number {
+ return parseFloat((this.simple * 100).toFixed(decimalPlaces));
+ }
+
+ format(decimalPlaces = 2): string {
+ return Intl.NumberFormat('en', {
+ maximumFractionDigits: decimalPlaces,
+ }).format(this.simple);
+ }
+
+ add(other: BigDecimal) {
+ this.value += other.value;
+ }
+
+ sub(other: BigDecimal) {
+ this.value -= other.value;
+ }
+
+ mul(other: BigDecimal) {
+ this.value *= other.value;
+ }
+
+ div(other: BigDecimal) {
+ this.value /= other.value;
+ }
+
+ eq(other: BigDecimal): boolean {
+ return this.value === other.value;
+ }
+
+ gt(other: BigDecimal): boolean {
+ return this.value > other.value;
+ }
+
+ gte(other: BigDecimal): boolean {
+ return this.value >= other.value;
+ }
+
+ lt(other: BigDecimal): boolean {
+ return this.value < other.value;
+ }
+
+ lte(other: BigDecimal): boolean {
+ return this.value <= other.value;
+ }
+
+ isZero(): boolean {
+ return this.value === 0n;
+ }
+}
diff --git a/libs/shared/utils/src/composeContext.ts b/libs/shared/utils/src/composeContext.ts
new file mode 100644
index 000000000..2c602eb20
--- /dev/null
+++ b/libs/shared/utils/src/composeContext.ts
@@ -0,0 +1,23 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { createElement } from 'react';
+
+import type { ReactNode } from 'react';
+
+/**
+ * Compose all contexts into one component.
+ * This is an equivalent to nesting jsx element, it simply helps readabilty.
+ * Pass ContextProvider as first array element, optional props as second.
+ * Merge order follows paths input.
+ *
+ * @param contexts - [Context, props] arrays for composition
+ * @param Child - Child element
+ * @returns ContextProvider
+ */
+export const composeContexts: (
+ contexts: [any, any?][],
+ Child: ReactNode,
+) => any = (contexts, Child) =>
+ contexts.reduceRight(
+ (children, [Component, props]) => createElement(Component, props, children),
+ Child,
+ );
diff --git a/libs/shared/utils/src/formatters.ts b/libs/shared/utils/src/formatters.ts
new file mode 100644
index 000000000..8c48d2ca1
--- /dev/null
+++ b/libs/shared/utils/src/formatters.ts
@@ -0,0 +1,2 @@
+export const middleTruncate = (address: string, start = 6, end = 4): string =>
+ `${address.slice(0, start)}…${address.slice(-end)}`;
diff --git a/libs/shared/utils/src/index.ts b/libs/shared/utils/src/index.ts
new file mode 100644
index 000000000..434d1e6ba
--- /dev/null
+++ b/libs/shared/utils/src/index.ts
@@ -0,0 +1,5 @@
+export * from './BigDecimal';
+export * from './composeContext';
+export * from './formatters';
+export * from './isNilOrEmpty';
+export * from './types';
diff --git a/libs/shared/utils/src/isNilOrEmpty.ts b/libs/shared/utils/src/isNilOrEmpty.ts
new file mode 100644
index 000000000..f32c68272
--- /dev/null
+++ b/libs/shared/utils/src/isNilOrEmpty.ts
@@ -0,0 +1,15 @@
+export const isNilOrEmpty = (value: unknown): boolean => {
+ if (value === null || value === undefined) {
+ return true;
+ }
+
+ if (Array.isArray(value) || typeof value === 'string') {
+ return value.length === 0;
+ }
+
+ if (typeof value === 'object') {
+ return Object.keys(value).length === 0;
+ }
+
+ return false;
+};
diff --git a/libs/shared/utils/src/types.ts b/libs/shared/utils/src/types.ts
new file mode 100644
index 000000000..39a8b3c95
--- /dev/null
+++ b/libs/shared/utils/src/types.ts
@@ -0,0 +1,38 @@
+import type { ReactNode } from 'react';
+
+export type Children = { children?: ReactNode };
+
+export type RequiredChildren = Required;
+
+export type WithChildren = Omit & Children;
+
+export type WithRequiredChildren = Omit & RequiredChildren;
+
+export type Mutable = {
+ -readonly [K in keyof T]: T[K];
+};
+
+export type RecursiveMutable = {
+ -readonly [K in keyof T]: T[K] extends (infer U)[]
+ ? RecursiveMutable[]
+ : T[K] extends object
+ ? RecursiveMutable
+ : T[K];
+};
+
+export type OptionalBy = Omit & Partial>;
+
+export type RequiredBy = T & { [P in K]-?: T[P] };
+
+export type RecursivePartial = {
+ [K in keyof T]?: T[K] extends (infer U)[]
+ ? RecursivePartial[]
+ : T[K] extends object
+ ? RecursivePartial
+ : T[K];
+};
+
+export type ArrayElement =
+ ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
+
+export type HexAddress = `0x${string}`;
diff --git a/libs/shared/utils/tsconfig.json b/libs/shared/utils/tsconfig.json
new file mode 100644
index 000000000..90fcf85c5
--- /dev/null
+++ b/libs/shared/utils/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": false
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ],
+ "extends": "../../../tsconfig.base.json"
+}
diff --git a/libs/shared/utils/tsconfig.lib.json b/libs/shared/utils/tsconfig.lib.json
new file mode 100644
index 000000000..c96232320
--- /dev/null
+++ b/libs/shared/utils/tsconfig.lib.json
@@ -0,0 +1,13 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "types": ["node"]
+ },
+ "files": [
+ "../../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../../node_modules/@nx/react/typings/image.d.ts"
+ ],
+ "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.spec.tsx", "src/**/*.test.tsx", "src/**/*.spec.js", "src/**/*.test.js", "src/**/*.spec.jsx", "src/**/*.test.jsx"],
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/nx.json b/nx.json
index 9acf1a54d..4fcb845ac 100644
--- a/nx.json
+++ b/nx.json
@@ -16,14 +16,25 @@
},
"targetDefaults": {
"build": {
- "dependsOn": ["^build"],
- "inputs": ["production", "^production"]
+ "dependsOn": [
+ "^build"
+ ],
+ "inputs": [
+ "production",
+ "^production"
+ ]
},
"e2e": {
- "inputs": ["default", "^production"]
+ "inputs": [
+ "default",
+ "^production"
+ ]
},
"test": {
- "inputs": ["default", "^production"]
+ "inputs": [
+ "default",
+ "^production"
+ ]
},
"lint": {
"inputs": [
@@ -42,7 +53,10 @@
}
},
"namedInputs": {
- "default": ["{projectRoot}/**/*", "sharedGlobals"],
+ "default": [
+ "{projectRoot}/**/*",
+ "sharedGlobals"
+ ],
"production": [
"default",
"!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
diff --git a/package.json b/package.json
index a44beef88..1e01e55c8 100644
--- a/package.json
+++ b/package.json
@@ -5,22 +5,29 @@
"scripts": {
"build-storybook": "nx build-storybook shared-storybook --verbose",
"storybook": "nx storybook shared-storybook",
- "oeth": "nx serve oeth"
+ "oeth": "nx serve oeth",
+ "ousd": "nx serve ousd"
},
"private": true,
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@mui/material": "^5.14.3",
+ "@rainbow-me/rainbowkit": "^1.0.9",
"@react-hookz/web": "^23.1.0",
"@tanstack/react-query": "^4.32.6",
"@tanstack/react-table": "^8.9.3",
+ "axios": "^1.4.0",
+ "immer": "^10.0.2",
"lodash": "^4.17.21",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-intl": "^6.4.4",
"react-router-dom": "6.14.2",
- "tslib": "^2.6.1"
+ "react-tracked": "^1.7.11",
+ "tslib": "^2.6.1",
+ "viem": "^1.7.0",
+ "wagmi": "^1.3.10"
},
"devDependencies": {
"@babel/preset-react": "^7.14.5",
@@ -54,6 +61,7 @@
"@vitest/coverage-c8": "~0.33.0",
"@vitest/ui": "~0.34.1",
"babel-plugin-formatjs": "^10.5.3",
+ "buffer": "^6.0.3",
"danger": "^11.2.7",
"danger-plugin-github-notion": "^0.0.3",
"eslint": "~8.46.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e82b75451..d61b0f81b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,6 +14,9 @@ dependencies:
'@mui/material':
specifier: ^5.14.3
version: 5.14.3(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0)
+ '@rainbow-me/rainbowkit':
+ specifier: ^1.0.9
+ version: 1.0.9(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0)(viem@1.7.0)(wagmi@1.3.10)
'@react-hookz/web':
specifier: ^23.1.0
version: 23.1.0(react-dom@18.2.0)(react@18.2.0)
@@ -23,6 +26,12 @@ dependencies:
'@tanstack/react-table':
specifier: ^8.9.3
version: 8.9.3(react-dom@18.2.0)(react@18.2.0)
+ axios:
+ specifier: ^1.4.0
+ version: 1.4.0
+ immer:
+ specifier: ^10.0.2
+ version: 10.0.2
lodash:
specifier: ^4.17.21
version: 4.17.21
@@ -38,9 +47,18 @@ dependencies:
react-router-dom:
specifier: 6.14.2
version: 6.14.2(react-dom@18.2.0)(react@18.2.0)
+ react-tracked:
+ specifier: ^1.7.11
+ version: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)
tslib:
specifier: ^2.6.1
version: 2.6.1
+ viem:
+ specifier: ^1.7.0
+ version: 1.7.0(typescript@5.1.6)
+ wagmi:
+ specifier: ^1.3.10
+ version: 1.3.10(@types/react@18.2.18)(immer@10.0.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0)
devDependencies:
'@babel/preset-react':
@@ -136,6 +154,9 @@ devDependencies:
babel-plugin-formatjs:
specifier: ^10.5.3
version: 10.5.3
+ buffer:
+ specifier: ^6.0.3
+ version: 6.0.3
danger:
specifier: ^11.2.7
version: 11.2.7
@@ -223,6 +244,10 @@ packages:
resolution: {integrity: sha512-+RNNcQvw2V1bmnBTPAtOLfW/9mhH2vC67+rUSi5T8EtEWt6lEnGNY2GuhZ1/YwbgikT1TkhvidCDmN5Q5YCo/w==}
dev: true
+ /@adraffy/ens-normalize@1.9.0:
+ resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==}
+ dev: false
+
/@ampproject/remapping@2.2.1:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
@@ -1662,6 +1687,34 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
+ /@coinbase/wallet-sdk@3.7.1:
+ resolution: {integrity: sha512-LjyoDCB+7p0waQXfK+fUgcAs3Ezk6S6e+LYaoFjpJ6c9VTop3NyZF40Pi7df4z7QJohCwzuIDjz0Rhtig6Y7Pg==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@metamask/safe-event-emitter': 2.0.0
+ '@solana/web3.js': 1.78.4
+ bind-decorator: 1.0.11
+ bn.js: 5.2.1
+ buffer: 6.0.3
+ clsx: 1.2.1
+ eth-block-tracker: 6.1.0
+ eth-json-rpc-filters: 5.1.0
+ eth-rpc-errors: 4.0.2
+ json-rpc-engine: 6.1.0
+ keccak: 3.0.3
+ preact: 10.17.1
+ qs: 6.11.2
+ rxjs: 6.6.7
+ sha.js: 2.4.11
+ stream-browserify: 3.0.0
+ util: 0.12.5
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+ dev: false
+
/@colors/colors@1.5.0:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
@@ -1707,6 +1760,10 @@ packages:
stylis: 4.2.0
dev: false
+ /@emotion/hash@0.8.0:
+ resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
+ dev: false
+
/@emotion/hash@0.9.1:
resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
dev: false
@@ -2364,6 +2421,20 @@ packages:
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
dev: true
+ /@ledgerhq/connect-kit-loader@1.1.2:
+ resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==}
+ dev: false
+
+ /@lit-labs/ssr-dom-shim@1.1.1:
+ resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==}
+ dev: false
+
+ /@lit/reactive-element@1.6.3:
+ resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.1.1
+ dev: false
+
/@mdx-js/react@2.3.0(react@18.2.0):
resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==}
peerDependencies:
@@ -2374,6 +2445,22 @@ packages:
react: 18.2.0
dev: true
+ /@metamask/safe-event-emitter@2.0.0:
+ resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==}
+ dev: false
+
+ /@metamask/utils@3.6.0:
+ resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@types/debug': 4.1.8
+ debug: 4.3.4
+ semver: 7.5.4
+ superstruct: 1.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/@microsoft/api-extractor-model@7.27.5(@types/node@18.14.2):
resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==}
dependencies:
@@ -2417,6 +2504,67 @@ packages:
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
dev: true
+ /@motionone/animation@10.15.1:
+ resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==}
+ dependencies:
+ '@motionone/easing': 10.15.1
+ '@motionone/types': 10.15.1
+ '@motionone/utils': 10.15.1
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/dom@10.16.2:
+ resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==}
+ dependencies:
+ '@motionone/animation': 10.15.1
+ '@motionone/generators': 10.15.1
+ '@motionone/types': 10.15.1
+ '@motionone/utils': 10.15.1
+ hey-listen: 1.0.8
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/easing@10.15.1:
+ resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==}
+ dependencies:
+ '@motionone/utils': 10.15.1
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/generators@10.15.1:
+ resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==}
+ dependencies:
+ '@motionone/types': 10.15.1
+ '@motionone/utils': 10.15.1
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/svelte@10.16.2:
+ resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==}
+ dependencies:
+ '@motionone/dom': 10.16.2
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/types@10.15.1:
+ resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==}
+ dev: false
+
+ /@motionone/utils@10.15.1:
+ resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==}
+ dependencies:
+ '@motionone/types': 10.15.1
+ hey-listen: 1.0.8
+ tslib: 2.6.1
+ dev: false
+
+ /@motionone/vue@10.16.2:
+ resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==}
+ dependencies:
+ '@motionone/dom': 10.16.2
+ tslib: 2.6.1
+ dev: false
+
/@mui/base@5.0.0-beta.9(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-gm6gnPnc/lS5Z3neH0iuOrK7IbS02+oh6KsMtXYLhI6bJpHs+PNWFsBmISx7x4FSPVJZvZkb8Bw6pEXpIMFt7Q==}
engines: {node: '>=12.0.0'}
@@ -2575,6 +2723,38 @@ packages:
react-is: 18.2.0
dev: false
+ /@noble/curves@1.0.0:
+ resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==}
+ dependencies:
+ '@noble/hashes': 1.3.0
+ dev: false
+
+ /@noble/curves@1.1.0:
+ resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==}
+ dependencies:
+ '@noble/hashes': 1.3.1
+ dev: false
+
+ /@noble/curves@1.2.0:
+ resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
+ dependencies:
+ '@noble/hashes': 1.3.2
+ dev: false
+
+ /@noble/hashes@1.3.0:
+ resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==}
+ dev: false
+
+ /@noble/hashes@1.3.1:
+ resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==}
+ engines: {node: '>= 16'}
+ dev: false
+
+ /@noble/hashes@1.3.2:
+ resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
+ engines: {node: '>= 16'}
+ dev: false
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -3979,6 +4159,29 @@ packages:
'@babel/runtime': 7.22.10
dev: true
+ /@rainbow-me/rainbowkit@1.0.9(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0)(viem@1.7.0)(wagmi@1.3.10):
+ resolution: {integrity: sha512-BiMPCWDIR7L44Rq/6j09CPJd7qzUF3vhXo/EIpCF+J0AxQQEWDjwZ+RuWez2XTpzlFjGYl+RwEHZQzX1dKVr+w==}
+ engines: {node: '>=12.4'}
+ peerDependencies:
+ react: '>=17'
+ react-dom: '>=17'
+ viem: ~0.3.19 || ^1.0.0
+ wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0
+ dependencies:
+ '@vanilla-extract/css': 1.9.1
+ '@vanilla-extract/dynamic': 2.0.2
+ '@vanilla-extract/sprinkles': 1.5.0(@vanilla-extract/css@1.9.1)
+ clsx: 1.1.1
+ qrcode: 1.5.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.4(@types/react@18.2.18)(react@18.2.0)
+ viem: 1.7.0(typescript@5.1.6)
+ wagmi: 1.3.10(@types/react@18.2.18)(immer@10.0.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
/@react-hookz/deep-equal@1.0.4:
resolution: {integrity: sha512-N56fTrAPUDz/R423pag+n6TXWbvlBZDtTehaGFjK0InmN+V2OFWLE/WmORhmn6Ce7dlwH5+tQN1LJFw3ngTJVg==}
dev: false
@@ -4051,6 +4254,72 @@ packages:
string-argv: 0.3.2
dev: true
+ /@safe-global/safe-apps-provider@0.17.1(typescript@5.1.6):
+ resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==}
+ dependencies:
+ '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.1.6)
+ events: 3.3.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /@safe-global/safe-apps-sdk@8.0.0(typescript@5.1.6):
+ resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==}
+ dependencies:
+ '@safe-global/safe-gateway-typescript-sdk': 3.10.0
+ viem: 1.7.0(typescript@5.1.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /@safe-global/safe-apps-sdk@8.1.0(typescript@5.1.6):
+ resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==}
+ dependencies:
+ '@safe-global/safe-gateway-typescript-sdk': 3.10.0
+ viem: 1.7.0(typescript@5.1.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /@safe-global/safe-gateway-typescript-sdk@3.10.0:
+ resolution: {integrity: sha512-nhWjFRRgrGz4uZbyQ3Hgm4si1AixCWlnvi5WUCq/+V+e8EoA2Apj9xJEt8zzXvtELlddFqkH2sfTFy9LIjGXKg==}
+ dependencies:
+ cross-fetch: 3.1.8
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@scure/base@1.1.1:
+ resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
+ dev: false
+
+ /@scure/bip32@1.3.0:
+ resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==}
+ dependencies:
+ '@noble/curves': 1.0.0
+ '@noble/hashes': 1.3.0
+ '@scure/base': 1.1.1
+ dev: false
+
+ /@scure/bip39@1.2.0:
+ resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==}
+ dependencies:
+ '@noble/hashes': 1.3.0
+ '@scure/base': 1.1.1
+ dev: false
+
/@sinclair/typebox@0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
@@ -4060,6 +4329,153 @@ packages:
engines: {node: '>=10'}
dev: true
+ /@solana/buffer-layout@4.0.1:
+ resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==}
+ engines: {node: '>=5.10'}
+ dependencies:
+ buffer: 6.0.3
+ dev: false
+
+ /@solana/web3.js@1.78.4:
+ resolution: {integrity: sha512-up5VG1dK+GPhykmuMIozJZBbVqpm77vbOG6/r5dS7NBGZonwHfTLdBbsYc3rjmaQ4DpCXUa3tUc4RZHRORvZrw==}
+ dependencies:
+ '@babel/runtime': 7.22.10
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@solana/buffer-layout': 4.0.1
+ agentkeepalive: 4.5.0
+ bigint-buffer: 1.1.5
+ bn.js: 5.2.1
+ borsh: 0.7.0
+ bs58: 4.0.1
+ buffer: 6.0.3
+ fast-stable-stringify: 1.0.0
+ jayson: 4.1.0
+ node-fetch: 2.6.12
+ rpc-websockets: 7.6.0
+ superstruct: 0.14.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - utf-8-validate
+ dev: false
+
+ /@stablelib/aead@1.0.1:
+ resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==}
+ dev: false
+
+ /@stablelib/binary@1.0.1:
+ resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==}
+ dependencies:
+ '@stablelib/int': 1.0.1
+ dev: false
+
+ /@stablelib/bytes@1.0.1:
+ resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==}
+ dev: false
+
+ /@stablelib/chacha20poly1305@1.0.1:
+ resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==}
+ dependencies:
+ '@stablelib/aead': 1.0.1
+ '@stablelib/binary': 1.0.1
+ '@stablelib/chacha': 1.0.1
+ '@stablelib/constant-time': 1.0.1
+ '@stablelib/poly1305': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/chacha@1.0.1:
+ resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==}
+ dependencies:
+ '@stablelib/binary': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/constant-time@1.0.1:
+ resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==}
+ dev: false
+
+ /@stablelib/ed25519@1.0.3:
+ resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==}
+ dependencies:
+ '@stablelib/random': 1.0.2
+ '@stablelib/sha512': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/hash@1.0.1:
+ resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==}
+ dev: false
+
+ /@stablelib/hkdf@1.0.1:
+ resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==}
+ dependencies:
+ '@stablelib/hash': 1.0.1
+ '@stablelib/hmac': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/hmac@1.0.1:
+ resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==}
+ dependencies:
+ '@stablelib/constant-time': 1.0.1
+ '@stablelib/hash': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/int@1.0.1:
+ resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==}
+ dev: false
+
+ /@stablelib/keyagreement@1.0.1:
+ resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==}
+ dependencies:
+ '@stablelib/bytes': 1.0.1
+ dev: false
+
+ /@stablelib/poly1305@1.0.1:
+ resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==}
+ dependencies:
+ '@stablelib/constant-time': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/random@1.0.2:
+ resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==}
+ dependencies:
+ '@stablelib/binary': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/sha256@1.0.1:
+ resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==}
+ dependencies:
+ '@stablelib/binary': 1.0.1
+ '@stablelib/hash': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/sha512@1.0.1:
+ resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==}
+ dependencies:
+ '@stablelib/binary': 1.0.1
+ '@stablelib/hash': 1.0.1
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
+ /@stablelib/wipe@1.0.1:
+ resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==}
+ dev: false
+
+ /@stablelib/x25519@1.0.3:
+ resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==}
+ dependencies:
+ '@stablelib/keyagreement': 1.0.1
+ '@stablelib/random': 1.0.2
+ '@stablelib/wipe': 1.0.1
+ dev: false
+
/@storybook/addon-actions@7.2.1(@types/react-dom@18.2.7)(@types/react@18.2.18)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-YUiKksgRIUm80eZacj/x14BEYCQY5iel1/Wo6mrTP7bVQrUNiCmnINSrup0DObg7lmIaq00h3ow7gKeYJ+x6zw==}
peerDependencies:
@@ -4588,7 +5004,7 @@ packages:
util: 0.12.5
util-deprecate: 1.0.2
watchpack: 2.4.0
- ws: 8.13.0
+ ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- encoding
@@ -5179,6 +5595,31 @@ packages:
resolution: {integrity: sha512-YVB+mVWENQwPyv+40qO7flMgKZ0uI41Ph7qXC2Zf1ft5AIGfnXnMZyifB2ghhZ27u+5wm5mlzO4Y6lwwadzxCA==}
dev: false
+ /@tanstack/query-core@4.33.0:
+ resolution: {integrity: sha512-qYu73ptvnzRh6se2nyBIDHGBQvPY1XXl3yR769B7B6mIDD7s+EZhdlWHQ67JI6UOTFRaI7wupnTnwJ3gE0Mr/g==}
+ dev: false
+
+ /@tanstack/query-persist-client-core@4.33.0:
+ resolution: {integrity: sha512-3P16+2JjcUU5CHi10jJuwd0ZQYvQtSuzLvCUCjVuAnj3GZjfSso1v8t6WAObAr9RPuIC6vDXeOQ3mr07EF/NxQ==}
+ dependencies:
+ '@tanstack/query-core': 4.33.0
+ dev: false
+
+ /@tanstack/query-sync-storage-persister@4.33.0:
+ resolution: {integrity: sha512-V6igMcdEOXPRpvmNFQ6I/iJaw9NhxWy7x8PWamm2cgSsLi8bHaDvUVuWkZm+ikI47QjoCUk7qll/82JYLaH+pw==}
+ dependencies:
+ '@tanstack/query-persist-client-core': 4.33.0
+ dev: false
+
+ /@tanstack/react-query-persist-client@4.33.0(@tanstack/react-query@4.32.6):
+ resolution: {integrity: sha512-B3q0r1tqTTSkd9vctyqFj28xdGZJ+Dnr/7H05Ta1JF1w7EauVQl8ILrmXADecwvILnr1xoZO6lvi2W+mZxMinw==}
+ peerDependencies:
+ '@tanstack/react-query': ^4.33.0
+ dependencies:
+ '@tanstack/query-persist-client-core': 4.33.0
+ '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0)
+ dev: false
+
/@tanstack/react-query@4.32.6(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-AITu/IKJJJXsHHeXNBy5bclu12t08usMCY0vFC2dh9SP/w6JAk5U9GwfjOIPj3p+ATADZvxQPe8UiCtMLNeQbg==}
peerDependencies:
@@ -5373,7 +5814,12 @@ packages:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
'@types/node': 18.14.2
- dev: true
+
+ /@types/debug@4.1.8:
+ resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
+ dependencies:
+ '@types/ms': 0.7.31
+ dev: false
/@types/detect-port@1.3.3:
resolution: {integrity: sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg==}
@@ -5530,6 +5976,10 @@ packages:
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
dev: true
+ /@types/ms@0.7.31:
+ resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
+ dev: false
+
/@types/node-fetch@2.6.4:
resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==}
dependencies:
@@ -5537,13 +5987,16 @@ packages:
form-data: 3.0.1
dev: true
+ /@types/node@12.20.55:
+ resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+ dev: false
+
/@types/node@16.18.39:
resolution: {integrity: sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==}
dev: true
/@types/node@18.14.2:
resolution: {integrity: sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==}
- dev: true
/@types/normalize-package-data@2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@@ -5634,10 +6087,26 @@ packages:
'@types/jest': 29.5.3
dev: true
+ /@types/trusted-types@2.0.3:
+ resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
+ dev: false
+
/@types/unist@2.0.7:
resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
dev: true
+ /@types/ws@7.4.7:
+ resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
+ dependencies:
+ '@types/node': 18.14.2
+ dev: false
+
+ /@types/ws@8.5.5:
+ resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==}
+ dependencies:
+ '@types/node': 18.14.2
+ dev: false
+
/@types/yargs-parser@21.0.0:
resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
dev: true
@@ -5902,6 +6371,40 @@ packages:
eslint-visitor-keys: 3.4.2
dev: true
+ /@vanilla-extract/css@1.9.1:
+ resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==}
+ dependencies:
+ '@emotion/hash': 0.8.0
+ '@vanilla-extract/private': 1.0.3
+ ahocorasick: 1.0.2
+ chalk: 4.1.2
+ css-what: 5.1.0
+ cssesc: 3.0.0
+ csstype: 3.1.2
+ deep-object-diff: 1.1.9
+ deepmerge: 4.3.1
+ media-query-parser: 2.0.2
+ outdent: 0.8.0
+ dev: false
+
+ /@vanilla-extract/dynamic@2.0.2:
+ resolution: {integrity: sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==}
+ dependencies:
+ '@vanilla-extract/private': 1.0.3
+ dev: false
+
+ /@vanilla-extract/private@1.0.3:
+ resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==}
+ dev: false
+
+ /@vanilla-extract/sprinkles@1.5.0(@vanilla-extract/css@1.9.1):
+ resolution: {integrity: sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==}
+ peerDependencies:
+ '@vanilla-extract/css': ^1.0.0
+ dependencies:
+ '@vanilla-extract/css': 1.9.1
+ dev: false
+
/@vitejs/plugin-react@3.1.0(vite@4.4.9):
resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -6072,27 +6575,476 @@ packages:
- typescript
dev: true
- /@webassemblyjs/ast@1.11.6:
- resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
+ /@wagmi/chains@1.7.0(typescript@5.1.6):
+ resolution: {integrity: sha512-TKVeHv0GqP5sV1yQ8BDGYToAFezPnCexbbBpeH14x7ywi5a1dDStPffpt9x+ytE6LJWkZ6pAMs/HNWXBQ5Nqmw==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
dependencies:
- '@webassemblyjs/helper-numbers': 1.11.6
- '@webassemblyjs/helper-wasm-bytecode': 1.11.6
- dev: true
-
- /@webassemblyjs/floating-point-hex-parser@1.11.6:
- resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
- dev: true
-
- /@webassemblyjs/helper-api-error@1.11.6:
- resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
- dev: true
-
- /@webassemblyjs/helper-buffer@1.11.6:
- resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==}
- dev: true
+ typescript: 5.1.6
+ dev: false
- /@webassemblyjs/helper-numbers@1.11.6:
- resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
+ /@wagmi/connectors@2.7.0(@wagmi/chains@1.7.0)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0):
+ resolution: {integrity: sha512-1KOL0HTJl5kzSC/YdKwFwiokr6poUQn1V/tcT0TpG3iH2x0lSM7FTkvCjVVY/6lKzTXrLlo9y2aE7AsOPnkvqg==}
+ peerDependencies:
+ '@wagmi/chains': '>=1.7.0'
+ typescript: '>=5.0.4'
+ viem: '>=0.3.35'
+ peerDependenciesMeta:
+ '@wagmi/chains':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@coinbase/wallet-sdk': 3.7.1
+ '@ledgerhq/connect-kit-loader': 1.1.2
+ '@safe-global/safe-apps-provider': 0.17.1(typescript@5.1.6)
+ '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.1.6)
+ '@wagmi/chains': 1.7.0(typescript@5.1.6)
+ '@walletconnect/ethereum-provider': 2.9.2(@walletconnect/modal@2.6.1)
+ '@walletconnect/legacy-provider': 2.0.0
+ '@walletconnect/modal': 2.6.1(react@18.2.0)
+ '@walletconnect/utils': 2.9.2
+ abitype: 0.8.7(typescript@5.1.6)
+ eventemitter3: 4.0.7
+ typescript: 5.1.6
+ viem: 1.7.0(typescript@5.1.6)
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - bufferutil
+ - encoding
+ - lokijs
+ - react
+ - supports-color
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /@wagmi/core@1.3.9(@types/react@18.2.18)(immer@10.0.2)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0):
+ resolution: {integrity: sha512-SrnABCrsDvhiMCLLLyzyHnZbEumsFT/XWlJJQZeyEDcixL95R7XQwOaaoRI4MpNilCtMtu3jzN57tA5Z2iA+kw==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ viem: '>=0.3.35'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@wagmi/chains': 1.7.0(typescript@5.1.6)
+ '@wagmi/connectors': 2.7.0(@wagmi/chains@1.7.0)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0)
+ abitype: 0.8.7(typescript@5.1.6)
+ eventemitter3: 4.0.7
+ typescript: 5.1.6
+ viem: 1.7.0(typescript@5.1.6)
+ zustand: 4.4.1(@types/react@18.2.18)(immer@10.0.2)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - '@types/react'
+ - bufferutil
+ - encoding
+ - immer
+ - lokijs
+ - react
+ - supports-color
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /@walletconnect/core@2.9.2:
+ resolution: {integrity: sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ==}
+ dependencies:
+ '@walletconnect/heartbeat': 1.2.1
+ '@walletconnect/jsonrpc-provider': 1.0.13
+ '@walletconnect/jsonrpc-types': 1.0.3
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/jsonrpc-ws-connection': 1.0.13
+ '@walletconnect/keyvaluestorage': 1.0.2
+ '@walletconnect/logger': 2.0.1
+ '@walletconnect/relay-api': 1.0.9
+ '@walletconnect/relay-auth': 1.0.4
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.9.2
+ '@walletconnect/utils': 2.9.2
+ events: 3.3.0
+ lodash.isequal: 4.5.0
+ uint8arrays: 3.1.1
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - bufferutil
+ - lokijs
+ - utf-8-validate
+ dev: false
+
+ /@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: false
+
+ /@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: false
+
+ /@walletconnect/environment@1.0.1:
+ resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/ethereum-provider@2.9.2(@walletconnect/modal@2.6.1):
+ resolution: {integrity: sha512-eO1dkhZffV1g7vpG19XUJTw09M/bwGUwwhy1mJ3AOPbOSbMPvwiCuRz2Kbtm1g9B0Jv15Dl+TvJ9vTgYF8zoZg==}
+ peerDependencies:
+ '@walletconnect/modal': '>=2'
+ peerDependenciesMeta:
+ '@walletconnect/modal':
+ optional: true
+ dependencies:
+ '@walletconnect/jsonrpc-http-connection': 1.0.7
+ '@walletconnect/jsonrpc-provider': 1.0.13
+ '@walletconnect/jsonrpc-types': 1.0.3
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/modal': 2.6.1(react@18.2.0)
+ '@walletconnect/sign-client': 2.9.2
+ '@walletconnect/types': 2.9.2
+ '@walletconnect/universal-provider': 2.9.2
+ '@walletconnect/utils': 2.9.2
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - bufferutil
+ - encoding
+ - lokijs
+ - utf-8-validate
+ dev: false
+
+ /@walletconnect/events@1.0.1:
+ resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==}
+ dependencies:
+ keyvaluestorage-interface: 1.0.0
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/heartbeat@1.2.1:
+ resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==}
+ dependencies:
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/time': 1.0.2
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/jsonrpc-http-connection@1.0.7:
+ resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==}
+ dependencies:
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/safe-json': 1.0.2
+ cross-fetch: 3.1.8
+ tslib: 1.14.1
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@walletconnect/jsonrpc-provider@1.0.13:
+ resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==}
+ dependencies:
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/safe-json': 1.0.2
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/jsonrpc-types@1.0.3:
+ resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==}
+ dependencies:
+ keyvaluestorage-interface: 1.0.0
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/jsonrpc-utils@1.0.8:
+ resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==}
+ dependencies:
+ '@walletconnect/environment': 1.0.1
+ '@walletconnect/jsonrpc-types': 1.0.3
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/jsonrpc-ws-connection@1.0.13:
+ resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==}
+ dependencies:
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/safe-json': 1.0.2
+ events: 3.3.0
+ tslib: 1.14.1
+ ws: 7.5.9
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
+ /@walletconnect/keyvaluestorage@1.0.2:
+ resolution: {integrity: sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==}
+ peerDependencies:
+ '@react-native-async-storage/async-storage': 1.x
+ lokijs: 1.x
+ peerDependenciesMeta:
+ '@react-native-async-storage/async-storage':
+ optional: true
+ lokijs:
+ optional: true
+ dependencies:
+ safe-json-utils: 1.1.1
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/legacy-client@2.0.0:
+ resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==}
+ dependencies:
+ '@walletconnect/crypto': 1.0.3
+ '@walletconnect/encoding': 1.0.2
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/legacy-types': 2.0.0
+ '@walletconnect/legacy-utils': 2.0.0
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/window-getters': 1.0.1
+ '@walletconnect/window-metadata': 1.0.1
+ detect-browser: 5.3.0
+ query-string: 6.14.1
+ dev: false
+
+ /@walletconnect/legacy-modal@2.0.0:
+ resolution: {integrity: sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==}
+ dependencies:
+ '@walletconnect/legacy-types': 2.0.0
+ '@walletconnect/legacy-utils': 2.0.0
+ copy-to-clipboard: 3.3.3
+ preact: 10.17.1
+ qrcode: 1.5.3
+ dev: false
+
+ /@walletconnect/legacy-provider@2.0.0:
+ resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==}
+ dependencies:
+ '@walletconnect/jsonrpc-http-connection': 1.0.7
+ '@walletconnect/jsonrpc-provider': 1.0.13
+ '@walletconnect/legacy-client': 2.0.0
+ '@walletconnect/legacy-modal': 2.0.0
+ '@walletconnect/legacy-types': 2.0.0
+ '@walletconnect/legacy-utils': 2.0.0
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@walletconnect/legacy-types@2.0.0:
+ resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==}
+ dependencies:
+ '@walletconnect/jsonrpc-types': 1.0.3
+ dev: false
+
+ /@walletconnect/legacy-utils@2.0.0:
+ resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==}
+ dependencies:
+ '@walletconnect/encoding': 1.0.2
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/legacy-types': 2.0.0
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/window-getters': 1.0.1
+ '@walletconnect/window-metadata': 1.0.1
+ detect-browser: 5.3.0
+ query-string: 6.14.1
+ dev: false
+
+ /@walletconnect/logger@2.0.1:
+ resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==}
+ dependencies:
+ pino: 7.11.0
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/modal-core@2.6.1(react@18.2.0):
+ resolution: {integrity: sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ==}
+ dependencies:
+ valtio: 1.11.0(react@18.2.0)
+ transitivePeerDependencies:
+ - react
+ dev: false
+
+ /@walletconnect/modal-ui@2.6.1(react@18.2.0):
+ resolution: {integrity: sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA==}
+ dependencies:
+ '@walletconnect/modal-core': 2.6.1(react@18.2.0)
+ lit: 2.7.6
+ motion: 10.16.2
+ qrcode: 1.5.3
+ transitivePeerDependencies:
+ - react
+ dev: false
+
+ /@walletconnect/modal@2.6.1(react@18.2.0):
+ resolution: {integrity: sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw==}
+ dependencies:
+ '@walletconnect/modal-core': 2.6.1(react@18.2.0)
+ '@walletconnect/modal-ui': 2.6.1(react@18.2.0)
+ transitivePeerDependencies:
+ - react
+ dev: false
+
+ /@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: false
+
+ /@walletconnect/relay-api@1.0.9:
+ resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==}
+ dependencies:
+ '@walletconnect/jsonrpc-types': 1.0.3
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/relay-auth@1.0.4:
+ resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==}
+ dependencies:
+ '@stablelib/ed25519': 1.0.3
+ '@stablelib/random': 1.0.2
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ tslib: 1.14.1
+ uint8arrays: 3.1.1
+ dev: false
+
+ /@walletconnect/safe-json@1.0.2:
+ resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/sign-client@2.9.2:
+ resolution: {integrity: sha512-anRwnXKlR08lYllFMEarS01hp1gr6Q9XUgvacr749hoaC/AwGVlxYFdM8+MyYr3ozlA+2i599kjbK/mAebqdXg==}
+ dependencies:
+ '@walletconnect/core': 2.9.2
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/heartbeat': 1.2.1
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/logger': 2.0.1
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.9.2
+ '@walletconnect/utils': 2.9.2
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - bufferutil
+ - lokijs
+ - utf-8-validate
+ dev: false
+
+ /@walletconnect/time@1.0.2:
+ resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/types@2.9.2:
+ resolution: {integrity: sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A==}
+ dependencies:
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/heartbeat': 1.2.1
+ '@walletconnect/jsonrpc-types': 1.0.3
+ '@walletconnect/keyvaluestorage': 1.0.2
+ '@walletconnect/logger': 2.0.1
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - lokijs
+ dev: false
+
+ /@walletconnect/universal-provider@2.9.2:
+ resolution: {integrity: sha512-JmaolkO8D31UdRaQCHwlr8uIFUI5BYhBzqYFt54Mc6gbIa1tijGOmdyr6YhhFO70LPmS6gHIjljwOuEllmlrxw==}
+ dependencies:
+ '@walletconnect/jsonrpc-http-connection': 1.0.7
+ '@walletconnect/jsonrpc-provider': 1.0.13
+ '@walletconnect/jsonrpc-types': 1.0.3
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/logger': 2.0.1
+ '@walletconnect/sign-client': 2.9.2
+ '@walletconnect/types': 2.9.2
+ '@walletconnect/utils': 2.9.2
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - bufferutil
+ - encoding
+ - lokijs
+ - utf-8-validate
+ dev: false
+
+ /@walletconnect/utils@2.9.2:
+ resolution: {integrity: sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg==}
+ dependencies:
+ '@stablelib/chacha20poly1305': 1.0.1
+ '@stablelib/hkdf': 1.0.1
+ '@stablelib/random': 1.0.2
+ '@stablelib/sha256': 1.0.1
+ '@stablelib/x25519': 1.0.3
+ '@walletconnect/relay-api': 1.0.9
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.9.2
+ '@walletconnect/window-getters': 1.0.1
+ '@walletconnect/window-metadata': 1.0.1
+ detect-browser: 5.3.0
+ query-string: 7.1.3
+ uint8arrays: 3.1.1
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - lokijs
+ dev: false
+
+ /@walletconnect/window-getters@1.0.1:
+ resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@walletconnect/window-metadata@1.0.1:
+ resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==}
+ dependencies:
+ '@walletconnect/window-getters': 1.0.1
+ tslib: 1.14.1
+ dev: false
+
+ /@webassemblyjs/ast@1.11.6:
+ resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ dev: true
+
+ /@webassemblyjs/floating-point-hex-parser@1.11.6:
+ resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
+ dev: true
+
+ /@webassemblyjs/helper-api-error@1.11.6:
+ resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
+ dev: true
+
+ /@webassemblyjs/helper-buffer@1.11.6:
+ resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==}
+ dev: true
+
+ /@webassemblyjs/helper-numbers@1.11.6:
+ resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
dependencies:
'@webassemblyjs/floating-point-hex-parser': 1.11.6
'@webassemblyjs/helper-api-error': 1.11.6
@@ -6215,8 +7167,17 @@ packages:
argparse: 2.0.1
dev: 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: false
+
/abab@1.0.4:
resolution: {integrity: sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==}
+ requiresBuild: true
dev: true
optional: true
@@ -6224,6 +7185,32 @@ packages:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
dev: true
+ /abitype@0.8.7(typescript@5.1.6):
+ resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.19.1
+ peerDependenciesMeta:
+ zod:
+ optional: true
+ dependencies:
+ typescript: 5.1.6
+ dev: false
+
+ /abitype@0.9.3(typescript@5.1.6):
+ resolution: {integrity: sha512-dz4qCQLurx97FQhnb/EIYTk/ldQ+oafEDUqC0VVIeQS1Q48/YWt/9YNfMmp9SLFqN41ktxny3c8aYxHjmFIB/w==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.19.1
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+ dependencies:
+ typescript: 5.1.6
+ dev: false
+
/accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
@@ -6234,6 +7221,7 @@ packages:
/acorn-globals@1.0.9:
resolution: {integrity: sha512-j3/4pkfih8W4NK22gxVSXcEonTpAHOHh0hu5BoZrKcOsW/4oBPxTi4Yk3SAj+FhC1f3+bRTkXdm4019gw1vg9g==}
+ requiresBuild: true
dependencies:
acorn: 2.7.0
dev: true
@@ -6277,6 +7265,7 @@ packages:
resolution: {integrity: sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg==}
engines: {node: '>=0.4.0'}
hasBin: true
+ requiresBuild: true
dev: true
optional: true
@@ -6297,6 +7286,10 @@ packages:
engines: {node: '>= 10.0.0'}
dev: true
+ /aes-js@3.1.2:
+ resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==}
+ dev: false
+
/agent-base@6.0.2:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
@@ -6306,6 +7299,13 @@ packages:
- supports-color
dev: true
+ /agentkeepalive@4.5.0:
+ resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ humanize-ms: 1.2.1
+ dev: false
+
/aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
@@ -6314,6 +7314,10 @@ packages:
indent-string: 4.0.0
dev: true
+ /ahocorasick@1.0.2:
+ resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==}
+ dev: false
+
/ajv-keywords@3.5.2(ajv@6.12.6):
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
peerDependencies:
@@ -6339,13 +7343,13 @@ packages:
/ansi-regex@2.1.1:
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
- dev: true
/ansi-regex@6.0.1:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
@@ -6355,6 +7359,7 @@ packages:
/ansi-styles@2.2.1:
resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -6369,7 +7374,6 @@ packages:
engines: {node: '>=8'}
dependencies:
color-convert: 2.0.1
- dev: true
/ansi-styles@5.2.0:
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
@@ -6508,6 +7512,7 @@ packages:
/asn1@0.2.6:
resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
+ requiresBuild: true
dependencies:
safer-buffer: 2.1.2
dev: true
@@ -6516,6 +7521,7 @@ packages:
/assert-plus@1.0.0:
resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
engines: {node: '>=0.8'}
+ requiresBuild: true
dev: true
optional: true
@@ -6550,6 +7556,12 @@ packages:
tslib: 2.6.1
dev: true
+ /async-mutex@0.2.6:
+ resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==}
+ dependencies:
+ tslib: 2.6.1
+ dev: false
+
/async-retry@1.2.3:
resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==}
dependencies:
@@ -6568,20 +7580,25 @@ packages:
/asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- dev: true
+
+ /atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+ dev: false
/available-typed-arrays@1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
- dev: true
/aws-sign2@0.7.0:
resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
+ requiresBuild: true
dev: true
optional: true
/aws4@1.12.0:
resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==}
+ requiresBuild: true
dev: true
optional: true
@@ -6598,7 +7615,6 @@ packages:
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
- dev: true
/axobject-query@3.2.1:
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
@@ -6608,6 +7624,7 @@ packages:
/babel-code-frame@6.26.0:
resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==}
+ requiresBuild: true
dependencies:
chalk: 1.1.3
esutils: 2.0.3
@@ -6617,6 +7634,7 @@ packages:
/babel-generator@6.26.1:
resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==}
+ requiresBuild: true
dependencies:
babel-messages: 6.23.0
babel-runtime: 6.26.0
@@ -6631,6 +7649,7 @@ packages:
/babel-messages@6.23.0:
resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==}
+ requiresBuild: true
dependencies:
babel-runtime: 6.26.0
dev: true
@@ -6749,6 +7768,7 @@ packages:
/babel-runtime@6.26.0:
resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==}
+ requiresBuild: true
dependencies:
core-js: 2.6.12
regenerator-runtime: 0.11.1
@@ -6757,6 +7777,7 @@ packages:
/babel-traverse@6.26.0:
resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==}
+ requiresBuild: true
dependencies:
babel-code-frame: 6.26.0
babel-messages: 6.23.0
@@ -6774,6 +7795,7 @@ packages:
/babel-types@6.26.0:
resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==}
+ requiresBuild: true
dependencies:
babel-runtime: 6.26.0
esutils: 2.0.3
@@ -6785,6 +7807,7 @@ packages:
/babylon@6.18.0:
resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==}
hasBin: true
+ requiresBuild: true
dev: true
optional: true
@@ -6792,9 +7815,14 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
+ /base-x@3.0.9:
+ resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
/base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- dev: true
/basic-auth@2.0.1:
resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
@@ -6805,6 +7833,7 @@ packages:
/bcrypt-pbkdf@1.0.2:
resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
+ requiresBuild: true
dependencies:
tweetnacl: 0.14.5
dev: true
@@ -6830,11 +7859,29 @@ packages:
resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
dev: true
+ /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: false
+
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: true
+ /bind-decorator@1.0.11:
+ resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==}
+ dev: false
+
+ /bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+ dependencies:
+ file-uri-to-path: 1.0.0
+ dev: false
+
/bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies:
@@ -6843,6 +7890,10 @@ packages:
readable-stream: 3.6.2
dev: true
+ /bn.js@5.2.1:
+ resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
+ dev: false
+
/body-parser@1.20.1:
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -6867,6 +7918,14 @@ packages:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
+ /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: false
+
/bottleneck@2.19.5:
resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
dev: true
@@ -6913,6 +7972,12 @@ packages:
update-browserslist-db: 1.0.11(browserslist@4.21.10)
dev: true
+ /bs58@4.0.1:
+ resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==}
+ dependencies:
+ base-x: 3.0.9
+ dev: false
+
/bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
dependencies:
@@ -6938,6 +8003,19 @@ packages:
ieee754: 1.2.1
dev: true
+ /buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ /bufferutil@4.0.7:
+ resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
+ engines: {node: '>=6.14.2'}
+ requiresBuild: true
+ dependencies:
+ node-gyp-build: 4.6.0
+
/bundle-name@3.0.0:
resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
engines: {node: '>=12'}
@@ -7002,7 +8080,6 @@ packages:
dependencies:
function-bind: 1.1.1
get-intrinsic: 1.2.1
- dev: true
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@@ -7011,7 +8088,6 @@ packages:
/camelcase@5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
- dev: true
/camelcase@6.3.0:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
@@ -7024,6 +8100,7 @@ packages:
/caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+ requiresBuild: true
dev: true
optional: true
@@ -7043,6 +8120,7 @@ packages:
/chalk@1.1.3:
resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dependencies:
ansi-styles: 2.2.1
escape-string-regexp: 1.0.5
@@ -7074,7 +8152,6 @@ packages:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
- dev: true
/check-error@1.0.2:
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
@@ -7083,6 +8160,7 @@ packages:
/cheerio@0.20.0:
resolution: {integrity: sha512-e5jCTzJc28MWkrLLjB1mu3ks7rDQJLC5y/JMdQkOAEX/dmJk62rC6Xae1yvOO4xyCxLpzcth3jIZ7nypmjQ/0w==}
engines: {node: '>= 0.6'}
+ requiresBuild: true
dependencies:
css-select: 1.2.0
dom-serializer: 0.1.1
@@ -7097,6 +8175,7 @@ packages:
/cheerio@1.0.0-rc.2:
resolution: {integrity: sha512-9LDHQy1jHc/eXMzPN6/oah9Qba4CjdKECC7YYEE/2zge/tsGwt19NQp5NFdfd5Lx6TZlyC5SXNQkG41P9r6XDg==}
engines: {node: '>= 0.6'}
+ requiresBuild: true
dependencies:
css-select: 1.2.0
dom-serializer: 0.1.1
@@ -7158,6 +8237,14 @@ packages:
'@colors/colors': 1.5.0
dev: true
+ /cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+ dev: false
+
/cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
dependencies:
@@ -7181,6 +8268,16 @@ packages:
mimic-response: 1.0.1
dev: true
+ /clsx@1.1.1:
+ resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /clsx@1.2.1:
+ resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
+ engines: {node: '>=6'}
+ dev: false
+
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
@@ -7196,15 +8293,16 @@ packages:
engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
- dev: true
/color-logger@0.0.3:
resolution: {integrity: sha512-s4oriek7VTdSmDbS5chJhNui3uUzlk/mU39V4HnOUv0KphRXpIj73lq4wY5f8l/x+WtHUhiV+FCzsrNO1w6REA==}
+ requiresBuild: true
dev: true
optional: true
/color-logger@0.0.6:
resolution: {integrity: sha512-0iBj3eHRYnor8EJi3oQ1kixbr7B2Sbw1InxjsYZxS+q2H+Ii69m3ARYSJeYIqmf/QRtFhWnR1v97wp8N7ABubw==}
+ requiresBuild: true
dev: true
optional: true
@@ -7213,7 +8311,6 @@ packages:
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: true
/colors@1.2.5:
resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==}
@@ -7230,11 +8327,9 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
- dev: true
/commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
- dev: true
/commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
@@ -7310,6 +8405,12 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /copy-to-clipboard@3.3.3:
+ resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
+ dependencies:
+ toggle-selection: 1.0.6
+ dev: false
+
/core-js-compat@3.32.0:
resolution: {integrity: sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==}
dependencies:
@@ -7330,11 +8431,13 @@ packages:
/core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
+ requiresBuild: true
dev: true
optional: true
/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ requiresBuild: true
dev: true
optional: true
@@ -7379,6 +8482,14 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
+ /cross-fetch@3.1.8:
+ resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
+ dependencies:
+ node-fetch: 2.6.12
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -7390,6 +8501,7 @@ packages:
/css-select@1.2.0:
resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==}
+ requiresBuild: true
dependencies:
boolbase: 1.0.0
css-what: 2.1.3
@@ -7426,9 +8538,15 @@ packages:
/css-what@2.1.3:
resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==}
+ requiresBuild: true
dev: true
optional: true
+ /css-what@5.1.0:
+ resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==}
+ engines: {node: '>= 6'}
+ dev: false
+
/css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
@@ -7438,6 +8556,12 @@ packages:
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
dev: true
+ /cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
/csso@5.0.5:
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
@@ -7447,11 +8571,13 @@ packages:
/cssom@0.3.8:
resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ requiresBuild: true
dev: true
optional: true
/cssstyle@0.2.37:
resolution: {integrity: sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==}
+ requiresBuild: true
dependencies:
cssom: 0.3.8
dev: true
@@ -7534,6 +8660,7 @@ packages:
/dashdash@1.14.1:
resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
engines: {node: '>=0.10'}
+ requiresBuild: true
dependencies:
assert-plus: 1.0.0
dev: true
@@ -7584,7 +8711,11 @@ packages:
optional: true
dependencies:
ms: 2.1.2
- dev: true
+
+ /decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
/decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -7593,7 +8724,6 @@ packages:
/decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
- dev: true
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
@@ -7636,10 +8766,13 @@ packages:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
+ /deep-object-diff@1.1.9:
+ resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==}
+ dev: false
+
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
- dev: true
/default-browser-id@3.0.0:
resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
@@ -7682,10 +8815,14 @@ packages:
object-keys: 1.1.1
dev: true
+ /delay@5.0.0:
+ resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==}
+ engines: {node: '>=10'}
+ dev: false
+
/delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
- dev: true
/depd@2.0.0:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
@@ -7706,9 +8843,14 @@ packages:
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dev: true
+ /detect-browser@5.3.0:
+ resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
+ dev: false
+
/detect-indent@4.0.0:
resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dependencies:
repeating: 2.0.1
dev: true
@@ -7716,7 +8858,6 @@ packages:
/detect-node-es@1.1.0:
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
- dev: true
/detect-package-manager@2.0.1:
resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==}
@@ -7745,6 +8886,10 @@ packages:
engines: {node: '>=0.3.1'}
dev: true
+ /dijkstrajs@1.0.3:
+ resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
+ dev: false
+
/dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -7779,6 +8924,7 @@ packages:
/dom-serializer@0.1.1:
resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==}
+ requiresBuild: true
dependencies:
domelementtype: 1.3.1
entities: 1.1.2
@@ -7795,6 +8941,7 @@ packages:
/domelementtype@1.3.1:
resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
+ requiresBuild: true
dev: true
optional: true
@@ -7811,6 +8958,7 @@ packages:
/domhandler@2.3.0:
resolution: {integrity: sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==}
+ requiresBuild: true
dependencies:
domelementtype: 1.3.1
dev: true
@@ -7818,6 +8966,7 @@ packages:
/domhandler@2.4.2:
resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
+ requiresBuild: true
dependencies:
domelementtype: 1.3.1
dev: true
@@ -7832,6 +8981,7 @@ packages:
/domutils@1.5.1:
resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==}
+ requiresBuild: true
dependencies:
dom-serializer: 0.1.1
domelementtype: 1.3.1
@@ -7872,12 +9022,22 @@ packages:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
dev: true
+ /duplexify@4.1.2:
+ resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ stream-shift: 1.0.1
+ dev: false
+
/eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
/ecc-jsbn@0.1.2:
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
+ requiresBuild: true
dependencies:
jsbn: 0.1.1
safer-buffer: 2.1.2
@@ -7912,7 +9072,6 @@ packages:
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: true
/emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@@ -7923,6 +9082,10 @@ packages:
engines: {node: '>= 4'}
dev: true
+ /encode-utf8@1.0.3:
+ resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
+ dev: false
+
/encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
@@ -7932,7 +9095,6 @@ packages:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
dependencies:
once: 1.4.0
- dev: true
/enhanced-resolve@5.15.0:
resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
@@ -7951,11 +9113,13 @@ packages:
/entities@1.0.0:
resolution: {integrity: sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==}
+ requiresBuild: true
dev: true
optional: true
/entities@1.1.2:
resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
+ requiresBuild: true
dev: true
optional: true
@@ -8104,6 +9268,16 @@ packages:
resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==}
dev: true
+ /es6-promise@4.2.8:
+ resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
+ dev: false
+
+ /es6-promisify@5.0.0:
+ resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
+ dependencies:
+ es6-promise: 4.2.8
+ dev: false
+
/esbuild-plugin-alias@0.2.1:
resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==}
dev: true
@@ -8175,6 +9349,7 @@ packages:
resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==}
engines: {node: '>=4.0'}
hasBin: true
+ requiresBuild: true
dependencies:
esprima: 4.0.1
estraverse: 4.3.0
@@ -8572,14 +9747,48 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /eth-block-tracker@6.1.0:
+ resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@metamask/safe-event-emitter': 2.0.0
+ '@metamask/utils': 3.6.0
+ json-rpc-random-id: 1.0.1
+ pify: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /eth-json-rpc-filters@5.1.0:
+ resolution: {integrity: sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@metamask/safe-event-emitter': 2.0.0
+ async-mutex: 0.2.6
+ eth-query: 2.1.2
+ json-rpc-engine: 6.1.0
+ pify: 5.0.0
+ dev: false
+
+ /eth-query@2.1.2:
+ resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==}
+ dependencies:
+ json-rpc-random-id: 1.0.1
+ xtend: 4.0.2
+ dev: false
+
+ /eth-rpc-errors@4.0.2:
+ resolution: {integrity: sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==}
+ dependencies:
+ fast-safe-stringify: 2.1.1
+ dev: false
+
/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: true
/execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
@@ -8683,9 +9892,15 @@ packages:
/extsprintf@1.3.0:
resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
engines: {'0': node >=0.6.0}
+ requiresBuild: true
dev: true
optional: true
+ /eyes@0.1.8:
+ resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==}
+ engines: {node: '> 0.1.90'}
+ dev: false
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@@ -8728,6 +9943,19 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
+ /fast-redact@3.3.0:
+ resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /fast-safe-stringify@2.1.1:
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+ dev: false
+
+ /fast-stable-stringify@1.0.0:
+ resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==}
+ dev: false
+
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
@@ -8780,6 +10008,10 @@ packages:
ramda: 0.29.0
dev: true
+ /file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+ dev: false
+
/filelist@1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
dependencies:
@@ -8796,7 +10028,6 @@ packages:
/filter-obj@1.1.0:
resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
engines: {node: '>=0.10.0'}
- dev: true
/finalhandler@1.2.0:
resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
@@ -8832,7 +10063,6 @@ packages:
dependencies:
locate-path: 5.0.0
path-exists: 4.0.0
- dev: true
/find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
@@ -8867,13 +10097,11 @@ packages:
peerDependenciesMeta:
debug:
optional: true
- dev: true
/for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
dependencies:
is-callable: 1.2.7
- dev: true
/foreground-child@2.0.0:
resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
@@ -8893,12 +10121,14 @@ packages:
/forever-agent@0.6.1:
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
+ requiresBuild: true
dev: true
optional: true
/form-data@2.3.3:
resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==}
engines: {node: '>= 0.12'}
+ requiresBuild: true
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
@@ -8922,7 +10152,6 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
- dev: true
/forwarded@0.2.0:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
@@ -8954,6 +10183,7 @@ packages:
/fs-extra@5.0.0:
resolution: {integrity: sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==}
+ requiresBuild: true
dependencies:
graceful-fs: 4.2.11
jsonfile: 4.0.0
@@ -9007,7 +10237,6 @@ packages:
/get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- dev: true
/get-func-name@2.0.0:
resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==}
@@ -9020,12 +10249,10 @@ packages:
has: 1.0.3
has-proto: 1.0.1
has-symbols: 1.0.3
- dev: true
/get-nonce@1.0.1:
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
engines: {node: '>=6'}
- dev: true
/get-package-type@0.1.0:
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
@@ -9059,6 +10286,7 @@ packages:
/getpass@0.1.7:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
+ requiresBuild: true
dependencies:
assert-plus: 1.0.0
dev: true
@@ -9154,6 +10382,7 @@ packages:
/globals@9.18.0:
resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -9184,7 +10413,6 @@ packages:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
get-intrinsic: 1.2.1
- dev: true
/got@11.8.6:
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
@@ -9227,6 +10455,7 @@ packages:
/har-schema@2.0.0:
resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
engines: {node: '>=4'}
+ requiresBuild: true
dev: true
optional: true
@@ -9234,6 +10463,7 @@ packages:
resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
engines: {node: '>=6'}
deprecated: this library is no longer supported
+ requiresBuild: true
dependencies:
ajv: 6.12.6
har-schema: 2.0.0
@@ -9243,6 +10473,7 @@ packages:
/has-ansi@2.0.0:
resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dependencies:
ansi-regex: 2.1.1
dev: true
@@ -9264,7 +10495,6 @@ packages:
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- dev: true
/has-property-descriptors@1.0.0:
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
@@ -9275,19 +10505,16 @@ packages:
/has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
- dev: true
/has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
- dev: true
/has-tostringtag@1.0.0:
resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
engines: {node: '>= 0.4'}
dependencies:
has-symbols: 1.0.3
- dev: true
/has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
@@ -9295,11 +10522,22 @@ packages:
dependencies:
function-bind: 1.1.1
+ /hash.js@1.1.7:
+ resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
+ dependencies:
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ dev: false
+
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
dev: true
+ /hey-listen@1.0.8:
+ resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
+ dev: false
+
/hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
dependencies:
@@ -9335,6 +10573,7 @@ packages:
/htmlparser2@3.10.1:
resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
+ requiresBuild: true
dependencies:
domelementtype: 1.3.1
domhandler: 2.4.2
@@ -9347,6 +10586,7 @@ packages:
/htmlparser2@3.8.3:
resolution: {integrity: sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==}
+ requiresBuild: true
dependencies:
domelementtype: 1.3.1
domhandler: 2.3.0
@@ -9419,6 +10659,7 @@ packages:
/http-signature@1.2.0:
resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
engines: {node: '>=0.8', npm: '>=1.3.7'}
+ requiresBuild: true
dependencies:
assert-plus: 1.0.0
jsprim: 1.4.2
@@ -9454,6 +10695,12 @@ packages:
engines: {node: '>=14.18.0'}
dev: true
+ /humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+ dependencies:
+ ms: 2.1.3
+ dev: false
+
/hyperlinker@1.0.0:
resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==}
engines: {node: '>=4'}
@@ -9461,6 +10708,7 @@ packages:
/ice-cap@0.0.4:
resolution: {integrity: sha512-39ZblYEKlqj7LHgLkUcVk7zcJp772lOVQAUhN6QyY88w8/4bn5SgDeU2020yzHosf+uKPuCFK1UQ36gyBNiraw==}
+ requiresBuild: true
dependencies:
cheerio: 0.20.0
color-logger: 0.0.3
@@ -9483,13 +10731,16 @@ packages:
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- dev: true
/ignore@5.2.4:
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
engines: {node: '>= 4'}
dev: true
+ /immer@10.0.2:
+ resolution: {integrity: sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==}
+ dev: false
+
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
@@ -9521,7 +10772,6 @@ packages:
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: true
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
@@ -9549,7 +10799,6 @@ packages:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
dependencies:
loose-envify: 1.4.0
- dev: true
/ip@2.0.0:
resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
@@ -9571,7 +10820,6 @@ packages:
dependencies:
call-bind: 1.0.2
has-tostringtag: 1.0.0
- dev: true
/is-array-buffer@3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
@@ -9608,7 +10856,6 @@ packages:
/is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- dev: true
/is-core-module@2.13.0:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
@@ -9647,20 +10894,19 @@ packages:
/is-finite@1.1.0:
resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
- dev: true
/is-generator-function@1.0.10:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
engines: {node: '>= 0.4'}
dependencies:
has-tostringtag: 1.0.0
- dev: true
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
@@ -9767,12 +11013,9 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
which-typed-array: 1.1.11
- dev: true
/is-typedarray@1.0.0:
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
- dev: true
- optional: true
/is-weakmap@2.0.1:
resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
@@ -9800,6 +11043,7 @@ packages:
/isarray@0.0.1:
resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
+ requiresBuild: true
dev: true
optional: true
@@ -9811,8 +11055,25 @@ packages:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
+ /isomorphic-ws@4.0.1(ws@7.5.9):
+ resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==}
+ peerDependencies:
+ ws: '*'
+ dependencies:
+ ws: 7.5.9
+ dev: false
+
+ /isomorphic-ws@5.0.0(ws@8.12.0):
+ resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==}
+ peerDependencies:
+ ws: '*'
+ dependencies:
+ ws: 8.12.0
+ dev: false
+
/isstream@0.1.2:
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
+ requiresBuild: true
dev: true
optional: true
@@ -9871,6 +11132,28 @@ packages:
minimatch: 3.1.2
dev: true
+ /jayson@4.1.0:
+ resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==}
+ 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.5.9)
+ json-stringify-safe: 5.0.1
+ uuid: 8.3.2
+ ws: 7.5.9
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
/jest-diff@29.6.2:
resolution: {integrity: sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9980,6 +11263,7 @@ packages:
/js-tokens@3.0.2:
resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==}
+ requiresBuild: true
dev: true
optional: true
@@ -10003,6 +11287,7 @@ packages:
/jsbn@0.1.1:
resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
+ requiresBuild: true
dev: true
optional: true
@@ -10036,7 +11321,7 @@ packages:
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
whatwg-url: 12.0.1
- ws: 8.13.0
+ ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
@@ -10074,6 +11359,7 @@ packages:
/jsesc@1.3.0:
resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==}
hasBin: true
+ requiresBuild: true
dev: true
optional: true
@@ -10090,12 +11376,25 @@ packages:
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ /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: false
+
+ /json-rpc-random-id@1.0.1:
+ resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==}
+ dev: false
+
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
/json-schema@0.4.0:
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ requiresBuild: true
dev: true
optional: true
@@ -10111,8 +11410,6 @@ packages:
/json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
- dev: true
- optional: true
/json5@1.0.2:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
@@ -10159,6 +11456,11 @@ packages:
resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
dev: true
+ /jsonparse@1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+ dev: false
+
/jsonpointer@5.0.1:
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
engines: {node: '>=0.10.0'}
@@ -10177,6 +11479,7 @@ packages:
/jsprim@1.4.2:
resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
engines: {node: '>=0.6.0'}
+ requiresBuild: true
dependencies:
assert-plus: 1.0.0
extsprintf: 1.3.0
@@ -10220,12 +11523,26 @@ packages:
safe-buffer: 5.2.1
dev: true
+ /keccak@3.0.3:
+ resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==}
+ engines: {node: '>=10.0.0'}
+ requiresBuild: true
+ dependencies:
+ node-addon-api: 2.0.2
+ node-gyp-build: 4.6.0
+ readable-stream: 3.6.2
+ dev: false
+
/keyv@4.5.3:
resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
dependencies:
json-buffer: 3.0.1
dev: true
+ /keyvaluestorage-interface@1.0.0:
+ resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==}
+ dev: false
+
/kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@@ -10257,6 +11574,7 @@ packages:
/levn@0.3.0:
resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==}
engines: {node: '>= 0.8.0'}
+ requiresBuild: true
dependencies:
prelude-ls: 1.1.2
type-check: 0.3.2
@@ -10283,6 +11601,28 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /lit-element@3.3.3:
+ resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==}
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.1.1
+ '@lit/reactive-element': 1.6.3
+ lit-html: 2.8.0
+ dev: false
+
+ /lit-html@2.8.0:
+ resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==}
+ dependencies:
+ '@types/trusted-types': 2.0.3
+ dev: false
+
+ /lit@2.7.6:
+ resolution: {integrity: sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg==}
+ dependencies:
+ '@lit/reactive-element': 1.6.3
+ lit-element: 3.3.3
+ lit-html: 2.8.0
+ dev: false
+
/loader-runner@4.3.0:
resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
engines: {node: '>=6.11.5'}
@@ -10307,7 +11647,6 @@ packages:
engines: {node: '>=8'}
dependencies:
p-locate: 4.1.0
- dev: true
/locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
@@ -10334,7 +11673,6 @@ packages:
/lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
- dev: true
/lodash.isobject@3.0.2:
resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==}
@@ -10398,7 +11736,6 @@ packages:
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
- dev: true
/lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
@@ -10460,6 +11797,7 @@ packages:
resolution: {integrity: sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==}
engines: {node: '>=0.10.0'}
hasBin: true
+ requiresBuild: true
dev: true
optional: true
@@ -10481,6 +11819,12 @@ packages:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
dev: true
+ /media-query-parser@2.0.2:
+ resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==}
+ dependencies:
+ '@babel/runtime': 7.22.10
+ dev: false
+
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -10529,14 +11873,12 @@ packages:
/mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
- dev: true
/mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
- dev: true
/mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
@@ -10569,6 +11911,10 @@ packages:
engines: {node: '>=4'}
dev: true
+ /minimalistic-assert@1.0.1:
+ resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+ dev: false
+
/minimatch@3.0.5:
resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==}
dependencies:
@@ -10597,6 +11943,7 @@ packages:
/minimist@1.2.0:
resolution: {integrity: sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==}
+ requiresBuild: true
dev: true
optional: true
@@ -10625,6 +11972,17 @@ packages:
ufo: 1.2.0
dev: true
+ /motion@10.16.2:
+ resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==}
+ dependencies:
+ '@motionone/animation': 10.15.1
+ '@motionone/dom': 10.16.2
+ '@motionone/svelte': 10.16.2
+ '@motionone/types': 10.15.1
+ '@motionone/utils': 10.15.1
+ '@motionone/vue': 10.16.2
+ dev: false
+
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
engines: {node: '>=10'}
@@ -10640,16 +11998,18 @@ packages:
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: true
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- dev: true
/muggle-string@0.3.1:
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
dev: true
+ /multiformats@9.9.0:
+ resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
+ dev: false
+
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -10680,6 +12040,10 @@ packages:
tslib: 2.6.1
dev: true
+ /node-addon-api@2.0.2:
+ resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==}
+ dev: false
+
/node-addon-api@3.2.1:
resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
dev: true
@@ -10705,12 +12069,10 @@ packages:
optional: true
dependencies:
whatwg-url: 5.0.0
- dev: true
/node-gyp-build@4.6.0:
resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
hasBin: true
- dev: true
/node-int64@0.4.0:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
@@ -10759,6 +12121,7 @@ packages:
/nth-check@1.0.2:
resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==}
+ requiresBuild: true
dependencies:
boolbase: 1.0.0
dev: true
@@ -10772,6 +12135,7 @@ packages:
/nwmatcher@1.4.4:
resolution: {integrity: sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==}
+ requiresBuild: true
dev: true
optional: true
@@ -10844,6 +12208,7 @@ packages:
/oauth-sign@0.9.0:
resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
+ requiresBuild: true
dev: true
optional: true
@@ -10853,7 +12218,6 @@ packages:
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
- dev: true
/object-is@1.1.5:
resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
@@ -10937,6 +12301,10 @@ packages:
'@octokit/types': 11.1.0
dev: true
+ /on-exit-leak-free@0.2.0:
+ resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
+ dev: false
+
/on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -10953,7 +12321,6 @@ packages:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
- dev: true
/onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
@@ -10996,6 +12363,7 @@ packages:
/optionator@0.8.3:
resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
engines: {node: '>= 0.8.0'}
+ requiresBuild: true
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
@@ -11018,6 +12386,10 @@ packages:
type-check: 0.4.0
dev: true
+ /outdent@0.8.0:
+ resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==}
+ dev: false
+
/override-require@1.1.1:
resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==}
dev: true
@@ -11032,7 +12404,6 @@ packages:
engines: {node: '>=6'}
dependencies:
p-try: 2.2.0
- dev: true
/p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
@@ -11053,7 +12424,6 @@ packages:
engines: {node: '>=8'}
dependencies:
p-limit: 2.3.0
- dev: true
/p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
@@ -11065,7 +12435,6 @@ packages:
/p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
- dev: true
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
@@ -11114,11 +12483,13 @@ packages:
/parse5@1.5.1:
resolution: {integrity: sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==}
+ requiresBuild: true
dev: true
optional: true
/parse5@3.0.3:
resolution: {integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==}
+ requiresBuild: true
dependencies:
'@types/node': 18.14.2
dev: true
@@ -11138,7 +12509,6 @@ packages:
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
- dev: true
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
@@ -11184,6 +12554,7 @@ packages:
/performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+ requiresBuild: true
dev: true
optional: true
@@ -11196,6 +12567,44 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /pify@5.0.0:
+ resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /pino-abstract-transport@0.5.0:
+ resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
+ dependencies:
+ duplexify: 4.1.2
+ split2: 4.2.0
+ dev: false
+
+ /pino-std-serializers@4.0.0:
+ resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==}
+ dev: false
+
+ /pino@7.11.0:
+ resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
+ hasBin: true
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.3.0
+ on-exit-leak-free: 0.2.0
+ pino-abstract-transport: 0.5.0
+ pino-std-serializers: 4.0.0
+ process-warning: 1.0.0
+ quick-format-unescaped: 4.0.4
+ real-require: 0.1.0
+ safe-stable-stringify: 2.4.3
+ sonic-boom: 2.8.0
+ thread-stream: 0.15.2
+ dev: false
+
/pinpoint@1.1.0:
resolution: {integrity: sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==}
dev: true
@@ -11227,6 +12636,11 @@ packages:
pathe: 1.1.1
dev: true
+ /pngjs@5.0.0:
+ resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
+ engines: {node: '>=10.13.0'}
+ dev: false
+
/polished@4.2.2:
resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==}
engines: {node: '>=10'}
@@ -11254,9 +12668,14 @@ packages:
source-map-js: 1.0.2
dev: true
+ /preact@10.17.1:
+ resolution: {integrity: sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==}
+ dev: false
+
/prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -11315,6 +12734,10 @@ packages:
minimist: 1.2.8
dev: true
+ /process-warning@1.0.0:
+ resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
+ dev: false
+
/process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
@@ -11343,9 +12766,16 @@ packages:
ipaddr.js: 1.9.1
dev: true
+ /proxy-compare@2.4.0:
+ resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==}
+ dev: false
+
+ /proxy-compare@2.5.1:
+ resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==}
+ dev: false
+
/proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
- dev: true
/psl@1.9.0:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
@@ -11363,6 +12793,28 @@ packages:
engines: {node: '>=6'}
dev: true
+ /qrcode@1.5.0:
+ resolution: {integrity: sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ dijkstrajs: 1.0.3
+ encode-utf8: 1.0.3
+ pngjs: 5.0.0
+ yargs: 15.4.1
+ dev: false
+
+ /qrcode@1.5.3:
+ resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ dijkstrajs: 1.0.3
+ encode-utf8: 1.0.3
+ pngjs: 5.0.0
+ yargs: 15.4.1
+ dev: false
+
/qs@6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
@@ -11375,11 +12827,11 @@ packages:
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.4
- dev: true
/qs@6.5.3:
resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
engines: {node: '>=0.6'}
+ requiresBuild: true
dev: true
optional: true
@@ -11391,7 +12843,16 @@ packages:
filter-obj: 1.1.0
split-on-first: 1.1.0
strict-uri-encode: 2.0.0
- dev: true
+
+ /query-string@7.1.3:
+ resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
+ engines: {node: '>=6'}
+ dependencies:
+ decode-uri-component: 0.2.2
+ filter-obj: 1.1.0
+ split-on-first: 1.1.0
+ strict-uri-encode: 2.0.0
+ dev: false
/querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
@@ -11401,6 +12862,10 @@ packages:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
+ /quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+ dev: false
+
/quick-lru@5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
@@ -11414,7 +12879,6 @@ packages:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
dependencies:
safe-buffer: 5.2.1
- dev: true
/range-parser@1.2.1:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
@@ -11540,8 +13004,23 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /react-remove-scroll-bar@2.3.4(@types/react@18.2.18)(react@18.2.0):
- resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
+ /react-remove-scroll-bar@2.3.4(@types/react@18.2.18)(react@18.2.0):
+ resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.18
+ react: 18.2.0
+ react-style-singleton: 2.2.1(@types/react@18.2.18)(react@18.2.0)
+ tslib: 2.6.1
+
+ /react-remove-scroll@2.5.4(@types/react@18.2.18)(react@18.2.0):
+ resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==}
engines: {node: '>=10'}
peerDependencies:
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
@@ -11552,9 +13031,12 @@ packages:
dependencies:
'@types/react': 18.2.18
react: 18.2.0
+ react-remove-scroll-bar: 2.3.4(@types/react@18.2.18)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.18)(react@18.2.0)
tslib: 2.6.1
- dev: true
+ use-callback-ref: 1.3.0(@types/react@18.2.18)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.18)(react@18.2.0)
+ dev: false
/react-remove-scroll@2.5.5(@types/react@18.2.18)(react@18.2.0):
resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
@@ -11613,7 +13095,26 @@ packages:
invariant: 2.2.4
react: 18.2.0
tslib: 2.6.1
- dev: true
+
+ /react-tracked@1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0):
+ resolution: {integrity: sha512-+XXv4dJH7NnLtSD/cPVL9omra4A3KRK91L33owevXZ81r7qF/a9DdCsVZa90jMGht/V1Ym9sasbmidsJykhULQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '*'
+ react-native: '*'
+ scheduler: '>=0.19.0'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ dependencies:
+ proxy-compare: 2.4.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ scheduler: 0.23.0
+ use-context-selector: 1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)
+ dev: false
/react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
@@ -11656,6 +13157,7 @@ packages:
/readable-stream@1.1.14:
resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
+ requiresBuild: true
dependencies:
core-util-is: 1.0.3
inherits: 2.0.4
@@ -11671,7 +13173,6 @@ packages:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
- dev: true
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
@@ -11685,6 +13186,11 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
+ /real-require@0.1.0:
+ resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
+ engines: {node: '>= 12.13.0'}
+ dev: false
+
/recast@0.23.3:
resolution: {integrity: sha512-HbCVFh2ANP6a09nzD4lx7XthsxMOJWKX5pIcUwtLrmeEIl3I0DwjCoVXDE0Aobk+7k/mS3H50FK4iuYArpcT6Q==}
engines: {node: '>= 4'}
@@ -11717,6 +13223,7 @@ packages:
/regenerator-runtime@0.11.1:
resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==}
+ requiresBuild: true
dev: true
optional: true
@@ -11781,6 +13288,7 @@ packages:
/repeating@2.0.1:
resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dependencies:
is-finite: 1.1.0
dev: true
@@ -11790,6 +13298,7 @@ packages:
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
engines: {node: '>= 6'}
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
+ requiresBuild: true
dependencies:
aws-sign2: 0.7.0
aws4: 1.12.0
@@ -11817,13 +13326,16 @@ packages:
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
- dev: true
/require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
dev: true
+ /require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+ dev: false
+
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: true
@@ -11904,6 +13416,18 @@ packages:
fsevents: 2.3.2
dev: true
+ /rpc-websockets@7.6.0:
+ resolution: {integrity: sha512-Jgcs8q6t8Go98dEulww1x7RysgTkzpCMelVxZW4hvuyFtOGpeUz9prpr2KjUa/usqxgFCd9Tu3+yhHEP9GVmiQ==}
+ dependencies:
+ '@babel/runtime': 7.22.10
+ eventemitter3: 4.0.7
+ uuid: 8.3.2
+ ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ bufferutil: 4.0.7
+ utf-8-validate: 5.0.10
+ dev: false
+
/rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
dev: true
@@ -11921,6 +13445,13 @@ packages:
queue-microtask: 1.2.3
dev: true
+ /rxjs@6.6.7:
+ resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
/rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
@@ -11947,7 +13478,10 @@ packages:
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- dev: true
+
+ /safe-json-utils@1.1.1:
+ resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==}
+ dev: false
/safe-regex-test@1.0.0:
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
@@ -11957,12 +13491,18 @@ packages:
is-regex: 1.1.4
dev: true
+ /safe-stable-stringify@2.4.3:
+ resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
+ engines: {node: '>=10'}
+ dev: false
+
/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
/sax@1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ requiresBuild: true
dev: true
optional: true
@@ -12015,7 +13555,6 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
- dev: true
/send@0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
@@ -12067,10 +13606,22 @@ packages:
- supports-color
dev: true
+ /set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+ dev: false
+
/setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: true
+ /sha.js@2.4.11:
+ resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
+ hasBin: true
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ dev: false
+
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -12089,7 +13640,6 @@ packages:
call-bind: 1.0.2
get-intrinsic: 1.2.1
object-inspect: 1.12.3
- dev: true
/siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -12129,6 +13679,12 @@ packages:
tslib: 2.6.1
dev: true
+ /sonic-boom@2.8.0:
+ resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
+ dependencies:
+ atomic-sleep: 1.0.0
+ dev: false
+
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@@ -12186,7 +13742,11 @@ packages:
/split-on-first@1.1.0:
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
engines: {node: '>=6'}
- dev: true
+
+ /split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+ dev: false
/sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
@@ -12196,6 +13756,7 @@ packages:
resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==}
engines: {node: '>=0.10.0'}
hasBin: true
+ requiresBuild: true
dependencies:
asn1: 0.2.6
assert-plus: 1.0.0
@@ -12265,10 +13826,20 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
+ /stream-browserify@3.0.0:
+ resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: false
+
+ /stream-shift@1.0.1:
+ resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
+ dev: false
+
/strict-uri-encode@2.0.0:
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
engines: {node: '>=4'}
- dev: true
/string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
@@ -12282,7 +13853,6 @@ packages:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- dev: true
/string-width@5.1.2:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
@@ -12333,18 +13903,20 @@ packages:
/string_decoder@0.10.31:
resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
+ requiresBuild: true
dev: true
optional: true
/string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ requiresBuild: true
dependencies:
safe-buffer: 5.2.1
- dev: true
/strip-ansi@3.0.1:
resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dependencies:
ansi-regex: 2.1.1
dev: true
@@ -12355,7 +13927,6 @@ packages:
engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
- dev: true
/strip-ansi@7.1.0:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
@@ -12411,9 +13982,19 @@ packages:
resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
dev: false
+ /superstruct@0.14.2:
+ resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==}
+ dev: false
+
+ /superstruct@1.0.3:
+ resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==}
+ engines: {node: '>=14.0.0'}
+ dev: false
+
/supports-color@2.0.0:
resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
engines: {node: '>=0.8.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -12428,7 +14009,6 @@ packages:
engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
- dev: true
/supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
@@ -12484,6 +14064,7 @@ packages:
/taffydb@2.7.3:
resolution: {integrity: sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg==}
+ requiresBuild: true
dev: true
optional: true
@@ -12554,13 +14135,22 @@ packages:
minimatch: 3.1.2
dev: true
+ /text-encoding-utf-8@1.0.2:
+ resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==}
+ dev: false
+
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /thread-stream@0.15.2:
+ resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
+ dependencies:
+ real-require: 0.1.0
+ dev: false
+
/through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- dev: true
/tiny-invariant@1.3.1:
resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
@@ -12599,6 +14189,7 @@ packages:
/to-fast-properties@1.0.3:
resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -12617,6 +14208,10 @@ packages:
resolution: {integrity: sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==}
dev: true
+ /toggle-selection@1.0.6:
+ resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
+ dev: false
+
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
@@ -12630,6 +14225,7 @@ packages:
/tough-cookie@2.5.0:
resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
engines: {node: '>=0.8'}
+ requiresBuild: true
dependencies:
psl: 1.9.0
punycode: 2.3.0
@@ -12648,7 +14244,6 @@ packages:
/tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- dev: true
/tr46@4.1.1:
resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==}
@@ -12660,6 +14255,7 @@ packages:
/trim-right@1.0.1:
resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -12741,7 +14337,6 @@ packages:
/tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- dev: true
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
@@ -12762,6 +14357,7 @@ packages:
/tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ requiresBuild: true
dependencies:
safe-buffer: 5.2.1
dev: true
@@ -12769,12 +14365,14 @@ packages:
/tweetnacl@0.14.5:
resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
+ requiresBuild: true
dev: true
optional: true
/type-check@0.3.2:
resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
engines: {node: '>= 0.8.0'}
+ requiresBuild: true
dependencies:
prelude-ls: 1.1.2
dev: true
@@ -12858,6 +14456,12 @@ packages:
is-typed-array: 1.1.12
dev: true
+ /typedarray-to-buffer@3.1.5:
+ resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
+ dependencies:
+ is-typedarray: 1.0.0
+ dev: false
+
/typescript@5.0.4:
resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
engines: {node: '>=12.20'}
@@ -12881,6 +14485,12 @@ packages:
dev: true
optional: true
+ /uint8arrays@3.1.1:
+ resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==}
+ dependencies:
+ multiformats: 9.9.0
+ dev: false
+
/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
dependencies:
@@ -13031,7 +14641,24 @@ packages:
'@types/react': 18.2.18
react: 18.2.0
tslib: 2.6.1
- dev: true
+
+ /use-context-selector@1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0):
+ resolution: {integrity: sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '*'
+ react-native: '*'
+ scheduler: '>=0.19.0'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ scheduler: 0.23.0
+ dev: false
/use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==}
@@ -13058,7 +14685,6 @@ packages:
detect-node-es: 1.1.0
react: 18.2.0
tslib: 2.6.1
- dev: true
/use-sync-external-store@1.2.0(react@18.2.0):
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
@@ -13068,9 +14694,15 @@ packages:
react: 18.2.0
dev: false
+ /utf-8-validate@5.0.10:
+ resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
+ engines: {node: '>=6.14.2'}
+ requiresBuild: true
+ dependencies:
+ node-gyp-build: 4.6.0
+
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- dev: true
/util@0.12.5:
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
@@ -13080,7 +14712,6 @@ packages:
is-generator-function: 1.0.10
is-typed-array: 1.1.12
which-typed-array: 1.1.11
- dev: true
/utils-merge@1.0.1:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
@@ -13091,9 +14722,15 @@ packages:
resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
hasBin: true
+ requiresBuild: true
dev: true
optional: true
+ /uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+ dev: false
+
/uuid@9.0.0:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
hasBin: true
@@ -13128,6 +14765,20 @@ packages:
engines: {node: '>= 0.10'}
dev: true
+ /valtio@1.11.0(react@18.2.0):
+ resolution: {integrity: sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ react: '>=16.8'
+ peerDependenciesMeta:
+ react:
+ optional: true
+ dependencies:
+ proxy-compare: 2.5.1
+ react: 18.2.0
+ use-sync-external-store: 1.2.0(react@18.2.0)
+ dev: false
+
/vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -13136,6 +14787,7 @@ packages:
/verror@1.10.0:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
+ requiresBuild: true
dependencies:
assert-plus: 1.0.0
core-util-is: 1.0.2
@@ -13143,6 +14795,31 @@ packages:
dev: true
optional: true
+ /viem@1.7.0(typescript@5.1.6):
+ resolution: {integrity: sha512-S4SclYe0Oca6TuPh2YPI3BzfC7a4UvN7TRDCWwpoVNnu9+4z2hqCZhW+6aF1yufgSwdezNsF14vztE/P4eMdBw==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@adraffy/ens-normalize': 1.9.0
+ '@noble/curves': 1.1.0
+ '@noble/hashes': 1.3.0
+ '@scure/bip32': 1.3.0
+ '@scure/bip39': 1.2.0
+ '@types/ws': 8.5.5
+ '@wagmi/chains': 1.7.0(typescript@5.1.6)
+ abitype: 0.9.3(typescript@5.1.6)
+ isomorphic-ws: 5.0.0(ws@8.12.0)
+ typescript: 5.1.6
+ ws: 8.12.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+ dev: false
+
/vite-node@0.34.1(@types/node@18.14.2):
resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==}
engines: {node: '>=v14.18.0'}
@@ -13362,6 +15039,39 @@ packages:
xml-name-validator: 4.0.0
dev: true
+ /wagmi@1.3.10(@types/react@18.2.18)(immer@10.0.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0):
+ resolution: {integrity: sha512-MMGJcnxOmeUZWDmzUxgRGcB1cqxbJoSFSa+pNY4vBCWMz0n4ptpE5F8FKISLCx+BGoDwsaz2ldcMALcdJZ+29w==}
+ peerDependencies:
+ react: '>=17.0.0'
+ typescript: '>=5.0.4'
+ viem: '>=0.3.35'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@tanstack/query-sync-storage-persister': 4.33.0
+ '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0)
+ '@tanstack/react-query-persist-client': 4.33.0(@tanstack/react-query@4.32.6)
+ '@wagmi/core': 1.3.9(@types/react@18.2.18)(immer@10.0.2)(react@18.2.0)(typescript@5.1.6)(viem@1.7.0)
+ abitype: 0.8.7(typescript@5.1.6)
+ react: 18.2.0
+ typescript: 5.1.6
+ use-sync-external-store: 1.2.0(react@18.2.0)
+ viem: 1.7.0(typescript@5.1.6)
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ - '@types/react'
+ - bufferutil
+ - encoding
+ - immer
+ - lokijs
+ - react-dom
+ - react-native
+ - supports-color
+ - utf-8-validate
+ - zod
+ dev: false
+
/walker@1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
dependencies:
@@ -13378,12 +15088,12 @@ packages:
/webidl-conversions@2.0.1:
resolution: {integrity: sha512-OZ7I/f0sM+T28T2/OXinNGfmvjm3KKptdyQy8NPRZyLfYBn+9vt72Bfr+uQaE9OvWyxJjQ5kHFygH2wOTUb76g==}
+ requiresBuild: true
dev: true
optional: true
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- dev: true
/webidl-conversions@7.0.0:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
@@ -13453,6 +15163,7 @@ packages:
/whatwg-url-compat@0.6.5:
resolution: {integrity: sha512-vbg5+JVNwGtHRI3GheZGWrcUlxF9BXHbA80dLa+2XqJjlV/BK6upoi2j8dIRW9FGPUUyaMm7Hf1pTexHnsk85g==}
+ requiresBuild: true
dependencies:
tr46: 0.0.3
dev: true
@@ -13471,7 +15182,6 @@ packages:
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
- dev: true
/which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
@@ -13492,6 +15202,10 @@ packages:
is-weakset: 2.0.2
dev: true
+ /which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+ dev: false
+
/which-typed-array@1.1.11:
resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
engines: {node: '>= 0.4'}
@@ -13501,7 +15215,6 @@ packages:
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.0
- dev: true
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -13523,6 +15236,7 @@ packages:
/word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ requiresBuild: true
dev: true
optional: true
@@ -13530,6 +15244,15 @@ packages:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
dev: true
+ /wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: false
+
/wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -13550,7 +15273,6 @@ packages:
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- dev: true
/write-file-atomic@4.0.2:
resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
@@ -13560,7 +15282,33 @@ packages:
signal-exit: 3.0.7
dev: true
- /ws@8.13.0:
+ /ws@7.5.9:
+ resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
+ 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: false
+
+ /ws@8.12.0:
+ resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==}
+ 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
+ dev: false
+
+ /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10):
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
engines: {node: '>=10.0.0'}
peerDependencies:
@@ -13571,7 +15319,9 @@ packages:
optional: true
utf-8-validate:
optional: true
- dev: true
+ dependencies:
+ bufferutil: 4.0.7
+ utf-8-validate: 5.0.10
/xcase@2.0.1:
resolution: {integrity: sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==}
@@ -13579,6 +15329,7 @@ packages:
/xml-name-validator@2.0.1:
resolution: {integrity: sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==}
+ requiresBuild: true
dev: true
optional: true
@@ -13594,7 +15345,10 @@ packages:
/xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
- dev: true
+
+ /y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ dev: false
/y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
@@ -13607,12 +15361,19 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: true
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
+ /yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: false
+
/yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
@@ -13623,6 +15384,23 @@ packages:
engines: {node: '>=12'}
dev: true
+ /yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.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: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+ dev: false
+
/yargs@16.2.0:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'}
@@ -13675,3 +15453,24 @@ packages:
optionalDependencies:
commander: 9.5.0
dev: true
+
+ /zustand@4.4.1(@types/react@18.2.18)(immer@10.0.2)(react@18.2.0):
+ resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==}
+ engines: {node: '>=12.7.0'}
+ peerDependencies:
+ '@types/react': '>=16.8'
+ immer: '>=9.0'
+ react: '>=16.8'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ dependencies:
+ '@types/react': 18.2.18
+ immer: 10.0.2
+ react: 18.2.0
+ use-sync-external-store: 1.2.0(react@18.2.0)
+ dev: false
diff --git a/tsconfig.base.json b/tsconfig.base.json
index fa7f24d88..77386f6e5 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -8,21 +8,58 @@
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
- "target": "es2015",
+ "target": "es2020",
"module": "esnext",
- "lib": ["es2020", "dom"],
+ "lib": [
+ "es2020",
+ "dom"
+ ],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"resolveJsonModule": true,
+ "strict": false,
"baseUrl": ".",
"paths": {
- "@origin/defi/oeth": ["libs/defi/oeth/src/index.ts"],
- "@origin/defi/ousd": ["libs/defi/ousd/src/index.ts"],
- "@origin/shared/components": ["libs/shared/components/src/index.ts"],
- "@origin/shared/data-access": ["libs/shared/data-access/src/index.ts"],
- "@origin/shared/storybook": ["libs/shared/storybook/src/index.ts"],
- "@origin/shared/theme": ["libs/shared/theme/src/index.ts"]
+ "@origin/defi/oeth": [
+ "libs/defi/oeth/src/index.ts"
+ ],
+ "@origin/defi/ousd": [
+ "libs/defi/ousd/src/index.ts"
+ ],
+ "@origin/oeth/history": [
+ "libs/oeth/history/src/index.ts"
+ ],
+ "@origin/oeth/swap": [
+ "libs/oeth/swap/src/index.ts"
+ ],
+ "@origin/oeth/wrap": [
+ "libs/oeth/wrap/src/index.ts"
+ ],
+ "@origin/shared/components": [
+ "libs/shared/components/src/index.ts"
+ ],
+ "@origin/shared/contracts": [
+ "libs/shared/contracts/src/index.ts"
+ ],
+ "@origin/shared/data-access": [
+ "libs/shared/data-access/src/index.ts"
+ ],
+ "@origin/shared/providers": [
+ "libs/shared/providers/src/index.ts"
+ ],
+ "@origin/shared/storybook": [
+ "libs/shared/storybook/src/index.ts"
+ ],
+ "@origin/shared/theme": [
+ "libs/shared/theme/src/index.ts"
+ ],
+ "@origin/shared/utils": [
+ "libs/shared/utils/src/index.ts"
+ ]
}
},
- "exclude": ["node_modules", "tmp"]
+ "exclude": [
+ "node_modules",
+ "tmp"
+ ]
}