on master help sign in
WalletConnect: migrate to v2
9fba8e3Marcus
@@ -1 +1,2 @@
1VITE_INFURA_ENDPOINT='2599df54929b47099bda360958d75aaf'
1VITE_INFURA_ENDPOINT='2599df54929b47099bda360958d75aaf'
2+VITE_WALLET_CONNECT_PROJECT_ID=''
DEVELOPMENT.md+6
@@ -94,6 +94,11 @@ websocket. Do this by going to `about:config` and setting the
94Additionally you need to run with the `HTTPS` environment variable set to
94Additionally you need to run with the `HTTPS` environment variable set to
95`true`. Note that `npm run pilot` will handle this automatically.
95`true`. Note that `npm run pilot` will handle this automatically.
96
96
97+## WalletConnect
98+
99+To get WalletConnect working you need to set the `VITE_WALLET_CONNECT_PROJECT_ID`
100+environment variable with a project id that you can get at https://cloud.walletconnect.com/sign-in
101+
97## Testing
102## Testing
98
103
99Automated tests for critical user journeys are coming Soon™️. Until then, here are several manual test cases to consider when making changes. It's worth noting that what to test depends on what the changes are. These test cases have limited utility when you are making a small change on a single screen; however, they are certainly a good idea when touching critical pieces such as transaction sending or secrets derivation.
104Automated tests for critical user journeys are coming Soon™️. Until then, here are several manual test cases to consider when making changes. It's worth noting that what to test depends on what the changes are. These test cases have limited utility when you are making a small change on a single screen; however, they are certainly a good idea when touching critical pieces such as transaction sending or secrets derivation.
@@ -140,6 +145,7 @@ const baseUrl = 'https://gas-tank.urbit.org:3011';
1401. On the Bridge landing page, click the small "Activate" link
1451. On the Bridge landing page, click the small "Activate" link
1412. Paste the Invite code from the previous test case, and click "Go"
1462. Paste the Invite code from the previous test case, and click "Go"
1423. Download the Passport file, then use the enclosed Master Ticket and ID to login to Bridge again
1473. Download the Passport file, then use the enclosed Master Ticket and ID to login to Bridge again
148+
143### Known Issues
149### Known Issues
144
150
145When testing the invite acceptance and login flow on Goerli, some of the Azimuth API calls will fail (e.g., `getConditional`).
151When testing the invite acceptance and login flow on Goerli, some of the Azimuth API calls will fail (e.g., `getConditional`).
package-lock.json+1855−555
@@ -30,8 +30,10 @@
30 "@types/styled-system__css": "^5.0.15",
30 "@types/styled-system__css": "^5.0.15",
31 "@urbit/nockjs": "^0.0.1",
31 "@urbit/nockjs": "^0.0.1",
32 "@urbit/roller-api": "^0.1.15",
32 "@urbit/roller-api": "^0.1.15",
33− "@walletconnect/client": "^1.8.0",
33+ "@walletconnect/encoding": "^1.0.2",
34+ "@walletconnect/sign-client": "^2.7.6",
34− "@walletconnect/qrcode-modal": "^1.8.0",
35+ "@walletconnect/types": "^2.7.6",
36+ "@web3modal/standalone": "^2.4.1",
35 "@welldone-software/why-did-you-render": "^3.2.3",
37 "@welldone-software/why-did-you-render": "^3.2.3",
36 "agent-base": "^6.0.2",
38 "agent-base": "^6.0.2",
37 "async-retry": "^1.2.3",
39 "async-retry": "^1.2.3",
@@ -3217,6 +3219,19 @@
3217 "version": "5.50.0",
3219 "version": "5.50.0",
3218 "license": "Apache-2.0"
3220 "license": "Apache-2.0"
3219 },
3221 },
3222+ "node_modules/@lit-labs/ssr-dom-shim": {
3223+ "version": "1.1.1",
3224+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz",
3225+ "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ=="
3226+ },
3227+ "node_modules/@lit/reactive-element": {
3228+ "version": "1.6.2",
3229+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.2.tgz",
3230+ "integrity": "sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==",
3231+ "dependencies": {
3232+ "@lit-labs/ssr-dom-shim": "^1.0.0"
3233+ }
3234+ },
3220 "node_modules/@metamask/detect-provider": {
3235 "node_modules/@metamask/detect-provider": {
3221 "version": "1.2.0",
3236 "version": "1.2.0",
3222 "license": "ISC",
3237 "license": "ISC",
@@ -3224,6 +3239,117 @@
3224 "node": ">= 10"
3239 "node": ">= 10"
3225 }
3240 }
3226 },
3241 },
3242+ "node_modules/@motionone/animation": {
3243+ "version": "10.15.1",
3244+ "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz",
3245+ "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==",
3246+ "dependencies": {
3247+ "@motionone/easing": "^10.15.1",
3248+ "@motionone/types": "^10.15.1",
3249+ "@motionone/utils": "^10.15.1",
3250+ "tslib": "^2.3.1"
3251+ }
3252+ },
3253+ "node_modules/@motionone/animation/node_modules/tslib": {
3254+ "version": "2.6.0",
3255+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3256+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3257+ },
3258+ "node_modules/@motionone/dom": {
3259+ "version": "10.16.2",
3260+ "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.2.tgz",
3261+ "integrity": "sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==",
3262+ "dependencies": {
3263+ "@motionone/animation": "^10.15.1",
3264+ "@motionone/generators": "^10.15.1",
3265+ "@motionone/types": "^10.15.1",
3266+ "@motionone/utils": "^10.15.1",
3267+ "hey-listen": "^1.0.8",
3268+ "tslib": "^2.3.1"
3269+ }
3270+ },
3271+ "node_modules/@motionone/dom/node_modules/tslib": {
3272+ "version": "2.6.0",
3273+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3274+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3275+ },
3276+ "node_modules/@motionone/easing": {
3277+ "version": "10.15.1",
3278+ "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz",
3279+ "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==",
3280+ "dependencies": {
3281+ "@motionone/utils": "^10.15.1",
3282+ "tslib": "^2.3.1"
3283+ }
3284+ },
3285+ "node_modules/@motionone/easing/node_modules/tslib": {
3286+ "version": "2.6.0",
3287+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3288+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3289+ },
3290+ "node_modules/@motionone/generators": {
3291+ "version": "10.15.1",
3292+ "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz",
3293+ "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==",
3294+ "dependencies": {
3295+ "@motionone/types": "^10.15.1",
3296+ "@motionone/utils": "^10.15.1",
3297+ "tslib": "^2.3.1"
3298+ }
3299+ },
3300+ "node_modules/@motionone/generators/node_modules/tslib": {
3301+ "version": "2.6.0",
3302+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3303+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3304+ },
3305+ "node_modules/@motionone/svelte": {
3306+ "version": "10.16.2",
3307+ "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.2.tgz",
3308+ "integrity": "sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==",
3309+ "dependencies": {
3310+ "@motionone/dom": "^10.16.2",
3311+ "tslib": "^2.3.1"
3312+ }
3313+ },
3314+ "node_modules/@motionone/svelte/node_modules/tslib": {
3315+ "version": "2.6.0",
3316+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3317+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3318+ },
3319+ "node_modules/@motionone/types": {
3320+ "version": "10.15.1",
3321+ "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz",
3322+ "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA=="
3323+ },
3324+ "node_modules/@motionone/utils": {
3325+ "version": "10.15.1",
3326+ "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz",
3327+ "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==",
3328+ "dependencies": {
3329+ "@motionone/types": "^10.15.1",
3330+ "hey-listen": "^1.0.8",
3331+ "tslib": "^2.3.1"
3332+ }
3333+ },
3334+ "node_modules/@motionone/utils/node_modules/tslib": {
3335+ "version": "2.6.0",
3336+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3337+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3338+ },
3339+ "node_modules/@motionone/vue": {
3340+ "version": "10.16.2",
3341+ "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.2.tgz",
3342+ "integrity": "sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==",
3343+ "dependencies": {
3344+ "@motionone/dom": "^10.16.2",
3345+ "tslib": "^2.3.1"
3346+ }
3347+ },
3348+ "node_modules/@motionone/vue/node_modules/tslib": {
3349+ "version": "2.6.0",
3350+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
3351+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
3352+ },
3227 "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
3353 "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
3228 "version": "5.1.1-v1",
3354 "version": "5.1.1-v1",
3229 "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
3355 "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -3636,6 +3762,152 @@
3636 "@scure/base": "~1.1.0"
3762 "@scure/base": "~1.1.0"
3637 }
3763 }
3638 },
3764 },
3765+ "node_modules/@stablelib/aead": {
3766+ "version": "1.0.1",
3767+ "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz",
3768+ "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg=="
3769+ },
3770+ "node_modules/@stablelib/binary": {
3771+ "version": "1.0.1",
3772+ "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz",
3773+ "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==",
3774+ "dependencies": {
3775+ "@stablelib/int": "^1.0.1"
3776+ }
3777+ },
3778+ "node_modules/@stablelib/bytes": {
3779+ "version": "1.0.1",
3780+ "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz",
3781+ "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ=="
3782+ },
3783+ "node_modules/@stablelib/chacha": {
3784+ "version": "1.0.1",
3785+ "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz",
3786+ "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==",
3787+ "dependencies": {
3788+ "@stablelib/binary": "^1.0.1",
3789+ "@stablelib/wipe": "^1.0.1"
3790+ }
3791+ },
3792+ "node_modules/@stablelib/chacha20poly1305": {
3793+ "version": "1.0.1",
3794+ "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz",
3795+ "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==",
3796+ "dependencies": {
3797+ "@stablelib/aead": "^1.0.1",
3798+ "@stablelib/binary": "^1.0.1",
3799+ "@stablelib/chacha": "^1.0.1",
3800+ "@stablelib/constant-time": "^1.0.1",
3801+ "@stablelib/poly1305": "^1.0.1",
3802+ "@stablelib/wipe": "^1.0.1"
3803+ }
3804+ },
3805+ "node_modules/@stablelib/constant-time": {
3806+ "version": "1.0.1",
3807+ "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz",
3808+ "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg=="
3809+ },
3810+ "node_modules/@stablelib/ed25519": {
3811+ "version": "1.0.3",
3812+ "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz",
3813+ "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==",
3814+ "dependencies": {
3815+ "@stablelib/random": "^1.0.2",
3816+ "@stablelib/sha512": "^1.0.1",
3817+ "@stablelib/wipe": "^1.0.1"
3818+ }
3819+ },
3820+ "node_modules/@stablelib/hash": {
3821+ "version": "1.0.1",
3822+ "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz",
3823+ "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg=="
3824+ },
3825+ "node_modules/@stablelib/hkdf": {
3826+ "version": "1.0.1",
3827+ "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz",
3828+ "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==",
3829+ "dependencies": {
3830+ "@stablelib/hash": "^1.0.1",
3831+ "@stablelib/hmac": "^1.0.1",
3832+ "@stablelib/wipe": "^1.0.1"
3833+ }
3834+ },
3835+ "node_modules/@stablelib/hmac": {
3836+ "version": "1.0.1",
3837+ "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz",
3838+ "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==",
3839+ "dependencies": {
3840+ "@stablelib/constant-time": "^1.0.1",
3841+ "@stablelib/hash": "^1.0.1",
3842+ "@stablelib/wipe": "^1.0.1"
3843+ }
3844+ },
3845+ "node_modules/@stablelib/int": {
3846+ "version": "1.0.1",
3847+ "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz",
3848+ "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w=="
3849+ },
3850+ "node_modules/@stablelib/keyagreement": {
3851+ "version": "1.0.1",
3852+ "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz",
3853+ "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==",
3854+ "dependencies": {
3855+ "@stablelib/bytes": "^1.0.1"
3856+ }
3857+ },
3858+ "node_modules/@stablelib/poly1305": {
3859+ "version": "1.0.1",
3860+ "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz",
3861+ "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==",
3862+ "dependencies": {
3863+ "@stablelib/constant-time": "^1.0.1",
3864+ "@stablelib/wipe": "^1.0.1"
3865+ }
3866+ },
3867+ "node_modules/@stablelib/random": {
3868+ "version": "1.0.2",
3869+ "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz",
3870+ "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==",
3871+ "dependencies": {
3872+ "@stablelib/binary": "^1.0.1",
3873+ "@stablelib/wipe": "^1.0.1"
3874+ }
3875+ },
3876+ "node_modules/@stablelib/sha256": {
3877+ "version": "1.0.1",
3878+ "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz",
3879+ "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==",
3880+ "dependencies": {
3881+ "@stablelib/binary": "^1.0.1",
3882+ "@stablelib/hash": "^1.0.1",
3883+ "@stablelib/wipe": "^1.0.1"
3884+ }
3885+ },
3886+ "node_modules/@stablelib/sha512": {
3887+ "version": "1.0.1",
3888+ "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz",
3889+ "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==",
3890+ "dependencies": {
3891+ "@stablelib/binary": "^1.0.1",
3892+ "@stablelib/hash": "^1.0.1",
3893+ "@stablelib/wipe": "^1.0.1"
3894+ }
3895+ },
3896+ "node_modules/@stablelib/wipe": {
3897+ "version": "1.0.1",
3898+ "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz",
3899+ "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg=="
3900+ },
3901+ "node_modules/@stablelib/x25519": {
3902+ "version": "1.0.3",
3903+ "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz",
3904+ "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==",
3905+ "dependencies": {
3906+ "@stablelib/keyagreement": "^1.0.1",
3907+ "@stablelib/random": "^1.0.2",
3908+ "@stablelib/wipe": "^1.0.1"
3909+ }
3910+ },
3639 "node_modules/@styled-system/background": {
3911 "node_modules/@styled-system/background": {
3640 "version": "5.1.2",
3912 "version": "5.1.2",
3641 "license": "MIT",
3913 "license": "MIT",
@@ -4478,6 +4750,11 @@
4478 "@types/jest": "*"
4750 "@types/jest": "*"
4479 }
4751 }
4480 },
4752 },
4753+ "node_modules/@types/trusted-types": {
4754+ "version": "2.0.3",
4755+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
4756+ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g=="
4757+ },
4481 "node_modules/@types/warning": {
4758 "node_modules/@types/warning": {
4482 "version": "3.0.0",
4759 "version": "3.0.0",
4483 "license": "MIT"
4760 "license": "MIT"
@@ -4927,178 +5204,497 @@
4927 "node": ">=0.10.0"
5204 "node": ">=0.10.0"
4928 }
5205 }
4929 },
5206 },
4930− "node_modules/@walletconnect/browser-utils": {
5207+ "node_modules/@walletconnect/encoding": {
4931− "version": "1.8.0",
5208+ "version": "1.0.2",
4932− "license": "Apache-2.0",
5209+ "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz",
5210+ "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==",
4933 "dependencies": {
5211 "dependencies": {
4934− "@walletconnect/safe-json": "1.0.0",
5212+ "is-typedarray": "1.0.0",
4935− "@walletconnect/types": "^1.8.0",
5213+ "tslib": "1.14.1",
4936− "@walletconnect/window-getters": "1.0.0",
5214+ "typedarray-to-buffer": "3.1.5"
4937− "@walletconnect/window-metadata": "1.0.0",
4938− "detect-browser": "5.2.0"
4939 }
5215 }
4940 },
5216 },
4941− "node_modules/@walletconnect/client": {
5217+ "node_modules/@walletconnect/environment": {
4942− "version": "1.8.0",
5218+ "version": "1.0.1",
4943− "license": "Apache-2.0",
5219+ "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz",
5220+ "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==",
4944 "dependencies": {
5221 "dependencies": {
4945− "@walletconnect/core": "^1.8.0",
5222+ "tslib": "1.14.1"
4946− "@walletconnect/iso-crypto": "^1.8.0",
4947− "@walletconnect/types": "^1.8.0",
4948− "@walletconnect/utils": "^1.8.0"
4949 }
5223 }
4950 },
5224 },
4951− "node_modules/@walletconnect/core": {
5225+ "node_modules/@walletconnect/events": {
4952− "version": "1.8.0",
5226+ "version": "1.0.1",
4953− "license": "Apache-2.0",
5227+ "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz",
5228+ "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==",
5229+ "dependencies": {
5230+ "keyvaluestorage-interface": "^1.0.0",
5231+ "tslib": "1.14.1"
5232+ }
5233+ },
5234+ "node_modules/@walletconnect/heartbeat": {
5235+ "version": "1.2.1",
5236+ "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz",
5237+ "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==",
4954 "dependencies": {
5238 "dependencies": {
4955− "@walletconnect/socket-transport": "^1.8.0",
5239+ "@walletconnect/events": "^1.0.1",
4956− "@walletconnect/types": "^1.8.0",
5240+ "@walletconnect/time": "^1.0.2",
4957− "@walletconnect/utils": "^1.8.0"
5241+ "tslib": "1.14.1"
4958 }
5242 }
4959 },
5243 },
4960− "node_modules/@walletconnect/crypto": {
5244+ "node_modules/@walletconnect/jsonrpc-provider": {
5245+ "version": "1.0.13",
5246+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz",
5247+ "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==",
5248+ "dependencies": {
5249+ "@walletconnect/jsonrpc-utils": "^1.0.8",
5250+ "@walletconnect/safe-json": "^1.0.2",
5251+ "tslib": "1.14.1"
5252+ }
5253+ },
5254+ "node_modules/@walletconnect/jsonrpc-provider/node_modules/@walletconnect/safe-json": {
4961 "version": "1.0.2",
5255 "version": "1.0.2",
4962− "license": "MIT",
5256+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
5257+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
4963 "dependencies": {
5258 "dependencies": {
4964− "@walletconnect/encoding": "^1.0.1",
5259+ "tslib": "1.14.1"
4965− "@walletconnect/environment": "^1.0.0",
4966− "@walletconnect/randombytes": "^1.0.2",
4967− "aes-js": "^3.1.2",
4968− "hash.js": "^1.1.7"
4969 }
5260 }
4970 },
5261 },
4971− "node_modules/@walletconnect/crypto/node_modules/aes-js": {
5262+ "node_modules/@walletconnect/jsonrpc-types": {
4972− "version": "3.1.2",
5263+ "version": "1.0.3",
4973− "license": "MIT"
5264+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz",
5265+ "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==",
5266+ "dependencies": {
5267+ "keyvaluestorage-interface": "^1.0.0",
5268+ "tslib": "1.14.1"
5269+ }
4974 },
5270 },
4975− "node_modules/@walletconnect/encoding": {
5271+ "node_modules/@walletconnect/jsonrpc-utils": {
4976− "version": "1.0.1",
5272+ "version": "1.0.8",
4977− "license": "MIT",
5273+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz",
5274+ "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==",
4978 "dependencies": {
5275 "dependencies": {
4979− "is-typedarray": "1.0.0",
5276+ "@walletconnect/environment": "^1.0.1",
4980− "typedarray-to-buffer": "3.1.5"
5277+ "@walletconnect/jsonrpc-types": "^1.0.3",
5278+ "tslib": "1.14.1"
4981 }
5279 }
4982 },
5280 },
4983− "node_modules/@walletconnect/environment": {
5281+ "node_modules/@walletconnect/jsonrpc-ws-connection": {
4984− "version": "1.0.0",
5282+ "version": "1.0.12",
4985− "license": "MIT"
5283+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.12.tgz",
5284+ "integrity": "sha512-HAcadga3Qjt1Cqy+qXEW6zjaCs8uJGdGQrqltzl3OjiK4epGZRdvSzTe63P+t/3z+D2wG+ffEPn0GVcDozmN1w==",
5285+ "dependencies": {
5286+ "@walletconnect/jsonrpc-utils": "^1.0.6",
5287+ "@walletconnect/safe-json": "^1.0.2",
5288+ "events": "^3.3.0",
5289+ "tslib": "1.14.1",
5290+ "ws": "^7.5.1"
5291+ }
4986 },
5292 },
4987− "node_modules/@walletconnect/iso-crypto": {
5293+ "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/@walletconnect/safe-json": {
4988− "version": "1.8.0",
5294+ "version": "1.0.2",
4989− "license": "Apache-2.0",
5295+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
5296+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
4990 "dependencies": {
5297 "dependencies": {
4991− "@walletconnect/crypto": "^1.0.2",
5298+ "tslib": "1.14.1"
4992− "@walletconnect/types": "^1.8.0",
4993− "@walletconnect/utils": "^1.8.0"
4994 }
5299 }
4995 },
5300 },
4996− "node_modules/@walletconnect/jsonrpc-types": {
5301+ "node_modules/@walletconnect/logger": {
4997− "version": "1.0.1",
5302+ "version": "2.0.1",
4998− "license": "MIT",
5303+ "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz",
5304+ "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==",
4999 "dependencies": {
5305 "dependencies": {
5000− "keyvaluestorage-interface": "^1.0.0"
5306+ "pino": "7.11.0",
5307+ "tslib": "1.14.1"
5001 }
5308 }
5002 },
5309 },
5003− "node_modules/@walletconnect/jsonrpc-utils": {
5310+ "node_modules/@walletconnect/relay-api": {
5004− "version": "1.0.3",
5311+ "version": "1.0.9",
5005− "license": "MIT",
5312+ "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz",
5313+ "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==",
5006 "dependencies": {
5314 "dependencies": {
5007− "@walletconnect/environment": "^1.0.0",
5008− "@walletconnect/jsonrpc-types": "^1.0.1"
5315+ "@walletconnect/jsonrpc-types": "^1.0.2",
5316+ "tslib": "1.14.1"
5009 }
5317 }
5010 },
5318 },
5011− "node_modules/@walletconnect/mobile-registry": {
5319+ "node_modules/@walletconnect/relay-auth": {
5012− "version": "1.4.0",
5320+ "version": "1.0.4",
5013− "license": "MIT"
5321+ "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz",
5322+ "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==",
5323+ "dependencies": {
5324+ "@stablelib/ed25519": "^1.0.2",
5325+ "@stablelib/random": "^1.0.1",
5326+ "@walletconnect/safe-json": "^1.0.1",
5327+ "@walletconnect/time": "^1.0.2",
5328+ "tslib": "1.14.1",
5329+ "uint8arrays": "^3.0.0"
5330+ }
5014 },
5331 },
5015− "node_modules/@walletconnect/qrcode-modal": {
5332+ "node_modules/@walletconnect/relay-auth/node_modules/@walletconnect/safe-json": {
5016− "version": "1.8.0",
5333+ "version": "1.0.2",
5017− "license": "Apache-2.0",
5334+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
5335+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
5018 "dependencies": {
5336 "dependencies": {
5337+ "tslib": "1.14.1"
5338+ }
5339+ },
5019− "@walletconnect/browser-utils": "^1.8.0",
5340+ "node_modules/@walletconnect/sign-client": {
5020− "@walletconnect/mobile-registry": "^1.4.0",
5341+ "version": "2.9.0",
5342+ "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.9.0.tgz",
5343+ "integrity": "sha512-mEKc4LlLMebCe45qzqh+MX4ilQK4kOEBzLY6YJpG8EhyT45eX4JMNA7qQoYa9MRMaaVb/7USJcc4e3ZrjZvQmA==",
5344+ "dependencies": {
5345+ "@walletconnect/core": "2.9.0",
5346+ "@walletconnect/events": "^1.0.1",
5347+ "@walletconnect/heartbeat": "1.2.1",
5348+ "@walletconnect/jsonrpc-utils": "1.0.8",
5349+ "@walletconnect/logger": "^2.0.1",
5350+ "@walletconnect/time": "^1.0.2",
5021− "@walletconnect/types": "^1.8.0",
5351+ "@walletconnect/types": "2.9.0",
5022− "copy-to-clipboard": "^3.3.1",
5352+ "@walletconnect/utils": "2.9.0",
5023− "preact": "10.4.1",
5353+ "events": "^3.3.0"
5024− "qrcode": "1.4.4"
5025 }
5354 }
5026 },
5355 },
5027− "node_modules/@walletconnect/randombytes": {
5356+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/core": {
5357+ "version": "2.9.0",
5358+ "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.9.0.tgz",
5359+ "integrity": "sha512-MZYJghS9YCvGe32UOgDj0mCasaOoGHQaYXWeQblXE/xb8HuaM6kAWhjIQN9P+MNp5QP134BHP5olQostcCotXQ==",
5360+ "dependencies": {
5361+ "@walletconnect/heartbeat": "1.2.1",
5362+ "@walletconnect/jsonrpc-provider": "1.0.13",
5363+ "@walletconnect/jsonrpc-types": "1.0.3",
5364+ "@walletconnect/jsonrpc-utils": "1.0.8",
5365+ "@walletconnect/jsonrpc-ws-connection": "1.0.12",
5366+ "@walletconnect/keyvaluestorage": "^1.0.2",
5367+ "@walletconnect/logger": "^2.0.1",
5368+ "@walletconnect/relay-api": "^1.0.9",
5369+ "@walletconnect/relay-auth": "^1.0.4",
5370+ "@walletconnect/safe-json": "^1.0.2",
5371+ "@walletconnect/time": "^1.0.2",
5372+ "@walletconnect/types": "2.9.0",
5373+ "@walletconnect/utils": "2.9.0",
5374+ "events": "^3.3.0",
5375+ "lodash.isequal": "4.5.0",
5376+ "uint8arrays": "^3.1.0"
5377+ }
5378+ },
5379+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/keyvaluestorage": {
5028 "version": "1.0.2",
5380 "version": "1.0.2",
5029− "license": "MIT",
5381+ "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz",
5382+ "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==",
5030 "dependencies": {
5383 "dependencies": {
5031− "@walletconnect/encoding": "^1.0.1",
5384+ "safe-json-utils": "^1.1.1",
5032− "@walletconnect/environment": "^1.0.0",
5385+ "tslib": "1.14.1"
5033− "randombytes": "^2.1.0"
5386+ },
5387+ "peerDependencies": {
5388+ "@react-native-async-storage/async-storage": "1.x",
5389+ "lokijs": "1.x"
5390+ },
5391+ "peerDependenciesMeta": {
5392+ "@react-native-async-storage/async-storage": {
5393+ "optional": true
5394+ },
5395+ "lokijs": {
5396+ "optional": true
5397+ }
5034 }
5398 }
5035 },
5399 },
5036− "node_modules/@walletconnect/safe-json": {
5400+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/safe-json": {
5037− "version": "1.0.0",
5401+ "version": "1.0.2",
5038− "license": "MIT"
5402+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
5403+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
5404+ "dependencies": {
5405+ "tslib": "1.14.1"
5406+ }
5039 },
5407 },
5040− "node_modules/@walletconnect/socket-transport": {
5408+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/utils": {
5041− "version": "1.8.0",
5409+ "version": "2.9.0",
5042− "license": "Apache-2.0",
5410+ "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.9.0.tgz",
5411+ "integrity": "sha512-7Tu3m6dZL84KofrNBcblsgpSqU2vdo9ImLD7zWimLXERVGNQ8smXG+gmhQYblebIBhsPzjy9N38YMC3nPlfQNw==",
5412+ "dependencies": {
5413+ "@stablelib/chacha20poly1305": "1.0.1",
5414+ "@stablelib/hkdf": "1.0.1",
5415+ "@stablelib/random": "^1.0.2",
5416+ "@stablelib/sha256": "1.0.1",
5417+ "@stablelib/x25519": "^1.0.3",
5418+ "@walletconnect/relay-api": "^1.0.9",
5419+ "@walletconnect/safe-json": "^1.0.2",
5420+ "@walletconnect/time": "^1.0.2",
5421+ "@walletconnect/types": "2.9.0",
5422+ "@walletconnect/window-getters": "^1.0.1",
5423+ "@walletconnect/window-metadata": "^1.0.1",
5424+ "detect-browser": "5.3.0",
5425+ "query-string": "7.1.3",
5426+ "uint8arrays": "^3.1.0"
5427+ }
5428+ },
5429+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/window-getters": {
5430+ "version": "1.0.1",
5431+ "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz",
5432+ "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==",
5043 "dependencies": {
5433 "dependencies": {
5044− "@walletconnect/types": "^1.8.0",
5434+ "tslib": "1.14.1"
5045− "@walletconnect/utils": "^1.8.0",
5046− "ws": "7.5.3"
5047 }
5435 }
5048 },
5436 },
5049− "node_modules/@walletconnect/socket-transport/node_modules/ws": {
5437+ "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/window-metadata": {
5438+ "version": "1.0.1",
5439+ "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz",
5440+ "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==",
5441+ "dependencies": {
5442+ "@walletconnect/window-getters": "^1.0.1",
5443+ "tslib": "1.14.1"
5444+ }
5445+ },
5446+ "node_modules/@walletconnect/sign-client/node_modules/detect-browser": {
5447+ "version": "5.3.0",
5448+ "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz",
5449+ "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w=="
5450+ },
5451+ "node_modules/@walletconnect/sign-client/node_modules/query-string": {
5050− "version": "7.5.3",
5452+ "version": "7.1.3",
5051− "license": "MIT",
5453+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
5454+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
5455+ "dependencies": {
5456+ "decode-uri-component": "^0.2.2",
5457+ "filter-obj": "^1.1.0",
5458+ "split-on-first": "^1.0.0",
5459+ "strict-uri-encode": "^2.0.0"
5460+ },
5052 "engines": {
5461 "engines": {
5053− "node": ">=8.3.0"
5462+ "node": ">=6"
5463+ },
5464+ "funding": {
5465+ "url": "https://github.com/sponsors/sindresorhus"
5466+ }
5467+ },
5468+ "node_modules/@walletconnect/time": {
5469+ "version": "1.0.2",
5470+ "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz",
5471+ "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==",
5472+ "dependencies": {
5473+ "tslib": "1.14.1"
5474+ }
5475+ },
5476+ "node_modules/@walletconnect/types": {
5477+ "version": "2.9.0",
5478+ "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.9.0.tgz",
5479+ "integrity": "sha512-ORopsMfSRvUYqtjKKd6scfg8o4/aGebipLxx92AuuUgMTERSU6cGmIrK6rdLu7W6FBJkmngPLEGc9mRqAb9Lug==",
5480+ "dependencies": {
5481+ "@walletconnect/events": "^1.0.1",
5482+ "@walletconnect/heartbeat": "1.2.1",
5483+ "@walletconnect/jsonrpc-types": "1.0.3",
5484+ "@walletconnect/keyvaluestorage": "^1.0.2",
5485+ "@walletconnect/logger": "^2.0.1",
5486+ "events": "^3.3.0"
5487+ }
5488+ },
5489+ "node_modules/@walletconnect/types/node_modules/@walletconnect/keyvaluestorage": {
5490+ "version": "1.0.2",
5491+ "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz",
5492+ "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==",
5493+ "dependencies": {
5494+ "safe-json-utils": "^1.1.1",
5495+ "tslib": "1.14.1"
5054 },
5496 },
5055 "peerDependencies": {
5497 "peerDependencies": {
5056− "bufferutil": "^4.0.1",
5498+ "@react-native-async-storage/async-storage": "1.x",
5057− "utf-8-validate": "^5.0.2"
5499+ "lokijs": "1.x"
5058 },
5500 },
5059 "peerDependenciesMeta": {
5501 "peerDependenciesMeta": {
5060− "bufferutil": {
5502+ "@react-native-async-storage/async-storage": {
5061 "optional": true
5503 "optional": true
5062 },
5504 },
5063− "utf-8-validate": {
5505+ "lokijs": {
5064 "optional": true
5506 "optional": true
5065 }
5507 }
5066 }
5508 }
5067 },
5509 },
5068− "node_modules/@walletconnect/types": {
5510+ "node_modules/@web3modal/core": {
5069− "version": "1.8.0",
5511+ "version": "2.4.3",
5070− "license": "Apache-2.0"
5512+ "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-2.4.3.tgz",
5513+ "integrity": "sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg==",
5514+ "dependencies": {
5515+ "buffer": "6.0.3",
5516+ "valtio": "1.10.5"
5517+ }
5071 },
5518 },
5072− "node_modules/@walletconnect/utils": {
5519+ "node_modules/@web3modal/standalone": {
5073− "version": "1.8.0",
5520+ "version": "2.4.3",
5074− "license": "Apache-2.0",
5521+ "resolved": "https://registry.npmjs.org/@web3modal/standalone/-/standalone-2.4.3.tgz",
5522+ "integrity": "sha512-5ATXBoa4GGm+TIUSsKWsfWCJunv1XevOizpgTFhqyeGgRDmWhqsz9UIPzH/1mk+g0iJ/xqMKs5F6v9D2QeKxag==",
5523+ "deprecated": "This package has been deprecated in favor of @walletconnect/modal. Please read more at https://docs.walletconnect.com",
5075 "dependencies": {
5524 "dependencies": {
5076− "@walletconnect/browser-utils": "^1.8.0",
5525+ "@web3modal/core": "2.4.3",
5077− "@walletconnect/encoding": "^1.0.1",
5526+ "@web3modal/ui": "2.4.3"
5078− "@walletconnect/jsonrpc-utils": "^1.0.3",
5079− "@walletconnect/types": "^1.8.0",
5080− "bn.js": "4.11.8",
5081− "js-sha3": "0.8.0",
5082− "query-string": "6.13.5"
5083 }
5527 }
5084 },
5528 },
5085− "node_modules/@walletconnect/utils/node_modules/bn.js": {
5529+ "node_modules/@web3modal/ui": {
5086− "version": "4.11.8",
5530+ "version": "2.4.3",
5087− "license": "MIT"
5531+ "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-2.4.3.tgz",
5532+ "integrity": "sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg==",
5533+ "dependencies": {
5534+ "@web3modal/core": "2.4.3",
5535+ "lit": "2.7.5",
5536+ "motion": "10.16.2",
5537+ "qrcode": "1.5.3"
5538+ }
5088 },
5539 },
5089− "node_modules/@walletconnect/utils/node_modules/js-sha3": {
5540+ "node_modules/@web3modal/ui/node_modules/cliui": {
5090− "version": "0.8.0",
5541+ "version": "6.0.0",
5091− "license": "MIT"
5542+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
5543+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
5544+ "dependencies": {
5545+ "string-width": "^4.2.0",
5546+ "strip-ansi": "^6.0.0",
5547+ "wrap-ansi": "^6.2.0"
5548+ }
5092 },
5549 },
5093− "node_modules/@walletconnect/window-getters": {
5550+ "node_modules/@web3modal/ui/node_modules/emoji-regex": {
5094− "version": "1.0.0",
5551+ "version": "8.0.0",
5095− "license": "MIT"
5552+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
5553+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
5096 },
5554 },
5097− "node_modules/@walletconnect/window-metadata": {
5555+ "node_modules/@web3modal/ui/node_modules/find-up": {
5098− "version": "1.0.0",
5556+ "version": "4.1.0",
5099− "license": "MIT",
5557+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
5558+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
5100 "dependencies": {
5559 "dependencies": {
5101− "@walletconnect/window-getters": "^1.0.0"
5560+ "locate-path": "^5.0.0",
5561+ "path-exists": "^4.0.0"
5562+ },
5563+ "engines": {
5564+ "node": ">=8"
5565+ }
5566+ },
5567+ "node_modules/@web3modal/ui/node_modules/is-fullwidth-code-point": {
5568+ "version": "3.0.0",
5569+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
5570+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
5571+ "engines": {
5572+ "node": ">=8"
5573+ }
5574+ },
5575+ "node_modules/@web3modal/ui/node_modules/locate-path": {
5576+ "version": "5.0.0",
5577+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
5578+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
5579+ "dependencies": {
5580+ "p-locate": "^4.1.0"
5581+ },
5582+ "engines": {
5583+ "node": ">=8"
5584+ }
5585+ },
5586+ "node_modules/@web3modal/ui/node_modules/p-locate": {
5587+ "version": "4.1.0",
5588+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
5589+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
5590+ "dependencies": {
5591+ "p-limit": "^2.2.0"
5592+ },
5593+ "engines": {
5594+ "node": ">=8"
5595+ }
5596+ },
5597+ "node_modules/@web3modal/ui/node_modules/path-exists": {
5598+ "version": "4.0.0",
5599+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
5600+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
5601+ "engines": {
5602+ "node": ">=8"
5603+ }
5604+ },
5605+ "node_modules/@web3modal/ui/node_modules/pngjs": {
5606+ "version": "5.0.0",
5607+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
5608+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
5609+ "engines": {
5610+ "node": ">=10.13.0"
5611+ }
5612+ },
5613+ "node_modules/@web3modal/ui/node_modules/qrcode": {
5614+ "version": "1.5.3",
5615+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
5616+ "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
5617+ "dependencies": {
5618+ "dijkstrajs": "^1.0.1",
5619+ "encode-utf8": "^1.0.3",
5620+ "pngjs": "^5.0.0",
5621+ "yargs": "^15.3.1"
5622+ },
5623+ "bin": {
5624+ "qrcode": "bin/qrcode"
5625+ },
5626+ "engines": {
5627+ "node": ">=10.13.0"
5628+ }
5629+ },
5630+ "node_modules/@web3modal/ui/node_modules/string-width": {
5631+ "version": "4.2.3",
5632+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
5633+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
5634+ "dependencies": {
5635+ "emoji-regex": "^8.0.0",
5636+ "is-fullwidth-code-point": "^3.0.0",
5637+ "strip-ansi": "^6.0.1"
5638+ },
5639+ "engines": {
5640+ "node": ">=8"
5641+ }
5642+ },
5643+ "node_modules/@web3modal/ui/node_modules/strip-ansi": {
5644+ "version": "6.0.1",
5645+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
5646+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
5647+ "dependencies": {
5648+ "ansi-regex": "^5.0.1"
5649+ },
5650+ "engines": {
5651+ "node": ">=8"
5652+ }
5653+ },
5654+ "node_modules/@web3modal/ui/node_modules/wrap-ansi": {
5655+ "version": "6.2.0",
5656+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
5657+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
5658+ "dependencies": {
5659+ "ansi-styles": "^4.0.0",
5660+ "string-width": "^4.1.0",
5661+ "strip-ansi": "^6.0.0"
5662+ },
5663+ "engines": {
5664+ "node": ">=8"
5665+ }
5666+ },
5667+ "node_modules/@web3modal/ui/node_modules/yargs": {
5668+ "version": "15.4.1",
5669+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
5670+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
5671+ "dependencies": {
5672+ "cliui": "^6.0.0",
5673+ "decamelize": "^1.2.0",
5674+ "find-up": "^4.1.0",
5675+ "get-caller-file": "^2.0.1",
5676+ "require-directory": "^2.1.1",
5677+ "require-main-filename": "^2.0.0",
5678+ "set-blocking": "^2.0.0",
5679+ "string-width": "^4.2.0",
5680+ "which-module": "^2.0.0",
5681+ "y18n": "^4.0.0",
5682+ "yargs-parser": "^18.1.2"
5683+ },
5684+ "engines": {
5685+ "node": ">=8"
5686+ }
5687+ },
5688+ "node_modules/@web3modal/ui/node_modules/yargs-parser": {
5689+ "version": "18.1.3",
5690+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
5691+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
5692+ "dependencies": {
5693+ "camelcase": "^5.0.0",
5694+ "decamelize": "^1.2.0"
5695+ },
5696+ "engines": {
5697+ "node": ">=6"
5102 }
5698 }
5103 },
5699 },
5104 "node_modules/@welldone-software/why-did-you-render": {
5700 "node_modules/@welldone-software/why-did-you-render": {
@@ -5506,6 +6102,14 @@
5506 "node": ">= 4.5.0"
6102 "node": ">= 4.5.0"
5507 }
6103 }
5508 },
6104 },
6105+ "node_modules/atomic-sleep": {
6106+ "version": "1.0.0",
6107+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
6108+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
6109+ "engines": {
6110+ "node": ">=8.0.0"
6111+ }
6112+ },
5509 "node_modules/available-typed-arrays": {
6113 "node_modules/available-typed-arrays": {
5510 "version": "1.0.5",
6114 "version": "1.0.5",
5511 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
6115 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -6342,25 +6946,12 @@
6342 "ieee754": "^1.2.1"
6946 "ieee754": "^1.2.1"
6343 }
6947 }
6344 },
6948 },
6345− "node_modules/buffer-alloc": {
6346− "version": "1.2.0",
6347− "license": "MIT",
6348− "dependencies": {
6349− "buffer-alloc-unsafe": "^1.1.0",
6350− "buffer-fill": "^1.0.0"
6351− }
6352− },
6353− "node_modules/buffer-alloc-unsafe": {
6354− "version": "1.1.0",
6355− "license": "MIT"
6356− },
6357− "node_modules/buffer-fill": {
6358− "version": "1.0.0",
6359− "license": "MIT"
6360− },
6361 "node_modules/buffer-from": {
6949 "node_modules/buffer-from": {
6362 "version": "1.1.2",
6950 "version": "1.1.2",
6951+ "dev": true,
6363− "license": "MIT"
6952+ "license": "MIT",
6953+ "optional": true,
6954+ "peer": true
6364 },
6955 },
6365 "node_modules/buffer-to-arraybuffer": {
6956 "node_modules/buffer-to-arraybuffer": {
6366 "version": "0.0.5",
6957 "version": "0.0.5",
@@ -6736,15 +7327,6 @@
6736 "dev": true,
7327 "dev": true,
6737 "license": "ISC"
7328 "license": "ISC"
6738 },
7329 },
6739− "node_modules/cliui": {
6740− "version": "5.0.0",
6741− "license": "ISC",
6742− "dependencies": {
6743− "string-width": "^3.1.0",
6744− "strip-ansi": "^5.2.0",
6745− "wrap-ansi": "^5.1.0"
6746− }
6747− },
6748 "node_modules/clone-response": {
7330 "node_modules/clone-response": {
6749 "version": "1.0.2",
7331 "version": "1.0.2",
6750 "license": "MIT",
7332 "license": "MIT",
@@ -7146,8 +7728,9 @@
7146 }
7728 }
7147 },
7729 },
7148 "node_modules/decode-uri-component": {
7730 "node_modules/decode-uri-component": {
7149− "version": "0.2.0",
7731+ "version": "0.2.2",
7150− "license": "MIT",
7732+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
7733+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
7151 "engines": {
7734 "engines": {
7152 "node": ">=0.10"
7735 "node": ">=0.10"
7153 }
7736 }
@@ -7243,10 +7826,6 @@
7243 "version": "1.0.4",
7826 "version": "1.0.4",
7244 "license": "MIT"
7827 "license": "MIT"
7245 },
7828 },
7246− "node_modules/detect-browser": {
7247− "version": "5.2.0",
7248− "license": "MIT"
7249− },
7250 "node_modules/detect-indent": {
7829 "node_modules/detect-indent": {
7251 "version": "4.0.0",
7830 "version": "4.0.0",
7252 "license": "MIT",
7831 "license": "MIT",
@@ -7341,6 +7920,17 @@
7341 "version": "0.1.4",
7920 "version": "0.1.4",
7342 "license": "BSD-3-Clause"
7921 "license": "BSD-3-Clause"
7343 },
7922 },
7923+ "node_modules/duplexify": {
7924+ "version": "4.1.2",
7925+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
7926+ "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
7927+ "dependencies": {
7928+ "end-of-stream": "^1.4.1",
7929+ "inherits": "^2.0.3",
7930+ "readable-stream": "^3.1.1",
7931+ "stream-shift": "^1.0.0"
7932+ }
7933+ },
7344 "node_modules/ecc-jsbn": {
7934 "node_modules/ecc-jsbn": {
7345 "version": "0.1.2",
7935 "version": "0.1.2",
7346 "license": "MIT",
7936 "license": "MIT",
@@ -7372,9 +7962,10 @@
7372 "minimalistic-crypto-utils": "^1.0.1"
7962 "minimalistic-crypto-utils": "^1.0.1"
7373 }
7963 }
7374 },
7964 },
7375− "node_modules/emoji-regex": {
7965+ "node_modules/encode-utf8": {
7376− "version": "7.0.3",
7966+ "version": "1.0.3",
7377− "license": "MIT"
7967+ "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
7968+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
7378 },
7969 },
7379 "node_modules/encodeurl": {
7970 "node_modules/encodeurl": {
7380 "version": "1.0.2",
7971 "version": "1.0.2",
@@ -8742,6 +9333,14 @@
8742 "dev": true,
9333 "dev": true,
8743 "license": "MIT"
9334 "license": "MIT"
8744 },
9335 },
9336+ "node_modules/fast-redact": {
9337+ "version": "3.2.0",
9338+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz",
9339+ "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==",
9340+ "engines": {
9341+ "node": ">=6"
9342+ }
9343+ },
8745 "node_modules/fast-safe-stringify": {
9344 "node_modules/fast-safe-stringify": {
8746 "version": "2.1.1",
9345 "version": "2.1.1",
8747 "license": "MIT"
9346 "license": "MIT"
@@ -8807,6 +9406,14 @@
8807 "node": ">=8"
9406 "node": ">=8"
8808 }
9407 }
8809 },
9408 },
9409+ "node_modules/filter-obj": {
9410+ "version": "1.1.0",
9411+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
9412+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
9413+ "engines": {
9414+ "node": ">=0.10.0"
9415+ }
9416+ },
8810 "node_modules/final-form": {
9417 "node_modules/final-form": {
8811 "version": "4.20.2",
9418 "version": "4.20.2",
8812 "license": "MIT",
9419 "license": "MIT",
@@ -8850,6 +9457,7 @@
8850 },
9457 },
8851 "node_modules/find-up": {
9458 "node_modules/find-up": {
8852 "version": "3.0.0",
9459 "version": "3.0.0",
9460+ "dev": true,
8853 "license": "MIT",
9461 "license": "MIT",
8854 "dependencies": {
9462 "dependencies": {
8855 "locate-path": "^3.0.0"
9463 "locate-path": "^3.0.0"
@@ -10408,6 +11016,11 @@
10408 "minimalistic-assert": "^1.0.1"
11016 "minimalistic-assert": "^1.0.1"
10409 }
11017 }
10410 },
11018 },
11019+ "node_modules/hey-listen": {
11020+ "version": "1.0.8",
11021+ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz",
11022+ "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q=="
11023+ },
10411 "node_modules/hmac-drbg": {
11024 "node_modules/hmac-drbg": {
10412 "version": "1.0.1",
11025 "version": "1.0.1",
10413 "license": "MIT",
11026 "license": "MIT",
@@ -10962,6 +11575,7 @@
10962 },
11575 },
10963 "node_modules/is-fullwidth-code-point": {
11576 "node_modules/is-fullwidth-code-point": {
10964 "version": "2.0.0",
11577 "version": "2.0.0",
11578+ "dev": true,
10965 "license": "MIT",
11579 "license": "MIT",
10966 "engines": {
11580 "engines": {
10967 "node": ">=4"
11581 "node": ">=4"
@@ -11618,6 +12232,34 @@
11618 "dev": true,
12232 "dev": true,
11619 "license": "MIT"
12233 "license": "MIT"
11620 },
12234 },
12235+ "node_modules/lit": {
12236+ "version": "2.7.5",
12237+ "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz",
12238+ "integrity": "sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==",
12239+ "dependencies": {
12240+ "@lit/reactive-element": "^1.6.0",
12241+ "lit-element": "^3.3.0",
12242+ "lit-html": "^2.7.0"
12243+ }
12244+ },
12245+ "node_modules/lit-element": {
12246+ "version": "3.3.2",
12247+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.2.tgz",
12248+ "integrity": "sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==",
12249+ "dependencies": {
12250+ "@lit-labs/ssr-dom-shim": "^1.1.0",
12251+ "@lit/reactive-element": "^1.3.0",
12252+ "lit-html": "^2.7.0"
12253+ }
12254+ },
12255+ "node_modules/lit-html": {
12256+ "version": "2.7.5",
12257+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.5.tgz",
12258+ "integrity": "sha512-YqUzpisJodwKIlbMFCtyrp58oLloKGnnPLMJ1t23cbfIJjg/H9pvLWK4XS69YeubK5HUs1UE4ys9w5dP1zg6IA==",
12259+ "dependencies": {
12260+ "@types/trusted-types": "^2.0.2"
12261+ }
12262+ },
11621 "node_modules/local-pkg": {
12263 "node_modules/local-pkg": {
11622 "version": "0.4.2",
12264 "version": "0.4.2",
11623 "dev": true,
12265 "dev": true,
@@ -11631,6 +12273,7 @@
11631 },
12273 },
11632 "node_modules/locate-path": {
12274 "node_modules/locate-path": {
11633 "version": "3.0.0",
12275 "version": "3.0.0",
12276+ "dev": true,
11634 "license": "MIT",
12277 "license": "MIT",
11635 "dependencies": {
12278 "dependencies": {
11636 "p-locate": "^3.0.0",
12279 "p-locate": "^3.0.0",
@@ -11929,6 +12572,19 @@
11929 "iced-runtime": ">=0.0.1"
12572 "iced-runtime": ">=0.0.1"
11930 }
12573 }
11931 },
12574 },
12575+ "node_modules/motion": {
12576+ "version": "10.16.2",
12577+ "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz",
12578+ "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==",
12579+ "dependencies": {
12580+ "@motionone/animation": "^10.15.1",
12581+ "@motionone/dom": "^10.16.2",
12582+ "@motionone/svelte": "^10.16.2",
12583+ "@motionone/types": "^10.15.1",
12584+ "@motionone/utils": "^10.15.1",
12585+ "@motionone/vue": "^10.16.2"
12586+ }
12587+ },
11932 "node_modules/ms": {
12588 "node_modules/ms": {
11933 "version": "2.0.0",
12589 "version": "2.0.0",
11934 "license": "MIT"
12590 "license": "MIT"
@@ -11971,6 +12627,11 @@
11971 "varint": "^5.0.0"
12627 "varint": "^5.0.0"
11972 }
12628 }
11973 },
12629 },
12630+ "node_modules/multiformats": {
12631+ "version": "9.9.0",
12632+ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
12633+ "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="
12634+ },
11974 "node_modules/multihashes": {
12635 "node_modules/multihashes": {
11975 "version": "0.4.21",
12636 "version": "0.4.21",
11976 "license": "MIT",
12637 "license": "MIT",
@@ -12401,6 +13062,11 @@
12401 "node": ">=0.10.0"
13062 "node": ">=0.10.0"
12402 }
13063 }
12403 },
13064 },
13065+ "node_modules/on-exit-leak-free": {
13066+ "version": "0.2.0",
13067+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz",
13068+ "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg=="
13069+ },
12404 "node_modules/on-finished": {
13070 "node_modules/on-finished": {
12405 "version": "2.3.0",
13071 "version": "2.3.0",
12406 "license": "MIT",
13072 "license": "MIT",
@@ -12495,6 +13161,7 @@
12495 },
13161 },
12496 "node_modules/p-locate": {
13162 "node_modules/p-locate": {
12497 "version": "3.0.0",
13163 "version": "3.0.0",
13164+ "dev": true,
12498 "license": "MIT",
13165 "license": "MIT",
12499 "dependencies": {
13166 "dependencies": {
12500 "p-limit": "^2.0.0"
13167 "p-limit": "^2.0.0"
@@ -12559,6 +13226,7 @@
12559 },
13226 },
12560 "node_modules/path-exists": {
13227 "node_modules/path-exists": {
12561 "version": "3.0.0",
13228 "version": "3.0.0",
13229+ "dev": true,
12562 "license": "MIT",
13230 "license": "MIT",
12563 "engines": {
13231 "engines": {
12564 "node": ">=4"
13232 "node": ">=4"
@@ -12663,6 +13331,41 @@
12663 "node": ">=4"
13331 "node": ">=4"
12664 }
13332 }
12665 },
13333 },
13334+ "node_modules/pino": {
13335+ "version": "7.11.0",
13336+ "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz",
13337+ "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==",
13338+ "dependencies": {
13339+ "atomic-sleep": "^1.0.0",
13340+ "fast-redact": "^3.0.0",
13341+ "on-exit-leak-free": "^0.2.0",
13342+ "pino-abstract-transport": "v0.5.0",
13343+ "pino-std-serializers": "^4.0.0",
13344+ "process-warning": "^1.0.0",
13345+ "quick-format-unescaped": "^4.0.3",
13346+ "real-require": "^0.1.0",
13347+ "safe-stable-stringify": "^2.1.0",
13348+ "sonic-boom": "^2.2.1",
13349+ "thread-stream": "^0.15.1"
13350+ },
13351+ "bin": {
13352+ "pino": "bin.js"
13353+ }
13354+ },
13355+ "node_modules/pino-abstract-transport": {
13356+ "version": "0.5.0",
13357+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz",
13358+ "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==",
13359+ "dependencies": {
13360+ "duplexify": "^4.1.2",
13361+ "split2": "^4.0.0"
13362+ }
13363+ },
13364+ "node_modules/pino-std-serializers": {
13365+ "version": "4.0.0",
13366+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz",
13367+ "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q=="
13368+ },
12666 "node_modules/please-upgrade-node": {
13369 "node_modules/please-upgrade-node": {
12667 "version": "3.2.0",
13370 "version": "3.2.0",
12668 "dev": true,
13371 "dev": true,
@@ -12671,13 +13374,6 @@
12671 "semver-compare": "^1.0.0"
13374 "semver-compare": "^1.0.0"
12672 }
13375 }
12673 },
13376 },
12674− "node_modules/pngjs": {
12675− "version": "3.4.0",
12676− "license": "MIT",
12677− "engines": {
12678− "node": ">=4.0.0"
12679− }
12680− },
12681 "node_modules/pnglib": {
13377 "node_modules/pnglib": {
12682 "version": "0.0.1",
13378 "version": "0.0.1",
12683 "license": "BSD"
13379 "license": "BSD"
@@ -12686,14 +13382,6 @@
12686 "version": "4.1.0",
13382 "version": "4.1.0",
12687 "license": "MIT"
13383 "license": "MIT"
12688 },
13384 },
12689− "node_modules/preact": {
12690− "version": "10.4.1",
12691− "license": "MIT",
12692− "funding": {
12693− "type": "opencollective",
12694− "url": "https://opencollective.com/preact"
12695− }
12696− },
12697 "node_modules/prelude-ls": {
13385 "node_modules/prelude-ls": {
12698 "version": "1.1.2",
13386 "version": "1.1.2",
12699 "dev": true,
13387 "dev": true,
@@ -12767,6 +13455,11 @@
12767 "node": ">= 0.6.0"
13455 "node": ">= 0.6.0"
12768 }
13456 }
12769 },
13457 },
13458+ "node_modules/process-warning": {
13459+ "version": "1.0.0",
13460+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz",
13461+ "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q=="
13462+ },
12770 "node_modules/prop-types": {
13463 "node_modules/prop-types": {
12771 "version": "15.8.1",
13464 "version": "15.8.1",
12772 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
13465 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -12788,6 +13481,11 @@
12788 "node": ">= 0.10"
13481 "node": ">= 0.10"
12789 }
13482 }
12790 },
13483 },
13484+ "node_modules/proxy-compare": {
13485+ "version": "2.5.1",
13486+ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz",
13487+ "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA=="
13488+ },
12791 "node_modules/pseudomap": {
13489 "node_modules/pseudomap": {
12792 "version": "1.0.2",
13490 "version": "1.0.2",
12793 "dev": true,
13491 "dev": true,
@@ -12831,52 +13529,6 @@
12831 "bitcoin-ops": "^1.3.0"
13529 "bitcoin-ops": "^1.3.0"
12832 }
13530 }
12833 },
13531 },
12834− "node_modules/qrcode": {
12835− "version": "1.4.4",
12836− "license": "MIT",
12837− "dependencies": {
12838− "buffer": "^5.4.3",
12839− "buffer-alloc": "^1.2.0",
12840− "buffer-from": "^1.1.1",
12841− "dijkstrajs": "^1.0.1",
12842− "isarray": "^2.0.1",
12843− "pngjs": "^3.3.0",
12844− "yargs": "^13.2.4"
12845− },
12846− "bin": {
12847− "qrcode": "bin/qrcode"
12848− },
12849− "engines": {
12850− "node": ">=4"
12851− }
12852− },
12853− "node_modules/qrcode/node_modules/buffer": {
12854− "version": "5.7.1",
12855− "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
12856− "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
12857− "funding": [
12858− {
12859− "type": "github",
12860− "url": "https://github.com/sponsors/feross"
12861− },
12862− {
12863− "type": "patreon",
12864− "url": "https://www.patreon.com/feross"
12865− },
12866− {
12867− "type": "consulting",
12868− "url": "https://feross.org/support"
12869− }
12870− ],
12871− "dependencies": {
12872− "base64-js": "^1.3.1",
12873− "ieee754": "^1.1.13"
12874− }
12875− },
12876− "node_modules/qrcode/node_modules/isarray": {
12877− "version": "2.0.5",
12878− "license": "MIT"
12879− },
12880 "node_modules/qs": {
13532 "node_modules/qs": {
12881 "version": "6.7.0",
13533 "version": "6.7.0",
12882 "license": "BSD-3-Clause",
13534 "license": "BSD-3-Clause",
@@ -12884,21 +13536,6 @@
12884 "node": ">=0.6"
13536 "node": ">=0.6"
12885 }
13537 }
12886 },
13538 },
12887− "node_modules/query-string": {
12888− "version": "6.13.5",
12889− "license": "MIT",
12890− "dependencies": {
12891− "decode-uri-component": "^0.2.0",
12892− "split-on-first": "^1.0.0",
12893− "strict-uri-encode": "^2.0.0"
12894− },
12895− "engines": {
12896− "node": ">=6"
12897− },
12898− "funding": {
12899− "url": "https://github.com/sponsors/sindresorhus"
12900− }
12901− },
12902 "node_modules/queue-microtask": {
13539 "node_modules/queue-microtask": {
12903 "version": "1.2.3",
13540 "version": "1.2.3",
12904 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
13541 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -12919,6 +13556,11 @@
12919 }
13556 }
12920 ]
13557 ]
12921 },
13558 },
13559+ "node_modules/quick-format-unescaped": {
13560+ "version": "4.0.4",
13561+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
13562+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
13563+ },
12922 "node_modules/quick-lru": {
13564 "node_modules/quick-lru": {
12923 "version": "5.1.1",
13565 "version": "5.1.1",
12924 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
13566 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
@@ -13097,6 +13739,14 @@
13097 "node": ">=8.10.0"
13739 "node": ">=8.10.0"
13098 }
13740 }
13099 },
13741 },
13742+ "node_modules/real-require": {
13743+ "version": "0.1.0",
13744+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
13745+ "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==",
13746+ "engines": {
13747+ "node": ">= 12.13.0"
13748+ }
13749+ },
13100 "node_modules/redent": {
13750 "node_modules/redent": {
13101 "version": "3.0.0",
13751 "version": "3.0.0",
13102 "dev": true,
13752 "dev": true,
@@ -13473,6 +14123,11 @@
13473 ],
14123 ],
13474 "license": "MIT"
14124 "license": "MIT"
13475 },
14125 },
14126+ "node_modules/safe-json-utils": {
14127+ "version": "1.1.1",
14128+ "resolved": "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.1.1.tgz",
14129+ "integrity": "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ=="
14130+ },
13476 "node_modules/safe-regex-test": {
14131 "node_modules/safe-regex-test": {
13477 "version": "1.0.0",
14132 "version": "1.0.0",
13478 "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
14133 "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
@@ -13486,6 +14141,14 @@
13486 "url": "https://github.com/sponsors/ljharb"
14141 "url": "https://github.com/sponsors/ljharb"
13487 }
14142 }
13488 },
14143 },
14144+ "node_modules/safe-stable-stringify": {
14145+ "version": "2.4.3",
14146+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
14147+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
14148+ "engines": {
14149+ "node": ">=10"
14150+ }
14151+ },
13489 "node_modules/safer-buffer": {
14152 "node_modules/safer-buffer": {
13490 "version": "2.1.2",
14153 "version": "2.1.2",
13491 "license": "MIT"
14154 "license": "MIT"
@@ -13919,6 +14582,14 @@
13919 "node": ">=0.10.0"
14582 "node": ">=0.10.0"
13920 }
14583 }
13921 },
14584 },
14585+ "node_modules/sonic-boom": {
14586+ "version": "2.8.0",
14587+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz",
14588+ "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==",
14589+ "dependencies": {
14590+ "atomic-sleep": "^1.0.0"
14591+ }
14592+ },
13922 "node_modules/source-map": {
14593 "node_modules/source-map": {
13923 "version": "0.5.7",
14594 "version": "0.5.7",
13924 "license": "BSD-3-Clause",
14595 "license": "BSD-3-Clause",
@@ -14138,6 +14809,14 @@
14138 "node": ">=6"
14809 "node": ">=6"
14139 }
14810 }
14140 },
14811 },
14812+ "node_modules/split2": {
14813+ "version": "4.2.0",
14814+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
14815+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
14816+ "engines": {
14817+ "node": ">= 10.x"
14818+ }
14819+ },
14141 "node_modules/sprintf-js": {
14820 "node_modules/sprintf-js": {
14142 "version": "1.0.3",
14821 "version": "1.0.3",
14143 "dev": true,
14822 "dev": true,
@@ -14183,6 +14862,11 @@
14183 "readable-stream": "^3.5.0"
14862 "readable-stream": "^3.5.0"
14184 }
14863 }
14185 },
14864 },
14865+ "node_modules/stream-shift": {
14866+ "version": "1.0.1",
14867+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
14868+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
14869+ },
14186 "node_modules/strict-event-emitter-types": {
14870 "node_modules/strict-event-emitter-types": {
14187 "version": "2.0.0",
14871 "version": "2.0.0",
14188 "license": "ISC"
14872 "license": "ISC"
@@ -14207,18 +14891,6 @@
14207 "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
14891 "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
14208 "dev": true
14892 "dev": true
14209 },
14893 },
14210− "node_modules/string-width": {
14211− "version": "3.1.0",
14212− "license": "MIT",
14213− "dependencies": {
14214− "emoji-regex": "^7.0.1",
14215− "is-fullwidth-code-point": "^2.0.0",
14216− "strip-ansi": "^5.1.0"
14217− },
14218− "engines": {
14219− "node": ">=6"
14220− }
14221− },
14222 "node_modules/string.prototype.matchall": {
14894 "node_modules/string.prototype.matchall": {
14223 "version": "4.0.8",
14895 "version": "4.0.8",
14224 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
14896 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
@@ -14280,23 +14952,6 @@
14280 "url": "https://github.com/sponsors/ljharb"
14952 "url": "https://github.com/sponsors/ljharb"
14281 }
14953 }
14282 },
14954 },
14283− "node_modules/strip-ansi": {
14284− "version": "5.2.0",
14285− "license": "MIT",
14286− "dependencies": {
14287− "ansi-regex": "^4.1.0"
14288− },
14289− "engines": {
14290− "node": ">=6"
14291− }
14292− },
14293− "node_modules/strip-ansi/node_modules/ansi-regex": {
14294− "version": "4.1.0",
14295− "license": "MIT",
14296− "engines": {
14297− "node": ">=6"
14298− }
14299− },
14300 "node_modules/strip-bom": {
14955 "node_modules/strip-bom": {
14301 "version": "3.0.0",
14956 "version": "3.0.0",
14302 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
14957 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -14741,6 +15396,14 @@
14741 "dev": true,
15396 "dev": true,
14742 "license": "MIT"
15397 "license": "MIT"
14743 },
15398 },
15399+ "node_modules/thread-stream": {
15400+ "version": "0.15.2",
15401+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz",
15402+ "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==",
15403+ "dependencies": {
15404+ "real-require": "^0.1.0"
15405+ }
15406+ },
14744 "node_modules/timed-out": {
15407 "node_modules/timed-out": {
14745 "version": "4.0.1",
15408 "version": "4.0.1",
14746 "license": "MIT",
15409 "license": "MIT",
@@ -14984,6 +15647,14 @@
14984 "node": "*"
15647 "node": "*"
14985 }
15648 }
14986 },
15649 },
15650+ "node_modules/uint8arrays": {
15651+ "version": "3.1.1",
15652+ "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz",
15653+ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==",
15654+ "dependencies": {
15655+ "multiformats": "^9.4.2"
15656+ }
15657+ },
14987 "node_modules/ultron": {
15658 "node_modules/ultron": {
14988 "version": "1.1.1",
15659 "version": "1.1.1",
14989 "license": "MIT"
15660 "license": "MIT"
@@ -15242,6 +15913,14 @@
15242 "node": ">= 4"
15913 "node": ">= 4"
15243 }
15914 }
15244 },
15915 },
15916+ "node_modules/use-sync-external-store": {
15917+ "version": "1.2.0",
15918+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
15919+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
15920+ "peerDependencies": {
15921+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
15922+ }
15923+ },
15245 "node_modules/utf-8-validate": {
15924 "node_modules/utf-8-validate": {
15246 "version": "5.0.5",
15925 "version": "5.0.5",
15247 "hasInstallScript": true,
15926 "hasInstallScript": true,
@@ -15287,6 +15966,26 @@
15287 "spdx-expression-parse": "^3.0.0"
15966 "spdx-expression-parse": "^3.0.0"
15288 }
15967 }
15289 },
15968 },
15969+ "node_modules/valtio": {
15970+ "version": "1.10.5",
15971+ "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.10.5.tgz",
15972+ "integrity": "sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==",
15973+ "dependencies": {
15974+ "proxy-compare": "2.5.1",
15975+ "use-sync-external-store": "1.2.0"
15976+ },
15977+ "engines": {
15978+ "node": ">=12.20.0"
15979+ },
15980+ "peerDependencies": {
15981+ "react": ">=16.8"
15982+ },
15983+ "peerDependenciesMeta": {
15984+ "react": {
15985+ "optional": true
15986+ }
15987+ }
15988+ },
15290 "node_modules/varint": {
15989 "node_modules/varint": {
15291 "version": "5.0.2",
15990 "version": "5.0.2",
15292 "license": "MIT"
15991 "license": "MIT"
@@ -16278,46 +16977,14 @@
16278 "node": ">=0.10.0"
16977 "node": ">=0.10.0"
16279 }
16978 }
16280 },
16979 },
16281− "node_modules/wrap-ansi": {
16282− "version": "5.1.0",
16283− "license": "MIT",
16284− "dependencies": {
16285− "ansi-styles": "^3.2.0",
16286− "string-width": "^3.0.0",
16287− "strip-ansi": "^5.0.0"
16288− },
16289− "engines": {
16290− "node": ">=6"
16291− }
16292− },
16293− "node_modules/wrap-ansi/node_modules/ansi-styles": {
16294− "version": "3.2.1",
16295− "license": "MIT",
16296− "dependencies": {
16297− "color-convert": "^1.9.0"
16298− },
16299− "engines": {
16300− "node": ">=4"
16301− }
16302− },
16303− "node_modules/wrap-ansi/node_modules/color-convert": {
16304− "version": "1.9.3",
16305− "license": "MIT",
16306− "dependencies": {
16307− "color-name": "1.1.3"
16308− }
16309− },
16310− "node_modules/wrap-ansi/node_modules/color-name": {
16311− "version": "1.1.3",
16312− "license": "MIT"
16313− },
16314 "node_modules/wrappy": {
16980 "node_modules/wrappy": {
16315 "version": "1.0.2",
16981 "version": "1.0.2",
16316 "license": "ISC"
16982 "license": "ISC"
16317 },
16983 },
16318 "node_modules/ws": {
16984 "node_modules/ws": {
16319− "version": "7.4.6",
16985+ "version": "7.5.9",
16320− "license": "MIT",
16986+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
16987+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
16321 "engines": {
16988 "engines": {
16322 "node": ">=8.3.0"
16989 "node": ">=8.3.0"
16323 },
16990 },
@@ -16425,39 +17092,15 @@
16425 }
17092 }
16426 },
17093 },
16427 "node_modules/yallist": {
17094 "node_modules/yallist": {
16428− "version": "4.0.0",
17095+ "version": "4.0.0",
16429− "license": "ISC"
17096+ "license": "ISC"
16430− },
16431− "node_modules/yaml": {
16432− "version": "1.10.2",
16433− "dev": true,
16434− "license": "ISC",
16435− "engines": {
16436− "node": ">= 6"
16437− }
16438− },
16439− "node_modules/yargs": {
16440− "version": "13.3.2",
16441− "license": "MIT",
16442− "dependencies": {
16443− "cliui": "^5.0.0",
16444− "find-up": "^3.0.0",
16445− "get-caller-file": "^2.0.1",
16446− "require-directory": "^2.1.1",
16447− "require-main-filename": "^2.0.0",
16448− "set-blocking": "^2.0.0",
16449− "string-width": "^3.0.0",
16450− "which-module": "^2.0.0",
16451− "y18n": "^4.0.0",
16452− "yargs-parser": "^13.1.2"
16453− }
16454 },
17097 },
16455− "node_modules/yargs-parser": {
17098+ "node_modules/yaml": {
16456− "version": "13.1.2",
17099+ "version": "1.10.2",
17100+ "dev": true,
16457 "license": "ISC",
17101 "license": "ISC",
16458− "dependencies": {
17102+ "engines": {
16459− "camelcase": "^5.0.0",
17103+ "node": ">= 6"
16460− "decamelize": "^1.2.0"
16461 }
17104 }
16462 },
17105 },
16463 "node_modules/yocto-queue": {
17106 "node_modules/yocto-queue": {
@@ -18575,9 +19218,147 @@
18575 }
19218 }
18576 }
19219 }
18577 },
19220 },
19221+ "@lit-labs/ssr-dom-shim": {
19222+ "version": "1.1.1",
19223+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz",
19224+ "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ=="
19225+ },
19226+ "@lit/reactive-element": {
19227+ "version": "1.6.2",
19228+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.2.tgz",
19229+ "integrity": "sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==",
19230+ "requires": {
19231+ "@lit-labs/ssr-dom-shim": "^1.0.0"
19232+ }
19233+ },
18578 "@metamask/detect-provider": {
19234 "@metamask/detect-provider": {
18579 "version": "1.2.0"
19235 "version": "1.2.0"
18580 },
19236 },
19237+ "@motionone/animation": {
19238+ "version": "10.15.1",
19239+ "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz",
19240+ "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==",
19241+ "requires": {
19242+ "@motionone/easing": "^10.15.1",
19243+ "@motionone/types": "^10.15.1",
19244+ "@motionone/utils": "^10.15.1",
19245+ "tslib": "^2.3.1"
19246+ },
19247+ "dependencies": {
19248+ "tslib": {
19249+ "version": "2.6.0",
19250+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19251+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19252+ }
19253+ }
19254+ },
19255+ "@motionone/dom": {
19256+ "version": "10.16.2",
19257+ "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.2.tgz",
19258+ "integrity": "sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==",
19259+ "requires": {
19260+ "@motionone/animation": "^10.15.1",
19261+ "@motionone/generators": "^10.15.1",
19262+ "@motionone/types": "^10.15.1",
19263+ "@motionone/utils": "^10.15.1",
19264+ "hey-listen": "^1.0.8",
19265+ "tslib": "^2.3.1"
19266+ },
19267+ "dependencies": {
19268+ "tslib": {
19269+ "version": "2.6.0",
19270+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19271+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19272+ }
19273+ }
19274+ },
19275+ "@motionone/easing": {
19276+ "version": "10.15.1",
19277+ "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz",
19278+ "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==",
19279+ "requires": {
19280+ "@motionone/utils": "^10.15.1",
19281+ "tslib": "^2.3.1"
19282+ },
19283+ "dependencies": {
19284+ "tslib": {
19285+ "version": "2.6.0",
19286+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19287+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19288+ }
19289+ }
19290+ },
19291+ "@motionone/generators": {
19292+ "version": "10.15.1",
19293+ "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz",
19294+ "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==",
19295+ "requires": {
19296+ "@motionone/types": "^10.15.1",
19297+ "@motionone/utils": "^10.15.1",
19298+ "tslib": "^2.3.1"
19299+ },
19300+ "dependencies": {
19301+ "tslib": {
19302+ "version": "2.6.0",
19303+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19304+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19305+ }
19306+ }
19307+ },
19308+ "@motionone/svelte": {
19309+ "version": "10.16.2",
19310+ "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.2.tgz",
19311+ "integrity": "sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==",
19312+ "requires": {
19313+ "@motionone/dom": "^10.16.2",
19314+ "tslib": "^2.3.1"
19315+ },
19316+ "dependencies": {
19317+ "tslib": {
19318+ "version": "2.6.0",
19319+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19320+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19321+ }
19322+ }
19323+ },
19324+ "@motionone/types": {
19325+ "version": "10.15.1",
19326+ "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz",
19327+ "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA=="
19328+ },
19329+ "@motionone/utils": {
19330+ "version": "10.15.1",
19331+ "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz",
19332+ "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==",
19333+ "requires": {
19334+ "@motionone/types": "^10.15.1",
19335+ "hey-listen": "^1.0.8",
19336+ "tslib": "^2.3.1"
19337+ },
19338+ "dependencies": {
19339+ "tslib": {
19340+ "version": "2.6.0",
19341+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19342+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19343+ }
19344+ }
19345+ },
19346+ "@motionone/vue": {
19347+ "version": "10.16.2",
19348+ "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.2.tgz",
19349+ "integrity": "sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==",
19350+ "requires": {
19351+ "@motionone/dom": "^10.16.2",
19352+ "tslib": "^2.3.1"
19353+ },
19354+ "dependencies": {
19355+ "tslib": {
19356+ "version": "2.6.0",
19357+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
19358+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
19359+ }
19360+ }
19361+ },
18581 "@nicolo-ribaudo/eslint-scope-5-internals": {
19362 "@nicolo-ribaudo/eslint-scope-5-internals": {
18582 "version": "5.1.1-v1",
19363 "version": "5.1.1-v1",
18583 "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
19364 "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -18871,6 +19652,152 @@
18871 "@scure/base": "~1.1.0"
19652 "@scure/base": "~1.1.0"
18872 }
19653 }
18873 },
19654 },
19655+ "@stablelib/aead": {
19656+ "version": "1.0.1",
19657+ "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz",
19658+ "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg=="
19659+ },
19660+ "@stablelib/binary": {
19661+ "version": "1.0.1",
19662+ "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz",
19663+ "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==",
19664+ "requires": {
19665+ "@stablelib/int": "^1.0.1"
19666+ }
19667+ },
19668+ "@stablelib/bytes": {
19669+ "version": "1.0.1",
19670+ "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz",
19671+ "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ=="
19672+ },
19673+ "@stablelib/chacha": {
19674+ "version": "1.0.1",
19675+ "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz",
19676+ "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==",
19677+ "requires": {
19678+ "@stablelib/binary": "^1.0.1",
19679+ "@stablelib/wipe": "^1.0.1"
19680+ }
19681+ },
19682+ "@stablelib/chacha20poly1305": {
19683+ "version": "1.0.1",
19684+ "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz",
19685+ "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==",
19686+ "requires": {
19687+ "@stablelib/aead": "^1.0.1",
19688+ "@stablelib/binary": "^1.0.1",
19689+ "@stablelib/chacha": "^1.0.1",
19690+ "@stablelib/constant-time": "^1.0.1",
19691+ "@stablelib/poly1305": "^1.0.1",
19692+ "@stablelib/wipe": "^1.0.1"
19693+ }
19694+ },
19695+ "@stablelib/constant-time": {
19696+ "version": "1.0.1",
19697+ "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz",
19698+ "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg=="
19699+ },
19700+ "@stablelib/ed25519": {
19701+ "version": "1.0.3",
19702+ "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz",
19703+ "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==",
19704+ "requires": {
19705+ "@stablelib/random": "^1.0.2",
19706+ "@stablelib/sha512": "^1.0.1",
19707+ "@stablelib/wipe": "^1.0.1"
19708+ }
19709+ },
19710+ "@stablelib/hash": {
19711+ "version": "1.0.1",
19712+ "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz",
19713+ "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg=="
19714+ },
19715+ "@stablelib/hkdf": {
19716+ "version": "1.0.1",
19717+ "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz",
19718+ "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==",
19719+ "requires": {
19720+ "@stablelib/hash": "^1.0.1",
19721+ "@stablelib/hmac": "^1.0.1",
19722+ "@stablelib/wipe": "^1.0.1"
19723+ }
19724+ },
19725+ "@stablelib/hmac": {
19726+ "version": "1.0.1",
19727+ "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz",
19728+ "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==",
19729+ "requires": {
19730+ "@stablelib/constant-time": "^1.0.1",
19731+ "@stablelib/hash": "^1.0.1",
19732+ "@stablelib/wipe": "^1.0.1"
19733+ }
19734+ },
19735+ "@stablelib/int": {
19736+ "version": "1.0.1",
19737+ "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz",
19738+ "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w=="
19739+ },
19740+ "@stablelib/keyagreement": {
19741+ "version": "1.0.1",
19742+ "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz",
19743+ "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==",
19744+ "requires": {
19745+ "@stablelib/bytes": "^1.0.1"
19746+ }
19747+ },
19748+ "@stablelib/poly1305": {
19749+ "version": "1.0.1",
19750+ "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz",
19751+ "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==",
19752+ "requires": {
19753+ "@stablelib/constant-time": "^1.0.1",
19754+ "@stablelib/wipe": "^1.0.1"
19755+ }
19756+ },
19757+ "@stablelib/random": {
19758+ "version": "1.0.2",
19759+ "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz",
19760+ "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==",
19761+ "requires": {
19762+ "@stablelib/binary": "^1.0.1",
19763+ "@stablelib/wipe": "^1.0.1"
19764+ }
19765+ },
19766+ "@stablelib/sha256": {
19767+ "version": "1.0.1",
19768+ "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz",
19769+ "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==",
19770+ "requires": {
19771+ "@stablelib/binary": "^1.0.1",
19772+ "@stablelib/hash": "^1.0.1",
19773+ "@stablelib/wipe": "^1.0.1"
19774+ }
19775+ },
19776+ "@stablelib/sha512": {
19777+ "version": "1.0.1",
19778+ "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz",
19779+ "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==",
19780+ "requires": {
19781+ "@stablelib/binary": "^1.0.1",
19782+ "@stablelib/hash": "^1.0.1",
19783+ "@stablelib/wipe": "^1.0.1"
19784+ }
19785+ },
19786+ "@stablelib/wipe": {
19787+ "version": "1.0.1",
19788+ "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz",
19789+ "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg=="
19790+ },
19791+ "@stablelib/x25519": {
19792+ "version": "1.0.3",
19793+ "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz",
19794+ "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==",
19795+ "requires": {
19796+ "@stablelib/keyagreement": "^1.0.1",
19797+ "@stablelib/random": "^1.0.2",
19798+ "@stablelib/wipe": "^1.0.1"
19799+ }
19800+ },
18874 "@styled-system/background": {
19801 "@styled-system/background": {
18875 "version": "5.1.2",
19802 "version": "5.1.2",
18876 "requires": {
19803 "requires": {
@@ -19452,6 +20379,11 @@
19452 "@types/jest": "*"
20379 "@types/jest": "*"
19453 }
20380 }
19454 },
20381 },
20382+ "@types/trusted-types": {
20383+ "version": "2.0.3",
20384+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
20385+ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g=="
20386+ },
19455 "@types/warning": {
20387 "@types/warning": {
19456 "version": "3.0.0"
20388 "version": "3.0.0"
19457 },
20389 },
@@ -19745,150 +20677,441 @@
19745 }
20677 }
19746 }
20678 }
19747 },
20679 },
19748− "@walletconnect/browser-utils": {
20680+ "@walletconnect/encoding": {
19749− "version": "1.8.0",
20681+ "version": "1.0.2",
20682+ "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz",
20683+ "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==",
19750 "requires": {
20684 "requires": {
19751− "@walletconnect/safe-json": "1.0.0",
20685+ "is-typedarray": "1.0.0",
19752− "@walletconnect/types": "^1.8.0",
20686+ "tslib": "1.14.1",
19753− "@walletconnect/window-getters": "1.0.0",
20687+ "typedarray-to-buffer": "3.1.5"
19754− "@walletconnect/window-metadata": "1.0.0",
19755− "detect-browser": "5.2.0"
19756 }
20688 }
19757 },
20689 },
19758− "@walletconnect/client": {
20690+ "@walletconnect/environment": {
19759− "version": "1.8.0",
20691+ "version": "1.0.1",
20692+ "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz",
20693+ "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==",
19760 "requires": {
20694 "requires": {
19761− "@walletconnect/core": "^1.8.0",
20695+ "tslib": "1.14.1"
19762− "@walletconnect/iso-crypto": "^1.8.0",
19763− "@walletconnect/types": "^1.8.0",
19764− "@walletconnect/utils": "^1.8.0"
19765 }
20696 }
19766 },
20697 },
19767− "@walletconnect/core": {
20698+ "@walletconnect/events": {
19768− "version": "1.8.0",
20699+ "version": "1.0.1",
20700+ "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz",
20701+ "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==",
19769 "requires": {
20702 "requires": {
19770− "@walletconnect/socket-transport": "^1.8.0",
20703+ "keyvaluestorage-interface": "^1.0.0",
19771− "@walletconnect/types": "^1.8.0",
20704+ "tslib": "1.14.1"
19772− "@walletconnect/utils": "^1.8.0"
19773 }
20705 }
19774 },
20706 },
19775− "@walletconnect/crypto": {
20707+ "@walletconnect/heartbeat": {
19776− "version": "1.0.2",
20708+ "version": "1.2.1",
20709+ "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz",
20710+ "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==",
20711+ "requires": {
20712+ "@walletconnect/events": "^1.0.1",
20713+ "@walletconnect/time": "^1.0.2",
20714+ "tslib": "1.14.1"
20715+ }
20716+ },
20717+ "@walletconnect/jsonrpc-provider": {
20718+ "version": "1.0.13",
20719+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz",
20720+ "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==",
19777 "requires": {
20721 "requires": {
19778− "@walletconnect/encoding": "^1.0.1",
20722+ "@walletconnect/jsonrpc-utils": "^1.0.8",
19779− "@walletconnect/environment": "^1.0.0",
20723+ "@walletconnect/safe-json": "^1.0.2",
19780− "@walletconnect/randombytes": "^1.0.2",
20724+ "tslib": "1.14.1"
19781− "aes-js": "^3.1.2",
19782− "hash.js": "^1.1.7"
19783 },
20725 },
19784 "dependencies": {
20726 "dependencies": {
19785− "aes-js": {
20727+ "@walletconnect/safe-json": {
19786− "version": "3.1.2"
20728+ "version": "1.0.2",
20729+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
20730+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
20731+ "requires": {
20732+ "tslib": "1.14.1"
20733+ }
19787 }
20734 }
19788 }
20735 }
19789 },
20736 },
19790− "@walletconnect/encoding": {
20737+ "@walletconnect/jsonrpc-types": {
19791− "version": "1.0.1",
20738+ "version": "1.0.3",
20739+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz",
20740+ "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==",
19792 "requires": {
20741 "requires": {
19793− "is-typedarray": "1.0.0",
20742+ "keyvaluestorage-interface": "^1.0.0",
19794− "typedarray-to-buffer": "3.1.5"
20743+ "tslib": "1.14.1"
19795 }
20744 }
19796 },
20745 },
19797− "@walletconnect/environment": {
20746+ "@walletconnect/jsonrpc-utils": {
19798− "version": "1.0.0"
20747+ "version": "1.0.8",
19799− },
20748+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz",
19800− "@walletconnect/iso-crypto": {
20749+ "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==",
19801− "version": "1.8.0",
19802 "requires": {
20750 "requires": {
19803− "@walletconnect/crypto": "^1.0.2",
20751+ "@walletconnect/environment": "^1.0.1",
19804− "@walletconnect/types": "^1.8.0",
20752+ "@walletconnect/jsonrpc-types": "^1.0.3",
19805− "@walletconnect/utils": "^1.8.0"
20753+ "tslib": "1.14.1"
19806 }
20754 }
19807 },
20755 },
19808− "@walletconnect/jsonrpc-types": {
20756+ "@walletconnect/jsonrpc-ws-connection": {
19809− "version": "1.0.1",
20757+ "version": "1.0.12",
20758+ "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.12.tgz",
20759+ "integrity": "sha512-HAcadga3Qjt1Cqy+qXEW6zjaCs8uJGdGQrqltzl3OjiK4epGZRdvSzTe63P+t/3z+D2wG+ffEPn0GVcDozmN1w==",
19810 "requires": {
20760 "requires": {
19811− "keyvaluestorage-interface": "^1.0.0"
20761+ "@walletconnect/jsonrpc-utils": "^1.0.6",
20762+ "@walletconnect/safe-json": "^1.0.2",
20763+ "events": "^3.3.0",
20764+ "tslib": "1.14.1",
20765+ "ws": "^7.5.1"
20766+ },
20767+ "dependencies": {
20768+ "@walletconnect/safe-json": {
20769+ "version": "1.0.2",
20770+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
20771+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
20772+ "requires": {
20773+ "tslib": "1.14.1"
20774+ }
20775+ }
19812 }
20776 }
19813 },
20777 },
19814− "@walletconnect/jsonrpc-utils": {
20778+ "@walletconnect/logger": {
19815− "version": "1.0.3",
20779+ "version": "2.0.1",
20780+ "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz",
20781+ "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==",
19816 "requires": {
20782 "requires": {
19817− "@walletconnect/environment": "^1.0.0",
20783+ "pino": "7.11.0",
19818− "@walletconnect/jsonrpc-types": "^1.0.1"
20784+ "tslib": "1.14.1"
19819 }
20785 }
19820 },
20786 },
19821− "@walletconnect/mobile-registry": {
20787+ "@walletconnect/relay-api": {
19822− "version": "1.4.0"
20788+ "version": "1.0.9",
19823− },
20789+ "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz",
19824− "@walletconnect/qrcode-modal": {
20790+ "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==",
19825− "version": "1.8.0",
19826 "requires": {
20791 "requires": {
19827− "@walletconnect/browser-utils": "^1.8.0",
20792+ "@walletconnect/jsonrpc-types": "^1.0.2",
19828− "@walletconnect/mobile-registry": "^1.4.0",
20793+ "tslib": "1.14.1"
19829− "@walletconnect/types": "^1.8.0",
19830− "copy-to-clipboard": "^3.3.1",
19831− "preact": "10.4.1",
19832− "qrcode": "1.4.4"
19833 }
20794 }
19834 },
20795 },
19835− "@walletconnect/randombytes": {
20796+ "@walletconnect/relay-auth": {
19836− "version": "1.0.2",
20797+ "version": "1.0.4",
20798+ "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz",
20799+ "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==",
19837 "requires": {
20800 "requires": {
19838− "@walletconnect/encoding": "^1.0.1",
20801+ "@stablelib/ed25519": "^1.0.2",
20802+ "@stablelib/random": "^1.0.1",
19839− "@walletconnect/environment": "^1.0.0",
20803+ "@walletconnect/safe-json": "^1.0.1",
19840− "randombytes": "^2.1.0"
20804+ "@walletconnect/time": "^1.0.2",
20805+ "tslib": "1.14.1",
20806+ "uint8arrays": "^3.0.0"
20807+ },
20808+ "dependencies": {
20809+ "@walletconnect/safe-json": {
20810+ "version": "1.0.2",
20811+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
20812+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
20813+ "requires": {
20814+ "tslib": "1.14.1"
20815+ }
20816+ }
19841 }
20817 }
19842 },
20818 },
19843− "@walletconnect/safe-json": {
20819+ "@walletconnect/sign-client": {
20820+ "version": "2.9.0",
20821+ "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.9.0.tgz",
20822+ "integrity": "sha512-mEKc4LlLMebCe45qzqh+MX4ilQK4kOEBzLY6YJpG8EhyT45eX4JMNA7qQoYa9MRMaaVb/7USJcc4e3ZrjZvQmA==",
20823+ "requires": {
20824+ "@walletconnect/core": "2.9.0",
20825+ "@walletconnect/events": "^1.0.1",
20826+ "@walletconnect/heartbeat": "1.2.1",
20827+ "@walletconnect/jsonrpc-utils": "1.0.8",
20828+ "@walletconnect/logger": "^2.0.1",
20829+ "@walletconnect/time": "^1.0.2",
20830+ "@walletconnect/types": "2.9.0",
20831+ "@walletconnect/utils": "2.9.0",
20832+ "events": "^3.3.0"
20833+ },
20834+ "dependencies": {
20835+ "@walletconnect/core": {
20836+ "version": "2.9.0",
20837+ "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.9.0.tgz",
20838+ "integrity": "sha512-MZYJghS9YCvGe32UOgDj0mCasaOoGHQaYXWeQblXE/xb8HuaM6kAWhjIQN9P+MNp5QP134BHP5olQostcCotXQ==",
20839+ "requires": {
20840+ "@walletconnect/heartbeat": "1.2.1",
20841+ "@walletconnect/jsonrpc-provider": "1.0.13",
20842+ "@walletconnect/jsonrpc-types": "1.0.3",
20843+ "@walletconnect/jsonrpc-utils": "1.0.8",
20844+ "@walletconnect/jsonrpc-ws-connection": "1.0.12",
20845+ "@walletconnect/keyvaluestorage": "^1.0.2",
20846+ "@walletconnect/logger": "^2.0.1",
20847+ "@walletconnect/relay-api": "^1.0.9",
20848+ "@walletconnect/relay-auth": "^1.0.4",
20849+ "@walletconnect/safe-json": "^1.0.2",
20850+ "@walletconnect/time": "^1.0.2",
20851+ "@walletconnect/types": "2.9.0",
20852+ "@walletconnect/utils": "2.9.0",
20853+ "events": "^3.3.0",
20854+ "lodash.isequal": "4.5.0",
20855+ "uint8arrays": "^3.1.0"
20856+ }
20857+ },
20858+ "@walletconnect/keyvaluestorage": {
19844− "version": "1.0.0"
20859+ "version": "1.0.2",
20860+ "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz",
20861+ "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==",
20862+ "requires": {
20863+ "safe-json-utils": "^1.1.1",
20864+ "tslib": "1.14.1"
20865+ }
20866+ },
20867+ "@walletconnect/safe-json": {
20868+ "version": "1.0.2",
20869+ "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz",
20870+ "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==",
20871+ "requires": {
20872+ "tslib": "1.14.1"
20873+ }
20874+ },
20875+ "@walletconnect/utils": {
20876+ "version": "2.9.0",
20877+ "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.9.0.tgz",
20878+ "integrity": "sha512-7Tu3m6dZL84KofrNBcblsgpSqU2vdo9ImLD7zWimLXERVGNQ8smXG+gmhQYblebIBhsPzjy9N38YMC3nPlfQNw==",
20879+ "requires": {
20880+ "@stablelib/chacha20poly1305": "1.0.1",
20881+ "@stablelib/hkdf": "1.0.1",
20882+ "@stablelib/random": "^1.0.2",
20883+ "@stablelib/sha256": "1.0.1",
20884+ "@stablelib/x25519": "^1.0.3",
20885+ "@walletconnect/relay-api": "^1.0.9",
20886+ "@walletconnect/safe-json": "^1.0.2",
20887+ "@walletconnect/time": "^1.0.2",
20888+ "@walletconnect/types": "2.9.0",
20889+ "@walletconnect/window-getters": "^1.0.1",
20890+ "@walletconnect/window-metadata": "^1.0.1",
20891+ "detect-browser": "5.3.0",
20892+ "query-string": "7.1.3",
20893+ "uint8arrays": "^3.1.0"
20894+ }
20895+ },
20896+ "@walletconnect/window-getters": {
20897+ "version": "1.0.1",
20898+ "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz",
20899+ "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==",
20900+ "requires": {
20901+ "tslib": "1.14.1"
20902+ }
20903+ },
20904+ "@walletconnect/window-metadata": {
20905+ "version": "1.0.1",
20906+ "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz",
20907+ "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==",
20908+ "requires": {
20909+ "@walletconnect/window-getters": "^1.0.1",
20910+ "tslib": "1.14.1"
20911+ }
20912+ },
20913+ "detect-browser": {
20914+ "version": "5.3.0",
20915+ "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz",
20916+ "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w=="
20917+ },
20918+ "query-string": {
20919+ "version": "7.1.3",
20920+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
20921+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
20922+ "requires": {
20923+ "decode-uri-component": "^0.2.2",
20924+ "filter-obj": "^1.1.0",
20925+ "split-on-first": "^1.0.0",
20926+ "strict-uri-encode": "^2.0.0"
20927+ }
20928+ }
20929+ }
19845 },
20930 },
19846− "@walletconnect/socket-transport": {
20931+ "@walletconnect/time": {
19847− "version": "1.8.0",
20932+ "version": "1.0.2",
20933+ "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz",
20934+ "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==",
19848 "requires": {
20935 "requires": {
20936+ "tslib": "1.14.1"
20937+ }
20938+ },
20939+ "@walletconnect/types": {
20940+ "version": "2.9.0",
19849− "@walletconnect/types": "^1.8.0",
20941+ "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.9.0.tgz",
20942+ "integrity": "sha512-ORopsMfSRvUYqtjKKd6scfg8o4/aGebipLxx92AuuUgMTERSU6cGmIrK6rdLu7W6FBJkmngPLEGc9mRqAb9Lug==",
20943+ "requires": {
20944+ "@walletconnect/events": "^1.0.1",
20945+ "@walletconnect/heartbeat": "1.2.1",
20946+ "@walletconnect/jsonrpc-types": "1.0.3",
19850− "@walletconnect/utils": "^1.8.0",
20947+ "@walletconnect/keyvaluestorage": "^1.0.2",
19851− "ws": "7.5.3"
20948+ "@walletconnect/logger": "^2.0.1",
20949+ "events": "^3.3.0"
19852 },
20950 },
19853 "dependencies": {
20951 "dependencies": {
19854− "ws": {
20952+ "@walletconnect/keyvaluestorage": {
19855− "version": "7.5.3",
20953+ "version": "1.0.2",
20954+ "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz",
20955+ "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==",
19856− "requires": {}
20956+ "requires": {
20957+ "safe-json-utils": "^1.1.1",
20958+ "tslib": "1.14.1"
20959+ }
19857 }
20960 }
19858 }
20961 }
19859 },
20962 },
19860− "@walletconnect/types": {
20963+ "@web3modal/core": {
19861− "version": "1.8.0"
20964+ "version": "2.4.3",
20965+ "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-2.4.3.tgz",
20966+ "integrity": "sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg==",
20967+ "requires": {
20968+ "buffer": "6.0.3",
20969+ "valtio": "1.10.5"
20970+ }
19862 },
20971 },
19863− "@walletconnect/utils": {
20972+ "@web3modal/standalone": {
20973+ "version": "2.4.3",
20974+ "resolved": "https://registry.npmjs.org/@web3modal/standalone/-/standalone-2.4.3.tgz",
20975+ "integrity": "sha512-5ATXBoa4GGm+TIUSsKWsfWCJunv1XevOizpgTFhqyeGgRDmWhqsz9UIPzH/1mk+g0iJ/xqMKs5F6v9D2QeKxag==",
20976+ "requires": {
20977+ "@web3modal/core": "2.4.3",
20978+ "@web3modal/ui": "2.4.3"
20979+ }
20980+ },
20981+ "@web3modal/ui": {
19864− "version": "1.8.0",
20982+ "version": "2.4.3",
20983+ "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-2.4.3.tgz",
20984+ "integrity": "sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg==",
19865 "requires": {
20985 "requires": {
19866− "@walletconnect/browser-utils": "^1.8.0",
20986+ "@web3modal/core": "2.4.3",
19867− "@walletconnect/encoding": "^1.0.1",
20987+ "lit": "2.7.5",
19868− "@walletconnect/jsonrpc-utils": "^1.0.3",
20988+ "motion": "10.16.2",
19869− "@walletconnect/types": "^1.8.0",
20989+ "qrcode": "1.5.3"
19870− "bn.js": "4.11.8",
19871− "js-sha3": "0.8.0",
19872− "query-string": "6.13.5"
19873 },
20990 },
19874 "dependencies": {
20991 "dependencies": {
19875− "bn.js": {
20992+ "cliui": {
19876− "version": "4.11.8"
20993+ "version": "6.0.0",
20994+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
20995+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
20996+ "requires": {
20997+ "string-width": "^4.2.0",
20998+ "strip-ansi": "^6.0.0",
20999+ "wrap-ansi": "^6.2.0"
21000+ }
21001+ },
21002+ "emoji-regex": {
21003+ "version": "8.0.0",
21004+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
21005+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
21006+ },
21007+ "find-up": {
21008+ "version": "4.1.0",
21009+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
21010+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
21011+ "requires": {
21012+ "locate-path": "^5.0.0",
21013+ "path-exists": "^4.0.0"
21014+ }
19877 },
21015 },
19878− "js-sha3": {
21016+ "is-fullwidth-code-point": {
19879− "version": "0.8.0"
21017+ "version": "3.0.0",
21018+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
21019+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
21020+ },
21021+ "locate-path": {
21022+ "version": "5.0.0",
21023+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
21024+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
21025+ "requires": {
21026+ "p-locate": "^4.1.0"
21027+ }
21028+ },
21029+ "p-locate": {
21030+ "version": "4.1.0",
21031+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
21032+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
21033+ "requires": {
21034+ "p-limit": "^2.2.0"
21035+ }
21036+ },
21037+ "path-exists": {
21038+ "version": "4.0.0",
21039+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
21040+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
21041+ },
21042+ "pngjs": {
21043+ "version": "5.0.0",
21044+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
21045+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
21046+ },
21047+ "qrcode": {
21048+ "version": "1.5.3",
21049+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
21050+ "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
21051+ "requires": {
21052+ "dijkstrajs": "^1.0.1",
21053+ "encode-utf8": "^1.0.3",
21054+ "pngjs": "^5.0.0",
21055+ "yargs": "^15.3.1"
21056+ }
21057+ },
21058+ "string-width": {
21059+ "version": "4.2.3",
21060+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
21061+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
21062+ "requires": {
21063+ "emoji-regex": "^8.0.0",
21064+ "is-fullwidth-code-point": "^3.0.0",
21065+ "strip-ansi": "^6.0.1"
21066+ }
21067+ },
21068+ "strip-ansi": {
21069+ "version": "6.0.1",
21070+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
21071+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
21072+ "requires": {
21073+ "ansi-regex": "^5.0.1"
21074+ }
21075+ },
21076+ "wrap-ansi": {
21077+ "version": "6.2.0",
21078+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
21079+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
21080+ "requires": {
21081+ "ansi-styles": "^4.0.0",
21082+ "string-width": "^4.1.0",
21083+ "strip-ansi": "^6.0.0"
21084+ }
21085+ },
21086+ "yargs": {
21087+ "version": "15.4.1",
21088+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
21089+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
21090+ "requires": {
21091+ "cliui": "^6.0.0",
21092+ "decamelize": "^1.2.0",
21093+ "find-up": "^4.1.0",
21094+ "get-caller-file": "^2.0.1",
21095+ "require-directory": "^2.1.1",
21096+ "require-main-filename": "^2.0.0",
21097+ "set-blocking": "^2.0.0",
21098+ "string-width": "^4.2.0",
21099+ "which-module": "^2.0.0",
21100+ "y18n": "^4.0.0",
21101+ "yargs-parser": "^18.1.2"
21102+ }
21103+ },
21104+ "yargs-parser": {
21105+ "version": "18.1.3",
21106+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
21107+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
21108+ "requires": {
21109+ "camelcase": "^5.0.0",
21110+ "decamelize": "^1.2.0"
21111+ }
19880 }
21112 }
19881 }
21113 }
19882 },
21114 },
19883− "@walletconnect/window-getters": {
19884− "version": "1.0.0"
19885− },
19886− "@walletconnect/window-metadata": {
19887− "version": "1.0.0",
19888− "requires": {
19889− "@walletconnect/window-getters": "^1.0.0"
19890− }
19891− },
19892 "@welldone-software/why-did-you-render": {
21115 "@welldone-software/why-did-you-render": {
19893 "version": "3.6.0",
21116 "version": "3.6.0",
19894 "requires": {
21117 "requires": {
@@ -20160,6 +21383,11 @@
20160 "version": "2.1.2",
21383 "version": "2.1.2",
20161 "dev": true
21384 "dev": true
20162 },
21385 },
21386+ "atomic-sleep": {
21387+ "version": "1.0.0",
21388+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
21389+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="
21390+ },
20163 "available-typed-arrays": {
21391 "available-typed-arrays": {
20164 "version": "1.0.5",
21392 "version": "1.0.5",
20165 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
21393 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -20783,21 +22011,11 @@
20783 "ieee754": "^1.2.1"
22011 "ieee754": "^1.2.1"
20784 }
22012 }
20785 },
22013 },
20786− "buffer-alloc": {
20787− "version": "1.2.0",
20788− "requires": {
20789− "buffer-alloc-unsafe": "^1.1.0",
20790− "buffer-fill": "^1.0.0"
20791− }
20792− },
20793− "buffer-alloc-unsafe": {
20794− "version": "1.1.0"
20795− },
20796− "buffer-fill": {
20797− "version": "1.0.0"
20798− },
20799 "buffer-from": {
22014 "buffer-from": {
20800− "version": "1.1.2"
22015+ "version": "1.1.2",
22016+ "dev": true,
22017+ "optional": true,
22018+ "peer": true
20801 },
22019 },
20802 "buffer-to-arraybuffer": {
22020 "buffer-to-arraybuffer": {
20803 "version": "0.0.5"
22021 "version": "0.0.5"
@@ -21039,14 +22257,6 @@
21039 }
22257 }
21040 }
22258 }
21041 },
22259 },
21042− "cliui": {
21043− "version": "5.0.0",
21044− "requires": {
21045− "string-width": "^3.1.0",
21046− "strip-ansi": "^5.2.0",
21047− "wrap-ansi": "^5.1.0"
21048− }
21049− },
21050 "clone-response": {
22260 "clone-response": {
21051 "version": "1.0.2",
22261 "version": "1.0.2",
21052 "requires": {
22262 "requires": {
@@ -21340,7 +22550,9 @@
21340 "version": "1.2.0"
22550 "version": "1.2.0"
21341 },
22551 },
21342 "decode-uri-component": {
22552 "decode-uri-component": {
21343− "version": "0.2.0"
22553+ "version": "0.2.2",
22554+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
22555+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
21344 },
22556 },
21345 "decompress-response": {
22557 "decompress-response": {
21346 "version": "3.3.0",
22558 "version": "3.3.0",
@@ -21397,9 +22609,6 @@
21397 "destroy": {
22609 "destroy": {
21398 "version": "1.0.4"
22610 "version": "1.0.4"
21399 },
22611 },
21400− "detect-browser": {
21401− "version": "5.2.0"
21402− },
21403 "detect-indent": {
22612 "detect-indent": {
21404 "version": "4.0.0",
22613 "version": "4.0.0",
21405 "requires": {
22614 "requires": {
@@ -21468,6 +22677,17 @@
21468 "duplexer3": {
22677 "duplexer3": {
21469 "version": "0.1.4"
22678 "version": "0.1.4"
21470 },
22679 },
22680+ "duplexify": {
22681+ "version": "4.1.2",
22682+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
22683+ "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
22684+ "requires": {
22685+ "end-of-stream": "^1.4.1",
22686+ "inherits": "^2.0.3",
22687+ "readable-stream": "^3.1.1",
22688+ "stream-shift": "^1.0.0"
22689+ }
22690+ },
21471 "ecc-jsbn": {
22691 "ecc-jsbn": {
21472 "version": "0.1.2",
22692 "version": "0.1.2",
21473 "requires": {
22693 "requires": {
@@ -21496,8 +22716,10 @@
21496 "minimalistic-crypto-utils": "^1.0.1"
22716 "minimalistic-crypto-utils": "^1.0.1"
21497 }
22717 }
21498 },
22718 },
21499− "emoji-regex": {
22719+ "encode-utf8": {
21500− "version": "7.0.3"
22720+ "version": "1.0.3",
22721+ "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
22722+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
21501 },
22723 },
21502 "encodeurl": {
22724 "encodeurl": {
21503 "version": "1.0.2"
22725 "version": "1.0.2"
@@ -22512,6 +23734,11 @@
22512 "version": "2.0.6",
23734 "version": "2.0.6",
22513 "dev": true
23735 "dev": true
22514 },
23736 },
23737+ "fast-redact": {
23738+ "version": "3.2.0",
23739+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz",
23740+ "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw=="
23741+ },
22515 "fast-safe-stringify": {
23742 "fast-safe-stringify": {
22516 "version": "2.1.1"
23743 "version": "2.1.1"
22517 },
23744 },
@@ -22567,6 +23794,11 @@
22567 "to-regex-range": "^5.0.1"
23794 "to-regex-range": "^5.0.1"
22568 }
23795 }
22569 },
23796 },
23797+ "filter-obj": {
23798+ "version": "1.1.0",
23799+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
23800+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ=="
23801+ },
22570 "final-form": {
23802 "final-form": {
22571 "version": "4.20.2",
23803 "version": "4.20.2",
22572 "requires": {
23804 "requires": {
@@ -22595,6 +23827,7 @@
22595 },
23827 },
22596 "find-up": {
23828 "find-up": {
22597 "version": "3.0.0",
23829 "version": "3.0.0",
23830+ "dev": true,
22598 "requires": {
23831 "requires": {
22599 "locate-path": "^3.0.0"
23832 "locate-path": "^3.0.0"
22600 }
23833 }
@@ -23700,6 +24933,11 @@
23700 "minimalistic-assert": "^1.0.1"
24933 "minimalistic-assert": "^1.0.1"
23701 }
24934 }
23702 },
24935 },
24936+ "hey-listen": {
24937+ "version": "1.0.8",
24938+ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz",
24939+ "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q=="
24940+ },
23703 "hmac-drbg": {
24941 "hmac-drbg": {
23704 "version": "1.0.1",
24942 "version": "1.0.1",
23705 "requires": {
24943 "requires": {
@@ -24049,7 +25287,8 @@
24049 "version": "1.1.0"
25287 "version": "1.1.0"
24050 },
25288 },
24051 "is-fullwidth-code-point": {
25289 "is-fullwidth-code-point": {
24052− "version": "2.0.0"
25290+ "version": "2.0.0",
25291+ "dev": true
24053 },
25292 },
24054 "is-function": {
25293 "is-function": {
24055 "version": "1.0.2"
25294 "version": "1.0.2"
@@ -24501,12 +25740,41 @@
24501 "version": "1.1.6",
25740 "version": "1.1.6",
24502 "dev": true
25741 "dev": true
24503 },
25742 },
25743+ "lit": {
25744+ "version": "2.7.5",
25745+ "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz",
25746+ "integrity": "sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==",
25747+ "requires": {
25748+ "@lit/reactive-element": "^1.6.0",
25749+ "lit-element": "^3.3.0",
25750+ "lit-html": "^2.7.0"
25751+ }
25752+ },
25753+ "lit-element": {
25754+ "version": "3.3.2",
25755+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.2.tgz",
25756+ "integrity": "sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==",
25757+ "requires": {
25758+ "@lit-labs/ssr-dom-shim": "^1.1.0",
25759+ "@lit/reactive-element": "^1.3.0",
25760+ "lit-html": "^2.7.0"
25761+ }
25762+ },
25763+ "lit-html": {
25764+ "version": "2.7.5",
25765+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.5.tgz",
25766+ "integrity": "sha512-YqUzpisJodwKIlbMFCtyrp58oLloKGnnPLMJ1t23cbfIJjg/H9pvLWK4XS69YeubK5HUs1UE4ys9w5dP1zg6IA==",
25767+ "requires": {
25768+ "@types/trusted-types": "^2.0.2"
25769+ }
25770+ },
24504 "local-pkg": {
25771 "local-pkg": {
24505 "version": "0.4.2",
25772 "version": "0.4.2",
24506 "dev": true
25773 "dev": true
24507 },
25774 },
24508 "locate-path": {
25775 "locate-path": {
24509 "version": "3.0.0",
25776 "version": "3.0.0",
25777+ "dev": true,
24510 "requires": {
25778 "requires": {
24511 "p-locate": "^3.0.0",
25779 "p-locate": "^3.0.0",
24512 "path-exists": "^3.0.0"
25780 "path-exists": "^3.0.0"
@@ -24703,6 +25971,19 @@
24703 "iced-runtime": ">=0.0.1"
25971 "iced-runtime": ">=0.0.1"
24704 }
25972 }
24705 },
25973 },
25974+ "motion": {
25975+ "version": "10.16.2",
25976+ "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz",
25977+ "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==",
25978+ "requires": {
25979+ "@motionone/animation": "^10.15.1",
25980+ "@motionone/dom": "^10.16.2",
25981+ "@motionone/svelte": "^10.16.2",
25982+ "@motionone/types": "^10.15.1",
25983+ "@motionone/utils": "^10.15.1",
25984+ "@motionone/vue": "^10.16.2"
25985+ }
25986+ },
24706 "ms": {
25987 "ms": {
24707 "version": "2.0.0"
25988 "version": "2.0.0"
24708 },
25989 },
@@ -24730,6 +26011,11 @@
24730 "varint": "^5.0.0"
26011 "varint": "^5.0.0"
24731 }
26012 }
24732 },
26013 },
26014+ "multiformats": {
26015+ "version": "9.9.0",
26016+ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
26017+ "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="
26018+ },
24733 "multihashes": {
26019 "multihashes": {
24734 "version": "0.4.21",
26020 "version": "0.4.21",
24735 "requires": {
26021 "requires": {
@@ -25020,6 +26306,11 @@
25020 "unset-value": "^0.1.1"
26306 "unset-value": "^0.1.1"
25021 }
26307 }
25022 },
26308 },
26309+ "on-exit-leak-free": {
26310+ "version": "0.2.0",
26311+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz",
26312+ "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg=="
26313+ },
25023 "on-finished": {
26314 "on-finished": {
25024 "version": "2.3.0",
26315 "version": "2.3.0",
25025 "requires": {
26316 "requires": {
@@ -25075,6 +26366,7 @@
25075 },
26366 },
25076 "p-locate": {
26367 "p-locate": {
25077 "version": "3.0.0",
26368 "version": "3.0.0",
26369+ "dev": true,
25078 "requires": {
26370 "requires": {
25079 "p-limit": "^2.0.0"
26371 "p-limit": "^2.0.0"
25080 }
26372 }
@@ -25115,7 +26407,8 @@
25115 "version": "1.3.3"
26407 "version": "1.3.3"
25116 },
26408 },
25117 "path-exists": {
26409 "path-exists": {
25118− "version": "3.0.0"
26410+ "version": "3.0.0",
26411+ "dev": true
25119 },
26412 },
25120 "path-is-absolute": {
26413 "path-is-absolute": {
25121 "version": "1.0.1"
26414 "version": "1.0.1"
@@ -25175,6 +26468,38 @@
25175 "version": "3.0.0",
26468 "version": "3.0.0",
25176 "dev": true
26469 "dev": true
25177 },
26470 },
26471+ "pino": {
26472+ "version": "7.11.0",
26473+ "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz",
26474+ "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==",
26475+ "requires": {
26476+ "atomic-sleep": "^1.0.0",
26477+ "fast-redact": "^3.0.0",
26478+ "on-exit-leak-free": "^0.2.0",
26479+ "pino-abstract-transport": "v0.5.0",
26480+ "pino-std-serializers": "^4.0.0",
26481+ "process-warning": "^1.0.0",
26482+ "quick-format-unescaped": "^4.0.3",
26483+ "real-require": "^0.1.0",
26484+ "safe-stable-stringify": "^2.1.0",
26485+ "sonic-boom": "^2.2.1",
26486+ "thread-stream": "^0.15.1"
26487+ }
26488+ },
26489+ "pino-abstract-transport": {
26490+ "version": "0.5.0",
26491+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz",
26492+ "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==",
26493+ "requires": {
26494+ "duplexify": "^4.1.2",
26495+ "split2": "^4.0.0"
26496+ }
26497+ },
26498+ "pino-std-serializers": {
26499+ "version": "4.0.0",
26500+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz",
26501+ "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q=="
26502+ },
25178 "please-upgrade-node": {
26503 "please-upgrade-node": {
25179 "version": "3.2.0",
26504 "version": "3.2.0",
25180 "dev": true,
26505 "dev": true,
@@ -25182,18 +26507,12 @@
25182 "semver-compare": "^1.0.0"
26507 "semver-compare": "^1.0.0"
25183 }
26508 }
25184 },
26509 },
25185− "pngjs": {
25186− "version": "3.4.0"
25187− },
25188 "pnglib": {
26510 "pnglib": {
25189 "version": "0.0.1"
26511 "version": "0.0.1"
25190 },
26512 },
25191 "postcss-value-parser": {
26513 "postcss-value-parser": {
25192 "version": "4.1.0"
26514 "version": "4.1.0"
25193 },
26515 },
25194− "preact": {
25195− "version": "10.4.1"
25196− },
25197 "prelude-ls": {
26516 "prelude-ls": {
25198 "version": "1.1.2",
26517 "version": "1.1.2",
25199 "dev": true,
26518 "dev": true,
@@ -25236,6 +26555,11 @@
25236 "process": {
26555 "process": {
25237 "version": "0.11.10"
26556 "version": "0.11.10"
25238 },
26557 },
26558+ "process-warning": {
26559+ "version": "1.0.0",
26560+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz",
26561+ "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q=="
26562+ },
25239 "prop-types": {
26563 "prop-types": {
25240 "version": "15.8.1",
26564 "version": "15.8.1",
25241 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
26565 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -25253,6 +26577,11 @@
25253 "ipaddr.js": "1.9.1"
26577 "ipaddr.js": "1.9.1"
25254 }
26578 }
25255 },
26579 },
26580+ "proxy-compare": {
26581+ "version": "2.5.1",
26582+ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz",
26583+ "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA=="
26584+ },
25256 "pseudomap": {
26585 "pseudomap": {
25257 "version": "1.0.2",
26586 "version": "1.0.2",
25258 "dev": true
26587 "dev": true
@@ -25287,49 +26616,20 @@
25287 "bitcoin-ops": "^1.3.0"
26616 "bitcoin-ops": "^1.3.0"
25288 }
26617 }
25289 },
26618 },
25290− "qrcode": {
25291− "version": "1.4.4",
25292− "requires": {
25293− "buffer": "^5.4.3",
25294− "buffer-alloc": "^1.2.0",
25295− "buffer-from": "^1.1.1",
25296− "dijkstrajs": "^1.0.1",
25297− "isarray": "^2.0.1",
25298− "pngjs": "^3.3.0",
25299− "yargs": "^13.2.4"
25300− },
25301− "dependencies": {
25302− "buffer": {
25303− "version": "5.7.1",
25304− "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
25305− "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
25306− "requires": {
25307− "base64-js": "^1.3.1",
25308− "ieee754": "^1.1.13"
25309− }
25310− },
25311− "isarray": {
25312− "version": "2.0.5"
25313− }
25314− }
25315− },
25316 "qs": {
26619 "qs": {
25317 "version": "6.7.0"
26620 "version": "6.7.0"
25318 },
26621 },
25319− "query-string": {
25320− "version": "6.13.5",
25321− "requires": {
25322− "decode-uri-component": "^0.2.0",
25323− "split-on-first": "^1.0.0",
25324− "strict-uri-encode": "^2.0.0"
25325− }
25326− },
25327 "queue-microtask": {
26622 "queue-microtask": {
25328 "version": "1.2.3",
26623 "version": "1.2.3",
25329 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
26624 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
25330 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
26625 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
25331 "dev": true
26626 "dev": true
25332 },
26627 },
26628+ "quick-format-unescaped": {
26629+ "version": "4.0.4",
26630+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
26631+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
26632+ },
25333 "quick-lru": {
26633 "quick-lru": {
25334 "version": "5.1.1",
26634 "version": "5.1.1",
25335 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
26635 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
@@ -25436,6 +26736,11 @@
25436 "picomatch": "^2.2.1"
26736 "picomatch": "^2.2.1"
25437 }
26737 }
25438 },
26738 },
26739+ "real-require": {
26740+ "version": "0.1.0",
26741+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
26742+ "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg=="
26743+ },
25439 "redent": {
26744 "redent": {
25440 "version": "3.0.0",
26745 "version": "3.0.0",
25441 "dev": true,
26746 "dev": true,
@@ -25701,6 +27006,11 @@
25701 "safe-buffer": {
27006 "safe-buffer": {
25702 "version": "5.2.1"
27007 "version": "5.2.1"
25703 },
27008 },
27009+ "safe-json-utils": {
27010+ "version": "1.1.1",
27011+ "resolved": "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.1.1.tgz",
27012+ "integrity": "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ=="
27013+ },
25704 "safe-regex-test": {
27014 "safe-regex-test": {
25705 "version": "1.0.0",
27015 "version": "1.0.0",
25706 "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
27016 "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
@@ -25711,6 +27021,11 @@
25711 "is-regex": "^1.1.4"
27021 "is-regex": "^1.1.4"
25712 }
27022 }
25713 },
27023 },
27024+ "safe-stable-stringify": {
27025+ "version": "2.4.3",
27026+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
27027+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g=="
27028+ },
25714 "safer-buffer": {
27029 "safer-buffer": {
25715 "version": "2.1.2"
27030 "version": "2.1.2"
25716 },
27031 },
@@ -26009,6 +27324,14 @@
26009 "slash": {
27324 "slash": {
26010 "version": "1.0.0"
27325 "version": "1.0.0"
26011 },
27326 },
27327+ "sonic-boom": {
27328+ "version": "2.8.0",
27329+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz",
27330+ "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==",
27331+ "requires": {
27332+ "atomic-sleep": "^1.0.0"
27333+ }
27334+ },
26012 "source-map": {
27335 "source-map": {
26013 "version": "0.5.7"
27336 "version": "0.5.7"
26014 },
27337 },
@@ -26153,6 +27476,11 @@
26153 "split-on-first": {
27476 "split-on-first": {
26154 "version": "1.1.0"
27477 "version": "1.1.0"
26155 },
27478 },
27479+ "split2": {
27480+ "version": "4.2.0",
27481+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
27482+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="
27483+ },
26156 "sprintf-js": {
27484 "sprintf-js": {
26157 "version": "1.0.3",
27485 "version": "1.0.3",
26158 "dev": true
27486 "dev": true
@@ -26184,6 +27512,11 @@
26184 "readable-stream": "^3.5.0"
27512 "readable-stream": "^3.5.0"
26185 }
27513 }
26186 },
27514 },
27515+ "stream-shift": {
27516+ "version": "1.0.1",
27517+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
27518+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
27519+ },
26187 "strict-event-emitter-types": {
27520 "strict-event-emitter-types": {
26188 "version": "2.0.0"
27521 "version": "2.0.0"
26189 },
27522 },
@@ -26202,14 +27535,6 @@
26202 "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
27535 "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
26203 "dev": true
27536 "dev": true
26204 },
27537 },
26205− "string-width": {
26206− "version": "3.1.0",
26207− "requires": {
26208− "emoji-regex": "^7.0.1",
26209− "is-fullwidth-code-point": "^2.0.0",
26210− "strip-ansi": "^5.1.0"
26211− }
26212− },
26213 "string.prototype.matchall": {
27538 "string.prototype.matchall": {
26214 "version": "4.0.8",
27539 "version": "4.0.8",
26215 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
27540 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
@@ -26255,17 +27580,6 @@
26255 "es-abstract": "^1.19.5"
27580 "es-abstract": "^1.19.5"
26256 }
27581 }
26257 },
27582 },
26258− "strip-ansi": {
26259− "version": "5.2.0",
26260− "requires": {
26261− "ansi-regex": "^4.1.0"
26262− },
26263− "dependencies": {
26264− "ansi-regex": {
26265− "version": "4.1.0"
26266− }
26267− }
26268− },
26269 "strip-bom": {
27583 "strip-bom": {
26270 "version": "3.0.0",
27584 "version": "3.0.0",
26271 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
27585 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -26575,6 +27889,14 @@
26575 "version": "0.2.0",
27889 "version": "0.2.0",
26576 "dev": true
27890 "dev": true
26577 },
27891 },
27892+ "thread-stream": {
27893+ "version": "0.15.2",
27894+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz",
27895+ "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==",
27896+ "requires": {
27897+ "real-require": "^0.1.0"
27898+ }
27899+ },
26578 "timed-out": {
27900 "timed-out": {
26579 "version": "4.0.1"
27901 "version": "4.0.1"
26580 },
27902 },
@@ -26725,6 +28047,14 @@
26725 "ua-parser-js": {
28047 "ua-parser-js": {
26726 "version": "0.7.28"
28048 "version": "0.7.28"
26727 },
28049 },
28050+ "uint8arrays": {
28051+ "version": "3.1.1",
28052+ "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz",
28053+ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==",
28054+ "requires": {
28055+ "multiformats": "^9.4.2"
28056+ }
28057+ },
26728 "ultron": {
28058 "ultron": {
26729 "version": "1.1.1"
28059 "version": "1.1.1"
26730 },
28060 },
@@ -26907,6 +28237,12 @@
26907 "url-to-options": {
28237 "url-to-options": {
26908 "version": "1.0.1"
28238 "version": "1.0.1"
26909 },
28239 },
28240+ "use-sync-external-store": {
28241+ "version": "1.2.0",
28242+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
28243+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
28244+ "requires": {}
28245+ },
26910 "utf-8-validate": {
28246 "utf-8-validate": {
26911 "version": "5.0.5",
28247 "version": "5.0.5",
26912 "requires": {
28248 "requires": {
@@ -26943,6 +28279,15 @@
26943 "spdx-expression-parse": "^3.0.0"
28279 "spdx-expression-parse": "^3.0.0"
26944 }
28280 }
26945 },
28281 },
28282+ "valtio": {
28283+ "version": "1.10.5",
28284+ "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.10.5.tgz",
28285+ "integrity": "sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==",
28286+ "requires": {
28287+ "proxy-compare": "2.5.1",
28288+ "use-sync-external-store": "1.2.0"
28289+ }
28290+ },
26946 "varint": {
28291 "varint": {
26947 "version": "5.0.2"
28292 "version": "5.0.2"
26948 },
28293 },
@@ -27650,36 +28995,13 @@
27650 "optional": true,
28995 "optional": true,
27651 "peer": true
28996 "peer": true
27652 },
28997 },
27653− "wrap-ansi": {
27654− "version": "5.1.0",
27655− "requires": {
27656− "ansi-styles": "^3.2.0",
27657− "string-width": "^3.0.0",
27658− "strip-ansi": "^5.0.0"
27659− },
27660− "dependencies": {
27661− "ansi-styles": {
27662− "version": "3.2.1",
27663− "requires": {
27664− "color-convert": "^1.9.0"
27665− }
27666− },
27667− "color-convert": {
27668− "version": "1.9.3",
27669− "requires": {
27670− "color-name": "1.1.3"
27671− }
27672− },
27673− "color-name": {
27674− "version": "1.1.3"
27675− }
27676− }
27677− },
27678 "wrappy": {
28998 "wrappy": {
27679 "version": "1.0.2"
28999 "version": "1.0.2"
27680 },
29000 },
27681 "ws": {
29001 "ws": {
27682− "version": "7.4.6",
29002+ "version": "7.5.9",
29003+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
29004+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
27683 "requires": {}
29005 "requires": {}
27684 },
29006 },
27685 "xhr": {
29007 "xhr": {
@@ -27759,28 +29081,6 @@
27759 "version": "1.10.2",
29081 "version": "1.10.2",
27760 "dev": true
29082 "dev": true
27761 },
29083 },
27762− "yargs": {
27763− "version": "13.3.2",
27764− "requires": {
27765− "cliui": "^5.0.0",
27766− "find-up": "^3.0.0",
27767− "get-caller-file": "^2.0.1",
27768− "require-directory": "^2.1.1",
27769− "require-main-filename": "^2.0.0",
27770− "set-blocking": "^2.0.0",
27771− "string-width": "^3.0.0",
27772− "which-module": "^2.0.0",
27773− "y18n": "^4.0.0",
27774− "yargs-parser": "^13.1.2"
27775− }
27776− },
27777− "yargs-parser": {
27778− "version": "13.1.2",
27779− "requires": {
27780− "camelcase": "^5.0.0",
27781− "decamelize": "^1.2.0"
27782− }
27783− },
27784 "yocto-queue": {
29084 "yocto-queue": {
27785 "version": "0.1.0",
29085 "version": "0.1.0",
27786 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
29086 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
package.json+5−3
@@ -36,8 +36,10 @@
36 "@types/styled-system__css": "^5.0.15",
36 "@types/styled-system__css": "^5.0.15",
37 "@urbit/nockjs": "^0.0.1",
37 "@urbit/nockjs": "^0.0.1",
38 "@urbit/roller-api": "^0.1.15",
38 "@urbit/roller-api": "^0.1.15",
39− "@walletconnect/client": "^1.8.0",
39+ "@walletconnect/encoding": "^1.0.2",
40+ "@walletconnect/sign-client": "^2.7.6",
40− "@walletconnect/qrcode-modal": "^1.8.0",
41+ "@walletconnect/types": "^2.7.6",
42+ "@web3modal/standalone": "^2.4.1",
41 "@welldone-software/why-did-you-render": "^3.2.3",
43 "@welldone-software/why-did-you-render": "^3.2.3",
42 "agent-base": "^6.0.2",
44 "agent-base": "^6.0.2",
43 "async-retry": "^1.2.3",
45 "async-retry": "^1.2.3",
@@ -163,4 +165,4 @@
163 "pre-commit": "npm-run-all lint:check"
165 "pre-commit": "npm-run-all lint:check"
164 }
166 }
165 }
167 }
166−}
168+}
src/components/L2/Dropdowns/FeeDropdown.tsx+11−7
@@ -25,11 +25,15 @@ export default function FeeDropdown({
25}: {
25}: {
26 setGasPrice: (g: GasPriceData) => void;
26 setGasPrice: (g: GasPriceData) => void;
27}) {
27}) {
28+ const {
28− const { suggestedGasPrices }: { suggestedGasPrices: {
29+ suggestedGasPrices,
30+ }: {
31+ suggestedGasPrices: {
29− fast: GasPriceData,
32+ fast: GasPriceData;
30− average: GasPriceData,
33+ average: GasPriceData;
31− low: GasPriceData,
34+ low: GasPriceData;
35+ };
32− }} = useGasPrice(DEFAULT_GAS_PRICE_GWEI);
36+ } = useGasPrice(DEFAULT_GAS_PRICE_GWEI);
33
37
34 const [open, setOpen] = useState(false);
38 const [open, setOpen] = useState(false);
35 const [useCustom, setUseCustom] = useState(false);
39 const [useCustom, setUseCustom] = useState(false);
@@ -58,12 +62,12 @@ export default function FeeDropdown({
58 customWait = `< ${fast.wait}`;
62 customWait = `< ${fast.wait}`;
59 }
63 }
60
64
61− setSelected({
65+ setSelected({
62 price: cleanedNum,
66 price: cleanedNum,
63 wait: customWait,
67 wait: customWait,
64 maxFeePerGas: cleanedNum,
68 maxFeePerGas: cleanedNum,
65 maxPriorityFeePerGas: cleanedNum,
69 maxPriorityFeePerGas: cleanedNum,
66− suggestedBaseFeePerGas: cleanedNum
70+ suggestedBaseFeePerGas: cleanedNum,
67 });
71 });
68 };
72 };
69
73
src/components/L2/InviteConverter.tsx+1−1
@@ -99,7 +99,7 @@ export const InviteConverter = ({ points }: InviteConverterProps) => {
99 }
99 }
100
100
101 collect();
101 collect();
102− }, [points]);
102+ }, [points, api]);
103
103
104 const selectChildren = useCallback(
104 const selectChildren = useCallback(
105 (children: Point[]) => {
105 (children: Point[]) => {
src/lib/WalletConnect.ts+11−3
@@ -1,9 +1,13 @@
1−import { ITxData } from '@walletconnect/types';
1+import {
2+ JsonTx,
3+ Transaction,
2−import { JsonTx, Transaction, FeeMarketEIP1559Transaction as EIP1559Transaction } from '@ethereumjs/tx';
4+ FeeMarketEIP1559Transaction as EIP1559Transaction,
5+} from '@ethereumjs/tx';
3import { stripHexPrefix } from './utils/address';
6import { stripHexPrefix } from './utils/address';
4import { FakeSignableTx, FakeSignResult } from './txn';
7import { FakeSignableTx, FakeSignResult } from './txn';
5import Web3 from 'web3';
8import Web3 from 'web3';
6import { EIP1559_TRANSACTION_TYPE } from './constants';
9import { EIP1559_TRANSACTION_TYPE } from './constants';
10+import { ITxData } from './types/ITxData';
7
11
8type SignWalletConnectTransactionArgs = {
12type SignWalletConnectTransactionArgs = {
9 from: string;
13 from: string;
@@ -31,9 +35,13 @@ const walletConnectSignTransaction = async ({
31 try {
35 try {
32 signature = await txnSigner(wcFormattedTx);
36 signature = await txnSigner(wcFormattedTx);
33 } catch (e) {
37 } catch (e) {
38+ if (
39+ e.message === 'METHOD_NOT_SUPPORTED' ||
34− if (e.message === 'METHOD_NOT_SUPPORTED' || e.message === '"eth_signTransaction" not implemented') {
40+ e.message === '"eth_signTransaction" not implemented'
41+ ) {
35 console.log('connected wc wallet does not support tx signing.');
42 console.log('connected wc wallet does not support tx signing.');
36 return FakeSignResult(
43 return FakeSignResult(
44+ //@ts-ignore
37 wcFormattedTx,
45 wcFormattedTx,
38 //@ts-ignore // TODO
46 //@ts-ignore // TODO
39 walletConnectSendTransaction(txnSender)
47 walletConnectSendTransaction(txnSender)
src/lib/authToken.ts+6−7
@@ -2,7 +2,6 @@ import { crypto } from 'bitcoinjs-lib';
2import { ecdsaSign } from 'secp256k1';
2import { ecdsaSign } from 'secp256k1';
3import Web3 from 'web3';
3import Web3 from 'web3';
4import { hexToBytes } from 'web3-utils';
4import { hexToBytes } from 'web3-utils';
5−import WalletConnect from '@walletconnect/client';
6import { hashPersonalMessage } from '@ethereumjs/util';
5import { hashPersonalMessage } from '@ethereumjs/util';
7import { WALLET_TYPES } from './constants';
6import { WALLET_TYPES } from './constants';
8import BridgeWallet from './types/BridgeWallet';
7import BridgeWallet from './types/BridgeWallet';
@@ -14,10 +13,10 @@ function signMessage(privateKey: Buffer, useLegacyTokenSigning = false) {
14 const msg = '\x19Ethereum Signed Message:\n' + MESSAGE.length + MESSAGE;
13 const msg = '\x19Ethereum Signed Message:\n' + MESSAGE.length + MESSAGE;
15 const hashed = useLegacyTokenSigning
14 const hashed = useLegacyTokenSigning
16 ? crypto.sha256(Buffer.from(msg))
15 ? crypto.sha256(Buffer.from(msg))
17− : hashPersonalMessage(Buffer.from(MESSAGE)) // msg prefix is handled by lib
16+ : hashPersonalMessage(Buffer.from(MESSAGE)); // msg prefix is handled by lib
18
17
19 const hashAry = new Uint8Array(hashed.buffer);
18 const hashAry = new Uint8Array(hashed.buffer);
20− const { signature, recid: _recid } = ecdsaSign(hashAry, privateKey);
19+ const { signature } = ecdsaSign(hashAry, privateKey);
21
20
22 // add key recovery parameter
21 // add key recovery parameter
23 const ethSignature = new Uint8Array(65);
22 const ethSignature = new Uint8Array(65);
@@ -56,7 +55,7 @@ type MetamaskAuthTokenArgs = {
56
55
57type WalletConnectAuthTokenArgs = {
56type WalletConnectAuthTokenArgs = {
58 address: string;
57 address: string;
59− connector: WalletConnect;
58+ signPersonalMessage: Function;
60 walletType: symbol;
59 walletType: symbol;
61};
60};
62
61
@@ -87,11 +86,11 @@ const getMetamaskAuthToken = ({ address, web3 }: MetamaskAuthTokenArgs) => {
87 }
86 }
88};
87};
89
88
90−const getWalletConnectAuthToken = ({
89+const getWalletConnectAuthToken = async ({
91 address,
90 address,
92− connector,
91+ signPersonalMessage,
93}: WalletConnectAuthTokenArgs) => {
92}: WalletConnectAuthTokenArgs) => {
94− return connector.signPersonalMessage([MESSAGE, address]);
93+ return await signPersonalMessage({ message: MESSAGE, address: address });
95};
94};
96
95
97const getDefaultAuthToken = ({
96const getDefaultAuthToken = ({
src/lib/constants.ts+1−1
@@ -281,5 +281,5 @@ export {
281 LOCKUP_TOOLTIP,
281 LOCKUP_TOOLTIP,
282 INITIAL_NETWORK_KEY_REVISION,
282 INITIAL_NETWORK_KEY_REVISION,
283 ETHEREUM_MAINNET_CHAIN_ID,
283 ETHEREUM_MAINNET_CHAIN_ID,
284− ETHEREUM_GOERLI_CHAIN_ID
284+ ETHEREUM_GOERLI_CHAIN_ID,
285};
285};
src/lib/getSuggestedGasPrice.js+41−28
@@ -7,14 +7,15 @@ import Web3 from 'web3';
7// we don't want to charge users more than the gas tank funds
7// we don't want to charge users more than the gas tank funds
8const minGas = gas => Math.min(Math.ceil(gas), MAX_GAS_PRICE_GWEI);
8const minGas = gas => Math.min(Math.ceil(gas), MAX_GAS_PRICE_GWEI);
9
9
10−const feeToInt = (f) => f < 1 ? 1 : Math.round(f);
10+const feeToInt = f => (f < 1 ? 1 : Math.round(f));
11
11
12−const feeToWei = (fee) => Web3.utils.toHex(Web3.utils.toWei(String(fee), 'gwei' ))
12+const feeToWei = fee => Web3.utils.toHex(Web3.utils.toWei(String(fee), 'gwei'));
13
13
14−const calculateMaxFee = (baseFee, maxPriorityFee) => feeToWei(Math.round((2 * baseFee) + maxPriorityFee))
14+const calculateMaxFee = (baseFee, maxPriorityFee) =>
15+ feeToWei(Math.round(2 * baseFee + maxPriorityFee));
15
16
16// Convert seconds to minutes prettily
17// Convert seconds to minutes prettily
17−const formatWait = (wait) => Math.round((wait * 100) / 60) / 100;
18+const formatWait = wait => Math.round((wait * 100) / 60) / 100;
18
19
19export const defaultGasValues = value => ({
20export const defaultGasValues = value => ({
20 fast: {
21 fast: {
@@ -22,25 +23,25 @@ export const defaultGasValues = value => ({
22 wait: '1',
23 wait: '1',
23 maxFeePerGas: value,
24 maxFeePerGas: value,
24 maxPriorityFeePerGas: 1,
25 maxPriorityFeePerGas: 1,
25− suggestedBaseFeePerGas: value > 2 ? value -1 : 1,
26+ suggestedBaseFeePerGas: value > 2 ? value - 1 : 1,
26 },
27 },
27 average: {
28 average: {
28 price: value,
29 price: value,
29 wait: '1',
30 wait: '1',
30 maxFeePerGas: value,
31 maxFeePerGas: value,
31 maxPriorityFeePerGas: 1,
32 maxPriorityFeePerGas: 1,
32− suggestedBaseFeePerGas: value > 2 ? value -1 : 1,
33+ suggestedBaseFeePerGas: value > 2 ? value - 1 : 1,
33 },
34 },
34 low: {
35 low: {
35 price: value,
36 price: value,
36 wait: '1',
37 wait: '1',
37 maxFeePerGas: value,
38 maxFeePerGas: value,
38 maxPriorityFeePerGas: 1,
39 maxPriorityFeePerGas: 1,
39− suggestedBaseFeePerGas: value > 2 ? value -1 : 1,
40+ suggestedBaseFeePerGas: value > 2 ? value - 1 : 1,
40 },
41 },
41});
42});
42
43
43−const getGasForNetwork = async (providerUrl) => {
44+const getGasForNetwork = async providerUrl => {
44 try {
45 try {
45 const [feeResponse, waitResponse] = await Promise.all([
46 const [feeResponse, waitResponse] = await Promise.all([
46 fetch(
47 fetch(
@@ -53,19 +54,16 @@ const getGasForNetwork = async (providerUrl) => {
53 cache: 'no-cache',
54 cache: 'no-cache',
54 }
55 }
55 ),
56 ),
56− fetch(
57− 'https://ethereum-api.xyz/gas-prices',
57+ fetch('https://ethereum-api.xyz/gas-prices', {
58− {
59− method: 'GET',
58+ method: 'GET',
60− cache: 'no-cache',
59+ cache: 'no-cache',
61− }
60+ }),
62− )
63 ]);
61 ]);
64
62
65 const [feeJson, waitJson] = await Promise.all([
63 const [feeJson, waitJson] = await Promise.all([
66 feeResponse.json(),
64 feeResponse.json(),
67− waitResponse.json()
65+ waitResponse.json(),
68− ])
66+ ]);
69
67
70 const suggestedBaseFeePerGas = Number(feeJson.result.suggestBaseFee);
68 const suggestedBaseFeePerGas = Number(feeJson.result.suggestBaseFee);
71
69
@@ -75,35 +73,50 @@ const getGasForNetwork = async (providerUrl) => {
75 fast: {
73 fast: {
76 price: minGas(feeJson.result.FastGasPrice),
74 price: minGas(feeJson.result.FastGasPrice),
77 wait: formatWait(waitJson.result.fast.time),
75 wait: formatWait(waitJson.result.fast.time),
76+ maxFeePerGas: calculateMaxFee(
77+ suggestedBaseFeePerGas,
78− maxFeePerGas: calculateMaxFee(suggestedBaseFeePerGas, feeJson.result.FastGasPrice - suggestedBaseFeePerGas),
78+ feeJson.result.FastGasPrice - suggestedBaseFeePerGas
79+ ),
80+ maxPriorityFeePerGas: feeToInt(
79− maxPriorityFeePerGas: feeToInt((feeJson.result.FastGasPrice - suggestedBaseFeePerGas)),
81+ feeJson.result.FastGasPrice - suggestedBaseFeePerGas
82+ ),
80− suggestedBaseFeePerGas
83+ suggestedBaseFeePerGas,
81 },
84 },
82 average: {
85 average: {
83 price: minGas(feeJson.result.ProposeGasPrice),
86 price: minGas(feeJson.result.ProposeGasPrice),
84 wait: formatWait(waitJson.result.average.time),
87 wait: formatWait(waitJson.result.average.time),
88+ maxFeePerGas: calculateMaxFee(
89+ suggestedBaseFeePerGas,
85− maxFeePerGas: calculateMaxFee(suggestedBaseFeePerGas, feeJson.result.ProposeGasPrice - suggestedBaseFeePerGas),
90+ feeJson.result.ProposeGasPrice - suggestedBaseFeePerGas
91+ ),
92+ maxPriorityFeePerGas: feeToInt(
86− maxPriorityFeePerGas: feeToInt((feeJson.result.ProposeGasPrice - suggestedBaseFeePerGas)),
93+ feeJson.result.ProposeGasPrice - suggestedBaseFeePerGas
94+ ),
87− suggestedBaseFeePerGas
95+ suggestedBaseFeePerGas,
88 },
96 },
89 low: {
97 low: {
90 price: minGas(feeJson.result.SafeGasPrice),
98 price: minGas(feeJson.result.SafeGasPrice),
91 wait: formatWait(waitJson.result.slow.time),
99 wait: formatWait(waitJson.result.slow.time),
100+ maxFeePerGas: calculateMaxFee(
101+ suggestedBaseFeePerGas,
92− maxFeePerGas: calculateMaxFee(suggestedBaseFeePerGas, feeJson.result.SafeGasPrice - suggestedBaseFeePerGas),
102+ feeJson.result.SafeGasPrice - suggestedBaseFeePerGas
103+ ),
104+ maxPriorityFeePerGas: feeToInt(
93− maxPriorityFeePerGas: feeToInt((feeJson.result.SafeGasPrice - suggestedBaseFeePerGas)),
105+ feeJson.result.SafeGasPrice - suggestedBaseFeePerGas
106+ ),
94− suggestedBaseFeePerGas
107+ suggestedBaseFeePerGas,
95 },
108 },
96 };
109 };
97 } catch (e) {
110 } catch (e) {
98 console.warn(e);
111 console.warn(e);
99 return defaultGasValues(DEFAULT_GAS_PRICE_GWEI);
112 return defaultGasValues(DEFAULT_GAS_PRICE_GWEI);
100 }
113 }
101−}
114+};
102
115
103export default async function getSuggestedGasPrice(networkType) {
116export default async function getSuggestedGasPrice(networkType) {
104 switch (networkType) {
117 switch (networkType) {
105 case NETWORK_TYPES.GOERLI:
118 case NETWORK_TYPES.GOERLI:
106− return getGasForNetwork('https://api-goerli.etherscan.io')
119+ return getGasForNetwork('https://api-goerli.etherscan.io');
107 case NETWORK_TYPES.OFFLINE:
120 case NETWORK_TYPES.OFFLINE:
108 return defaultGasValues(DEFAULT_GAS_PRICE_GWEI);
121 return defaultGasValues(DEFAULT_GAS_PRICE_GWEI);
109 case NETWORK_TYPES.LOCAL:
122 case NETWORK_TYPES.LOCAL:
src/lib/metamask.ts+6−5
@@ -1,6 +1,5 @@
1−import { FeeMarketEIP1559Transaction as EIP1559Transaction, JsonTx } from '@ethereumjs/tx';
1+import { FeeMarketEIP1559Transaction as EIP1559Transaction } from '@ethereumjs/tx';
2import Web3 from 'web3';
2import Web3 from 'web3';
3−import { toHex } from 'web3-utils';
4import { FakeSignableTx, FakeSignResult } from './txn';
3import { FakeSignableTx, FakeSignResult } from './txn';
5
4
6export class MetamaskWallet {
5export class MetamaskWallet {
@@ -19,14 +18,16 @@ export const metamaskSignTransaction = async (txn: EIP1559Transaction) => {
19
18
20const metamaskSendTransaction = async (txn: FakeSignableTx, web3: Web3) => {
19const metamaskSendTransaction = async (txn: FakeSignableTx, web3: Web3) => {
21 /**
20 /**
22− * Depending which version of Metamask is installed, there are different
21+ * Depending which version of Metamask is installed, there are different
23 * approaches to get the `from` address.
22 * approaches to get the `from` address.
24 */
23 */
25 let from = null;
24 let from = null;
26 if (window.ethereum) {
25 if (window.ethereum) {
27 from = window.ethereum.selectedAddress;
26 from = window.ethereum.selectedAddress;
28 if (!from) {
27 if (!from) {
29− const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
28+ const accounts = await window.ethereum.request({
29+ method: 'eth_requestAccounts',
30+ });
30 from = accounts[0] ?? null;
31 from = accounts[0] ?? null;
31 }
32 }
32 } else if (window.web3) {
33 } else if (window.web3) {
@@ -53,7 +54,7 @@ const metamaskSendTransaction = async (txn: FakeSignableTx, web3: Web3) => {
53 value,
54 value,
54 data,
55 data,
55 maxPriorityFeePerGas,
56 maxPriorityFeePerGas,
56− maxFeePerGas
57+ maxFeePerGas,
57 };
58 };
58
59
59 let txHash;
60 let txHash;
src/lib/network.js+12−4
@@ -1,5 +1,8 @@
1−import { isMainnet } from "./flags";
1+import { isMainnet } from './flags';
2+import {
3+ ETHEREUM_GOERLI_CHAIN_ID,
2−import { ETHEREUM_GOERLI_CHAIN_ID, ETHEREUM_MAINNET_CHAIN_ID, } from './constants';
4+ ETHEREUM_MAINNET_CHAIN_ID,
5+} from './constants';
3
6
4const NETWORK_TYPES = {
7const NETWORK_TYPES = {
5 OFFLINE: Symbol('OFFLINE'),
8 OFFLINE: Symbol('OFFLINE'),
@@ -32,6 +35,11 @@ const chainIdToNetworkType = chainId => {
32
35
33const expectedChainId = () => {
36const expectedChainId = () => {
34 return isMainnet ? ETHEREUM_MAINNET_CHAIN_ID : ETHEREUM_GOERLI_CHAIN_ID;
37 return isMainnet ? ETHEREUM_MAINNET_CHAIN_ID : ETHEREUM_GOERLI_CHAIN_ID;
35−}
38+};
36
39
40+export {
41+ NETWORK_TYPES,
42+ expectedChainId,
43+ renderNetworkType,
37−export { NETWORK_TYPES, expectedChainId, renderNetworkType, chainIdToNetworkType };
44+ chainIdToNetworkType,
45+};
src/lib/reticket.js+1−3
@@ -146,9 +146,7 @@ export async function reticketPointBetweenWallets({
146
146
147 progress(TRANSACTION_PROGRESS.SIGNING);
147 progress(TRANSACTION_PROGRESS.SIGNING);
148
148
149− const gasPriceData = (
150− await getSuggestedGasPrice(networkType)
149+ const gasPriceData = (await getSuggestedGasPrice(networkType)).average;
151− ).average;
152 const gasPriceGwei = gasPriceData.price.toFixed();
150 const gasPriceGwei = gasPriceData.price.toFixed();
153 const chainId = await web3.eth.net.getId();
151 const chainId = await web3.eth.net.getId();
154 const gasPriceWeiBN = toBN(safeToWei(gasPriceGwei, 'gwei'));
152 const gasPriceWeiBN = toBN(safeToWei(gasPriceGwei, 'gwei'));
src/lib/txn.ts+39−20
@@ -1,17 +1,25 @@
1import { Common, Chain, Hardfork } from '@ethereumjs/common';
1import { Common, Chain, Hardfork } from '@ethereumjs/common';
2+import {
2−import { Transaction, FeeMarketEIP1559Transaction as EIP1559Transaction, TxOptions, TxData, FeeMarketEIP1559TxData as EIP1559TxData } from '@ethereumjs/tx';
3+ FeeMarketEIP1559Transaction as EIP1559Transaction,
3−import { ITxData } from '@walletconnect/types';
4+ TxOptions,
5+ FeeMarketEIP1559TxData as EIP1559TxData,
6+} from '@ethereumjs/tx';
4import { toHex, toWei } from 'web3-utils';
7import { toHex, toWei } from 'web3-utils';
5import retry from 'async-retry';
8import retry from 'async-retry';
6import { NETWORK_TYPES } from './network';
9import { NETWORK_TYPES } from './network';
7import { walletConnectSignTransaction } from './WalletConnect';
10import { walletConnectSignTransaction } from './WalletConnect';
8import { metamaskSignTransaction } from './metamask';
11import { metamaskSignTransaction } from './metamask';
9import { addHexPrefix } from './utils/address';
12import { addHexPrefix } from './utils/address';
13+import {
14+ CHECK_BLOCK_EVERY_MS,
10−import { CHECK_BLOCK_EVERY_MS, EIP1559_TRANSACTION_TYPE, WALLET_TYPES } from './constants';
15+ EIP1559_TRANSACTION_TYPE,
16+ WALLET_TYPES,
17+} from './constants';
11import Web3 from 'web3';
18import Web3 from 'web3';
12import { TransactionConfig, TransactionReceipt } from 'web3-core';
19import { TransactionConfig, TransactionReceipt } from 'web3-core';
13import BridgeWallet from './types/BridgeWallet';
20import BridgeWallet from './types/BridgeWallet';
14import { GasPriceData } from 'components/L2/Dropdowns/FeeDropdown';
21import { GasPriceData } from 'components/L2/Dropdowns/FeeDropdown';
22+import { ITxData } from './types/ITxData';
15
23
16const RETRY_OPTIONS = {
24const RETRY_OPTIONS = {
17 retries: 99999,
25 retries: 99999,
@@ -45,7 +53,7 @@ interface signTransactionProps {
45 walletType: symbol;
53 walletType: symbol;
46 walletHdPath: string; // TODO: is this still needed?
54 walletHdPath: string; // TODO: is this still needed?
47 networkType: symbol;
55 networkType: symbol;
48− txn: { data: string, to: string, value: number }
56+ txn: { data: string; to: string; value: number };
49 nonce: number | string;
57 nonce: number | string;
50 chainId: number | string;
58 chainId: number | string;
51 gasPriceData: GasPriceData;
59 gasPriceData: GasPriceData;
@@ -55,28 +63,33 @@ interface signTransactionProps {
55}
63}
56
64
57const _web3 = () => {
65const _web3 = () => {
58− const ENDPOINT = `https://mainnet.infura.io/v3/${import.meta.env.VITE_INFURA_ENDPOINT}`;
66+ const ENDPOINT = `https://mainnet.infura.io/v3/${
67+ import.meta.env.VITE_INFURA_ENDPOINT
68+ }`;
59 return new Web3(new Web3.providers.HttpProvider(ENDPOINT));
69 return new Web3(new Web3.providers.HttpProvider(ENDPOINT));
60−}
70+};
61
71
62const estimateGasLimit = async (utx: TransactionConfig) => {
72const estimateGasLimit = async (utx: TransactionConfig) => {
63 const web3 = _web3();
73 const web3 = _web3();
64 const estimate = await web3.eth.estimateGas(utx);
74 const estimate = await web3.eth.estimateGas(utx);
75+ return web3.utils
76+ .toBN(estimate)
77+ .muln(120)
65− return web3.utils.toBN(estimate).muln(120).divn(100); // 20% cushion
78+ .divn(100); // 20% cushion
66−}
79+};
67
80
68const getMaxFeePerGas = async () => {
81const getMaxFeePerGas = async () => {
69 const web3 = _web3();
82 const web3 = _web3();
70 const fee = await web3.eth.getGasPrice();
83 const fee = await web3.eth.getGasPrice();
71− return (Number(fee) * 1.20).toFixed(0); // 20% cushion
84+ return (Number(fee) * 1.2).toFixed(0); // 20% cushion
72−}
85+};
73
86
74const signTransaction = async ({
87const signTransaction = async ({
75 wallet,
88 wallet,
76 walletType,
89 walletType,
77 walletHdPath, // TODO
90 walletHdPath, // TODO
78 networkType,
91 networkType,
79− txn, // output of transactionBuilder in useEthereumTransaction
92+ txn, // output of transactionBuilder in useEthereumTransaction
80 nonce, // number
93 nonce, // number
81 chainId, // number
94 chainId, // number
82 gasPriceData, // GasPriceData
95 gasPriceData, // GasPriceData
@@ -85,7 +98,7 @@ const signTransaction = async ({
85 txnSender, // and a sending function, for wallets that need these passed in.
98 txnSender, // and a sending function, for wallets that need these passed in.
86}: signTransactionProps) => {
99}: signTransactionProps) => {
87 const from = wallet.address;
100 const from = wallet.address;
88− const estimate = await estimateGasLimit({...txn, from });
101+ const estimate = await estimateGasLimit({ ...txn, from });
89 const maxFeePerGas = await getMaxFeePerGas();
102 const maxFeePerGas = await getMaxFeePerGas();
90
103
91 const txParams: EIP1559TxData = {
104 const txParams: EIP1559TxData = {
@@ -93,24 +106,26 @@ const signTransaction = async ({
93 to: toHex(txn.to),
106 to: toHex(txn.to),
94 gasLimit: toHex(estimate),
107 gasLimit: toHex(estimate),
95 maxFeePerGas: toHex(maxFeePerGas),
108 maxFeePerGas: toHex(maxFeePerGas),
109+ maxPriorityFeePerGas: toHex(
96− maxPriorityFeePerGas: toHex(toWei(Math.round(gasPriceData.maxPriorityFeePerGas).toFixed(0), 'gwei')),
110+ toWei(Math.round(gasPriceData.maxPriorityFeePerGas).toFixed(0), 'gwei')
111+ ),
97 nonce: toHex(nonce),
112 nonce: toHex(nonce),
98 chainId: toHex(chainId),
113 chainId: toHex(chainId),
99 type: toHex(EIP1559_TRANSACTION_TYPE),
114 type: toHex(EIP1559_TRANSACTION_TYPE),
100− }
115+ };
101−
116+
102 const chain =
117 const chain =
103− networkType === NETWORK_TYPES.GOERLI ? Chain.Goerli : Chain.Mainnet;
118+ networkType === NETWORK_TYPES.GOERLI ? Chain.Goerli : Chain.Mainnet;
104
119
105 const txConfig: TxOptions = {
120 const txConfig: TxOptions = {
106 freeze: false,
121 freeze: false,
107 common: new Common({
122 common: new Common({
108 chain,
123 chain,
109 hardfork: Hardfork.Merge,
124 hardfork: Hardfork.Merge,
110− })
125+ }),
111 };
126 };
112
127
113− let stx = EIP1559Transaction.fromTxData(txParams, txConfig)
128+ let stx = EIP1559Transaction.fromTxData(txParams, txConfig);
114
129
115 if (walletType === WALLET_TYPES.METAMASK) {
130 if (walletType === WALLET_TYPES.METAMASK) {
116 return metamaskSignTransaction(stx);
131 return metamaskSignTransaction(stx);
@@ -139,7 +154,8 @@ const sendSignedTransaction = (
139 doubtNonceError: boolean
154 doubtNonceError: boolean
140): Promise<string> => {
155): Promise<string> => {
141 // if we couldn't sign it, we depend on the given sender function
156 // if we couldn't sign it, we depend on the given sender function
142− if (!(stx instanceof EIP1559Transaction)) { // TODO
157+ if (!(stx instanceof EIP1559Transaction)) {
158+ // TODO
143 if (doubtNonceError) {
159 if (doubtNonceError) {
144 console.log('why doubting nonce error? tank unavailable without rawtx.');
160 console.log('why doubting nonce error? tank unavailable without rawtx.');
145 }
161 }
@@ -221,7 +237,10 @@ const sendAndAwaitAllSerial = (
221) => {
237) => {
222 //@ts-expect-error tsc complains that stxs.reduce() is not callable
238 //@ts-expect-error tsc complains that stxs.reduce() is not callable
223 return stxs.reduce(
239 return stxs.reduce(
240+ (
241+ promise: Promise<TransactionReceipt[]>,
224− (promise: Promise<TransactionReceipt[]>, stx: EIP1559Transaction | FakeSignedTx) =>
242+ stx: EIP1559Transaction | FakeSignedTx
243+ ) =>
225 promise.then(async (receipts = []) => {
244 promise.then(async (receipts = []) => {
226 const txHash = await sendSignedTransaction(web3, stx, doubtNonceError);
245 const txHash = await sendSignedTransaction(web3, stx, doubtNonceError);
227 return [...receipts, await waitForTransactionConfirm(web3, txHash)];
246 return [...receipts, await waitForTransactionConfirm(web3, txHash)];
src/lib/types/ITxData.tsnew file+9
@@ -0,0 +1,9 @@
1+export type ITxData = {
2+ from: string;
3+ to?: string;
4+ gas: string;
5+ gasPrice?: string;
6+ value?: string;
7+ data?: string;
8+ nonce?: string;
9+};
src/lib/types/L2Transaction.ts+3−1
@@ -11,8 +11,8 @@ import RollerRPCAPI, {
11 Spawn,
11 Spawn,
12 TransferPoint,
12 TransferPoint,
13} from '@urbit/roller-api';
13} from '@urbit/roller-api';
14−import WalletConnect from '@walletconnect/client';
15import BridgeWallet from './BridgeWallet';
14import BridgeWallet from './BridgeWallet';
15+import { SignClient as WalletConnect } from '@walletconnect/sign-client/dist/types/client';
16
16
17export type TransactionType =
17export type TransactionType =
18 | 'transferPoint'
18 | 'transferPoint'
@@ -45,6 +45,8 @@ export interface L2TransactionArgs extends SendL2Params {
45 walletType: symbol;
45 walletType: symbol;
46 web3: any;
46 web3: any;
47 connector: WalletConnect | null;
47 connector: WalletConnect | null;
48+ isConnected: Function;
49+ signPersonalMessage: Function;
48}
50}
49
51
50export interface TransactionData {
52export interface TransactionData {
src/lib/types/Point.ts+4−1
@@ -209,7 +209,10 @@ export default class Point {
209 this.ownManageSpawnVote =
209 this.ownManageSpawnVote =
210 !this.isPlaceholder &&
210 !this.isPlaceholder &&
211 !this.isDefault &&
211 !this.isDefault &&
212+ (this.isOwner ||
213+ this.isSpawnProxy ||
212− (this.isOwner || this.isSpawnProxy || this.isManagementProxy || this.isVotingProxy);
214+ this.isManagementProxy ||
215+ this.isVotingProxy);
213 this.shouldDisplay = this.ownManageSpawnVote || this.isTransferProxy;
216 this.shouldDisplay = this.ownManageSpawnVote || this.isTransferProxy;
214 this.isOutgoing =
217 this.isOutgoing =
215 this.isTransferProxySet &&
218 this.isTransferProxySet &&
src/lib/useGasPrice.js+6−4
@@ -20,7 +20,9 @@ export default function useGasPrice(initialGasPrice = DEFAULT_GAS_PRICE_GWEI) {
20 const [suggestedGasPrices, setSuggestedGasPrices] = useState(
20 const [suggestedGasPrices, setSuggestedGasPrices] = useState(
21 defaultGasValues(initialGasPrice)
21 defaultGasValues(initialGasPrice)
22 ); // fast, average, low. In gwei
22 ); // fast, average, low. In gwei
23+ const [gasPrice, setGasPrice] = useState(
23− const [gasPrice, setGasPrice] = useState(defaultGasValues(initialGasPrice).average); // GasPriceData
24+ defaultGasValues(initialGasPrice).average
25+ ); // GasPriceData
24
26
25 const fetchPrices = useCallback(async () => {
27 const fetchPrices = useCallback(async () => {
26 if (!mounted) {
28 if (!mounted) {
@@ -33,13 +35,13 @@ export default function useGasPrice(initialGasPrice = DEFAULT_GAS_PRICE_GWEI) {
33 // TODO: BN
35 // TODO: BN
34 setSuggestedGasPrices(suggestedGasPrices);
36 setSuggestedGasPrices(suggestedGasPrices);
35 setGasPrice(suggestedGasPrices.average);
37 setGasPrice(suggestedGasPrices.average);
36− }, [mounted]);
38+ }, [mounted, networkType]);
37
39
38 useEffect(() => {
40 useEffect(() => {
39 setMounted(true);
41 setMounted(true);
40 fetchPrices();
42 fetchPrices();
41− return () => (setMounted(false));
43+ return () => setMounted(false);
42− }, [mounted, networkType]);
44+ }, [mounted, networkType, fetchPrices]);
43
45
44 const resetGasPrice = useCallback(
46 const resetGasPrice = useCallback(
45 () => setGasPrice(suggestedGasPrices.average),
47 () => setGasPrice(suggestedGasPrices.average),
src/lib/useKeyfileGenerator.ts+1−1
@@ -24,7 +24,7 @@ interface useKeyfileGeneratorArgs {
24
24
25/**
25/**
26 * The default Keyfile Generator. Can be used by itself, or composed with
26 * The default Keyfile Generator. Can be used by itself, or composed with
27− * other hooks (see `useActivationKeyfileGenerator` and
27+ * other hooks (see `useActivationKeyfileGenerator` and
28 * `useSingleKeyfileGenerator`).
28 * `useSingleKeyfileGenerator`).
29 *
29 *
30 * @param point Point - (optional) the Point for which to generate keys
30 * @param point Point - (optional) the Point for which to generate keys
src/lib/useReticketL2Spawn.ts+5−3
@@ -1,7 +1,6 @@
1import { EthAddress, Ship } from '@urbit/roller-api';
1import { EthAddress, Ship } from '@urbit/roller-api';
2import { useCallback } from 'react';
2import { useCallback } from 'react';
3import Web3 from 'web3';
3import Web3 from 'web3';
4−import { ITxData } from '@walletconnect/types';
5import { INITIAL_NETWORK_KEY_REVISION } from './constants';
4import { INITIAL_NETWORK_KEY_REVISION } from './constants';
6import { reticketPointBetweenWallets } from './reticket';
5import { reticketPointBetweenWallets } from './reticket';
7import BridgeWallet from './types/BridgeWallet';
6import BridgeWallet from './types/BridgeWallet';
@@ -10,6 +9,7 @@ import useRoller from './useRoller';
10import { registerProxyAddress } from './utils/roller';
9import { registerProxyAddress } from './utils/roller';
11import { useWallet } from 'store/wallet';
10import { useWallet } from 'store/wallet';
12import { useWalletConnect } from './useWalletConnect';
11import { useWalletConnect } from './useWalletConnect';
12+import { ITxData } from './types/ITxData';
13
13
14interface ReticketL2SpawnParams {
14interface ReticketL2SpawnParams {
15 fromWallet: BridgeWallet;
15 fromWallet: BridgeWallet;
@@ -58,7 +58,7 @@ interface ReticketL2SpawnParams {
58export const useReticketL2Spawn = () => {
58export const useReticketL2Spawn = () => {
59 const { api } = useRoller();
59 const { api } = useRoller();
60 const { walletType }: any = useWallet();
60 const { walletType }: any = useWallet();
61− const { connector } = useWalletConnect();
61+ const { connector, signPersonalMessage, isConnected } = useWalletConnect();
62
62
63 const performL2SpawnReticket = useCallback(
63 const performL2SpawnReticket = useCallback(
64 async ({
64 async ({
@@ -122,10 +122,12 @@ export const useReticketL2Spawn = () => {
122 walletType,
122 walletType,
123 web3,
123 web3,
124 connector,
124 connector,
125+ isConnected,
126+ signPersonalMessage,
125 true
127 true
126 );
128 );
127 },
129 },
128− [api, connector, walletType]
130+ [api, connector, walletType, isConnected, signPersonalMessage]
129 );
131 );
130
132
131 return {
133 return {
src/lib/useRoller.ts+92−36
@@ -12,7 +12,6 @@ import { useNetwork } from 'store/network';
12import { usePointCursor } from 'store/pointCursor';
12import { usePointCursor } from 'store/pointCursor';
13import { EMPTY_POINT, useRollerStore } from 'store/rollerStore';
13import { EMPTY_POINT, useRollerStore } from 'store/rollerStore';
14import { useWallet } from 'store/wallet';
14import { useWallet } from 'store/wallet';
15−import { usePointCache } from 'store/pointCache';
16
15
17import { getUpdatedPointMessage, isPlanet, toL1Details } from './utils/point';
16import { getUpdatedPointMessage, isPlanet, toL1Details } from './utils/point';
18import { convertToInt } from './convertToInt';
17import { convertToInt } from './convertToInt';
@@ -60,11 +59,9 @@ export default function useRoller() {
60 urbitWallet,
59 urbitWallet,
61 walletType,
60 walletType,
62 }: any = useWallet();
61 }: any = useWallet();
63− const { connector } = useWalletConnect();
62+ const { connector, isConnected, signPersonalMessage } = useWalletConnect();
64 const { pointCursor }: any = usePointCursor();
63 const { pointCursor }: any = usePointCursor();
65 const { web3, contracts }: any = useNetwork();
64 const { web3, contracts }: any = useNetwork();
66− const allPoints: any = usePointCache();
67− const getDetails = allPoints?.getDetails;
68
65
69 const {
66 const {
70 point,
67 point,
@@ -211,9 +208,7 @@ export default function useRoller() {
211 l1Txn,
208 l1Txn,
212 intervalTime = TEN_SECONDS,
209 intervalTime = TEN_SECONDS,
213 }: UpdateParams) => {
210 }: UpdateParams) => {
214−
215−
216− const pVal = (typeof point === 'number' ? point : point.value);
211+ const pVal = typeof point === 'number' ? point : point.value;
217 const p = await initPoint(pVal);
212 const p = await initPoint(pVal);
218
213
219 if (l1Txn) storePendingL1Txn(l1Txn);
214 if (l1Txn) storePendingL1Txn(l1Txn);
@@ -288,6 +283,8 @@ export default function useRoller() {
288 walletType,
283 walletType,
289 web3: _web3,
284 web3: _web3,
290 connector,
285 connector,
286+ isConnected,
287+ signPersonalMessage,
291 });
288 });
292 },
289 },
293 [
290 [
@@ -301,6 +298,8 @@ export default function useRoller() {
301 walletType,
298 walletType,
302 web3,
299 web3,
303 quotaReached,
300 quotaReached,
301+ signPersonalMessage,
302+ isConnected,
304 ]
303 ]
305 );
304 );
306
305
@@ -310,14 +309,14 @@ export default function useRoller() {
310 proxy === 'own'
309 proxy === 'own'
311 ? await api.getOwnedPoints(address)
310 ? await api.getOwnedPoints(address)
312 : proxy === 'manage'
311 : proxy === 'manage'
313− ? await api.getManagerFor(address)
312+ ? await api.getManagerFor(address)
314− : proxy === 'vote'
313+ : proxy === 'vote'
315− ? await api.getVotingFor(address)
314+ ? await api.getVotingFor(address)
316− : proxy === 'transfer'
315+ : proxy === 'transfer'
317− ? await api.getTransferringFor(address)
316+ ? await api.getTransferringFor(address)
318− : proxy === 'spawn'
317+ : proxy === 'spawn'
319− ? await api.getSpawningFor(address)
318+ ? await api.getSpawningFor(address)
320− : [];
319+ : [];
321
320
322 return points;
321 return points;
323 },
322 },
@@ -366,14 +365,14 @@ export default function useRoller() {
366 const networkSeed = customNetworkSeed
365 const networkSeed = customNetworkSeed
367 ? customNetworkSeed
366 ? customNetworkSeed
368 : await attemptNetworkSeedDerivation({
367 : await attemptNetworkSeedDerivation({
369− urbitWallet,
368+ urbitWallet,
370− wallet,
369+ wallet,
371− authMnemonic,
370+ authMnemonic,
372− details: point,
371+ details: point,
373− authToken,
372+ authToken,
374− point: point.value,
373+ point: point.value,
375− revision: nextRevision,
374+ revision: nextRevision,
376− });
375+ });
377 const txHash = await submitL2Transaction({
376 const txHash = await submitL2Transaction({
378 api,
377 api,
379 wallet: _wallet,
378 wallet: _wallet,
@@ -385,6 +384,8 @@ export default function useRoller() {
385 walletType,
384 walletType,
386 web3: _web3,
385 web3: _web3,
387 connector,
386 connector,
387+ isConnected,
388+ signPersonalMessage,
388 breach,
389 breach,
389 });
390 });
390
391
@@ -400,8 +401,10 @@ export default function useRoller() {
400 wallet,
401 wallet,
401 walletType,
402 walletType,
402 web3,
403 web3,
403− getDetails,
404 quotaReached,
404 quotaReached,
405+ connector,
406+ isConnected,
407+ signPersonalMessage,
405 ]
408 ]
406 );
409 );
407
410
@@ -419,7 +422,7 @@ export default function useRoller() {
419 let nonce = await api.getNonce({ ship: point, proxy });
422 let nonce = await api.getNonce({ ship: point, proxy });
420 const progress = onUpdate
423 const progress = onUpdate
421 ? (state: number) => onUpdate({ type: 'progress', state })
424 ? (state: number) => onUpdate({ type: 'progress', state })
422− : () => {};
425+ : () => { };
423
426
424 let requests = [];
427 let requests = [];
425
428
@@ -442,6 +445,8 @@ export default function useRoller() {
442 type: 'configureKeys',
445 type: 'configureKeys',
443 web3: _web3,
446 web3: _web3,
444 connector,
447 connector,
448+ signPersonalMessage,
449+ isConnected,
445 });
450 });
446 nonce = nonce + 1;
451 nonce = nonce + 1;
447 requests.push(configureKeysRequest);
452 requests.push(configureKeysRequest);
@@ -458,7 +463,9 @@ export default function useRoller() {
458 manager,
463 manager,
459 walletType,
464 walletType,
460 _web3,
465 _web3,
461− connector
466+ connector,
467+ signPersonalMessage,
468+ isConnected
462 );
469 );
463 nonce = nonce + 1;
470 nonce = nonce + 1;
464 requests.push(registerMgmtRequest);
471 requests.push(registerMgmtRequest);
@@ -476,7 +483,9 @@ export default function useRoller() {
476 toWallet?.spawn?.keys?.address || to,
483 toWallet?.spawn?.keys?.address || to,
477 walletType,
484 walletType,
478 _web3,
485 _web3,
479− connector
486+ connector,
487+ signPersonalMessage,
488+ isConnected
480 );
489 );
481 nonce = nonce + 1;
490 nonce = nonce + 1;
482 requests.push(registerSpawnRequest);
491 requests.push(registerSpawnRequest);
@@ -495,6 +504,8 @@ export default function useRoller() {
495 walletType,
504 walletType,
496 web3: _web3,
505 web3: _web3,
497 connector,
506 connector,
507+ signPersonalMessage,
508+ isConnected,
498 });
509 });
499 requests.push(transferTxRequest);
510 requests.push(transferTxRequest);
500
511
@@ -510,7 +521,6 @@ export default function useRoller() {
510 if (quotaReached()) {
521 if (quotaReached()) {
511 return;
522 return;
512 }
523 }
513−
514 const _wallet = wallet.getOrElse(null);
524 const _wallet = wallet.getOrElse(null);
515 const _web3 = web3.getOrElse(null);
525 const _web3 = web3.getOrElse(null);
516
526
@@ -523,14 +533,12 @@ export default function useRoller() {
523 // not using need because we want a custom error
533 // not using need because we want a custom error
524 throw new Error('Internal Error: Invalid point');
534 throw new Error('Internal Error: Invalid point');
525 }
535 }
526−
527 const proxy = point.getAddressProxy(proxyType);
536 const proxy = point.getAddressProxy(proxyType);
528
537
529 if (proxy === undefined)
538 if (proxy === undefined)
530 throw new Error("Error: Address doesn't match expected proxy");
539 throw new Error("Error: Address doesn't match expected proxy");
531
540
532 const nonce = await api.getNonce({ ship: point.value, proxy });
541 const nonce = await api.getNonce({ ship: point.value, proxy });
533−
534 const txHash = await registerProxyAddress(
542 const txHash = await registerProxyAddress(
535 api,
543 api,
536 _wallet,
544 _wallet,
@@ -541,12 +549,23 @@ export default function useRoller() {
541 address,
549 address,
542 walletType,
550 walletType,
543 _web3,
551 _web3,
544− connector
552+ connector,
553+ signPersonalMessage,
554+ isConnected
545 );
555 );
546−
547 return api.getPendingTx(txHash);
556 return api.getPendingTx(txHash);
548 },
557 },
549− [api, connector, point, wallet, web3, walletType, quotaReached]
558+ [
559+ api,
560+ connector,
561+ signPersonalMessage,
562+ isConnected,
563+ point,
564+ wallet,
565+ web3,
566+ walletType,
567+ quotaReached,
568+ ]
550 );
569 );
551
570
552 const changeSponsorship = useCallback(
571 const changeSponsorship = useCallback(
@@ -582,11 +601,23 @@ export default function useRoller() {
582 walletType,
601 walletType,
583 web3: _web3,
602 web3: _web3,
584 connector,
603 connector,
604+ signPersonalMessage,
605+ isConnected,
585 });
606 });
586
607
587 return api.getPendingTx(txHash);
608 return api.getPendingTx(txHash);
588 },
609 },
589− [api, point, wallet, walletType, web3, connector, quotaReached]
610+ [
611+ api,
612+ point,
613+ wallet,
614+ walletType,
615+ web3,
616+ connector,
617+ quotaReached,
618+ isConnected,
619+ signPersonalMessage,
620+ ]
590 );
621 );
591
622
592 const transferPoint = useCallback(
623 const transferPoint = useCallback(
@@ -622,12 +653,25 @@ export default function useRoller() {
622 walletType,
653 walletType,
623 web3: _web3,
654 web3: _web3,
624 connector,
655 connector,
656+ signPersonalMessage,
657+ isConnected,
625 reset,
658 reset,
626 });
659 });
627
660
628 return api.getPendingTx(txHash);
661 return api.getPendingTx(txHash);
629 },
662 },
630− [api, connector, point, pointCursor, wallet, web3, walletType, quotaReached]
663+ [
664+ api,
665+ connector,
666+ point,
667+ pointCursor,
668+ wallet,
669+ web3,
670+ walletType,
671+ quotaReached,
672+ isConnected,
673+ signPersonalMessage,
674+ ]
631 );
675 );
632
676
633 const sendL2Transaction = useCallback(
677 const sendL2Transaction = useCallback(
@@ -651,10 +695,22 @@ export default function useRoller() {
651 walletType,
695 walletType,
652 web3: _web3,
696 web3: _web3,
653 connector,
697 connector,
698+ signPersonalMessage,
699+ isConnected,
654 ship: point.value,
700 ship: point.value,
655 });
701 });
656 },
702 },
657− [api, connector, point, wallet, web3, walletType, quotaReached]
703+ [
704+ api,
705+ connector,
706+ point,
707+ wallet,
708+ web3,
709+ walletType,
710+ quotaReached,
711+ isConnected,
712+ signPersonalMessage,
713+ ]
658 );
714 );
659
715
660 const changeSponsor = useCallback(
716 const changeSponsor = useCallback(
src/lib/useWalletConnect.ts+169−107
@@ -1,6 +1,7 @@
1−import WalletConnect from '@walletconnect/client';
1+import { SignClient as Connector } from '@walletconnect/sign-client';
2−import QRCodeModal from '@walletconnect/qrcode-modal';
2+import { SignClient } from '@walletconnect/sign-client/dist/types/client';
3+import { Web3Modal } from '@web3modal/standalone';
3−import { ITxData } from '@walletconnect/types';
4+import { SessionTypes } from '@walletconnect/types';
4
5
5import { useEffect, useMemo, useState } from 'react';
6import { useEffect, useMemo, useState } from 'react';
6import { Just, Nothing } from 'folktale/maybe';
7import { Just, Nothing } from 'folktale/maybe';
@@ -9,6 +10,9 @@ import { useWallet } from 'store/wallet';
9import { getAuthToken } from './authToken';
10import { getAuthToken } from './authToken';
10import { WALLET_TYPES } from './constants';
11import { WALLET_TYPES } from './constants';
11import WalletConnectWallet from './types/WalletConnectWallet';
12import WalletConnectWallet from './types/WalletConnectWallet';
13+import { isGoerli } from './flags';
14+import { ITxData } from './types/ITxData';
15+import { mayCreateHexString } from './utils/hex';
12
16
13type PeerMeta = {
17type PeerMeta = {
14 description: string;
18 description: string;
@@ -17,69 +21,132 @@ type PeerMeta = {
17 url: string;
21 url: string;
18};
22};
19
23
20−type ConnectEvent = {
24+type PersonalSign = {
21− event: 'connect';
22− params: [
23− {
24− accounts: string[];
25+ message: string;
25− chainId: number;
26− peerId: string;
26+ address: string;
27− peerMeta: PeerMeta;
28− }
27+};
29− ];
28+
29+const getChain = () => {
30+ return isGoerli ? 'eip155:5' : 'eip155:1';
30};
31};
31
32
32export const useWalletConnect = () => {
33export const useWalletConnect = () => {
33 const {
34 const {
35+ wallet,
34 setWallet,
36 setWallet,
35 setAuthToken,
37 setAuthToken,
36 setFakeToken,
38 setFakeToken,
37 skipLoginSigning,
39 skipLoginSigning,
38 resetWallet,
40 resetWallet,
39 }: any = useWallet();
41 }: any = useWallet();
42+
40− const [connector, setConnector] = useState<WalletConnect | null>(null);
43+ const [connector, setConnector] = useState<SignClient | null>(null);
41 const [address, setAddress] = useState<string | null>(null);
44 const [address, setAddress] = useState<string | null>(null);
42 const [peerMeta, setPeerMeta] = useState<PeerMeta | null>(null);
45 const [peerMeta, setPeerMeta] = useState<PeerMeta | null>(null);
46+ const [session, setSession] = useState<SessionTypes.Struct | null>(null);
47+ const [modal, setModal] = useState<Web3Modal | null>(null);
48+
49+ const resetSession = () => {
50+ setSession(null);
51+ setAddress(null);
52+ setPeerMeta(null);
53+ };
54+
55+ const updateSession = (_session: SessionTypes.Struct) => {
56+ setSession(_session);
57+ setAddress(_session.namespaces.eip155.accounts[0].slice(9));
58+ setPeerMeta(_session.peer.metadata);
59+ };
43
60
44− const resetConnector = () => {
61+ const initConnector = async () => {
62+ if (connector) return;
63+
45− const newConnector = new WalletConnect({
64+ const newConnector = await Connector.init({
46− bridge: 'https://bridge.walletconnect.org',
65+ projectId: import.meta.env.VITE_WALLET_CONNECT_PROJECT_ID,
47− qrcodeModal: QRCodeModal,
48 });
66 });
49
67
50 setConnector(newConnector);
68 setConnector(newConnector);
51
69
70+ const newModal = new Web3Modal({
71+ projectId: import.meta.env.VITE_WALLET_CONNECT_PROJECT_ID,
72+ standaloneChains: [getChain()],
73+ walletConnectVersion: 2,
74+ });
75+
76+ setModal(newModal);
77+
52 // restore state from cached connection
78 // restore state from cached connection
79+ if (Just.hasInstance(wallet) && !session) {
80+ const cached_sessions = [
53− if (newConnector.accounts.length > 0) {
81+ ...newConnector.session.map,
54− setAddress(newConnector.accounts[0]);
82+ ].map(([key, value]) => ({ key, value }));
83+
84+ var restored: SessionTypes.Struct | null = null;
85+
86+ // this will set restored to the last
87+ // cached session with the same address
88+ for (var key in cached_sessions) {
89+ if (
90+ cached_sessions[key].value.namespaces.eip155.accounts[0].slice(9) ===
91+ wallet.value.address
92+ ) {
93+ restored = cached_sessions[key].value;
94+ }
55− }
95+ }
56
96
57− if (newConnector.peerMeta) {
97+ if (restored) {
58− setPeerMeta(newConnector.peerMeta);
98+ updateSession(restored);
99+ }
59 }
100 }
60 };
101 };
61
102
62 // Init connector
103 // Init connector
63 useEffect(() => {
104 useEffect(() => {
64− resetConnector();
105+ initConnector();
65 // eslint-disable-next-line react-hooks/exhaustive-deps
106 // eslint-disable-next-line react-hooks/exhaustive-deps
66 }, []);
107 }, []);
67
108
68 // Behavior
109 // Behavior
69 const connect = async () => {
110 const connect = async () => {
70− if (!connector || connector.connected) {
111+ if (!connector) {
71 return;
112 return;
72 }
113 }
73
114
115+ const proposalNamespace = {
116+ eip155: {
117+ chains: [getChain()],
118+ methods: [
119+ 'eth_sendTransaction',
120+ 'eth_signTransaction',
121+ 'personal_sign',
122+ ],
123+ events: ['connect', 'disconnect'],
124+ },
125+ };
126+
74− await connector.createSession();
127+ const { uri, approval } = await connector.connect({
128+ requiredNamespaces: proposalNamespace,
129+ });
130+
131+ if (uri) {
132+ modal?.openModal({ uri });
133+ const session = await approval();
134+ updateSession(session);
135+ modal?.closeModal();
136+ }
75 };
137 };
76
138
77 const disconnect = async () => {
139 const disconnect = async () => {
78− if (!connector) {
140+ if (!connector || !session) {
79 return;
141 return;
80 }
142 }
81
143
82− await connector.killSession();
144+ await connector.disconnect({
145+ topic: session.topic,
146+ reason: { code: 6000, message: 'User disconnected' },
147+ });
148+
149+ resetSession();
83 };
150 };
84
151
85 const authenticate = async () => {
152 const authenticate = async () => {
@@ -91,20 +158,22 @@ export const useWalletConnect = () => {
91 address,
158 address,
92 };
159 };
93 setWallet(Just(wallet));
160 setWallet(Just(wallet));
161+
94 if (skipLoginSigning) {
162 if (skipLoginSigning) {
95 setFakeToken();
163 setFakeToken();
96 return;
164 return;
97 }
165 }
98−
99 let authToken = Nothing();
166 let authToken = Nothing();
167+
100 try {
168 try {
101 const token = await getAuthToken({
169 const token = await getAuthToken({
102− address,
170+ address: address,
103− connector,
104 walletType: WALLET_TYPES.WALLET_CONNECT,
171 walletType: WALLET_TYPES.WALLET_CONNECT,
172+ signPersonalMessage: signPersonalMessage,
105 });
173 });
106 authToken = Just(token);
174 authToken = Just(token);
107 setAuthToken(authToken);
175 setAuthToken(authToken);
176+ modal?.closeModal();
108 } catch (e) {
177 } catch (e) {
109 if (e.message === 'METHOD_NOT_SUPPORTED') {
178 if (e.message === 'METHOD_NOT_SUPPORTED') {
110 console.warn(
179 console.warn(
@@ -118,11 +187,11 @@ export const useWalletConnect = () => {
118 };
187 };
119
188
120 const isConnected = () => {
189 const isConnected = () => {
121− if (!connector) {
190+ if (!connector || !session) {
122 return false;
191 return false;
123 }
192 }
124
193
125− return connector.connected;
194+ return session?.acknowledged;
126 };
195 };
127
196
128 const peerIcon = useMemo(() => {
197 const peerIcon = useMemo(() => {
@@ -152,14 +221,23 @@ export const useWalletConnect = () => {
152 }
221 }
153
222
154 return connector
223 return connector
155− .signTransaction({
224+ .request<string>({
225+ topic: session?.topic!,
226+ chainId: getChain(),
227+ request: {
228+ method: 'eth_signTransaction',
229+ params: [
230+ {
231+ to,
156− from,
232+ from,
157− to,
233+ data: mayCreateHexString(data),
158− gas,
234+ nonce: mayCreateHexString(nonce),
159− gasPrice,
235+ gasPrice: mayCreateHexString(gasPrice),
160− value,
236+ gasLimit: mayCreateHexString(gas),
161− data,
237+ value: mayCreateHexString(value),
162− nonce,
238+ },
239+ ],
240+ },
163 })
241 })
164 .then((signature: string) => resolve(signature))
242 .then((signature: string) => resolve(signature))
165 .catch((error: Error) => reject(error));
243 .catch((error: Error) => reject(error));
@@ -181,78 +259,66 @@ export const useWalletConnect = () => {
181 return;
259 return;
182 }
260 }
183
261
184− //REVIEW .then path untested
185 return connector
262 return connector
186− .sendTransaction({
263+ .request<string>({
264+ topic: session?.topic!,
265+ chainId: getChain(),
266+ request: {
267+ method: 'eth_sendTransaction',
268+ params: [
269+ {
270+ to,
187− from,
271+ from,
188− to,
272+ data: mayCreateHexString(data),
189− gas,
273+ nonce: mayCreateHexString(nonce),
190− gasPrice,
274+ gasPrice: mayCreateHexString(gasPrice),
191− value,
275+ gasLimit: mayCreateHexString(gas),
192− data,
276+ value: mayCreateHexString(value),
193− nonce,
277+ },
278+ ],
279+ },
194 })
280 })
195 .then((txHash: string) => resolve(txHash))
281 .then((txHash: string) => resolve(txHash))
196 .catch((error: Error) => reject(error));
282 .catch((error: Error) => reject(error));
197 });
283 });
198 };
284 };
199
285
200− // Event Handlers
286+ const signPersonalMessage = async ({ message, address }: PersonalSign) => {
201− const initConnectHandler = () => {
287+ return new Promise((resolve, reject) => {
202− if (!connector) {
203− return;
204− }
205−
206− connector.on('connect', async (error, payload: ConnectEvent) => {
207− if (error) {
208− throw error;
209− }
210−
211− const address = payload.params[0].accounts[0];
212− setAddress(address);
213− setPeerMeta(payload.params[0].peerMeta);
214− });
215− };
216−
217− const initDisconnectHandler = () => {
218− if (!connector) {
288+ if (!connector || !isConnected()) {
219− return;
289+ reject(new Error('No connected wallet available for signing'));
220− }
290+ return;
221−
222− connector.on('disconnect', (error, _payload) => {
223− if (error) {
224− throw error;
225 }
291 }
226
292
227− setAddress(null);
293+ return connector
228− setPeerMeta(null);
294+ .request({
229− resetWallet();
295+ topic: session?.topic!,
296+ chainId: getChain(),
297+ request: {
298+ method: 'personal_sign',
299+ params: [mayCreateHexString(message), address],
300+ },
301+ })
302+ .then(result => {
303+ resolve(result);
304+ })
305+ .catch((error: Error) => reject(error));
230 });
306 });
231 };
307 };
232
308
233− const initSessionUpdateHandler = () => {
309+ // Event handlers
234− if (!connector) {
235− return;
236− }
237
310
238− connector.on('session_update', (error, payload) => {
311+ const onSessionDelete = () => {
239− if (error) {
312+ setAddress(null);
240− throw error;
313+ setPeerMeta(null);
241− }
314+ resetWallet();
242−
243− disconnect();
244− });
245 };
315 };
246
316
247− const initModalClosedHandler = () => {
317+ const onSessionUpdate = ({ topic, params }: any) => {
248− if (!connector) {
318+ const _session = connector?.session.get(topic);
249− return;
319+ if (_session) {
320+ updateSession(_session);
250 }
321 }
251−
252− connector.on('modal_closed', () => {
253− resetWallet();
254− resetConnector();
255− });
256 };
322 };
257
323
258 // Init and clean up
324 // Init and clean up
@@ -260,18 +326,13 @@ export const useWalletConnect = () => {
260 if (!connector) {
326 if (!connector) {
261 return;
327 return;
262 }
328 }
263−
329+ connector.on('session_delete', onSessionDelete);
264− initConnectHandler();
330+ connector.on('session_update', onSessionUpdate);
265− initDisconnectHandler();
266− initSessionUpdateHandler();
267− initModalClosedHandler();
268
331
269 return () => {
332 return () => {
270 // Clean up listeners
333 // Clean up listeners
271− connector.off('connect');
334+ connector.off('session_delete', onSessionDelete);
272− connector.off('disconnect');
273− connector.off('session_update');
335+ connector.off('session_update', onSessionUpdate);
274− connector.off('modal_closed');
275 };
336 };
276 // eslint-disable-next-line react-hooks/exhaustive-deps
337 // eslint-disable-next-line react-hooks/exhaustive-deps
277 }, [connector]);
338 }, [connector]);
@@ -285,8 +346,9 @@ export const useWalletConnect = () => {
285 isConnected,
346 isConnected,
286 peerIcon,
347 peerIcon,
287 peerMeta,
348 peerMeta,
288− resetConnector,
349+ initConnector,
289 signTransaction,
350 signTransaction,
290 sendTransaction,
351 sendTransaction,
352+ signPersonalMessage,
291 };
353 };
292};
354};
src/lib/utils/hex.tsnew file+11
@@ -0,0 +1,11 @@
1+import * as encoding from '@walletconnect/encoding';
2+
3+export const mayCreateHexString = (data?: number | string) => {
4+ if (!data || encoding.isHexString(data)) return data;
5+
6+ if (typeof data === 'number')
7+ return encoding.sanitizeHex(encoding.numberToHex(data));
8+
9+ if (typeof data === 'string')
10+ return encoding.sanitizeHex(encoding.utf8ToHex(data));
11+};
src/lib/utils/roller.ts+29−10
@@ -1,6 +1,6 @@
1import { Just, Nothing } from 'folktale/maybe';
1import { Just, Nothing } from 'folktale/maybe';
2import { randomHex } from 'web3-utils';
2import { randomHex } from 'web3-utils';
3−import WalletConnect from '@walletconnect/client';
3+import { SignClient as WalletConnect } from '@walletconnect/sign-client/dist/types/client';
4import RollerRPCAPI, {
4import RollerRPCAPI, {
5 Proxy,
5 Proxy,
6 Signature,
6 Signature,
@@ -62,7 +62,9 @@ export const generateHashAndSign = async (
62 data: any,
62 data: any,
63 walletType: symbol,
63 walletType: symbol,
64 web3: any,
64 web3: any,
65− connector: WalletConnect | null
65+ connector: WalletConnect | null,
66+ isConnected: Function,
67+ signPersonalMessage: Function
66) => {
68) => {
67 if (walletType === WALLET_TYPES.METAMASK) {
69 if (walletType === WALLET_TYPES.METAMASK) {
68 const hash = await api.prepareForSigning(nonce, from, type, data);
70 const hash = await api.prepareForSigning(nonce, from, type, data);
@@ -81,12 +83,14 @@ export const generateHashAndSign = async (
81
83
82 return sig;
84 return sig;
83 } else if (walletType === WALLET_TYPES.WALLET_CONNECT) {
85 } else if (walletType === WALLET_TYPES.WALLET_CONNECT) {
84− if (!connector || !connector.connected) {
86+ if (!connector || !isConnected()) {
85 throw new Error('Awaiting WalletConnect connection...');
87 throw new Error('Awaiting WalletConnect connection...');
86 }
88 }
87−
88 const hash = await api.prepareForSigning(nonce, from, type, data);
89 const hash = await api.prepareForSigning(nonce, from, type, data);
89− const sig = await connector.signPersonalMessage([hash, wallet.address]);
90+ const sig = await signPersonalMessage({
91+ message: hash,
92+ address: wallet.address,
93+ });
90 return sig;
94 return sig;
91 } else {
95 } else {
92 const hash = await api.getUnsignedTx(nonce, from, type, data);
96 const hash = await api.getUnsignedTx(nonce, from, type, data);
@@ -105,6 +109,8 @@ export const configureKeys = async (
105 walletType: symbol,
109 walletType: symbol,
106 web3: any,
110 web3: any,
107 connector: WalletConnect | null,
111 connector: WalletConnect | null,
112+ isConnected: Function,
113+ signPersonalMessage: Function,
108 breach?: boolean,
114 breach?: boolean,
109 force: boolean = false
115 force: boolean = false
110) => {
116) => {
@@ -141,7 +147,9 @@ export const configureKeys = async (
141 data,
147 data,
142 walletType,
148 walletType,
143 web3,
149 web3,
144− connector
150+ connector,
151+ signPersonalMessage,
152+ isConnected
145 );
153 );
146 return api.configureKeys(sig, force, from, wallet.address, data);
154 return api.configureKeys(sig, force, from, wallet.address, data);
147};
155};
@@ -156,6 +164,8 @@ export const transferPointRequest = async (
156 walletType: symbol,
164 walletType: symbol,
157 web3: any,
165 web3: any,
158 connector: WalletConnect | null,
166 connector: WalletConnect | null,
167+ isConnected: Function,
168+ signPersonalMessage: Function,
159 reset?: boolean,
169 reset?: boolean,
160 force: boolean = false
170 force: boolean = false
161) => {
171) => {
@@ -178,7 +188,9 @@ export const transferPointRequest = async (
178 data,
188 data,
179 walletType,
189 walletType,
180 web3,
190 web3,
181− connector
191+ connector,
192+ signPersonalMessage,
193+ isConnected
182 );
194 );
183
195
184 return api.transferPoint(sig, force, from, wallet.address, data);
196 return api.transferPoint(sig, force, from, wallet.address, data);
@@ -229,6 +241,8 @@ export const registerProxyAddress = async (
229 walletType: symbol,
241 walletType: symbol,
230 web3: any,
242 web3: any,
231 connector: WalletConnect | null,
243 connector: WalletConnect | null,
244+ isConnected: Function,
245+ signPersonalMessage: Function,
232 force?: boolean
246 force?: boolean
233) => {
247) => {
234 const from = {
248 const from = {
@@ -246,9 +260,10 @@ export const registerProxyAddress = async (
246 data,
260 data,
247 walletType,
261 walletType,
248 web3,
262 web3,
249− connector
263+ connector,
264+ signPersonalMessage,
265+ isConnected
250 );
266 );
251−
252 return setProxy(
267 return setProxy(
253 api,
268 api,
254 proxyAddressType,
269 proxyAddressType,
@@ -343,6 +358,8 @@ export const submitL2Transaction = async (args: L2TransactionArgs) => {
343 walletType,
358 walletType,
344 web3,
359 web3,
345 connector,
360 connector,
361+ isConnected,
362+ signPersonalMessage,
346 } = args;
363 } = args;
347
364
348 const from = { ship, proxy };
365 const from = { ship, proxy };
@@ -357,7 +374,9 @@ export const submitL2Transaction = async (args: L2TransactionArgs) => {
357 data,
374 data,
358 walletType,
375 walletType,
359 web3,
376 web3,
360− connector
377+ connector,
378+ isConnected,
379+ signPersonalMessage
361 );
380 );
362
381
363 return method(sig, false, from, wallet.address, data);
382 return method(sig, false, from, wallet.address, data);
src/lib/walletgen.ts+10−2
@@ -68,7 +68,12 @@ export const makeDeterministicTicket = (point: number, seed: string) => {
68};
68};
69
69
70// return a wallet object
70// return a wallet object
71−export const generateWallet = async (point: number, ticket: string, boot: boolean, revision = 0) => {
71+export const generateWallet = async (
72+ point: number,
73+ ticket: string,
74+ boot: boolean,
75+ revision = 0
76+) => {
72 const config = {
77 const config = {
73 ticket: ticket,
78 ticket: ticket,
74 seedSize: SEED_LENGTH_BYTES,
79 seedSize: SEED_LENGTH_BYTES,
@@ -109,7 +114,10 @@ export const generateTemporaryTicketAndWallet = async (point: number) => {
109 return { ticket, owner };
114 return { ticket, owner };
110};
115};
111
116
112−export const generateTemporaryDeterministicWallet = async (point: number, seed: string) => {
117+export const generateTemporaryDeterministicWallet = async (
118+ point: number,
119+ seed: string
120+) => {
113 const ticket = makeDeterministicTicket(point, seed);
121 const ticket = makeDeterministicTicket(point, seed);
114 const owner = await generateOwnershipWallet(ZOD, ticket);
122 const owner = await generateOwnershipWallet(ZOD, ticket);
115
123
src/store/network.jsx+6−2
@@ -85,7 +85,9 @@ function _useNetwork(initialNetworkType = null) {
85 return;
85 return;
86 }
86 }
87 case NETWORK_TYPES.GOERLI: {
87 case NETWORK_TYPES.GOERLI: {
88− const endpoint = `https://goerli.infura.io/v3/${import.meta.env.VITE_INFURA_ENDPOINT}`;
88+ const endpoint = `https://goerli.infura.io/v3/${
89+ import.meta.env.VITE_INFURA_ENDPOINT
90+ }`;
89
91
90 initWeb3(
92 initWeb3(
91 new Web3.providers.HttpProvider(endpoint),
93 new Web3.providers.HttpProvider(endpoint),
@@ -94,7 +96,9 @@ function _useNetwork(initialNetworkType = null) {
94 return;
96 return;
95 }
97 }
96 case NETWORK_TYPES.MAINNET: {
98 case NETWORK_TYPES.MAINNET: {
97− const endpoint = `https://mainnet.infura.io/v3/${import.meta.env.VITE_INFURA_ENDPOINT}`;
99+ const endpoint = `https://mainnet.infura.io/v3/${
100+ import.meta.env.VITE_INFURA_ENDPOINT
101+ }`;
98
102
99 initWeb3(
103 initWeb3(
100 new Web3.providers.HttpProvider(endpoint),
104 new Web3.providers.HttpProvider(endpoint),
src/store/pointCache.jsx+6−7
@@ -1,5 +1,4 @@
1−import { Just, Nothing } from 'folktale/maybe';
1+import { Nothing } from 'folktale/maybe';
2−import Result from 'folktale/result';
3import React, { createContext, forwardRef, useContext } from 'react';
2import React, { createContext, forwardRef, useContext } from 'react';
4import { noop } from 'lodash';
3import { noop } from 'lodash';
5
4
@@ -7,11 +6,11 @@ import useDeepEqualReference from 'lib/useDeepEqualReference';
7import usePointStore from './lib/usePointStore';
6import usePointStore from './lib/usePointStore';
8
7
9/**
8/**
10− * Avoid race condition by setting an initial dummy state. Previously, on
9+ * Avoid race condition by setting an initial dummy state. Previously, on
11− * occasion the application would render before the points queries finished
10+ * occasion the application would render before the points queries finished
12 * loading data asynchronously from the roller and Infura. This would cause
11 * loading data asynchronously from the roller and Infura. This would cause
13 * a crash in Points.tsx when attempting to destructure the data.
12 * a crash in Points.tsx when attempting to destructure the data.
14−*/
13+ */
15const initialContext = {
14const initialContext = {
16 details: Nothing(),
15 details: Nothing(),
17 rekeyDates: Nothing(),
16 rekeyDates: Nothing(),
@@ -20,13 +19,13 @@ const initialContext = {
20 residents: Nothing(),
19 residents: Nothing(),
21 pointCursor: Nothing(),
20 pointCursor: Nothing(),
22 syncDetails: noop,
21 syncDetails: noop,
23− syncEclipticOwner:noop,
22+ syncEclipticOwner: noop,
24 syncRekeyDate: noop,
23 syncRekeyDate: noop,
25 syncControlledPoints: noop,
24 syncControlledPoints: noop,
26 syncDates: noop,
25 syncDates: noop,
27 syncResidents: noop,
26 syncResidents: noop,
28 syncExtras: noop,
27 syncExtras: noop,
29−}
28+};
30
29
31export const PointCacheContext = createContext(initialContext);
30export const PointCacheContext = createContext(initialContext);
32
31
src/store/pointCursor.jsx+1−1
@@ -12,7 +12,7 @@ import { noop } from 'lodash';
12const initialContext = {
12const initialContext = {
13 pointCursor: Nothing(),
13 pointCursor: Nothing(),
14 setPointCursor: noop,
14 setPointCursor: noop,
15−}
15+};
16
16
17export const PointCursorContext = createContext(initialContext);
17export const PointCursorContext = createContext(initialContext);
18
18
src/store/wallet.jsx+1−1
@@ -52,7 +52,7 @@ const initialContext = {
52 skipLoginSigning: false,
52 skipLoginSigning: false,
53 setSkipLoginSigning: noop,
53 setSkipLoginSigning: noop,
54 setFakeToken: noop,
54 setFakeToken: noop,
55−}
55+};
56
56
57export const WalletContext = createContext(initialContext);
57export const WalletContext = createContext(initialContext);
58
58
src/views/Activate/ActivateView.tsx+1−1
@@ -1,5 +1,5 @@
1import { Box } from '@tlon/indigo-react';
1import { Box } from '@tlon/indigo-react';
2−import { Grid, Text } from 'indigo-react';
2+import { Grid } from 'indigo-react';
3import HeaderButton from 'components/L2/Headers/HeaderButton';
3import HeaderButton from 'components/L2/Headers/HeaderButton';
4import { useHistory } from 'store/history';
4import { useHistory } from 'store/history';
5import Window from 'components/L2/Window/Window';
5import Window from 'components/L2/Window/Window';
src/views/Activate/CodeExpired.tsx−2
@@ -1,5 +1,3 @@
1−import View from 'components/View';
2−
3import { Box, Button } from '@tlon/indigo-react';
1import { Box, Button } from '@tlon/indigo-react';
4import { FadeableActivateHeader as ActivateHeader } from './ActivateHeader';
2import { FadeableActivateHeader as ActivateHeader } from './ActivateHeader';
5import useFadeIn from './useFadeIn';
3import useFadeIn from './useFadeIn';
src/views/Activate/MasterKeyCopy.tsx+1−5
@@ -23,11 +23,7 @@ const MasterKeyCopy = ({ text, className }: MasterKeyCopyProps) => {
23 alignItems={'center'}
23 alignItems={'center'}
24 cursor={'pointer'}
24 cursor={'pointer'}
25 padding={'10px 15px'}>
25 padding={'10px 15px'}>
26− <Icon
27− color={color}
28− icon={icon as 'Checkmark' | 'Copy'}
26+ <Icon color={color} icon={icon as 'Checkmark' | 'Copy'} size="16px" />
29− size="16px"
30− />
31 <Text color={color} fontSize={'14px'} ml="4px" fontFamily={'Inter'}>
27 <Text color={color} fontSize={'14px'} ml="4px" fontFamily={'Inter'}>
32 {label}
28 {label}
33 </Text>
29 </Text>
src/views/Activate/MasterKeyTransfer.tsx+4−2
@@ -96,8 +96,10 @@ const MasterKeyTransfer = () => {
96 justifyContent={'space-between'}>
96 justifyContent={'space-between'}>
97 {error && <DangerBox>{error.toString()}</DangerBox>}
97 {error && <DangerBox>{error.toString()}</DangerBox>}
98 <ActivateButton
98 <ActivateButton
99+ onClick={() =>
99− onClick={() => window.open('https://urbit.org/getting-started/cloud-hosting')}
100+ window.open('https://urbit.org/getting-started/cloud-hosting')
101+ }
100− className='pointer-hover'
102+ className="pointer-hover"
101 disabled={error}
103 disabled={error}
102 success={true}>
104 success={true}>
103 To use it, set up a cloud instance for your urbit
105 To use it, set up a cloud instance for your urbit
src/views/Activate/useActivateFlowState.js+3−1
@@ -16,7 +16,9 @@ export default function useActivateFlowState() {
16 // the Master Key (ticket) and downloads the passport / mnemonic,
16 // the Master Key (ticket) and downloads the passport / mnemonic,
17 // it is for this wallet
17 // it is for this wallet
18 // type UrbitWallet
18 // type UrbitWallet
19− const [inviteMasterTicketWallet, setInviteMasterTicketWallet] = useState(Nothing());
19+ const [inviteMasterTicketWallet, setInviteMasterTicketWallet] = useState(
20+ Nothing()
21+ );
20 // The wallet generated deterministically during the invite creation flow;
22 // The wallet generated deterministically during the invite creation flow;
21 // it is re-generated when the user starts the Activate flow. It is used
23 // it is re-generated when the user starts the Activate flow. It is used
22 // to derive and confirm a shareable ticket that a user can activate a point with.
24 // to derive and confirm a shareable ticket that a user can activate a point with.
src/views/Disclaimer.jsx+1−2
@@ -1,6 +1,5 @@
1import React, { useCallback, useMemo } from 'react';
1import React, { useCallback, useMemo } from 'react';
2−import cn from 'classnames';
3−import { Grid, H3, B, Text, CheckboxInput } from 'indigo-react';
2+import { Grid, Text, CheckboxInput } from 'indigo-react';
4
3
5import useHasDisclaimed from 'lib/useHasDisclaimed';
4import useHasDisclaimed from 'lib/useHasDisclaimed';
6import { useLocalRouter } from 'lib/LocalRouter';
5import { useLocalRouter } from 'lib/LocalRouter';
src/views/Invite/useInvites.ts+13−8
@@ -24,7 +24,6 @@ import {
24 setStoredInvites,
24 setStoredInvites,
25} from 'store/storage/roller';
25} from 'store/storage/roller';
26import { useWallet } from 'store/wallet';
26import { useWallet } from 'store/wallet';
27−import { usePointCache } from 'store/pointCache';
28import create from 'zustand';
27import create from 'zustand';
29import { generateCsvLine } from 'lib/utils/invite';
28import { generateCsvLine } from 'lib/utils/invite';
30import Point from 'lib/types/Point';
29import Point from 'lib/types/Point';
@@ -94,11 +93,9 @@ export const useInviteStore = create<InviteStore>((set, get) => ({
94
93
95export function useInvites() {
94export function useInvites() {
96 const { wallet, authToken, walletType }: any = useWallet();
95 const { wallet, authToken, walletType }: any = useWallet();
97− const { connector } = useWalletConnect();
96+ const { connector, isConnected, signPersonalMessage } = useWalletConnect();
98 const { pointCursor }: any = usePointCursor();
97 const { pointCursor }: any = usePointCursor();
99 const { web3, contracts }: any = useNetwork();
98 const { web3, contracts }: any = useNetwork();
100− const allPoints: any = usePointCache();
101− const getDetails = allPoints?.getDetails;
102 const { api, ls, performL2Reticket } = useRoller();
99 const { api, ls, performL2Reticket } = useRoller();
103 const { point, pointList, setPendingTransactions } = useRollerStore();
100 const { point, pointList, setPendingTransactions } = useRollerStore();
104 const {
101 const {
@@ -208,6 +205,7 @@ export function useInvites() {
208 setInvites,
205 setInvites,
209 setPendingTransactions,
206 setPendingTransactions,
210 updateJob,
207 updateJob,
208+ inviteJobs,
211 ]);
209 ]);
212
210
213 const generateInviteCodes = useCallback(
211 const generateInviteCodes = useCallback(
@@ -277,6 +275,8 @@ export function useInvites() {
277 walletType,
275 walletType,
278 web3: _web3,
276 web3: _web3,
279 connector,
277 connector,
278+ signPersonalMessage,
279+ isConnected,
280 });
280 });
281
281
282 const networkSeed = await deriveNetworkSeedFromUrbitWallet(
282 const networkSeed = await deriveNetworkSeedFromUrbitWallet(
@@ -294,6 +294,8 @@ export function useInvites() {
294 walletType,
294 walletType,
295 web3: _web3,
295 web3: _web3,
296 connector,
296 connector,
297+ signPersonalMessage,
298+ isConnected,
297 });
299 });
298
300
299 await registerProxyAddress(
301 await registerProxyAddress(
@@ -306,7 +308,9 @@ export function useInvites() {
306 inviteWallet.management.keys.address,
308 inviteWallet.management.keys.address,
307 walletType,
309 walletType,
308 _web3,
310 _web3,
309− connector
311+ connector,
312+ signPersonalMessage,
313+ isConnected
310 );
314 );
311
315
312 await submitL2Transaction({
316 await submitL2Transaction({
@@ -320,6 +324,8 @@ export function useInvites() {
320 walletType,
324 walletType,
321 web3: _web3,
325 web3: _web3,
322 connector,
326 connector,
327+ signPersonalMessage,
328+ isConnected,
323 });
329 });
324 }
330 }
325
331
@@ -342,13 +348,12 @@ export function useInvites() {
342 api,
348 api,
343 authToken,
349 authToken,
344 connector,
350 connector,
351+ isConnected,
352+ signPersonalMessage,
345 contracts,
353 contracts,
346− pointCursor,
347− point,
348 wallet,
354 wallet,
349 walletType,
355 walletType,
350 web3,
356 web3,
351− getDetails,
352 ls,
357 ls,
353 getInvites,
358 getInvites,
354 updateJob,
359 updateJob,
src/views/Login/LoginSelector.tsx+3−3
@@ -1,6 +1,6 @@
1import React, { useCallback, useState } from 'react';
1import React, { useCallback, useState } from 'react';
2import cn from 'classnames';
2import cn from 'classnames';
3−import { Flex, Grid } from 'indigo-react';
3+import { Grid } from 'indigo-react';
4import {
4import {
5 Box,
5 Box,
6 Button,
6 Button,
@@ -99,7 +99,7 @@ export default function LoginSelector({
99 /**
99 /**
100 * Ensure wallet is connected to expected chain
100 * Ensure wallet is connected to expected chain
101 */
101 */
102− if (window.ethereum.chainId !== expectedChainId() ) {
102+ if (window.ethereum.chainId !== expectedChainId()) {
103 console.log(`unexpected chain: ${window.ethereum.chainId}`);
103 console.log(`unexpected chain: ${window.ethereum.chainId}`);
104 await window.ethereum.request({
104 await window.ethereum.request({
105 method: 'wallet_switchEthereumChain',
105 method: 'wallet_switchEthereumChain',
@@ -167,7 +167,7 @@ export default function LoginSelector({
167 if (value === NAMES.METAMASK) {
167 if (value === NAMES.METAMASK) {
168 selectMetamask();
168 selectMetamask();
169 } else if (value === NAMES.WALLET_CONNECT) {
169 } else if (value === NAMES.WALLET_CONNECT) {
170− connect();
170+ !isConnected() && connect();
171 } else {
171 } else {
172 setCurrentTab(value);
172 setCurrentTab(value);
173 }
173 }
src/views/Login/Mnemonic.tsx+1
@@ -82,6 +82,7 @@ export default function Mnemonic({ className, goHome }: MnemonicProps) {
82 setWallet,
82 setWallet,
83 setWalletHdPath,
83 setWalletHdPath,
84 skipValidation,
84 skipValidation,
85+ debouncedOnValues,
85 ]);
86 ]);
86
87
87 const initialValues = {
88 const initialValues = {
src/views/Ops/Ops.tsx+21−17
@@ -67,9 +67,10 @@ export const Ops = () => {
67 </Row>
67 </Row>
68 </HeaderPane>
68 </HeaderPane>
69 <BodyPane>
69 <BodyPane>
70+ <Row
70− <Row className={"between-row management" +
71+ className={
71− (point.canManage ? "" : " disabled")}
72+ 'between-row management' + (point.canManage ? '' : ' disabled')
72− >
73+ }>
73 <Box>
74 <Box>
74 <Box className="section-title">Residents</Box>
75 <Box className="section-title">Residents</Box>
75 <Box className="subtitle">
76 <Box className="subtitle">
@@ -77,15 +78,16 @@ export const Ops = () => {
77 for
78 for
78 </Box>
79 </Box>
79 </Box>
80 </Box>
81+ <Button
80− <Button className="secondary"
82+ className="secondary"
81− onClick={point.canManage ? goResidents : undefined}
83+ onClick={point.canManage ? goResidents : undefined}>
82− >
83 View
84 View
84 </Button>
85 </Button>
85 </Row>
86 </Row>
87+ <Row
86− <Row className={"between-row management" +
88+ className={
87− (point.canManage ? "" : " disabled")}
89+ 'between-row management' + (point.canManage ? '' : ' disabled')
88− >
90+ }>
89 <Box>
91 <Box>
90 <Box className="section-title">Requests</Box>
92 <Box className="section-title">Requests</Box>
91 <Box className="subtitle">
93 <Box className="subtitle">
@@ -93,23 +95,25 @@ export const Ops = () => {
93 sponsorship
95 sponsorship
94 </Box>
96 </Box>
95 </Box>
97 </Box>
98+ <Button
96− <Button className="secondary"
99+ className="secondary"
97− onClick={point.canManage ? goRequests : undefined}
100+ onClick={point.canManage ? goRequests : undefined}>
98− >
99 View
101 View
100 </Button>
102 </Button>
101 </Row>
103 </Row>
102 {point.isGalaxy && (
104 {point.isGalaxy && (
105+ <Row
103− <Row className={"between-row management" +
106+ className={
104− (point.canVote ? "" : " disabled")}
107+ 'between-row management' + (point.canVote ? '' : ' disabled')
105− >
108+ }>
106− <Box >
109+ <Box>
107 <Box className="section-title">Proposals</Box>
110 <Box className="section-title">Proposals</Box>
108 <Box className="subtitle">
111 <Box className="subtitle">
109 View or vote on proposals in the Senate
112 View or vote on proposals in the Senate
110 </Box>
113 </Box>
111 </Box>
114 </Box>
115+ <Button
112− <Button className="secondary"
116+ className="secondary"
113 onClick={point.canVote ? goSenate : undefined}>
117 onClick={point.canVote ? goSenate : undefined}>
114 View
118 View
115 </Button>
119 </Button>
src/views/Point/Point.tsx+3−2
@@ -114,8 +114,9 @@ export default function Point() {
114 <PendingTransaction
114 <PendingTransaction
115 layer={2}
115 layer={2}
116 nextRoll={nextRoll}
116 nextRoll={nextRoll}
117− title={`${spawnedPending} Planet${spawnedPending > 1 ? 's' : ''
117+ title={`${spawnedPending} Planet${
118+ spawnedPending > 1 ? 's' : ''
118− } Spawned`}
119+ } Spawned`}
119 />
120 />
120 )}
121 )}
121 {!!otherPending.length &&
122 {!!otherPending.length &&
src/views/UrbitID/Home.tsx+3−3
@@ -79,9 +79,9 @@ export default function UrbitIDHome() {
79 {keysDownloaded
79 {keysDownloaded
80 ? 'Downloaded!'
80 ? 'Downloaded!'
81 : paper.matchWith({
81 : paper.matchWith({
82− Nothing: () => 'Printing and folding...',
82+ Nothing: () => 'Printing and folding...',
83− Just: (_: any) => 'Download Passport',
83+ Just: (_: any) => 'Download Passport',
84− })}
84+ })}
85 </Button>
85 </Button>
86 )}
86 )}
87 </Row>
87 </Row>
src/views/UrbitID/ResetKeys/ResetExecute.tsx+3−1
@@ -77,6 +77,7 @@ export default function ResetExecute({
77 signTransaction: wcSign,
77 signTransaction: wcSign,
78 sendTransaction: wcSend,
78 sendTransaction: wcSend,
79 connector,
79 connector,
80+ isConnected,
80 } = useWalletConnect();
81 } = useWalletConnect();
81 const { performL2SpawnReticket } = useReticketL2Spawn();
82 const { performL2SpawnReticket } = useReticketL2Spawn();
82
83
@@ -130,7 +131,7 @@ export default function ResetExecute({
130 // due to react shenanigans we may need to wait for the connector
131 // due to react shenanigans we may need to wait for the connector
131 if (
132 if (
132 walletType === WALLET_TYPES.WALLET_CONNECT &&
133 walletType === WALLET_TYPES.WALLET_CONNECT &&
133− (!connector || !connector.connected)
134+ (!connector || isConnected())
134 ) {
135 ) {
135 setGeneralError(new Error('Awaiting WalletConnect connection...'));
136 setGeneralError(new Error('Awaiting WalletConnect connection...'));
136 return;
137 return;
@@ -214,6 +215,7 @@ export default function ResetExecute({
214 walletType,
215 walletType,
215 wcSend,
216 wcSend,
216 wcSign,
217 wcSign,
218+ isConnected,
217 web3,
219 web3,
218 ]);
220 ]);
219
221
src/worker/index.ts+1−1
@@ -3,4 +3,4 @@ import { Buffer } from 'buffer/';
3
3
4export const walletgenWorker = new ComlinkWorker<typeof import('./worker')>(
4export const walletgenWorker = new ComlinkWorker<typeof import('./worker')>(
5 new URL('./worker.ts', import.meta.url)
5 new URL('./worker.ts', import.meta.url)
6−)
6+);