diff --git a/package-lock.json b/package-lock.json index 0f47d62a..475dd1a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,10 +12,10 @@ "@auth/prisma-adapter": "^1.6.0", "@hookform/resolvers": "^3.9.0", "@jinglescode/nostr-chat-plugin": "^0.0.11", - "@meshsdk/core": "^1.9.0-beta.18", - "@meshsdk/core-csl": "^1.9.0-beta.18", - "@meshsdk/core-cst": "^1.9.0-beta.19", - "@meshsdk/react": "^1.9.0-beta.18", + "@meshsdk/core": "^1.9.0-beta.77", + "@meshsdk/core-csl": "^1.9.0-beta.77", + "@meshsdk/core-cst": "^1.9.0-beta.77", + "@meshsdk/react": "^1.9.0-beta.77", "@octokit/core": "^6.1.2", "@prisma/client": "^6.4.1", "@radix-ui/react-accordion": "^1.2.0", @@ -48,14 +48,14 @@ "clsx": "^2.1.1", "cors": "^2.8.5", "dexie": "^4.0.11", - "formidable": "^3.5.2", + "formidable": "^3.5.4", "framer-motion": "^11.11.9", "geist": "^1.3.0", "idb-keyval": "^6.2.1", "jsonld": "^8.3.3", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.439.0", - "next": "^14.2.4", + "next": "^15.2.4", "next-auth": "^4.24.7", "papaparse": "^5.5.3", "react": "^18.3.1", @@ -785,11 +785,22 @@ "npm": ">=7.0.0" } }, + "node_modules/@bitcoin-js/tiny-secp256k1-asmjs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@bitcoin-js/tiny-secp256k1-asmjs/-/tiny-secp256k1-asmjs-2.2.4.tgz", + "integrity": "sha512-Lo62disBIDwPrYAmMsSjEmqak41yb0OFGQVLdktXmcQLgtC1BI5Sd1eHSxNREKZmxMUXevtsgEhGB1DvvatRmQ==", + "license": "MIT", + "dependencies": { + "uint8array-tools": "0.0.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@bufbuild/protobuf": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", - "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", - "license": "(Apache-2.0 AND BSD-3-Clause)" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.1.tgz", + "integrity": "sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==" }, "node_modules/@cardano-ogmios/client": { "version": "6.9.0", @@ -923,6 +934,283 @@ "node": ">=16.20.2" } }, + "node_modules/@cardano-sdk/dapp-connector": { + "version": "0.13.19", + "resolved": "https://registry.npmjs.org/@cardano-sdk/dapp-connector/-/dapp-connector-0.13.19.tgz", + "integrity": "sha512-MxXaV48HgxnR1EpqrEke/SFHsFafUQt+rGpGcuoEnGLu0a0HJmP0o4sXN/KfLwM5CPXD+0T71uBiWxcvHWDAGA==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/core": "~0.46.5", + "@cardano-sdk/crypto": "~0.4.3", + "@cardano-sdk/util": "~0.17.0", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4", + "webextension-polyfill": "^0.8.0" + }, + "engines": { + "node": ">=16.20.2" + } + }, + "node_modules/@cardano-sdk/dapp-connector/node_modules/@cardano-sdk/core": { + "version": "0.46.5", + "resolved": "https://registry.npmjs.org/@cardano-sdk/core/-/core-0.46.5.tgz", + "integrity": "sha512-Z+iCU8jS1qej5sS2WOVJvpH8r3cclPvuCVkMshQjls+5igoJfsCbZWzxx6tYpXhDzr9hmhlUjXz1rBquefzxrA==", + "license": "Apache-2.0", + "dependencies": { + "@biglup/is-cid": "^1.0.3", + "@cardano-ogmios/client": "6.9.0", + "@cardano-ogmios/schema": "6.9.0", + "@cardano-sdk/crypto": "~0.4.3", + "@cardano-sdk/util": "~0.17.0", + "@foxglove/crc": "^0.0.3", + "@scure/base": "^1.1.1", + "fraction.js": "4.0.1", + "ip-address": "^9.0.5", + "lodash": "^4.17.21", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "rxjs": "^7.4.0" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + } + } + }, + "node_modules/@cardano-sdk/dapp-connector/node_modules/@cardano-sdk/crypto": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@cardano-sdk/crypto/-/crypto-0.4.3.tgz", + "integrity": "sha512-PLyTBqWfXrbaOF3v5PsYgm14ApM7rOa2vhqoPZSJANxXlam4G98U1TRngv4Kh0unKxetp/NwbOYy575ou0F8ug==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/util": "~0.17.0", + "blake2b": "^2.1.4", + "i": "^0.3.7", + "libsodium-wrappers-sumo": "^0.7.5", + "lodash": "^4.17.21", + "pbkdf2": "^3.1.3", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "@dcspark/cardano-multiplatform-lib-asmjs": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-browser": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-nodejs": "^3.1.1" + }, + "peerDependenciesMeta": { + "@dcspark/cardano-multiplatform-lib-asmjs": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-browser": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-nodejs": { + "optional": true + } + } + }, + "node_modules/@cardano-sdk/dapp-connector/node_modules/@cardano-sdk/util": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@cardano-sdk/util/-/util-0.17.0.tgz", + "integrity": "sha512-0o9OraegP7t69hnLFP9gAOYimETPWrg6y+OAN2zHmIikVbl4cp2GUnr7xJkd0T5wWC988ylxfrNC5PfEl/DGxA==", + "license": "Apache-2.0", + "dependencies": { + "bech32": "^2.0.0", + "lodash": "^4.17.21", + "serialize-error": "^8", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4" + }, + "engines": { + "node": ">=16.20.2" + } + }, + "node_modules/@cardano-sdk/input-selection": { + "version": "0.13.34", + "resolved": "https://registry.npmjs.org/@cardano-sdk/input-selection/-/input-selection-0.13.34.tgz", + "integrity": "sha512-/AidYTF9WesLoMc4PHoETxXgrfYEq8GECcikjvLwx1mygmKpok4Lp41Aio7sBasUCLvZ82/yTd3uXIAvec1aCA==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/core": "~0.43.0", + "@cardano-sdk/key-management": "~0.25.1", + "@cardano-sdk/util": "~0.15.5", + "bignumber.js": "^9.1.1", + "lodash": "^4.17.21", + "ts-custom-error": "^3.2.0" + }, + "engines": { + "node": ">=16.20.2" + } + }, + "node_modules/@cardano-sdk/input-selection/node_modules/@cardano-sdk/core": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@cardano-sdk/core/-/core-0.43.0.tgz", + "integrity": "sha512-hPnZXjObJub0eXV2dDAG2/gEg/vw092RZ1VGMZfBSqavz18Tg/K6jGQ3cOpWZ9d+MqFzZTCB+s5ctdRkYt3idA==", + "license": "Apache-2.0", + "dependencies": { + "@biglup/is-cid": "^1.0.3", + "@cardano-ogmios/client": "6.9.0", + "@cardano-ogmios/schema": "6.9.0", + "@cardano-sdk/crypto": "~0.1.32", + "@cardano-sdk/util": "~0.15.5", + "@foxglove/crc": "^0.0.3", + "@scure/base": "^1.1.1", + "fraction.js": "4.0.1", + "ip-address": "^9.0.5", + "lodash": "^4.17.21", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "rxjs": "^7.4.0" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + } + } + }, + "node_modules/@cardano-sdk/input-selection/node_modules/@cardano-sdk/crypto": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/@cardano-sdk/crypto/-/crypto-0.1.32.tgz", + "integrity": "sha512-RCKFvkzD32QpKQ0jULADVRNmfBNkCwiZl2nlFbkZ3aCrfIex+6/2CizoagJ161fA7lL5/HGuzWfjOg3GX2ax6w==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/util": "~0.15.5", + "blake2b": "^2.1.4", + "i": "^0.3.7", + "libsodium-wrappers-sumo": "^0.7.5", + "lodash": "^4.17.21", + "npm": "^9.3.0", + "pbkdf2": "^3.1.2", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "@dcspark/cardano-multiplatform-lib-asmjs": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-browser": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-nodejs": "^3.1.1" + }, + "peerDependenciesMeta": { + "@dcspark/cardano-multiplatform-lib-asmjs": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-browser": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-nodejs": { + "optional": true + } + } + }, + "node_modules/@cardano-sdk/key-management": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@cardano-sdk/key-management/-/key-management-0.25.1.tgz", + "integrity": "sha512-D99XTIplI2aQnCZtVUKZdmH9wZJQC2WuZL6hTqGZHHFBAeju2zBzGWT21LlcPRlT0/2DP2/OdfIHoHCr2ORp4g==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/core": "~0.43.0", + "@cardano-sdk/crypto": "~0.1.32", + "@cardano-sdk/dapp-connector": "~0.13.1", + "@cardano-sdk/util": "~0.15.5", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1", + "bip39": "^3.0.4", + "chacha": "^2.1.0", + "get-random-values": "^2.0.0", + "lodash": "^4.17.21", + "pbkdf2": "^3.1.2", + "rxjs": "^7.4.0", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4" + }, + "engines": { + "node": ">=16.20.2" + } + }, + "node_modules/@cardano-sdk/key-management/node_modules/@cardano-sdk/core": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@cardano-sdk/core/-/core-0.43.0.tgz", + "integrity": "sha512-hPnZXjObJub0eXV2dDAG2/gEg/vw092RZ1VGMZfBSqavz18Tg/K6jGQ3cOpWZ9d+MqFzZTCB+s5ctdRkYt3idA==", + "license": "Apache-2.0", + "dependencies": { + "@biglup/is-cid": "^1.0.3", + "@cardano-ogmios/client": "6.9.0", + "@cardano-ogmios/schema": "6.9.0", + "@cardano-sdk/crypto": "~0.1.32", + "@cardano-sdk/util": "~0.15.5", + "@foxglove/crc": "^0.0.3", + "@scure/base": "^1.1.1", + "fraction.js": "4.0.1", + "ip-address": "^9.0.5", + "lodash": "^4.17.21", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4", + "web-encoding": "^1.1.5" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "rxjs": "^7.4.0" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + } + } + }, + "node_modules/@cardano-sdk/key-management/node_modules/@cardano-sdk/crypto": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/@cardano-sdk/crypto/-/crypto-0.1.32.tgz", + "integrity": "sha512-RCKFvkzD32QpKQ0jULADVRNmfBNkCwiZl2nlFbkZ3aCrfIex+6/2CizoagJ161fA7lL5/HGuzWfjOg3GX2ax6w==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/util": "~0.15.5", + "blake2b": "^2.1.4", + "i": "^0.3.7", + "libsodium-wrappers-sumo": "^0.7.5", + "lodash": "^4.17.21", + "npm": "^9.3.0", + "pbkdf2": "^3.1.2", + "ts-custom-error": "^3.2.0", + "ts-log": "^2.2.4" + }, + "engines": { + "node": ">=16.20.2" + }, + "peerDependencies": { + "@dcspark/cardano-multiplatform-lib-asmjs": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-browser": "^3.1.1", + "@dcspark/cardano-multiplatform-lib-nodejs": "^3.1.1" + }, + "peerDependenciesMeta": { + "@dcspark/cardano-multiplatform-lib-asmjs": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-browser": { + "optional": true + }, + "@dcspark/cardano-multiplatform-lib-nodejs": { + "optional": true + } + } + }, "node_modules/@cardano-sdk/util": { "version": "0.15.7", "resolved": "https://registry.npmjs.org/@cardano-sdk/util/-/util-0.15.7.tgz", @@ -968,7 +1256,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz", "integrity": "sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==", - "license": "Apache-2.0", "peerDependencies": { "@bufbuild/protobuf": "^1.4.2" } @@ -977,7 +1264,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@connectrpc/connect-node/-/connect-node-1.4.0.tgz", "integrity": "sha512-0ANnrr6SvsjevsWEgdzHy7BaHkluZyS6s4xNoVt7RBHFR5V/kT9lPokoIbYUOU9JHzdRgTaS3x5595mwUsu15g==", - "license": "Apache-2.0", "dependencies": { "undici": "^5.28.3" }, @@ -993,7 +1279,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@connectrpc/connect-web/-/connect-web-1.4.0.tgz", "integrity": "sha512-13aO4psFbbm7rdOFGV0De2Za64DY/acMspgloDlcOKzLPPs0yZkhp1OOzAQeiAIr7BM/VOHIA3p8mF0inxCYTA==", - "license": "Apache-2.0", "peerDependencies": { "@bufbuild/protobuf": "^1.4.2", "@connectrpc/connect": "1.4.0" @@ -1029,7 +1314,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1047,6 +1331,11 @@ "tslib": "^2.4.0" } }, + "node_modules/@emurgo/cardano-message-signing-nodejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-message-signing-nodejs/-/cardano-message-signing-nodejs-1.1.0.tgz", + "integrity": "sha512-PQRc8K8wZshEdmQenNUzVtiI8oJNF/1uAnBhidee5C4o1l2mDLOW+ur46HWHIFKQ6x8mSJTllcjMscHgzju0gQ==" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", @@ -1736,8 +2025,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@harmoniclabs/pair/-/pair-1.0.0.tgz", "integrity": "sha512-D9OBowsUsy1LctHxWzd9AngTzoo5x3rBiJ0gu579t41Q23pb+VNx1euEfluUEiaYbgljcl1lb/4D1fFTZd1tRQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@harmoniclabs/plutus-data": { "version": "1.2.4", @@ -1852,34 +2140,439 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "optional": true, "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", + "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", + "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", + "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", + "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", + "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", + "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", + "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", + "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", + "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", + "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", + "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", + "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", + "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", + "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", + "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", + "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", + "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.5.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", + "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", + "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", + "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", @@ -2518,66 +3211,223 @@ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "license": "MIT" }, - "node_modules/@mediapipe/tasks-vision": { - "version": "0.10.17", - "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", - "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", - "license": "Apache-2.0" + "node_modules/@mediapipe/tasks-vision": { + "version": "0.10.17", + "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", + "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", + "license": "Apache-2.0" + }, + "node_modules/@meshsdk/bitcoin": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.77.tgz", + "integrity": "sha512-GqBatQtOYXvrNXgaCDXYuXHDgE7fJhD8Yof26eZUGg1BIpzqP4P58tLGUWYsUXRNyLBBYmFtJfCZk2RFPz3cDw==", + "dependencies": { + "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", + "bip174": "^3.0.0-rc.1", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.7", + "ecpair": "^2.0.0" + } + }, + "node_modules/@meshsdk/common": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.77.tgz", + "integrity": "sha512-8s7mkB2Nl74NJ9zp6ZzfKOO05LOqYoSOi4U+g5Pf46d9c7m1ZgX9A/rvFrAZ8wxVUPRfs0NLp+7Q0K14Tu/xxg==", + "license": "Apache-2.0", + "dependencies": { + "bech32": "^2.0.0", + "bip39": "3.1.0", + "blake2b": "^2.1.4", + "blakejs": "^1.2.1" + } + }, + "node_modules/@meshsdk/core": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/core/-/core-1.9.0-beta.77.tgz", + "integrity": "sha512-OGHsMxlU8M5fIDJxhZ8aFTp/R6krDGZ1g4eYac+LMQfjs1snHhCX7SdAYGnZHiHK4QF4NM/rpsm1nAzwn5oJQA==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "@meshsdk/provider": "1.9.0-beta.77", + "@meshsdk/react": "1.9.0-beta.77", + "@meshsdk/transaction": "1.9.0-beta.77", + "@meshsdk/wallet": "1.9.0-beta.77" + } + }, + "node_modules/@meshsdk/core-csl": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/core-csl/-/core-csl-1.9.0-beta.77.tgz", + "integrity": "sha512-AxDudJbrB49xYAU9K8DEyZD/l3sdnP2/Bi7qYJreIV+i9VUpRtTDZPKlXB/KYibQpvEbOdUZEF2+AivxOBR4pQ==", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.77", + "@sidan-lab/whisky-js-browser": "^1.0.9", + "@sidan-lab/whisky-js-nodejs": "^1.0.9", + "@types/base32-encoding": "^1.0.2", + "base32-encoding": "^1.0.0", + "bech32": "^2.0.0", + "json-bigint": "^1.0.0" + } + }, + "node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.77.tgz", + "integrity": "sha512-2Qz2bI4eY/KLFw+uAqZvLx5Dxf5aTPCC7dIR1chMrTfl8vFu0OP9tslVI7iK6T54Z3YcV7sh1f3bcE/8N3Hmjw==", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@harmoniclabs/cbor": "1.3.0", + "@harmoniclabs/pair": "^1.0.0", + "@harmoniclabs/plutus-data": "1.2.4", + "@harmoniclabs/uplc": "1.2.4", + "@meshsdk/common": "1.9.0-beta.77", + "@types/base32-encoding": "^1.0.2", + "base32-encoding": "^1.0.0", + "bech32": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.0" + } + }, + "node_modules/@meshsdk/core/node_modules/@meshsdk/transaction": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.77.tgz", + "integrity": "sha512-qfzl3g8fuHRZWCr+7Oy8MgvAoGjz2sDVhXlvapSOpXH8cNIKIEOuv6IirihSFmO5Yhm4aD9pwMnl5Rg5Fjwwew==", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "json-bigint": "^1.0.0" + } + }, + "node_modules/@meshsdk/core/node_modules/@meshsdk/wallet": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.77.tgz", + "integrity": "sha512-Lus7goOYSddCo5R0ZRGyno7ymoFbgVtepdAgZGE+u+V3D37XFefxDTaDj9pDwJyRFjl3XVV881dmZVY5HOnmCg==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "@meshsdk/transaction": "1.9.0-beta.77", + "@simplewebauthn/browser": "^13.0.0" + } + }, + "node_modules/@meshsdk/core/node_modules/@simplewebauthn/browser": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.2.0.tgz", + "integrity": "sha512-N3fuA1AAnTo5gCStYoIoiasPccC+xPLx2YU88Dv0GeAmPQTWHETlZQq5xZ0DgUq1H9loXMWQH5qqUjcI7BHJ1A==" + }, + "node_modules/@meshsdk/provider": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/provider/-/provider-1.9.0-beta.77.tgz", + "integrity": "sha512-xc6mXuUhgODOVPvOBq0++lRDujgoFY5NYp3XHuXrA6EWBSkWaVhc1ZKnzIa00WFBb2ofYTpw4BbJEC/5VyyyZA==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "@utxorpc/sdk": "^0.6.7", + "@utxorpc/spec": "^0.16.0", + "axios": "^1.7.2", + "cbor": "^10.0.9" + } + }, + "node_modules/@meshsdk/react": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/react/-/react-1.9.0-beta.77.tgz", + "integrity": "sha512-SitSTTA409mWv7zgBqz7tCAwsAiwVyKiZS+TSj00y0hFb4hivuZ6YYci0PHlyOgSgr+bVdxNPNxQ5ZnUDTFAaA==", + "dependencies": { + "@fabianbormann/cardano-peer-connect": "^1.2.18", + "@meshsdk/bitcoin": "1.9.0-beta.77", + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/transaction": "1.9.0-beta.77", + "@meshsdk/wallet": "1.9.0-beta.77", + "@meshsdk/web3-sdk": "0.0.50", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-tooltip": "^1.1.4", + "class-variance-authority": "^0.7.1", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7" + }, + "peerDependencies": { + "react": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc", + "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" + } + }, + "node_modules/@meshsdk/react/node_modules/@meshsdk/transaction": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.77.tgz", + "integrity": "sha512-qfzl3g8fuHRZWCr+7Oy8MgvAoGjz2sDVhXlvapSOpXH8cNIKIEOuv6IirihSFmO5Yhm4aD9pwMnl5Rg5Fjwwew==", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "json-bigint": "^1.0.0" + } }, - "node_modules/@meshsdk/common": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.18.tgz", - "integrity": "sha512-OQZ7w4CJwYIebWh1fVx/7XFzISzYPlhyjZz4QVNtatcWCYQAntuUAI17U4zWKDeEwv1YyAqyLRgIeClDtq9RyQ==", - "license": "Apache-2.0", + "node_modules/@meshsdk/react/node_modules/@meshsdk/wallet": { + "version": "1.9.0-beta.77", + "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.77.tgz", + "integrity": "sha512-Lus7goOYSddCo5R0ZRGyno7ymoFbgVtepdAgZGE+u+V3D37XFefxDTaDj9pDwJyRFjl3XVV881dmZVY5HOnmCg==", "dependencies": { - "bech32": "^2.0.0", - "bip39": "3.1.0", - "blake2b": "^2.1.4", - "blakejs": "^1.2.1" + "@meshsdk/common": "1.9.0-beta.77", + "@meshsdk/core-cst": "1.9.0-beta.77", + "@meshsdk/transaction": "1.9.0-beta.77", + "@simplewebauthn/browser": "^13.0.0" } }, - "node_modules/@meshsdk/core": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core/-/core-1.9.0-beta.18.tgz", - "integrity": "sha512-AgaPcuqdzzgDd7h3XF7bZfivXPprgY2NgQxFrsIz3cb7JUrGBtY2z0SI5ytIs/jLJzwEcdyQRfurLpGTFN0n+g==", + "node_modules/@meshsdk/react/node_modules/@simplewebauthn/browser": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.2.0.tgz", + "integrity": "sha512-N3fuA1AAnTo5gCStYoIoiasPccC+xPLx2YU88Dv0GeAmPQTWHETlZQq5xZ0DgUq1H9loXMWQH5qqUjcI7BHJ1A==" + }, + "node_modules/@meshsdk/transaction": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.68.tgz", + "integrity": "sha512-FsVKqtCyAGrk3IRzEKIr4R6SNYFEGClwCPzM6LlfuC1z97lScM7yP9FgwkOMe4ZPXn4BS32i62X7EdQVIaQwMg==", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.18", - "@meshsdk/core-cst": "1.9.0-beta.18", - "@meshsdk/provider": "1.9.0-beta.18", - "@meshsdk/react": "1.9.0-beta.18", - "@meshsdk/transaction": "1.9.0-beta.18", - "@meshsdk/wallet": "1.9.0-beta.18" + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/core-cst": "1.9.0-beta.68", + "json-bigint": "^1.0.0" } }, - "node_modules/@meshsdk/core-csl": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core-csl/-/core-csl-1.9.0-beta.18.tgz", - "integrity": "sha512-ZG/6FDJbLh6IKqP+jGnZXHtkJ8xs6YweJAeSf6xJkzE5hQCJn6hfD/KkviutPVf7pw6FSx3eqEtDi+j70/Yddw==", + "node_modules/@meshsdk/transaction/node_modules/@meshsdk/common": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.68.tgz", + "integrity": "sha512-rmL2uZzSTEW52OYNCdRF1mBdL4pXLcMwjNZrK3Np/6E1zl2to0pArMfuc2bUl5urTIDfTqa2CsuWpgzZQ47N6Q==", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.18", - "@sidan-lab/sidan-csl-rs-browser": "0.9.21", - "@sidan-lab/sidan-csl-rs-nodejs": "0.9.21", - "@types/base32-encoding": "^1.0.2", - "base32-encoding": "^1.0.0", "bech32": "^2.0.0", - "json-bigint": "^1.0.0" + "bip39": "3.1.0", + "blake2b": "^2.1.4", + "blakejs": "^1.2.1" } }, - "node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.19", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.19.tgz", - "integrity": "sha512-mUFBy9mHQqM6AMX9/C2WKxSn2H3A0r+35yF+n9rskAXjXEgcXlfZQxgSxtNDTsaJYxVgaASxPdmR020OSJpzaA==", + "node_modules/@meshsdk/transaction/node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.68.tgz", + "integrity": "sha512-7KXr9k+Cpg/g2Fwj/opwHl6/yw5fkPxDXe0yCBuX3IeOSwM1lfjaENVdBGUtxz+opkbg+0a8RyPt3wKQG+tiJA==", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.45.5", "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", "@cardano-sdk/util": "^0.15.5", "@harmoniclabs/cbor": "1.3.0", + "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.4", "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.19", + "@meshsdk/common": "1.9.0-beta.68", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -2585,10 +3435,22 @@ "bn.js": "^5.2.0" } }, - "node_modules/@meshsdk/core-cst/node_modules/@meshsdk/common": { - "version": "1.9.0-beta.19", - "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.19.tgz", - "integrity": "sha512-jyN9cCk9hrHLXLivktpfWwi/QSFDrWcsie7u6a2pCznPhBQWu8scvNjHIW0Uk4zv7TyrPnzfO+8zHBuwnGyXiA==", + "node_modules/@meshsdk/wallet": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.68.tgz", + "integrity": "sha512-7rxU2MD4cDYDoS6soIOqeS+2HVW8ONm/j11+sgoMvLiUbPCpfogWLGLklRKxvZhgzAipUKbPNjak24AoD0Tq6g==", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/core-cst": "1.9.0-beta.68", + "@meshsdk/transaction": "1.9.0-beta.68", + "@simplewebauthn/browser": "^13.0.0" + } + }, + "node_modules/@meshsdk/wallet/node_modules/@meshsdk/common": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.68.tgz", + "integrity": "sha512-rmL2uZzSTEW52OYNCdRF1mBdL4pXLcMwjNZrK3Np/6E1zl2to0pArMfuc2bUl5urTIDfTqa2CsuWpgzZQ47N6Q==", "license": "Apache-2.0", "dependencies": { "bech32": "^2.0.0", @@ -2597,19 +3459,21 @@ "blakejs": "^1.2.1" } }, - "node_modules/@meshsdk/core/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.18.tgz", - "integrity": "sha512-6dJ1gZyjT1XBusia1l3YqwZIxJ75OWrYE0D8tkFlXCfEsKzcRmVCkdtAvFvv8q1IfXoIgSygAheiEZdNmAzn7w==", + "node_modules/@meshsdk/wallet/node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.68.tgz", + "integrity": "sha512-7KXr9k+Cpg/g2Fwj/opwHl6/yw5fkPxDXe0yCBuX3IeOSwM1lfjaENVdBGUtxz+opkbg+0a8RyPt3wKQG+tiJA==", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.45.5", "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", "@cardano-sdk/util": "^0.15.5", "@harmoniclabs/cbor": "1.3.0", + "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.4", "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.18", + "@meshsdk/common": "1.9.0-beta.68", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -2617,32 +3481,82 @@ "bn.js": "^5.2.0" } }, - "node_modules/@meshsdk/provider": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/provider/-/provider-1.9.0-beta.18.tgz", - "integrity": "sha512-6YYevsYJHQXWRPUJzDG2CF45sYDNPfkLHnFpoz2kaK5XZHb6cDWBa9fmeYH1ZpxODnEyzdGG5hle9IoDwJ9UQQ==", + "node_modules/@meshsdk/wallet/node_modules/@simplewebauthn/browser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.1.2.tgz", + "integrity": "sha512-aZnW0KawAM83fSBUgglP5WofbrLbLyr7CoPqYr66Eppm7zO86YX6rrCjRB3hQKPrL7ATvY4FVXlykZ6w6FwYYw==", + "license": "MIT" + }, + "node_modules/@meshsdk/web3-sdk": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@meshsdk/web3-sdk/-/web3-sdk-0.0.50.tgz", + "integrity": "sha512-mBEdwGJNCJgUfl/VXDicGMe8duqzrNCNEiEgkSRy795JhXrppl9ARPb64P6AkryZ5DxRRjMqZyVNXQRv9fIITQ==", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.18", - "@meshsdk/core-cst": "1.9.0-beta.18", - "@utxorpc/sdk": "0.6.2", - "@utxorpc/spec": "0.10.1", - "axios": "^1.7.2" + "@meshsdk/bitcoin": "1.9.0-beta.68", + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/core": "1.9.0-beta.68", + "@meshsdk/core-cst": "1.9.0-beta.68", + "@meshsdk/wallet": "1.9.0-beta.68", + "@peculiar/webcrypto": "^1.5.0", + "axios": "^1.8.3", + "base32-encoding": "^1.0.0", + "uuid": "^11.1.0" + } + }, + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/bitcoin": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.68.tgz", + "integrity": "sha512-Ni050tWpSR9GABYVgoB/3tOtINJElg8+A4BWsqU0Ez/HK0AJBxLj+/gKAwzIAsOw0utcxd7mgADFUjXZU+oDlQ==", + "dependencies": { + "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", + "bip174": "^3.0.0-rc.1", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.7", + "ecpair": "^2.0.0" + } + }, + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/common": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.68.tgz", + "integrity": "sha512-rmL2uZzSTEW52OYNCdRF1mBdL4pXLcMwjNZrK3Np/6E1zl2to0pArMfuc2bUl5urTIDfTqa2CsuWpgzZQ47N6Q==", + "license": "Apache-2.0", + "dependencies": { + "bech32": "^2.0.0", + "bip39": "3.1.0", + "blake2b": "^2.1.4", + "blakejs": "^1.2.1" } }, - "node_modules/@meshsdk/provider/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.18.tgz", - "integrity": "sha512-6dJ1gZyjT1XBusia1l3YqwZIxJ75OWrYE0D8tkFlXCfEsKzcRmVCkdtAvFvv8q1IfXoIgSygAheiEZdNmAzn7w==", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/core/-/core-1.9.0-beta.68.tgz", + "integrity": "sha512-/1ul9u+WDGylfICcX0Kj1FIDjH4lYyvDae3xmo+X/0DLXDCC9FwgWtpxIyJYXWJUTlsVfjvdqeLbPUeeQEniSw==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/core-cst": "1.9.0-beta.68", + "@meshsdk/provider": "1.9.0-beta.68", + "@meshsdk/react": "1.9.0-beta.68", + "@meshsdk/transaction": "1.9.0-beta.68", + "@meshsdk/wallet": "1.9.0-beta.68" + } + }, + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.68.tgz", + "integrity": "sha512-7KXr9k+Cpg/g2Fwj/opwHl6/yw5fkPxDXe0yCBuX3IeOSwM1lfjaENVdBGUtxz+opkbg+0a8RyPt3wKQG+tiJA==", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.45.5", "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", "@cardano-sdk/util": "^0.15.5", "@harmoniclabs/cbor": "1.3.0", + "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.4", "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.18", + "@meshsdk/common": "1.9.0-beta.68", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -2650,17 +3564,30 @@ "bn.js": "^5.2.0" } }, - "node_modules/@meshsdk/react": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/react/-/react-1.9.0-beta.18.tgz", - "integrity": "sha512-q1M6IjgX2KNYApqesfojtEUD/66XEnfY+F4Kc8jM6h2L81QOWPjHss7EqAdUzUUC9ih8eyacfgbtPRKru+CG0A==", - "license": "Apache-2.0", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/provider": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/provider/-/provider-1.9.0-beta.68.tgz", + "integrity": "sha512-FzcPet8fDBT37CNc2cD/iYGhYsHar6E1dQtt/p2P+DGqnKd7IYp7L6T98fbEBzrJJZI8S0BuhLmRSdAQ0OTqSg==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/core-cst": "1.9.0-beta.68", + "@utxorpc/sdk": "^0.6.7", + "@utxorpc/spec": "^0.16.0", + "axios": "^1.7.2", + "cbor": "^10.0.9" + } + }, + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/react": { + "version": "1.9.0-beta.68", + "resolved": "https://registry.npmjs.org/@meshsdk/react/-/react-1.9.0-beta.68.tgz", + "integrity": "sha512-6LPeyj8qChVBpE+ulBah/WS2N5loLpxnrvYFQ6i4po0kRpLDta13jxF7qE4lQ00olsU5qnjEh5KOCbnhhCxSmw==", "dependencies": { "@fabianbormann/cardano-peer-connect": "^1.2.18", - "@meshsdk/common": "1.9.0-beta.18", - "@meshsdk/transaction": "1.9.0-beta.18", - "@meshsdk/wallet": "1.9.0-beta.18", - "@meshsdk/web3-sdk": "^0.0.3", + "@meshsdk/bitcoin": "1.9.0-beta.68", + "@meshsdk/common": "1.9.0-beta.68", + "@meshsdk/transaction": "1.9.0-beta.68", + "@meshsdk/wallet": "1.9.0-beta.68", + "@meshsdk/web3-sdk": "0.0.37", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-icons": "^1.3.2", @@ -2675,62 +3602,59 @@ "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" } }, - "node_modules/@meshsdk/transaction": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.18.tgz", - "integrity": "sha512-l8oJXiAkTqUHxSAs2TS7z7AA450xHSxo5RXUXgUCqxYolEbr44HTQs5LdyK7aRv+fim8zMxMHjL3Zmcuv++r4A==", - "license": "Apache-2.0", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk": { + "version": "0.0.37", + "resolved": "https://registry.npmjs.org/@meshsdk/web3-sdk/-/web3-sdk-0.0.37.tgz", + "integrity": "sha512-uRG0jLjsa83JbPZqnVkec3gjvi0LEMiu1E6ItUALEnKUTTuhDOe3Cx4Ov1PbPTsYVsGRq61DCgzCNHSh2bXy+Q==", "dependencies": { - "@meshsdk/common": "1.9.0-beta.18", - "@meshsdk/core-cst": "1.9.0-beta.18", - "json-bigint": "^1.0.0" + "@meshsdk/bitcoin": "1.9.0-beta.53", + "@meshsdk/common": "1.9.0-beta.53", + "@meshsdk/core-cst": "1.9.0-beta.53", + "@meshsdk/wallet": "1.9.0-beta.53", + "@peculiar/webcrypto": "^1.5.0", + "axios": "^1.8.3", + "base32-encoding": "^1.0.0", + "uuid": "^11.1.0" } }, - "node_modules/@meshsdk/transaction/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.18.tgz", - "integrity": "sha512-6dJ1gZyjT1XBusia1l3YqwZIxJ75OWrYE0D8tkFlXCfEsKzcRmVCkdtAvFvv8q1IfXoIgSygAheiEZdNmAzn7w==", - "license": "Apache-2.0", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/bitcoin": { + "version": "1.9.0-beta.53", + "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.53.tgz", + "integrity": "sha512-nl6+UZT05vpWUT+Vic2IkhfeJPZlNHm0zvDlOmos5u2JcC1li9T0QmMjYLvyaSj0u29Q0v+iRR4fvF0a8RZTQA==", "dependencies": { - "@cardano-sdk/core": "^0.45.5", - "@cardano-sdk/crypto": "^0.2.2", - "@cardano-sdk/util": "^0.15.5", - "@harmoniclabs/cbor": "1.3.0", - "@harmoniclabs/plutus-data": "1.2.4", - "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.18", - "@types/base32-encoding": "^1.0.2", - "base32-encoding": "^1.0.0", - "bech32": "^2.0.0", - "blakejs": "^1.2.1", - "bn.js": "^5.2.0" + "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", + "bip174": "^3.0.0-rc.1", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.7", + "ecpair": "^2.0.0" } }, - "node_modules/@meshsdk/wallet": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.18.tgz", - "integrity": "sha512-ryni3YYKJNJWBDEeDcPjX/fkdhcEZKr10mHa+gOE+hbAyzcBaJt6+3PKMKBmS5GuaCMOz3NG1vGSpGd/F6gakQ==", - "license": "Apache-2.0", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/common": { + "version": "1.9.0-beta.53", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.53.tgz", + "integrity": "sha512-GH75W2P4LPb8MS/F+ftP1wmf2UhSYsug9Naq09bvEU1woohJLmpkJ6JJ1e9fBbAK/N3VRVQEGvv+yM4zs634rQ==", "dependencies": { - "@meshsdk/common": "1.9.0-beta.18", - "@meshsdk/core-cst": "1.9.0-beta.18", - "@meshsdk/transaction": "1.9.0-beta.18", - "@simplewebauthn/browser": "^13.0.0" + "bech32": "^2.0.0", + "bip39": "3.1.0", + "blake2b": "^2.1.4", + "blakejs": "^1.2.1" } }, - "node_modules/@meshsdk/wallet/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.18", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.18.tgz", - "integrity": "sha512-6dJ1gZyjT1XBusia1l3YqwZIxJ75OWrYE0D8tkFlXCfEsKzcRmVCkdtAvFvv8q1IfXoIgSygAheiEZdNmAzn7w==", - "license": "Apache-2.0", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.53", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.53.tgz", + "integrity": "sha512-u8I1g8EqfI+ysCtMg258NrMZ+uoSdM5RlrfVRuss0a7jsrSB64ae1kZXDaO2HROycpwz+muZbCVN5JywSVKmTQ==", "dependencies": { "@cardano-sdk/core": "^0.45.5", "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", "@cardano-sdk/util": "^0.15.5", "@harmoniclabs/cbor": "1.3.0", + "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.4", "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.18", + "@meshsdk/common": "1.9.0-beta.53", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -2738,23 +3662,35 @@ "bn.js": "^5.2.0" } }, - "node_modules/@meshsdk/wallet/node_modules/@simplewebauthn/browser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.1.0.tgz", - "integrity": "sha512-WuHZ/PYvyPJ9nxSzgHtOEjogBhwJfC8xzYkPC+rR/+8chl/ft4ngjiK8kSU5HtRJfczupyOh33b25TjYbvwAcg==", - "license": "MIT" + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/transaction": { + "version": "1.9.0-beta.53", + "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.53.tgz", + "integrity": "sha512-U53sj8Qve9/XQPqy6gaO7Sm57Fq0tGcYcTlIUq2XUOZtVV0ad88qvCakj9AG0uSq0WnrvPk+L0ExmnnzyL/akw==", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@meshsdk/common": "1.9.0-beta.53", + "@meshsdk/core-cst": "1.9.0-beta.53", + "json-bigint": "^1.0.0" + } }, - "node_modules/@meshsdk/web3-sdk": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@meshsdk/web3-sdk/-/web3-sdk-0.0.3.tgz", - "integrity": "sha512-y0fivokVFv7FlXyqnay363Zz2BzMWFTENFfPy3Ccw6LzBP31PsYbYQPlgDjNfXRj6o/UrzoZCb4jN/Sb4ljgHg==", + "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/wallet": { + "version": "1.9.0-beta.53", + "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.53.tgz", + "integrity": "sha512-UyvcRbh3StEowkjTyuomDqG5Pykgbz3PU84gB9LdbxGuX46ZUaqHa5+zq+TfOreJ9CVvIEPkg7YwLas6c1HqMw==", "dependencies": { - "@meshsdk/common": "^1.9.0-beta.17", - "@meshsdk/core-cst": "^1.9.0-beta.17", - "@meshsdk/wallet": "^1.9.0-beta.17", - "base32-encoding": "^1.0.0" + "@meshsdk/common": "1.9.0-beta.53", + "@meshsdk/core-cst": "1.9.0-beta.53", + "@meshsdk/transaction": "1.9.0-beta.53", + "@simplewebauthn/browser": "^13.0.0" } }, + "node_modules/@meshsdk/web3-sdk/node_modules/@simplewebauthn/browser": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.2.0.tgz", + "integrity": "sha512-N3fuA1AAnTo5gCStYoIoiasPccC+xPLx2YU88Dv0GeAmPQTWHETlZQq5xZ0DgUq1H9loXMWQH5qqUjcI7BHJ1A==" + }, "node_modules/@monogrid/gainmap-js": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.1.0.tgz", @@ -2819,10 +3755,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.4.tgz", - "integrity": "sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==", - "license": "MIT" + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.4.tgz", + "integrity": "sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==" }, "node_modules/@next/eslint-plugin-next": { "version": "14.2.23", @@ -2835,13 +3770,12 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.4.tgz", + "integrity": "sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2851,13 +3785,12 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.4.tgz", + "integrity": "sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2867,13 +3800,12 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.4.tgz", + "integrity": "sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -2883,13 +3815,12 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.4.tgz", + "integrity": "sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -2899,13 +3830,12 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.4.tgz", + "integrity": "sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -2915,13 +3845,12 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.4.tgz", + "integrity": "sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -2931,29 +3860,12 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.4.tgz", + "integrity": "sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==", "cpu": [ "arm64" ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", - "cpu": [ - "ia32" - ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -2963,13 +3875,12 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", - "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.4.tgz", + "integrity": "sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -3174,6 +4085,53 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.4.0.tgz", + "integrity": "sha512-umbembjIWOrPSOzEGG5vxFLkeM8kzIhLkgigtsOrfLKnuzxWxejAcUX+q/SoZCdemlODOcr5WiYa7+dIEzBXZQ==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -4574,16 +5532,16 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sidan-lab/sidan-csl-rs-browser": { - "version": "0.9.21", - "resolved": "https://registry.npmjs.org/@sidan-lab/sidan-csl-rs-browser/-/sidan-csl-rs-browser-0.9.21.tgz", - "integrity": "sha512-oVF+L+rDM+stR2CYnYm7wpHgSt1IifVvrhs3DZGqKAwDH7oFdVbwyZeiQaUEH0nxt+/dqdj7nW2dbCXFBtUC2g==", + "node_modules/@sidan-lab/whisky-js-browser": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@sidan-lab/whisky-js-browser/-/whisky-js-browser-1.0.10.tgz", + "integrity": "sha512-Y6wf0+/uODEKr1gwVAISRuPwb/3yJpRGgYcZW7TkROqCvdpFsIBSLuf7AH2nYDJifduviIypmphKNmI+/S4/rg==", "license": "Apache-2.0" }, - "node_modules/@sidan-lab/sidan-csl-rs-nodejs": { - "version": "0.9.21", - "resolved": "https://registry.npmjs.org/@sidan-lab/sidan-csl-rs-nodejs/-/sidan-csl-rs-nodejs-0.9.21.tgz", - "integrity": "sha512-Nkb/iB6D3GNvvSk4aPpL6i4Y3LwZi6C/Ogbb4OuHy756bl9vXTL+MlFkOO3flWZkB+IxwU1RKQe/xTJ/vnv7jg==", + "node_modules/@sidan-lab/whisky-js-nodejs": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@sidan-lab/whisky-js-nodejs/-/whisky-js-nodejs-1.0.10.tgz", + "integrity": "sha512-aUmMcF0+5vvK+JtmuMYDh1ys9RkinvJ2zRuUUocmqKpJ31s8wu8D34opjE9mECE5A8GQBrdOV6Dvghf0v5fGSA==", "license": "Apache-2.0" }, "node_modules/@silentbot1/nat-api": { @@ -5232,20 +6190,12 @@ "node": ">=12.20.0" } }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "license": "Apache-2.0" - }, "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "license": "Apache-2.0", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@t3-oss/env-core": { @@ -6499,39 +7449,21 @@ } }, "node_modules/@utxorpc/sdk": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@utxorpc/sdk/-/sdk-0.6.2.tgz", - "integrity": "sha512-2duxfbH8B7DX3ync8U7BUYIi6lzerYwb8lMpW6Ax1fv3zqmJE39lGsBRVozJU1X3ITSB526ODkhgUo8DHRLvtQ==", - "license": "MIT", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@utxorpc/sdk/-/sdk-0.6.8.tgz", + "integrity": "sha512-Mff6q2o7R2aam85KmjtAZDKPhJesMmnGFbk2M54lPO0FwrrWRfUf6DYezqWfYcjXgKQSHDuklAcdtF0weEENRA==", "dependencies": { "@connectrpc/connect": "1.4", "@connectrpc/connect-node": "1.4", "@connectrpc/connect-web": "1.4", - "@types/node": "20.14.10", - "@utxorpc/spec": "0.10.1", + "@utxorpc/spec": "0.16.0", "buffer": "^6.0.3" } }, - "node_modules/@utxorpc/sdk/node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@utxorpc/sdk/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, "node_modules/@utxorpc/spec": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@utxorpc/spec/-/spec-0.10.1.tgz", - "integrity": "sha512-0INat5xSjkTeqKr+JO3SMQQ2PxcfZNUi5wJja/Fpnp68f52eTJf4X4QGy7tzqYzMsK/ZYhRr95J+WUeM6Vbmwg==", - "license": "MIT", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@utxorpc/spec/-/spec-0.16.0.tgz", + "integrity": "sha512-EK2M0TBp14MrRCYDuFeJ+bAS39RxxLLh+CD08h/YvAgxSv/4ZOBCf1/sxHAGCBGGndB4heZYFeuQ+i1i8vP5lw==", "dependencies": { "@bufbuild/protobuf": "^1.10.0" }, @@ -6923,6 +7855,20 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "license": "MIT" }, + "node_modules/asn1js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", + "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -7352,29 +8298,136 @@ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "license": "MIT", - "engines": { - "node": "*" + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bip174": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-3.0.0-rc.1.tgz", + "integrity": "sha512-+8P3BpSairVNF2Nee6Ksdc1etIjWjBOi/MH0MwKtq9YaYp+S2Hk2uvup0e8hCT4IKlS58nXJyyQVmW92zPoD4Q==", + "license": "MIT", + "dependencies": { + "uint8array-tools": "^0.0.9", + "varuint-bitcoin": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/bip174/node_modules/uint8array-tools": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.9.tgz", + "integrity": "sha512-9vqDWmoSXOoi+K14zNaf6LBV51Q8MayF0/IiQs3GlygIKUYtog603e6virExkjjFosfJUBI4LhbQK1iq8IG11A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/bip32": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-4.0.0.tgz", + "integrity": "sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.2.0", + "@scure/base": "^1.1.1", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bip39": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "license": "ISC", + "dependencies": { + "@noble/hashes": "^1.2.0" + } + }, + "node_modules/bitcoinjs-lib": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.7.tgz", + "integrity": "sha512-tlf/r2DGMbF7ky1MgUqXHzypYHakkEnm0SZP23CJKIqNY/5uNAnMbFhMJdhjrL/7anfb/U8+AlpdjPWjPnAalg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.1", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bitcoinjs-lib/node_modules/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==", + "license": "MIT" + }, + "node_modules/bitcoinjs-lib/node_modules/bip174": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-2.1.1.tgz", + "integrity": "sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bitcoinjs-lib/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/bitcoinjs-lib/node_modules/bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" } }, - "node_modules/bip39": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", - "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", - "license": "ISC", + "node_modules/bitcoinjs-lib/node_modules/varuint-bitcoin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", + "license": "MIT", "dependencies": { - "@noble/hashes": "^1.2.0" + "safe-buffer": "^5.1.1" } }, "node_modules/bitfield": { @@ -7971,6 +9024,17 @@ "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", "license": "Apache-2.0" }, + "node_modules/cbor": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.11.tgz", + "integrity": "sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==", + "dependencies": { + "nofilter": "^3.0.2" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -7981,6 +9045,56 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chacha": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chacha/-/chacha-2.1.0.tgz", + "integrity": "sha512-FhVtqaZOiHlOKUkAWfDlJ+oe/O8iPQbCC0pFXJqphr4YQBCZPXa8Mv3j35+W4eWFWCoTUcW2u5IWDDkknygvVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^1.0.33" + }, + "optionalDependencies": { + "chacha-native": "^2.0.0" + } + }, + "node_modules/chacha-native": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chacha-native/-/chacha-native-2.0.3.tgz", + "integrity": "sha512-93h+osfjhR2sMHAaapTLlL/COoBPEZ6upicPBQ4GfUyadoMb8t9/M0PKK8kC+F+DEA/Oy3Kg9w3HzY3J1foP3g==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.2.1", + "inherits": "^2.0.1", + "nan": "^2.4.0" + } + }, + "node_modules/chacha/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/chacha/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/chacha/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8212,8 +9326,7 @@ "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, "node_modules/cliui": { "version": "8.0.1", @@ -8411,6 +9524,12 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -9069,10 +10188,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "engines": { "node": ">=8" } @@ -9168,6 +10286,11 @@ "csstype": "^3.0.2" } }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, "node_modules/dompurify": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", @@ -9227,6 +10350,20 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ecpair": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ecpair/-/ecpair-2.1.0.tgz", + "integrity": "sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw==", + "license": "MIT", + "dependencies": { + "randombytes": "^2.1.0", + "typeforce": "^1.18.0", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.223", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.223.tgz", @@ -10382,6 +11519,13 @@ "node": ">= 12" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true + }, "node_modules/filename-reserved-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", @@ -10532,15 +11676,17 @@ } }, "node_modules/formidable": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", - "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", - "license": "MIT", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", - "hexoid": "^2.0.0", "once": "^1.4.0" }, + "engines": { + "node": ">=14.0.0" + }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } @@ -10797,6 +11943,18 @@ "node": ">= 0.4" } }, + "node_modules/get-random-values": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-random-values/-/get-random-values-2.1.0.tgz", + "integrity": "sha512-q2yOLpLyA8f9unfv2LV8KVRUFeOIrQVS5cnqpbv6N+ea9j1rmW5dFKj/2Q7CK3juEfDYQgPxGt941VJcmw0jKg==", + "license": "MIT", + "dependencies": { + "global": "^4.4.0" + }, + "engines": { + "node": "14 || 16 || >=18" + } + }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -10892,6 +12050,15 @@ "node": ">=10.13.0" } }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -10931,6 +12098,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -11204,15 +12372,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hexoid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", - "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -12084,6 +13243,12 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -15065,6 +16230,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/minim": { "version": "0.23.8", "resolved": "https://registry.npmjs.org/minim/-/minim-0.23.8.tgz", @@ -15154,6 +16327,13 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", + "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", + "license": "MIT", + "optional": true + }, "node_modules/nanoassert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", @@ -15240,41 +16420,39 @@ } }, "node_modules/next": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.4.tgz", - "integrity": "sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==", - "license": "MIT", + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.4.tgz", + "integrity": "sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==", "dependencies": { - "@next/env": "14.2.4", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", + "@next/env": "15.5.4", + "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.6" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=18.17.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.4", - "@next/swc-darwin-x64": "14.2.4", - "@next/swc-linux-arm64-gnu": "14.2.4", - "@next/swc-linux-arm64-musl": "14.2.4", - "@next/swc-linux-x64-gnu": "14.2.4", - "@next/swc-linux-x64-musl": "14.2.4", - "@next/swc-win32-arm64-msvc": "14.2.4", - "@next/swc-win32-ia32-msvc": "14.2.4", - "@next/swc-win32-x64-msvc": "14.2.4" + "@next/swc-darwin-arm64": "15.5.4", + "@next/swc-darwin-x64": "15.5.4", + "@next/swc-linux-arm64-gnu": "15.5.4", + "@next/swc-linux-arm64-musl": "15.5.4", + "@next/swc-linux-x64-gnu": "15.5.4", + "@next/swc-linux-x64-musl": "15.5.4", + "@next/swc-win32-arm64-msvc": "15.5.4", + "@next/swc-win32-x64-msvc": "15.5.4", + "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -15284,6 +16462,9 @@ "@playwright/test": { "optional": true }, + "babel-plugin-react-compiler": { + "optional": true + }, "sass": { "optional": true } @@ -15530,6 +16711,14 @@ "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", "license": "MIT" }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "engines": { + "node": ">=12.19" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -19141,21 +20330,53 @@ "license": "ISC" }, "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" }, "engines": { "node": ">=0.12" } }, + "node_modules/pbkdf2/node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/pbkdf2/node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "license": "MIT", + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -19724,6 +20945,22 @@ ], "license": "MIT" }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/qrcode-svg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", @@ -20805,6 +22042,15 @@ ], "license": "MIT" }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -20825,13 +22071,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -20869,13 +22108,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -21017,6 +22249,60 @@ "sha.js": "bin.js" } }, + "node_modules/sharp": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", + "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.0", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.4", + "@img/sharp-darwin-x64": "0.34.4", + "@img/sharp-libvips-darwin-arm64": "1.2.3", + "@img/sharp-libvips-darwin-x64": "1.2.3", + "@img/sharp-libvips-linux-arm": "1.2.3", + "@img/sharp-libvips-linux-arm64": "1.2.3", + "@img/sharp-libvips-linux-ppc64": "1.2.3", + "@img/sharp-libvips-linux-s390x": "1.2.3", + "@img/sharp-libvips-linux-x64": "1.2.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", + "@img/sharp-libvips-linuxmusl-x64": "1.2.3", + "@img/sharp-linux-arm": "0.34.4", + "@img/sharp-linux-arm64": "0.34.4", + "@img/sharp-linux-ppc64": "0.34.4", + "@img/sharp-linux-s390x": "0.34.4", + "@img/sharp-linux-x64": "0.34.4", + "@img/sharp-linuxmusl-arm64": "0.34.4", + "@img/sharp-linuxmusl-x64": "0.34.4", + "@img/sharp-wasm32": "0.34.4", + "@img/sharp-win32-arm64": "0.34.4", + "@img/sharp-win32-ia32": "0.34.4", + "@img/sharp-win32-x64": "0.34.4" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -21680,10 +22966,9 @@ } }, "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "license": "MIT", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", "dependencies": { "client-only": "0.0.1" }, @@ -21691,7 +22976,7 @@ "node": ">= 12.0.0" }, "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "peerDependenciesMeta": { "@babel/core": { @@ -22321,6 +23606,19 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -22707,7 +24005,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -22781,6 +24078,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "license": "MIT" + }, "node_modules/types-ramda": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", @@ -22836,6 +24139,15 @@ "uint8arrays": "^5.0.0" } }, + "node_modules/uint8array-tools": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.7.tgz", + "integrity": "sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/uint8arraylist": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.8.tgz", @@ -23334,6 +24646,24 @@ "node": ">= 0.10" } }, + "node_modules/varuint-bitcoin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz", + "integrity": "sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==", + "license": "MIT", + "dependencies": { + "uint8array-tools": "^0.0.8" + } + }, + "node_modules/varuint-bitcoin/node_modules/uint8array-tools": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.8.tgz", + "integrity": "sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -23449,6 +24779,25 @@ "license": "MIT", "optional": true }, + "node_modules/webcrypto-core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.1.tgz", + "integrity": "sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.13", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.7.0" + } + }, + "node_modules/webextension-polyfill": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.8.0.tgz", + "integrity": "sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==", + "license": "MPL-2.0" + }, "node_modules/webgl-constants": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", @@ -23619,13 +24968,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -23672,6 +25014,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", + "license": "MIT", + "dependencies": { + "bs58check": "<3.0.0" + } + }, + "node_modules/wif/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/wif/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/wif/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/package.json b/package.json index 948bb2be..6ef5a2bf 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,10 @@ "@auth/prisma-adapter": "^1.6.0", "@hookform/resolvers": "^3.9.0", "@jinglescode/nostr-chat-plugin": "^0.0.11", - "@meshsdk/core": "^1.9.0-beta.18", - "@meshsdk/core-csl": "^1.9.0-beta.18", - "@meshsdk/core-cst": "^1.9.0-beta.19", - "@meshsdk/react": "^1.9.0-beta.18", + "@meshsdk/core": "^1.9.0-beta.77", + "@meshsdk/core-csl": "^1.9.0-beta.77", + "@meshsdk/core-cst": "^1.9.0-beta.77", + "@meshsdk/react": "^1.9.0-beta.77", "@octokit/core": "^6.1.2", "@prisma/client": "^6.4.1", "@radix-ui/react-accordion": "^1.2.0", @@ -60,14 +60,14 @@ "clsx": "^2.1.1", "cors": "^2.8.5", "dexie": "^4.0.11", - "formidable": "^3.5.2", + "formidable": "^3.5.4", "framer-motion": "^11.11.9", "geist": "^1.3.0", "idb-keyval": "^6.2.1", "jsonld": "^8.3.3", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.439.0", - "next": "^14.2.4", + "next": "^15.2.4", "next-auth": "^4.24.7", "papaparse": "^5.5.3", "react": "^18.3.1", diff --git a/prisma/migrations/20250804021426_add_drep_key/migration.sql b/prisma/migrations/20250804021426_add_drep_key/migration.sql new file mode 100644 index 00000000..88a470b2 --- /dev/null +++ b/prisma/migrations/20250804021426_add_drep_key/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "User" ADD COLUMN "drepKeyHash" TEXT NOT NULL DEFAULT ''; + +-- AlterTable +ALTER TABLE "Wallet" ADD COLUMN "signersDRepKeys" TEXT[]; diff --git a/prisma/migrations/20250929093740_add_drep_keys_to_new_wallet/migration.sql b/prisma/migrations/20250929093740_add_drep_keys_to_new_wallet/migration.sql new file mode 100644 index 00000000..053e4fd2 --- /dev/null +++ b/prisma/migrations/20250929093740_add_drep_keys_to_new_wallet/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "NewWallet" ADD COLUMN "signersDRepKeys" TEXT[]; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c9f17c75..4d8f8080 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -14,6 +14,7 @@ model User { id String @id @default(cuid()) address String @unique stakeAddress String @unique + drepKeyHash String @default("") nostrKey String @unique discordId String @default("") } @@ -24,6 +25,7 @@ model Wallet { description String? signersAddresses String[] signersStakeKeys String[] + signersDRepKeys String[] signersDescriptions String[] numRequiredSigners Int? verified String[] @@ -70,6 +72,7 @@ model NewWallet { description String? signersAddresses String[] signersStakeKeys String[] + signersDRepKeys String[] signersDescriptions String[] numRequiredSigners Int? ownerAddress String diff --git a/src/components/common/card-content.tsx b/src/components/common/card-content.tsx index bf3f759c..f2070be8 100644 --- a/src/components/common/card-content.tsx +++ b/src/components/common/card-content.tsx @@ -17,7 +17,7 @@ export default function CardUI({ headerDom?: ReactNode; }) { return ( - + {title} {headerDom && headerDom} @@ -33,7 +33,7 @@ export default function CardUI({ )} - +
{description && (

{description}

diff --git a/src/components/common/overall-layout/layout.tsx b/src/components/common/overall-layout/layout.tsx index 4a005a7e..379bd682 100644 --- a/src/components/common/overall-layout/layout.tsx +++ b/src/components/common/overall-layout/layout.tsx @@ -9,7 +9,7 @@ import useUser from "@/hooks/useUser"; import { useUserStore } from "@/lib/zustand/user"; import useAppWallet from "@/hooks/useAppWallet"; -import SessionProvider from "@/components/SessionProvider" +import SessionProvider from "@/components/SessionProvider"; import { getServerSession } from "next-auth"; import MenuWallets from "@/components/common/overall-layout/menus/wallets"; @@ -35,26 +35,33 @@ import { BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; -// Simple error boundary component -class SimpleErrorBoundary extends Component< +// Enhanced error boundary component for wallet errors +class WalletErrorBoundary extends Component< { children: ReactNode; fallback: ReactNode }, - { hasError: boolean } + { hasError: boolean; error: Error | null } > { constructor(props: { children: ReactNode; fallback: ReactNode }) { super(props); - this.state = { hasError: false }; + this.state = { hasError: false, error: null }; } - static getDerivedStateFromError() { - return { hasError: true }; + static getDerivedStateFromError(error: Error) { + return { hasError: true, error }; } componentDidCatch(error: Error, errorInfo: any) { - console.error('Error caught by boundary:', error, errorInfo); + console.error('Error caught by wallet boundary:', error, errorInfo); + + // Handle specific wallet errors + if (error.message.includes("account changed")) { + console.log("Wallet account changed error caught by boundary, reloading page..."); + window.location.reload(); + return; + } } render() { - if (this.state.hasError) { + if (this.state.hasError && this.state.error && !this.state.error.message.includes("account changed")) { return this.props.fallback; } return this.props.children; @@ -75,44 +82,93 @@ export default function RootLayout({ const userAddress = useUserStore((state) => state.userAddress); const setUserAddress = useUserStore((state) => state.setUserAddress); + // Global error handler for unhandled promise rejections + useEffect(() => { + const handleUnhandledRejection = (event: PromiseRejectionEvent) => { + console.error('Unhandled promise rejection:', event.reason); + + // Handle wallet-related errors specifically + if (event.reason && typeof event.reason === 'object') { + const error = event.reason as Error; + if (error.message && error.message.includes("account changed")) { + console.log("Account changed error caught by global handler, reloading page..."); + event.preventDefault(); // Prevent the error from being logged to console + window.location.reload(); + return; + } + } + }; + + window.addEventListener('unhandledrejection', handleUnhandledRejection); + + return () => { + window.removeEventListener('unhandledrejection', handleUnhandledRejection); + }; + }, []); + const { mutate: createUser } = api.user.createUser.useMutation({ onError: (e) => console.error(e), }); + const { mutate: updateUser } = api.user.updateUser.useMutation({ + onError: (e) => console.error(e), + }); // Single effect for address + user creation useEffect(() => { (async () => { if (!connected || !wallet) return; - // 1) Set user address in store - let address = (await wallet.getUsedAddresses())[0]; - if (!address) address = (await wallet.getUnusedAddresses())[0]; - if (address) setUserAddress(address); + try { + // 1) Set user address in store + let address = (await wallet.getUsedAddresses())[0]; + if (!address) address = (await wallet.getUnusedAddresses())[0]; + if (address) setUserAddress(address); - // 2) If user doesn't exist, create it - if (!isLoading && user === null) { + // 2) Get stake address const stakeAddress = (await wallet.getRewardAddresses())[0]; if (!stakeAddress || !address) { console.error("No stake address or payment address found"); return; } - const nostrKey = generateNsec(); - createUser({ - address, - stakeAddress, - nostrKey: JSON.stringify(nostrKey), - }); + + // 3) Get DRep key hash (optional) + let drepKeyHash = ""; + try { + const dRepKey = await wallet.getDRep(); + console.log("DRep key:", dRepKey); + if (dRepKey && dRepKey.publicKeyHash) { + drepKeyHash = dRepKey.publicKeyHash; + } + } catch (error) { + // DRep key is optional, so we continue without it + console.log("No DRep key available for this wallet"); + } + + // 4) Create or update user (upsert pattern handles both cases) + if (!isLoading) { + const nostrKey = generateNsec(); + createUser({ + address, + stakeAddress, + drepKeyHash, + nostrKey: JSON.stringify(nostrKey), + }); + } + } catch (error) { + console.error("Error in wallet initialization effect:", error); + + // If we get an "account changed" error, reload the page + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed detected, reloading page..."); + window.location.reload(); + return; + } + + // For other errors, don't throw to prevent app crash + // The user can retry by reconnecting their wallet } })(); - }, [ - connected, - wallet, - user, - isLoading, - createUser, - generateNsec, - setUserAddress, - ]); + }, [connected, wallet, user, isLoading, createUser, generateNsec, setUserAddress]); const isWalletPath = router.pathname.includes("/wallets/[wallet]"); const walletPageRoute = router.pathname.split("/wallets/[wallet]/")[1]; @@ -125,12 +181,18 @@ export default function RootLayout({ {isLoading && } {/* Sidebar for larger screens */} -
diff --git a/src/components/common/overall-layout/mobile-wrappers/user-dropdown-wrapper.tsx b/src/components/common/overall-layout/mobile-wrappers/user-dropdown-wrapper.tsx index e9d18d9e..81e6c85d 100644 --- a/src/components/common/overall-layout/mobile-wrappers/user-dropdown-wrapper.tsx +++ b/src/components/common/overall-layout/mobile-wrappers/user-dropdown-wrapper.tsx @@ -51,9 +51,25 @@ export default function UserDropDownWrapper({ }); async function unlinkDiscord(): Promise { - const address = (await wallet.getUsedAddresses())[0]; - unlinkDiscordMutation.mutate({ address: address ?? "" }); - setOpen(false); + try { + const usedAddresses = await wallet.getUsedAddresses(); + const address = usedAddresses[0]; + unlinkDiscordMutation.mutate({ address: address ?? "" }); + setOpen(false); + } catch (error) { + console.error("Error getting wallet address for Discord unlink:", error); + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during Discord unlink, aborting"); + return; + } + // Show error to user + toast({ + title: "Error", + description: "Failed to get wallet address", + variant: "destructive", + duration: 3000, + }); + } } const { data: discordData } = api.user.getUserDiscordId.useQuery({ @@ -61,18 +77,51 @@ export default function UserDropDownWrapper({ }); async function handleCopyAddress() { - let userAddress = (await wallet.getUsedAddresses())[0]; - if (userAddress === undefined) { - userAddress = (await wallet.getUnusedAddresses())[0]; + try { + let userAddress: string | undefined; + try { + const usedAddresses = await wallet.getUsedAddresses(); + userAddress = usedAddresses[0]; + } catch (error) { + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during address copy, aborting"); + return; + } + throw error; + } + + if (userAddress === undefined) { + try { + const unusedAddresses = await wallet.getUnusedAddresses(); + userAddress = unusedAddresses[0]; + } catch (error) { + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during unused address retrieval, aborting"); + return; + } + throw error; + } + } + + if (userAddress) { + navigator.clipboard.writeText(userAddress); + toast({ + title: "Copied", + description: "Address copied to clipboard", + duration: 5000, + }); + setOpen(false); + if (onAction) onAction(); + } + } catch (error) { + console.error("Error copying wallet address:", error); + toast({ + title: "Error", + description: "Failed to copy address", + variant: "destructive", + duration: 3000, + }); } - navigator.clipboard.writeText(userAddress!); - toast({ - title: "Copied", - description: "Address copied to clipboard", - duration: 5000, - }); - setOpen(false); - if (onAction) onAction(); } function handleLogout() { diff --git a/src/components/common/overall-layout/mobile-wrappers/wallet-data-loader-wrapper.tsx b/src/components/common/overall-layout/mobile-wrappers/wallet-data-loader-wrapper.tsx index 4119ed76..a4f58bf3 100644 --- a/src/components/common/overall-layout/mobile-wrappers/wallet-data-loader-wrapper.tsx +++ b/src/components/common/overall-layout/mobile-wrappers/wallet-data-loader-wrapper.tsx @@ -1,5 +1,6 @@ import { RefreshCw } from "lucide-react"; import useAppWallet from "@/hooks/useAppWallet"; +import useMultisigWallet from "@/hooks/useMultisigWallet"; import { useEffect, useRef, useState } from "react"; import { getProvider } from "@/utils/get-provider"; import { useWalletsStore } from "@/lib/zustand/wallets"; @@ -21,6 +22,7 @@ export default function WalletDataLoaderWrapper({ onAction }: WalletDataLoaderWrapperProps) { const { appWallet } = useAppWallet(); + const { multisigWallet } = useMultisigWallet(); const [loading, setLoading] = useState(false); const prevWalletIdRef = useRef(null); @@ -149,25 +151,31 @@ export default function WalletDataLoaderWrapper({ } function dRepIds() { - const dRepId = appWallet?.dRepId; - if (!dRepId) throw new Error("No dRep ID found."); + // Use multisig wallet DRep ID if available, otherwise fallback to appWallet + const dRepId = multisigWallet?.getDRepId() || appWallet?.dRepId; + if (!dRepId) return null; return getDRepIds(dRepId); } async function getDRepInfo() { try { - const blockchainProvider = getProvider(network); + const drepids = dRepIds(); + if (!drepids) { + setDrepInfo(undefined); + return; + } - const drepids = dRepIds() - + const blockchainProvider = getProvider(network); const drepInfo: BlockfrostDrepInfo = await blockchainProvider.get( `/governance/dreps/${drepids.cip105}`, ); if (!drepInfo) throw new Error(`No dRep for ID ${drepids.cip105} found.`); setDrepInfo(drepInfo); } catch (err) { + // DRep not found (404) is expected if DRep hasn't been registered yet + // This is normal behavior - the DRep ID exists but isn't registered on-chain setDrepInfo(undefined); - // Handle error silently + console.log(`DRep not yet registered on-chain (this is normal before registration)`); } } diff --git a/src/components/common/overall-layout/user-drop-down.tsx b/src/components/common/overall-layout/user-drop-down.tsx index 47129f67..817092e2 100644 --- a/src/components/common/overall-layout/user-drop-down.tsx +++ b/src/components/common/overall-layout/user-drop-down.tsx @@ -41,8 +41,24 @@ export default function UserDropDown() { }); async function unlinkDiscord(): Promise { - const address = (await wallet.getUsedAddresses())[0]; - unlinkDiscordMutation.mutate({ address: address ?? "" }); + try { + const usedAddresses = await wallet.getUsedAddresses(); + const address = usedAddresses[0]; + unlinkDiscordMutation.mutate({ address: address ?? "" }); + } catch (error) { + console.error("Error getting wallet address for Discord unlink:", error); + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during Discord unlink, aborting"); + return; + } + // Show error to user + toast({ + title: "Error", + description: "Failed to get wallet address", + variant: "destructive", + duration: 3000, + }); + } } const { data: discordData } = api.user.getUserDiscordId.useQuery({ @@ -62,16 +78,49 @@ export default function UserDropDown() { {/* */} { - let userAddress = (await wallet.getUsedAddresses())[0]; - if (userAddress === undefined) { - userAddress = (await wallet.getUnusedAddresses())[0]; + try { + let userAddress: string | undefined; + try { + const usedAddresses = await wallet.getUsedAddresses(); + userAddress = usedAddresses[0]; + } catch (error) { + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during address copy, aborting"); + return; + } + throw error; + } + + if (userAddress === undefined) { + try { + const unusedAddresses = await wallet.getUnusedAddresses(); + userAddress = unusedAddresses[0]; + } catch (error) { + if (error instanceof Error && error.message.includes("account changed")) { + console.log("Account changed during unused address retrieval, aborting"); + return; + } + throw error; + } + } + + if (userAddress) { + navigator.clipboard.writeText(userAddress); + toast({ + title: "Copied", + description: "Address copied to clipboard", + duration: 5000, + }); + } + } catch (error) { + console.error("Error copying wallet address:", error); + toast({ + title: "Error", + description: "Failed to copy address", + variant: "destructive", + duration: 3000, + }); } - navigator.clipboard.writeText(userAddress!); - toast({ - title: "Copied", - description: "Address copied to clipboard", - duration: 5000, - }); }} > Copy my address diff --git a/src/components/multisig/inspect-multisig-script.tsx b/src/components/multisig/inspect-multisig-script.tsx index 1fadc64a..5d291ae2 100644 --- a/src/components/multisig/inspect-multisig-script.tsx +++ b/src/components/multisig/inspect-multisig-script.tsx @@ -72,13 +72,18 @@ export default function InspectMultisigScript({ ); } - if (mWallet?.buildScript(3) !== undefined) { + if (mWallet?.buildScript(3) !== undefined && mWallet.isGovernanceEnabled()) { slides.push( - {JSON.stringify(mWallet.buildScript(3), null, 2)}} - />, +
+ {JSON.stringify(mWallet.buildScript(3), null, 2)}} + /> + {mWallet.getDRepScript()}} + /> +
, ); } @@ -98,7 +103,7 @@ export default function InspectMultisigScript({ /> )} {/* add pending rewards like balance */} - {mWallet.stakingEnabled() && {mWallet.getDRepId()}} copyString={mWallet.getDRepId()} diff --git a/src/components/pages/homepage/wallets/invite/JoinAsSignerCard.tsx b/src/components/pages/homepage/wallets/invite/JoinAsSignerCard.tsx index 024ad1cb..be9db4ac 100644 --- a/src/components/pages/homepage/wallets/invite/JoinAsSignerCard.tsx +++ b/src/components/pages/homepage/wallets/invite/JoinAsSignerCard.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { Card, CardContent, @@ -8,12 +8,14 @@ import { import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { ChevronDown, ChevronRight } from "lucide-react"; const MAX_SIGNER_NAME_LENGTH = 32; interface JoinAsSignerCardProps { userAddress: string; stakeAddress: string; + drepKeyHash: string; signerName: string; setSignerName: (name: string) => void; onJoin: () => void; @@ -24,12 +26,15 @@ interface JoinAsSignerCardProps { export default function JoinAsSignerCard({ userAddress, stakeAddress, + drepKeyHash, signerName, setSignerName, onJoin, loading, hasExternalStakeCredential }: JoinAsSignerCardProps) { + const [isTechnicalExpanded, setIsTechnicalExpanded] = useState(false); + return ( @@ -67,27 +72,75 @@ export default function JoinAsSignerCard({ - {/* Stake Key Information */} -
- Stake Key -
- {hasExternalStakeCredential ? ( -
-

- ℹ️ This wallet uses an external stake credential. Your stake key will not be imported. -

+ {/* Technical Details - Collapsible */} +
+ + + {isTechnicalExpanded && ( +
+ {/* Address Information */} +
+ Address +
+

+ {userAddress} +

+
- ) : ( -
-

- {stakeAddress ? stakeAddress.substring(0, 30) + "..." : "Not available"} -

-

- Your stake key will be imported for staking operations -

+ + {/* Stake Key Information */} +
+ Stake Key +
+ {hasExternalStakeCredential ? ( +
+

+ ℹ️ This wallet uses an external stake credential. Your stake key will not be imported. +

+
+ ) : ( +
+

+ {stakeAddress || "Not available"} +

+

+ Your stake key will be imported for staking operations +

+
+ )} +
- )} -
+ + {/* DRep Key Information */} +
+ DRep Key +
+ {drepKeyHash ? ( +
+

+ {drepKeyHash} +

+

+ Your DRep key will be imported for governance operations +

+
+ ) : ( +
+

+ ⚠️ No DRep key found. You can still join but won't be able to participate in governance. +

+
+ )} +
+
+
+ )}
diff --git a/src/components/pages/homepage/wallets/invite/ManageSignerCard.tsx b/src/components/pages/homepage/wallets/invite/ManageSignerCard.tsx index 0ce24c5e..c72be299 100644 --- a/src/components/pages/homepage/wallets/invite/ManageSignerCard.tsx +++ b/src/components/pages/homepage/wallets/invite/ManageSignerCard.tsx @@ -22,7 +22,7 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { ChevronLeft, Copy } from "lucide-react"; +import { ChevronLeft, Copy, ChevronDown, ChevronRight } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; import { getFirstAndLast } from "@/utils/strings"; @@ -31,6 +31,7 @@ const MAX_SIGNER_NAME_LENGTH = 32; interface ManageSignerCardProps { userAddress: string; stakeAddress: string; + drepKeyHash: string; signerName: string; onNameChange: (newName: string) => void; loading: boolean; @@ -42,6 +43,7 @@ interface ManageSignerCardProps { export default function ManageSignerCard({ userAddress, stakeAddress, + drepKeyHash, signerName, onNameChange, loading, @@ -51,6 +53,7 @@ export default function ManageSignerCard({ }: ManageSignerCardProps) { const [isEditing, setIsEditing] = useState(false); const [editName, setEditName] = useState(signerName); + const [isTechnicalExpanded, setIsTechnicalExpanded] = useState(false); const { toast } = useToast(); // Update editName when signerName prop changes @@ -144,24 +147,6 @@ export default function ManageSignerCard({ {signerName || "No name set"}
-
- Address - {userAddress} -
-
- Stake Key -
- {hasExternalStakeCredential ? ( -
-

- ℹ️ External stake credential used - your stake key not imported -

-
- ) : ( - {stakeAddress} - )} -
-
Status @@ -171,6 +156,59 @@ export default function ManageSignerCard({
+ + {/* Technical Details - Collapsible */} +
+ + + {isTechnicalExpanded && ( +
+ {/* Address Information */} +
+ Address + {userAddress} +
+ + {/* Stake Key Information */} +
+ Stake Key +
+ {hasExternalStakeCredential ? ( +
+

+ ℹ️ External stake credential used - your stake key not imported +

+
+ ) : ( + {stakeAddress} + )} +
+
+ + {/* DRep Key Information */} +
+ DRep Key +
+ {drepKeyHash ? ( + {drepKeyHash} + ) : ( +
+

+ ⚠️ No DRep key - governance participation not available +

+
+ )} +
+
+
+ )} +
{/* Edit button at bottom */}
diff --git a/src/components/pages/homepage/wallets/invite/index.tsx b/src/components/pages/homepage/wallets/invite/index.tsx index 2edafa41..599dd0c1 100644 --- a/src/components/pages/homepage/wallets/invite/index.tsx +++ b/src/components/pages/homepage/wallets/invite/index.tsx @@ -138,11 +138,15 @@ export default function PageNewWalletInvite() { // Only import stake key if no external stake credential is set const stakeKeyToAdd = newWallet.stakeCredentialHash ? "" : user.stakeAddress; + + // Add DRep key if available + const drepKeyToAdd = user?.drepKeyHash || ""; updateNewWalletSigners({ walletId: newWalletId!, signersAddresses: [...newWallet.signersAddresses, userAddress], signersStakeKeys: [...newWallet.signersStakeKeys, stakeKeyToAdd], + signersDRepKeys: [...(newWallet.signersDRepKeys || []), drepKeyToAdd], signersDescriptions: [ ...newWallet.signersDescriptions, signersDescription, @@ -195,6 +199,9 @@ export default function PageNewWalletInvite() { const updatedStakeKeys = newWallet.signersStakeKeys.filter( (_, i) => i !== userIndex, ); + const updatedDRepKeys = (newWallet.signersDRepKeys || []).filter( + (_, i) => i !== userIndex, + ); const updatedDescriptions = newWallet.signersDescriptions.filter( (_, i) => i !== userIndex, ); @@ -203,6 +210,7 @@ export default function PageNewWalletInvite() { walletId: newWalletId!, signersAddresses: updatedAddresses, signersStakeKeys: updatedStakeKeys, + signersDRepKeys: updatedDRepKeys, signersDescriptions: updatedDescriptions, }); } @@ -282,6 +290,7 @@ export default function PageNewWalletInvite() { i !== userIndex); const updatedStakeKeys = newWallet.signersStakeKeys.filter((_, i) => i !== userIndex); const updatedDescriptions = newWallet.signersDescriptions.filter((_, i) => i !== userIndex); + const updatedDRepKeys = newWallet.signersDRepKeys?.filter((_, i) => i !== userIndex) || []; updateNewWalletSigners({ walletId: newWalletId!, signersAddresses: updatedAddresses, signersStakeKeys: updatedStakeKeys, + signersDRepKeys: updatedDRepKeys, signersDescriptions: updatedDescriptions, }); } diff --git a/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewNativeScript.tsx b/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewNativeScript.tsx index a85560bf..8efc602a 100644 --- a/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewNativeScript.tsx +++ b/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewNativeScript.tsx @@ -93,6 +93,9 @@ export default function ReviewNativeScript({ ...(mWallet?.buildScript(2) !== undefined && mWallet.stakingEnabled() ? [{ id: "stake", label: "Stake Script" }] : []), + ...(mWallet?.buildScript(3) !== undefined && mWallet.isGovernanceEnabled() + ? [{ id: "drep", label: "DRep Script" }] + : []), ]; const renderContent = () => { @@ -185,6 +188,22 @@ export default function ReviewNativeScript({
); + case "drep": + return ( +
+ + +
+ ); + default: return null; } diff --git a/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewSignersCard.tsx b/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewSignersCard.tsx index 30661a4e..2b340b3c 100644 --- a/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewSignersCard.tsx +++ b/src/components/pages/homepage/wallets/new-wallet-flow/create/ReviewSignersCard.tsx @@ -50,6 +50,8 @@ interface SignerConfig { setSignerDescriptions: React.Dispatch>; signersStakeKeys: string[]; setSignerStakeKeys: React.Dispatch>; + signersDRepKeys: string[]; + setSignerDRepKeys: React.Dispatch>; addSigner: () => void; removeSigner?: (index: number) => void; } @@ -63,6 +65,7 @@ interface ReviewSignersCardProps { signersAddresses: string[], signersDescriptions: string[], signersStakeKeys: string[], + signersDRepKeys: string[], ) => void; } @@ -80,6 +83,8 @@ const ReviewSignersCard: React.FC = ({ setSignerDescriptions, signersStakeKeys = [], setSignerStakeKeys, + signersDRepKeys = [], + setSignerDRepKeys, addSigner, removeSigner, } = signerConfig; @@ -95,6 +100,7 @@ const ReviewSignersCard: React.FC = ({ // Temporary form state const [tempAddress, setTempAddress] = React.useState(""); const [tempStakeKey, setTempStakeKey] = React.useState(""); + const [tempDRepKey, setTempDRepKey] = React.useState(""); const [tempDescription, setTempDescription] = React.useState(""); // Start editing a signer @@ -102,6 +108,7 @@ const ReviewSignersCard: React.FC = ({ setEditIndex(index); setTempAddress(signersAddresses[index] || ""); setTempStakeKey(signersStakeKeys[index] || ""); + setTempDRepKey(signersDRepKeys[index] || ""); setTempDescription(signersDescriptions[index] || ""); setEditMode("edit"); }; @@ -110,6 +117,7 @@ const ReviewSignersCard: React.FC = ({ const startAdd = () => { setTempAddress(""); setTempStakeKey(""); + setTempDRepKey(""); setTempDescription(""); setEditMode("add"); }; @@ -119,38 +127,45 @@ const ReviewSignersCard: React.FC = ({ let newAddresses = signersAddresses; let newDescriptions = signersDescriptions; let newStakeKeys = signersStakeKeys; + let newDRepKeys = signersDRepKeys; if (editMode === "edit" && editIndex >= 0) { const updatedAddresses = [...signersAddresses]; const updatedStakeKeys = [...signersStakeKeys]; + const updatedDRepKeys = [...signersDRepKeys]; const updatedDescriptions = [...signersDescriptions]; updatedAddresses[editIndex] = tempAddress; updatedStakeKeys[editIndex] = tempStakeKey; + updatedDRepKeys[editIndex] = tempDRepKey; updatedDescriptions[editIndex] = tempDescription; newAddresses = updatedAddresses; newDescriptions = updatedDescriptions; newStakeKeys = updatedStakeKeys; + newDRepKeys = updatedDRepKeys; setSignerAddresses(updatedAddresses); setSignerStakeKeys(updatedStakeKeys); + setSignerDRepKeys(updatedDRepKeys); setSignerDescriptions(updatedDescriptions); } else if (editMode === "add") { newAddresses = [...signersAddresses, tempAddress]; // Don't add stake key if external stake credential is set newStakeKeys = [...signersStakeKeys, hasExternalStakeCredential ? "" : tempStakeKey]; + newDRepKeys = [...signersDRepKeys, tempDRepKey]; newDescriptions = [...signersDescriptions, tempDescription]; setSignerAddresses(newAddresses); setSignerStakeKeys(newStakeKeys); + setSignerDRepKeys(newDRepKeys); setSignerDescriptions(newDescriptions); } setEditMode("list"); if (onSave) { - onSave(newAddresses, newDescriptions, newStakeKeys); + onSave(newAddresses, newDescriptions, newStakeKeys, newDRepKeys); } }; @@ -186,13 +201,15 @@ const ReviewSignersCard: React.FC = ({ const newAddresses = [...signersAddresses]; const newDescriptions = [...signersDescriptions]; const newStakeKeys = [...signersStakeKeys]; + const newDRepKeys = [...signersDRepKeys]; newAddresses.splice(signerToDelete, 1); newDescriptions.splice(signerToDelete, 1); newStakeKeys.splice(signerToDelete, 1); + newDRepKeys.splice(signerToDelete, 1); if (onSave) { - onSave(newAddresses, newDescriptions, newStakeKeys); + onSave(newAddresses, newDescriptions, newStakeKeys, newDRepKeys); } } setDeleteDialogOpen(false); @@ -236,10 +253,11 @@ const ReviewSignersCard: React.FC = ({ - Signer name - Address - Stake Key - Edit + Signer name + Address + Stake Key + DRep Key + Edit Delete @@ -296,6 +314,30 @@ const ReviewSignersCard: React.FC = ({ )} + {/* DRep Key */} + + {signersDRepKeys[index] ? ( + + + + + Yes + + + +

+ {signersDRepKeys[index]} +

+
+
+
+ ) : ( + + - + + )} +
+ {/* Edit */} + + + + + {/* Status */} +
+ +
+
+
+ + {isDRepRegistered ? "Registered" : "Not registered"} + +
+
+
+ + {/* Voting Power */} + {isDRepRegistered && ( +
+ +
+ + {Math.round(Number(drepInfo.amount) / 1000000) + .toString() + .replace(/\B(?=(\d{3})+(?!\d))/g, ' ')} ₳ + +
+
+ )} +
-
- - - +
- + ); } diff --git a/src/components/pages/wallet/governance/drep/registerDrep.tsx b/src/components/pages/wallet/governance/drep/registerDrep.tsx index fc201488..8935e237 100644 --- a/src/components/pages/wallet/governance/drep/registerDrep.tsx +++ b/src/components/pages/wallet/governance/drep/registerDrep.tsx @@ -1,5 +1,4 @@ import { Plus } from "lucide-react"; -import CardUI from "@/components/ui/card-content"; import { useState } from "react"; import useAppWallet from "@/hooks/useAppWallet"; import { useWallet } from "@meshsdk/react"; @@ -50,6 +49,9 @@ export default function RegisterDRep() { if (!appWallet) { throw new Error("Wallet not connected"); } + if (!multisigWallet) { + throw new Error("Multisig wallet not connected"); + } // Cast metadata to a known record type const drepMetadata = (await getDRepMetadata( formState, @@ -77,13 +79,12 @@ export default function RegisterDRep() { } async function registerDrep(): Promise { - if (!connected || !userAddress || !appWallet) - throw new Error("Wallet not connected"); - if (!multisigWallet) throw new Error("Multisig Wallet could not be built."); + if (!connected || !userAddress || !multisigWallet || !appWallet) + throw new Error("Multisig wallet not connected"); setLoading(true); const txBuilder = getTxBuilder(network); - const drepIds = getDRepIds(appWallet.dRepId); + const drepIds = getDRepIds(multisigWallet.getDRepId()!); try { const { anchorUrl, anchorHash } = await createAnchor(); @@ -102,7 +103,7 @@ export default function RegisterDRep() { utxo.output.amount, utxo.output.address, ) - .txInScript(appWallet.scriptCbor); + .txInScript(multisigWallet.getScript().scriptCbor!); } txBuilder @@ -110,9 +111,8 @@ export default function RegisterDRep() { anchorUrl: anchorUrl, anchorDataHash: anchorHash, }) - .certificateScript(appWallet.scriptCbor) - .changeAddress(appWallet.address) - .selectUtxosFrom(manualUtxos); + .certificateScript(multisigWallet.getDRepScript()!) + .changeAddress(multisigWallet.getScript().address); @@ -129,7 +129,13 @@ export default function RegisterDRep() { } return ( - +
+
+

+ + Register DRep +

+
{appWallet && ( )} - +
); } diff --git a/src/components/pages/wallet/governance/drep/retire.tsx b/src/components/pages/wallet/governance/drep/retire.tsx index 537af47e..e2f0c9ad 100644 --- a/src/components/pages/wallet/governance/drep/retire.tsx +++ b/src/components/pages/wallet/governance/drep/retire.tsx @@ -28,7 +28,7 @@ export default function Retire({ appWallet }: { appWallet: Wallet }) { setLoading(true); const blockchainProvider = getProvider(network); - const utxos = await blockchainProvider.fetchAddressUTxOs(appWallet.address); + const utxos = await blockchainProvider.fetchAddressUTxOs(multisigWallet.getScript().address); const assetMap = new Map(); assetMap.set("lovelace", "5000000"); @@ -47,17 +47,15 @@ export default function Retire({ appWallet }: { appWallet: Wallet }) { } txBuilder - .txInScript(appWallet.scriptCbor) - .changeAddress(appWallet.address) - .drepDeregistrationCertificate(appWallet.dRepId, "500000000") - .certificateScript(appWallet.scriptCbor); - - + .txInScript(multisigWallet.getScript().scriptCbor!) + .changeAddress(multisigWallet.getScript().address) + .drepDeregistrationCertificate(multisigWallet.getDRepId()!, "500000000") + .certificateScript(multisigWallet.getDRepScript()!); await newTransaction({ txBuilder, description: "DRep retirement", - toastMessage: "DRep registration transaction has been created", + toastMessage: "DRep retirement transaction has been created", }); } diff --git a/src/components/pages/wallet/governance/drep/updateDrep.tsx b/src/components/pages/wallet/governance/drep/updateDrep.tsx index 7202b815..8d32ed0f 100644 --- a/src/components/pages/wallet/governance/drep/updateDrep.tsx +++ b/src/components/pages/wallet/governance/drep/updateDrep.tsx @@ -1,5 +1,4 @@ import { Minus } from "lucide-react"; -import CardUI from "@/components/ui/card-content"; import { useState } from "react"; import useAppWallet from "@/hooks/useAppWallet"; import { useWallet } from "@meshsdk/react"; @@ -15,6 +14,10 @@ import type { UTxO } from "@meshsdk/core"; import router from "next/router"; import useMultisigWallet from "@/hooks/useMultisigWallet"; +interface PutResponse { + url: string; +} + export default function UpdateDRep() { const { appWallet } = useAppWallet(); const { connected } = useWallet(); @@ -46,10 +49,15 @@ export default function UpdateDRep() { if (!appWallet) { throw new Error("Wallet not connected"); } + if (!multisigWallet) { + throw new Error("Multisig wallet not connected"); + } + // Cast metadata to a known record type const drepMetadata = (await getDRepMetadata( formState, appWallet, )) as Record; + console.log(drepMetadata); const rawResponse = await fetch("/api/vercel-storage/put", { method: "POST", headers: { @@ -61,8 +69,9 @@ export default function UpdateDRep() { value: JSON.stringify(drepMetadata), }), }); - const res = (await rawResponse.json()) as { url: string }; + const res = (await rawResponse.json()) as PutResponse; const anchorUrl = res.url; + // Await file retrieval const fileContent = getFile(anchorUrl); const anchorObj = JSON.parse(fileContent); const anchorHash = hashDrepAnchor(anchorObj); @@ -70,13 +79,12 @@ export default function UpdateDRep() { } async function updateDrep(): Promise { - if (!connected || !userAddress || !appWallet) - throw new Error("Wallet not connected"); - if (!multisigWallet) throw new Error("Multisig Wallet could not be built."); + if (!connected || !userAddress || !multisigWallet || !appWallet) + throw new Error("Multisig wallet not connected"); setLoading(true); const txBuilder = getTxBuilder(network); - const drepIds = getDRepIds(appWallet.dRepId); + const drepIds = getDRepIds(multisigWallet.getDRepId()!); try { const { anchorUrl, anchorHash } = await createAnchor(); @@ -95,19 +103,16 @@ export default function UpdateDRep() { utxo.output.amount, utxo.output.address, ) - .txInScript(appWallet.scriptCbor); + .txInScript(multisigWallet.getScript().scriptCbor!); } txBuilder .drepUpdateCertificate(drepIds.cip105, { - anchorUrl, + anchorUrl: anchorUrl, anchorDataHash: anchorHash, }) - .certificateScript(appWallet.scriptCbor) - .changeAddress(appWallet.address) - .selectUtxosFrom(manualUtxos); - - + .certificateScript(multisigWallet.getDRepScript()!) + .changeAddress(multisigWallet.getScript().address); await newTransaction({ txBuilder, @@ -122,7 +127,13 @@ export default function UpdateDRep() { } return ( - +
+
+

+ + Update DRep +

+
{appWallet && ( { - // Intentionally left empty. + // This function is intentionally left empty. }} loading={loading} onSubmit={updateDrep} mode="update" /> )} - +
); } diff --git a/src/components/pages/wallet/governance/index.tsx b/src/components/pages/wallet/governance/index.tsx index 0945896c..8322fb78 100644 --- a/src/components/pages/wallet/governance/index.tsx +++ b/src/components/pages/wallet/governance/index.tsx @@ -27,36 +27,43 @@ export default function PageGovernance() { if (appWallet === undefined) return <>; return (
-
- - + {/* Info section */} + + + {/* Proposals section right under info */} + + + {/* Vote and Clarity cards */} +
-
- {appWallet && ( - { - setManualUtxos(utxos); - setManualSelected(manual); - }} - /> - )} - {false && ( - - )} -
+
+ + {/* Bottom section with UTxO selector */} +
+ {appWallet && ( + { + setManualUtxos(utxos); + setManualSelected(manual); + }} + /> + )} + {false && ( + + )}
{/* Floating Ballot Sidebar */}
{proposals.length > 0 && ( diff --git a/src/components/pages/wallet/info/card-info.tsx b/src/components/pages/wallet/info/card-info.tsx index 65588834..fc03e45f 100644 --- a/src/components/pages/wallet/info/card-info.tsx +++ b/src/components/pages/wallet/info/card-info.tsx @@ -4,6 +4,7 @@ import { MoreVertical } from "lucide-react"; import { api } from "@/utils/api"; import { useToast } from "@/hooks/use-toast"; import { useUserStore } from "@/lib/zustand/user"; +import useMultisigWallet from "@/hooks/useMultisigWallet"; import { DropdownMenu, @@ -171,6 +172,11 @@ function EditInfo({ } function ShowInfo({ appWallet }: { appWallet: Wallet }) { + const { multisigWallet } = useMultisigWallet(); + + // Get DRep ID from multisig wallet if available, otherwise fallback to appWallet + const dRepId = multisigWallet?.getDRepId() || appWallet.dRepId; + return ( <> ); diff --git a/src/components/pages/wallet/info/index.tsx b/src/components/pages/wallet/info/index.tsx index 09d00ee1..5696fa3f 100644 --- a/src/components/pages/wallet/info/index.tsx +++ b/src/components/pages/wallet/info/index.tsx @@ -8,6 +8,7 @@ import { ArchiveWallet } from "./archive-wallet"; import InspectMultisigScript from "@/components/multisig/inspect-multisig-script"; import { UpgradeStakingWallet } from "./upgrade-staking-wallet"; import { RegisterWallet } from "./register-wallet"; +import { UpgradeGovernanceWallet } from "./upgrade-governance-wallet"; export default function WalletInfo() { const { appWallet } = useAppWallet(); @@ -25,6 +26,7 @@ export default function WalletInfo() { {multisigWallet && multisigWallet.stakingEnabled() && } {multisigWallet && } {multisigWallet && } + {multisigWallet && }
diff --git a/src/components/pages/wallet/info/signers/card-edit-signers.tsx b/src/components/pages/wallet/info/signers/card-edit-signers.tsx index 5c752177..5e426a39 100644 --- a/src/components/pages/wallet/info/signers/card-edit-signers.tsx +++ b/src/components/pages/wallet/info/signers/card-edit-signers.tsx @@ -2,13 +2,15 @@ import { useMemo, useState } from "react"; import { api } from "@/utils/api"; import { useToast } from "@/hooks/use-toast"; import { useUserStore } from "@/lib/zustand/user"; +import { useWalletsStore } from "@/lib/zustand/wallets"; import { checkValidAddress, checkValidStakeKey } from "@/utils/multisigSDK"; -import { Table, TableBody, TableCell, TableRow } from "@/components/ui/table"; +import { getFirstAndLast } from "@/utils/strings"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Button } from "@/components/ui/button"; import { Wallet } from "@/types/wallet"; import useUser from "@/hooks/useUser"; +import { User, Copy, Check } from "lucide-react"; interface EditSignersProps { appWallet: Wallet; @@ -25,10 +27,41 @@ export default function EditSigners({ appWallet.signersDescriptions, ); const [loading, setLoading] = useState(false); + const [copiedItems, setCopiedItems] = useState>(new Set()); const ctx = api.useUtils(); const { toast } = useToast(); const userAddress = useUserStore((state) => state.userAddress); const { user } = useUser(); + const drepInfo = useWalletsStore((state) => state.drepInfo); + + const copyToClipboard = async (text: string, itemId: string, itemType: string) => { + try { + await navigator.clipboard.writeText(text); + setCopiedItems(prev => new Set(prev).add(itemId)); + + toast({ + title: "Copied to clipboard", + description: text, + duration: 3000, + }); + + setTimeout(() => { + setCopiedItems(prev => { + const newSet = new Set(prev); + newSet.delete(itemId); + return newSet; + }); + }, 2000); + } catch (err) { + console.error('Failed to copy text: ', err); + toast({ + title: "Copy failed", + description: "Failed to copy to clipboard", + variant: "destructive", + duration: 3000, + }); + } + }; const { mutate: updateWalletSignersDescriptions } = api.wallet.updateWalletSignersDescriptions.useMutation({ @@ -52,11 +85,23 @@ export default function EditSigners({ }); function update() { + // Prevent DRep key updates if DRep is registered + if (drepInfo?.active) { + toast({ + title: "Cannot Update DRep Keys", + description: "DRep is currently registered. You must deregister the DRep before updating DRep keys.", + variant: "destructive", + duration: 5000, + }); + return; + } + setLoading(true); updateWalletSignersDescriptions({ walletId: appWallet.id, signersDescriptions: signersDescriptions, signersStakeKeys: updatedStakeKeys, + signersDRepKeys: updatedDRepKeys, }); } @@ -77,6 +122,23 @@ export default function EditSigners({ return skList; }, [signersAddresses, signersStakeKeys, userAddress, user?.stakeAddress]); + const updatedDRepKeys = useMemo(() => { + const dkList: string[] = Array(signersAddresses.length).fill(""); + for (let i = 0; i < signersAddresses.length; i++) { + const drepKey = (user as any)?.drepKeyHash; + if ( + signersAddresses[i] === userAddress && + drepKey !== undefined && + !(appWallet as any).signersDRepKeys?.[i] + ) { + dkList[i] = drepKey; + } else { + dkList[i] = (appWallet as any).signersDRepKeys?.[i] ?? ""; + } + } + return dkList; + }, [signersAddresses, appWallet, userAddress, user]); + const newStakekey = (index: number) => { const stakeAddr = user?.stakeAddress; return ( @@ -86,81 +148,176 @@ export default function EditSigners({ ); }; + const newDRepKey = (index: number) => { + const drepKey = (user as any)?.drepKeyHash; + return ( + signersAddresses[index] === userAddress && + drepKey !== undefined && + (appWallet as any).signersDRepKeys?.[index] !== drepKey && + !drepInfo?.active // Don't show as new if DRep is registered + ); + }; + return ( <> -
- - {signersAddresses.map((signer, index) => ( - - -
-
- -