diff --git a/package.json b/package.json
index b7b1aa9..d99fab9 100644
--- a/package.json
+++ b/package.json
@@ -39,11 +39,12 @@
"@cosmjs/proto-signing": "^0.31.0",
"@cosmjs/stargate": "^0.31.0",
"@cosmjs/tendermint-rpc": "^0.31.0",
- "@dydxprotocol/v4-abacus": "^1.1.4",
- "@dydxprotocol/v4-client-js": "^1.0.6",
- "@dydxprotocol/v4-localization": "^1.0.17",
+ "@dydxprotocol/v4-abacus": "^1.1.32",
+ "@dydxprotocol/v4-client-js": "^1.0.11",
+ "@dydxprotocol/v4-localization": "^1.1.5",
"@ethersproject/providers": "^5.7.2",
"@js-joda/core": "^5.5.3",
+ "@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-checkbox": "^1.0.4",
"@radix-ui/react-collapsible": "^1.0.3",
"@radix-ui/react-dialog": "^1.0.4",
@@ -111,7 +112,7 @@
"styled-components": "^5.3.11",
"use-latest": "^1.2.1",
"viem": "^1.12.2",
- "wagmi": "^1.4.5"
+ "wagmi": "^1.4.12"
},
"devDependencies": {
"@babel/core": "^7.22.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bdb47df..67939f7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,9 +1,5 @@
lockfileVersion: '6.0'
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
dependencies:
'@0xsquid/sdk':
specifier: ^1.10.0
@@ -27,20 +23,23 @@ dependencies:
specifier: ^0.31.0
version: 0.31.0
'@dydxprotocol/v4-abacus':
- specifier: ^1.1.4
- version: 1.1.4
+ specifier: ^1.1.32
+ version: 1.1.32
'@dydxprotocol/v4-client-js':
- specifier: ^1.0.6
- version: 1.0.6
+ specifier: ^1.0.11
+ version: 1.0.11
'@dydxprotocol/v4-localization':
- specifier: ^1.0.17
- version: 1.0.17
+ specifier: ^1.1.5
+ version: 1.1.5
'@ethersproject/providers':
specifier: ^5.7.2
version: 5.7.2
'@js-joda/core':
specifier: ^5.5.3
version: 5.5.3
+ '@radix-ui/react-accordion':
+ specifier: ^1.1.2
+ version: 1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-checkbox':
specifier: ^1.0.4
version: 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)
@@ -243,8 +242,8 @@ dependencies:
specifier: ^1.12.2
version: 1.12.2(typescript@5.1.3)
wagmi:
- specifier: ^1.4.5
- version: 1.4.5(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
+ specifier: ^1.4.12
+ version: 1.4.12(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
devDependencies:
'@babel/core':
@@ -285,7 +284,7 @@ devDependencies:
version: 2.0.0
babel-loader:
specifier: ^9.1.2
- version: 9.1.2(@babel/core@7.22.5)(webpack@5.88.2)
+ version: 9.1.2(@babel/core@7.22.5)(webpack@5.89.0)
babel-plugin-styled-components:
specifier: ^2.1.4
version: 2.1.4(@babel/core@7.22.5)(styled-components@5.3.11)
@@ -654,7 +653,7 @@ packages:
/@confio/ics23@0.6.8:
resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==}
dependencies:
- '@noble/hashes': 1.3.2
+ '@noble/hashes': 1.3.3
protobufjs: 6.11.4
dev: false
@@ -715,7 +714,7 @@ packages:
bn.js: 5.2.1
elliptic: 6.5.4
js-sha3: 0.8.0
- libsodium-wrappers: 0.7.11
+ libsodium-wrappers: 0.7.13
ripemd160: 2.0.2
sha.js: 2.4.11
dev: false
@@ -726,10 +725,10 @@ packages:
'@cosmjs/encoding': 0.30.1
'@cosmjs/math': 0.30.1
'@cosmjs/utils': 0.30.1
- '@noble/hashes': 1.3.2
+ '@noble/hashes': 1.3.3
bn.js: 5.2.1
elliptic: 6.5.4
- libsodium-wrappers: 0.7.11
+ libsodium-wrappers: 0.7.13
dev: false
/@cosmjs/crypto@0.31.0:
@@ -988,12 +987,12 @@ packages:
resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==}
dev: true
- /@dydxprotocol/v4-abacus@1.1.4:
- resolution: {integrity: sha512-gml6qheFsPShE9p3FmzFeStYM9ZVhgMq0K0+y12V7pObnMKbumkOIISgCzc47idkah0GMNhiqwi9faD5SjOy/A==}
+ /@dydxprotocol/v4-abacus@1.1.32:
+ resolution: {integrity: sha512-1KM3ILBg/YrdiVhCp/DXUgyCnJurxeYAIwL6+MWZisEGtdhPf9R7MNKUyVcTeNwEyiyxh4AzXNLRp3IPeHAsAw==}
dev: false
- /@dydxprotocol/v4-client-js@1.0.6:
- resolution: {integrity: sha512-xiWH+kbix+zhI6EsAnd+NDvkjBgxWtGwQmvpd0PjljWNYSFgUtNe5M+piDdRbl2nhy6YWbxAGTwwS3K/ih5qSw==}
+ /@dydxprotocol/v4-client-js@1.0.11:
+ resolution: {integrity: sha512-rJNFGTO+HU1GQppXeRLKXNk4HWx/h+DjU2sUCieEv5mnRIMQpLw8dH/L+Uyhxx2oovccY1MaKB4Fr9IngdrF0A==}
dependencies:
'@cosmjs/amino': 0.30.1
'@cosmjs/encoding': 0.31.1
@@ -1013,15 +1012,15 @@ packages:
ethers: 6.6.1
long: 4.0.0
protobufjs: 6.11.4
- ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 8.15.0
transitivePeerDependencies:
- bufferutil
- debug
- utf-8-validate
dev: false
- /@dydxprotocol/v4-localization@1.0.17:
- resolution: {integrity: sha512-fybNpi1ono1IdwFQJTszsHbHmGti2BdhTo1nz9KOmKh3tmXdhWObKb64Ve6/6Fjk6h/9+DeZ5ZG4UbYyYMyhCA==}
+ /@dydxprotocol/v4-localization@1.1.5:
+ resolution: {integrity: sha512-Y25yuCLFaK3v/81B60lc3qthaWwJn1fNJuYQdOtgnmOhLNqI4YRryUncLkbjdB5xd4QODq5KZikP34pLKX9sgA==}
dev: false
/@dydxprotocol/v4-proto@0.4.1:
@@ -1626,13 +1625,13 @@ packages:
resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==}
dependencies:
'@formatjs/intl-localematcher': 0.4.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@formatjs/fast-memoize@2.2.0:
resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@formatjs/icu-messageformat-parser@2.6.0:
@@ -1640,20 +1639,20 @@ packages:
dependencies:
'@formatjs/ecma402-abstract': 1.17.0
'@formatjs/icu-skeleton-parser': 1.6.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@formatjs/icu-skeleton-parser@1.6.0:
resolution: {integrity: sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==}
dependencies:
'@formatjs/ecma402-abstract': 1.17.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@formatjs/intl-localematcher@0.4.0:
resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@humanwhocodes/config-array@0.11.10:
@@ -1701,6 +1700,10 @@ packages:
'@swc/helpers': 0.5.1
dev: false
+ /@ioredis/commands@1.2.0:
+ resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
+ dev: false
+
/@ipld/car@3.2.4:
resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==}
dependencies:
@@ -1749,7 +1752,7 @@ packages:
resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.19
+ '@jridgewell/trace-mapping': 0.3.20
dev: true
/@jridgewell/sourcemap-codec@1.4.15:
@@ -1761,6 +1764,13 @@ packages:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
+ /@jridgewell/trace-mapping@0.3.20:
+ resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/@js-joda/core@5.5.3:
resolution: {integrity: sha512-7dqNYwG8gCt4hfg5PKgM7xLEcgSBcx/UgC92OMnhMmvAnq11QzDFPrxUkNR/u5kn17WWLZ8beZ4A3Qrz4pZcmQ==}
dev: false
@@ -1824,7 +1834,7 @@ packages:
resolution: {integrity: sha512-BKTaDYI17QgEcBBCP5ZqsHsfNH29P6VMRxjR4nOXcJfhsuwvdJxa/p88VwQYbpVBw0oXcDOwudNiu7Bgf8w6QQ==}
dependencies:
'@keplr-wallet/types': 0.11.64
- big-integer: 1.6.51
+ big-integer: 1.6.52
utility-types: 3.10.0
transitivePeerDependencies:
- debug
@@ -1898,18 +1908,14 @@ packages:
- terser
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==}
+ /@lit-labs/ssr-dom-shim@1.1.2:
+ resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==}
dev: false
/@lit/reactive-element@1.6.3:
resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
dependencies:
- '@lit-labs/ssr-dom-shim': 1.1.1
+ '@lit-labs/ssr-dom-shim': 1.1.2
dev: false
/@mdx-js/mdx@2.3.0:
@@ -1954,7 +1960,7 @@ packages:
resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==}
engines: {node: '>=14.0.0'}
dependencies:
- '@types/debug': 4.1.8
+ '@types/debug': 4.1.12
debug: 4.3.4(supports-color@5.5.0)
semver: 7.5.4
superstruct: 1.0.3
@@ -1962,65 +1968,65 @@ packages:
- supports-color
dev: false
- /@motionone/animation@10.15.1:
- resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==}
+ /@motionone/animation@10.16.3:
+ resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==}
dependencies:
- '@motionone/easing': 10.15.1
- '@motionone/types': 10.15.1
- '@motionone/utils': 10.15.1
- tslib: 2.6.1
+ '@motionone/easing': 10.16.3
+ '@motionone/types': 10.16.3
+ '@motionone/utils': 10.16.3
+ tslib: 2.6.2
dev: false
- /@motionone/dom@10.16.2:
- resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==}
+ /@motionone/dom@10.16.4:
+ resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==}
dependencies:
- '@motionone/animation': 10.15.1
- '@motionone/generators': 10.15.1
- '@motionone/types': 10.15.1
- '@motionone/utils': 10.15.1
+ '@motionone/animation': 10.16.3
+ '@motionone/generators': 10.16.4
+ '@motionone/types': 10.16.3
+ '@motionone/utils': 10.16.3
hey-listen: 1.0.8
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
- /@motionone/easing@10.15.1:
- resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==}
+ /@motionone/easing@10.16.3:
+ resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==}
dependencies:
- '@motionone/utils': 10.15.1
- tslib: 2.6.1
+ '@motionone/utils': 10.16.3
+ tslib: 2.6.2
dev: false
- /@motionone/generators@10.15.1:
- resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==}
+ /@motionone/generators@10.16.4:
+ resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==}
dependencies:
- '@motionone/types': 10.15.1
- '@motionone/utils': 10.15.1
- tslib: 2.6.1
+ '@motionone/types': 10.16.3
+ '@motionone/utils': 10.16.3
+ tslib: 2.6.2
dev: false
- /@motionone/svelte@10.16.2:
- resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==}
+ /@motionone/svelte@10.16.4:
+ resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==}
dependencies:
- '@motionone/dom': 10.16.2
- tslib: 2.6.1
+ '@motionone/dom': 10.16.4
+ tslib: 2.6.2
dev: false
- /@motionone/types@10.15.1:
- resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==}
+ /@motionone/types@10.16.3:
+ resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==}
dev: false
- /@motionone/utils@10.15.1:
- resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==}
+ /@motionone/utils@10.16.3:
+ resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==}
dependencies:
- '@motionone/types': 10.15.1
+ '@motionone/types': 10.16.3
hey-listen: 1.0.8
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
- /@motionone/vue@10.16.2:
- resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==}
+ /@motionone/vue@10.16.4:
+ resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==}
dependencies:
- '@motionone/dom': 10.16.2
- tslib: 2.6.1
+ '@motionone/dom': 10.16.4
+ tslib: 2.6.2
dev: false
/@multiformats/murmur3@1.1.3:
@@ -2070,6 +2076,11 @@ packages:
engines: {node: '>= 16'}
dev: false
+ /@noble/hashes@1.3.3:
+ resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==}
+ engines: {node: '>= 16'}
+ dev: false
+
/@noble/secp256k1@1.7.1:
resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
@@ -2103,6 +2114,148 @@ packages:
- debug
dev: false
+ /@parcel/watcher-android-arm64@2.3.0:
+ resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-darwin-arm64@2.3.0:
+ resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-darwin-x64@2.3.0:
+ resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-freebsd-x64@2.3.0:
+ resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-linux-arm-glibc@2.3.0:
+ resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-linux-arm64-glibc@2.3.0:
+ resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-linux-arm64-musl@2.3.0:
+ resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-linux-x64-glibc@2.3.0:
+ resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-linux-x64-musl@2.3.0:
+ resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-wasm@2.3.0:
+ resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ is-glob: 4.0.3
+ micromatch: 4.0.5
+ napi-wasm: 1.1.0
+ dev: false
+ bundledDependencies:
+ - napi-wasm
+
+ /@parcel/watcher-win32-arm64@2.3.0:
+ resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-win32-ia32@2.3.0:
+ resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher-win32-x64@2.3.0:
+ resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@parcel/watcher@2.3.0:
+ resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ detect-libc: 1.0.3
+ is-glob: 4.0.3
+ micromatch: 4.0.5
+ node-addon-api: 7.0.0
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.3.0
+ '@parcel/watcher-darwin-arm64': 2.3.0
+ '@parcel/watcher-darwin-x64': 2.3.0
+ '@parcel/watcher-freebsd-x64': 2.3.0
+ '@parcel/watcher-linux-arm-glibc': 2.3.0
+ '@parcel/watcher-linux-arm64-glibc': 2.3.0
+ '@parcel/watcher-linux-arm64-musl': 2.3.0
+ '@parcel/watcher-linux-x64-glibc': 2.3.0
+ '@parcel/watcher-linux-x64-musl': 2.3.0
+ '@parcel/watcher-win32-arm64': 2.3.0
+ '@parcel/watcher-win32-ia32': 2.3.0
+ '@parcel/watcher-win32-x64': 2.3.0
+ dev: false
+
/@pkgr/utils@2.4.2:
resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -2166,6 +2319,35 @@ packages:
'@babel/runtime': 7.22.10
dev: false
+ /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.22.10
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.14)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.14)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.14)(react@18.2.0)
+ '@types/react': 18.2.14
+ '@types/react-dom': 18.2.6
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
peerDependencies:
@@ -4687,10 +4869,10 @@ packages:
picomatch: 2.3.1
dev: true
- /@safe-global/safe-apps-provider@0.17.1(typescript@5.1.3):
- resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==}
+ /@safe-global/safe-apps-provider@0.18.1(typescript@5.1.3):
+ resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==}
dependencies:
- '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.1.3)
+ '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.1.3)
events: 3.3.0
transitivePeerDependencies:
- bufferutil
@@ -4700,19 +4882,6 @@ packages:
- zod
dev: false
- /@safe-global/safe-apps-sdk@8.0.0(typescript@5.1.3):
- resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==}
- dependencies:
- '@safe-global/safe-gateway-typescript-sdk': 3.9.0
- viem: 1.12.2(typescript@5.1.3)
- transitivePeerDependencies:
- - bufferutil
- - encoding
- - typescript
- - utf-8-validate
- - zod
- dev: false
-
/@safe-global/safe-apps-sdk@8.1.0(typescript@5.1.3):
resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==}
dependencies:
@@ -4738,8 +4907,8 @@ packages:
resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
dev: false
- /@scure/base@1.1.3:
- resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==}
+ /@scure/base@1.1.5:
+ resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==}
dev: false
/@scure/bip32@1.3.0:
@@ -4754,16 +4923,16 @@ packages:
resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==}
dependencies:
'@noble/curves': 1.1.0
- '@noble/hashes': 1.3.2
- '@scure/base': 1.1.3
+ '@noble/hashes': 1.3.3
+ '@scure/base': 1.1.5
dev: false
/@scure/bip32@1.3.2:
resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==}
dependencies:
'@noble/curves': 1.2.0
- '@noble/hashes': 1.3.2
- '@scure/base': 1.1.3
+ '@noble/hashes': 1.3.3
+ '@scure/base': 1.1.5
dev: false
/@scure/bip39@1.2.0:
@@ -4776,8 +4945,8 @@ packages:
/@scure/bip39@1.2.1:
resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==}
dependencies:
- '@noble/hashes': 1.3.2
- '@scure/base': 1.1.3
+ '@noble/hashes': 1.3.3
+ '@scure/base': 1.1.5
dev: false
/@solana/buffer-layout@4.0.1:
@@ -4792,7 +4961,7 @@ packages:
dependencies:
'@babel/runtime': 7.22.10
'@noble/curves': 1.2.0
- '@noble/hashes': 1.3.2
+ '@noble/hashes': 1.3.3
'@solana/buffer-layout': 4.0.1
agentkeepalive: 4.5.0
bigint-buffer: 1.1.5
@@ -5163,7 +5332,7 @@ packages:
/@swc/helpers@0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@swc/helpers@0.4.36:
@@ -5176,7 +5345,7 @@ packages:
/@swc/helpers@0.5.1:
resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/@tanstack/match-sorter-utils@8.8.4:
@@ -5190,6 +5359,10 @@ packages:
resolution: {integrity: sha512-YVB+mVWENQwPyv+40qO7flMgKZ0uI41Ph7qXC2Zf1ft5AIGfnXnMZyifB2ghhZ27u+5wm5mlzO4Y6lwwadzxCA==}
dev: false
+ /@tanstack/query-core@4.36.1:
+ resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==}
+ dev: false
+
/@tanstack/query-persist-client-core@4.32.6:
resolution: {integrity: sha512-MJJ7CldvT5HOel50h/3wOZZwVlIcroFD5Vxn8vPsfo2C0qQ208ilmN/81JWutm/lWy4n2BjnCrrWv6HvVI7S0w==}
dependencies:
@@ -5202,18 +5375,18 @@ packages:
'@tanstack/query-persist-client-core': 4.32.6
dev: false
- /@tanstack/react-query-devtools@4.32.6(@tanstack/react-query@4.32.6)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Gd9pBkm2sbeze9P5Yp8R7y0rZVUdoIOhduomDjz138WdJuVbRS4Y8p6gX2uMJFsUFVe7jA6fX/D6NfQ9o5OS/A==}
+ /@tanstack/react-query-devtools@4.36.1(@tanstack/react-query@4.36.1)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw==}
peerDependencies:
- '@tanstack/react-query': ^4.32.6
+ '@tanstack/react-query': ^4.36.1
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@tanstack/match-sorter-utils': 8.8.4
- '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0)
+ '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- superjson: 1.13.1
+ superjson: 1.13.3
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
@@ -5244,6 +5417,24 @@ packages:
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
+ /@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-native: '*'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ dependencies:
+ '@tanstack/query-core': 4.36.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ use-sync-external-store: 1.2.0(react@18.2.0)
+ dev: false
+
/@types/acorn@4.0.6:
resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
dependencies:
@@ -5279,7 +5470,7 @@ packages:
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
- '@types/node': 20.3.1
+ '@types/node': 20.10.5
dev: false
/@types/crypto-js@4.1.1:
@@ -5320,23 +5511,23 @@ packages:
resolution: {integrity: sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ==}
dev: false
- /@types/debug@4.1.8:
- resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
dependencies:
- '@types/ms': 0.7.31
+ '@types/ms': 0.7.34
- /@types/eslint-scope@3.7.4:
- resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
+ /@types/eslint-scope@3.7.7:
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
dependencies:
- '@types/eslint': 8.44.2
- '@types/estree': 1.0.1
+ '@types/eslint': 8.56.0
+ '@types/estree': 1.0.5
dev: true
- /@types/eslint@8.44.2:
- resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==}
+ /@types/eslint@8.56.0:
+ resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==}
dependencies:
- '@types/estree': 1.0.1
- '@types/json-schema': 7.0.12
+ '@types/estree': 1.0.5
+ '@types/json-schema': 7.0.15
dev: true
/@types/estree-jsx@1.0.0:
@@ -5349,6 +5540,10 @@ packages:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
dev: true
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
/@types/hast@2.3.5:
resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==}
dependencies:
@@ -5366,6 +5561,10 @@ packages:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
+
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
@@ -5399,8 +5598,8 @@ packages:
resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
dev: true
- /@types/ms@0.7.31:
- resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
/@types/node@10.12.18:
resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==}
@@ -5414,6 +5613,11 @@ packages:
resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==}
dev: false
+ /@types/node@20.10.5:
+ resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
+ dependencies:
+ undici-types: 5.26.5
+
/@types/node@20.3.1:
resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==}
@@ -5459,8 +5663,8 @@ packages:
csstype: 3.1.2
dev: false
- /@types/trusted-types@2.0.3:
- resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
+ /@types/trusted-types@2.0.7:
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
dev: false
/@types/unist@2.0.7:
@@ -5474,7 +5678,7 @@ packages:
/@types/ws@7.4.7:
resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
dependencies:
- '@types/node': 20.3.1
+ '@types/node': 20.10.5
dev: false
/@types/ws@8.5.6:
@@ -5979,8 +6183,8 @@ packages:
pretty-format: 27.5.1
dev: true
- /@wagmi/connectors@3.1.3(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
- resolution: {integrity: sha512-UgwsQKQDFObJVJMf9pDfFoXTv710o4zrTHyhIWKBTMMkLpCMsMxN5+ZaDhBYt/BgoRinfRYQo8uwuwLhxE6Log==}
+ /@wagmi/connectors@3.1.10(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
+ resolution: {integrity: sha512-ZLJC1QaeiZarkF07Cr9mOlVjPO1Lf5TBx+JKBms2y5fUIXlKrxCfQgO/gDCureboI+Us2X3IRI659+XacSGpbA==}
peerDependencies:
typescript: '>=5.0.4'
viem: '>=0.3.35'
@@ -5989,10 +6193,9 @@ packages:
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.3)
+ '@safe-global/safe-apps-provider': 0.18.1(typescript@5.1.3)
'@safe-global/safe-apps-sdk': 8.1.0(typescript@5.1.3)
- '@walletconnect/ethereum-provider': 2.10.2(@walletconnect/modal@2.6.2)
+ '@walletconnect/ethereum-provider': 2.10.6(@types/react@18.2.14)(react@18.2.0)
'@walletconnect/legacy-provider': 2.0.0
'@walletconnect/modal': 2.6.2(@types/react@18.2.14)(react@18.2.0)
'@walletconnect/utils': 2.10.2
@@ -6001,19 +6204,29 @@ packages:
typescript: 5.1.3
viem: 1.12.2(typescript@5.1.3)
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- '@types/react'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- encoding
- - lokijs
- react
- supports-color
- utf-8-validate
- zod
dev: false
- /@wagmi/core@1.4.5(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
- resolution: {integrity: sha512-N9luRb1Uk4tBN9kaYcQSWKE9AsRt/rvZaFt5IZech4JPzNN2sQlfhKd9GEjOXYRDqEPHdDvos7qyBKiDNTz4GA==}
+ /@wagmi/core@1.4.12(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
+ resolution: {integrity: sha512-bLcYmmGgjtl3jAGo8X3Sm6oUwsdjbVxFMu9SWnwHdE4S9JdYeWM57dEhQgq8SYul2yQ7yY2/gimBf1Or0Ky3dQ==}
peerDependencies:
typescript: '>=5.0.4'
viem: '>=0.3.35'
@@ -6021,74 +6234,69 @@ packages:
typescript:
optional: true
dependencies:
- '@wagmi/connectors': 3.1.3(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
+ '@wagmi/connectors': 3.1.10(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
abitype: 0.8.7(typescript@5.1.3)
eventemitter3: 4.0.7
typescript: 5.1.3
viem: 1.12.2(typescript@5.1.3)
- zustand: 4.4.1(@types/react@18.2.14)(react@18.2.0)
+ zustand: 4.4.7(@types/react@18.2.14)(react@18.2.0)
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- '@types/react'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- encoding
- immer
- - lokijs
- react
- supports-color
- utf-8-validate
- zod
dev: false
- /@walletconnect/core@2.10.0:
- resolution: {integrity: sha512-Z8pdorfIMueuiBXLdnf7yloiO9JIiobuxN3j0OTal+MYc4q5/2O7d+jdD1DAXbLi1taJx3x60UXT/FPVkjIqIQ==}
+ /@walletconnect/core@2.10.6:
+ resolution: {integrity: sha512-Z4vh4ZdfcoQjgPEOxeuF9HUZCVLtV3MgRbS/awLIj/omDrFnOwlBhxi5Syr4Y8muVGC0ocRetQYHae0/gX5crQ==}
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/jsonrpc-ws-connection': 1.0.14
+ '@walletconnect/keyvaluestorage': 1.1.1
'@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.10.0
- '@walletconnect/utils': 2.10.0
+ '@walletconnect/types': 2.10.6
+ '@walletconnect/utils': 2.10.6
events: 3.3.0
lodash.isequal: 4.5.0
uint8arrays: 3.1.1
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- - lokijs
- - utf-8-validate
- dev: false
-
- /@walletconnect/core@2.10.2:
- resolution: {integrity: sha512-JQz/xp3SLEpTeRQctdck2ugSBVEpMxoSE+lFi2voJkZop1hv6P+uqr6E4PzjFluAjeAnKlT1xvra0aFWjPWVcw==}
- 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.10.2
- '@walletconnect/utils': 2.10.2
- events: 3.3.0
- lodash.isequal: 4.5.0
- uint8arrays: 3.1.1
- transitivePeerDependencies:
- - '@react-native-async-storage/async-storage'
- - bufferutil
- - lokijs
+ - supports-color
- utf-8-validate
dev: false
@@ -6117,29 +6325,37 @@ packages:
tslib: 1.14.1
dev: false
- /@walletconnect/ethereum-provider@2.10.2(@walletconnect/modal@2.6.2):
- resolution: {integrity: sha512-QMYFZ6+rVq2CJLdIPdKK0j1Qm66UA27oQU5V2SrL8EVwl7wFfm0Bq7fnL+qAWeDpn612dNeNErpk/ROa1zWlWg==}
- peerDependencies:
- '@walletconnect/modal': '>=2'
- peerDependenciesMeta:
- '@walletconnect/modal':
- optional: true
+ /@walletconnect/ethereum-provider@2.10.6(@types/react@18.2.14)(react@18.2.0):
+ resolution: {integrity: sha512-bBQ+yUfxLv8VxNttgNKY7nED35gSVayO/BnLHbNKvyV1gpvSCla5mWB9MsXuQs70MK0g+/qtgRVSrOtdSubaNQ==}
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.2(@types/react@18.2.14)(react@18.2.0)
- '@walletconnect/sign-client': 2.10.2
- '@walletconnect/types': 2.10.2
- '@walletconnect/universal-provider': 2.10.2
- '@walletconnect/utils': 2.10.2
+ '@walletconnect/sign-client': 2.10.6
+ '@walletconnect/types': 2.10.6
+ '@walletconnect/universal-provider': 2.10.6
+ '@walletconnect/utils': 2.10.6
events: 3.3.0
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
+ - '@types/react'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- encoding
- - lokijs
+ - react
+ - supports-color
- utf-8-validate
dev: false
@@ -6192,32 +6408,42 @@ packages:
tslib: 1.14.1
dev: false
- /@walletconnect/jsonrpc-ws-connection@1.0.13:
- resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==}
+ /@walletconnect/jsonrpc-ws-connection@1.0.14:
+ resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==}
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==}
+ /@walletconnect/keyvaluestorage@1.1.1:
+ resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==}
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
+ '@walletconnect/safe-json': 1.0.2
+ idb-keyval: 6.2.1
+ unstorage: 1.10.1(idb-keyval@6.2.1)
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - supports-color
dev: false
/@walletconnect/legacy-client@2.0.0:
@@ -6348,41 +6574,33 @@ packages:
tslib: 1.14.1
dev: false
- /@walletconnect/sign-client@2.10.0:
- resolution: {integrity: sha512-hbDljDS53kR/It3oXD91UkcOsT6diNnW5+Zzksm0YEfwww5dop/YfNlcdnc8+jKUhWOL/YDPNQCjzsCSNlVzbw==}
+ /@walletconnect/sign-client@2.10.6:
+ resolution: {integrity: sha512-EvUWjaZBQu2yKnH5/5F2qzbuiIuUN9ZgrNKgvXkw5z1Dq5RJCks0S9/MFlKH/ZSGqXnLl7uAzBXtoX4sMgbCMA==}
dependencies:
- '@walletconnect/core': 2.10.0
+ '@walletconnect/core': 2.10.6
'@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.10.0
- '@walletconnect/utils': 2.10.0
+ '@walletconnect/types': 2.10.6
+ '@walletconnect/utils': 2.10.6
events: 3.3.0
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- - lokijs
- - utf-8-validate
- dev: false
-
- /@walletconnect/sign-client@2.10.2:
- resolution: {integrity: sha512-vviSLV3f92I0bReX+OLr1HmbH0uIzYEQQFd1MzIfDk9PkfFT/LLAHhUnDaIAMkIdippqDcJia+5QEtT4JihL3Q==}
- dependencies:
- '@walletconnect/core': 2.10.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.10.2
- '@walletconnect/utils': 2.10.2
- events: 3.3.0
- transitivePeerDependencies:
- - '@react-native-async-storage/async-storage'
- - bufferutil
- - lokijs
+ - supports-color
- utf-8-validate
dev: false
@@ -6392,76 +6610,87 @@ packages:
tslib: 1.14.1
dev: false
- /@walletconnect/types@2.10.0:
- resolution: {integrity: sha512-kSTA/WZnbKdEbvbXSW16Ty6dOSzOZCHnGg6JH7q1MuraalD2HuNg00lVVu7QAZ/Rj1Gn9DAkrgP5Wd5a8Xq//Q==}
- 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/types@2.10.2:
resolution: {integrity: sha512-luNV+07Wdla4STi9AejseCQY31tzWKQ5a7C3zZZaRK/di+rFaAAb7YW04OP4klE7tw/mJRGPTlekZElmHxO8kQ==}
dependencies:
'@walletconnect/events': 1.0.1
'@walletconnect/heartbeat': 1.2.1
'@walletconnect/jsonrpc-types': 1.0.3
- '@walletconnect/keyvaluestorage': 1.0.2
+ '@walletconnect/keyvaluestorage': 1.1.1
'@walletconnect/logger': 2.0.1
events: 3.3.0
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- - lokijs
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - supports-color
dev: false
- /@walletconnect/universal-provider@2.10.2:
- resolution: {integrity: sha512-wFgI0LbQ3D56sgaUMsgOHCM5m8WLxiC71BGuCKQfApgsbNMVKugYVy2zWHyUyi8sqTQHI+uSaVpDev4UHq9LEw==}
+ /@walletconnect/types@2.10.6:
+ resolution: {integrity: sha512-WgHfiTG1yakmxheaBRiXhUdEmgxwrvsAdOIWaMf/spvrzVKYh6sHI3oyEEky5qj5jjiMiyQBeB57QamzCotbcQ==}
+ dependencies:
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/heartbeat': 1.2.1
+ '@walletconnect/jsonrpc-types': 1.0.3
+ '@walletconnect/keyvaluestorage': 1.1.1
+ '@walletconnect/logger': 2.0.1
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - supports-color
+ dev: false
+
+ /@walletconnect/universal-provider@2.10.6:
+ resolution: {integrity: sha512-CEivusqqoD31BhCTKp08DnrccfGjwD9MFjZs5BNRorDteRFE8zVm9LmP6DSiNJCw82ZajGlZThggLQ/BAATfwA==}
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.10.2
- '@walletconnect/types': 2.10.2
- '@walletconnect/utils': 2.10.2
+ '@walletconnect/sign-client': 2.10.6
+ '@walletconnect/types': 2.10.6
+ '@walletconnect/utils': 2.10.6
events: 3.3.0
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- encoding
- - lokijs
+ - supports-color
- utf-8-validate
dev: false
- /@walletconnect/utils@2.10.0:
- resolution: {integrity: sha512-9GRyEz/7CJW+G04RvrjPET5k7hOEsB9b3fF9cWDk/iDCxSWpbkU/hv/urRB36C+gvQMAZgIZYX3dHfzJWkY/2g==}
- 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.10.0
- '@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/utils@2.10.2:
resolution: {integrity: sha512-syxXRpc2yhSknMu3IfiBGobxOY7fLfLTJuw+ppKaeO6WUdZpIit3wfuGOcc0Ms3ZPFCrGfyGOoZsCvgdXtptRg==}
dependencies:
@@ -6480,8 +6709,52 @@ packages:
query-string: 7.1.3
uint8arrays: 3.1.1
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- - lokijs
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - supports-color
+ dev: false
+
+ /@walletconnect/utils@2.10.6:
+ resolution: {integrity: sha512-oRsWWhN2+hi3aiDXrQEOfysz6FHQJGXLsNQPVt+WIBJplO6Szmdau9dbleD88u1iiT4GKPqE0R9FOYvvPm1H/w==}
+ 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.10.6
+ '@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:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - supports-color
dev: false
/@walletconnect/window-getters@1.0.1:
@@ -6757,12 +7030,12 @@ packages:
negotiator: 0.6.3
dev: true
- /acorn-import-assertions@1.9.0(acorn@8.10.0):
+ /acorn-import-assertions@1.9.0(acorn@8.11.2):
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
peerDependencies:
acorn: ^8
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
dev: true
/acorn-jsx@5.3.2(acorn@8.10.0):
@@ -6782,7 +7055,11 @@ packages:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
- dev: true
+
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
/aes-js@3.0.0:
resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==}
@@ -6907,7 +7184,10 @@ packages:
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
- dev: true
+
+ /arch@2.2.0:
+ resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
+ dev: false
/arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -7025,7 +7305,7 @@ packages:
/async-mutex@0.2.6:
resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==}
dependencies:
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/asynckit@0.4.0:
@@ -7079,7 +7359,7 @@ packages:
dequal: 2.0.3
dev: true
- /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.88.2):
+ /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.89.0):
resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -7089,7 +7369,7 @@ packages:
'@babel/core': 7.22.5
find-cache-dir: 3.3.2
schema-utils: 4.2.0
- webpack: 5.88.2
+ webpack: 5.89.0
dev: true
/babel-plugin-styled-components@2.1.4(@babel/core@7.22.5)(styled-components@5.3.11):
@@ -7133,6 +7413,11 @@ packages:
/big-integer@1.6.51:
resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
engines: {node: '>=0.6'}
+ dev: false
+
+ /big-integer@1.6.52:
+ resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
+ engines: {node: '>=0.6'}
/bigint-buffer@1.1.5:
resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==}
@@ -7149,7 +7434,6 @@ packages:
/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==}
@@ -7177,7 +7461,7 @@ packages:
/bip39@3.1.0:
resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==}
dependencies:
- '@noble/hashes': 1.3.2
+ '@noble/hashes': 1.3.3
dev: false
/bl@5.1.0:
@@ -7245,7 +7529,7 @@ packages:
resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
engines: {node: '>= 5.10.0'}
dependencies:
- big-integer: 1.6.51
+ big-integer: 1.6.52
dev: true
/brace-expansion@1.1.11:
@@ -7259,7 +7543,6 @@ packages:
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
- dev: true
/broadcast-channel@3.7.0:
resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==}
@@ -7298,6 +7581,17 @@ packages:
node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.10)
+ /browserslist@4.22.2:
+ resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001570
+ electron-to-chromium: 1.4.615
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.22.2)
+ dev: true
+
/bs58@4.0.1:
resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==}
dependencies:
@@ -7322,8 +7616,8 @@ packages:
base64-js: 1.5.1
ieee754: 1.2.1
- /bufferutil@4.0.7:
- resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
+ /bufferutil@4.0.8:
+ resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'}
requiresBuild: true
dependencies:
@@ -7396,6 +7690,10 @@ packages:
/caniuse-lite@1.0.30001521:
resolution: {integrity: sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==}
+ /caniuse-lite@1.0.30001570:
+ resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==}
+ dev: true
+
/carbites@1.0.6:
resolution: {integrity: sha512-dS9IQvnrb5VIRvSTNz5Ff+mB9d2MFfi5mojtJi7Rlss79VeF190jr0sZdA7eW0CGHotvHkZaWuM6wgfD9PEFRg==}
dependencies:
@@ -7480,8 +7778,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: 2.3.2
- dev: true
+ fsevents: 2.3.3
/chrome-trace-event@1.0.3:
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
@@ -7495,6 +7792,12 @@ packages:
safe-buffer: 5.2.1
dev: false
+ /citty@0.1.5:
+ resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==}
+ dependencies:
+ consola: 3.2.3
+ dev: false
+
/class-is@1.1.0:
resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==}
dev: true
@@ -7507,6 +7810,15 @@ packages:
engines: {node: '>=10'}
dev: true
+ /clipboardy@3.0.0:
+ resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ arch: 2.2.0
+ execa: 5.1.1
+ is-wsl: 2.2.0
+ dev: false
+
/cliui@6.0.0:
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
dependencies:
@@ -7520,6 +7832,11 @@ packages:
engines: {node: '>=6'}
dev: false
+ /cluster-key-slot@1.1.2:
+ resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/cmdk@0.2.0(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==}
peerDependencies:
@@ -7624,6 +7941,11 @@ packages:
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
dev: true
+ /consola@3.2.3:
+ resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+ dev: false
+
/content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
@@ -7639,6 +7961,10 @@ packages:
/convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+ /cookie-es@1.0.0:
+ resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==}
+ dev: false
+
/cookies@0.8.0:
resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==}
engines: {node: '>= 0.8'}
@@ -7651,7 +7977,7 @@ packages:
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
engines: {node: '>=12.13'}
dependencies:
- is-what: 4.1.15
+ is-what: 4.1.16
dev: false
/copy-to-clipboard@3.3.3:
@@ -7688,7 +8014,7 @@ packages:
resolution: {integrity: sha512-WIdaQ8uW1vIbYvNnAVunkC6yxTrneJC7VQ5UUQ0kuw8b0C0A39KTIpoQHCfc8tV7o9vF4niwRhdXEdfAgQEsQQ==}
dependencies:
cosmos-directory-types: 0.0.6
- node-fetch-native: 1.4.1
+ node-fetch-native: 1.6.1
dev: false
/cosmos-directory-types@0.0.6:
@@ -7731,7 +8057,6 @@ packages:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- dev: true
/crypto-js@4.1.1:
resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==}
@@ -7953,6 +8278,10 @@ packages:
has-property-descriptors: 1.0.0
object-keys: 1.1.1
+ /defu@6.1.3:
+ resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==}
+ dev: false
+
/delay@4.4.1:
resolution: {integrity: sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==}
engines: {node: '>=6'}
@@ -7972,6 +8301,11 @@ packages:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
dev: true
+ /denque@2.1.0:
+ resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
+ engines: {node: '>=0.10'}
+ dev: false
+
/depd@1.1.2:
resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
engines: {node: '>= 0.6'}
@@ -7987,6 +8321,10 @@ packages:
engines: {node: '>=6'}
dev: true
+ /destr@2.0.2:
+ resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==}
+ dev: false
+
/destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -7996,6 +8334,12 @@ packages:
resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
dev: false
+ /detect-libc@1.0.3:
+ resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: false
+
/detect-node-es@1.1.0:
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
dev: false
@@ -8077,6 +8421,10 @@ packages:
/electron-to-chromium@1.4.495:
resolution: {integrity: sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q==}
+ /electron-to-chromium@1.4.615:
+ resolution: {integrity: sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==}
+ dev: true
+
/elliptic@6.5.4:
resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==}
dependencies:
@@ -8185,8 +8533,8 @@ packages:
which-typed-array: 1.1.11
dev: true
- /es-module-lexer@1.3.0:
- resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==}
+ /es-module-lexer@1.4.1:
+ resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
dev: true
/es-set-tostringtag@2.0.1:
@@ -8769,6 +9117,12 @@ packages:
fast-safe-stringify: 2.1.1
dev: false
+ /eth-rpc-errors@4.0.3:
+ resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==}
+ dependencies:
+ fast-safe-stringify: 2.1.1
+ dev: false
+
/ethereum-cryptography@2.1.2:
resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==}
dependencies:
@@ -8858,7 +9212,6 @@ packages:
onetime: 5.1.2
signal-exit: 3.0.7
strip-final-newline: 2.0.0
- dev: true
/execa@7.2.0:
resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
@@ -8966,7 +9319,6 @@ packages:
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
- dev: true
/filter-obj@1.1.0:
resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
@@ -9052,12 +9404,11 @@ packages:
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- /fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
- dev: true
optional: true
/function-bind@1.1.1:
@@ -9107,6 +9458,10 @@ packages:
engines: {node: '>=6'}
dev: false
+ /get-port-please@3.1.1:
+ resolution: {integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==}
+ dev: false
+
/get-port@6.1.2:
resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -9115,7 +9470,6 @@ packages:
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- dev: true
/get-symbol-description@1.0.0:
resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
@@ -9136,7 +9490,6 @@ packages:
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
- dev: true
/glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
@@ -9248,28 +9601,52 @@ packages:
'@cosmjs/tendermint-rpc': 0.30.1
'@keplr-wallet/cosmos': 0.11.64
'@keplr-wallet/types': 0.11.64
- '@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0)
- '@tanstack/react-query-devtools': 4.32.6(@tanstack/react-query@4.32.6)(react-dom@18.2.0)(react@18.2.0)
- '@walletconnect/sign-client': 2.10.0
- '@walletconnect/types': 2.10.0
- '@walletconnect/utils': 2.10.0
+ '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
+ '@tanstack/react-query-devtools': 4.36.1(@tanstack/react-query@4.36.1)(react-dom@18.2.0)(react@18.2.0)
+ '@walletconnect/sign-client': 2.10.6
+ '@walletconnect/types': 2.10.6
+ '@walletconnect/utils': 2.10.6
'@web3modal/standalone': 2.4.3(react@18.2.0)
arg: 5.0.2
cosmos-directory-client: 0.0.6
react: 18.2.0
- zustand: 4.4.1(@types/react@18.2.14)(react@18.2.0)
+ zustand: 4.4.7(@types/react@18.2.14)(react@18.2.0)
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- '@types/react'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- debug
- immer
- - lokijs
- react-dom
- react-native
+ - supports-color
- utf-8-validate
dev: false
+ /h3@1.9.0:
+ resolution: {integrity: sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==}
+ dependencies:
+ cookie-es: 1.0.0
+ defu: 6.1.3
+ destr: 2.0.2
+ iron-webcrypto: 1.0.0
+ radix3: 1.1.0
+ ufo: 1.3.2
+ uncrypto: 0.1.3
+ unenv: 1.8.0
+ dev: false
+
/hamt-sharding@2.0.1:
resolution: {integrity: sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==}
engines: {node: '>=10.0.0', npm: '>=6.0.0'}
@@ -9475,10 +9852,14 @@ packages:
toidentifier: 1.0.1
dev: true
+ /http-shutdown@1.2.2:
+ resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+ dev: false
+
/human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
- dev: true
/human-signals@4.3.1:
resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
@@ -9500,7 +9881,6 @@ packages:
/idb-keyval@6.2.1:
resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==}
- dev: true
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -9588,7 +9968,7 @@ packages:
'@formatjs/ecma402-abstract': 1.17.0
'@formatjs/fast-memoize': 2.2.0
'@formatjs/icu-messageformat-parser': 2.6.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/invariant@2.2.4:
@@ -9597,6 +9977,23 @@ packages:
loose-envify: 1.4.0
dev: false
+ /ioredis@5.3.2:
+ resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==}
+ engines: {node: '>=12.22.0'}
+ dependencies:
+ '@ioredis/commands': 1.2.0
+ cluster-key-slot: 1.1.2
+ debug: 4.3.4(supports-color@5.5.0)
+ denque: 2.1.0
+ lodash.defaults: 4.2.0
+ lodash.isarguments: 3.1.0
+ redis-errors: 1.2.0
+ redis-parser: 3.0.0
+ standard-as-callback: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/ip-regex@4.3.0:
resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==}
engines: {node: '>=8'}
@@ -9765,6 +10162,10 @@ packages:
- supports-color
dev: true
+ /iron-webcrypto@1.0.0:
+ resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==}
+ dev: false
+
/is-alphabetical@2.0.1:
resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
dev: true
@@ -9810,7 +10211,6 @@ packages:
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
- dev: true
/is-boolean-object@1.1.2:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
@@ -9850,7 +10250,6 @@ packages:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
- dev: true
/is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
@@ -9865,7 +10264,6 @@ packages:
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
- dev: true
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
@@ -9882,7 +10280,6 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
- dev: true
/is-hexadecimal@2.0.1:
resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
@@ -9926,7 +10323,6 @@ packages:
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- dev: true
/is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
@@ -9971,7 +10367,6 @@ packages:
/is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
- dev: true
/is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
@@ -10008,8 +10403,8 @@ packages:
call-bind: 1.0.2
dev: true
- /is-what@4.1.15:
- resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==}
+ /is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
dev: false
@@ -10018,7 +10413,6 @@ packages:
engines: {node: '>=8'}
dependencies:
is-docker: 2.2.1
- dev: true
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
@@ -10026,7 +10420,6 @@ packages:
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- dev: true
/iso-random-stream@2.0.2:
resolution: {integrity: sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==}
@@ -10054,7 +10447,7 @@ packages:
peerDependencies:
ws: '*'
dependencies:
- ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 8.13.0
dev: false
/it-all@1.0.6:
@@ -10154,11 +10547,16 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 20.3.1
+ '@types/node': 20.10.5
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
+ /jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
+ hasBin: true
+ dev: false
+
/js-sha3@0.8.0:
resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
dev: false
@@ -10192,7 +10590,7 @@ packages:
engines: {node: '>=10.0.0'}
dependencies:
'@metamask/safe-event-emitter': 2.0.0
- eth-rpc-errors: 4.0.2
+ eth-rpc-errors: 4.0.3
dev: false
/json-rpc-random-id@1.0.1:
@@ -10229,7 +10627,6 @@ packages:
/jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
- dev: true
/jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
@@ -10366,24 +10763,47 @@ packages:
libsodium-sumo: 0.7.11
dev: false
- /libsodium-wrappers@0.7.11:
- resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==}
+ /libsodium-wrappers@0.7.13:
+ resolution: {integrity: sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==}
dependencies:
- libsodium: 0.7.11
+ libsodium: 0.7.13
dev: false
- /libsodium@0.7.11:
- resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==}
+ /libsodium@0.7.13:
+ resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==}
dev: false
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
+ /listhen@1.5.5:
+ resolution: {integrity: sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==}
+ hasBin: true
+ dependencies:
+ '@parcel/watcher': 2.3.0
+ '@parcel/watcher-wasm': 2.3.0
+ citty: 0.1.5
+ clipboardy: 3.0.0
+ consola: 3.2.3
+ defu: 6.1.3
+ get-port-please: 3.1.1
+ h3: 1.9.0
+ http-shutdown: 1.2.2
+ jiti: 1.21.0
+ mlly: 1.4.2
+ node-forge: 1.3.1
+ pathe: 1.1.1
+ std-env: 3.6.0
+ ufo: 1.3.2
+ untun: 0.1.3
+ uqr: 0.1.2
+ dev: false
+
/lit-element@3.3.3:
resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==}
dependencies:
- '@lit-labs/ssr-dom-shim': 1.1.1
+ '@lit-labs/ssr-dom-shim': 1.1.2
'@lit/reactive-element': 1.6.3
lit-html: 2.8.0
dev: false
@@ -10391,7 +10811,7 @@ packages:
/lit-html@2.8.0:
resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==}
dependencies:
- '@types/trusted-types': 2.0.3
+ '@types/trusted-types': 2.0.7
dev: false
/lit@2.7.5:
@@ -10433,6 +10853,14 @@ packages:
p-locate: 5.0.0
dev: true
+ /lodash.defaults@4.2.0:
+ resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
+ dev: false
+
+ /lodash.isarguments@3.1.0:
+ resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
+ dev: false
+
/lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
dev: false
@@ -10467,6 +10895,11 @@ packages:
get-func-name: 2.0.0
dev: true
+ /lru-cache@10.1.0:
+ resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
+ engines: {node: 14 || >=16.14}
+ dev: false
+
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
@@ -10767,7 +11200,6 @@ packages:
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: true
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@@ -11087,7 +11519,7 @@ packages:
/micromark@3.2.0:
resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
dependencies:
- '@types/debug': 4.1.8
+ '@types/debug': 4.1.12
debug: 4.3.4(supports-color@5.5.0)
decode-named-character-reference: 1.0.2
micromark-core-commonmark: 1.1.0
@@ -11114,7 +11546,6 @@ packages:
dependencies:
braces: 3.0.2
picomatch: 2.3.1
- dev: true
/microseconds@0.2.0:
resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==}
@@ -11130,10 +11561,15 @@ packages:
dependencies:
mime-db: 1.52.0
+ /mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ dev: false
+
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
- dev: true
/mimic-fn@4.0.0:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
@@ -11182,17 +11618,25 @@ packages:
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.2.0
- dev: true
+
+ /mlly@1.4.2:
+ resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
+ dependencies:
+ acorn: 8.11.2
+ pathe: 1.1.1
+ pkg-types: 1.0.3
+ ufo: 1.3.2
+ dev: false
/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
+ '@motionone/animation': 10.16.3
+ '@motionone/dom': 10.16.4
+ '@motionone/svelte': 10.16.4
+ '@motionone/types': 10.16.3
+ '@motionone/utils': 10.16.3
+ '@motionone/vue': 10.16.4
dev: false
/move-file@2.1.0:
@@ -11205,7 +11649,6 @@ packages:
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
- dev: true
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
@@ -11259,8 +11702,8 @@ packages:
thenify-all: 1.6.0
dev: true
- /nan@2.17.0:
- resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==}
+ /nan@2.18.0:
+ resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==}
dev: false
/nano-time@1.0.0:
@@ -11275,6 +11718,10 @@ packages:
hasBin: true
dev: true
+ /napi-wasm@1.1.0:
+ resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==}
+ dev: false
+
/native-abort-controller@1.0.4(abort-controller@3.0.0):
resolution: {integrity: sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==}
peerDependencies:
@@ -11320,13 +11767,21 @@ packages:
resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==}
dev: false
+ /node-addon-api@7.0.0:
+ resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==}
+ dev: false
+
/node-domexception@1.0.0:
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
engines: {node: '>=10.5.0'}
dev: true
- /node-fetch-native@1.4.1:
- resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==}
+ /node-fetch-native@1.6.1:
+ resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==}
+ dev: false
+
+ /node-fetch-native@1.6.1:
+ resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==}
dev: false
/node-fetch@2.6.12:
@@ -11352,7 +11807,6 @@ packages:
/node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
- dev: true
/node-gyp-build@4.6.0:
resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
@@ -11362,6 +11816,10 @@ packages:
/node-releases@2.0.13:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+ dev: true
+
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
@@ -11384,14 +11842,12 @@ packages:
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
- dev: true
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
dependencies:
path-key: 3.1.1
- dev: true
/npm-run-path@5.1.0:
resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
@@ -11467,6 +11923,14 @@ packages:
resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==}
dev: false
+ /ofetch@1.3.3:
+ resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==}
+ dependencies:
+ destr: 2.0.2
+ node-fetch-native: 1.6.1
+ ufo: 1.3.2
+ dev: false
+
/on-exit-leak-free@0.2.0:
resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
dev: false
@@ -11488,7 +11952,6 @@ packages:
engines: {node: '>=6'}
dependencies:
mimic-fn: 2.1.0
- dev: true
/onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
@@ -11642,7 +12105,6 @@ packages:
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
- dev: true
/path-key@4.0.0:
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
@@ -11660,7 +12122,6 @@ packages:
/pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
- dev: true
/pathval@1.1.1:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
@@ -11748,7 +12209,6 @@ packages:
jsonc-parser: 3.2.0
mlly: 1.4.0
pathe: 1.1.1
- dev: true
/pngjs@5.0.0:
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
@@ -11843,7 +12303,7 @@ packages:
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
'@types/long': 4.0.2
- '@types/node': 20.3.1
+ '@types/node': 20.10.5
long: 4.0.0
/proxy-compare@2.5.1:
@@ -11943,6 +12403,10 @@ packages:
- supports-color
dev: true
+ /radix3@1.1.0:
+ resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==}
+ dev: false
+
/randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
dependencies:
@@ -12121,7 +12585,7 @@ packages:
'@types/react': 18.2.14
react: 18.2.0
react-style-singleton: 2.2.1(@types/react@18.2.14)(react@18.2.0)
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/react-remove-scroll@2.5.4(@types/react@18.2.14)(react@18.2.0):
@@ -12138,7 +12602,7 @@ packages:
react: 18.2.0
react-remove-scroll-bar: 2.3.4(@types/react@18.2.14)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.14)(react@18.2.0)
- tslib: 2.6.1
+ tslib: 2.6.2
use-callback-ref: 1.3.0(@types/react@18.2.14)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.14)(react@18.2.0)
dev: false
@@ -12229,7 +12693,7 @@ packages:
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.2.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0):
@@ -12281,7 +12745,6 @@ packages:
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
- dev: true
/readonly-date@1.0.0:
resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==}
@@ -12316,6 +12779,18 @@ packages:
strip-indent: 3.0.0
dev: true
+ /redis-errors@1.2.0:
+ resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /redis-parser@3.0.0:
+ resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
+ engines: {node: '>=4'}
+ dependencies:
+ redis-errors: 1.2.0
+ dev: false
+
/reduce-css-calc@1.3.0:
resolution: {integrity: sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==}
dependencies:
@@ -12484,7 +12959,7 @@ packages:
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/rpc-websockets@7.6.0:
@@ -12493,9 +12968,9 @@ packages:
'@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)
+ ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
optionalDependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
utf-8-validate: 5.0.10
dev: false
@@ -12539,10 +13014,6 @@ packages:
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- /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==}
dependencies:
@@ -12569,7 +13040,7 @@ packages:
resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/json-schema': 7.0.12
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
ajv-keywords: 3.5.2(ajv@6.12.6)
dev: true
@@ -12634,12 +13105,10 @@ packages:
engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
- dev: true
/shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- dev: true
/side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
@@ -12654,7 +13123,6 @@ packages:
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- dev: true
/simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
@@ -12748,6 +13216,10 @@ packages:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
+ /standard-as-callback@2.1.0:
+ resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
+ dev: false
+
/statuses@1.5.0:
resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
engines: {node: '>= 0.6'}
@@ -12757,6 +13229,10 @@ packages:
resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==}
dev: true
+ /std-env@3.6.0:
+ resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==}
+ dev: false
+
/stream-browserify@3.0.0:
resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
dependencies:
@@ -12872,7 +13348,6 @@ packages:
/strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
- dev: true
/strip-final-newline@3.0.0:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
@@ -12941,8 +13416,8 @@ packages:
ts-interface-checker: 0.1.13
dev: true
- /superjson@1.13.1:
- resolution: {integrity: sha512-AVH2eknm9DEd3qvxM4Sq+LTCkSXE2ssfh1t11MHMXyYXFQyQ1HLgVvV+guLTsaQnJU3gnaVo34TohHPulY/wLg==}
+ /superjson@1.13.3:
+ resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==}
engines: {node: '>=10'}
dependencies:
copy-anything: 3.0.5
@@ -13004,7 +13479,7 @@ packages:
engines: {node: '>=6'}
dev: true
- /terser-webpack-plugin@5.3.9(webpack@5.88.2):
+ /terser-webpack-plugin@5.3.9(webpack@5.89.0):
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -13020,21 +13495,21 @@ packages:
uglify-js:
optional: true
dependencies:
- '@jridgewell/trace-mapping': 0.3.19
+ '@jridgewell/trace-mapping': 0.3.20
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.1
- terser: 5.19.2
- webpack: 5.88.2
+ terser: 5.26.0
+ webpack: 5.89.0
dev: true
- /terser@5.19.2:
- resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==}
+ /terser@5.26.0:
+ resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==}
engines: {node: '>=10'}
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.5
- acorn: 8.10.0
+ acorn: 8.11.2
commander: 2.20.3
source-map-support: 0.5.21
dev: true
@@ -13100,7 +13575,7 @@ packages:
bn.js: 4.12.0
create-hmac: 1.1.7
elliptic: 6.5.4
- nan: 2.17.0
+ nan: 2.18.0
dev: false
/tinybench@2.5.0:
@@ -13131,7 +13606,6 @@ packages:
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
- dev: true
/toggle-selection@1.0.6:
resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
@@ -13190,6 +13664,10 @@ packages:
/tslib@2.6.1:
resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==}
+ /tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+ dev: false
+
/tsscmp@1.0.6:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
@@ -13305,7 +13783,10 @@ packages:
/ufo@1.2.0:
resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==}
- dev: true
+
+ /ufo@1.3.2:
+ resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
+ dev: false
/uint8arrays@3.1.1:
resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==}
@@ -13321,6 +13802,23 @@ packages:
which-boxed-primitive: 1.0.2
dev: true
+ /uncrypto@0.1.3:
+ resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+ dev: false
+
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ /unenv@1.8.0:
+ resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==}
+ dependencies:
+ consola: 3.2.3
+ defu: 6.1.3
+ mime: 3.0.0
+ node-fetch-native: 1.6.1
+ pathe: 1.1.1
+ dev: false
+
/unified@10.1.2:
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
dependencies:
@@ -13390,11 +13888,77 @@ packages:
detect-node: 2.1.0
dev: false
+ /unstorage@1.10.1(idb-keyval@6.2.1):
+ resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==}
+ peerDependencies:
+ '@azure/app-configuration': ^1.4.1
+ '@azure/cosmos': ^4.0.0
+ '@azure/data-tables': ^13.2.2
+ '@azure/identity': ^3.3.2
+ '@azure/keyvault-secrets': ^4.7.0
+ '@azure/storage-blob': ^12.16.0
+ '@capacitor/preferences': ^5.0.6
+ '@netlify/blobs': ^6.2.0
+ '@planetscale/database': ^1.11.0
+ '@upstash/redis': ^1.23.4
+ '@vercel/kv': ^0.2.3
+ idb-keyval: ^6.2.1
+ peerDependenciesMeta:
+ '@azure/app-configuration':
+ optional: true
+ '@azure/cosmos':
+ optional: true
+ '@azure/data-tables':
+ optional: true
+ '@azure/identity':
+ optional: true
+ '@azure/keyvault-secrets':
+ optional: true
+ '@azure/storage-blob':
+ optional: true
+ '@capacitor/preferences':
+ optional: true
+ '@netlify/blobs':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/kv':
+ optional: true
+ idb-keyval:
+ optional: true
+ dependencies:
+ anymatch: 3.1.3
+ chokidar: 3.5.3
+ destr: 2.0.2
+ h3: 1.9.0
+ idb-keyval: 6.2.1
+ ioredis: 5.3.2
+ listhen: 1.5.5
+ lru-cache: 10.1.0
+ mri: 1.2.0
+ node-fetch-native: 1.6.1
+ ofetch: 1.3.3
+ ufo: 1.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/untildify@4.0.0:
resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
engines: {node: '>=8'}
dev: true
+ /untun@0.1.3:
+ resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==}
+ hasBin: true
+ dependencies:
+ citty: 0.1.5
+ consola: 3.2.3
+ pathe: 1.1.1
+ dev: false
+
/update-browserslist-db@1.0.11(browserslist@4.21.10):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true
@@ -13405,6 +13969,21 @@ packages:
escalade: 3.1.1
picocolors: 1.0.0
+ /update-browserslist-db@1.0.13(browserslist@4.22.2):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.22.2
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: true
+
+ /uqr@0.1.2:
+ resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
+ dev: false
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -13427,7 +14006,7 @@ packages:
dependencies:
'@types/react': 18.2.14
react: 18.2.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.14)(react@18.2.0):
@@ -13470,7 +14049,7 @@ packages:
'@types/react': 18.2.14
detect-node-es: 1.1.0
react: 18.2.0
- tslib: 2.6.1
+ tslib: 2.6.2
dev: false
/use-sync-external-store@1.2.0(react@18.2.0):
@@ -13610,7 +14189,7 @@ packages:
abitype: 0.9.8(typescript@5.1.3)
isomorphic-ws: 5.0.0(ws@8.13.0)
typescript: 5.1.3
- ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 8.13.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -13696,7 +14275,7 @@ packages:
postcss: 8.4.28
rollup: 3.28.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/vitest@0.32.2:
@@ -13778,8 +14357,8 @@ packages:
- supports-color
dev: true
- /wagmi@1.4.5(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
- resolution: {integrity: sha512-Ph62E6cO5n2Z8Z5LTyZrkaNprxTsbC4w0qZJT4OJdXrEELziI8z/b4FO6amVFXdu2rDp/wpvF56e4mhKC8/Kdw==}
+ /wagmi@1.4.12(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2):
+ resolution: {integrity: sha512-QRxpjhdMlZmbYTfn9VQkQMKq+l3kwA1O7tF10vaykPrjbGX+IIlyn72ib9oqW9BfQO7n/Sf/mnVz1zbxRhGPWA==}
peerDependencies:
react: '>=17.0.0'
typescript: '>=5.0.4'
@@ -13791,19 +14370,29 @@ packages:
'@tanstack/query-sync-storage-persister': 4.32.6
'@tanstack/react-query': 4.32.6(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query-persist-client': 4.32.6(@tanstack/react-query@4.32.6)
- '@wagmi/core': 1.4.5(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
+ '@wagmi/core': 1.4.12(@types/react@18.2.14)(react@18.2.0)(typescript@5.1.3)(viem@1.12.2)
abitype: 0.8.7(typescript@5.1.3)
react: 18.2.0
typescript: 5.1.3
use-sync-external-store: 1.2.0(react@18.2.0)
viem: 1.12.2(typescript@5.1.3)
transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
- '@react-native-async-storage/async-storage'
- '@types/react'
+ - '@upstash/redis'
+ - '@vercel/kv'
- bufferutil
- encoding
- immer
- - lokijs
- react-dom
- react-native
- supports-color
@@ -13869,8 +14458,8 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
- /webpack@5.88.2:
- resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
+ /webpack@5.89.0:
+ resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -13879,17 +14468,17 @@ packages:
webpack-cli:
optional: true
dependencies:
- '@types/eslint-scope': 3.7.4
- '@types/estree': 1.0.1
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.5
'@webassemblyjs/ast': 1.11.6
'@webassemblyjs/wasm-edit': 1.11.6
'@webassemblyjs/wasm-parser': 1.11.6
- acorn: 8.10.0
- acorn-import-assertions: 1.9.0(acorn@8.10.0)
- browserslist: 4.21.10
+ acorn: 8.11.2
+ acorn-import-assertions: 1.9.0(acorn@8.11.2)
+ browserslist: 4.22.2
chrome-trace-event: 1.0.3
enhanced-resolve: 5.15.0
- es-module-lexer: 1.3.0
+ es-module-lexer: 1.4.1
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
@@ -13900,7 +14489,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.9(webpack@5.88.2)
+ terser-webpack-plugin: 5.3.9(webpack@5.89.0)
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies:
@@ -13950,7 +14539,6 @@ packages:
hasBin: true
dependencies:
isexe: 2.0.0
- dev: true
/why-is-node-running@2.2.2:
resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
@@ -14021,9 +14609,35 @@ packages:
optional: true
dev: false
- /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ /ws@8.13.0:
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
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.15.0:
+ resolution: {integrity: sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw==}
+ 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.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10):
+ resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==}
+ engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
@@ -14033,7 +14647,7 @@ packages:
utf-8-validate:
optional: true
dependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
utf-8-validate: 5.0.10
dev: false
@@ -14117,8 +14731,8 @@ packages:
engines: {node: '>=12.20'}
dev: true
- /zustand@4.4.1(@types/react@18.2.14)(react@18.2.0):
- resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==}
+ /zustand@4.4.7(@types/react@18.2.14)(react@18.2.0):
+ resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==}
engines: {node: '>=12.7.0'}
peerDependencies:
'@types/react': '>=16.8'
@@ -14140,3 +14754,7 @@ packages:
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: true
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
diff --git a/public/configs/cctp.json b/public/configs/cctp.json
index 61bd08a..df65617 100644
--- a/public/configs/cctp.json
+++ b/public/configs/cctp.json
@@ -1,61 +1,12 @@
[
- {
- "chainId": "42161",
- "tokenAddress": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
- "name": "Arbitrum"
- },
- {
- "chainId": "43114",
- "tokenAddress": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
- "name": "Avalanche"
- },
- {
- "chainId": "8453",
- "tokenAddress": "0x66627F389ae46D881773B7131139b2411980E09E",
- "name": "Base"
- },
{
"chainId": "1",
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"name": "Ethereum"
},
- {
- "chainId": "10",
- "tokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607",
- "name": "OP Mainnet"
- },
- {
- "chainId": "421613",
- "tokenAddress": "0xfd064a18f3bf249cf1f87fc203e90d8f650f2d63",
- "name": "Arbitrum Goerli"
- },
- {
- "chainId": "43113",
- "tokenAddress": "0x5425890298aed601595a70AB815c96711a31Bc65",
- "name": "Avalanche Fuji"
- },
- {
- "chainId": "84531",
- "tokenAddress": "0xf175520c52418dfe19c8098071a252da48cd1c19",
- "name": "Base Goerli"
- },
{
"chainId": "5",
"tokenAddress": "0x07865c6E87B9F70255377e024ace6630C1Eaa37F",
"name": "Ethereum Goerli"
- },
- {
- "chainId": "grand-1",
- "tokenAddress": "uusdc",
- "name": "Noble Testnet"
- },
- {
- "chainId": "420",
- "tokenAddress": "0xe05606174bac4a6364b31bd0eca4bf4dd368f8c6",
- "name": "OP Goerli"
- },
- {
- "chainId": "103",
- "name": "Solana Devnet"
}
]
\ No newline at end of file
diff --git a/public/configs/documentation.json b/public/configs/documentation.json
new file mode 100644
index 0000000..cad14ef
--- /dev/null
+++ b/public/configs/documentation.json
@@ -0,0 +1,16 @@
+{
+ "tradingRewardsFAQs": [
+ {
+ "questionLocalizationKey": "APP.TRADING_REWARDS.FAQ_WHO_IS_ELIGIBLE_QUESTION",
+ "answerLocalizationKey": "APP.TRADING_REWARDS.FAQ_WHO_IS_ELIGIBLE_ANSWER"
+ },
+ {
+ "questionLocalizationKey": "APP.TRADING_REWARDS.FAQ_HOW_DO_TRADING_REWARDS_WORK_QUESTION",
+ "answerLocalizationKey": "APP.TRADING_REWARDS.FAQ_HOW_DO_TRADING_REWARDS_WORK_ANSWER"
+ },
+ {
+ "questionLocalizationKey": "APP.TRADING_REWARDS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_QUESTION",
+ "answerLocalizationKey": "APP.TRADING_REWARDS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_ANSWER"
+ }
+ ]
+}
diff --git a/public/configs/env.json b/public/configs/env.json
index bbd5982..1d10cae 100644
--- a/public/configs/env.json
+++ b/public/configs/env.json
@@ -42,7 +42,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -71,7 +71,7 @@
"https://validator.v4dev.dydx.exchange"
],
"0xsquid": "https://testnet.api.0xsquid.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4dev.dydx.exchange"
},
"links": {
@@ -89,7 +89,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -116,7 +116,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -145,7 +145,7 @@
"http://54.92.118.111"
],
"0xsquid": "https://testnet.api.0xsquid.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -162,7 +162,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -189,7 +189,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -218,7 +218,7 @@
"http://validator.v4dev4.dydx.exchange"
],
"0xsquid": "https://testnet.api.0xsquid.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -235,7 +235,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -262,7 +262,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -291,7 +291,7 @@
"http://18.223.78.50"
],
"0xsquid": "https://testnet.api.0xsquid.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -308,7 +308,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -335,7 +335,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -365,7 +365,7 @@
"https://validator.v4staging.dydx.exchange"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -383,7 +383,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -410,7 +410,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -440,7 +440,7 @@
"https://validator.v4staging.dydx.exchange"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -483,7 +483,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydxprotocol-testnet",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -513,7 +513,7 @@
"https://validator-uswest1.v4staging.dydx.exchange"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love"
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/"
},
"links": {
"tos": "https://dydx.exchange/v4-terms",
@@ -531,7 +531,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -558,7 +558,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -591,7 +591,7 @@
"https://dydx-rpc.liquify.com/api=8878132/dydx"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -610,7 +610,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -637,7 +637,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -666,7 +666,7 @@
"https://validator.v4testnet.dydx.exchange"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -686,7 +686,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -713,7 +713,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -742,7 +742,7 @@
"https://dydx-testnet.nodefleet.org"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -762,7 +762,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -789,7 +789,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -818,7 +818,7 @@
"https://test-dydx.kingnodes.com"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -838,7 +838,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -865,7 +865,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -894,7 +894,7 @@
"https://dydx-rpc.liquify.com/api=8878132/dydx"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -914,7 +914,7 @@
"governanceLearnMore": "https://help.dydx.exchange",
"stakingLearnMore": "https://help.dydx.exchange",
"keplrDashboard": "https://testnet.keplr.app/",
- "accountExportLearnMore": "https://help.dydx.exchange",
+ "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain",
"walletLearnMore": "https://www.dydx.academy/video/defi-wallet"
},
"wallets": {
@@ -941,7 +941,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -970,7 +970,7 @@
"https://dydx-testnet-rpc.polkachu.com/"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -1008,7 +1008,7 @@
"ethereumChainId": "5",
"dydxChainId": "dydx-testnet-4",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "dYdX-api",
"isMainNet": false,
"tokens": {
@@ -1037,7 +1037,7 @@
"https://dydx-testnet-full-rpc.public.blastapi.io/"
],
"0xsquid": "https://testnet.api.squidrouter.com",
- "nobleValidator": "https://rpc.testnet.noble.strange.love",
+ "nobleValidator": "https://noble-testnet-rpc.polkachu.com/",
"faucet": "https://faucet.v4testnet.dydx.exchange"
},
"links": {
@@ -1084,7 +1084,7 @@
"ethereumChainId": "1",
"dydxChainId": "[mainnet chain id]",
"chainName": "dYdX Chain",
- "chainLogo": "dydx-chain.png",
+ "chainLogo": "/dydx-chain.png",
"squidIntegratorId": "[mainnet squid integrator id]",
"isMainNet": true,
"tokens": {
@@ -1126,7 +1126,7 @@
"blogs": "[HTTP link to blogs, can be null]",
"foundation": "[HTTP link to foundation, can be null]",
"initialMarginFractionLearnMore": "[HTTP link to initial margin fraction learn more, can be null]",
- "reduceOnlyLearnMore": "https://help.dydx.exchange/articles/6345793-reduce-only-orders",
+ "reduceOnlyLearnMore": "[HTTP link to reduce-only learn more, can be null]",
"documentation": "[HTTP link to documentation, can be null]",
"community": "[HTTP link to community, can be null]",
"help": "[HTTP link to help page, can be null]",
diff --git a/public/configs/markets.json b/public/configs/markets.json
index f887f2b..e81e812 100644
--- a/public/configs/markets.json
+++ b/public/configs/markets.json
@@ -1,454 +1,360 @@
{
- "1INCH-USD":{
- "name":"1inch",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://1inch.io/",
- "whitepaperLink":"https://github.com/1inch",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/1inch/"
- },
- "AAVE-USD":{
- "name":"Aave",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://aave.com/",
- "whitepaperLink":"https://github.com/aave/protocol-v2/blob/master/aave-v2-whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/aave/"
- },
- "ADA-USD":{
- "name":"Cardano",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://cardano.org/",
- "whitepaperLink":"https://why.cardano.org/en/introduction/motivation/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/cardano/"
- },
- "ALGO-USD":{
- "name":"Algorand",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://algorand.com/",
- "whitepaperLink":"https://algorand.com/technology/white-papers",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/algorand/"
- },
- "APE-USD":{
- "name":"ApeCoin",
- "tags":[
-
- ],
- "websiteLink":"https://apecoin.com/",
- "whitepaperLink":"https://apecoin.com/about",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/apecoin-ape/"
- },
- "APT-USD":{
- "name":"Aptos",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://aptoslabs.com/",
- "whitepaperLink":"https://aptos.dev/aptos-white-paper/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/aptos/"
- },
- "ARB-USD":{
- "name":"Arbitrum",
- "tags":[
-
- ],
- "websiteLink":"https://arbitrum.io/",
- "whitepaperLink":"https://github.com/OffchainLabs/nitro",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/arbitrum/"
- },
- "ATOM-USD":{
- "name":"Cosmos",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://cosmos.network/",
- "whitepaperLink":"https://v1.cosmos.network/resources/whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/cosmos/"
- },
- "AVAX-USD":{
- "name":"Avalanche",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://www.avalabs.org/",
- "whitepaperLink":"https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/avalanche/"
- },
- "BCH-USD":{
- "name":"Bitcoin Cash",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://bitcoincash.org/",
- "whitepaperLink":"https://bitcoincash.org/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/bitcoin-cash/"
- },
- "BLUR-USD":{
- "name":"Blur",
- "tags":[
-
- ],
- "websiteLink":"https://blur.io/",
- "whitepaperLink":"https://docs.blur.foundation/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/blur-token/"
- },
- "CELO-USD":{
- "name":"Celo",
- "tags":[
-
- ],
- "websiteLink":"https://celo.org",
- "whitepaperLink":"https://docs.celo.org",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/celo/"
- },
- "BTC-USD":{
- "name":"Bitcoin",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://bitcoin.org/",
- "whitepaperLink":"https://bitcoin.org/bitcoin.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/bitcoin/"
- },
- "COMP-USD":{
- "name":"Compound",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://compound.finance/",
- "whitepaperLink":"https://compound.finance/documents/Compound.Whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/compound/"
- },
- "CRV-USD":{
- "name":"Curve",
- "tags":[
- "Governance"
- ],
- "websiteLink":"https://curve.fi/",
- "whitepaperLink":"https://curve.fi/whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/curve-dao-token/"
- },
- "DOGE-USD":{
- "name":"Dogecoin",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://dogecoin.com/",
- "whitepaperLink":"https://github.com/dogecoin/dogecoin",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/dogecoin/"
- },
- "DOT-USD":{
- "name":"Polkadot",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://polkadot.network/",
- "whitepaperLink":"https://polkadot.network/PolkaDotPaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/polkadot-new/"
- },
- "ENJ-USD":{
- "name":"Enjin",
- "tags":[
-
- ],
- "websiteLink":"https://enjin.io/",
- "whitepaperLink":"https://cdn.enjin.io/downloads/whitepapers/enjin-coin/en.pdf/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/enjin-coin/"
- },
- "EOS-USD":{
- "name":"EOS",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://eos.io/",
- "whitepaperLink":"https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/eos/"
- },
- "ETC-USD":{
- "name":"Ethereum Classic",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://ethereumclassic.org/",
- "whitepaperLink":"https://ethereumclassic.org/why-classic",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/ethereum-classic/"
- },
- "ETH-USD":{
- "name":"Ethereum",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://ethereum.org/",
- "whitepaperLink":"https://ethereum.org/whitepaper/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/ethereum/",
- "displayStepSize":"0.001",
- "displayTickSize":"0.1"
- },
- "FIL-USD":{
- "name":"Filecoin",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://filecoin.io/",
- "whitepaperLink":"https://filecoin.io/filecoin.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/filecoin/"
- },
- "HNT-USD":{
- "name":"Helium",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://www.helium.com",
- "whitepaperLink":"http://whitepaper.helium.com",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/helium/"
- },
- "ICP-USD":{
- "name":"Internet Computer",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://dfinity.org",
- "whitepaperLink":"https://dfinity.org/whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/internet-computer/"
- },
- "LDO-USD":{
- "name":"Lido DAO",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://lido.fi/",
- "whitepaperLink":"https://lido.fi/static/Lido:Ethereum-Liquid-Staking.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/lido-dao/"
- },
- "LINK-USD":{
- "name":"Chainlink",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://chain.link/",
- "whitepaperLink":"https://link.smartcontract.com/whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/chainlink/"
- },
- "LTC-USD":{
- "name":"Litecoin",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://litecoin.org/",
- "whitepaperLink":"https://litecoin.info/index.php/Main_Page",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/litecoin/"
- },
- "MATIC-USD":{
- "name":"Polygon",
- "tags":[
- "Layer 2"
- ],
- "websiteLink":"https://polygon.technology/",
- "whitepaperLink":"https://polygon.technology/lightpaper-polygon.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/polygon/"
- },
- "MKR-USD":{
- "name":"Maker",
- "tags":[
- "Governance"
- ],
- "websiteLink":"https://makerdao.com",
- "whitepaperLink":"https://makerdao.com/whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/maker/"
- },
- "NEAR-USD":{
- "name":"NEAR Protocol",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://near.org",
- "whitepaperLink":"https://near.org/papers/the-official-near-white-paper/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/near-protocol/"
- },
- "OP-USD":{
- "name":"Optimism",
- "tags":[
-
- ],
- "websiteLink":"https://www.optimism.io/",
- "whitepaperLink":"https://github.com/ethereum-optimism",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/optimism-ethereum/"
- },
- "PEPE-USD":{
- "name":"Pepe",
- "tags":[
-
- ],
- "websiteLink":"https://www.pepe.vip/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/pepe/"
- },
- "RUNE-USD":{
- "name":"THORChain",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://thorchain.org",
- "whitepaperLink":"https://whitepaper.io/document/709/thorchain-whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/thorchain/"
- },
- "SEI-USD":{
- "name":"Sei",
- "tags":[
- "Layer 1",
- "Defi"
- ],
- "websiteLink":"https://www.sei.io/",
- "whitepaperLink":"https://github.com/sei-protocol/sei-chain/blob/3c9576fee3494ce039df684624f918dd8066ba3f/whitepaper/Sei_Whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/sei/"
- },
- "SHIB-USD":{
- "name":"Shiba Inu",
- "tags":[
-
- ],
- "websiteLink":"https://shibatoken.com/",
- "whitepaperLink":"https://docs.shibatoken.com/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/shiba-inu/"
- },
- "SNX-USD":{
- "name":"Synthetix",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://synthetix.io/",
- "whitepaperLink":"https://docs.synthetix.io/litepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/synthetix-network-token/"
- },
- "SOL-USD":{
- "name":"Solana",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://solana.com/",
- "whitepaperLink":"https://solana.com/solana-whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/solana/"
- },
- "SUI-USD":{
- "name":"Sui",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://sui.io/",
- "whitepaperLink":"https://github.com/MystenLabs",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/sui/"
- },
- "SUSHI-USD":{
- "name":"Sushi",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://sushi.com/",
- "whitepaperLink":"https://docs.sushi.com/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/sushiswap/"
- },
- "TRX-USD":{
- "name":"TRON",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://tron.network/",
- "whitepaperLink":"https://tron.network/static/doc/white_paper_v_2_0.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/tron/"
- },
- "UMA-USD":{
- "name":"UMA",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://umaproject.org/",
- "whitepaperLink":"https://github.com/UMAprotocol/whitepaper",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/uma/"
- },
- "UNI-USD":{
- "name":"Uniswap",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://uniswap.org/",
- "whitepaperLink":"https://uniswap.org/whitepaper-v3.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/uniswap/"
- },
- "WLD-USD":{
- "name":"Worldcoin",
- "tags":[
-
- ],
- "websiteLink":"https://worldcoin.org/",
- "whitepaperLink":"https://whitepaper.worldcoin.org/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/worldcoin-org/"
- },
- "XLM-USD":{
- "name":"Stellar",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://www.stellar.org/",
- "whitepaperLink":"https://www.stellar.org/papers/stellar-consensus-protocol",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/stellar/"
- },
- "XMR-USD":{
- "name":"Monero",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://www.getmonero.org/",
- "whitepaperLink":"https://www.getmonero.org/resources/research-lab/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/monero/"
- },
- "XRP-USD":{
- "name":"Ripple",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://ripple.com/currency/",
- "whitepaperLink":"https://github.com/ripple",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/xrp/"
- },
- "XTZ-USD":{
- "name":"Tezos",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://tezos.com",
- "whitepaperLink":"https://tezos.com/whitepaper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/tezos/"
- },
- "YFI-USD":{
- "name":"Yearn",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://yearn.finance/",
- "whitepaperLink":"https://docs.yearn.finance/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/yearn-finance/"
- },
- "ZEC-USD":{
- "name":"Zcash",
- "tags":[
- "Layer 1"
- ],
- "websiteLink":"https://z.cash/",
- "whitepaperLink":"https://z.cash/technology/",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/zcash/"
- },
- "ZRX-USD":{
- "name":"0x",
- "tags":[
- "Defi"
- ],
- "websiteLink":"https://0x.org/",
- "whitepaperLink":"https://0x.org/pdfs/0x_white_paper.pdf",
- "coinMarketCapsLink":"https://coinmarketcap.com/currencies/0x/"
- }
- }
\ No newline at end of file
+ "1INCH-USD": {
+ "name": "1inch",
+ "tags": ["Defi"],
+ "websiteLink": "https://1inch.io/",
+ "whitepaperLink": "https://github.com/1inch",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/1inch/"
+ },
+ "AAVE-USD": {
+ "name": "Aave",
+ "tags": ["Defi"],
+ "websiteLink": "https://aave.com/",
+ "whitepaperLink": "https://github.com/aave/protocol-v2/blob/master/aave-v2-whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/aave/"
+ },
+ "ADA-USD": {
+ "name": "Cardano",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://cardano.org/",
+ "whitepaperLink": "https://why.cardano.org/en/introduction/motivation/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/cardano/"
+ },
+ "ALGO-USD": {
+ "name": "Algorand",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://algorand.com/",
+ "whitepaperLink": "https://algorand.com/technology/white-papers",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/algorand/"
+ },
+ "APE-USD": {
+ "name": "ApeCoin",
+ "tags": [],
+ "websiteLink": "https://apecoin.com/",
+ "whitepaperLink": "https://apecoin.com/about",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/apecoin-ape/"
+ },
+ "APT-USD": {
+ "name": "Aptos",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://aptoslabs.com/",
+ "whitepaperLink": "https://aptos.dev/aptos-white-paper/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/aptos/"
+ },
+ "ARB-USD": {
+ "name": "Arbitrum",
+ "tags": [],
+ "websiteLink": "https://arbitrum.io/",
+ "whitepaperLink": "https://github.com/OffchainLabs/nitro",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/arbitrum/"
+ },
+ "ATOM-USD": {
+ "name": "Cosmos",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://cosmos.network/",
+ "whitepaperLink": "https://v1.cosmos.network/resources/whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/cosmos/"
+ },
+ "AVAX-USD": {
+ "name": "Avalanche",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://www.avalabs.org/",
+ "whitepaperLink": "https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/avalanche/"
+ },
+ "BCH-USD": {
+ "name": "Bitcoin Cash",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://bitcoincash.org/",
+ "whitepaperLink": "https://bitcoincash.org/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/bitcoin-cash/"
+ },
+ "BLUR-USD": {
+ "name": "Blur",
+ "tags": [],
+ "websiteLink": "https://blur.io/",
+ "whitepaperLink": "https://docs.blur.foundation/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/blur-token/"
+ },
+ "CELO-USD": {
+ "name": "Celo",
+ "tags": [],
+ "websiteLink": "https://celo.org",
+ "whitepaperLink": "https://docs.celo.org",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/celo/"
+ },
+ "BTC-USD": {
+ "name": "Bitcoin",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://bitcoin.org/",
+ "whitepaperLink": "https://bitcoin.org/bitcoin.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/bitcoin/"
+ },
+ "COMP-USD": {
+ "name": "Compound",
+ "tags": ["Defi"],
+ "websiteLink": "https://compound.finance/",
+ "whitepaperLink": "https://compound.finance/documents/Compound.Whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/compound/"
+ },
+ "CRV-USD": {
+ "name": "Curve",
+ "tags": ["Governance"],
+ "websiteLink": "https://curve.fi/",
+ "whitepaperLink": "https://curve.fi/whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/curve-dao-token/"
+ },
+ "DOGE-USD": {
+ "name": "Dogecoin",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://dogecoin.com/",
+ "whitepaperLink": "https://github.com/dogecoin/dogecoin",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/dogecoin/"
+ },
+ "DOT-USD": {
+ "name": "Polkadot",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://polkadot.network/",
+ "whitepaperLink": "https://polkadot.network/PolkaDotPaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/polkadot-new/"
+ },
+ "ENJ-USD": {
+ "name": "Enjin",
+ "tags": [],
+ "websiteLink": "https://enjin.io/",
+ "whitepaperLink": "https://cdn.enjin.io/downloads/whitepapers/enjin-coin/en.pdf/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/enjin-coin/"
+ },
+ "EOS-USD": {
+ "name": "EOS",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://eos.io/",
+ "whitepaperLink": "https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/eos/"
+ },
+ "ETC-USD": {
+ "name": "Ethereum Classic",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://ethereumclassic.org/",
+ "whitepaperLink": "https://ethereumclassic.org/why-classic",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/ethereum-classic/"
+ },
+ "ETH-USD": {
+ "name": "Ethereum",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://ethereum.org/",
+ "whitepaperLink": "https://ethereum.org/whitepaper/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/ethereum/",
+ "displayStepSize": "0.001",
+ "displayTickSize": "0.1"
+ },
+ "FIL-USD": {
+ "name": "Filecoin",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://filecoin.io/",
+ "whitepaperLink": "https://filecoin.io/filecoin.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/filecoin/"
+ },
+ "HNT-USD": {
+ "name": "Helium",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://www.helium.com",
+ "whitepaperLink": "http://whitepaper.helium.com",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/helium/"
+ },
+ "ICP-USD": {
+ "name": "Internet Computer",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://dfinity.org",
+ "whitepaperLink": "https://dfinity.org/whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/internet-computer/"
+ },
+ "LDO-USD": {
+ "name": "Lido DAO",
+ "tags": ["Defi"],
+ "websiteLink": "https://lido.fi/",
+ "whitepaperLink": "https://lido.fi/static/Lido:Ethereum-Liquid-Staking.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/lido-dao/"
+ },
+ "LINK-USD": {
+ "name": "Chainlink",
+ "tags": ["Defi"],
+ "websiteLink": "https://chain.link/",
+ "whitepaperLink": "https://link.smartcontract.com/whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/chainlink/"
+ },
+ "LTC-USD": {
+ "name": "Litecoin",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://litecoin.org/",
+ "whitepaperLink": "https://litecoin.info/index.php/Main_Page",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/litecoin/"
+ },
+ "MATIC-USD": {
+ "name": "Polygon",
+ "tags": ["Layer 2"],
+ "websiteLink": "https://polygon.technology/",
+ "whitepaperLink": "https://polygon.technology/lightpaper-polygon.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/polygon/"
+ },
+ "MKR-USD": {
+ "name": "Maker",
+ "tags": ["Governance"],
+ "websiteLink": "https://makerdao.com",
+ "whitepaperLink": "https://makerdao.com/whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/maker/"
+ },
+ "NEAR-USD": {
+ "name": "NEAR Protocol",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://near.org",
+ "whitepaperLink": "https://near.org/papers/the-official-near-white-paper/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/near-protocol/"
+ },
+ "OP-USD": {
+ "name": "Optimism",
+ "tags": [],
+ "websiteLink": "https://www.optimism.io/",
+ "whitepaperLink": "https://github.com/ethereum-optimism",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/optimism-ethereum/"
+ },
+ "PEPE-USD": {
+ "name": "Pepe",
+ "tags": [],
+ "websiteLink": "https://www.pepe.vip/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/pepe/"
+ },
+ "RUNE-USD": {
+ "name": "THORChain",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://thorchain.org",
+ "whitepaperLink": "https://whitepaper.io/document/709/thorchain-whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/thorchain/"
+ },
+ "SEI-USD": {
+ "name": "Sei",
+ "tags": ["Layer 1", "Defi"],
+ "websiteLink": "https://www.sei.io/",
+ "whitepaperLink": "https://github.com/sei-protocol/sei-chain/blob/3c9576fee3494ce039df684624f918dd8066ba3f/whitepaper/Sei_Whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/sei/"
+ },
+ "SHIB-USD": {
+ "name": "Shiba Inu",
+ "tags": [],
+ "websiteLink": "https://shibatoken.com/",
+ "whitepaperLink": "https://docs.shibatoken.com/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/shiba-inu/"
+ },
+ "SNX-USD": {
+ "name": "Synthetix",
+ "tags": ["Defi"],
+ "websiteLink": "https://synthetix.io/",
+ "whitepaperLink": "https://docs.synthetix.io/litepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/synthetix-network-token/"
+ },
+ "SOL-USD": {
+ "name": "Solana",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://solana.com/",
+ "whitepaperLink": "https://solana.com/solana-whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/solana/"
+ },
+ "SUI-USD": {
+ "name": "Sui",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://sui.io/",
+ "whitepaperLink": "https://github.com/MystenLabs",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/sui/"
+ },
+ "SUSHI-USD": {
+ "name": "Sushi",
+ "tags": ["Defi"],
+ "websiteLink": "https://sushi.com/",
+ "whitepaperLink": "https://docs.sushi.com/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/sushiswap/"
+ },
+ "TIA-USD": {
+ "name": "Celestia",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://celestia.org/",
+ "whitepaperLink": "https://arxiv.org/pdf/1905.09274.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/celestia/"
+ },
+ "TRX-USD": {
+ "name": "TRON",
+ "tags": ["Defi"],
+ "websiteLink": "https://tron.network/",
+ "whitepaperLink": "https://tron.network/static/doc/white_paper_v_2_0.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/tron/"
+ },
+ "UMA-USD": {
+ "name": "UMA",
+ "tags": ["Defi"],
+ "websiteLink": "https://umaproject.org/",
+ "whitepaperLink": "https://github.com/UMAprotocol/whitepaper",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/uma/"
+ },
+ "UNI-USD": {
+ "name": "Uniswap",
+ "tags": ["Defi"],
+ "websiteLink": "https://uniswap.org/",
+ "whitepaperLink": "https://uniswap.org/whitepaper-v3.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/uniswap/"
+ },
+ "WLD-USD": {
+ "name": "Worldcoin",
+ "tags": [],
+ "websiteLink": "https://worldcoin.org/",
+ "whitepaperLink": "https://whitepaper.worldcoin.org/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/worldcoin-org/"
+ },
+ "XLM-USD": {
+ "name": "Stellar",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://www.stellar.org/",
+ "whitepaperLink": "https://www.stellar.org/papers/stellar-consensus-protocol",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/stellar/"
+ },
+ "XMR-USD": {
+ "name": "Monero",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://www.getmonero.org/",
+ "whitepaperLink": "https://www.getmonero.org/resources/research-lab/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/monero/"
+ },
+ "XRP-USD": {
+ "name": "Ripple",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://ripple.com/currency/",
+ "whitepaperLink": "https://github.com/ripple",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/xrp/"
+ },
+ "XTZ-USD": {
+ "name": "Tezos",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://tezos.com",
+ "whitepaperLink": "https://tezos.com/whitepaper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/tezos/"
+ },
+ "YFI-USD": {
+ "name": "Yearn",
+ "tags": ["Defi"],
+ "websiteLink": "https://yearn.finance/",
+ "whitepaperLink": "https://docs.yearn.finance/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/yearn-finance/"
+ },
+ "ZEC-USD": {
+ "name": "Zcash",
+ "tags": ["Layer 1"],
+ "websiteLink": "https://z.cash/",
+ "whitepaperLink": "https://z.cash/technology/",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/zcash/"
+ },
+ "ZRX-USD": {
+ "name": "0x",
+ "tags": ["Defi"],
+ "websiteLink": "https://0x.org/",
+ "whitepaperLink": "https://0x.org/pdfs/0x_white_paper.pdf",
+ "coinMarketCapsLink": "https://coinmarketcap.com/currencies/0x/"
+ }
+}
diff --git a/public/currencies/tia.png b/public/currencies/tia.png
new file mode 100644
index 0000000..7dc9a4f
Binary files /dev/null and b/public/currencies/tia.png differ
diff --git a/public/currencies/unavailable.png b/public/currencies/unavailable.png
new file mode 100644
index 0000000..922585a
Binary files /dev/null and b/public/currencies/unavailable.png differ
diff --git a/src/App.tsx b/src/App.tsx
index 57d1970..ae59c05 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,4 +1,4 @@
-import { Suspense } from 'react';
+import { lazy, Suspense } from 'react';
import { Navigate, Route, Routes } from 'react-router-dom';
import styled, { AnyStyledComponent, css } from 'styled-components';
import { WagmiConfig } from 'wagmi';
@@ -25,16 +25,6 @@ import { SubaccountProvider } from '@/hooks/useSubaccount';
import { GuardedMobileRoute } from '@/components/GuardedMobileRoute';
-import MarketsPage from '@/pages/markets/Markets';
-import PortfolioPage from '@/pages/portfolio/Portfolio';
-import { AlertsPage } from '@/pages/AlertsPage';
-import ProfilePage from '@/pages/Profile';
-import { SettingsPage } from '@/pages/settings/Settings';
-import TradePage from '@/pages/trade/Trade';
-import { RewardsPage } from '@/pages/rewards/RewardsPage';
-import { TermsOfUsePage } from '@/pages/TermsOfUsePage';
-import { PrivacyPolicyPage } from '@/pages/PrivacyPolicyPage';
-
import { HeaderDesktop } from '@/layout/Header/HeaderDesktop';
import { FooterDesktop } from '@/layout/Footer/FooterDesktop';
import { FooterMobile } from '@/layout/Footer/FooterMobile';
@@ -46,11 +36,22 @@ import { config } from '@/lib/wagmi';
import { breakpoints } from '@/styles';
import { layoutMixins } from '@/styles/layoutMixins';
+import { LoadingSpace } from './components/Loading/LoadingSpinner';
import '@/styles/constants.css';
import '@/styles/fonts.css';
import '@/styles/web3modal.css';
+const MarketsPage = lazy(() => import('@/pages/markets/Markets'));
+const PortfolioPage = lazy(() => import('@/pages/portfolio/Portfolio'));
+const AlertsPage = lazy(() => import('@/pages/AlertsPage'));
+const ProfilePage = lazy(() => import('@/pages/Profile'));
+const SettingsPage = lazy(() => import('@/pages/settings/Settings'));
+const TradePage = lazy(() => import('@/pages/trade/Trade'));
+const RewardsPage = lazy(() => import('@/pages/rewards/RewardsPage'));
+const TermsOfUsePage = lazy(() => import('@/pages/TermsOfUsePage'));
+const PrivacyPolicyPage = lazy(() => import('@/pages/PrivacyPolicyPage'));
+
const queryClient = new QueryClient();
const Content = () => {
@@ -69,7 +70,7 @@ const Content = () => {
{isNotTablet && }
-
+ }>
} />
diff --git a/src/components/Accordion.tsx b/src/components/Accordion.tsx
new file mode 100644
index 0000000..b65c90e
--- /dev/null
+++ b/src/components/Accordion.tsx
@@ -0,0 +1,119 @@
+import styled, { keyframes, type AnyStyledComponent } from 'styled-components';
+
+import { Root, Item, Header, Trigger, Content } from '@radix-ui/react-accordion';
+
+import { layoutMixins } from '@/styles/layoutMixins';
+import { PlusIcon } from '@/icons';
+
+export type AccordionItem = {
+ header: React.ReactNode;
+ content: React.ReactNode;
+};
+
+type AccordionProps = {
+ items: AccordionItem[];
+ className?: string;
+};
+
+export const Accordion = ({ items, className }: AccordionProps) => (
+
+ {items.map(({ header, content }, idx) => (
+
+
+ {content}
+
+ ))}
+
+);
+
+const Styled: Record = {};
+
+Styled.Root = styled(Root)`
+ > *:not(:last-child) {
+ border-bottom: var(--border-width) solid var(--border-color);
+ }
+`;
+
+Styled.Item = styled(Item)``;
+
+Styled.Icon = styled.div`
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+
+ width: 2.25rem;
+ height: 2.25rem;
+
+ --color-border: var(--color-layer-6);
+ color: var(--color-text-1);
+ background-color: var(--color-layer-5);
+ border: solid var(--border-width) var(--color-border);
+ border-radius: 50%;
+ font: var(--font-small-book);
+
+ svg {
+ height: 1.125em;
+ width: 1.125em;
+ }
+`;
+
+Styled.Trigger = styled(Trigger)`
+ ${layoutMixins.spacedRow}
+ width: 100%;
+ padding: 1rem 0.75rem;
+
+ color: var(--color-text-1);
+ text-align: start;
+
+ &:hover {
+ ${Styled.Icon} {
+ color: var(--color-text-2);
+ filter: brightness(1.1);
+ }
+ }
+
+ svg {
+ color: var(--color-text-0);
+ transition: transform 0.3s var(--ease-out-expo);
+ }
+
+ &[data-state='open'] svg {
+ transform: rotate(45deg);
+ }
+`;
+
+Styled.Content = styled(Content)`
+ overflow: hidden;
+ margin: 0 0.75rem 1rem;
+
+ color: var(--color-text-0);
+
+ &[data-state='open'] {
+ animation: ${keyframes`
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--radix-accordion-content-height);
+ }
+ `} 0.3s var(--ease-out-expo);
+ }
+
+ &[data-state='closed'] {
+ animation: ${keyframes`
+ from {
+ height: var(--radix-accordion-content-height);
+ }
+ to {
+ height: 0;
+ }
+ `} 0.1s var(--ease-in-expo);
+ }
+`;
diff --git a/src/components/AssetIcon.tsx b/src/components/AssetIcon.tsx
index 5ecc426..1ea994b 100644
--- a/src/components/AssetIcon.tsx
+++ b/src/components/AssetIcon.tsx
@@ -45,6 +45,7 @@ const assetIcons = {
SOL: '/currencies/sol.png',
SUI: '/currencies/sui.png',
SUSHI: '/currencies/sushi.png',
+ TIA: '/currencies/tia.png',
TRX: '/currencies/trx.png',
UMA: '/currencies/uma.png',
UNI: '/currencies/uni.png',
@@ -71,8 +72,13 @@ export const AssetIcon = ({
}: {
symbol?: Nullable;
className?: string;
-}) =>
- isAssetSymbol(symbol) ? : null;
+}) => (
+
+);
const Styled: Record = {};
diff --git a/src/components/CollapsibleTabs.tsx b/src/components/CollapsibleTabs.tsx
index a1d7bfa..991f0ac 100644
--- a/src/components/CollapsibleTabs.tsx
+++ b/src/components/CollapsibleTabs.tsx
@@ -31,10 +31,12 @@ type ElementProps = {
};
type StyleProps = {
- fullWidthTabs?: boolean;
className?: string;
+ fullWidthTabs?: boolean;
};
+export type CollapsibleTabsProps = ElementProps & StyleProps;
+
export const CollapsibleTabs = ({
defaultValue,
items,
@@ -43,8 +45,9 @@ export const CollapsibleTabs = ({
onOpenChange,
fullWidthTabs,
+
className,
-}: ElementProps & StyleProps) => {
+}: CollapsibleTabsProps) => {
const [value, setValue] = useState(defaultValue);
const currentItem = items.find((item) => item.value === value);
@@ -86,8 +89,8 @@ export const CollapsibleTabs = ({
- {items.map(({ value, content }) => (
-
+ {items.map(({ asChild, value, content }) => (
+
{content}
))}
@@ -219,7 +222,6 @@ Styled.Header = styled.header`
Styled.CollapsibleContent = styled(CollapsibleContent)`
${layoutMixins.stack}
- ${layoutMixins.perspectiveArea}
box-shadow: none;
`;
diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx
index d5f5d64..d8db86f 100644
--- a/src/components/Icon.tsx
+++ b/src/components/Icon.tsx
@@ -55,6 +55,7 @@ import {
OverviewIcon,
PencilIcon,
PlayIcon,
+ PlusIcon,
PositionsIcon,
PriceChartIcon,
PrivacyIcon,
@@ -130,6 +131,7 @@ export enum IconName {
Overview = 'Overview',
Pencil = 'Pencil',
Play = 'Play',
+ Plus = 'Plus',
Positions = 'Positions',
PriceChart = 'PriceChart',
Privacy = 'Privacy',
@@ -204,6 +206,7 @@ const icons = {
[IconName.Overview]: OverviewIcon,
[IconName.Pencil]: PencilIcon,
[IconName.Play]: PlayIcon,
+ [IconName.Plus]: PlusIcon,
[IconName.Positions]: PositionsIcon,
[IconName.PriceChart]: PriceChartIcon,
[IconName.Privacy]: PrivacyIcon,
diff --git a/src/components/Input.tsx b/src/components/Input.tsx
index b74e4f8..e8d3d75 100644
--- a/src/components/Input.tsx
+++ b/src/components/Input.tsx
@@ -10,7 +10,7 @@ import {
USD_DECIMALS,
} from '@/constants/numbers';
-import { BIG_NUMBERS, MustBigNumber } from '@/lib/numbers';
+import { BIG_NUMBERS } from '@/lib/numbers';
import { useLocaleSeparators } from '@/hooks';
export enum InputType {
@@ -29,31 +29,38 @@ type StyleProps = {
type ElementProps = {
type?: InputType;
value?: string | number | null;
-
- allowNegative?: boolean;
- decimals?: number;
disabled?: boolean;
id?: string;
- max?: number;
onBlur?: () => void;
- onChange?:
- | Dispatch>
- | React.ReactEventHandler
- | ((values: NumberFormatValues, e: SourceInfo) => void);
onFocus?: () => void;
- onInput?: ({
- value,
- floatValue,
- formattedValue,
- }: {
- value: string;
- floatValue?: number;
- formattedValue: string;
- }) => void;
placeholder?: string;
};
-export type InputProps = ElementProps & StyleProps;
+type ConditionalProps =
+ | {
+ allowNegative?: boolean;
+ decimals?: number;
+ max?: number;
+ onChange?: (values: NumberFormatValues, e: SourceInfo) => void;
+ onInput?: ({
+ value,
+ floatValue,
+ formattedValue,
+ }: {
+ value: string;
+ floatValue?: number;
+ formattedValue: string;
+ }) => void;
+ }
+ | {
+ allowNegative?: never;
+ decimals?: never;
+ max?: never;
+ onChange?: Dispatch> | React.ReactEventHandler;
+ onInput?: (e: SyntheticInputEvent) => void;
+ };
+
+export type InputProps = ElementProps & StyleProps & ConditionalProps;
export const Input = forwardRef(
(
@@ -138,6 +145,7 @@ export const Input = forwardRef(
ref={ref as React.Ref>}
id={id}
// NumericFormat
+ valueIsNumericString
allowNegative={allowNegative}
decimalScale={decimals}
decimalSeparator={LOCALE_DECIMAL_SEPARATOR}
@@ -161,7 +169,7 @@ export const Input = forwardRef(
? undefined
: Number(formattedValue.replace(',', '.'));
- onInput?.({ value, floatValue, formattedValue });
+ onInput?.({ value, floatValue, formattedValue, ...e });
}}
// Native
disabled={disabled}
@@ -190,7 +198,6 @@ Styled.InputContainer = styled.div`
border-radius: inherit;
input {
- user-select: all;
flex: 1;
width: 100%;
}
diff --git a/src/components/Table.tsx b/src/components/Table.tsx
index 5ef1dd0..d82a94a 100644
--- a/src/components/Table.tsx
+++ b/src/components/Table.tsx
@@ -43,6 +43,7 @@ import { layoutMixins } from '@/styles/layoutMixins';
import { Icon, IconName } from './Icon';
import { Tag } from './Tag';
+import { MustBigNumber } from '@/lib/numbers';
export { TableCell } from './Table/TableCell';
export { TableColumnHeader } from './Table/TableColumnHeader';
@@ -161,10 +162,7 @@ export const Table = ({
? // String
collator.compare(first as string, second as string)
: // Number
- Math.sign(
- (parseInt(first as string) || (first as number)) -
- (parseInt(second as string) || (second as number))
- )) *
+ MustBigNumber(first).comparedTo(MustBigNumber(second))) *
// Flip the direction if descending order is specified.
(sortDirection === 'descending' ? -1 : 1)
);
diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx
index f6b9cd3..7ef8bc2 100644
--- a/src/components/Tabs.tsx
+++ b/src/components/Tabs.tsx
@@ -42,6 +42,8 @@ type StyleProps = {
className?: string;
};
+export type TabsProps = ElementProps & StyleProps;
+
export const Tabs = ({
defaultValue,
value,
@@ -111,6 +113,7 @@ export const Tabs = ({
{items.map(({ asChild, value, content, forceMount }) => (
`
Styled.Stack = styled.div`
${layoutMixins.stack}
- ${layoutMixins.perspectiveArea}
box-shadow: none;
`;
diff --git a/src/constants/markets.ts b/src/constants/markets.ts
index 203e2ce..edb44f9 100644
--- a/src/constants/markets.ts
+++ b/src/constants/markets.ts
@@ -26,34 +26,3 @@ export enum FundingDirection {
ToShort = 'ToShort',
ToLong = 'ToLong',
}
-
-export const MARKETS_TO_DISPLAY = [
- 'BTC-USD',
- 'ETH-USD',
- 'LINK-USD',
- 'SOL-USD',
- 'MATIC-USD',
- 'ATOM-USD',
- 'AVAX-USD',
- 'APE-USD',
- 'XRP-USD',
- 'UNI-USD',
- 'ADA-USD',
- 'TRX-USD',
- 'OP-USD',
- 'MKR-USD',
- 'DOGE-USD',
- 'SHIB-USD',
- 'COMP-USD',
- 'LDO-USD',
- 'NEAR-USD',
- 'APT-USD',
- 'SUI-USD',
- 'DOT-USD',
- 'ETC-USD',
- 'ARB-USD',
- 'CRV-USD',
- 'BLUR-USD',
- 'FIL-USD',
- 'XLM-USD',
-];
diff --git a/src/constants/notifications.ts b/src/constants/notifications.ts
index 5262c83..a455fd1 100644
--- a/src/constants/notifications.ts
+++ b/src/constants/notifications.ts
@@ -122,9 +122,15 @@ export type NotificationDisplayData = {
toastDuration?: number;
};
+export enum TransferNotificationTypes {
+ Withdrawal = 'withdrawal',
+ Deposit = 'deposit',
+}
+
// Notification types
export type TransferNotifcation = {
txHash: string;
+ type?: TransferNotificationTypes;
toChainId?: string;
fromChainId?: string;
toAmount?: number;
diff --git a/src/constants/numbers.ts b/src/constants/numbers.ts
index aa6fd6a..e515d83 100644
--- a/src/constants/numbers.ts
+++ b/src/constants/numbers.ts
@@ -10,6 +10,7 @@ export const LEVERAGE_DECIMALS = 2;
export const TOKEN_DECIMALS = 4;
export const LARGE_TOKEN_DECIMALS = 2;
export const FEE_DECIMALS = 3;
+export const FUNDING_DECIMALS = 6;
export const QUANTUM_MULTIPLIER = 1_000_000;
@@ -18,3 +19,7 @@ export enum NumberSign {
Negative = 'Negative',
Neutral = 'Neutral',
}
+
+// Deposit/Withdraw
+export const MAX_CCTP_TRANSFER_AMOUNT = 1_000_000;
+export const MAX_PRICE_IMPACT = 0.02; // 2%
diff --git a/src/constants/tooltips/deposit.ts b/src/constants/tooltips/deposit.ts
index a358def..de30ab2 100644
--- a/src/constants/tooltips/deposit.ts
+++ b/src/constants/tooltips/deposit.ts
@@ -1,6 +1,10 @@
import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization';
export const depositTooltips: TooltipStrings = {
+ 'minimum-deposit-amount': ({ stringGetter }) => ({
+ title: stringGetter({ key: TOOLTIP_STRING_KEYS.MINIMUM_DEPOSIT_AMOUNT_TITLE }),
+ body: stringGetter({ key: TOOLTIP_STRING_KEYS.MINIMUM_DEPOSIT_AMOUNT_BODY }),
+ }),
swap: ({ stringGetter }) => ({
title: stringGetter({ key: TOOLTIP_STRING_KEYS.SWAP_TITLE }),
body: stringGetter({ key: TOOLTIP_STRING_KEYS.SWAP_BODY }),
diff --git a/src/constants/tooltips/withdraw.ts b/src/constants/tooltips/withdraw.ts
index 4b91aa7..e5c0f41 100644
--- a/src/constants/tooltips/withdraw.ts
+++ b/src/constants/tooltips/withdraw.ts
@@ -5,6 +5,10 @@ export const withdrawTooltips: TooltipStrings = {
title: stringGetter({ key: TOOLTIP_STRING_KEYS.FAST_WITHDRAW_FEE_TITLE }),
body: stringGetter({ key: TOOLTIP_STRING_KEYS.FAST_WITHDRAW_FEE_BODY }),
}),
+ 'minimum-amount-received': ({ stringGetter }) => ({
+ title: stringGetter({ key: TOOLTIP_STRING_KEYS.MINIMUM_AMOUNT_RECEIVED_TITLE }),
+ body: stringGetter({ key: TOOLTIP_STRING_KEYS.MINIMUM_AMOUNT_RECEIVED_BODY }),
+ }),
'withdraw-types': ({ stringGetter }) => ({
title: stringGetter({ key: TOOLTIP_STRING_KEYS.WITHDRAW_TYPES_TITLE }),
body: stringGetter({ key: TOOLTIP_STRING_KEYS.WITHDRAW_TYPES_BODY }),
diff --git a/src/hooks/useCurrentMarketId.ts b/src/hooks/useCurrentMarketId.ts
index 7530a2c..c9a9166 100644
--- a/src/hooks/useCurrentMarketId.ts
+++ b/src/hooks/useCurrentMarketId.ts
@@ -5,16 +5,15 @@ import { useMatch, useNavigate } from 'react-router-dom';
import { LocalStorageKey } from '@/constants/localStorage';
import { DEFAULT_MARKETID } from '@/constants/markets';
import { AppRoute } from '@/constants/routes';
+import { useLocalStorage } from '@/hooks/useLocalStorage';
import { getSelectedNetwork } from '@/state/appSelectors';
import { closeDialogInTradeBox } from '@/state/dialogs';
import { setCurrentMarketId } from '@/state/perpetuals';
+import { getMarketIds } from '@/state/perpetualsSelectors';
import abacusStateManager from '@/lib/abacus';
-import { useLocalStorage } from './useLocalStorage';
-import { getMarketIds } from '@/state/perpetualsSelectors';
-
export const useCurrentMarketId = () => {
const navigate = useNavigate();
const match = useMatch(`/${AppRoute.Trade}/:marketId`);
@@ -33,17 +32,35 @@ export const useCurrentMarketId = () => {
if (marketIds.length === 0) return marketId ?? lastViewedMarket;
if (!marketIds.includes(marketId ?? lastViewedMarket)) return DEFAULT_MARKETID;
return marketId ?? lastViewedMarket;
- }, [marketIds, marketId]);
+ }, [hasMarketIds, marketId]);
useEffect(() => {
- setLastViewedMarket(validId);
- dispatch(setCurrentMarketId(validId));
- dispatch(closeDialogInTradeBox());
+ // If v4_markets has not been subscribed to yet or marketId is not specified, default to validId
+ if (!hasMarketIds || !marketId) {
+ setLastViewedMarket(validId);
+ dispatch(setCurrentMarketId(validId));
+ dispatch(closeDialogInTradeBox());
- navigate(`${AppRoute.Trade}/${validId}`, {
- replace: true,
- });
- }, [validId]);
+ if (validId !== marketId) {
+ navigate(`${AppRoute.Trade}/${validId}`, {
+ replace: true,
+ });
+ }
+ } else {
+ // If v4_markets has been subscribed to, check if marketId is valid
+ if (!marketIds.includes(marketId)) {
+ // If marketId is not valid (i.e. final settlement), navigate to markets page
+ navigate(AppRoute.Markets, {
+ replace: true,
+ });
+ } else {
+ // If marketId is valid, set currentMarketId
+ setLastViewedMarket(marketId);
+ dispatch(setCurrentMarketId(marketId));
+ dispatch(closeDialogInTradeBox());
+ }
+ }
+ }, [hasMarketIds, marketId]);
useEffect(() => {
// Check for marketIds otherwise Abacus will silently fail its isMarketValid check
diff --git a/src/hooks/useMarketsData.ts b/src/hooks/useMarketsData.ts
index e9ec038..020db64 100644
--- a/src/hooks/useMarketsData.ts
+++ b/src/hooks/useMarketsData.ts
@@ -1,14 +1,7 @@
import { useMemo } from 'react';
import { useSelector, shallowEqual } from 'react-redux';
-import {
- MarketFilters,
- MARKET_FILTER_LABELS,
- type MarketData,
- MARKETS_TO_DISPLAY,
-} from '@/constants/markets';
-
-import { testFlags } from '@/lib/testFlags';
+import { MarketFilters, MARKET_FILTER_LABELS, type MarketData } from '@/constants/markets';
import { getAssets } from '@/state/assetsSelectors';
import { getPerpetualMarkets } from '@/state/perpetualsSelectors';
@@ -49,9 +42,7 @@ export const useMarketsData = (
}, [allPerpetualMarkets, allAssets]);
const filteredMarkets = useMemo(() => {
- const filtered = markets
- .filter(filterFunctions[filter])
- .filter(({ id }) => (testFlags.displayAllMarkets ? true : MARKETS_TO_DISPLAY.includes(id)));
+ const filtered = markets.filter(filterFunctions[filter]);
if (searchFilter) {
return filtered.filter(
diff --git a/src/hooks/useNotificationTypes.tsx b/src/hooks/useNotificationTypes.tsx
index 619a072..870e03e 100644
--- a/src/hooks/useNotificationTypes.tsx
+++ b/src/hooks/useNotificationTypes.tsx
@@ -20,6 +20,7 @@ import {
type NotificationTypeConfig,
NotificationType,
DEFAULT_TOAST_AUTO_CLOSE_MS,
+ TransferNotificationTypes,
} from '@/constants/notifications';
import { useSelectedNetwork, useStringGetter } from '@/hooks';
@@ -152,20 +153,20 @@ export const notificationTypes: NotificationTypeConfig[] = [
useEffect(() => {
for (const transfer of transferNotifications) {
- const { fromChainId, status, txHash, toAmount } = transfer;
+ const { fromChainId, status, txHash, toAmount, type } = transfer;
const isFinished = Boolean(status) && status?.squidTransactionStatus !== 'ongoing';
const icon = ;
- const type =
- fromChainId === ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId
- ? 'withdrawal'
- : 'deposit';
+ const transferType =
+ type ?? fromChainId === ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId
+ ? TransferNotificationTypes.Withdrawal
+ : TransferNotificationTypes.Deposit;
const title = stringGetter({
key: {
deposit: isFinished ? STRING_KEYS.DEPOSIT : STRING_KEYS.DEPOSIT_IN_PROGRESS,
withdrawal: isFinished ? STRING_KEYS.WITHDRAW : STRING_KEYS.WITHDRAW_IN_PROGRESS,
- }[type],
+ }[transferType],
});
const toChainEta = status?.toChain?.chainData?.estimatedRouteDuration || 0;
@@ -190,7 +191,7 @@ export const notificationTypes: NotificationTypeConfig[] = [
slotIcon={icon}
slotTitle={title}
transfer={transfer}
- type={type}
+ type={transferType}
triggeredAt={transfer.triggeredAt}
notification={notification}
/>
diff --git a/src/hooks/useSubaccount.tsx b/src/hooks/useSubaccount.tsx
index cd5fa57..b44b2ac 100644
--- a/src/hooks/useSubaccount.tsx
+++ b/src/hooks/useSubaccount.tsx
@@ -31,6 +31,7 @@ import { log } from '@/lib/telemetry';
import { useAccounts } from './useAccounts';
import { useTokenConfigs } from './useTokenConfigs';
import { useDydxClient } from './useDydxClient';
+import { hashFromTx } from '@/lib/hashfromTx';
type SubaccountContextType = ReturnType;
const SubaccountContext = createContext({} as SubaccountContextType);
@@ -293,12 +294,29 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo
);
const sendSquidWithdraw = useCallback(
- async (amount: number, payload: string) => {
+ async (amount: number, payload: string, isCctp?: boolean) => {
+
+ const cctpWithdraw = () => {
+ return new Promise((resolve, reject) =>
+ abacusStateManager.cctpWithdraw((success, error, data) => {
+ const parsedData = JSON.parse(data);
+ if (success && parsedData?.code == 0) {
+ resolve(parsedData?.transactionHash);
+ } else {
+ reject(error);
+ }
+ })
+ )
+ }
+ if (isCctp) {
+ return await cctpWithdraw();
+ }
+
if (!subaccountClient) {
return;
}
-
- return await sendSquidWithdrawFromSubaccount({ subaccountClient, amount, payload });
+ const tx = await sendSquidWithdrawFromSubaccount({ subaccountClient, amount, payload });
+ return hashFromTx(tx?.hash);
},
[subaccountClient, sendSquidWithdrawFromSubaccount]
);
diff --git a/src/hooks/useTradeFormInputs.ts b/src/hooks/useTradeFormInputs.ts
index 39ff5b5..fa36827 100644
--- a/src/hooks/useTradeFormInputs.ts
+++ b/src/hooks/useTradeFormInputs.ts
@@ -11,22 +11,19 @@ export const useTradeFormInputs = () => {
const { limitPriceInput, triggerPriceInput, trailingPercentInput } = tradeFormInputValues;
useEffect(() => {
- const floatValue = parseFloat(triggerPriceInput);
abacusStateManager.setTradeValue({
- value: floatValue,
+ value: triggerPriceInput,
field: TradeInputField.triggerPrice,
});
}, [triggerPriceInput]);
useEffect(() => {
- const floatValue = parseFloat(limitPriceInput);
- abacusStateManager.setTradeValue({ value: floatValue, field: TradeInputField.limitPrice });
+ abacusStateManager.setTradeValue({ value: limitPriceInput, field: TradeInputField.limitPrice });
}, [limitPriceInput]);
useEffect(() => {
- const floatValue = parseFloat(trailingPercentInput);
abacusStateManager.setTradeValue({
- value: floatValue,
+ value: trailingPercentInput,
field: TradeInputField.trailingPercent,
});
}, [trailingPercentInput]);
diff --git a/src/icons/index.ts b/src/icons/index.ts
index a32913e..bd3b347 100644
--- a/src/icons/index.ts
+++ b/src/icons/index.ts
@@ -44,6 +44,7 @@ export { default as OrderbookIcon } from './orderbook.svg';
export { default as OverviewIcon } from './overview.svg';
export { default as PencilIcon } from './pencil.svg';
export { default as PlayIcon } from './play.svg';
+export { default as PlusIcon } from './plus.svg';
export { default as PortfolioIcon } from './portfolio.svg';
export { default as PositionsIcon } from './positions.svg';
export { default as PriceChartIcon } from './price-chart.svg';
diff --git a/src/icons/plus.svg b/src/icons/plus.svg
new file mode 100644
index 0000000..c74751a
--- /dev/null
+++ b/src/icons/plus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/lib/abacus/dydxChainTransactions.ts b/src/lib/abacus/dydxChainTransactions.ts
index 425c16d..56c4a8c 100644
--- a/src/lib/abacus/dydxChainTransactions.ts
+++ b/src/lib/abacus/dydxChainTransactions.ts
@@ -2,6 +2,7 @@ import Abacus, { type Nullable } from '@dydxprotocol/v4-abacus';
import Long from 'long';
import type { IndexedTx } from '@cosmjs/stargate';
import { GAS_MULTIPLIER, encodeJson } from '@dydxprotocol/v4-client-js';
+import { EncodeObject } from '@cosmjs/proto-signing';
import {
CompositeClient,
@@ -41,6 +42,7 @@ import { openDialog } from '@/state/dialogs';
import { StatefulOrderError } from '../errors';
import { bytesToBigInt } from '../numbers';
import { log } from '../telemetry';
+import { hashFromTx } from '../hashfromTx';
class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
private compositeClient: CompositeClient | undefined;
@@ -63,9 +65,13 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
}
setNobleWallet(nobleWallet: LocalWallet) {
- this.nobleWallet = nobleWallet;
- if (this.nobleClient) {
- this.nobleClient.connect(nobleWallet);
+ try {
+ this.nobleWallet = nobleWallet;
+ if (this.nobleClient) {
+ this.nobleClient.connect(nobleWallet);
+ }
+ } catch (e) {
+ log('DydxChainTransactions/setNobleWallet', e);
}
}
@@ -112,10 +118,15 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
this.compositeClient = compositeClient;
- if (nobleValidatorUrl) {
- this.nobleClient = new NobleClient(nobleValidatorUrl);
- if (this.nobleWallet) await this.nobleClient.connect(this.nobleWallet);
+ try {
+ if (nobleValidatorUrl) {
+ this.nobleClient = new NobleClient(nobleValidatorUrl);
+ if (this.nobleWallet) await this.nobleClient.connect(this.nobleWallet);
+ }
+ } catch (e) {
+ log('DydxChainTransactions/connectNetwork/NobleClient', e);
}
+
// Dispatch custom event to notify other parts of the app that the network has been connected
const customEvent = new CustomEvent('abacus:connectNetwork', {
detail: parsedParams,
@@ -201,8 +212,8 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
timeInForce as OrderTimeInForce,
goodTilTimeInSeconds ?? 0,
execution as OrderExecution,
- postOnly,
- reduceOnly,
+ postOnly ?? undefined,
+ reduceOnly ?? undefined,
triggerPrice ?? undefined
);
@@ -340,12 +351,7 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
}
}
- async sendNobleIBC(
- params: {
- msgTypeUrl: string,
- msg: any,
- }
- ): Promise {
+ async sendNobleIBC(params: { msgTypeUrl: string; msg: any }): Promise {
if (!this.nobleClient?.isConnected) {
throw new Error('Missing nobleClient or localWallet');
}
@@ -356,15 +362,16 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
value: params.msg,
};
const fee = await this.nobleClient.simulateTransaction([ibcMsg]);
-
+
// take out fee from amount before sweeping
- const amount = parseInt(ibcMsg.value.token.amount, 10) -
+ const amount =
+ parseInt(ibcMsg.value.token.amount, 10) -
Math.floor(parseInt(fee.amount[0].amount, 10) * GAS_MULTIPLIER);
-
+
if (amount <= 0) {
throw new Error('noble balance does not cover fees');
}
-
+
ibcMsg.value.token.amount = amount.toString();
const tx = await this.nobleClient.send([ibcMsg]);
@@ -380,6 +387,86 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
}
}
+ async withdrawToNobleIBC(params: {
+ subaccountNumber: number;
+ amount: string;
+ ibcPayload: string;
+ }): Promise {
+ if (!this.compositeClient || !this.localWallet) {
+ throw new Error('Missing compositeClient or localWallet');
+ }
+
+ const { subaccountNumber, amount, ibcPayload } = params ?? {};
+ const parsedIbcPayload: {
+ msgTypeUrl: string;
+ msg: any;
+ } = ibcPayload ? JSON.parse(atob(ibcPayload)) : undefined;
+
+ try {
+ const msg = this.compositeClient.withdrawFromSubaccountMessage(
+ new SubaccountClient(this.localWallet, subaccountNumber),
+ parseFloat(amount).toFixed(this.compositeClient.validatorClient.config.denoms.USDC_DECIMALS)
+ );
+ const ibcMsg: EncodeObject = {
+ typeUrl: parsedIbcPayload.msgTypeUrl,
+ value: parsedIbcPayload.msg,
+ };
+
+ const tx = await this.compositeClient.send(
+ this.localWallet,
+ () => Promise.resolve([msg, ibcMsg]),
+ false
+ );
+
+ return JSON.stringify({
+ txHash: hashFromTx(tx?.hash),
+ });
+ } catch (error) {
+ log('DydxChainTransactions/withdrawToNobleIBC', error);
+
+ return JSON.stringify({
+ error,
+ });
+ }
+ }
+
+ async cctpWithdraw(params: { typeUrl: string; value: any }): Promise {
+ if (!this.nobleClient?.isConnected) {
+ throw new Error('Missing nobleClient or localWallet');
+ }
+
+ try {
+ const ibcMsg = {
+ typeUrl: params.typeUrl, // '/circle.cctp.v1.MsgDepositForBurn',
+ value: params.value,
+ };
+ const fee = await this.nobleClient.simulateTransaction([ibcMsg]);
+
+ // take out fee from amount before sweeping
+ const amount =
+ parseInt(ibcMsg.value.amount, 10) -
+ Math.floor(parseInt(fee.amount[0].amount, 10) * GAS_MULTIPLIER);
+
+ if (amount <= 0) {
+ throw new Error('noble balance does not cover fees');
+ }
+
+ ibcMsg.value.amount = amount.toString();
+
+ const tx = await this.nobleClient.send([ibcMsg]);
+
+ const parsedTx = this.parseToPrimitives(tx);
+
+ return JSON.stringify(parsedTx);
+ } catch (error) {
+ log('DydxChainTransactions/cctpWithdraw', error);
+
+ return JSON.stringify({
+ error,
+ });
+ }
+ }
+
async transaction(
type: TransactionTypes,
paramsInJson: Abacus.Nullable,
@@ -414,6 +501,17 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
callback(result);
break;
}
+ case TransactionType.WithdrawToNobleIBC: {
+ const result = await this.withdrawToNobleIBC(params);
+ callback(result);
+ break;
+ }
+ case TransactionType.CctpWithdraw: {
+ const result = await this.cctpWithdraw(params);
+ callback(result);
+ break;
+ break;
+ }
default: {
break;
}
diff --git a/src/lib/abacus/index.ts b/src/lib/abacus/index.ts
index b8ffaae..796fb94 100644
--- a/src/lib/abacus/index.ts
+++ b/src/lib/abacus/index.ts
@@ -84,8 +84,7 @@ class AbacusStateManager {
);
const appConfigs = AbacusAppConfig.Companion.forWeb;
- if (!isMainnet || testFlags.withCCTP)
- appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2DepositOnly;
+ appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2;
this.stateManager = new AsyncAbacusStateManager(
'',
@@ -262,6 +261,14 @@ class AbacusStateManager {
) => void
) => this.stateManager.cancelOrder(orderId, callback);
+ cctpWithdraw = (
+ callback: (
+ success: boolean,
+ parsingError: Nullable,
+ data: string,
+ ) => void
+ ): void => this.stateManager.commitCCTPWithdraw(callback);
+
// ------ Utils ------ //
getHistoricalPnlPeriod = (): Nullable =>
this.stateManager.historicalPnlPeriod;
diff --git a/src/lib/hashfromTx.ts b/src/lib/hashfromTx.ts
new file mode 100644
index 0000000..98696e6
--- /dev/null
+++ b/src/lib/hashfromTx.ts
@@ -0,0 +1,3 @@
+export const hashFromTx = (
+ txHash: string | Uint8Array
+): string => `0x${Buffer.from(txHash).toString('hex')}`;
diff --git a/src/lib/testFlags.ts b/src/lib/testFlags.ts
index bbb5aed..b4a0364 100644
--- a/src/lib/testFlags.ts
+++ b/src/lib/testFlags.ts
@@ -5,13 +5,13 @@ class TestFlags {
this.queryParams = {};
const hash = window.location.hash;
const queryIndex = hash.indexOf('?');
- if (queryIndex === -1) return
+ if (queryIndex === -1) return;
const queryParamsString = hash.substring(queryIndex + 1);
const params = new URLSearchParams(queryParamsString);
for (const [key, value] of params) {
- this.queryParams[key] = value;
+ this.queryParams[key] = value;
}
}
@@ -19,10 +19,6 @@ class TestFlags {
return !!this.queryParams.displayInitializingMarkets;
}
- get displayAllMarkets() {
- return !!this.queryParams.displayAllMarkets;
- }
-
get withCCTP() {
return !!this.queryParams.withCCTP;
}
diff --git a/src/lib/wagmi.ts b/src/lib/wagmi.ts
index 3a0216a..06df75b 100644
--- a/src/lib/wagmi.ts
+++ b/src/lib/wagmi.ts
@@ -146,7 +146,7 @@ const getConnectors = (walletConnectConfig: WalletConnectConfig) => [
new CoinbaseWalletConnector({
chains,
options: {
- appName: 'wagmi',
+ appName: 'dYdX',
reloadOnDisconnect: false,
},
}),
diff --git a/src/pages/AlertsPage.tsx b/src/pages/AlertsPage.tsx
index 87b6a6a..96bf932 100644
--- a/src/pages/AlertsPage.tsx
+++ b/src/pages/AlertsPage.tsx
@@ -1,4 +1,6 @@
import { DialogPlacement } from '@/components/Dialog';
import { NotificationsMenu } from '@/views/menus/NotificationsMenu';
-export const AlertsPage = () => ;
+const AlertsPage = () => ;
+
+export default AlertsPage;
diff --git a/src/pages/PrivacyPolicyPage.tsx b/src/pages/PrivacyPolicyPage.tsx
index ac854ce..226ddb5 100644
--- a/src/pages/PrivacyPolicyPage.tsx
+++ b/src/pages/PrivacyPolicyPage.tsx
@@ -2,7 +2,7 @@ import styled, { AnyStyledComponent } from 'styled-components';
import { articleMixins } from '@/styles/articleMixins';
-export const PrivacyPolicyPage = () => (
+const PrivacyPolicyPage = () => (
Privacy Policy
@@ -10,6 +10,8 @@ export const PrivacyPolicyPage = () => (
);
+export default PrivacyPolicyPage;
+
const Styled: Record = {};
Styled.Article = styled.article`
diff --git a/src/pages/TermsOfUsePage.tsx b/src/pages/TermsOfUsePage.tsx
index cc4ea51..63f431c 100644
--- a/src/pages/TermsOfUsePage.tsx
+++ b/src/pages/TermsOfUsePage.tsx
@@ -2,7 +2,7 @@ import styled, { AnyStyledComponent } from 'styled-components';
import { articleMixins } from '@/styles/articleMixins';
-export const TermsOfUsePage = () => (
+const TermsOfUsePage = () => (
Sample Terms of Use
@@ -1076,6 +1076,8 @@ export const TermsOfUsePage = () => (
);
+export default TermsOfUsePage;
+
const Styled: Record = {};
Styled.Article = styled.article`
diff --git a/src/pages/portfolio/Portfolio.tsx b/src/pages/portfolio/Portfolio.tsx
index dc64379..9b46b43 100644
--- a/src/pages/portfolio/Portfolio.tsx
+++ b/src/pages/portfolio/Portfolio.tsx
@@ -1,17 +1,20 @@
+import { lazy, Suspense } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import styled, { type AnyStyledComponent } from 'styled-components';
import { Navigate, Route, Routes } from 'react-router-dom';
import { OnboardingState } from '@/constants/account';
+import { ButtonAction } from '@/constants/buttons';
import { DialogTypes } from '@/constants/dialogs';
import { STRING_KEYS } from '@/constants/localization';
import { HistoryRoute, PortfolioRoute } from '@/constants/routes';
-
import { useAccountBalance, useBreakpoints, useDocumentTitle, useStringGetter } from '@/hooks';
+import { layoutMixins } from '@/styles/layoutMixins';
import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable';
import { FundingPaymentsTable } from '@/views/tables/FundingPaymentsTable';
import { TransferHistoryTable } from '@/views/tables/TransferHistoryTable';
+import { Button } from '@/components/Button';
import { Icon, IconName } from '@/components/Icon';
import { NavigationMenu } from '@/components/NavigationMenu';
import { WithSidebar } from '@/components/WithSidebar';
@@ -20,15 +23,15 @@ import { getOnboardingState, getSubaccount } from '@/state/accountSelectors';
import { openDialog } from '@/state/dialogs';
import { PortfolioNavMobile } from './PortfolioNavMobile';
-import { Overview } from './Overview';
-import { Positions } from './Positions';
-import { Orders } from './Orders';
-import { Fees } from './Fees';
-import { History } from './History';
+import { LoadingSpace } from '@/components/Loading/LoadingSpinner';
-import { layoutMixins } from '@/styles/layoutMixins';
-import { Button } from '@/components/Button';
-import { ButtonAction } from '@/constants/buttons';
+const Overview = lazy(() => import('./Overview').then((module) => ({ default: module.Overview })));
+const Positions = lazy(() =>
+ import('./Positions').then((module) => ({ default: module.Positions }))
+);
+const Orders = lazy(() => import('./Orders').then((module) => ({ default: module.Orders })));
+const Fees = lazy(() => import('./Fees').then((module) => ({ default: module.Fees })));
+const History = lazy(() => import('./History').then((module) => ({ default: module.History })));
export default () => {
const dispatch = useDispatch();
@@ -44,49 +47,51 @@ export default () => {
useDocumentTitle(stringGetter({ key: STRING_KEYS.PORTFOLIO }));
const routesComponent = (
-
- } />
- } />
- } />
- } />
- }>
- } />
-
- }
- />
- }
- />
- }
- />
-
- } />
-
+ }>
+
+ } />
+ } />
+ } />
+ } />
+ }>
+ } />
+
+ }
+ />
+ }
+ />
+ }
+ />
+
+ } />
+
+
);
return isTablet ? (
@@ -191,7 +196,7 @@ Styled.SideBar = styled.div`
Styled.Footer = styled.div`
${layoutMixins.row}
flex-wrap: wrap;
-
+
padding: 1rem;
gap: 0.5rem;
diff --git a/src/pages/rewards/RewardsHelpPanel.tsx b/src/pages/rewards/RewardsHelpPanel.tsx
new file mode 100644
index 0000000..e7c23d6
--- /dev/null
+++ b/src/pages/rewards/RewardsHelpPanel.tsx
@@ -0,0 +1,80 @@
+import styled, { AnyStyledComponent } from 'styled-components';
+
+import { STRING_KEYS } from '@/constants/localization';
+import { layoutMixins } from '@/styles/layoutMixins';
+import { useStringGetter } from '@/hooks';
+
+import { Accordion } from '@/components/Accordion';
+import { Link } from '@/components/Link';
+import { Panel } from '@/components/Panel';
+
+const REWARDS_LEARN_MORE_LINK = ''; // to be configured
+
+export const RewardsHelpPanel = () => {
+ const stringGetter = useStringGetter();
+
+ return (
+
+ {stringGetter({ key: STRING_KEYS.HELP })}
+ {REWARDS_LEARN_MORE_LINK && (
+
+ {stringGetter({ key: STRING_KEYS.LEARN_MORE })}
+
+ )}
+
+ }
+ >
+
+
+ );
+};
+
+const Styled: Record = {};
+
+Styled.HelpCard = styled(Panel)`
+ --panel-content-paddingY: 0;
+ width: 100%;
+ height: max-content;
+ padding: 0;
+ gap: 0;
+
+ text-align: start;
+`;
+
+Styled.Header = styled.div`
+ ${layoutMixins.spacedRow}
+ gap: 1ch;
+
+ padding: 1.25rem 1.5rem;
+ border-bottom: var(--border-width) solid var(--border-color);
+
+ font: var(--font-small-book);
+
+ h3 {
+ font: var(--font-medium-book);
+ color: var(--color-text-2);
+ }
+`;
+
+Styled.Link = styled(Link)`
+ display: inline-flex;
+`;
diff --git a/src/pages/rewards/RewardsPage.tsx b/src/pages/rewards/RewardsPage.tsx
index 745d746..2476c0f 100644
--- a/src/pages/rewards/RewardsPage.tsx
+++ b/src/pages/rewards/RewardsPage.tsx
@@ -21,7 +21,7 @@ import { DYDXBalancePanel } from './DYDXBalancePanel';
import { MigratePanel } from './MigratePanel';
import { LaunchIncentivesPanel } from './LaunchIncentivesPanel';
-export const RewardsPage = () => {
+const RewardsPage = () => {
const dispatch = useDispatch();
const stringGetter = useStringGetter();
const { governanceLearnMore, stakingLearnMore } = useURLConfigs();
@@ -84,6 +84,8 @@ export const RewardsPage = () => {
);
};
+export default RewardsPage;
+
const Styled: Record = {};
Styled.Page = styled.div`
diff --git a/src/pages/settings/Settings.tsx b/src/pages/settings/Settings.tsx
index 15de0d3..e8dde6d 100644
--- a/src/pages/settings/Settings.tsx
+++ b/src/pages/settings/Settings.tsx
@@ -25,7 +25,7 @@ import { useNetworks } from '@/views/menus/useNetworks';
import { SettingsHeader } from './SettingsHeader';
import { ComingSoonSpace } from '@/components/ComingSoon';
-export const SettingsPage = () => {
+const SettingsPage = () => {
const stringGetter = useStringGetter();
const { pathname } = useLocation();
const dispatch = useDispatch();
@@ -105,3 +105,5 @@ export const SettingsPage = () => {
>
);
};
+
+export default SettingsPage;
diff --git a/src/pages/trade/HorizontalPanel.tsx b/src/pages/trade/HorizontalPanel.tsx
index b072adc..6024679 100644
--- a/src/pages/trade/HorizontalPanel.tsx
+++ b/src/pages/trade/HorizontalPanel.tsx
@@ -1,8 +1,7 @@
-import { useState } from 'react';
+import { useMemo, useState } from 'react';
import { shallowEqual, useSelector } from 'react-redux';
import styled, { type AnyStyledComponent } from 'styled-components';
-import { AbacusOrderStatus } from '@/constants/abacus';
import { STRING_KEYS } from '@/constants/localization';
import { useBreakpoints, useStringGetter } from '@/hooks';
@@ -28,7 +27,6 @@ import {
getCurrentMarketTradeInfoNumbers,
getHasUnseenFillUpdates,
getHasUnseenOrderUpdates,
- getLatestOrderStatus,
getTradeInfoNumbers,
} from '@/state/accountSelectors';
@@ -82,125 +80,141 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => {
showCurrentMarket ? numOpenOrders : numTotalOpenOrders
);
- const tabItems = [
- {
- value: InfoSection.Position,
- label: stringGetter({
- key: showCurrentMarket ? STRING_KEYS.POSITION : STRING_KEYS.POSITIONS,
- }),
+ const tabItems = useMemo(
+ () => [
+ {
+ value: InfoSection.Position,
+ label: stringGetter({
+ key: showCurrentMarket ? STRING_KEYS.POSITION : STRING_KEYS.POSITIONS,
+ }),
- tag: showCurrentMarket ? null : shortenNumberForDisplay(numTotalPositions),
+ tag: showCurrentMarket ? null : shortenNumberForDisplay(numTotalPositions),
- content: showCurrentMarket ? (
-
- ) : (
- setView(PanelView.CurrentMarket)}
- />
- ),
- },
- {
- value: InfoSection.Orders,
- label: stringGetter({ key: STRING_KEYS.ORDERS }),
+ content: showCurrentMarket ? (
+
+ ) : (
+ setView(PanelView.CurrentMarket)}
+ />
+ ),
+ },
+ {
+ asChild: true,
+ value: InfoSection.Orders,
+ label: stringGetter({ key: STRING_KEYS.ORDERS }),
- slotRight: isWaitingForOrderToIndex ? (
-
- ) : (
- ordersTagNumber && (
-
- {ordersTagNumber}
+ slotRight: isWaitingForOrderToIndex ? (
+
+ ) : (
+ ordersTagNumber && (
+
+ {ordersTagNumber}
+
+ )
+ ),
+
+ content: (
+
+ ),
+ },
+ {
+ asChild: true,
+ value: InfoSection.Fills,
+ label: stringGetter({ key: STRING_KEYS.FILLS }),
+
+ slotRight: fillsTagNumber && (
+
+ {fillsTagNumber}
- )
- ),
+ ),
- content: (
-
- ),
- },
- {
- value: InfoSection.Fills,
- label: stringGetter({ key: STRING_KEYS.FILLS }),
+ content: (
+
+ ),
+ },
+ // TODO - TRCL-1693 - re-enable when funding payments are supported
+ // {
+ // value: InfoSection.Payments,
+ // label: stringGetter({ key: STRING_KEYS.PAYMENTS }),
- slotRight: fillsTagNumber && (
-
- {fillsTagNumber}
-
- ),
-
- content: (
-
- ),
- },
- // TODO - TRCL-1693 - re-enable when funding payments are supported
- // {
- // value: InfoSection.Payments,
- // label: stringGetter({ key: STRING_KEYS.PAYMENTS }),
-
- // tag: shortenNumberForDisplay(
- // showCurrentMarket ? numFundingPayments : numTotalFundingPayments
- // ),
- // content: (
- //
- // ),
- // },
- ];
+ // tag: shortenNumberForDisplay(
+ // showCurrentMarket ? numFundingPayments : numTotalFundingPayments
+ // ),
+ // content: (
+ //
+ // ),
+ // },
+ ],
+ [
+ stringGetter,
+ currentMarketId,
+ showCurrentMarket,
+ isTablet,
+ isWaitingForOrderToIndex,
+ isAccountViewOnly,
+ ordersTagNumber,
+ fillsTagNumber,
+ hasUnseenFillUpdates,
+ hasUnseenOrderUpdates,
+ ]
+ );
return isTablet ? (
diff --git a/src/styles/layoutMixins.ts b/src/styles/layoutMixins.ts
index f33ef85..fdc2be4 100644
--- a/src/styles/layoutMixins.ts
+++ b/src/styles/layoutMixins.ts
@@ -877,11 +877,6 @@ export const layoutMixins: Record<
}
`,
- perspectiveArea: css`
- perspective: 100rem;
- transform-style: preserve-3d;
- `,
-
absolute: css`
position: absolute;
top: 0;
diff --git a/src/views/AccountInfo.tsx b/src/views/AccountInfo.tsx
index 504956f..e9ee324 100644
--- a/src/views/AccountInfo.tsx
+++ b/src/views/AccountInfo.tsx
@@ -63,7 +63,6 @@ Styled.AccountInfoSectionContainer = styled.div<{ showAccountInfo?: boolean }>`
${layoutMixins.column}
height: var(--account-info-section-height);
min-height: var(--account-info-section-height);
- overflow-x: clip;
${({ showAccountInfo }) =>
!showAccountInfo &&
diff --git a/src/views/AccountInfo/AccountInfoConnectedState.tsx b/src/views/AccountInfo/AccountInfoConnectedState.tsx
index e9e5e85..1627c7f 100644
--- a/src/views/AccountInfo/AccountInfoConnectedState.tsx
+++ b/src/views/AccountInfo/AccountInfoConnectedState.tsx
@@ -203,7 +203,6 @@ const Styled: Record = {};
Styled.Stack = styled.div`
${layoutMixins.stack}
- ${layoutMixins.perspectiveArea}
`;
Styled.CornerButton = styled(Button)`
@@ -293,7 +292,14 @@ Styled.TransferButtons = styled.div`
Styled.ConnectedAccountInfoContainer = styled.div<{ $showHeader?: boolean }>`
${layoutMixins.column}
- ${layoutMixins.withOuterAndInnerBorders}
+
+ @media ${breakpoints.notTablet} {
+ ${layoutMixins.withOuterAndInnerBorders}
+ }
+
+ @media ${breakpoints.tablet} {
+ ${layoutMixins.withInnerBorder}
+ }
${({ $showHeader }) =>
$showHeader &&
diff --git a/src/views/ExchangeBillboards.tsx b/src/views/ExchangeBillboards.tsx
index bdb90e4..d6ce345 100644
--- a/src/views/ExchangeBillboards.tsx
+++ b/src/views/ExchangeBillboards.tsx
@@ -2,9 +2,7 @@ import styled, { type AnyStyledComponent } from 'styled-components';
import { shallowEqual, useSelector } from 'react-redux';
import { STRING_KEYS } from '@/constants/localization';
-import { MARKETS_TO_DISPLAY } from '@/constants/markets';
import { useBreakpoints, useStringGetter } from '@/hooks';
-import { testFlags } from '@/lib/testFlags';
import { breakpoints } from '@/styles';
import { layoutMixins } from '@/styles/layoutMixins';
@@ -34,7 +32,6 @@ export const ExchangeBillboards: React.FC = ({
Object.values(perpetualMarkets)
.filter(Boolean)
- .filter(({ id }) => (testFlags.displayAllMarkets ? true : MARKETS_TO_DISPLAY.includes(id)))
.forEach(({ oraclePrice, perpetual }) => {
const { volume24H, trades24H, openInterest = 0 } = perpetual || {};
volume24HUSDC += volume24H ?? 0;
diff --git a/src/views/MarketDetails.tsx b/src/views/MarketDetails.tsx
index d1b0a18..3b18cbf 100644
--- a/src/views/MarketDetails.tsx
+++ b/src/views/MarketDetails.tsx
@@ -213,13 +213,8 @@ Styled.MarketDetails = styled.div`
`;
Styled.Header = styled.header`
- /* max-width: fit-content; */
-
${layoutMixins.column}
gap: 1.25rem;
-
- position: sticky;
- bottom: 3rem;
`;
Styled.WrapRow = styled.div`
diff --git a/src/views/PositionInfo.tsx b/src/views/PositionInfo.tsx
index dca2d48..ac79452 100644
--- a/src/views/PositionInfo.tsx
+++ b/src/views/PositionInfo.tsx
@@ -453,13 +453,6 @@ Styled.Actions = styled.footer`
> :last-child {
flex: 2;
}
-
- position: sticky;
- bottom: clamp(0.5rem, 7.5%, 2rem);
-
- @media ${breakpoints.tablet} {
- bottom: 0;
- }
`;
Styled.Output = styled(Output)<{ sign: NumberSign; smallText?: boolean; margin?: string }>`
@@ -514,6 +507,7 @@ Styled.PositionInfo = styled.div`
Styled.DetachedSection = styled(DetachedSection)`
padding: 0 1.5rem;
+ position: relative;
`;
Styled.DetachedScrollableSection = styled(DetachedScrollableSection)`
diff --git a/src/views/charts/TvChart.tsx b/src/views/charts/TvChart.tsx
index a5813cc..f3586ff 100644
--- a/src/views/charts/TvChart.tsx
+++ b/src/views/charts/TvChart.tsx
@@ -82,7 +82,6 @@ const Styled: Record = {};
Styled.PriceChart = styled.div<{ isChartReady?: boolean }>`
${layoutMixins.stack}
- ${layoutMixins.perspectiveArea}
height: 100%;
diff --git a/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx b/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx
index ffdbe72..0ba26c9 100644
--- a/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx
+++ b/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx
@@ -94,7 +94,7 @@ export const FillDetailsDialog = ({ fillId, setIsOpen }: ElementProps) => {
return (
}
+ slotIcon={}
title={resources.typeStringKey && stringGetter({ key: resources.typeStringKey })}
items={detailItems}
setIsOpen={setIsOpen}
diff --git a/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx b/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx
index e0c0737..904d15d 100644
--- a/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx
+++ b/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx
@@ -194,7 +194,7 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => {
return (
}
+ slotIcon={}
title={!resources.typeStringKey ? '' : stringGetter({ key: resources.typeStringKey })}
slotFooter={
isAccountViewOnly ? null : isOrderStatusClearable(status) ? (
diff --git a/src/views/dialogs/HelpDialog.tsx b/src/views/dialogs/HelpDialog.tsx
index 88181b1..1563032 100644
--- a/src/views/dialogs/HelpDialog.tsx
+++ b/src/views/dialogs/HelpDialog.tsx
@@ -8,6 +8,7 @@ import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu';
import { Icon, IconName } from '@/components/Icon';
import { isTruthy } from '@/lib/isTruthy';
+import { breakpoints } from '@/styles';
type ElementProps = {
setIsOpen: (open: boolean) => void;
@@ -72,8 +73,11 @@ export const HelpDialog = ({ setIsOpen }: ElementProps) => {
const Styled: Record = {};
Styled.ComboboxDialogMenu = styled(ComboboxDialogMenu)`
- --dialog-width: var(--dialog-small-width);
--dialog-content-paddingTop: 1rem;
--dialog-content-paddingBottom: 1rem;
--comboxDialogMenu-item-gap: 1rem;
+
+ @media ${breakpoints.notMobile} {
+ --dialog-width: var(--dialog-small-width);
+ }
`;
diff --git a/src/views/forms/AccountManagementForms/ChainSelectMenu.tsx b/src/views/forms/AccountManagementForms/ChainSelectMenu.tsx
index 9badaea..f77fac0 100644
--- a/src/views/forms/AccountManagementForms/ChainSelectMenu.tsx
+++ b/src/views/forms/AccountManagementForms/ChainSelectMenu.tsx
@@ -18,11 +18,7 @@ type ElementProps = {
onSelectChain: (chain: string) => void;
};
-export const ChainSelectMenu = ({
- label,
- selectedChain,
- onSelectChain,
-}: ElementProps) => {
+export const ChainSelectMenu = ({ label, selectedChain, onSelectChain }: ElementProps) => {
const stringGetter = useStringGetter();
const { type, depositOptions, withdrawalOptions, resources } =
useSelector(getTransferInputs, shallowEqual) || {};
@@ -38,7 +34,7 @@ export const ChainSelectMenu = ({
slotBefore: ,
}));
- const selectedOption = chains.find((item) => item.type === selectedChain);
+ const selectedOption = chains.find((item) => item.type === selectedChain);
return (
{
if (txHash) {
addTransferNotification({
txHash: txHash,
- toChainId: !isCctp ? ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId : getNobleChainId(),
+ toChainId: !isCctp
+ ? ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId
+ : getNobleChainId(),
fromChainId: chainIdStr || undefined,
toAmount: summary?.usdcSize || undefined,
triggeredAt: Date.now(),
@@ -324,6 +325,21 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => {
return stringGetter({ key: STRING_KEYS.DEPOSIT_MORE_THAN_BALANCE });
}
+ if (isCctp) {
+ if (MustBigNumber(debouncedAmountBN).gte(MAX_CCTP_TRANSFER_AMOUNT)) {
+ return stringGetter({
+ key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED,
+ params: {
+ MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT,
+ },
+ });
+ }
+ }
+
+ if (isMainnet && MustBigNumber(summary?.aggregatePriceImpact).gte(MAX_PRICE_IMPACT)) {
+ return stringGetter({ key: STRING_KEYS.PRICE_IMPACT_TOO_HIGH });
+ }
+
return undefined;
}, [
error,
@@ -334,6 +350,7 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => {
fromAmount,
sourceToken,
stringGetter,
+ summary,
]);
const isDisabled =
diff --git a/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx b/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx
index 5cd5815..146da70 100644
--- a/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx
+++ b/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx
@@ -1,21 +1,16 @@
-import { type Dispatch, type SetStateAction, useState, type ReactNode } from 'react';
+import { type Dispatch, type ReactNode, type SetStateAction, useState, useMemo } from 'react';
import styled, { type AnyStyledComponent } from 'styled-components';
import { shallowEqual, useSelector } from 'react-redux';
import type { RouteData } from '@0xsquid/sdk';
+import { formatUnits } from 'viem';
-import {
- ButtonAction,
- ButtonShape,
- ButtonSize,
- ButtonState,
- ButtonType,
-} from '@/constants/buttons';
+import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons';
import { TransferInputTokenResource } from '@/constants/abacus';
import { STRING_KEYS } from '@/constants/localization';
-import { NumberSign } from '@/constants/numbers';
+import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers';
-import { useStringGetter } from '@/hooks';
+import { useStringGetter, useTokenConfigs } from '@/hooks';
import { useMatchingEvmNetwork } from '@/hooks/useMatchingEvmNetwork';
import { layoutMixins } from '@/styles/layoutMixins';
@@ -34,6 +29,7 @@ import { calculateCanAccountTrade } from '@/state/accountCalculators';
import { getSubaccountBuyingPower, getSubaccountEquity } from '@/state/accountSelectors';
import { getTransferInputs } from '@/state/inputsSelectors';
+import { isTruthy } from '@/lib/isTruthy';
import { MustBigNumber } from '@/lib/numbers';
import { SlippageEditor } from '../SlippageEditor';
@@ -83,7 +79,8 @@ export const DepositButtonAndReceipt = ({
const { current: buyingPower, postOrder: newBuyingPower } =
useSelector(getSubaccountBuyingPower, shallowEqual) || {};
- const { summary, requestPayload } = useSelector(getTransferInputs, shallowEqual) || {};
+ const { isCctp, summary, requestPayload } = useSelector(getTransferInputs, shallowEqual) || {};
+ const { usdcDecimals, usdcLabel } = useTokenConfigs();
const feeSubitems: DetailsItem[] = [];
@@ -98,7 +95,7 @@ export const DepositButtonAndReceipt = ({
if (typeof summary?.bridgeFee === 'number') {
feeSubitems.push({
key: 'bridge-fees',
- label: Bridge Fee,
+ label: {stringGetter({ key: STRING_KEYS.BRIDGE_FEE })},
value: ,
});
}
@@ -111,12 +108,68 @@ export const DepositButtonAndReceipt = ({
const totalFees = (summary?.bridgeFee || 0) + (summary?.gasFee || 0);
+ const { toAmount, toAmountMin } = useMemo(() => {
+ if (isCctp) {
+ return {
+ toAmount: summary?.toAmount,
+ toAmountMin: summary?.toAmountMin,
+ };
+ } else {
+ return {
+ toAmount: summary?.toAmount && formatUnits(BigInt(summary.toAmount), usdcDecimals),
+ toAmountMin: summary?.toAmountMin && formatUnits(BigInt(summary.toAmountMin), usdcDecimals),
+ };
+ }
+ }, [isCctp, summary]);
+
const submitButtonReceipt = [
+ {
+ key: 'expected-deposit-amount',
+ label: (
+
+ {stringGetter({ key: STRING_KEYS.EXPECTED_DEPOSIT_AMOUNT })} {usdcLabel}
+
+ ),
+ value: ,
+ subitems: [
+ {
+ key: 'minimum-deposit-amount',
+ label: (
+
+ {stringGetter({ key: STRING_KEYS.MINIMUM_DEPOSIT_AMOUNT })} {usdcLabel}
+
+ ),
+ value: (
+
+ ),
+ tooltip: 'minimum-deposit-amount',
+ },
+ ],
+ },
+ {
+ key: 'exchange-rate',
+ label: {stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })},
+ value:
+ typeof summary?.exchangeRate === 'number' ? (
+
+
+ =
+
+
+ ) : (
+
+ ),
+ },
{
key: 'equity',
label: (
- {stringGetter({ key: STRING_KEYS.EQUITY })} USDC
+ {stringGetter({ key: STRING_KEYS.EQUITY })} {usdcLabel}
),
value: (
@@ -133,7 +186,7 @@ export const DepositButtonAndReceipt = ({
key: 'buying-power',
label: (
- {stringGetter({ key: STRING_KEYS.BUYING_POWER })} USDC
+ {stringGetter({ key: STRING_KEYS.BUYING_POWER })} {usdcLabel}
),
value: (
@@ -146,18 +199,7 @@ export const DepositButtonAndReceipt = ({
/>
),
},
- {
- key: 'exchange-rate',
- label: {stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })},
- value: typeof summary?.exchangeRate === 'number' && (
-
-
- =
-
-
- ),
- },
- {
+ !isCctp && {
key: 'total-fees',
label: {stringGetter({ key: STRING_KEYS.TOTAL_FEES })},
value: ,
@@ -165,7 +207,7 @@ export const DepositButtonAndReceipt = ({
},
{
key: 'slippage',
- label: {stringGetter({ key: STRING_KEYS.SLIPPAGE })},
+ label: {stringGetter({ key: STRING_KEYS.MAX_SLIPPAGE })},
value: (
{stringGetter({ key: STRING_KEYS.ESTIMATED_TIME })},
- value: typeof summary?.estimatedRouteDuration === 'number' && (
+ value: (
),
},
- ];
+ ].filter(isTruthy);
const isFormValid = !isDisabled && !isEditingSlippage;
diff --git a/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx b/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx
index 0015c6b..212e158 100644
--- a/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx
+++ b/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx
@@ -57,7 +57,6 @@ export const TokenSelectMenu = ({ selectedToken, onSelectToken }: ElementProps)
{type === TransferType.deposit ? 'USDC' : selectedToken?.symbol}
>
),
- tooltip: 'swap',
},
]}
>
diff --git a/src/views/forms/AccountManagementForms/WithdrawForm.tsx b/src/views/forms/AccountManagementForms/WithdrawForm.tsx
index f575366..5a629ec 100644
--- a/src/views/forms/AccountManagementForms/WithdrawForm.tsx
+++ b/src/views/forms/AccountManagementForms/WithdrawForm.tsx
@@ -9,9 +9,9 @@ import { TransferInputField, TransferInputTokenResource, TransferType } from '@/
import { AlertType } from '@/constants/alerts';
import { ButtonSize } from '@/constants/buttons';
import { STRING_KEYS } from '@/constants/localization';
-import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks';
-import { NotificationStatus } from '@/constants/notifications';
-import { NumberSign } from '@/constants/numbers';
+import { ENVIRONMENT_CONFIG_MAP, isMainnet } from '@/constants/networks';
+import { TransferNotificationTypes } from '@/constants/notifications';
+import { MAX_CCTP_TRANSFER_AMOUNT, MAX_PRICE_IMPACT, NumberSign } from '@/constants/numbers';
import {
useAccounts,
@@ -45,6 +45,7 @@ import { getTransferInputs } from '@/state/inputsSelectors';
import abacusStateManager from '@/lib/abacus';
import { MustBigNumber } from '@/lib/numbers';
+import { getNobleChainId } from '@/lib/squid';
import { TokenSelectMenu } from './TokenSelectMenu';
import { WithdrawButtonAndReceipt } from './WithdrawForm/WithdrawButtonAndReceipt';
@@ -66,7 +67,8 @@ export const WithdrawForm = () => {
resources,
errors: routeErrors,
errorMessage: routeErrorMessage,
- isCctp
+ isCctp,
+ summary,
} = useSelector(getTransferInputs, shallowEqual) || {};
// User input
@@ -74,7 +76,6 @@ export const WithdrawForm = () => {
const [slippage, setSlippage] = useState(isCctp ? 0 : 0.01); // 0.1% slippage
const debouncedAmount = useDebounce(withdrawAmount, 500);
-
const isValidAddress = toAddress && isAddress(toAddress);
const toToken = useMemo(
@@ -167,16 +168,22 @@ export const WithdrawForm = () => {
})
);
} else {
- const txHash = await sendSquidWithdraw(debouncedAmountBN.toNumber(), requestPayload.data);
- if (txHash?.hash) {
- const hash = `0x${Buffer.from(txHash.hash).toString('hex')}`;
+ const txHash = await sendSquidWithdraw(
+ debouncedAmountBN.toNumber(),
+ requestPayload.data,
+ isCctp
+ );
+ if (txHash) {
addTransferNotification({
- txHash: hash,
- fromChainId: ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId,
+ txHash: txHash,
+ type: TransferNotificationTypes.Withdrawal,
+ fromChainId: !isCctp
+ ? ENVIRONMENT_CONFIG_MAP[selectedNetwork].dydxChainId
+ : getNobleChainId(),
toChainId: chainIdStr || undefined,
toAmount: debouncedAmountBN.toNumber(),
triggeredAt: Date.now(),
- notificationStatus: NotificationStatus.Triggered,
+ isCctp,
});
abacusStateManager.clearTransferInputValues();
setWithdrawAmount('');
@@ -282,10 +289,7 @@ export const WithdrawForm = () => {
const errorMessage = useMemo(() => {
if (error) {
- return stringGetter({
- key: STRING_KEYS.SOMETHING_WENT_WRONG_WITH_MESSAGE,
- params: { ERROR_MESSAGE: error },
- });
+ return error;
}
if (routeErrors) {
@@ -316,6 +320,21 @@ export const WithdrawForm = () => {
return stringGetter({ key: STRING_KEYS.WITHDRAW_MORE_THAN_FREE });
}
+ if (isCctp) {
+ if (MustBigNumber(debouncedAmountBN).gte(MAX_CCTP_TRANSFER_AMOUNT)) {
+ return stringGetter({
+ key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED,
+ params: {
+ MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT,
+ },
+ });
+ }
+ }
+
+ if (isMainnet && MustBigNumber(summary?.aggregatePriceImpact).gte(MAX_PRICE_IMPACT)) {
+ return stringGetter({ key: STRING_KEYS.PRICE_IMPACT_TOO_HIGH });
+ }
+
return undefined;
}, [
error,
@@ -328,6 +347,7 @@ export const WithdrawForm = () => {
toAddress,
sanctionedAddresses,
stringGetter,
+ summary,
]);
const isDisabled =
diff --git a/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx b/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx
index 3a7b467..763e4d8 100644
--- a/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx
+++ b/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx
@@ -1,4 +1,4 @@
-import { useState } from 'react';
+import { useMemo, useState } from 'react';
import { shallowEqual, useSelector } from 'react-redux';
import styled, { type AnyStyledComponent } from 'styled-components';
import { formatUnits } from 'viem';
@@ -6,14 +6,11 @@ import { formatUnits } from 'viem';
import { TransferInputTokenResource } from '@/constants/abacus';
import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons';
import { STRING_KEYS } from '@/constants/localization';
-import { NumberSign } from '@/constants/numbers';
-
-import { formatSeconds } from '@/lib/timeUtils';
+import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers';
import { layoutMixins } from '@/styles/layoutMixins';
-import { useStringGetter } from '@/hooks';
-import { useAccountBalance } from '@/hooks/useAccountBalance';
+import { useStringGetter, useTokenConfigs } from '@/hooks';
import { Button } from '@/components/Button';
@@ -58,13 +55,9 @@ export const WithdrawButtonAndReceipt = ({
const stringGetter = useStringGetter();
const { leverage } = useSelector(getSubaccount, shallowEqual) || {};
- const { summary, requestPayload } = useSelector(getTransferInputs, shallowEqual) || {};
+ const { isCctp, summary, requestPayload } = useSelector(getTransferInputs, shallowEqual) || {};
const canAccountTrade = useSelector(calculateCanAccountTrade, shallowEqual);
-
- const toAmount =
- summary?.toAmount &&
- withdrawToken?.decimals &&
- formatUnits(BigInt(summary.toAmount), withdrawToken?.decimals);
+ const { usdcLabel } = useTokenConfigs();
const feeSubitems: DetailsItem[] = [];
@@ -89,9 +82,29 @@ export const WithdrawButtonAndReceipt = ({
const showSubitemsToggle = showFeeBreakdown
? stringGetter({ key: STRING_KEYS.HIDE_ALL_DETAILS })
: stringGetter({ key: STRING_KEYS.SHOW_ALL_DETAILS });
-
+
const totalFees = (summary?.bridgeFee || 0) + (summary?.gasFee || 0);
+ const { toAmount, toAmountMin } = useMemo(() => {
+ if (isCctp) {
+ return {
+ toAmount: summary?.toAmount,
+ toAmountMin: summary?.toAmountMin,
+ };
+ } else {
+ return {
+ toAmount:
+ summary?.toAmount &&
+ withdrawToken?.decimals &&
+ formatUnits(BigInt(summary.toAmount), withdrawToken.decimals),
+ toAmountMin:
+ summary?.toAmountMin &&
+ withdrawToken?.decimals &&
+ formatUnits(BigInt(summary.toAmountMin), withdrawToken.decimals),
+ };
+ }
+ }, [isCctp, summary, withdrawToken]);
+
const submitButtonReceipt = [
{
key: 'total-fees',
@@ -99,43 +112,12 @@ export const WithdrawButtonAndReceipt = ({
value: ,
subitems: feeSubitems,
},
- {
- key: 'wallet',
- label: (
-
- {stringGetter({ key: STRING_KEYS.AMOUNT_RECEIVED })}{' '}
- {withdrawToken && {withdrawToken?.symbol}}
-
- ),
- value: (
-
- ),
- },
- {
- key: 'leverage',
- label: {stringGetter({ key: STRING_KEYS.ACCOUNT_LEVERAGE })},
- value: (
-
- ),
- },
{
key: 'exchange-rate',
label: {stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })},
value: withdrawToken && typeof summary?.exchangeRate === 'number' && (
-
+
=