diff --git a/package.json b/package.json index 0a7cc2bf133..f9a74d2b7ed 100644 --- a/package.json +++ b/package.json @@ -135,13 +135,14 @@ "@dlc-link/dlc-tools": "1.1.1", "@fungible-systems/zone-file": "2.0.0", "@hirosystems/token-metadata-api-client": "1.2.0", - "@leather-wallet/models": "0.6.6", - "@leather-wallet/query": "0.6.8", - "@leather-wallet/tokens": "0.5.0", - "@leather-wallet/utils": "0.6.6", + "@leather-wallet/bitcoin": "0.6.9", + "@leather-wallet/models": "0.6.8", + "@leather-wallet/query": "0.6.12", + "@leather-wallet/tokens": "0.5.2", + "@leather-wallet/utils": "0.7.0", "@ledgerhq/hw-transport-webusb": "6.27.19", - "@noble/hashes": "1.3.2", - "@noble/secp256k1": "2.0.0", + "@noble/hashes": "1.4.0", + "@noble/secp256k1": "2.1.0", "@octokit/types": "12.4.0", "@radix-ui/colors": "3.0.0", "@radix-ui/react-accessible-icon": "1.0.3", @@ -155,10 +156,10 @@ "@radix-ui/react-tooltip": "1.0.7", "@radix-ui/themes": "2.0.3", "@reduxjs/toolkit": "2.2.3", - "@scure/base": "1.1.5", - "@scure/bip32": "1.3.3", + "@scure/base": "1.1.6", + "@scure/bip32": "1.4.0", "@scure/bip39": "1.3.0", - "@scure/btc-signer": "1.2.1", + "@scure/btc-signer": "1.3.2", "@segment/analytics-next": "1.70.0", "@sentry/tracing": "7.106.0", "@stacks/auth": "6.15.0", @@ -253,9 +254,9 @@ "@actions/core": "1.10.1", "@btckit/types": "0.0.19", "@chromatic-com/storybook": "1.2.23", - "@leather-wallet/prettier-config": "0.4.0", - "@leather-wallet/rpc": "0.3.10", "@leather-wallet/panda-preset": "0.2.0", + "@leather-wallet/prettier-config": "0.4.0", + "@leather-wallet/rpc": "1.0.1", "@ls-lint/ls-lint": "2.2.3", "@mdx-js/loader": "3.0.0", "@pandacss/dev": "0.40.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9015ef4438..d588a0d0ef3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,27 +33,30 @@ importers: '@hirosystems/token-metadata-api-client': specifier: 1.2.0 version: 1.2.0(encoding@0.1.13) + '@leather-wallet/bitcoin': + specifier: 0.6.9 + version: 0.6.9(encoding@0.1.13) '@leather-wallet/models': - specifier: 0.6.6 - version: 0.6.6 - '@leather-wallet/query': specifier: 0.6.8 - version: 0.6.8(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.6.8 + '@leather-wallet/query': + specifier: 0.6.12 + version: 0.6.12(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@leather-wallet/tokens': - specifier: 0.5.0 - version: 0.5.0 + specifier: 0.5.2 + version: 0.5.2 '@leather-wallet/utils': - specifier: 0.6.6 - version: 0.6.6 + specifier: 0.7.0 + version: 0.7.0 '@ledgerhq/hw-transport-webusb': specifier: 6.27.19 version: 6.27.19 '@noble/hashes': - specifier: 1.3.2 - version: 1.3.2 + specifier: 1.4.0 + version: 1.4.0 '@noble/secp256k1': - specifier: 2.0.0 - version: 2.0.0 + specifier: 2.1.0 + version: 2.1.0 '@octokit/types': specifier: 12.4.0 version: 12.4.0 @@ -94,17 +97,17 @@ importers: specifier: 2.2.3 version: 2.2.3(react-redux@9.1.0(@types/react@18.3.3)(react@18.3.1)(redux@5.0.1))(react@18.3.1) '@scure/base': - specifier: 1.1.5 - version: 1.1.5 + specifier: 1.1.6 + version: 1.1.6 '@scure/bip32': - specifier: 1.3.3 - version: 1.3.3 + specifier: 1.4.0 + version: 1.4.0 '@scure/bip39': specifier: 1.3.0 version: 1.3.0 '@scure/btc-signer': - specifier: 1.2.1 - version: 1.2.1 + specifier: 1.3.2 + version: 1.3.2 '@segment/analytics-next': specifier: 1.70.0 version: 1.70.0(encoding@0.1.13) @@ -389,8 +392,8 @@ importers: specifier: 0.4.0 version: 0.4.0(@vue/compiler-sfc@3.4.19) '@leather-wallet/rpc': - specifier: 0.3.10 - version: 0.3.10 + specifier: 1.0.1 + version: 1.0.1 '@ls-lint/ls-lint': specifier: 2.2.3 version: 2.2.3 @@ -405,13 +408,13 @@ importers: version: 1.44.0 '@pmmmwh/react-refresh-webpack-plugin': specifier: 0.5.13 - version: 0.5.13(@types/webpack@5.28.5(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))(react-refresh@0.14.0)(type-fest@3.13.1)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.91.0))(webpack-hot-middleware@2.26.1)(webpack@5.91.0(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0))) + version: 0.5.13(@types/webpack@5.28.5(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))(react-refresh@0.14.2)(type-fest@4.19.0)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.91.0))(webpack-hot-middleware@2.26.1)(webpack@5.91.0(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0))) '@redux-devtools/cli': specifier: 4.0.0 version: 4.0.0(@babel/core@7.24.4)(@types/react-dom@18.3.0)(@types/styled-components@5.1.34)(encoding@0.1.13) '@redux-devtools/remote': specifier: 0.9.3 - version: 0.9.3(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.4)(redux@5.0.1) + version: 0.9.3(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.6)(redux@5.0.1) '@schemastore/web-manifest': specifier: 0.0.6 version: 0.0.6 @@ -435,7 +438,7 @@ importers: version: 8.0.1(@types/react@18.3.3)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-interactions': specifier: 8.0.1 - version: 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2)) + version: 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0)) '@storybook/addon-links': specifier: 8.0.1 version: 8.0.1(react@18.3.1) @@ -459,7 +462,7 @@ importers: version: 8.0.1(@swc/core@1.4.8)(encoding@0.1.13)(esbuild@0.21.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)) '@storybook/test': specifier: 8.0.1 - version: 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2)) + version: 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0)) '@storybook/theming': specifier: 8.0.1 version: 8.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -537,7 +540,7 @@ importers: version: 7.5.0(eslint@8.56.0)(typescript@5.4.5) '@vitest/coverage-istanbul': specifier: 1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2)) + version: 1.6.0(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0)) audit-ci: specifier: 6.6.1 version: 6.6.1 @@ -666,7 +669,7 @@ importers: version: 5.4.5 vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2) + version: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0) vm-browserify: specifier: 1.1.2 version: 1.1.2 @@ -1012,8 +1015,8 @@ packages: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.6': - resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.22.20': @@ -1024,6 +1027,10 @@ packages: resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.0-alpha.5': resolution: {integrity: sha512-kcoGwdxi58Npdfof0ghzycZQ1n7USE0DGNDCvR6f2pYxmAQpxrauuJnGIgOqCyOAT+zLQAnjl/kYgLCWYTs6QA==} engines: {node: ^16.20.0 || ^18.16.0 || >=20.0.0} @@ -1074,8 +1081,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.24.6': - resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1625,8 +1632,8 @@ packages: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.6': - resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} '@base2/pretty-print-object@1.0.1': @@ -1659,8 +1666,8 @@ packages: resolution: {integrity: sha512-We0knVd0x8M998jDOvNgesN+wqzvGuYA6Q8oNRAhGhTcIjd9AsPGEpPo9glqZb/wot9nioiz3bnFQH50M/FtXQ==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - '@clack/core@0.3.3': - resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} + '@clack/core@0.3.4': + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} '@clack/prompts@0.6.3': resolution: {integrity: sha512-AM+kFmAHawpUQv2q9+mcB6jLKxXGjgu/r2EQjEwujgpCdzrST6BJqYw00GRn56/L/Izw5U7ImoLmy00X/r80Pw==} @@ -2431,6 +2438,9 @@ packages: '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -2443,14 +2453,26 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@leather-wallet/bitcoin@0.6.6': - resolution: {integrity: sha512-YH3Vt5VXuzmj3vK85G6VIxTjx7FYwmBZDFeuLuPexvYTMfU7JVPXsb4BMO6C4AFXTC0TpFQa6qSTGrEAJfxCqQ==} + '@leather-wallet/bitcoin@0.6.10': + resolution: {integrity: sha512-qIw1j80wwCNhoT8Is5lz6ciBH3OPt48xN0uh/fjVu1VP34Hk+JT/a8vOYF0zwGeDs2wBDOvb+9qTzZFPojb6Fw==} + + '@leather-wallet/bitcoin@0.6.9': + resolution: {integrity: sha512-F4BIWhvEQICI1JuydUSszOunHjXK6gC6hGU+sjJwfLAMQpP4iNl1CcdSY414jxbeInue+ugKDrhMA8bg9dRrvg==} + + '@leather-wallet/constants@0.6.2': + resolution: {integrity: sha512-FbqCB6OTjYRX3mKUkQjgGOTNXT30Z0vGydRVoLc5pC/4PSAgt2hfPCKA4XdYeIzKXBB/QILq6n4LKJzZgUExlw==} + + '@leather-wallet/constants@0.6.3': + resolution: {integrity: sha512-AnNfUKuTWyYC0Y2k82x/8e2YvsFQgF7iDKxVfN8lTELBUCuihvqNxjcrOX1T3w8CHIWZ1iRPkzn1YtUC3AGvTw==} - '@leather-wallet/constants@0.6.1': - resolution: {integrity: sha512-hchHbLTEDueM1vFe1xmYeJLx2hj4cQaDQX5DmgDZ/W1haBqfQ1meWxkX1FPXk8af9Dtm0ZfF957LkUWbkXnSTg==} + '@leather-wallet/crypto@1.0.1': + resolution: {integrity: sha512-6C4KYuknq0QgSHOuQAwa/VNokNuUmGXiigZygKH7ldpzdPLadC6GbSAITp1Qe7hlYTzWQhsWtEUnWLll4/JCYw==} - '@leather-wallet/models@0.6.6': - resolution: {integrity: sha512-RRQ2rk7zB8bTIDCO4nTwBowJ/rcBRYn/5MfDEKDPOEYW7BsmgKZH5PHxhAYrutW0WW8XqOUTOSXvwvoGKu1oXw==} + '@leather-wallet/models@0.6.7': + resolution: {integrity: sha512-OUcn3Az0n2wc9oaL9BSIgepdYVUkV2RI8PXfh1osnfxUu0xdzTeTZ/24xHcpzLxQwpfE8LAbOSgOthHxSTGBQQ==} + + '@leather-wallet/models@0.6.8': + resolution: {integrity: sha512-KMnbrfcsb58A7e2cDP5xXK5S3XRR050Jx9otGPYE+z5KLGel4tyEydCaFmPXl8qRrnY60oFxDmUfWkSDVE999Q==} '@leather-wallet/panda-preset@0.2.0': resolution: {integrity: sha512-Qsr7qsujbebaHYpKfgiOVL6w2ryw5E9j2dpo19wsctRaq5GpXhjMN5nLioJ1HS3xLWEgXlfDWMTTcEs7bu+9Ig==} @@ -2458,19 +2480,25 @@ packages: '@leather-wallet/prettier-config@0.4.0': resolution: {integrity: sha512-fKLW8t2DqT0H23iKY0pCXRJpynKOz/GS6V91qtFpgrFUgAEFJLf40+gK7Y9OyEgNqCP0h7zYwjFhDbqMIbac+A==} - '@leather-wallet/query@0.6.8': - resolution: {integrity: sha512-uqQztPXC17kfSjgzTVsWF5wNOO3tQhy2/LEQGIo+i37HbUf3RE01I2l/V/KjwmuVR6Cu9YjpJcNQ2L4v0eYT7A==} + '@leather-wallet/query@0.6.12': + resolution: {integrity: sha512-FRKU85B0bS7cmRoUynQxt1eeZK9Xi3ln6R+yJudi0aaIy636x0fa2lAXpaVzbCkzpKmpv9JX3RuDKDTGAfFOzA==} peerDependencies: react: '*' - '@leather-wallet/rpc@0.3.10': - resolution: {integrity: sha512-H0Iz8fjGeYDJcBlzUEkthmLcLaXQvX4m3kp8tA4Tyx6ntdji3PA49cFEwUDUEGIHmOFYy0IEvO34cAmKufs5xw==} + '@leather-wallet/rpc@1.0.0': + resolution: {integrity: sha512-k5Dvayh9c0dPuEafymha4vBf0ARwFv8kdMj3CODhMmMrDVidXcqsHRC/s2R3NjU2FDNqzpFfsB/HWRl6JldPDQ==} + + '@leather-wallet/rpc@1.0.1': + resolution: {integrity: sha512-0ObP4YNxNNm67vrubfX2RrecItUb0qOk/RTae/tZVeF+oaqJ4PPsIa+dZponUkCto6Hjid5eudSiT5yx54HIAA==} - '@leather-wallet/tokens@0.5.0': - resolution: {integrity: sha512-i7eXEZpZUKHKchhwxlzewbeLPh8zBuxTcg+FInl89kT+zZRL/vt9pOHBeS2SL5i7TTyBjlnkFBIhCXqQjFacQQ==} + '@leather-wallet/tokens@0.5.2': + resolution: {integrity: sha512-+/1dM24D/d7lyW8f4WFDmAgtsRZmUu+PhmFELa2nD4esYcP4zehVNh+rJN+xfW9U6JgSNXuii2xRjdD+XkSGdg==} - '@leather-wallet/utils@0.6.6': - resolution: {integrity: sha512-X1fS08b0znP6DkMWff2EaMtR2tdU/szQrNq4p16M7tw0BR8IRWcGtGtsqLl71zo28/qKrEe8PqZxv02hzvd2gA==} + '@leather-wallet/utils@0.6.7': + resolution: {integrity: sha512-bcgiOfPKCp1B/Pu11MB7e0juZ7SFIkz49dys/EnRTrOioiLA1v9c2s+0NxYQEMSkLvJomxJ0UnehLQhX+AQoDg==} + + '@leather-wallet/utils@0.7.0': + resolution: {integrity: sha512-Ql61C8jLqVvj2xjVceW8DTfdciNjs6wC7oLMmbR2CouikNSS7JZbCMX0hvHCWN0yFJ5TDQ8lZUnLK0pvbWw6kw==} '@ledgerhq/devices@8.2.0': resolution: {integrity: sha512-XROTW2gTmmuy+YPPDjdtKKTQ3mfxrPtKtV+a9QFbj8f5MnjVMV0Zpy1BIB4CyIMsVVi4z6+nI67auT7IlsM3SQ==} @@ -2530,20 +2558,12 @@ packages: '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} - '@noble/curves@1.3.0': - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} '@noble/hashes@1.1.5': resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.3.3': - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -2551,8 +2571,8 @@ packages: '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - '@noble/secp256k1@2.0.0': - resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==} + '@noble/secp256k1@2.1.0': + resolution: {integrity: sha512-XLEQQNdablO0XZOIniFQimiXsZDNwaYgL96dZwC54Q30imSbAOFf3NKtepc+cXyuZf5Q1HCgbqgZ2UFFuHVcEw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -3587,32 +3607,23 @@ packages: '@schemastore/web-manifest@0.0.6': resolution: {integrity: sha512-mhMEg7qUdpPuqdTAs2xh2GBAISAE++74uFX3y84G0GPwkBF1kdiDVypKbHIbizYTEFty+Ieurxoagq9KRkgEiw==} - '@scure/base@1.1.3': - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} - - '@scure/base@1.1.5': - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - '@scure/base@1.1.6': resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} '@scure/bip32@1.1.3': resolution: {integrity: sha512-dSH3+LCWONlSNQuF34xZrG6Xas7tp2jSSqHb/pMfXWM0vKE4JZOtK3uJfoWouUVW5IGlls75HkXmYLldZ8ySgQ==} - '@scure/bip32@1.3.3': - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} '@scure/bip39@1.1.0': resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - '@scure/btc-signer@1.2.1': - resolution: {integrity: sha512-/Zle18/aWhYDBuBeXGDGJTdo0/LKpQhU8ETBJeWABCQkbk0QHCFCinidTiz9hdQFfh0HtasPGq5p6EodVCfEew==} + '@scure/btc-signer@1.3.2': + resolution: {integrity: sha512-BmcQHvxaaShKwgbFC0vDk0xzqbMhNtNmgXm6u7cz07FNtGsVItUuHow6NbgHmc+oJSBZJRym5dz8+Uu0JoEJhQ==} '@segment/analytics-core@1.6.0': resolution: {integrity: sha512-bn9X++IScUfpT7aJGjKU/yJAu/Ko2sYD6HsKA70Z2560E89x30pqgqboVKY8kootvQnT4UKCJiUr5NDMgjmWdQ==} @@ -5213,6 +5224,9 @@ packages: '@types/node@18.19.29': resolution: {integrity: sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==} + '@types/node@18.19.34': + resolution: {integrity: sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==} + '@types/node@20.12.12': resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} @@ -6366,6 +6380,9 @@ packages: caniuse-lite@1.0.30001605: resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==} + caniuse-lite@1.0.30001629: + resolution: {integrity: sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==} + case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} @@ -6907,8 +6924,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-utils@4.0.1: - resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -8566,6 +8583,9 @@ packages: immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + immutable@4.3.6: + resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -9059,6 +9079,10 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + jiti@1.21.3: + resolution: {integrity: sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -9319,58 +9343,116 @@ packages: cpu: [arm64] os: [darwin] + lightningcss-darwin-arm64@1.25.1: + resolution: {integrity: sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-x64@1.23.0: resolution: {integrity: sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-darwin-x64@1.25.1: + resolution: {integrity: sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-freebsd-x64@1.23.0: resolution: {integrity: sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-freebsd-x64@1.25.1: + resolution: {integrity: sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.23.0: resolution: {integrity: sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm-gnueabihf@1.25.1: + resolution: {integrity: sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm64-gnu@1.23.0: resolution: {integrity: sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-arm64-gnu@1.25.1: + resolution: {integrity: sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-arm64-musl@1.23.0: resolution: {integrity: sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-arm64-musl@1.25.1: + resolution: {integrity: sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-x64-gnu@1.23.0: resolution: {integrity: sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-linux-x64-gnu@1.25.1: + resolution: {integrity: sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-linux-x64-musl@1.23.0: resolution: {integrity: sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-linux-x64-musl@1.25.1: + resolution: {integrity: sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-win32-x64-msvc@1.23.0: resolution: {integrity: sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss-win32-x64-msvc@1.25.1: + resolution: {integrity: sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.23.0: resolution: {integrity: sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA==} engines: {node: '>= 12.0.0'} + lightningcss@1.25.1: + resolution: {integrity: sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==} + engines: {node: '>= 12.0.0'} + lil-fp@1.4.5: resolution: {integrity: sha512-RrMQ2dB7SDXriFPZMMHEmroaSP6lFw3QEV7FOfSkf19kvJnDzHqKMc2P9HOf5uE8fOp5YxodSrq7XxWjdeC2sw==} @@ -9730,12 +9812,15 @@ packages: micro-packed@0.3.2: resolution: {integrity: sha512-D1Bq0/lVOzdxhnX5vylCxZpdw5LylH7Vd81py0DfRsKUP36XYpwvy8ZIsECVo3UfnoROn8pdKqkOzL7Cd82sGA==} - micro-packed@0.5.3: - resolution: {integrity: sha512-zWRoH+qUb/ZMp9gVZhexvRGCENDM5HEQF4sflqpdilUHWK2/zKR7/MT8GBctnTwbhNJwy1iuk5q6+TYP7/twYA==} + micro-packed@0.6.3: + resolution: {integrity: sha512-VmVkyc7lIzAq/XCPFuLc/CwQ7Ehs5XDK3IwqsZHiBIDttAI9Gs7go6Lv4lNRuAIKrGKcRTtthFKUNyHS0S4wJQ==} microdiff@1.3.2: resolution: {integrity: sha512-pKy60S2febliZIbwdfEQKTtL5bLNxOyiRRmD400gueYl9XcHyNGxzHSlJWn9IMHwYXT0yohPYL08+bGozVk8cQ==} + microdiff@1.4.0: + resolution: {integrity: sha512-OBKBOa1VBznvLPb/3ljeJaENVe0fO0lnWl77lR4vhPlQD71UpjEoRV5P0KdQkcjbFlBu1Oy2mEUBMU3wxcBAGg==} + micromark-core-commonmark@2.0.0: resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} @@ -10533,6 +10618,9 @@ packages: picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -10677,8 +10765,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-discard-duplicates@6.0.1: - resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10689,8 +10777,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-discard-empty@6.0.1: - resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10761,8 +10849,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-merge-rules@6.0.3: - resolution: {integrity: sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==} + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10773,8 +10861,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-minify-selectors@6.0.2: - resolution: {integrity: sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==} + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10821,8 +10909,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-normalize-whitespace@6.0.1: - resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10879,10 +10967,18 @@ packages: peerDependencies: postcss: ^8.4 + postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -10902,6 +10998,10 @@ packages: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -11259,8 +11359,8 @@ packages: redux: optional: true - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} react-remove-scroll-bar@2.3.5: @@ -12263,6 +12363,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -12539,6 +12644,10 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} + type-fest@4.19.0: + resolution: {integrity: sha512-CN2l+hWACRiejlnr68vY0/7734Kzu+9+TOslUXbSCQ1ruY9XIHDBSceVXCcHm/oXrdzhtLMMdJEKfemf1yXiZQ==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -13540,7 +13649,7 @@ snapshots: '@babel/generator@7.17.7': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 jsesc: 2.5.2 source-map: 0.5.7 @@ -13564,11 +13673,11 @@ snapshots: '@babel/helper-annotate-as-pure@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-compilation-targets@7.23.6': dependencies: @@ -13649,7 +13758,7 @@ snapshots: '@babel/helper-function-name@7.24.6': dependencies: '@babel/template': 7.24.6 - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-hoist-variables@7.22.5': dependencies: @@ -13657,15 +13766,15 @@ snapshots: '@babel/helper-hoist-variables@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-member-expression-to-functions@7.23.0': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-member-expression-to-functions@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-module-imports@7.22.15': dependencies: @@ -13673,7 +13782,7 @@ snapshots: '@babel/helper-module-imports@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0)': dependencies: @@ -13704,11 +13813,11 @@ snapshots: '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-optimise-call-expression@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-plugin-utils@7.22.5': {} @@ -13737,19 +13846,19 @@ snapshots: '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-simple-access@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-skip-transparent-expression-wrappers@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-split-export-declaration@7.22.6': dependencies: @@ -13757,16 +13866,18 @@ snapshots: '@babel/helper-split-export-declaration@7.24.6': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helper-string-parser@7.23.4': {} - '@babel/helper-string-parser@7.24.6': {} + '@babel/helper-string-parser@7.24.7': {} '@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.24.6': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@8.0.0-alpha.5': {} '@babel/helper-validator-option@7.23.5': {} @@ -13777,7 +13888,7 @@ snapshots: dependencies: '@babel/helper-function-name': 7.24.6 '@babel/template': 7.24.6 - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/helpers@7.24.0': dependencies: @@ -13810,7 +13921,7 @@ snapshots: '@babel/highlight@7.24.6': dependencies: - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 @@ -13829,9 +13940,9 @@ snapshots: dependencies: '@babel/types': 7.24.0 - '@babel/parser@7.24.6': + '@babel/parser@7.24.7': dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.6(@babel/core@7.24.4)': dependencies: @@ -14402,7 +14513,7 @@ snapshots: dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.6 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 esutils: 2.0.3 '@babel/preset-typescript@7.23.3(@babel/core@7.24.4)': @@ -14446,19 +14557,19 @@ snapshots: '@babel/template@7.24.6': dependencies: '@babel/code-frame': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@babel/traverse@7.23.2': dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.6 '@babel/generator': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-hoist-variables': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: @@ -14496,7 +14607,7 @@ snapshots: '@babel/types@7.17.0': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 '@babel/types@7.24.0': @@ -14505,10 +14616,10 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - '@babel/types@7.24.6': + '@babel/types@7.24.7': dependencies: - '@babel/helper-string-parser': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 '@base2/pretty-print-object@1.0.1': {} @@ -14529,12 +14640,12 @@ snapshots: '@bitcoinerlab/secp256k1@1.0.2': dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.1 '@bitcoinerlab/secp256k1@1.0.5': dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.1 '@blockstack/stacks-transactions@0.7.0(encoding@0.1.13)': @@ -14569,21 +14680,21 @@ snapshots: - '@chromatic-com/playwright' - react - '@clack/core@0.3.3': + '@clack/core@0.3.4': dependencies: - picocolors: 1.0.0 + picocolors: 1.0.1 sisteransi: 1.0.5 '@clack/prompts@0.6.3': dependencies: - '@clack/core': 0.3.3 - picocolors: 1.0.0 + '@clack/core': 0.3.4 + picocolors: 1.0.1 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: - '@clack/core': 0.3.3 - picocolors: 1.0.0 + '@clack/core': 0.3.4 + picocolors: 1.0.1 sisteransi: 1.0.5 '@coinbase/cbpay-js@1.0.2': {} @@ -14633,9 +14744,9 @@ snapshots: '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.38)': dependencies: - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 '@csstools/postcss-color-function@3.0.13(postcss@8.4.38)': dependencies: @@ -14827,9 +14938,9 @@ snapshots: dependencies: postcss-selector-parser: 6.0.16 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16)': + '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.0)': dependencies: - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 '@csstools/utilities@1.0.0(postcss@8.4.38)': dependencies: @@ -15240,6 +15351,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + optional: true + '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/trace-mapping@0.3.22': @@ -15257,18 +15374,41 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@leather-wallet/bitcoin@0.6.6(encoding@0.1.13)': + '@leather-wallet/bitcoin@0.6.10(encoding@0.1.13)': + dependencies: + '@bitcoinerlab/secp256k1': 1.0.2 + '@leather-wallet/constants': 0.6.3 + '@leather-wallet/crypto': 1.0.1 + '@leather-wallet/models': 0.6.8 + '@leather-wallet/utils': 0.7.0 + '@noble/hashes': 1.4.0 + '@noble/secp256k1': 2.1.0 + '@scure/base': 1.1.6 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + '@scure/btc-signer': 1.3.2 + '@stacks/common': 6.8.1 + '@stacks/transactions': 6.9.0(encoding@0.1.13) + bip32: 4.0.0 + bitcoinjs-lib: 6.1.3 + ecpair: 2.1.0 + varuint-bitcoin: 1.1.2 + transitivePeerDependencies: + - encoding + + '@leather-wallet/bitcoin@0.6.9(encoding@0.1.13)': dependencies: '@bitcoinerlab/secp256k1': 1.0.2 - '@leather-wallet/constants': 0.6.1 - '@leather-wallet/models': 0.6.6 - '@leather-wallet/utils': 0.6.6 - '@noble/hashes': 1.3.3 - '@noble/secp256k1': 2.0.0 - '@scure/base': 1.1.3 - '@scure/bip32': 1.3.3 - '@scure/bip39': 1.2.1 - '@scure/btc-signer': 1.2.1 + '@leather-wallet/constants': 0.6.2 + '@leather-wallet/crypto': 1.0.1 + '@leather-wallet/models': 0.6.7 + '@leather-wallet/utils': 0.6.7 + '@noble/hashes': 1.4.0 + '@noble/secp256k1': 2.1.0 + '@scure/base': 1.1.6 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + '@scure/btc-signer': 1.3.2 '@stacks/common': 6.8.1 '@stacks/transactions': 6.9.0(encoding@0.1.13) bip32: 4.0.0 @@ -15278,9 +15418,20 @@ snapshots: transitivePeerDependencies: - encoding - '@leather-wallet/constants@0.6.1': {} + '@leather-wallet/constants@0.6.2': {} - '@leather-wallet/models@0.6.6': + '@leather-wallet/constants@0.6.3': {} + + '@leather-wallet/crypto@1.0.1': + dependencies: + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + '@leather-wallet/models@0.6.7': + dependencies: + bignumber.js: 9.1.2 + + '@leather-wallet/models@0.6.8': dependencies: bignumber.js: 9.1.2 @@ -15299,17 +15450,17 @@ snapshots: - '@vue/compiler-sfc' - supports-color - '@leather-wallet/query@0.6.8(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@leather-wallet/bitcoin': 0.6.6(encoding@0.1.13) - '@leather-wallet/constants': 0.6.1 - '@leather-wallet/models': 0.6.6 - '@leather-wallet/rpc': 0.3.10 - '@leather-wallet/utils': 0.6.6 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.3 - '@scure/bip32': 1.3.3 - '@scure/btc-signer': 1.2.1 + '@leather-wallet/query@0.6.12(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@leather-wallet/bitcoin': 0.6.10(encoding@0.1.13) + '@leather-wallet/constants': 0.6.3 + '@leather-wallet/models': 0.6.8 + '@leather-wallet/rpc': 1.0.1 + '@leather-wallet/utils': 0.7.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 + '@scure/bip32': 1.4.0 + '@scure/btc-signer': 1.3.2 '@stacks/common': 6.8.1 '@stacks/rpc-client': 0.8.18(encoding@0.1.13) '@stacks/stacks-blockchain-api-types': 7.8.2 @@ -15331,17 +15482,28 @@ snapshots: - react-dom - react-native - '@leather-wallet/rpc@0.3.10': + '@leather-wallet/rpc@1.0.0': + dependencies: + '@leather-wallet/models': 0.6.7 + + '@leather-wallet/rpc@1.0.1': dependencies: - '@leather-wallet/models': 0.6.6 + '@leather-wallet/models': 0.6.8 + + '@leather-wallet/tokens@0.5.2': {} - '@leather-wallet/tokens@0.5.0': {} + '@leather-wallet/utils@0.6.7': + dependencies: + '@leather-wallet/constants': 0.6.2 + '@leather-wallet/models': 0.6.7 + '@leather-wallet/rpc': 1.0.0 + bignumber.js: 9.1.2 - '@leather-wallet/utils@0.6.6': + '@leather-wallet/utils@0.7.0': dependencies: - '@leather-wallet/constants': 0.6.1 - '@leather-wallet/models': 0.6.6 - '@leather-wallet/rpc': 0.3.10 + '@leather-wallet/constants': 0.6.3 + '@leather-wallet/models': 0.6.8 + '@leather-wallet/rpc': 1.0.1 bignumber.js: 9.1.2 '@ledgerhq/devices@8.2.0': @@ -15446,21 +15608,17 @@ snapshots: pump: 3.0.0 tar-fs: 2.1.1 - '@noble/curves@1.3.0': + '@noble/curves@1.4.0': dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 '@noble/hashes@1.1.5': {} - '@noble/hashes@1.3.2': {} - - '@noble/hashes@1.3.3': {} - '@noble/hashes@1.4.0': {} '@noble/secp256k1@1.7.1': {} - '@noble/secp256k1@2.0.0': {} + '@noble/secp256k1@2.1.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -15522,9 +15680,9 @@ snapshots: '@pandacss/types': 0.26.2 bundle-n-require: 1.1.1 escalade: 3.1.1 - jiti: 1.21.0 + jiti: 1.21.3 merge-anything: 5.1.7 - microdiff: 1.3.2 + microdiff: 1.4.0 typescript: 5.4.5 '@pandacss/config@0.40.1': @@ -15553,13 +15711,13 @@ snapshots: lodash.merge: 4.6.2 outdent: 0.8.0 postcss: 8.4.38 - postcss-discard-duplicates: 6.0.1(postcss@8.4.38) - postcss-discard-empty: 6.0.1(postcss@8.4.38) - postcss-merge-rules: 6.0.3(postcss@8.4.38) - postcss-minify-selectors: 6.0.2(postcss@8.4.38) + postcss-discard-duplicates: 6.0.3(postcss@8.4.38) + postcss-discard-empty: 6.0.3(postcss@8.4.38) + postcss-merge-rules: 6.1.1(postcss@8.4.38) + postcss-minify-selectors: 6.0.4(postcss@8.4.38) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-normalize-whitespace: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 + postcss-normalize-whitespace: 6.0.2(postcss@8.4.38) + postcss-selector-parser: 6.1.0 ts-pattern: 5.0.5 '@pandacss/core@0.40.1': @@ -15695,7 +15853,7 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 file-size: 1.0.0 - filesize: 10.1.0 + filesize: 10.1.2 fs-extra: 11.1.1 glob-parent: 6.0.2 hookable: 5.5.3 @@ -15703,12 +15861,12 @@ snapshots: lodash.merge: 4.6.2 look-it-up: 2.1.0 outdent: 0.8.0 - pathe: 1.1.2 + pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 pluralize: 8.0.0 postcss: 8.4.38 - preferred-pm: 3.1.2 + preferred-pm: 3.1.3 prettier: 2.8.8 ts-morph: 19.0.0 ts-pattern: 5.0.5 @@ -15846,20 +16004,20 @@ snapshots: dependencies: playwright: 1.44.0 - '@pmmmwh/react-refresh-webpack-plugin@0.5.13(@types/webpack@5.28.5(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))(react-refresh@0.14.0)(type-fest@3.13.1)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.91.0))(webpack-hot-middleware@2.26.1)(webpack@5.91.0(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.13(@types/webpack@5.28.5(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))(react-refresh@0.14.2)(type-fest@4.19.0)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.91.0))(webpack-hot-middleware@2.26.1)(webpack@5.91.0(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)))': dependencies: ansi-html-community: 0.0.8 core-js-pure: 3.36.0 error-stack-parser: 2.1.4 html-entities: 2.4.0 loader-utils: 2.0.4 - react-refresh: 0.14.0 + react-refresh: 0.14.2 schema-utils: 3.3.0 source-map: 0.7.4 webpack: 5.91.0(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)) optionalDependencies: '@types/webpack': 5.28.5(@swc/core@1.4.8)(esbuild@0.21.4)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.91.0)) - type-fest: 3.13.1 + type-fest: 4.19.0 webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.91.0) webpack-hot-middleware: 2.26.1 @@ -16781,11 +16939,11 @@ snapshots: redux: 4.2.1 redux-devtools-themes: 1.0.0 - '@redux-devtools/remote@0.9.3(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.4)(redux@5.0.1)': + '@redux-devtools/remote@0.9.3(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.6)(redux@5.0.1)': dependencies: '@babel/runtime': 7.24.4 '@redux-devtools/instrument': 2.2.0(redux@5.0.1) - '@redux-devtools/utils': 3.0.0(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.4)(redux@5.0.1) + '@redux-devtools/utils': 3.0.0(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.6)(redux@5.0.1) jsan: 3.1.14 querystring: 0.2.1 redux: 5.0.1 @@ -16820,10 +16978,10 @@ snapshots: transitivePeerDependencies: - react-dom - '@redux-devtools/serialize@0.4.2(immutable@4.3.4)': + '@redux-devtools/serialize@0.4.2(immutable@4.3.6)': dependencies: '@babel/runtime': 7.24.4 - immutable: 4.3.4 + immutable: 4.3.6 jsan: 3.1.14 '@redux-devtools/slider-monitor@5.0.0(@redux-devtools/core@4.0.0(react-redux@9.1.0(@types/react@18.3.3)(react@18.3.1)(redux@5.0.1))(react@18.3.1)(redux@5.0.1))(@types/react@18.3.3)(@types/styled-components@5.1.34)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@5.3.11(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1))': @@ -16866,14 +17024,14 @@ snapshots: transitivePeerDependencies: - react-dom - '@redux-devtools/utils@3.0.0(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.4)(redux@5.0.1)': + '@redux-devtools/utils@3.0.0(@redux-devtools/core@4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1))(immutable@4.3.6)(redux@5.0.1)': dependencies: '@babel/runtime': 7.24.4 '@redux-devtools/core': 4.0.0(react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)(redux@4.2.1) - '@redux-devtools/serialize': 0.4.2(immutable@4.3.4) + '@redux-devtools/serialize': 0.4.2(immutable@4.3.6) '@types/get-params': 0.1.2 get-params: 0.1.2 - immutable: 4.3.4 + immutable: 4.3.6 jsan: 3.1.14 lodash: 4.17.21 nanoid: 3.3.4 @@ -16962,45 +17120,36 @@ snapshots: '@schemastore/web-manifest@0.0.6': {} - '@scure/base@1.1.3': {} - - '@scure/base@1.1.5': {} - '@scure/base@1.1.6': {} '@scure/bip32@1.1.3': dependencies: '@noble/hashes': 1.1.5 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 - '@scure/bip32@1.3.3': + '@scure/bip32@1.4.0': dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@scure/bip39@1.1.0': dependencies: '@noble/hashes': 1.1.5 - '@scure/base': 1.1.5 - - '@scure/bip39@1.2.1': - dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.6 - '@scure/btc-signer@1.2.1': + '@scure/btc-signer@1.3.2': dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 - micro-packed: 0.5.3 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 + micro-packed: 0.6.3 '@segment/analytics-core@1.6.0': dependencies: @@ -17223,7 +17372,7 @@ snapshots: '@stacks/common@4.3.5': dependencies: '@types/bn.js': 5.1.5 - '@types/node': 18.19.29 + '@types/node': 18.19.34 buffer: 6.0.3 '@stacks/common@6.13.0': @@ -17234,7 +17383,7 @@ snapshots: '@stacks/common@6.8.1': dependencies: '@types/bn.js': 5.1.5 - '@types/node': 18.19.29 + '@types/node': 18.19.34 '@stacks/connect-react@22.2.0(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -17330,7 +17479,7 @@ snapshots: '@stacks/transactions@4.3.8(encoding@0.1.13)': dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.1 '@stacks/common': 4.3.5 '@stacks/network': 4.3.5(encoding@0.1.13) @@ -18089,11 +18238,11 @@ snapshots: dependencies: '@storybook/global': 5.0.0 - '@storybook/addon-interactions@8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2))': + '@storybook/addon-interactions@8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0))': dependencies: '@storybook/global': 5.0.0 '@storybook/instrumenter': 8.0.1 - '@storybook/test': 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2)) + '@storybook/test': 8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0)) '@storybook/types': 8.0.1 polished: 4.3.1 ts-dedent: 2.2.0 @@ -18632,9 +18781,9 @@ snapshots: '@storybook/csf-tools@8.0.6': dependencies: '@babel/generator': 7.24.4 - '@babel/parser': 7.24.4 + '@babel/parser': 7.24.7 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@storybook/csf': 0.1.2 '@storybook/types': 8.0.6 fs-extra: 11.2.0 @@ -18968,14 +19117,14 @@ snapshots: - prettier - supports-color - '@storybook/test@8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2))': + '@storybook/test@8.0.1(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0))': dependencies: '@storybook/client-logger': 8.0.1 '@storybook/core-events': 8.0.1 '@storybook/instrumenter': 8.0.1 '@storybook/preview-api': 8.0.1 '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.2(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2)) + '@testing-library/jest-dom': 6.4.2(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0)) '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) '@vitest/expect': 1.3.1 '@vitest/spy': 1.3.1 @@ -19155,7 +19304,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2))': + '@testing-library/jest-dom@6.4.2(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0))': dependencies: '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.23.9 @@ -19166,7 +19315,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - vitest: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2) + vitest: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0) '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': dependencies: @@ -19180,7 +19329,7 @@ snapshots: '@trivago/prettier-plugin-sort-imports@4.3.0(@vue/compiler-sfc@3.4.19)(prettier@3.2.5)': dependencies: '@babel/generator': 7.17.7 - '@babel/parser': 7.24.4 + '@babel/parser': 7.24.7 '@babel/traverse': 7.23.2 '@babel/types': 7.17.0 javascript-natural-sort: 0.7.1 @@ -19223,24 +19372,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@types/base16@1.0.5': {} @@ -19618,6 +19767,10 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@18.19.34': + dependencies: + undici-types: 5.26.5 + '@types/node@20.12.12': dependencies: undici-types: 5.26.5 @@ -19973,7 +20126,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2))': + '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0))': dependencies: debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 @@ -19984,7 +20137,7 @@ snapshots: magicast: 0.3.3 picocolors: 1.0.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2) + vitest: 1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0) transitivePeerDependencies: - supports-color @@ -20036,14 +20189,14 @@ snapshots: '@vue/compiler-core@3.3.4': dependencies: - '@babel/parser': 7.24.6 + '@babel/parser': 7.24.7 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.2.0 '@vue/compiler-core@3.4.19': dependencies: - '@babel/parser': 7.24.6 + '@babel/parser': 7.24.7 '@vue/shared': 3.4.19 entities: 4.5.0 estree-walker: 2.0.2 @@ -20061,20 +20214,20 @@ snapshots: '@vue/compiler-sfc@3.3.4': dependencies: - '@babel/parser': 7.24.6 + '@babel/parser': 7.24.7 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.9 + magic-string: 0.30.5 postcss: 8.4.38 source-map-js: 1.2.0 '@vue/compiler-sfc@3.4.19': dependencies: - '@babel/parser': 7.24.6 + '@babel/parser': 7.24.7 '@vue/compiler-core': 3.4.19 '@vue/compiler-dom': 3.4.19 '@vue/compiler-ssr': 3.4.19 @@ -20096,11 +20249,11 @@ snapshots: '@vue/reactivity-transform@3.3.4': dependencies: - '@babel/parser': 7.24.6 + '@babel/parser': 7.24.7 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.9 + magic-string: 0.30.5 '@vue/shared@3.3.4': {} @@ -20685,10 +20838,10 @@ snapshots: autoprefixer@10.4.15(postcss@8.4.38): dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001629 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -20830,8 +20983,8 @@ snapshots: bip32@4.0.0: dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 typeforce: 1.18.0 wif: 2.0.6 @@ -20845,7 +20998,7 @@ snapshots: bitcoinjs-lib@6.1.3: dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 bech32: 2.0.0 bip174: 2.1.1 bs58check: 3.0.1 @@ -20854,7 +21007,7 @@ snapshots: bitcoinjs-lib@6.1.5: dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 bech32: 2.0.0 bip174: 2.1.1 bs58check: 3.0.1 @@ -21011,7 +21164,7 @@ snapshots: bs58check@3.0.1: dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 bs58: 5.0.0 buffer-crc32@0.2.13: {} @@ -21060,7 +21213,7 @@ snapshots: c32check@2.0.0: dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 base-x: 4.0.0 cac@6.7.14: {} @@ -21142,7 +21295,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001588 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -21150,6 +21303,8 @@ snapshots: caniuse-lite@1.0.30001605: {} + caniuse-lite@1.0.30001629: {} + case-sensitive-paths-webpack-plugin@2.4.0: {} caseless@0.12.0: {} @@ -21749,7 +21904,7 @@ snapshots: cssesc@3.0.0: {} - cssnano-utils@4.0.1(postcss@8.4.38): + cssnano-utils@4.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -23885,6 +24040,8 @@ snapshots: immutable@4.3.4: {} + immutable@4.3.6: {} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -24306,6 +24463,8 @@ snapshots: jiti@1.21.0: {} + jiti@1.21.3: {} + jju@1.4.0: {} jose@4.13.1: {} @@ -24461,7 +24620,7 @@ snapshots: jsontokens@4.0.1: dependencies: - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.1 base64-js: 1.5.1 @@ -24602,30 +24761,57 @@ snapshots: lightningcss-darwin-arm64@1.23.0: optional: true + lightningcss-darwin-arm64@1.25.1: + optional: true + lightningcss-darwin-x64@1.23.0: optional: true + lightningcss-darwin-x64@1.25.1: + optional: true + lightningcss-freebsd-x64@1.23.0: optional: true + lightningcss-freebsd-x64@1.25.1: + optional: true + lightningcss-linux-arm-gnueabihf@1.23.0: optional: true + lightningcss-linux-arm-gnueabihf@1.25.1: + optional: true + lightningcss-linux-arm64-gnu@1.23.0: optional: true + lightningcss-linux-arm64-gnu@1.25.1: + optional: true + lightningcss-linux-arm64-musl@1.23.0: optional: true + lightningcss-linux-arm64-musl@1.25.1: + optional: true + lightningcss-linux-x64-gnu@1.23.0: optional: true + lightningcss-linux-x64-gnu@1.25.1: + optional: true + lightningcss-linux-x64-musl@1.23.0: optional: true + lightningcss-linux-x64-musl@1.25.1: + optional: true + lightningcss-win32-x64-msvc@1.23.0: optional: true + lightningcss-win32-x64-msvc@1.25.1: + optional: true + lightningcss@1.23.0: dependencies: detect-libc: 1.0.3 @@ -24640,6 +24826,21 @@ snapshots: lightningcss-linux-x64-musl: 1.23.0 lightningcss-win32-x64-msvc: 1.23.0 + lightningcss@1.25.1: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.25.1 + lightningcss-darwin-x64: 1.25.1 + lightningcss-freebsd-x64: 1.25.1 + lightningcss-linux-arm-gnueabihf: 1.25.1 + lightningcss-linux-arm64-gnu: 1.25.1 + lightningcss-linux-arm64-musl: 1.25.1 + lightningcss-linux-x64-gnu: 1.25.1 + lightningcss-linux-x64-musl: 1.25.1 + lightningcss-win32-x64-msvc: 1.25.1 + optional: true + lil-fp@1.4.5: {} lines-and-columns@1.2.4: {} @@ -25110,14 +25311,16 @@ snapshots: micro-packed@0.3.2: dependencies: - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 - micro-packed@0.5.3: + micro-packed@0.6.3: dependencies: - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 microdiff@1.3.2: {} + microdiff@1.4.0: {} + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 @@ -25517,7 +25720,7 @@ snapshots: mlly@1.4.2: dependencies: acorn: 8.11.3 - pathe: 1.1.2 + pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.2 @@ -26106,6 +26309,8 @@ snapshots: picocolors@1.0.0: {} + picocolors@1.0.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -26192,7 +26397,7 @@ snapshots: dependencies: jsonc-parser: 3.2.0 mlly: 1.4.2 - pathe: 1.1.2 + pathe: 1.1.1 pkg-up@3.1.0: dependencies: @@ -26275,7 +26480,7 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-discard-duplicates@6.0.1(postcss@8.4.38): + postcss-discard-duplicates@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -26283,7 +26488,7 @@ snapshots: dependencies: postcss: 8.4.38 - postcss-discard-empty@6.0.1(postcss@8.4.38): + postcss-discard-empty@6.0.3(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -26347,13 +26552,13 @@ snapshots: postcss: 8.4.38 postcss-value-parser: 4.2.0 - postcss-merge-rules@6.0.3(postcss@8.4.38): + postcss-merge-rules@6.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 - cssnano-utils: 4.0.1(postcss@8.4.38) + cssnano-utils: 4.0.2(postcss@8.4.38) postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-merge-rules@7.0.0(postcss@8.4.38): dependencies: @@ -26361,17 +26566,17 @@ snapshots: caniuse-api: 3.0.0 cssnano-utils: 5.0.0(postcss@8.4.38) postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 - postcss-minify-selectors@6.0.2(postcss@8.4.38): + postcss-minify-selectors@6.0.4(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-minify-selectors@7.0.0(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 postcss-modules-extract-imports@3.1.0(postcss@8.4.38): dependencies: @@ -26397,7 +26602,7 @@ snapshots: postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.0.15 postcss-nesting@12.1.1(postcss@8.4.38): dependencies: @@ -26406,7 +26611,7 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - postcss-normalize-whitespace@6.0.1(postcss@8.4.38): + postcss-normalize-whitespace@6.0.2(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -26512,11 +26717,21 @@ snapshots: postcss: 8.4.38 postcss-selector-parser: 6.0.16 + postcss-selector-parser@6.0.15: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-value-parser@4.2.0: {} postcss@8.4.29: @@ -26544,6 +26759,13 @@ snapshots: path-exists: 4.0.0 which-pm: 2.0.0 + preferred-pm@3.1.3: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + prelude-ls@1.2.1: {} prettier@2.8.8: {} @@ -26901,7 +27123,7 @@ snapshots: '@types/react': 18.3.3 redux: 5.0.1 - react-refresh@0.14.0: {} + react-refresh@0.14.2: {} react-remove-scroll-bar@2.3.5(@types/react@18.3.3)(react@18.3.1): dependencies: @@ -28172,6 +28394,14 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.31.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + optional: true + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -28404,6 +28634,9 @@ snapshots: type-fest@3.13.1: {} + type-fest@4.19.0: + optional: true + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -28789,13 +29022,13 @@ snapshots: bl: 1.2.3 through2: 2.0.5 - vite-node@1.6.0(@types/node@20.12.12)(lightningcss@1.23.0)(terser@5.27.2): + vite-node@1.6.0(@types/node@20.12.12)(lightningcss@1.25.1)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@5.5.0) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.8(@types/node@20.12.12)(lightningcss@1.23.0)(terser@5.27.2) + vite: 5.2.8(@types/node@20.12.12)(lightningcss@1.25.1)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less @@ -28806,7 +29039,7 @@ snapshots: - supports-color - terser - vite@5.2.8(@types/node@20.12.12)(lightningcss@1.23.0)(terser@5.27.2): + vite@5.2.8(@types/node@20.12.12)(lightningcss@1.25.1)(terser@5.31.0): dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -28814,10 +29047,10 @@ snapshots: optionalDependencies: '@types/node': 20.12.12 fsevents: 2.3.3 - lightningcss: 1.23.0 - terser: 5.27.2 + lightningcss: 1.25.1 + terser: 5.31.0 - vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.23.0)(terser@5.27.2): + vitest@1.6.0(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.25.1)(terser@5.31.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -28836,8 +29069,8 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.8(@types/node@20.12.12)(lightningcss@1.23.0)(terser@5.27.2) - vite-node: 1.6.0(@types/node@20.12.12)(lightningcss@1.23.0)(terser@5.27.2) + vite: 5.2.8(@types/node@20.12.12)(lightningcss@1.25.1)(terser@5.31.0) + vite-node: 1.6.0(@types/node@20.12.12)(lightningcss@1.25.1)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.12.12 diff --git a/src/app/common/psbt/requests.ts b/src/app/common/psbt/requests.ts index f530f7ec389..91ae883dc96 100644 --- a/src/app/common/psbt/requests.ts +++ b/src/app/common/psbt/requests.ts @@ -1,6 +1,6 @@ import type { Money } from '@leather-wallet/models'; import { isString } from '@leather-wallet/utils'; -import * as btc from '@scure/btc-signer'; +import type { TransactionInput } from '@scure/btc-signer/psbt'; import { PsbtPayload } from '@stacks/connect'; import { decodeToken } from 'jsontokens'; @@ -8,7 +8,7 @@ export interface SignPsbtArgs { addressNativeSegwitTotal?: Money; addressTaprootTotal?: Money; fee?: Money; - inputs: btc.TransactionInput[]; + inputs: TransactionInput[]; } export function getPsbtPayloadFromToken(requestToken: string): PsbtPayload { diff --git a/src/app/components/loaders/bitcoin-account-loader.tsx b/src/app/components/loaders/bitcoin-account-loader.tsx index 42fdf1e9de0..c3a3476932f 100644 --- a/src/app/components/loaders/bitcoin-account-loader.tsx +++ b/src/app/components/loaders/bitcoin-account-loader.tsx @@ -1,4 +1,4 @@ -import { P2Ret } from '@scure/btc-signer'; +import { P2Ret } from '@scure/btc-signer/payment'; import { useConfigBitcoinEnabled } from '@app/query/common/remote-config/remote-config.query'; import { useCurrentAccountIndex } from '@app/store/accounts/account'; diff --git a/src/app/components/loaders/current-bitcoin-signer-loader.tsx b/src/app/components/loaders/current-bitcoin-signer-loader.tsx index d97252f68a2..2616a8b54f3 100644 --- a/src/app/components/loaders/current-bitcoin-signer-loader.tsx +++ b/src/app/components/loaders/current-bitcoin-signer-loader.tsx @@ -1,4 +1,4 @@ -import type { P2Ret, P2TROut } from '@scure/btc-signer'; +import type { P2Ret, P2TROut } from '@scure/btc-signer/payment'; import { ZERO_INDEX } from '@shared/constants'; diff --git a/src/app/features/ledger/flows/request-bitcoin-keys/request-bitcoin-keys.utils.ts b/src/app/features/ledger/flows/request-bitcoin-keys/request-bitcoin-keys.utils.ts index 5c32e4df0cc..a1440deab81 100644 --- a/src/app/features/ledger/flows/request-bitcoin-keys/request-bitcoin-keys.utils.ts +++ b/src/app/features/ledger/flows/request-bitcoin-keys/request-bitcoin-keys.utils.ts @@ -1,10 +1,12 @@ +import { + getNativeSegwitAccountDerivationPath, + getTaprootAccountDerivationPath, +} from '@leather-wallet/bitcoin'; import { delay } from '@leather-wallet/utils'; import BitcoinApp, { DefaultWalletPolicy } from 'ledger-bitcoin'; import { BitcoinNetworkModes, NetworkModes } from '@shared/constants'; import { createWalletIdDecoratedPath } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { getTaprootAccountDerivationPath } from '@shared/crypto/bitcoin/p2tr-address-gen'; -import { getNativeSegwitAccountDerivationPath } from '@shared/crypto/bitcoin/p2wpkh-address-gen'; import { defaultNumberOfKeysToPullFromLedgerDevice } from '../../generic-flows/request-keys/use-request-ledger-keys'; import { diff --git a/src/app/features/ledger/utils/bitcoin-ledger-utils.ts b/src/app/features/ledger/utils/bitcoin-ledger-utils.ts index d6319d93dfa..89cea763a8e 100644 --- a/src/app/features/ledger/utils/bitcoin-ledger-utils.ts +++ b/src/app/features/ledger/utils/bitcoin-ledger-utils.ts @@ -1,11 +1,13 @@ +import { + getNativeSegwitAccountDerivationPath, + getTaprootAccountDerivationPath, +} from '@leather-wallet/bitcoin'; import Transport from '@ledgerhq/hw-transport-webusb'; import { Psbt } from 'bitcoinjs-lib'; import BitcoinApp, { DefaultWalletPolicy } from 'ledger-bitcoin'; import { PartialSignature } from 'ledger-bitcoin/build/main/lib/appClient'; import { BitcoinNetworkModes } from '@shared/constants'; -import { getTaprootAccountDerivationPath } from '@shared/crypto/bitcoin/p2tr-address-gen'; -import { getNativeSegwitAccountDerivationPath } from '@shared/crypto/bitcoin/p2wpkh-address-gen'; import { LEDGER_APPS_MAP, promptOpenAppOnDevice } from './generic-ledger-utils'; diff --git a/src/app/features/psbt-signer/hooks/use-parsed-inputs.tsx b/src/app/features/psbt-signer/hooks/use-parsed-inputs.tsx index afe20d0b784..a9e335f02e4 100644 --- a/src/app/features/psbt-signer/hooks/use-parsed-inputs.tsx +++ b/src/app/features/psbt-signer/hooks/use-parsed-inputs.tsx @@ -3,7 +3,7 @@ import { useMemo } from 'react'; import type { Inscription } from '@leather-wallet/models'; import { useInscriptionsByOutputs } from '@leather-wallet/query'; import { isDefined, isUndefined } from '@leather-wallet/utils'; -import * as btc from '@scure/btc-signer'; +import type { TransactionInput } from '@scure/btc-signer/psbt'; import { bytesToHex } from '@stacks/common'; import { getBtcSignerLibNetworkConfigByMode } from '@shared/crypto/bitcoin/bitcoin.network'; @@ -24,7 +24,7 @@ export interface PsbtInput { } interface UseParsedInputsArgs { - inputs: btc.TransactionInput[]; + inputs: TransactionInput[]; indexesToSign?: number[]; } export function useParsedInputs({ inputs, indexesToSign }: UseParsedInputsArgs) { diff --git a/src/app/features/psbt-signer/hooks/use-parsed-outputs.tsx b/src/app/features/psbt-signer/hooks/use-parsed-outputs.tsx index 99358a847e9..ab63a7d0798 100644 --- a/src/app/features/psbt-signer/hooks/use-parsed-outputs.tsx +++ b/src/app/features/psbt-signer/hooks/use-parsed-outputs.tsx @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { isDefined, isUndefined } from '@leather-wallet/utils'; -import * as btc from '@scure/btc-signer'; +import type { TransactionOutput } from '@scure/btc-signer/psbt'; import { NetworkConfiguration } from '@shared/constants'; import { getBtcSignerLibNetworkConfigByMode } from '@shared/crypto/bitcoin/bitcoin.network'; @@ -20,7 +20,7 @@ export interface PsbtOutput { interface UseParsedOutputsArgs { isPsbtMutable: boolean; - outputs: btc.TransactionOutput[]; + outputs: TransactionOutput[]; network: NetworkConfiguration; } export function useParsedOutputs({ isPsbtMutable, outputs, network }: UseParsedOutputsArgs) { diff --git a/src/app/features/psbt-signer/hooks/use-psbt-details.tsx b/src/app/features/psbt-signer/hooks/use-psbt-details.tsx index 2800382735b..663db21a037 100644 --- a/src/app/features/psbt-signer/hooks/use-psbt-details.tsx +++ b/src/app/features/psbt-signer/hooks/use-psbt-details.tsx @@ -1,7 +1,7 @@ import { useCallback, useMemo } from 'react'; import { createMoney, subtractMoney } from '@leather-wallet/utils'; -import * as btc from '@scure/btc-signer'; +import type { TransactionInput, TransactionOutput } from '@scure/btc-signer/psbt'; import { useCurrentAccountNativeSegwitIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks'; import { useCurrentAccountTaprootIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/taproot-account.hooks'; @@ -13,9 +13,9 @@ import { usePsbtInscriptions } from './use-psbt-inscriptions'; import { usePsbtTotals } from './use-psbt-totals'; interface UsePsbtDetailsArgs { - inputs: btc.TransactionInput[]; + inputs: TransactionInput[]; indexesToSign?: number[]; - outputs: btc.TransactionOutput[]; + outputs: TransactionOutput[]; } export function usePsbtDetails({ inputs, indexesToSign, outputs }: UsePsbtDetailsArgs) { const network = useCurrentNetwork(); diff --git a/src/app/features/psbt-signer/hooks/use-psbt-signer.tsx b/src/app/features/psbt-signer/hooks/use-psbt-signer.tsx index f9933739dbf..8553640b880 100644 --- a/src/app/features/psbt-signer/hooks/use-psbt-signer.tsx +++ b/src/app/features/psbt-signer/hooks/use-psbt-signer.tsx @@ -3,6 +3,7 @@ import { useMemo } from 'react'; import { isString } from '@leather-wallet/utils'; import { hexToBytes } from '@noble/hashes/utils'; import * as btc from '@scure/btc-signer'; +import { RawPSBTV0, RawPSBTV2 } from '@scure/btc-signer/psbt'; import { BitcoinInputSigningConfig } from '@shared/crypto/bitcoin/signer-config'; import { logger } from '@shared/logger'; @@ -12,7 +13,7 @@ import { useSignBitcoinTx, } from '@app/store/accounts/blockchain/bitcoin/bitcoin.hooks'; -export type RawPsbt = ReturnType; +export type RawPsbt = ReturnType; interface SignPsbtArgs { signingConfig: BitcoinInputSigningConfig[]; @@ -35,11 +36,11 @@ export function usePsbtSigner() { getRawPsbt(psbt: string | Uint8Array) { const bytes = isString(psbt) ? hexToBytes(psbt) : psbt; try { - return btc.RawPSBTV0.decode(bytes); + return RawPSBTV0.decode(bytes); } catch (e1) { logger.error(`Unable to decode PSBT as v0, trying v2, ${e1}`); try { - return btc.RawPSBTV2.decode(bytes); + return RawPSBTV2.decode(bytes); } catch (e2) { throw new Error(`Unable to decode PSBT, ${e1 ?? e2}`); } diff --git a/src/app/pages/send/ordinal-inscription/components/create-utxo-from-inscription.ts b/src/app/pages/send/ordinal-inscription/components/create-utxo-from-inscription.ts index ec2a7de0b08..ea87f13acb9 100644 --- a/src/app/pages/send/ordinal-inscription/components/create-utxo-from-inscription.ts +++ b/src/app/pages/send/ordinal-inscription/components/create-utxo-from-inscription.ts @@ -1,8 +1,8 @@ +import { getNativeSegwitAddressIndexDerivationPath } from '@leather-wallet/bitcoin'; import type { Inscription } from '@leather-wallet/models'; import type { UtxoWithDerivationPath } from '@leather-wallet/query'; import { BitcoinNetworkModes } from '@shared/constants'; -import { getNativeSegwitAddressIndexDerivationPath } from '@shared/crypto/bitcoin/p2wpkh-address-gen'; interface CreateUtxoFromInscriptionArgs { inscription: Inscription; @@ -10,7 +10,6 @@ interface CreateUtxoFromInscriptionArgs { accountIndex: number; inscriptionAddressIdx: number; } - export function createUtxoFromInscription({ inscription, network, diff --git a/src/app/store/accounts/blockchain/bitcoin/bitcoin-signer.ts b/src/app/store/accounts/blockchain/bitcoin/bitcoin-signer.ts index f51466a26bf..7e053ecbcb8 100644 --- a/src/app/store/accounts/blockchain/bitcoin/bitcoin-signer.ts +++ b/src/app/store/accounts/blockchain/bitcoin/bitcoin-signer.ts @@ -1,5 +1,9 @@ import { useCallback } from 'react'; +import { + getNativeSegwitAddressIndexDerivationPath, + getTaprootAddressIndexDerivationPath, +} from '@leather-wallet/bitcoin'; import { HDKey, Versions } from '@scure/bip32'; import * as btc from '@scure/btc-signer'; @@ -9,8 +13,6 @@ import { deriveAddressIndexKeychainFromAccount, whenPaymentType, } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { getTaprootAddressIndexDerivationPath } from '@shared/crypto/bitcoin/p2tr-address-gen'; -import { getNativeSegwitAddressIndexDerivationPath } from '@shared/crypto/bitcoin/p2wpkh-address-gen'; import { AllowedSighashTypes } from '@shared/rpc/methods/sign-psbt'; import { useBitcoinExtendedPublicKeyVersions } from './bitcoin-keychain'; diff --git a/src/app/store/accounts/blockchain/bitcoin/bitcoin.hooks.ts b/src/app/store/accounts/blockchain/bitcoin/bitcoin.hooks.ts index 342ae13ad43..2f7628effd6 100644 --- a/src/app/store/accounts/blockchain/bitcoin/bitcoin.hooks.ts +++ b/src/app/store/accounts/blockchain/bitcoin/bitcoin.hooks.ts @@ -1,4 +1,8 @@ import { PaymentTypes } from '@btckit/types'; +import { + getNativeSegwitAccountDerivationPath, + getTaprootAccountDerivationPath, +} from '@leather-wallet/bitcoin'; import { isNumber, isUndefined } from '@leather-wallet/utils'; import { bytesToHex } from '@noble/hashes/utils'; import * as btc from '@scure/btc-signer'; @@ -11,8 +15,6 @@ import { getInputPaymentType, getTaprootAddress, } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { getTaprootAccountDerivationPath } from '@shared/crypto/bitcoin/p2tr-address-gen'; -import { getNativeSegwitAccountDerivationPath } from '@shared/crypto/bitcoin/p2wpkh-address-gen'; import { BitcoinInputSigningConfig, getAssumedZeroIndexSigningConfig, diff --git a/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts b/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts index 61557af31d1..4598b4fa02d 100644 --- a/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts +++ b/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts @@ -1,6 +1,11 @@ import { useMemo } from 'react'; import { useSelector } from 'react-redux'; +import { + deriveNativeSegwitAccountFromRootKeychain, + getNativeSegWitPaymentFromAddressIndex, + getNativeSegwitAccountDerivationPath, +} from '@leather-wallet/bitcoin'; import { reverseBytes } from '@leather-wallet/utils'; import { createSelector } from '@reduxjs/toolkit'; import { Psbt } from 'bitcoinjs-lib'; @@ -10,11 +15,6 @@ import { extractAddressIndexFromPath, lookUpLedgerKeysByPath, } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { - deriveNativeSegwitAccountFromRootKeychain, - getNativeSegWitPaymentFromAddressIndex, - getNativeSegwitAccountDerivationPath, -} from '@shared/crypto/bitcoin/p2wpkh-address-gen'; import { BitcoinInputSigningConfig } from '@shared/crypto/bitcoin/signer-config'; import { analytics } from '@shared/utils/analytics'; diff --git a/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts b/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts index 5979209a9d3..65a437ce627 100644 --- a/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts +++ b/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts @@ -1,6 +1,11 @@ import { useMemo } from 'react'; import { useSelector } from 'react-redux'; +import { + deriveTaprootAccount, + getTaprootAccountDerivationPath, + getTaprootPaymentFromAddressIndex, +} from '@leather-wallet/bitcoin'; import { createSelector } from '@reduxjs/toolkit'; import { Psbt } from 'bitcoinjs-lib'; @@ -10,11 +15,6 @@ import { extractAddressIndexFromPath, lookUpLedgerKeysByPath, } from '@shared/crypto/bitcoin/bitcoin.utils'; -import { - deriveTaprootAccount, - getTaprootAccountDerivationPath, - getTaprootPaymentFromAddressIndex, -} from '@shared/crypto/bitcoin/p2tr-address-gen'; import { BitcoinInputSigningConfig } from '@shared/crypto/bitcoin/signer-config'; import { selectCurrentNetwork, useCurrentNetwork } from '@app/store/networks/networks.selectors'; diff --git a/src/shared/crypto/bitcoin/bitcoin.utils.ts b/src/shared/crypto/bitcoin/bitcoin.utils.ts index 22f8f7509d8..6b944bf1aed 100644 --- a/src/shared/crypto/bitcoin/bitcoin.utils.ts +++ b/src/shared/crypto/bitcoin/bitcoin.utils.ts @@ -1,15 +1,16 @@ import { PaymentTypes as PaymentType } from '@btckit/types'; +import { getTaprootPayment } from '@leather-wallet/bitcoin'; import { defaultWalletKeyId, isDefined, whenNetwork } from '@leather-wallet/utils'; import { hexToBytes } from '@noble/hashes/utils'; import { HDKey, Versions } from '@scure/bip32'; import * as btc from '@scure/btc-signer'; +import type { TransactionInput, TransactionOutput } from '@scure/btc-signer/psbt'; import { BitcoinNetworkModes, NetworkModes } from '@shared/constants'; import { logger } from '@shared/logger'; import { DerivationPathDepth } from '../derivation-path.utils'; import { BtcSignerNetwork, getBtcSignerLibNetworkConfigByMode } from './bitcoin.network'; -import { getTaprootPayment } from './p2tr-address-gen'; export interface BitcoinAccount { type: PaymentType; @@ -29,15 +30,6 @@ export function bitcoinNetworkModeToCoreNetworkMode(mode: BitcoinNetworkModes) { return bitcoinNetworkToCoreNetworkMap[mode]; } -const coinTypeMap: Record = { - mainnet: 0, - testnet: 1, -}; - -export function getBitcoinCoinTypeIndexByNetwork(network: BitcoinNetworkModes) { - return coinTypeMap[bitcoinNetworkModeToCoreNetworkMode(network)]; -} - export function deriveAddressIndexKeychainFromAccount(keychain: HDKey) { if (keychain.depth !== DerivationPathDepth.Account) throw new Error('Keychain passed is not an account'); @@ -95,10 +87,7 @@ export function getAddressFromOutScript(script: Uint8Array, bitcoinNetwork: BtcS } } -export function getBitcoinInputAddress( - input: btc.TransactionInput, - bitcoinNetwork: BtcSignerNetwork -) { +export function getBitcoinInputAddress(input: TransactionInput, bitcoinNetwork: BtcSignerNetwork) { if (isDefined(input.witnessUtxo)) return getAddressFromOutScript(input.witnessUtxo.script, bitcoinNetwork); if (isDefined(input.nonWitnessUtxo) && isDefined(input.index)) @@ -109,7 +98,7 @@ export function getBitcoinInputAddress( return ''; } -export function getBitcoinInputValue(input: btc.TransactionInput) { +export function getBitcoinInputValue(input: TransactionInput) { if (isDefined(input.witnessUtxo)) return Number(input.witnessUtxo.amount); if (isDefined(input.nonWitnessUtxo) && isDefined(input.index)) return Number(input.nonWitnessUtxo.outputs[input.index]?.amount); @@ -251,20 +240,20 @@ export function getTaprootAddress({ index, keychain, network }: GetTaprootAddres export function getPsbtTxInputs(psbtTx: btc.Transaction) { const inputsLength = psbtTx.inputsLength; - const inputs: btc.TransactionInput[] = []; + const inputs: TransactionInput[] = []; for (let i = 0; i < inputsLength; i++) inputs.push(psbtTx.getInput(i)); return inputs; } export function getPsbtTxOutputs(psbtTx: btc.Transaction) { const outputsLength = psbtTx.outputsLength; - const outputs: btc.TransactionOutput[] = []; + const outputs: TransactionOutput[] = []; for (let i = 0; i < outputsLength; i++) outputs.push(psbtTx.getOutput(i)); return outputs; } export function getInputPaymentType( - input: btc.TransactionInput, + input: TransactionInput, network: BitcoinNetworkModes ): PaymentType { const address = getBitcoinInputAddress(input, getBtcSignerLibNetworkConfigByMode(network)); diff --git a/src/shared/crypto/bitcoin/p2tr-address-gen.spec.ts b/src/shared/crypto/bitcoin/p2tr-address-gen.spec.ts deleted file mode 100644 index 2ba5beedc1e..00000000000 --- a/src/shared/crypto/bitcoin/p2tr-address-gen.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { HDKey } from '@scure/bip32'; -import { mnemonicToSeedSync } from '@scure/bip39'; -import { SECRET_KEY } from '@tests/mocks'; - -import { deriveAddressIndexKeychainFromAccount } from './bitcoin.utils'; -import { deriveTaprootAccount, getTaprootPaymentFromAddressIndex } from './p2tr-address-gen'; - -// Source: -// generated in Sparrow with same secret key used in tests -const addresses = [ - 'tb1p05uectcay8ptepqneycknxf0ewvdejcl0zdqex98ux87w7tzqjfsd7yxyl', - 'tb1papsqvj9s2yn9mavhtuk9jyw4arlwcxey33n49g02rpjcajx88qrszpytxl', - 'tb1pfnegsp8x0gnjrgzu0p5xrltrms50prpl8c5a3rwfcrp9p9vumnfsv7zn84', - 'tb1pzqp06cvvcmftc4g69kuqt5z59k3uyuuwzsg796c00scav0vxjevs3gsvpr', - 'tb1p2acyvr7wzvdr2m9fprg2e48k03rjvvq8au680jtrxqrz5m9m5kdsurrp2z', - 'tb1p3kautzlyralsnxf2fv7rudlgyhu6u0lcvzdnlhaywl4h8l7yk0ds59lvfg', -]; - -describe('taproot address gen', () => { - test.each(addresses)('should generate taproot addresses', address => { - const keychain = HDKey.fromMasterSeed(mnemonicToSeedSync(SECRET_KEY)); - const index = addresses.indexOf(address); - const accountZero = deriveTaprootAccount(keychain, 'testnet')(0); - - const addressIndexDetails = getTaprootPaymentFromAddressIndex( - deriveAddressIndexKeychainFromAccount(accountZero.keychain)(index), - 'testnet' - ); - if (!accountZero.keychain.privateKey) throw new Error('No private key found'); - - expect(addressIndexDetails.address).toEqual(address); - }); -}); diff --git a/src/shared/crypto/bitcoin/p2tr-address-gen.ts b/src/shared/crypto/bitcoin/p2tr-address-gen.ts deleted file mode 100644 index 92e8efb4f25..00000000000 --- a/src/shared/crypto/bitcoin/p2tr-address-gen.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { HDKey } from '@scure/bip32'; -import * as btc from '@scure/btc-signer'; - -import { BitcoinNetworkModes } from '@shared/constants'; - -import { DerivationPathDepth } from '../derivation-path.utils'; -import { getBtcSignerLibNetworkConfigByMode } from './bitcoin.network'; -import { - BitcoinAccount, - ecdsaPublicKeyToSchnorr, - getBitcoinCoinTypeIndexByNetwork, -} from './bitcoin.utils'; - -export function getTaprootAccountDerivationPath( - network: BitcoinNetworkModes, - accountIndex: number -) { - return `m/86'/${getBitcoinCoinTypeIndexByNetwork(network)}'/${accountIndex}'`; -} - -export function getTaprootAddressIndexDerivationPath( - network: BitcoinNetworkModes, - accountIndex: number, - addressIndex: number -) { - return getTaprootAccountDerivationPath(network, accountIndex) + `/0/${addressIndex}`; -} - -export function deriveTaprootAccount(keychain: HDKey, network: BitcoinNetworkModes) { - if (keychain.depth !== DerivationPathDepth.Root) - throw new Error('Keychain passed is not an account'); - - return (accountIndex: number): BitcoinAccount => ({ - type: 'p2tr', - network, - accountIndex, - derivationPath: getTaprootAccountDerivationPath(network, accountIndex), - keychain: keychain.derive(getTaprootAccountDerivationPath(network, accountIndex)), - }); -} - -export function getTaprootPayment(publicKey: Uint8Array, network: BitcoinNetworkModes) { - return btc.p2tr( - ecdsaPublicKeyToSchnorr(publicKey), - undefined, - getBtcSignerLibNetworkConfigByMode(network) - ); -} - -export function getTaprootPaymentFromAddressIndex(keychain: HDKey, network: BitcoinNetworkModes) { - if (keychain.depth !== DerivationPathDepth.AddressIndex) - throw new Error('Keychain passed is not an address index'); - - if (!keychain.publicKey) throw new Error('Keychain has no public key'); - - return getTaprootPayment(keychain.publicKey, network); -} diff --git a/src/shared/crypto/bitcoin/p2wpkh-address-gen.spec.ts b/src/shared/crypto/bitcoin/p2wpkh-address-gen.spec.ts deleted file mode 100644 index f05d5f778de..00000000000 --- a/src/shared/crypto/bitcoin/p2wpkh-address-gen.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { deriveNativeSegWitReceiveAddressIndex } from './p2wpkh-address-gen'; - -describe('Bitcoin bech32 (P2WPKH address derivation', () => { - describe('from extended public key', () => { - const accounts = [ - { - path: "m/84'/0'/0'", - extended_public_key: - 'xpub6CwY13JDrzeY2oWjP9dbiyLHQh3JVWCvBTCfD7WREBUpBUmtCu4bgxfSGrvaLDbZaMdw2nsPeTFv6AokWkVqh4rbKpsxg7GgEu543Qwvyff', - private_key: 'L1FA9VHZNkgCBW9fS76zDHcjuK72LE4gGVAMnN67onRRCoDJvZJi', - public_key: '0211758b68eb9b0e4e9610c49739f2ce039732033ba47e125bbdf64ef6cd586ef3', - zeroIndexChildAddress: 'bc1qa4ypkks2kfpawyy5mautjfqc6wv703ckm7puux', - }, - { - path: "m/84'/0'/1'", - mnemonic: - 'token spatial butter drill city debate pipe shoot target pencil tonight gallery dog globe copy hybrid convince spell load maximum impose crazy engage way', - extended_public_key: - 'xpub6CwY13JDrzeY55xGbiHxHwZSZpbkmrM7QMag3yVgZi62zaYFsBAUam1kghZZx4hDgDdkDzAMxc8xmpcyGAb1EoXoB7Vn7WTiUEaCEd3CcPq', - private_key: 'Kyhx4Zz1iYmCGx1gLnPE5ZFphBf16BoRKokU6B8KbxkJ7tM511de', - public_key: '025f6abba7947109c5e5ba0fed5e7b99b0ce5b06ccbca86539e6eca261c4507559', - zeroIndexChildAddress: 'bc1q5aptjy5l9q4qcykvccpwlqcvzydg744qkv94d3', - }, - { - path: "m/84'/0'/2'", - mnemonic: - 'token spatial butter drill city debate pipe shoot target pencil tonight gallery dog globe copy hybrid convince spell load maximum impose crazy engage way', - extended_public_key: - 'xpub6CwY13JDrzeY7qyP5MCBqA3hmB9oX8mjpbt6YWPfCRb9fus8Yrt84xxzh1Ci2wyW8intyoxmr3MjCHCtbs458uboWZVV8WFeHZBveJHVG71', - private_key: 'L1CzwqocLUQgH6GeH6bBKRaRnGLF81249Wbd14uTzLaUGE5qMdD7', - public_key: '022b804094c9b74a93d51e6bb3b1ae8378027e810058bbcb34ac54f3a307a225d1', - zeroIndexChildAddress: 'bc1q253fdeyzuwx58xxssd3a2xw2gq7khhpmr6vgnh', - }, - ]; - - describe.each(accounts)('Account', account => { - const keychain = deriveNativeSegWitReceiveAddressIndex({ - xpub: account.extended_public_key, - network: 'mainnet', - }); - test('bech 32 address', () => - expect(keychain?.address).toEqual(account.zeroIndexChildAddress)); - }); - }); -}); diff --git a/src/shared/crypto/bitcoin/p2wpkh-address-gen.ts b/src/shared/crypto/bitcoin/p2wpkh-address-gen.ts deleted file mode 100644 index e21d418c608..00000000000 --- a/src/shared/crypto/bitcoin/p2wpkh-address-gen.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { HDKey } from '@scure/bip32'; -import * as btc from '@scure/btc-signer'; - -import { BitcoinNetworkModes } from '@shared/constants'; - -import { DerivationPathDepth } from '../derivation-path.utils'; -import { getBtcSignerLibNetworkConfigByMode } from './bitcoin.network'; -import { - BitcoinAccount, - deriveAddressIndexZeroFromAccount, - getBitcoinCoinTypeIndexByNetwork, -} from './bitcoin.utils'; - -export function getNativeSegwitAccountDerivationPath( - network: BitcoinNetworkModes, - accountIndex: number -) { - return `m/84'/${getBitcoinCoinTypeIndexByNetwork(network)}'/${accountIndex}'`; -} - -export function getNativeSegwitAddressIndexDerivationPath( - network: BitcoinNetworkModes, - accountIndex: number, - addressIndex: number -) { - return getNativeSegwitAccountDerivationPath(network, accountIndex) + `/0/${addressIndex}`; -} - -export function deriveNativeSegwitAccountFromRootKeychain( - keychain: HDKey, - network: BitcoinNetworkModes -) { - if (keychain.depth !== DerivationPathDepth.Root) throw new Error('Keychain passed is not a root'); - return (accountIndex: number): BitcoinAccount => ({ - type: 'p2wpkh', - network, - accountIndex, - derivationPath: getNativeSegwitAccountDerivationPath(network, accountIndex), - keychain: keychain.derive(getNativeSegwitAccountDerivationPath(network, accountIndex)), - }); -} - -export function getNativeSegWitPaymentFromAddressIndex( - keychain: HDKey, - network: BitcoinNetworkModes -) { - if (keychain.depth !== DerivationPathDepth.AddressIndex) - throw new Error('Keychain passed is not an address index'); - - if (!keychain.publicKey) throw new Error('Keychain does not have a public key'); - - return btc.p2wpkh(keychain.publicKey, getBtcSignerLibNetworkConfigByMode(network)); -} - -interface DeriveNativeSegWitReceiveAddressIndexArgs { - xpub: string; - network: BitcoinNetworkModes; -} -export function deriveNativeSegWitReceiveAddressIndex({ - xpub, - network, -}: DeriveNativeSegWitReceiveAddressIndexArgs) { - if (!xpub) return; - const keychain = HDKey.fromExtendedKey(xpub); - if (!keychain) return; - const zeroAddressIndex = deriveAddressIndexZeroFromAccount(keychain); - return getNativeSegWitPaymentFromAddressIndex(zeroAddressIndex, network); -} diff --git a/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.spec.ts b/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.spec.ts deleted file mode 100644 index bf98a066119..00000000000 --- a/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.spec.ts +++ /dev/null @@ -1,182 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import ecc from '@bitcoinerlab/secp256k1'; -import { sha256 } from '@noble/hashes/sha256'; -import { base58check } from '@scure/base'; -import { HDKey } from '@scure/bip32'; -import { mnemonicToSeedSync } from '@scure/bip39'; -import { hashP2WPKH } from '@stacks/transactions'; -import { BIP32Factory } from 'bip32'; -import * as bitcoin from 'bitcoinjs-lib'; - -import { - decodeCompressedWifPrivateKey, - deriveBtcBip49SeedFromMnemonic, - deriveRootBtcKeychain, - makePayToScriptHashAddress, - makePayToScriptHashAddressBytes, - makePayToScriptHashKeyHash, - payToScriptHashTestnetPrefix, - publicKeyToPayToScriptHashAddress, -} from './p2wsh-p2sh-address-gen'; - -describe('Bitcoin SegWit (P2WPKH-P2SH) address generation', () => { - const bip32 = BIP32Factory(ecc); - - const phrase = - 'above view guide write long gift chimney own guide mirror word ski code monster gauge bracket until stem feed scale smart truth toy limb'; - - describe('Verify against wagyu results', () => { - // Keys generated with `wagyu` - // $ wagyu bitcoin import-hd -m "" -d "m/49'/0'/0'/0/0" --format segwit --json - const keys = [ - { - path: "m/49'/0'/0'/0/0", - extended_private_key: - 'xprvA2WTEJy9NLu57C55yCCPvXLzGq6mGjL3oc81T7vMv2WYREFuAJV3HT4pJYF4a3JRCnyU95rgq4eY2X6cCJTJQYEHmHrvyfy5pCnPcqeTikK', - extended_public_key: - 'xpub6FVodpW3CiTNKg9Z5DjQHfHiprwFgC3uAq3cFWKyUN3XJ2b3hqoHqFPJ9p9r4QK5f9fs1VztRMrjSy6M6HvVLtpC6KipJ2whmAhk9V3GZZ2', - private_key: 'L5iYDFDUDSGnjtWUT8gKDvCcsfMna5fAk6pQo5DZandks5r7Av4Q', - public_key: '03715f44ce96a11743c97e4ef5954e78482107a9658f1c5f33bc9e70dc171e56e5', - address: '3CTTwjVZ59ykFH2DSQpF3iLWM3fESjFcJ9', - format: 'p2sh_p2wpkh', - network: 'mainnet', - }, - { - path: "m/49'/0'/0'/0/1", - extended_private_key: - 'xprvA2WTEJy9NLu5ANouN242mgeiXNcndxwCRHRj3B3C96zWPj7Cgp22frkXKLGiRK59fg6nkGHHityZkVdjBfp7oLP8gf2jy2iHf21qaTWHQfd', - extended_public_key: - 'xpub6FVodpW3CiTNNrtNU3b38pbT5QTH3Rf3nWMKqZSohSXVGXSMEMLHDf51AZpFphHQXCZzAMXGHraNyBmRXHKbgKQETn8mr6oUTAXBYJJBGEy', - private_key: 'L4Xt5Ricu9HAg3t92uyqNpnFXKXCgt6DuUtVMkaTsqgXs7rnxjSY', - public_key: '02166ce8acc10a07f877436d673c1876ad2b68d7c78075972d4b2d9f8e1d0d984d', - address: '36R4QBx4HqRSiRswcFeCe6KUgk2JY9aP87', - format: 'p2sh_p2wpkh', - network: 'mainnet', - }, - { - path: "m/49'/0'/0'/0/2", - extended_private_key: - 'xprvA2WTEJy9NLu5E4vHyjZWFKoTnibqRqNquBzPR7sRoMn44bvpq6ES7cbRmxmxZAtiTDFvRUFWzpsYqbuNF4WapLdJJzrYTDDY6k4QhqHEkXG', - extended_public_key: - 'xpub6FVodpW3CiTNSYzm5m6WcTkCLkSKqJ6hGQuzDWH3MhK2wQFyNdYgfQuudCnLj4afakVMnLpHBuAY13aHFh3giri7MRZ8gEddLtr9wdgcvpn', - private_key: 'L2aBwidPCi2YjxDriNAtxfrMFbS3PsKeUUSnnt8cQQRKvpPciUqo', - public_key: '0218e2229c75d57f2a0bd6dfdfa50a1a736d19fb40a1f18a675d34960b088df01e', - address: '3BU1wA95ELhgweMSazGh42CHD5K64XGUop', - format: 'p2sh_p2wpkh', - network: 'mainnet', - }, - { - path: "m/49'/0'/0'/0/3", - extended_private_key: - 'xprvA2WTEJy9NLu5FKNrRe3coYxbKXjjzibJ6uouC9v29s6Ut8KJvmqXWmvzPTb9wPfRjYzvcq91QyV6B7P38XmZpTquTDoVyp4vv5baiyf8EZT', - extended_public_key: - 'xpub6FVodpW3CiTNToTKXfadAguKsZaEQBK9U8jVzYKdiCdTkveTUK9n4aFUEiuixKhQeqrrqX9iKTYFmpJXdc2im8y2JzYCuiEZvegLuTAetxJ', - private_key: 'L2Mx4mkmuQMnRxf1gCYSSEugDj6TeDS45eYjXYdanJ7MEX9Xp8Fe', - public_key: '02bf94312be9021d61d1ed917c5e8542d215180afe5db35c5574e3382b3b8469f0', - address: '3MCzNqbNy7k8hnyenwpsdHahY2yBVQJQsz', - format: 'p2sh_p2wpkh', - network: 'mainnet', - }, - ] as const; - - describe.each(keys)('Core libraries: bip32, bip39, bitcoinjs-lib', key => { - const seed = mnemonicToSeedSync(phrase); - const root = bip32.fromSeed(Buffer.from(seed)); - const child = root.derivePath(key.path); - - describe(key.path, () => { - test(`public key`, () => expect(child.publicKey.toString('hex')).toEqual(key.public_key)); - - test(`extended public key`, () => - expect(child.neutered().toBase58()).toEqual(key.extended_public_key)); - - test(`private key`, () => - expect(child.privateKey).toEqual( - Buffer.from(decodeCompressedWifPrivateKey(key.private_key)) - )); - - test(`extended private key`, () => - expect(child.privateKey).toEqual(bip32.fromBase58(key.extended_private_key).privateKey)); - - test(`segwit address`, () => { - const bitcoinPayment = bitcoin.payments.p2sh({ - redeem: bitcoin.payments.p2wpkh({ pubkey: child.publicKey }), - }); - expect(bitcoinPayment.address).toEqual(key.address); - }); - }); - }); - - describe.each(keys)('@scure/*', key => { - let seed: Uint8Array; - let root: HDKey; - let child: HDKey; - - beforeAll(async () => { - seed = await deriveBtcBip49SeedFromMnemonic(phrase); - root = deriveRootBtcKeychain(seed); - child = root.derive(key.path); - }); - - describe(key.path, () => { - test(`public key`, () => - expect(Buffer.from(child.publicKey!).toString('hex')).toEqual(key.public_key)); - - test(`extended public key`, () => - expect(child.publicExtendedKey).toEqual(key.extended_public_key)); - - test(`private key`, () => - expect(child.privateKey).toEqual(decodeCompressedWifPrivateKey(key.private_key))); - - test(`extended private key`, () => - expect(child.privateKey).toEqual( - HDKey.fromExtendedKey(key.extended_private_key).privateKey - )); - - test(`extended private key`, () => - expect(child.privateExtendedKey).toEqual(key.extended_private_key)); - - test(`segwit address`, () => { - expect(publicKeyToPayToScriptHashAddress(child.publicKey!, key.network)).toEqual( - key.address - ); - }); - }); - }); - }); - - // Replicating test vector from BIP - // https://en.bitcoin.it/wiki/BIP_0049 - test('BIP-0049 test vector', () => { - const publicKey = Buffer.from( - '03a1af804ac108a8a51782198c2d034b28bf90c8803f5a53f76276fa69a4eae77f', - 'hex' - ); - const hash = makePayToScriptHashKeyHash(publicKey); - - // stacks.js implementation - const addressBytesFromStacks = hashP2WPKH(publicKey); - expect(addressBytesFromStacks).toEqual('336caa13e08b96080a32b5d818d59b4ab3b36742'); - - // wallet implementation - const addressBytes = makePayToScriptHashAddressBytes(hash); - const addressBytesHex = Buffer.from(addressBytes).toString('hex'); - expect(addressBytesHex).toEqual('336caa13e08b96080a32b5d818d59b4ab3b36742'); - - // compare lib output - expect(addressBytesFromStacks).toEqual(addressBytesHex); - - const address = base58check(sha256).encode( - Buffer.concat([ - Buffer.of(payToScriptHashTestnetPrefix), - Buffer.from(addressBytesFromStacks, 'hex'), - ]) - ); - const addressWithLib = makePayToScriptHashAddress(addressBytes, 'testnet'); - - expect(address).toEqual(addressWithLib); - - expect(addressWithLib).toEqual('2Mww8dCYPUpKHofjgcXcBCEGmniw9CoaiD2'); - }); -}); diff --git a/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.ts b/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.ts deleted file mode 100644 index 1a97d55a146..00000000000 --- a/src/shared/crypto/bitcoin/p2wsh-p2sh-address-gen.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { ripemd160 } from '@noble/hashes/ripemd160'; -import { sha256 } from '@noble/hashes/sha256'; -import { base58check } from '@scure/base'; -import { HDKey } from '@scure/bip32'; -import { mnemonicToSeed } from '@scure/bip39'; -import * as bitcoin from 'bitcoinjs-lib'; - -import { NetworkModes } from '@shared/constants'; - -export async function deriveBtcBip49SeedFromMnemonic(mnemonic: string) { - return mnemonicToSeed(mnemonic); -} - -export function deriveRootBtcKeychain(seed: Uint8Array) { - return HDKey.fromMasterSeed(seed); -} - -// ts-unused-exports:disable-next-line -export async function deriveBtcPayment( - publicKey: Uint8Array | Buffer, - defaultNetwork: NetworkModes = 'mainnet' -) { - const pubkey = Buffer.isBuffer(publicKey) ? publicKey : Buffer.from(publicKey); - const network = defaultNetwork === 'mainnet' ? undefined : bitcoin.networks.testnet; - return bitcoin.payments.p2sh({ - redeem: bitcoin.payments.p2wpkh({ - pubkey, - network, - }), - network, - }); -} - -export function decodeCompressedWifPrivateKey(key: string) { - // https://en.bitcoinwiki.org/wiki/Wallet_import_format - // Decode Compressed WIF format private key - const compressedWifFormatPrivateKey = base58check(sha256).decode(key); - // Drop leading network byte, trailing public key SEC format byte - return compressedWifFormatPrivateKey.slice(1, compressedWifFormatPrivateKey.length - 1); -} - -// https://en.bitcoin.it/wiki/List_of_address_prefixes -const payToScriptHashMainnetPrefix = 0x05; -export const payToScriptHashTestnetPrefix = 0xc4; - -const payToScriptHashPrefixMap: Record = { - mainnet: payToScriptHashMainnetPrefix, - testnet: payToScriptHashTestnetPrefix, -}; - -function hash160(input: Uint8Array) { - return ripemd160(sha256(input)); -} - -export function makePayToScriptHashKeyHash(publicKey: Uint8Array) { - return hash160(publicKey); -} - -export function makePayToScriptHashAddressBytes(keyHash: Uint8Array) { - const redeemScript = Uint8Array.from([ - ...Uint8Array.of(0x00), - ...Uint8Array.of(keyHash.length), - ...keyHash, - ]); - return hash160(redeemScript); -} - -export function makePayToScriptHashAddress(addressBytes: Uint8Array, network: NetworkModes) { - const networkByte = payToScriptHashPrefixMap[network]; - const addressWithPrefix = Uint8Array.from([networkByte, ...addressBytes]); - return base58check(sha256).encode(addressWithPrefix); -} - -export function publicKeyToPayToScriptHashAddress(publicKey: Uint8Array, network: NetworkModes) { - const hash = makePayToScriptHashKeyHash(publicKey); - const addrBytes = makePayToScriptHashAddressBytes(hash); - return makePayToScriptHashAddress(addrBytes, network); -} diff --git a/src/shared/crypto/bitcoin/signer-config.spec.ts b/src/shared/crypto/bitcoin/signer-config.spec.ts index c2c7fc28ff2..3f0b39845c5 100644 --- a/src/shared/crypto/bitcoin/signer-config.spec.ts +++ b/src/shared/crypto/bitcoin/signer-config.spec.ts @@ -1,3 +1,7 @@ +import { + getNativeSegwitAccountDerivationPath, + getTaprootAccountDerivationPath, +} from '@leather-wallet/bitcoin'; import { makeNumberRange } from '@leather-wallet/utils'; import { HDKey } from '@scure/bip32'; import { mnemonicToSeedSync } from '@scure/bip39'; @@ -5,8 +9,6 @@ import * as btc from '@scure/btc-signer'; import { STANDARD_BIP_FAKE_MNEMONIC } from '@tests/mocks/constants'; import { deriveAddressIndexKeychainFromAccount, ecdsaPublicKeyToSchnorr } from './bitcoin.utils'; -import { getTaprootAccountDerivationPath } from './p2tr-address-gen'; -import { getNativeSegwitAccountDerivationPath } from './p2wpkh-address-gen'; import { getAssumedZeroIndexSigningConfig } from './signer-config'; describe(getAssumedZeroIndexSigningConfig.name, () => { diff --git a/src/shared/crypto/bitcoin/signer-config.ts b/src/shared/crypto/bitcoin/signer-config.ts index 98ebdd023e3..755d20b6ca0 100644 --- a/src/shared/crypto/bitcoin/signer-config.ts +++ b/src/shared/crypto/bitcoin/signer-config.ts @@ -1,3 +1,7 @@ +import { + getNativeSegwitAddressIndexDerivationPath, + getTaprootAddressIndexDerivationPath, +} from '@leather-wallet/bitcoin'; import { isUndefined, makeNumberRange } from '@leather-wallet/utils'; import * as btc from '@scure/btc-signer'; @@ -5,8 +9,6 @@ import { BitcoinNetworkModes } from '@shared/constants'; import { logger } from '@shared/logger'; import { getInputPaymentType } from './bitcoin.utils'; -import { getTaprootAddressIndexDerivationPath } from './p2tr-address-gen'; -import { getNativeSegwitAddressIndexDerivationPath } from './p2wpkh-address-gen'; // Used to pass to a signing function, with info needed for determine which key // to use to sign a given input diff --git a/src/shared/rpc/methods/sign-psbt.ts b/src/shared/rpc/methods/sign-psbt.ts index 745c2f4dc15..8f95912bc3b 100644 --- a/src/shared/rpc/methods/sign-psbt.ts +++ b/src/shared/rpc/methods/sign-psbt.ts @@ -1,5 +1,10 @@ -import { DefineRpcMethod, RpcRequest, RpcResponse, SignatureHash } from '@btckit/types'; -import * as btc from '@scure/btc-signer'; +import { + SignatureHash as BtcKitSignatureHash, + DefineRpcMethod, + RpcRequest, + RpcResponse, +} from '@leather-wallet/rpc'; +import { SigHash } from '@scure/btc-signer/transaction'; import * as yup from 'yup'; import { WalletDefaultNetworkConfigurationIds } from '@shared/constants'; @@ -13,17 +18,17 @@ import { } from './validation.utils'; // TODO: Revisit allowedSighash type if/when fixed in btc-signer -export type AllowedSighashTypes = SignatureHash | btc.SignatureHash; +export type AllowedSighashTypes = BtcKitSignatureHash | SigHash; // Pass all sighashTypes through as allowed to btc-signer export const allSighashTypes = [ - btc.SignatureHash.DEFAULT, - SignatureHash.ALL, - SignatureHash.NONE, - SignatureHash.SINGLE, - btc.SignatureHash.ANYONECANPAY, - SignatureHash.ALL_ANYONECANPAY, - SignatureHash.NONE_ANYONECANPAY, - SignatureHash.SINGLE_ANYONECANPAY, + SigHash.DEFAULT, + BtcKitSignatureHash.ALL, + BtcKitSignatureHash.NONE, + BtcKitSignatureHash.SINGLE, + SigHash.ALL_ANYONECANPAY, + BtcKitSignatureHash.ALL_ANYONECANPAY, + BtcKitSignatureHash.NONE_ANYONECANPAY, + BtcKitSignatureHash.SINGLE_ANYONECANPAY, ]; const rpcSignPsbtParamsSchema = yup.object().shape({