diff --git a/package-lock.json b/package-lock.json
index 5faf5988c..812de272e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.7.0",
"dependencies": {
"@react-spring/web": "^9.6.1",
- "@secretkeylabs/xverse-core": "0.16.1",
+ "@secretkeylabs/xverse-core": "0.17.0",
"@stacks/connect": "^6.10.2",
"@stacks/encryption": "4.3.5",
"@stacks/stacks-blockchain-api-types": "^6.1.1",
@@ -50,7 +50,7 @@
"react-tooltip": "^5.4.0",
"redux": "^4.0.5",
"redux-persist": "^6.0.0",
- "sats-connect": "^0.1.11",
+ "sats-connect": "0.2.0",
"stream-browserify": "^3.0.0",
"string-to-color": "^2.2.2",
"styled-components": "^5.3.5",
@@ -140,30 +140,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz",
- "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==",
+ "version": "7.21.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz",
+ "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz",
- "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==",
+ "version": "7.21.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz",
+ "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.4",
+ "@babel/generator": "^7.21.5",
+ "@babel/helper-compilation-targets": "^7.21.5",
+ "@babel/helper-module-transforms": "^7.21.5",
+ "@babel/helpers": "^7.21.5",
+ "@babel/parser": "^7.21.8",
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.4",
- "@babel/types": "^7.21.4",
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -179,11 +179,11 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz",
- "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz",
+ "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==",
"dependencies": {
- "@babel/types": "^7.21.4",
+ "@babel/types": "^7.21.5",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -204,12 +204,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz",
- "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz",
+ "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.21.4",
+ "@babel/compat-data": "^7.21.5",
"@babel/helper-validator-option": "^7.21.0",
"browserslist": "^4.21.3",
"lru-cache": "^5.1.1",
@@ -223,9 +223,9 @@
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz",
+ "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==",
"engines": {
"node": ">=6.9.0"
}
@@ -265,40 +265,40 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz",
+ "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-environment-visitor": "^7.21.5",
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-simple-access": "^7.21.5",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/helper-validator-identifier": "^7.19.1",
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz",
+ "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+ "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.2"
+ "@babel/types": "^7.21.5"
},
"engines": {
"node": ">=6.9.0"
@@ -316,9 +316,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
+ "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==",
"engines": {
"node": ">=6.9.0"
}
@@ -341,14 +341,14 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz",
+ "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==",
"dev": true,
"dependencies": {
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5"
},
"engines": {
"node": ">=6.9.0"
@@ -368,9 +368,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz",
- "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==",
+ "version": "7.21.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz",
+ "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -571,16 +571,16 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz",
- "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz",
+ "integrity": "sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.21.0"
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-plugin-utils": "^7.21.5",
+ "@babel/plugin-syntax-jsx": "^7.21.4",
+ "@babel/types": "^7.21.5"
},
"engines": {
"node": ">=6.9.0"
@@ -641,9 +641,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
@@ -665,18 +665,18 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz",
- "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz",
+ "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==",
"dependencies": {
"@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/generator": "^7.21.5",
+ "@babel/helper-environment-visitor": "^7.21.5",
"@babel/helper-function-name": "^7.21.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.4",
- "@babel/types": "^7.21.4",
+ "@babel/parser": "^7.21.5",
+ "@babel/types": "^7.21.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -685,11 +685,11 @@
}
},
"node_modules/@babel/types": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz",
- "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz",
+ "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==",
"dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-string-parser": "^7.21.5",
"@babel/helper-validator-identifier": "^7.19.1",
"to-fast-properties": "^2.0.0"
},
@@ -713,9 +713,9 @@
}
},
"node_modules/@emotion/babel-plugin": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz",
- "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.8.tgz",
+ "integrity": "sha512-gxNky50AJL3AlkbjvTARiwAqei6/tNUxDZPSKd+3jqWVM3AmdVTTdpjHorR/an/M0VJqdsuq5oGcFH+rjtyujQ==",
"dependencies": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/runtime": "^7.18.3",
@@ -727,7 +727,7 @@
"escape-string-regexp": "^4.0.0",
"find-root": "^1.1.0",
"source-map": "^0.5.7",
- "stylis": "4.1.3"
+ "stylis": "4.1.4"
}
},
"node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
@@ -750,15 +750,15 @@
}
},
"node_modules/@emotion/cache": {
- "version": "11.10.7",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.7.tgz",
- "integrity": "sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz",
+ "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==",
"dependencies": {
"@emotion/memoize": "^0.8.0",
"@emotion/sheet": "^1.2.1",
"@emotion/utils": "^1.2.0",
"@emotion/weak-memoize": "^0.3.0",
- "stylis": "4.1.3"
+ "stylis": "4.1.4"
}
},
"node_modules/@emotion/hash": {
@@ -780,13 +780,13 @@
"integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
},
"node_modules/@emotion/react": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz",
- "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.8.tgz",
+ "integrity": "sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==",
"dependencies": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/cache": "^11.10.5",
+ "@emotion/babel-plugin": "^11.10.8",
+ "@emotion/cache": "^11.10.8",
"@emotion/serialize": "^1.1.1",
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
"@emotion/utils": "^1.2.0",
@@ -863,9 +863,9 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
- "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+ "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -1995,9 +1995,9 @@
}
},
"node_modules/@remix-run/router": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz",
- "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.0.tgz",
+ "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==",
"engines": {
"node": ">=14"
}
@@ -2062,9 +2062,9 @@
}
},
"node_modules/@secretkeylabs/xverse-core": {
- "version": "0.16.1",
- "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.16.1/7f0d2811fd58b9aed2614a3e7695e773b3526801",
- "integrity": "sha512-DgSxjnJDzVkmZoNSiOZOG99o0wk2AzYROwvoQ2Bq31SYsXe5mRZ48LUUgGx7c1sgdPNJ97a//tQqmFH2lPKYbw==",
+ "version": "0.17.0",
+ "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.17.0/bca930299524780c42a6d403c531b86e17021980",
+ "integrity": "sha512-/cmeXo44tWnYsKhuC7i2i7eNFPDgPHyEyaWUtfVZwrxw0PNNJ0DC/kzsY6drdu1B97ZY+BQxJ/ORD4qroJh0bA==",
"license": "ISC",
"dependencies": {
"@noble/secp256k1": "^1.7.1",
@@ -2081,13 +2081,15 @@
"bip39": "3.0.3",
"bitcoin-address-validation": "^2.2.1",
"bitcoinjs-lib": "5.2.0",
+ "bitcoinjs-message": "^2.2.0",
"bn.js": "^5.1.3",
"buffer": "6.0.3",
"c32check": "^2.0.0",
"ecpair": "^2.1.0",
"jsontokens": "^4.0.1",
"process": "^0.11.10",
- "util": "^0.12.4"
+ "util": "^0.12.4",
+ "varuint-bitcoin": "^1.1.2"
}
},
"node_modules/@secretkeylabs/xverse-core/node_modules/@noble/hashes": {
@@ -2133,9 +2135,9 @@
}
},
"node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/encryption/node_modules/@stacks/common": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.0.0.tgz",
- "integrity": "sha512-tETwccvbYvaZ7u3ZucWNMOIPN97r6IPeZXKIFhLc1KSVaWSGEPTtZcwVp+Rz3mu2XgI2pg37SUrOWXSL7OOkDw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.5.2.tgz",
+ "integrity": "sha512-tnkyEIA7YgX9GIkqlHocQPPax25uaboJ4aTX5wVs6kAGXY10+XI7VamRG4o+4DqnFVKwvIHR2fGcxdhtxNb/+Q==",
"dependencies": {
"@types/bn.js": "^5.1.0",
"@types/node": "^18.0.4"
@@ -2159,42 +2161,6 @@
"smart-buffer": "^4.1.0"
}
},
- "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/transactions/node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/transactions/node_modules/c32check": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/c32check/-/c32check-1.1.3.tgz",
- "integrity": "sha512-ADADE/PjAbJRlwpG3ShaOMbBUlJJZO7xaYSRD5Tub6PixQlgR4s36y9cvMf/YRGpkqX+QOxIdMw216iC320q9A==",
- "dependencies": {
- "base-x": "^3.0.8",
- "buffer": "^5.6.0",
- "cross-sha256": "^1.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@secretkeylabs/xverse-core/node_modules/axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
@@ -2236,6 +2202,42 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz",
"integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ=="
},
+ "node_modules/@secretkeylabs/xverse-core/node_modules/c32check": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/c32check/-/c32check-1.1.3.tgz",
+ "integrity": "sha512-ADADE/PjAbJRlwpG3ShaOMbBUlJJZO7xaYSRD5Tub6PixQlgR4s36y9cvMf/YRGpkqX+QOxIdMw216iC320q9A==",
+ "dependencies": {
+ "base-x": "^3.0.8",
+ "buffer": "^5.6.0",
+ "cross-sha256": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@secretkeylabs/xverse-core/node_modules/c32check/node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
"node_modules/@sinonjs/commons": {
"version": "1.8.6",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
@@ -2463,14 +2465,14 @@
"integrity": "sha512-zrjKPGJN4p1azzmh8j0Yj+ZjQ0L9F01qJjAxOtBpapmFbGr1NUuPT1GthIg76y+dobdjSDPN39LpoJG/FbWFLw=="
},
"node_modules/@stacks/storage": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/storage/-/storage-6.5.1.tgz",
- "integrity": "sha512-4taTVk1Jw4Xu6+mG/lWDDWmoay8+IBoW3mBKuKmjKVzDxlTNP54TPjoVv0qRXlwHDBqTLTGq6nD4fWERd0XHpQ==",
- "dependencies": {
- "@stacks/auth": "^6.5.1",
- "@stacks/common": "^6.0.0",
- "@stacks/encryption": "^6.5.1",
- "@stacks/network": "^6.5.1",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/storage/-/storage-6.5.2.tgz",
+ "integrity": "sha512-D8gq+sNSyO9+qc/HGjg8LCQoM9eWNvu3bhkLSygZnLLaxxdXOB9e9pkIXCDK30FNmKB0fhkRC/tk/AsKFcOULw==",
+ "dependencies": {
+ "@stacks/auth": "^6.5.2",
+ "@stacks/common": "^6.5.2",
+ "@stacks/encryption": "^6.5.2",
+ "@stacks/network": "^6.5.2",
"base64-js": "^1.5.1",
"jsontokens": "^4.0.1"
}
@@ -2502,36 +2504,36 @@
}
},
"node_modules/@stacks/storage/node_modules/@stacks/auth": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.1.tgz",
- "integrity": "sha512-t1f+Hf384Gcp8bI2ulSqAq5/1Osszha1VYr/uPVK7IzHutvypPib7mT5aK14/D91rnGp4JG6JlrygQ1WBZoVtQ==",
- "dependencies": {
- "@stacks/common": "^6.0.0",
- "@stacks/encryption": "^6.5.1",
- "@stacks/network": "^6.5.1",
- "@stacks/profile": "^6.5.1",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.2.tgz",
+ "integrity": "sha512-kIdfpoPAIyJ/WBvJKaBLW/87A2ew8dKIUnv4T1qeZfcJwWc6qyR3bcI5gCMvYlJ460SVi1ajSnyANPWU3qIGaQ==",
+ "dependencies": {
+ "@stacks/common": "^6.5.2",
+ "@stacks/encryption": "^6.5.2",
+ "@stacks/network": "^6.5.2",
+ "@stacks/profile": "^6.5.2",
"cross-fetch": "^3.1.5",
"jsontokens": "^4.0.1"
}
},
"node_modules/@stacks/storage/node_modules/@stacks/common": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.0.0.tgz",
- "integrity": "sha512-tETwccvbYvaZ7u3ZucWNMOIPN97r6IPeZXKIFhLc1KSVaWSGEPTtZcwVp+Rz3mu2XgI2pg37SUrOWXSL7OOkDw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.5.2.tgz",
+ "integrity": "sha512-tnkyEIA7YgX9GIkqlHocQPPax25uaboJ4aTX5wVs6kAGXY10+XI7VamRG4o+4DqnFVKwvIHR2fGcxdhtxNb/+Q==",
"dependencies": {
"@types/bn.js": "^5.1.0",
"@types/node": "^18.0.4"
}
},
"node_modules/@stacks/storage/node_modules/@stacks/encryption": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.1.tgz",
- "integrity": "sha512-QB33fMOQPHhjB6pXT0HuM4ZcB2/E0oiBWpI+G9eYxLO2KZODJ64iF0z28IdfWSluRuOsLCh45cxm9pdaIQ/8+A==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.2.tgz",
+ "integrity": "sha512-+xh0aEIal9XZ/E3XEKP7KklbhWYcaXUmDboJdj2cCKlVv3g7gzKWNgCEsc8+6asbKjy2ClAYvIEFaQRDDjFljw==",
"dependencies": {
"@noble/hashes": "1.1.5",
"@noble/secp256k1": "1.7.1",
"@scure/bip39": "1.1.0",
- "@stacks/common": "^6.0.0",
+ "@stacks/common": "^6.5.2",
"@types/node": "^18.0.4",
"base64-js": "^1.5.1",
"bs58": "^5.0.0",
@@ -2540,36 +2542,36 @@
}
},
"node_modules/@stacks/storage/node_modules/@stacks/network": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.1.tgz",
- "integrity": "sha512-VPsozRMVJ8Qe4qGdcvESv9L6YWFrzFlelv+El8vL8vTIqJOanfSyRJgUuPVil/V1f5Mf4p38gzdKCJmibxzVlw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.2.tgz",
+ "integrity": "sha512-+XNneecXCitis7OGDoCMqfKp0j4SICaij6XN9JTq+pAoaCbuJqLRZrrVP/ApkWbotTzeVZIbrZPqMLqkdgGTrg==",
"dependencies": {
- "@stacks/common": "^6.0.0",
+ "@stacks/common": "^6.5.2",
"cross-fetch": "^3.1.5"
}
},
"node_modules/@stacks/storage/node_modules/@stacks/profile": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.1.tgz",
- "integrity": "sha512-YN6Qnel7rfFfMw/k/zfI3y4z6anei4SPF6CXmiYQ1t/dA58z3d3QA7ojg4i5elmbmR2soXByGDovazjuqKj8Aw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.2.tgz",
+ "integrity": "sha512-OtVHmqyMK/Iumo/sXHswqEZIIj/ZBgKyR5Wc609rcC1ZPpN60kXmLLzMq9cCKYZWxFLM1utjYskkGL0FcU5wQw==",
"dependencies": {
- "@stacks/common": "^6.0.0",
- "@stacks/network": "^6.5.1",
- "@stacks/transactions": "^6.5.1",
+ "@stacks/common": "^6.5.2",
+ "@stacks/network": "^6.5.2",
+ "@stacks/transactions": "^6.5.2",
"jsontokens": "^4.0.1",
"schema-inspector": "^2.0.2",
"zone-file": "^2.0.0-beta.3"
}
},
"node_modules/@stacks/storage/node_modules/@stacks/transactions": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.1.tgz",
- "integrity": "sha512-Zb2Bwh/On3Uga47975RJjyfEaGiqgqpvA3FqucoZt6IOQoPd9yaTdw4GoARnAIXmYd8/1gEZN+8aE+gHLl1wPg==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.2.tgz",
+ "integrity": "sha512-xL4XF4xSFFJ+VMzeahBenGdg1T+y0Q0fSNA09jz7knTnnXvdAzzC+RP59xzuIjrAY/IWYO3X1sf0MGm9IIhYOg==",
"dependencies": {
"@noble/hashes": "1.1.5",
"@noble/secp256k1": "1.7.1",
- "@stacks/common": "^6.0.0",
- "@stacks/network": "^6.5.1",
+ "@stacks/common": "^6.5.2",
+ "@stacks/network": "^6.5.2",
"c32check": "^2.0.0",
"lodash.clonedeep": "^4.5.0"
}
@@ -3177,9 +3179,9 @@
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.18.4",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.4.tgz",
- "integrity": "sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==",
+ "version": "7.18.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz",
+ "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==",
"dev": true,
"dependencies": {
"@babel/types": "^7.3.0"
@@ -3232,9 +3234,9 @@
}
},
"node_modules/@types/connect-history-api-fallback": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
- "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
"dev": true,
"dependencies": {
"@types/express-serve-static-core": "*",
@@ -3280,14 +3282,15 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.33",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
- "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
+ "version": "4.17.34",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz",
+ "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==",
"dev": true,
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
- "@types/range-parser": "*"
+ "@types/range-parser": "*",
+ "@types/send": "*"
}
},
"node_modules/@types/filesystem": {
@@ -3400,9 +3403,9 @@
"dev": true
},
"node_modules/@types/mime": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
- "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
"dev": true
},
"node_modules/@types/minimatch": {
@@ -3412,9 +3415,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.16.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz",
- "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA=="
+ "version": "18.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -3507,6 +3510,16 @@
"integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
+ "node_modules/@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
@@ -3599,15 +3612,15 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz",
- "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz",
+ "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/type-utils": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/type-utils": "5.59.2",
+ "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
@@ -3666,14 +3679,14 @@
"dev": true
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz",
- "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz",
+ "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/typescript-estree": "5.59.2",
"debug": "^4.3.4"
},
"engines": {
@@ -3693,13 +3706,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz",
- "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz",
+ "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1"
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/visitor-keys": "5.59.2"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3710,13 +3723,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz",
- "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz",
+ "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/typescript-estree": "5.59.2",
+ "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -3737,9 +3750,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz",
- "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz",
+ "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3750,13 +3763,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz",
- "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz",
+ "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/visitor-keys": "5.59.2",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -3810,17 +3823,17 @@
"dev": true
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz",
- "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz",
+ "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/typescript-estree": "5.59.2",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
},
@@ -3869,12 +3882,12 @@
"dev": true
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz",
- "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz",
+ "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.1",
+ "@typescript-eslint/types": "5.59.2",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -4329,7 +4342,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
"integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"is-array-buffer": "^3.0.1"
@@ -4486,9 +4498,9 @@
}
},
"node_modules/axios": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz",
- "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -5813,6 +5825,27 @@
"resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
"integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
},
+ "node_modules/bitcoinjs-message": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz",
+ "integrity": "sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==",
+ "dependencies": {
+ "bech32": "^1.1.3",
+ "bs58check": "^2.1.2",
+ "buffer-equals": "^1.0.3",
+ "create-hash": "^1.1.2",
+ "secp256k1": "^3.0.1",
+ "varuint-bitcoin": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/bitcoinjs-message/node_modules/bech32": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
+ "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
+ },
"node_modules/bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
@@ -6094,6 +6127,14 @@
"ieee754": "^1.2.1"
}
},
+ "node_modules/buffer-equals": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz",
+ "integrity": "sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -6174,9 +6215,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001481",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz",
- "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==",
+ "version": "1.0.30001482",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz",
+ "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==",
"dev": true,
"funding": [
{
@@ -6977,9 +7018,12 @@
}
},
"node_modules/date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
"engines": {
"node": ">=0.11"
},
@@ -7025,15 +7069,16 @@
"dev": true
},
"node_modules/deep-equal": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz",
- "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz",
+ "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==",
"dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
"call-bind": "^1.0.2",
- "es-get-iterator": "^1.1.2",
- "get-intrinsic": "^1.1.3",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.0",
"is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.1",
+ "is-array-buffer": "^3.0.2",
"is-date-object": "^1.0.5",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.2",
@@ -7041,7 +7086,7 @@
"object-is": "^1.1.5",
"object-keys": "^1.1.1",
"object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
+ "regexp.prototype.flags": "^1.5.0",
"side-channel": "^1.0.4",
"which-boxed-primitive": "^1.0.2",
"which-collection": "^1.0.1",
@@ -7415,6 +7460,19 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/drbg.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz",
+ "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==",
+ "dependencies": {
+ "browserify-aes": "^1.0.6",
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@@ -7443,9 +7501,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.372",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz",
- "integrity": "sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==",
+ "version": "1.4.380",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz",
+ "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==",
"dev": true
},
"node_modules/elliptic": {
@@ -13549,9 +13607,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
+ "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -14025,9 +14083,9 @@
}
},
"node_modules/react-hot-toast": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz",
- "integrity": "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz",
+ "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==",
"dependencies": {
"goober": "^2.1.10"
},
@@ -14168,11 +14226,11 @@
}
},
"node_modules/react-router": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz",
- "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.0.tgz",
+ "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==",
"dependencies": {
- "@remix-run/router": "1.5.0"
+ "@remix-run/router": "1.6.0"
},
"engines": {
"node": ">=14"
@@ -14182,12 +14240,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz",
- "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.0.tgz",
+ "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==",
"dependencies": {
- "@remix-run/router": "1.5.0",
- "react-router": "6.10.0"
+ "@remix-run/router": "1.6.0",
+ "react-router": "6.11.0"
},
"engines": {
"node": ">=14"
@@ -14198,9 +14256,9 @@
}
},
"node_modules/react-select": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.2.tgz",
- "integrity": "sha512-cTlJkQ8YjV6T/js8wW0owTzht0hHGABh29vjLscY4HfZGkv7hc3FFTmRp9NzY/Ib1uQ36GieAKEjxpHdpCFpcA==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz",
+ "integrity": "sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg==",
"dependencies": {
"@babel/runtime": "^7.12.0",
"@emotion/cache": "^11.4.0",
@@ -14668,9 +14726,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sats-connect": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-0.1.11.tgz",
- "integrity": "sha512-8o6TJ+loIjrtzl002xFwbGfFlZYWcN7FDE/6alHTRUOFgFLKQ+ICcslxEg1tSqzQNRYpBnMv2kJlP6Zz9BAj0g==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-0.2.0.tgz",
+ "integrity": "sha512-PEeqgPmAASPwGnBRmKYAmOey2HRbzW733EOVia067MoDAoai+/Buzx1NzaJ5FXZzpzHbG2YFQDp+43vkFWTQxw==",
"dependencies": {
"jsontokens": "^4.0.1",
"process": "^0.11.10",
@@ -14723,6 +14781,30 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/secp256k1": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz",
+ "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "bip66": "^1.1.5",
+ "bn.js": "^4.11.8",
+ "create-hash": "^1.2.0",
+ "drbg.js": "^1.0.1",
+ "elliptic": "^6.5.2",
+ "nan": "^2.14.0",
+ "safe-buffer": "^5.1.2"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/secp256k1/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -15408,9 +15490,9 @@
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"node_modules/stylis": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
- "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz",
+ "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ=="
},
"node_modules/supports-color": {
"version": "5.5.0",
@@ -16474,9 +16556,9 @@
}
},
"node_modules/webpack": {
- "version": "5.80.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.80.0.tgz",
- "integrity": "sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==",
+ "version": "5.81.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz",
+ "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==",
"dev": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
@@ -17167,27 +17249,27 @@
}
},
"@babel/compat-data": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz",
- "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==",
+ "version": "7.21.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz",
+ "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==",
"dev": true
},
"@babel/core": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz",
- "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==",
+ "version": "7.21.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz",
+ "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==",
"dev": true,
"requires": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.4",
+ "@babel/generator": "^7.21.5",
+ "@babel/helper-compilation-targets": "^7.21.5",
+ "@babel/helper-module-transforms": "^7.21.5",
+ "@babel/helpers": "^7.21.5",
+ "@babel/parser": "^7.21.8",
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.4",
- "@babel/types": "^7.21.4",
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -17196,11 +17278,11 @@
}
},
"@babel/generator": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz",
- "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz",
+ "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==",
"requires": {
- "@babel/types": "^7.21.4",
+ "@babel/types": "^7.21.5",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -17215,12 +17297,12 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz",
- "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz",
+ "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.21.4",
+ "@babel/compat-data": "^7.21.5",
"@babel/helper-validator-option": "^7.21.0",
"browserslist": "^4.21.3",
"lru-cache": "^5.1.1",
@@ -17228,9 +17310,9 @@
}
},
"@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz",
+ "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ=="
},
"@babel/helper-function-name": {
"version": "7.21.0",
@@ -17258,34 +17340,34 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz",
+ "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-environment-visitor": "^7.21.5",
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-simple-access": "^7.21.5",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/helper-validator-identifier": "^7.19.1",
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5"
}
},
"@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz",
+ "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==",
"dev": true
},
"@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+ "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
"dev": true,
"requires": {
- "@babel/types": "^7.20.2"
+ "@babel/types": "^7.21.5"
}
},
"@babel/helper-split-export-declaration": {
@@ -17297,9 +17379,9 @@
}
},
"@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
+ "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w=="
},
"@babel/helper-validator-identifier": {
"version": "7.19.1",
@@ -17313,14 +17395,14 @@
"dev": true
},
"@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz",
+ "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==",
"dev": true,
"requires": {
"@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
+ "@babel/traverse": "^7.21.5",
+ "@babel/types": "^7.21.5"
}
},
"@babel/highlight": {
@@ -17334,9 +17416,9 @@
}
},
"@babel/parser": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz",
- "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw=="
+ "version": "7.21.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz",
+ "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA=="
},
"@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
@@ -17474,16 +17556,16 @@
}
},
"@babel/plugin-transform-react-jsx": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz",
- "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz",
+ "integrity": "sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.21.0"
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-plugin-utils": "^7.21.5",
+ "@babel/plugin-syntax-jsx": "^7.21.4",
+ "@babel/types": "^7.21.5"
}
},
"@babel/plugin-transform-react-jsx-development": {
@@ -17520,9 +17602,9 @@
}
},
"@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
"requires": {
"regenerator-runtime": "^0.13.11"
}
@@ -17538,28 +17620,28 @@
}
},
"@babel/traverse": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz",
- "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz",
+ "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==",
"requires": {
"@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/generator": "^7.21.5",
+ "@babel/helper-environment-visitor": "^7.21.5",
"@babel/helper-function-name": "^7.21.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.4",
- "@babel/types": "^7.21.4",
+ "@babel/parser": "^7.21.5",
+ "@babel/types": "^7.21.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz",
- "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==",
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz",
+ "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==",
"requires": {
- "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-string-parser": "^7.21.5",
"@babel/helper-validator-identifier": "^7.19.1",
"to-fast-properties": "^2.0.0"
}
@@ -17577,9 +17659,9 @@
"dev": true
},
"@emotion/babel-plugin": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz",
- "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.8.tgz",
+ "integrity": "sha512-gxNky50AJL3AlkbjvTARiwAqei6/tNUxDZPSKd+3jqWVM3AmdVTTdpjHorR/an/M0VJqdsuq5oGcFH+rjtyujQ==",
"requires": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/runtime": "^7.18.3",
@@ -17591,7 +17673,7 @@
"escape-string-regexp": "^4.0.0",
"find-root": "^1.1.0",
"source-map": "^0.5.7",
- "stylis": "4.1.3"
+ "stylis": "4.1.4"
},
"dependencies": {
"escape-string-regexp": {
@@ -17607,15 +17689,15 @@
}
},
"@emotion/cache": {
- "version": "11.10.7",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.7.tgz",
- "integrity": "sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz",
+ "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==",
"requires": {
"@emotion/memoize": "^0.8.0",
"@emotion/sheet": "^1.2.1",
"@emotion/utils": "^1.2.0",
"@emotion/weak-memoize": "^0.3.0",
- "stylis": "4.1.3"
+ "stylis": "4.1.4"
}
},
"@emotion/hash": {
@@ -17637,13 +17719,13 @@
"integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
},
"@emotion/react": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz",
- "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.8.tgz",
+ "integrity": "sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==",
"requires": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/cache": "^11.10.5",
+ "@emotion/babel-plugin": "^11.10.8",
+ "@emotion/cache": "^11.10.8",
"@emotion/serialize": "^1.1.1",
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
"@emotion/utils": "^1.2.0",
@@ -17704,9 +17786,9 @@
}
},
"@eslint-community/regexpp": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
- "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+ "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
"dev": true
},
"@eslint/eslintrc": {
@@ -18531,9 +18613,9 @@
}
},
"@remix-run/router": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz",
- "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg=="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.0.tgz",
+ "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w=="
},
"@scure/base": {
"version": "1.1.1",
@@ -18571,9 +18653,9 @@
}
},
"@secretkeylabs/xverse-core": {
- "version": "0.16.1",
- "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.16.1/7f0d2811fd58b9aed2614a3e7695e773b3526801",
- "integrity": "sha512-DgSxjnJDzVkmZoNSiOZOG99o0wk2AzYROwvoQ2Bq31SYsXe5mRZ48LUUgGx7c1sgdPNJ97a//tQqmFH2lPKYbw==",
+ "version": "0.17.0",
+ "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.17.0/bca930299524780c42a6d403c531b86e17021980",
+ "integrity": "sha512-/cmeXo44tWnYsKhuC7i2i7eNFPDgPHyEyaWUtfVZwrxw0PNNJ0DC/kzsY6drdu1B97ZY+BQxJ/ORD4qroJh0bA==",
"requires": {
"@noble/secp256k1": "^1.7.1",
"@scure/base": "^1.1.1",
@@ -18589,13 +18671,15 @@
"bip39": "3.0.3",
"bitcoin-address-validation": "^2.2.1",
"bitcoinjs-lib": "5.2.0",
+ "bitcoinjs-message": "^2.2.0",
"bn.js": "^5.1.3",
"buffer": "6.0.3",
"c32check": "^2.0.0",
"ecpair": "^2.1.0",
"jsontokens": "^4.0.1",
"process": "^0.11.10",
- "util": "^0.12.4"
+ "util": "^0.12.4",
+ "varuint-bitcoin": "^1.1.2"
},
"dependencies": {
"@noble/hashes": {
@@ -18629,9 +18713,9 @@
},
"dependencies": {
"@stacks/common": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.0.0.tgz",
- "integrity": "sha512-tETwccvbYvaZ7u3ZucWNMOIPN97r6IPeZXKIFhLc1KSVaWSGEPTtZcwVp+Rz3mu2XgI2pg37SUrOWXSL7OOkDw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.5.2.tgz",
+ "integrity": "sha512-tnkyEIA7YgX9GIkqlHocQPPax25uaboJ4aTX5wVs6kAGXY10+XI7VamRG4o+4DqnFVKwvIHR2fGcxdhtxNb/+Q==",
"requires": {
"@types/bn.js": "^5.1.0",
"@types/node": "^18.0.4"
@@ -18655,27 +18739,6 @@
"ripemd160-min": "^0.0.6",
"sha.js": "^2.4.11",
"smart-buffer": "^4.1.0"
- },
- "dependencies": {
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "c32check": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/c32check/-/c32check-1.1.3.tgz",
- "integrity": "sha512-ADADE/PjAbJRlwpG3ShaOMbBUlJJZO7xaYSRD5Tub6PixQlgR4s36y9cvMf/YRGpkqX+QOxIdMw216iC320q9A==",
- "requires": {
- "base-x": "^3.0.8",
- "buffer": "^5.6.0",
- "cross-sha256": "^1.2.0"
- }
- }
}
},
"axios": {
@@ -18717,6 +18780,27 @@
"integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ=="
}
}
+ },
+ "c32check": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/c32check/-/c32check-1.1.3.tgz",
+ "integrity": "sha512-ADADE/PjAbJRlwpG3ShaOMbBUlJJZO7xaYSRD5Tub6PixQlgR4s36y9cvMf/YRGpkqX+QOxIdMw216iC320q9A==",
+ "requires": {
+ "base-x": "^3.0.8",
+ "buffer": "^5.6.0",
+ "cross-sha256": "^1.2.0"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ }
+ }
}
}
},
@@ -18938,14 +19022,14 @@
"integrity": "sha512-zrjKPGJN4p1azzmh8j0Yj+ZjQ0L9F01qJjAxOtBpapmFbGr1NUuPT1GthIg76y+dobdjSDPN39LpoJG/FbWFLw=="
},
"@stacks/storage": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/storage/-/storage-6.5.1.tgz",
- "integrity": "sha512-4taTVk1Jw4Xu6+mG/lWDDWmoay8+IBoW3mBKuKmjKVzDxlTNP54TPjoVv0qRXlwHDBqTLTGq6nD4fWERd0XHpQ==",
- "requires": {
- "@stacks/auth": "^6.5.1",
- "@stacks/common": "^6.0.0",
- "@stacks/encryption": "^6.5.1",
- "@stacks/network": "^6.5.1",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/storage/-/storage-6.5.2.tgz",
+ "integrity": "sha512-D8gq+sNSyO9+qc/HGjg8LCQoM9eWNvu3bhkLSygZnLLaxxdXOB9e9pkIXCDK30FNmKB0fhkRC/tk/AsKFcOULw==",
+ "requires": {
+ "@stacks/auth": "^6.5.2",
+ "@stacks/common": "^6.5.2",
+ "@stacks/encryption": "^6.5.2",
+ "@stacks/network": "^6.5.2",
"base64-js": "^1.5.1",
"jsontokens": "^4.0.1"
},
@@ -18965,36 +19049,36 @@
}
},
"@stacks/auth": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.1.tgz",
- "integrity": "sha512-t1f+Hf384Gcp8bI2ulSqAq5/1Osszha1VYr/uPVK7IzHutvypPib7mT5aK14/D91rnGp4JG6JlrygQ1WBZoVtQ==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.2.tgz",
+ "integrity": "sha512-kIdfpoPAIyJ/WBvJKaBLW/87A2ew8dKIUnv4T1qeZfcJwWc6qyR3bcI5gCMvYlJ460SVi1ajSnyANPWU3qIGaQ==",
"requires": {
- "@stacks/common": "^6.0.0",
- "@stacks/encryption": "^6.5.1",
- "@stacks/network": "^6.5.1",
- "@stacks/profile": "^6.5.1",
+ "@stacks/common": "^6.5.2",
+ "@stacks/encryption": "^6.5.2",
+ "@stacks/network": "^6.5.2",
+ "@stacks/profile": "^6.5.2",
"cross-fetch": "^3.1.5",
"jsontokens": "^4.0.1"
}
},
"@stacks/common": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.0.0.tgz",
- "integrity": "sha512-tETwccvbYvaZ7u3ZucWNMOIPN97r6IPeZXKIFhLc1KSVaWSGEPTtZcwVp+Rz3mu2XgI2pg37SUrOWXSL7OOkDw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/common/-/common-6.5.2.tgz",
+ "integrity": "sha512-tnkyEIA7YgX9GIkqlHocQPPax25uaboJ4aTX5wVs6kAGXY10+XI7VamRG4o+4DqnFVKwvIHR2fGcxdhtxNb/+Q==",
"requires": {
"@types/bn.js": "^5.1.0",
"@types/node": "^18.0.4"
}
},
"@stacks/encryption": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.1.tgz",
- "integrity": "sha512-QB33fMOQPHhjB6pXT0HuM4ZcB2/E0oiBWpI+G9eYxLO2KZODJ64iF0z28IdfWSluRuOsLCh45cxm9pdaIQ/8+A==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.2.tgz",
+ "integrity": "sha512-+xh0aEIal9XZ/E3XEKP7KklbhWYcaXUmDboJdj2cCKlVv3g7gzKWNgCEsc8+6asbKjy2ClAYvIEFaQRDDjFljw==",
"requires": {
"@noble/hashes": "1.1.5",
"@noble/secp256k1": "1.7.1",
"@scure/bip39": "1.1.0",
- "@stacks/common": "^6.0.0",
+ "@stacks/common": "^6.5.2",
"@types/node": "^18.0.4",
"base64-js": "^1.5.1",
"bs58": "^5.0.0",
@@ -19003,36 +19087,36 @@
}
},
"@stacks/network": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.1.tgz",
- "integrity": "sha512-VPsozRMVJ8Qe4qGdcvESv9L6YWFrzFlelv+El8vL8vTIqJOanfSyRJgUuPVil/V1f5Mf4p38gzdKCJmibxzVlw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.2.tgz",
+ "integrity": "sha512-+XNneecXCitis7OGDoCMqfKp0j4SICaij6XN9JTq+pAoaCbuJqLRZrrVP/ApkWbotTzeVZIbrZPqMLqkdgGTrg==",
"requires": {
- "@stacks/common": "^6.0.0",
+ "@stacks/common": "^6.5.2",
"cross-fetch": "^3.1.5"
}
},
"@stacks/profile": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.1.tgz",
- "integrity": "sha512-YN6Qnel7rfFfMw/k/zfI3y4z6anei4SPF6CXmiYQ1t/dA58z3d3QA7ojg4i5elmbmR2soXByGDovazjuqKj8Aw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.2.tgz",
+ "integrity": "sha512-OtVHmqyMK/Iumo/sXHswqEZIIj/ZBgKyR5Wc609rcC1ZPpN60kXmLLzMq9cCKYZWxFLM1utjYskkGL0FcU5wQw==",
"requires": {
- "@stacks/common": "^6.0.0",
- "@stacks/network": "^6.5.1",
- "@stacks/transactions": "^6.5.1",
+ "@stacks/common": "^6.5.2",
+ "@stacks/network": "^6.5.2",
+ "@stacks/transactions": "^6.5.2",
"jsontokens": "^4.0.1",
"schema-inspector": "^2.0.2",
"zone-file": "^2.0.0-beta.3"
}
},
"@stacks/transactions": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.1.tgz",
- "integrity": "sha512-Zb2Bwh/On3Uga47975RJjyfEaGiqgqpvA3FqucoZt6IOQoPd9yaTdw4GoARnAIXmYd8/1gEZN+8aE+gHLl1wPg==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.2.tgz",
+ "integrity": "sha512-xL4XF4xSFFJ+VMzeahBenGdg1T+y0Q0fSNA09jz7knTnnXvdAzzC+RP59xzuIjrAY/IWYO3X1sf0MGm9IIhYOg==",
"requires": {
"@noble/hashes": "1.1.5",
"@noble/secp256k1": "1.7.1",
- "@stacks/common": "^6.0.0",
- "@stacks/network": "^6.5.1",
+ "@stacks/common": "^6.5.2",
+ "@stacks/network": "^6.5.2",
"c32check": "^2.0.0",
"lodash.clonedeep": "^4.5.0"
}
@@ -19504,9 +19588,9 @@
}
},
"@types/babel__traverse": {
- "version": "7.18.4",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.4.tgz",
- "integrity": "sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==",
+ "version": "7.18.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz",
+ "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==",
"dev": true,
"requires": {
"@babel/types": "^7.3.0"
@@ -19559,9 +19643,9 @@
}
},
"@types/connect-history-api-fallback": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
- "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
"dev": true,
"requires": {
"@types/express-serve-static-core": "*",
@@ -19607,14 +19691,15 @@
}
},
"@types/express-serve-static-core": {
- "version": "4.17.33",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
- "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
+ "version": "4.17.34",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz",
+ "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==",
"dev": true,
"requires": {
"@types/node": "*",
"@types/qs": "*",
- "@types/range-parser": "*"
+ "@types/range-parser": "*",
+ "@types/send": "*"
}
},
"@types/filesystem": {
@@ -19727,9 +19812,9 @@
"dev": true
},
"@types/mime": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
- "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
"dev": true
},
"@types/minimatch": {
@@ -19739,9 +19824,9 @@
"dev": true
},
"@types/node": {
- "version": "18.16.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz",
- "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA=="
+ "version": "18.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
},
"@types/parse-json": {
"version": "4.0.0",
@@ -19834,6 +19919,16 @@
"integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
+ "@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "dev": true,
+ "requires": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
"@types/serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
@@ -19926,15 +20021,15 @@
"dev": true
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz",
- "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz",
+ "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==",
"dev": true,
"requires": {
"@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/type-utils": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/type-utils": "5.59.2",
+ "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4",
"grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
@@ -19970,53 +20065,53 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz",
- "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz",
+ "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/typescript-estree": "5.59.2",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz",
- "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz",
+ "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1"
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/visitor-keys": "5.59.2"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz",
- "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz",
+ "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==",
"dev": true,
"requires": {
- "@typescript-eslint/typescript-estree": "5.59.1",
- "@typescript-eslint/utils": "5.59.1",
+ "@typescript-eslint/typescript-estree": "5.59.2",
+ "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz",
- "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz",
+ "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz",
- "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz",
+ "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/visitor-keys": "5.59.1",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/visitor-keys": "5.59.2",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -20051,17 +20146,17 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz",
- "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz",
+ "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.1",
- "@typescript-eslint/types": "5.59.1",
- "@typescript-eslint/typescript-estree": "5.59.1",
+ "@typescript-eslint/scope-manager": "5.59.2",
+ "@typescript-eslint/types": "5.59.2",
+ "@typescript-eslint/typescript-estree": "5.59.2",
"eslint-scope": "^5.1.1",
"semver": "^7.3.7"
},
@@ -20093,12 +20188,12 @@
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.59.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz",
- "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==",
+ "version": "5.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz",
+ "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.59.1",
+ "@typescript-eslint/types": "5.59.2",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -20469,7 +20564,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
"integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"is-array-buffer": "^3.0.1"
@@ -20592,9 +20686,9 @@
"dev": true
},
"axios": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz",
- "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"requires": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -21795,6 +21889,26 @@
}
}
},
+ "bitcoinjs-message": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz",
+ "integrity": "sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==",
+ "requires": {
+ "bech32": "^1.1.3",
+ "bs58check": "^2.1.2",
+ "buffer-equals": "^1.0.3",
+ "create-hash": "^1.1.2",
+ "secp256k1": "^3.0.1",
+ "varuint-bitcoin": "^1.0.1"
+ },
+ "dependencies": {
+ "bech32": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
+ "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
+ }
+ }
+ },
"bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
@@ -22034,6 +22148,11 @@
"ieee754": "^1.2.1"
}
},
+ "buffer-equals": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz",
+ "integrity": "sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA=="
+ },
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -22096,9 +22215,9 @@
"integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="
},
"caniuse-lite": {
- "version": "1.0.30001481",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz",
- "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==",
+ "version": "1.0.30001482",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz",
+ "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==",
"dev": true
},
"chalk": {
@@ -22717,9 +22836,12 @@
}
},
"date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA=="
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "requires": {
+ "@babel/runtime": "^7.21.0"
+ }
},
"debug": {
"version": "4.3.4",
@@ -22747,15 +22869,16 @@
"dev": true
},
"deep-equal": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz",
- "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz",
+ "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==",
"requires": {
+ "array-buffer-byte-length": "^1.0.0",
"call-bind": "^1.0.2",
- "es-get-iterator": "^1.1.2",
- "get-intrinsic": "^1.1.3",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.0",
"is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.1",
+ "is-array-buffer": "^3.0.2",
"is-date-object": "^1.0.5",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.2",
@@ -22763,7 +22886,7 @@
"object-is": "^1.1.5",
"object-keys": "^1.1.1",
"object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
+ "regexp.prototype.flags": "^1.5.0",
"side-channel": "^1.0.4",
"which-boxed-primitive": "^1.0.2",
"which-collection": "^1.0.1",
@@ -23059,6 +23182,16 @@
"tslib": "^2.0.3"
}
},
+ "drbg.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz",
+ "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==",
+ "requires": {
+ "browserify-aes": "^1.0.6",
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4"
+ }
+ },
"ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@@ -23084,9 +23217,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.372",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz",
- "integrity": "sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==",
+ "version": "1.4.380",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz",
+ "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==",
"dev": true
},
"elliptic": {
@@ -27653,9 +27786,9 @@
}
},
"postcss-selector-parser": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
+ "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
"dev": true,
"requires": {
"cssesc": "^3.0.0",
@@ -28006,9 +28139,9 @@
}
},
"react-hot-toast": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz",
- "integrity": "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz",
+ "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==",
"requires": {
"goober": "^2.1.10"
}
@@ -28095,26 +28228,26 @@
"requires": {}
},
"react-router": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz",
- "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.11.0.tgz",
+ "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==",
"requires": {
- "@remix-run/router": "1.5.0"
+ "@remix-run/router": "1.6.0"
}
},
"react-router-dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz",
- "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.11.0.tgz",
+ "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==",
"requires": {
- "@remix-run/router": "1.5.0",
- "react-router": "6.10.0"
+ "@remix-run/router": "1.6.0",
+ "react-router": "6.11.0"
}
},
"react-select": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.2.tgz",
- "integrity": "sha512-cTlJkQ8YjV6T/js8wW0owTzht0hHGABh29vjLscY4HfZGkv7hc3FFTmRp9NzY/Ib1uQ36GieAKEjxpHdpCFpcA==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz",
+ "integrity": "sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg==",
"requires": {
"@babel/runtime": "^7.12.0",
"@emotion/cache": "^11.4.0",
@@ -28448,9 +28581,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sats-connect": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-0.1.11.tgz",
- "integrity": "sha512-8o6TJ+loIjrtzl002xFwbGfFlZYWcN7FDE/6alHTRUOFgFLKQ+ICcslxEg1tSqzQNRYpBnMv2kJlP6Zz9BAj0g==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/sats-connect/-/sats-connect-0.2.0.tgz",
+ "integrity": "sha512-PEeqgPmAASPwGnBRmKYAmOey2HRbzW733EOVia067MoDAoai+/Buzx1NzaJ5FXZzpzHbG2YFQDp+43vkFWTQxw==",
"requires": {
"jsontokens": "^4.0.1",
"process": "^0.11.10",
@@ -28493,6 +28626,28 @@
"ajv-keywords": "^3.5.2"
}
},
+ "secp256k1": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz",
+ "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==",
+ "requires": {
+ "bindings": "^1.5.0",
+ "bip66": "^1.1.5",
+ "bn.js": "^4.11.8",
+ "create-hash": "^1.2.0",
+ "drbg.js": "^1.0.1",
+ "elliptic": "^6.5.2",
+ "nan": "^2.14.0",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -29043,9 +29198,9 @@
}
},
"stylis": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
- "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz",
+ "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ=="
},
"supports-color": {
"version": "5.5.0",
@@ -29833,9 +29988,9 @@
"dev": true
},
"webpack": {
- "version": "5.80.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.80.0.tgz",
- "integrity": "sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==",
+ "version": "5.81.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz",
+ "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==",
"dev": true,
"requires": {
"@types/eslint-scope": "^3.7.3",
diff --git a/package.json b/package.json
index b60414ea7..a3f64b1ec 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"private": true,
"dependencies": {
"@react-spring/web": "^9.6.1",
- "@secretkeylabs/xverse-core": "0.16.1",
+ "@secretkeylabs/xverse-core": "0.17.0",
"@stacks/connect": "^6.10.2",
"@stacks/encryption": "4.3.5",
"@stacks/stacks-blockchain-api-types": "^6.1.1",
@@ -46,7 +46,7 @@
"react-tooltip": "^5.4.0",
"redux": "^4.0.5",
"redux-persist": "^6.0.0",
- "sats-connect": "^0.1.11",
+ "sats-connect": "0.2.0",
"stream-browserify": "^3.0.0",
"string-to-color": "^2.2.2",
"styled-components": "^5.3.5",
diff --git a/src/app/components/AlertMessage/index.tsx b/src/app/components/AlertMessage/index.tsx
index 4cc02d33b..3aebb4983 100644
--- a/src/app/components/AlertMessage/index.tsx
+++ b/src/app/components/AlertMessage/index.tsx
@@ -12,12 +12,13 @@ const Container = styled.div((props) => ({
width: 312,
borderRadius: 12,
zIndex: 16000,
- background: props.theme.colors.background.elevation2,
+ background: props.theme.colors.background.elevation3,
filter: 'drop-shadow(0px 16px 36px rgba(0, 0, 0, 0.5))',
}));
const HeaderText = styled.h1((props) => ({
...props.theme.body_bold_m,
+ fontSize: 16,
flex: 1,
}));
@@ -25,6 +26,7 @@ const DescriptionText = styled.h1((props) => ({
...props.theme.body_m,
color: props.theme.colors.white[200],
margin: 16,
+ fontSize: 16,
}));
const RowContainer = styled.div((props) => ({
@@ -32,7 +34,7 @@ const RowContainer = styled.div((props) => ({
flexDirection: 'row',
padding: '20px 16px 16px 16px',
alignItems: 'space-between',
- borderBottom: `1px solid ${props.theme.colors.background.elevation3}`,
+ borderBottom: `1px solid ${props.theme.colors.background.elevation6}`,
}));
const TickMarkButtonContainer = styled.div((props) => ({
@@ -110,6 +112,7 @@ interface Props {
description: string;
buttonText?: string;
secondButtonText?: string;
+ isWarningAlert?: boolean;
tickMarkButtonText?: string;
onButtonClick?: () => void;
onSecondButtonClick?: () => void;
@@ -118,7 +121,7 @@ interface Props {
}
function AlertMessage({
- onClose, title, description, buttonText, secondButtonText, tickMarkButtonText, onButtonClick, onSecondButtonClick, tickMarkButtonClick,
+ onClose, title, description, buttonText, secondButtonText, tickMarkButtonText, isWarningAlert, onButtonClick, onSecondButtonClick, tickMarkButtonClick,
}: Props) {
return (
<>
@@ -143,6 +146,7 @@ function AlertMessage({
)}
diff --git a/src/app/components/confirmBtcTransactionComponent/btcRecipientComponent.tsx b/src/app/components/confirmBtcTransactionComponent/btcRecipientComponent.tsx
deleted file mode 100644
index 3ef0c39f3..000000000
--- a/src/app/components/confirmBtcTransactionComponent/btcRecipientComponent.tsx
+++ /dev/null
@@ -1,136 +0,0 @@
-import TransferDetailView from '@components/transferDetailView';
-import OutputIcon from '@assets/img/transactions/output.svg';
-import { currencySymbolMap } from '@secretkeylabs/xverse-core/types/currency';
-import { StoreState } from '@stores/index';
-import BigNumber from 'bignumber.js';
-import { useTranslation } from 'react-i18next';
-import { NumericFormat } from 'react-number-format';
-import { useSelector } from 'react-redux';
-import styled from 'styled-components';
-
-const Container = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- background: props.theme.colors.background.elevation1,
- borderRadius: 12,
- padding: '16px 16px',
- justifyContent: 'center',
- marginBottom: 12,
-}));
-
-const RecipientTitleText = styled.h1((props) => ({
- ...props.theme.body_medium_m,
- color: props.theme.colors.white[200],
- marginBottom: 16,
-}));
-
-const RowContainer = styled.div({
- display: 'flex',
- flexDirection: 'row',
- width: '100%',
- alignItems: 'center',
-});
-
-const AddressContainer = styled.div({
- marginTop: 22,
-});
-
-const Icon = styled.img((props) => ({
- marginRight: props.theme.spacing(4),
- width: 32,
- height: 32,
- borderRadius: 30,
-}));
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.body_medium_m,
- color: props.theme.colors.white[200],
-}));
-
-const ValueText = styled.h1((props) => ({
- ...props.theme.body_medium_m,
- color: props.theme.colors.white[0],
-}));
-
-const SubValueText = styled.h1((props) => ({
- ...props.theme.body_m,
- fontSize: 12,
- color: props.theme.colors.white[400],
-}));
-
-const ColumnContainer = styled.div({
- display: 'flex',
- flexDirection: 'column',
- flex: 1,
- justifyContent: 'flex-end',
- alignItems: 'flex-end',
-});
-
-interface Props {
- recipientIndex?: number;
- address?: string;
- value: string;
- subValue?: BigNumber;
- totalRecipient?: number;
- icon: string;
- title: string;
- heading?: string;
-}
-function BtcRecipientComponent({
- recipientIndex,
- address,
- value,
- totalRecipient,
- subValue,
- icon,
- title,
- heading,
-}: Props) {
- const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
- const { fiatCurrency } = useSelector((state: StoreState) => state.walletState);
-
- const getFiatAmountString = (fiatAmount: BigNumber) => {
- if (fiatAmount) {
- if (fiatAmount.isLessThan(0.01)) {
- return `<${currencySymbolMap[fiatCurrency]}0.01 ${fiatCurrency}`;
- }
- return (
- {text}}
- />
- );
- }
- return '';
- };
-
- return (
-
- {recipientIndex && totalRecipient && (
- {`${t(
- 'RECIPIENT'
- )} ${recipientIndex}/${totalRecipient}`}
- )}
- {heading && {heading}}
-
-
- {title}
-
- {value}
- {subValue && {getFiatAmountString(subValue)}}
-
-
- {address && (
-
-
-
- )}
-
- );
-}
-
-export default BtcRecipientComponent;
diff --git a/src/app/components/confirmBtcTransactionComponent/index.tsx b/src/app/components/confirmBtcTransactionComponent/index.tsx
index 4339c4744..8636f73d4 100644
--- a/src/app/components/confirmBtcTransactionComponent/index.tsx
+++ b/src/app/components/confirmBtcTransactionComponent/index.tsx
@@ -8,7 +8,6 @@ import AssetIcon from '@assets/img/transactions/Assets.svg';
import SettingIcon from '@assets/img/dashboard/faders_horizontal.svg';
import TransactionSettingAlert from '@components/transactionSetting';
import { useSelector } from 'react-redux';
-import IconBitcoin from '@assets/img/dashboard/bitcoin_icon.svg';
import { StoreState } from '@stores/index';
import { signBtcTransaction } from '@secretkeylabs/xverse-core/transactions';
import { useMutation } from '@tanstack/react-query';
@@ -25,8 +24,10 @@ import {
ResponseError,
satsToBtc,
} from '@secretkeylabs/xverse-core';
+import RecipientComponent from '@components/recipientComponent';
+import TransferFeeView from '@components/transferFeeView';
+import { NumericFormat } from 'react-number-format';
import TransactionDetailComponent from '../transactionDetailComponent';
-import BtcRecipientComponent from './btcRecipientComponent';
const OuterContainer = styled.div`
display: flex;
@@ -113,6 +114,7 @@ interface Props {
assetDetail?: string;
isRestoreFundFlow?: boolean;
nonOrdinalUtxos?: BtcUtxoDataResponse [];
+ amount?: string;
onConfirmClick: (signedTxHex: string) => void;
onCancelClick: () => void;
onBackButtonClick: () => void;
@@ -128,6 +130,7 @@ function ConfirmBtcTransactionComponent({
assetDetail,
isRestoreFundFlow,
nonOrdinalUtxos,
+ amount,
onConfirmClick,
onCancelClick,
onBackButtonClick,
@@ -144,6 +147,7 @@ function ConfirmBtcTransactionComponent({
const [currentFee, setCurrentFee] = useState(fee);
const [error, setError] = useState('');
const [signedTx, setSignedTx] = useState(signedTxHex);
+ const [total, setTotal] = useState(new BigNumber(0));
const {
isLoading,
data,
@@ -216,6 +220,19 @@ function ConfirmBtcTransactionComponent({
}
}, [ordinalData]);
+ useEffect(() => {
+ const totalAmount: BigNumber = new BigNumber(0);
+ let sum: BigNumber = new BigNumber(0);
+ if (recipients) {
+ recipients.map((recipient) => {
+ sum = totalAmount.plus(recipient.amountSats);
+ return sum;
+ });
+ sum = sum?.plus(currentFee);
+ }
+ setTotal(sum);
+ }, [recipients]);
+
useEffect(() => {
if (signedNonOrdinalBtcSend) {
setCurrentFee(signedNonOrdinalBtcSend.fee);
@@ -247,6 +264,15 @@ function ConfirmBtcTransactionComponent({
onConfirmClick(signedTx);
};
+ const getAmountString = (amount: BigNumber, currency: string) => (
+
+ );
+
useEffect(() => {
if (recipients && txError) {
setOpenTransactionSettingModal(false);
@@ -281,69 +307,66 @@ function ConfirmBtcTransactionComponent({
}, [errorSigningNonOrdial]);
return (
- <>
-
- {!isGalleryOpen && (
+
+ {!isGalleryOpen && (
- )}
-
- {children}
-
- {t('CONFIRM_TRANSACTION.REVIEW_TRNSACTION')}
-
+ )}
+
+ {children}
+
+ {t('CONFIRM_TRANSACTION.REVIEW_TRNSACTION')}
+
- {ordinalTxUtxo ? (
-
+ ) : (
+ recipients?.map((recipient, index) => (
+
- ) : (
- recipients?.map((recipient, index) => (
-
- ))
- )}
+ ))
+ )}
-
-
-
-
-
-
- {error}
-
-
+
+
+
+
+
+
+
+ {error}
+
- >
+
);
}
diff --git a/src/app/components/confirmStxTransactionComponent/index.tsx b/src/app/components/confirmStxTransactionComponent/index.tsx
index fa7e24867..01c63b816 100644
--- a/src/app/components/confirmStxTransactionComponent/index.tsx
+++ b/src/app/components/confirmStxTransactionComponent/index.tsx
@@ -1,8 +1,6 @@
import { useTranslation } from 'react-i18next';
import styled from 'styled-components';
-import {
- ReactNode, useEffect, useState,
-} from 'react';
+import { ReactNode, useEffect, useState } from 'react';
import BigNumber from 'bignumber.js';
import ActionButton from '@components/button';
import SettingIcon from '@assets/img/dashboard/faders_horizontal.svg';
@@ -11,7 +9,11 @@ import { microstacksToStx, stxToMicrostacks } from '@secretkeylabs/xverse-core/c
import { StacksTransaction } from '@secretkeylabs/xverse-core/types';
import TransferFeeView from '@components/transferFeeView';
import {
- setFee, setNonce, getNonce, signMultiStxTransactions, signTransaction,
+ setFee,
+ setNonce,
+ getNonce,
+ signMultiStxTransactions,
+ signTransaction,
} from '@secretkeylabs/xverse-core';
import useWalletSelector from '@hooks/useWalletSelector';
import useNetworkSelector from '@hooks/useNetwork';
@@ -32,7 +34,7 @@ const Container = styled.div`
const ButtonContainer = styled.div((props) => ({
display: 'flex',
flexDirection: 'row',
- marginBottom: props.theme.spacing(20),
+ marginBottom: props.theme.spacing(12),
marginTop: props.theme.spacing(12),
marginLeft: props.theme.spacing(8),
marginRight: props.theme.spacing(8),
@@ -60,10 +62,6 @@ const ButtonText = styled.div((props) => ({
textAlign: 'center',
}));
-const TransferFeeContainer = styled.div((props) => ({
- marginBottom: props.theme.spacing(12),
-}));
-
const ButtonImage = styled.img((props) => ({
marginRight: props.theme.spacing(3),
alignSelf: 'center',
@@ -75,6 +73,23 @@ const SponsoredInfoText = styled.h1((props) => ({
color: props.theme.colors.white['400'],
}));
+const ReviewTransactionText = styled.h1((props) => ({
+ ...props.theme.headline_s,
+ color: props.theme.colors.white[0],
+ textAlign: 'left',
+}));
+
+const RequestedByText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[400],
+ marginTop: props.theme.spacing(4),
+ textAlign: 'left',
+}));
+
+const TitleContainer = styled.div((props) => ({
+ marginBottom: props.theme.spacing(16),
+}));
+
interface Props {
initialStxTransactions: StacksTransaction[];
loading: boolean;
@@ -82,6 +97,10 @@ interface Props {
onConfirmClick: (transactions: StacksTransaction[]) => void;
children: ReactNode;
isSponsored?: boolean;
+ isAsset?: boolean;
+ title?: string;
+ subTitle?: string;
+
}
function ConfirmStxTransationComponent({
@@ -89,15 +108,15 @@ function ConfirmStxTransationComponent({
loading,
isSponsored,
children,
+ isAsset,
+ title,
+ subTitle,
onConfirmClick,
onCancelClick,
}: Props) {
const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
const selectedNetwork = useNetworkSelector();
- const {
- selectedAccount,
- seedPhrase,
- } = useWalletSelector();
+ const { selectedAccount, seedPhrase } = useWalletSelector();
const [openTransactionSettingModal, setOpenTransactionSettingModal] = useState(false);
const [buttonLoading, setButtonLoading] = useState(loading);
@@ -160,21 +179,28 @@ function ConfirmStxTransationComponent({
return (
<>
+
+ {!isAsset && {title ?? t('REVIEW_TRNSACTION')}}
+ {subTitle && {subTitle}}
+
{children}
-
+
+ {initialStxTransactions[0]?.payload?.amount && (
-
-
+ )}
{!isSponsored && (
-
+
)}
{isSponsored && {t('SPONSORED_TX_INFO')}}
({
+ display: 'flex',
+ flexDirection: 'column',
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '12px 16px',
+ justifyContent: 'center',
+ marginBottom: 12,
+}));
+
+const TitleText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[200],
+}));
+
+const DescriptionText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ marginTop: props.theme.spacing(2),
+ color: props.theme.colors.white[0],
+}));
+
+const RowContainer = styled.div({
+ display: 'flex',
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'center',
+});
+
+interface Props {
+ memo: string;
+}
+
+function TransferMemoView({
+ memo,
+}: Props) {
+ const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
+
+ return (
+
+
+ {t('MEMO')}
+
+ { memo}
+
+ );
+}
+
+export default TransferMemoView;
diff --git a/src/app/components/infoContainer/index.tsx b/src/app/components/infoContainer/index.tsx
index 1ef1d73ca..653a4f9ed 100644
--- a/src/app/components/infoContainer/index.tsx
+++ b/src/app/components/infoContainer/index.tsx
@@ -2,12 +2,16 @@ import styled from 'styled-components';
import InfoIcon from '@assets/img/info.svg';
import WarningIcon from '@assets/img/Warning.svg';
-const Container = styled.div<{ type: 'Info' | 'Warning' | undefined }>((props) => ({
+interface ContainerProps {
+ type: 'Info' | 'Warning' | undefined;
+ showWarningBackground?: boolean;
+}
+const Container = styled.div((props) => ({
display: 'flex',
flexDirection: 'row',
borderRadius: 12,
alignItems: 'flex-start',
- backgroundColor: 'transparent',
+ backgroundColor: props.showWarningBackground ? 'rgba(211, 60, 60, 0.15)' : 'transparent',
padding: props.theme.spacing(8),
marginBottom: props.theme.spacing(6),
border: `1px solid ${
@@ -26,6 +30,11 @@ const BoldText = styled.h1((props) => ({
color: props.theme.colors.white['0'],
}));
+const RedirectText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white['0'],
+}));
+
const SubText = styled.h1((props) => ({
...props.theme.body_xs,
marginTop: props.theme.spacing(2),
@@ -38,15 +47,34 @@ const Text = styled.h1((props) => ({
lineHeight: 1.4,
}));
+const RedirectButton = styled.button((props) => ({
+ backgroundColor: 'transparent',
+ color: props.theme.colors.white['0'],
+ display: 'flex',
+ marginTop: 4,
+ justifyContent: 'flex-start',
+ alignItems: 'flex-start',
+}));
+
interface Props {
titleText?: string;
bodyText: string;
type?: 'Info' | 'Warning';
+ onClick?: () => void;
+ redirectText?: string;
+ showWarningBackground?: boolean;
}
-function InfoContainer({ titleText, bodyText, type }: Props) {
+function InfoContainer({
+ titleText,
+ bodyText,
+ type,
+ redirectText,
+ onClick,
+ showWarningBackground,
+}: Props) {
return (
-
+
{titleText ? (
@@ -55,7 +83,14 @@ function InfoContainer({ titleText, bodyText, type }: Props) {
{bodyText}
>
) : (
- {bodyText}
+ <>
+ {bodyText}
+ {redirectText && (
+
+ {`${redirectText} →`}
+
+ )}
+ >
)}
diff --git a/src/app/components/postCondition/ftPostConditionCard.tsx b/src/app/components/postCondition/ftPostConditionCard.tsx
index 414df8b78..83b5fed9c 100644
--- a/src/app/components/postCondition/ftPostConditionCard.tsx
+++ b/src/app/components/postCondition/ftPostConditionCard.tsx
@@ -17,6 +17,7 @@ function FtPostConditionCard({ postCondition, ftMetaData }: Props) {
);
}
diff --git a/src/app/components/postCondition/nftPostConditionCard.tsx b/src/app/components/postCondition/nftPostConditionCard.tsx
index 6a3b34144..fc5c0e286 100644
--- a/src/app/components/postCondition/nftPostConditionCard.tsx
+++ b/src/app/components/postCondition/nftPostConditionCard.tsx
@@ -1,4 +1,5 @@
import { PostCondition } from '@stacks/transactions';
+import AssetIcon from '@assets/img/transactions/Assets.svg';
import PostConditionsView from './postConditionView';
import { getAmountFromPostCondition } from './postConditionView/helper';
@@ -11,6 +12,7 @@ function NftPostConditionCard({ postCondition }: Props) {
);
}
diff --git a/src/app/components/postCondition/postConditionView/index.tsx b/src/app/components/postCondition/postConditionView/index.tsx
index 8d58889da..137fabb33 100644
--- a/src/app/components/postCondition/postConditionView/index.tsx
+++ b/src/app/components/postCondition/postConditionView/index.tsx
@@ -7,48 +7,21 @@ import {
NonFungibleConditionCode,
PostCondition,
} from '@stacks/transactions';
-import styled from 'styled-components';
import { useTranslation } from 'react-i18next';
-import Seperator from '@components/seperator';
-import { useContext } from 'react';
-import { ShowMoreContext } from '@components/transactionsRequests/ContractCallRequest';
-import RedirectAddressView from '@components/redirectAddressView';
+
+import TransferAmountComponent from '@components/transferAmountComponent';
import {
getNameFromPostCondition,
getSymbolFromPostCondition,
} from './helper';
-const MainContainer = styled.div({
- display: 'flex',
- flexDirection: 'column',
- width: '100%',
-});
-
-const PostConditionContainer = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- flex: 1,
- marginTop: props.theme.spacing(4),
-}));
-
-const Title = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- marginTop: 24,
- textTransform: 'uppercase',
-}));
-
-const TickerText = styled.h1((props) => ({
- ...props.theme.body_m,
- color: props.theme.colors.white['0'],
-}));
-
type Props = {
postCondition: PostCondition;
amount: string;
+ icon?: string;
};
-function PostConditionsView({ postCondition, amount }: Props) {
+function PostConditionsView({ postCondition, amount, icon }: Props) {
const { stxAddress } = useSelector((state: StoreState) => ({
...state.walletState,
}));
@@ -81,33 +54,21 @@ function PostConditionsView({ postCondition, amount }: Props) {
const address = addressToString(postCondition?.principal?.address!);
const isSending = address === stxAddress;
const isContractPrincipal = !!contractName || address.includes('.');
- const { showMore } = useContext(ShowMoreContext);
-
return (
-
-
- {`${
- isContractPrincipal ? t('CONTRACT') : isSending ? t('YOU') : t('ANOTHER_ADDRESS')
- } ${title}`}
-
-
- {`${amount} ${ticker}`}
- {name !== 'STX' && {name}}
- {showMore && (
- <>
-
-
- >
- )}
-
-
+
);
}
export default PostConditionsView;
diff --git a/src/app/components/postCondition/stxPostConditionCard.tsx b/src/app/components/postCondition/stxPostConditionCard.tsx
index e04471b8e..b03d416fb 100644
--- a/src/app/components/postCondition/stxPostConditionCard.tsx
+++ b/src/app/components/postCondition/stxPostConditionCard.tsx
@@ -1,4 +1,5 @@
import { PostCondition } from '@stacks/transactions';
+import IconStacks from '@assets/img/dashboard/stack_icon.svg';
import PostConditionsView from './postConditionView';
import { getAmountFromPostCondition } from './postConditionView/helper';
@@ -11,6 +12,7 @@ function StxPostConditionCard({ postCondition }: Props) {
);
}
diff --git a/src/app/components/recipientComponent/index.tsx b/src/app/components/recipientComponent/index.tsx
new file mode 100644
index 000000000..baf59d288
--- /dev/null
+++ b/src/app/components/recipientComponent/index.tsx
@@ -0,0 +1,213 @@
+import TransferDetailView from '@components/transferDetailView';
+import OutputIcon from '@assets/img/transactions/output.svg';
+import ArrowIcon from '@assets/img/transactions/ArrowDown.svg';
+import WalletIcon from '@assets/img/transactions/wallet.svg';
+import { currencySymbolMap } from '@secretkeylabs/xverse-core/types/currency';
+import BigNumber from 'bignumber.js';
+import { useTranslation } from 'react-i18next';
+import { NumericFormat } from 'react-number-format';
+import styled from 'styled-components';
+import { FungibleToken, getFiatEquivalent } from '@secretkeylabs/xverse-core';
+import TokenImage from '@components/tokenImage';
+import { CurrencyTypes } from '@utils/constants';
+import useWalletSelector from '@hooks/useWalletSelector';
+import { useEffect, useState } from 'react';
+import { getTicker } from '@utils/helper';
+
+const Container = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'column',
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '16px 16px',
+ justifyContent: 'center',
+ marginBottom: 12,
+}));
+
+const RecipientTitleText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[200],
+ marginBottom: 16,
+}));
+
+const RowContainer = styled.div({
+ display: 'flex',
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'flex-start',
+});
+
+const AddressContainer = styled.div({
+ marginTop: 12,
+});
+
+const Icon = styled.img((props) => ({
+ marginRight: props.theme.spacing(4),
+ width: 32,
+ height: 32,
+ borderRadius: 30,
+}));
+
+const DownArrowIcon = styled.img((props) => ({
+ width: 16,
+ height: 16,
+ marginTop: props.theme.spacing(4),
+ marginLeft: props.theme.spacing(4),
+ marginBottom: props.theme.spacing(4),
+}));
+
+const TitleText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[200],
+ textAlign: 'center',
+ marginTop: 5,
+}));
+
+const ValueText = styled.h1((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[0],
+}));
+
+const SubValueText = styled.h1((props) => ({
+ ...props.theme.body_m,
+ fontSize: 12,
+ color: props.theme.colors.white[400],
+}));
+
+const ColumnContainer = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+ flex: 1,
+ justifyContent: 'flex-end',
+ alignItems: 'flex-end',
+ paddingTop: 5,
+});
+
+const MultipleAddressContainer = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+});
+
+const TokenContainer = styled.div({
+ marginRight: 10,
+});
+
+interface Props {
+ address?: string;
+ value: string;
+ title: string;
+ currencyType: CurrencyTypes;
+ recipientIndex?: number;
+ totalRecipient?: number;
+ icon?: string;
+ fungibleToken?: FungibleToken;
+ heading?: string;
+ showSenderAddress?: boolean;
+
+}
+function RecipientComponent({
+ recipientIndex, address, value, totalRecipient, title, fungibleToken, icon, currencyType, heading, showSenderAddress,
+} : Props) {
+ const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
+ const [fiatAmount, setFiatAmount] = useState('0');
+ const {
+ stxBtcRate, btcFiatRate, fiatCurrency, ordinalsAddress
+ } = useWalletSelector();
+
+ useEffect(() => {
+ let amountInCurrency;
+ if (currencyType === 'FT') {
+ amountInCurrency = new BigNumber(value).multipliedBy(fungibleToken?.tokenFiatRate!);
+ if (amountInCurrency.isLessThan(0.01)) {
+ amountInCurrency = '0.01';
+ }
+ } else { amountInCurrency = getFiatEquivalent(Number(value), currencyType, stxBtcRate, btcFiatRate, fungibleToken); }
+ setFiatAmount(amountInCurrency);
+ }, [value]);
+
+ function getFtTicker() {
+ if (fungibleToken?.ticker) {
+ return fungibleToken?.ticker.toUpperCase();
+ } if (fungibleToken?.name) {
+ return getTicker(fungibleToken.name).toUpperCase();
+ } return '';
+ }
+
+ const getFiatAmountString = (fiatAmount: BigNumber) => {
+ if (fiatAmount) {
+ if (fiatAmount.isLessThan(0.01)) {
+ return `<${currencySymbolMap[fiatCurrency]}0.01 ${fiatCurrency}`;
+ }
+ return (
+ {text}}
+ />
+ );
+ }
+ return '';
+ };
+
+ return (
+
+ {recipientIndex && totalRecipient && totalRecipient !== 1 && (
+
+ {`${t(
+ 'RECIPIENT',
+ )} ${recipientIndex}/${totalRecipient}`}
+
+
+ )}
+ {heading && {heading}}
+
+ {icon ?
+ : (
+
+
+
+ )}
+ {title}
+ { currencyType === 'NFT' || currencyType === 'Ordinal' ? (
+
+ {value}
+
+ ) : (
+
+ {amount}}
+ />
+ {getFiatAmountString(new BigNumber(fiatAmount!))}
+
+ )}
+
+ {address && (
+
+ {showSenderAddress
+ ? (
+
+
+
+
+
+ )
+ : }
+
+ )}
+
+ );
+}
+
+export default RecipientComponent;
diff --git a/src/app/components/recipinetAddressView/index.tsx b/src/app/components/recipinetAddressView/index.tsx
deleted file mode 100644
index c7f5b7d8b..000000000
--- a/src/app/components/recipinetAddressView/index.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import { useTranslation } from 'react-i18next';
-import styled from 'styled-components';
-import ArrowSquareOut from '@assets/img/arrow_square_out.svg';
-import { getExplorerUrl } from '@utils/helper';
-import { useBnsName } from '@hooks/queries/useBnsName';
-import useNetworkSelector from '@hooks/useNetwork';
-
-const InfoContainer = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- marginTop: props.theme.spacing(12),
-}));
-
-const RowContainer = styled.div({
- display: 'flex',
- flexDirection: 'row',
-});
-
-const AddressContainer = styled.div({
- display: 'flex',
- flex: 1,
-});
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
-const ValueText = styled.h1((props) => ({
- ...props.theme.body_m,
- marginTop: props.theme.spacing(2),
- wordBreak: 'break-all',
-}));
-
-const AssociatedAddressText = styled.h1((props) => ({
- ...props.theme.body_m,
- marginTop: props.theme.spacing(2),
- wordBreak: 'break-all',
- color: props.theme.colors.white['400'],
-}));
-
-const ButtonImage = styled.img((props) => ({
- marginRight: props.theme.spacing(3),
- marginTop: props.theme.spacing(1),
-}));
-
-const ActionButton = styled.button((props) => ({
- display: 'flex',
- flexDirection: 'row',
- backgroundColor: 'transparent',
- marginLeft: props.theme.spacing(12),
-}));
-
-interface Props {
- recipient: string;
-}
-function RecipientAddressView({ recipient }: Props) {
- const selectedNetwork = useNetworkSelector();
- const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
- const bnsName = useBnsName(recipient, selectedNetwork);
- const handleOnPress = () => {
- window.open(getExplorerUrl(recipient));
- };
-
- return (
-
- {t('RECIPIENT_ADDRESS')}
- {bnsName}
-
-
- {bnsName ? {recipient} : {recipient}}
-
-
-
-
-
-
- );
-}
-
-export default RecipientAddressView;
diff --git a/src/app/components/redirectAddressView/index.tsx b/src/app/components/redirectAddressView/index.tsx
deleted file mode 100644
index edfa4d427..000000000
--- a/src/app/components/redirectAddressView/index.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import styled from 'styled-components';
-import GoToImage from '@assets/img/webInteractions/goto-explorer.svg';
-import { getExplorerUrl } from '@utils/helper';
-
-const InfoContainer = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- marginTop: props.theme.spacing(12),
-}));
-
-const RowContainer = styled.div({
- display: 'flex',
- flexDirection: 'row',
-});
-
-const AddressContainer = styled.div({
- display: 'flex',
- flex: 1,
-});
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
-const ValueText = styled.h1((props) => ({
- ...props.theme.body_m,
- marginTop: props.theme.spacing(2),
- wordBreak: 'break-all',
-}));
-
-const ButtonImage = styled.img((props) => ({
- marginRight: props.theme.spacing(3),
- marginTop: props.theme.spacing(1),
-}));
-
-const ActionButton = styled.button((props) => ({
- display: 'flex',
- flexDirection: 'row',
- backgroundColor: 'transparent',
- marginLeft: props.theme.spacing(12),
-}));
-
-interface Props {
- recipient: string;
- title?: string;
-}
-function RedirectAddressView({ recipient, title }: Props) {
- const handleOnPress = () => {
- window.open(getExplorerUrl(recipient));
- };
-
- return (
-
- {title}
-
-
- {recipient}
-
-
-
-
-
-
- );
-}
-
-export default RedirectAddressView;
diff --git a/src/app/components/sendForm/index.tsx b/src/app/components/sendForm/index.tsx
index cd5aea25e..856b8ca7e 100644
--- a/src/app/components/sendForm/index.tsx
+++ b/src/app/components/sendForm/index.tsx
@@ -438,16 +438,7 @@ function SendForm({
};
const buyCryptoMessage = balance === 0 && (currencyType === 'STX' || currencyType === 'BTC') && (
-
-
-
- {t('NO_FUNDS')}
-
- {t('BUY_CRYPTO')}
-
-
-
-
+
);
const checkIfEnableButton = () => {
diff --git a/src/app/components/tokenImage/index.tsx b/src/app/components/tokenImage/index.tsx
index 1e6724d0a..a382adff8 100644
--- a/src/app/components/tokenImage/index.tsx
+++ b/src/app/components/tokenImage/index.tsx
@@ -12,34 +12,43 @@ interface TokenImageProps {
token?: string;
loading?: boolean;
fungibleToken?: FungibleToken;
+ isSmallSize?: boolean;
}
-const TickerImage = styled.img({
- height: 44,
- width: 44,
-});
+interface ImageProps {
+ isSmallSize?: boolean;
+}
+interface TextProps {
+ isSmallSize?: boolean;
+}
+
+const TickerImage = styled.img((props) => ({
+ height: props.isSmallSize ? 32 : 44,
+ width: props.isSmallSize ? 32 : 44,
+ borderRadius: 30,
+}));
const LoaderImageContainer = styled.div({
flex: 0.5,
});
-const TickerIconContainer = styled.div((props) => ({
+const TickerIconContainer = styled.div((props) => ({
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
- height: 44,
- width: 44,
+ height: props.isSmallSize ? 32 : 44,
+ width: props.isSmallSize ? 32 : 44,
marginRight: props.theme.spacing(3),
borderRadius: props.theme.radius(2),
backgroundColor: props.color,
}));
-const TickerIconText = styled.h1((props) => ({
+const TickerIconText = styled.h1((props) => ({
...props.theme.body_bold_m,
color: props.theme.colors.white['0'],
textAlign: 'center',
wordBreak: 'break-all',
- fontSize: 13,
+ fontSize: props.isSmallSize ? 10 : 13,
}));
export default function TokenImage(props: TokenImageProps) {
@@ -47,6 +56,7 @@ export default function TokenImage(props: TokenImageProps) {
token,
loading,
fungibleToken,
+ isSmallSize,
} = props;
const getCoinIcon = useCallback(() => {
@@ -60,7 +70,7 @@ export default function TokenImage(props: TokenImageProps) {
if (fungibleToken) {
if (!loading) {
if (fungibleToken?.image) {
- return ;
+ return ;
}
let ticker = fungibleToken?.ticker;
if (!ticker && fungibleToken?.name) {
@@ -69,8 +79,8 @@ export default function TokenImage(props: TokenImageProps) {
const background = stc(ticker);
ticker = ticker && ticker.substring(0, 4);
return (
-
- {ticker}
+
+ {ticker}
);
}
@@ -80,7 +90,8 @@ export default function TokenImage(props: TokenImageProps) {
);
}
+
return (
-
+
);
}
diff --git a/src/app/components/topRow/index.tsx b/src/app/components/topRow/index.tsx
index 0a3f10726..24c0bd837 100644
--- a/src/app/components/topRow/index.tsx
+++ b/src/app/components/topRow/index.tsx
@@ -36,7 +36,6 @@ const AnimatedBackButton = styled(BackButton)`
}
`;
-
interface Props {
title: string;
onClick: () => void;
@@ -44,12 +43,12 @@ interface Props {
function TopRow({ title, onClick }: Props) {
return (
-
-
-
-
- {title}
-
+
+
+
+
+ {title}
+
);
}
diff --git a/src/app/components/transactionDetailComponent/index.tsx b/src/app/components/transactionDetailComponent/index.tsx
index 166c35a2e..8d70c5f15 100644
--- a/src/app/components/transactionDetailComponent/index.tsx
+++ b/src/app/components/transactionDetailComponent/index.tsx
@@ -48,11 +48,12 @@ interface Props {
title: string;
subTitle?: string;
value?: string;
+ description?: string;
subValue?: BigNumber;
}
function TransactionDetailComponent({
- title, subTitle, value, subValue,
+ title, subTitle, value, subValue, description,
}: Props) {
const {
fiatCurrency,
@@ -83,6 +84,7 @@ function TransactionDetailComponent({
{value && {value}}
+ {description && {description}}
{subValue && {getFiatAmountString(subValue)}}
diff --git a/src/app/components/transactionsRequests/ContractCallRequest.tsx b/src/app/components/transactionsRequests/ContractCallRequest.tsx
index a3e79c200..330483acc 100644
--- a/src/app/components/transactionsRequests/ContractCallRequest.tsx
+++ b/src/app/components/transactionsRequests/ContractCallRequest.tsx
@@ -22,7 +22,6 @@ import {
Coin,
extractFromPayload,
} from '@secretkeylabs/xverse-core';
-import RedirectAddressView from '@components/redirectAddressView';
import { useNavigate } from 'react-router-dom';
import { Args, ContractFunction } from '@secretkeylabs/xverse-core/types/api/stacks/transaction';
import FtPostConditionCard from '@components/postCondition/ftPostConditionCard';
@@ -31,6 +30,7 @@ import AccountHeaderComponent from '@components/accountHeader';
import useOnOriginTabClose from '@hooks/useOnTabClosed';
import InfoContainer from '@components/infoContainer';
import useNetworkSelector from '@hooks/useNetwork';
+import TransactionDetailComponent from '@components/transactionDetailComponent';
import finalizeTxSignature from './utils';
const PostConditionContainer = styled.div((props) => ({
@@ -118,31 +118,6 @@ const DappTitle = styled.h2((props) => ({
marginTop: 4,
}));
-const Title = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
- marginTop: props.theme.spacing(12),
-}));
-
-const Value = styled.h1((props) => ({
- ...props.theme.body_m,
- color: props.theme.colors.white['0'],
- marginTop: props.theme.spacing(2),
-}));
-
-const Detail = styled.h1((props) => ({
- ...props.theme.body_xs,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
- marginTop: props.theme.spacing(2),
-}));
-
-const FuncArgContainer = styled.div({
- display: 'flex',
- flexDirection: 'column',
-});
-
const Container = styled.div((props) => ({
display: 'flex',
flexDirection: 'column',
@@ -195,7 +170,6 @@ export default function ContractCallRequest(props: ContractCallRequestProps) {
const [hasTabClosed, setHasTabClosed] = useState(false);
const { t } = useTranslation('translation');
const [isShowMore, setIsShowMore] = useState(false);
- const Illustration = headerImageMapping[request.functionName ?? ''];
useOnOriginTabClose(
tabId,
@@ -217,9 +191,6 @@ export default function ContractCallRequest(props: ContractCallRequestProps) {
);
- const renderContractAddress = isShowMore && (
-
- );
type ArgToView = { name: string; value: string; type: any };
const getFunctionArgs = (): Array => {
const args: Array = [];
@@ -257,17 +228,16 @@ export default function ContractCallRequest(props: ContractCallRequestProps) {
return args;
};
+ const truncateFunctionArgsView = (value: string) => `${value.substring(0, 12)}...${value.substring(
+ value.length - 12,
+ value.length,
+ )}`;
+
const functionArgsView = () => {
const args = getFunctionArgs();
- if (isShowMore) {
- return args.map((arg, index) => (
-
- {arg.name}
- {arg.value}
- {arg.type}
-
- ));
- }
+ return args.map((arg, index) => (
+ 20 ? truncateFunctionArgsView(arg.value) : arg.value} description={arg.type} />
+ ));
};
const showSponsoredTransactionTag = (
@@ -362,25 +332,16 @@ export default function ContractCallRequest(props: ContractCallRequestProps) {
onConfirmClick={confirmCallback}
onCancelClick={cancelCallback}
loading={false}
+ title={request.functionName}
+ subTitle={`Requested by ${request.appDetails?.name}`}
>
<>
-
-
- {request.functionName}
- {`Requested by ${request.appDetails?.name}`}
-
{hasTabClosed && }
-
{postConditionAlert}
{request.sponsored && showSponsoredTransactionTag}
{renderPostConditionsCard()}
-
- {t('CONTRACT_CALL_REQUEST.FUNCTION')}
- {request?.functionName}
-
+
{functionArgsView()}
- {renderContractAddress}
- {showMoreButton}
>
>
diff --git a/src/app/components/transactionsRequests/ContractDeployTransaction.tsx b/src/app/components/transactionsRequests/ContractDeployTransaction.tsx
index 7d3a79818..b7678dde2 100644
--- a/src/app/components/transactionsRequests/ContractDeployTransaction.tsx
+++ b/src/app/components/transactionsRequests/ContractDeployTransaction.tsx
@@ -2,7 +2,6 @@ import ConfirmStxTransationComponent from '@components/confirmStxTransactionComp
import { PostCondition, StacksTransaction } from '@stacks/transactions';
import styled from 'styled-components';
import DownloadImage from '@assets/img/webInteractions/ArrowLineDown.svg';
-import DeployContractImage from '@assets/img/webInteractions/deploy_contract.svg';
import { useTranslation } from 'react-i18next';
import { useState } from 'react';
import StxPostConditionCard from '@components/postCondition/stxPostConditionCard';
@@ -14,55 +13,24 @@ import AccountHeaderComponent from '@components/accountHeader';
import useOnOriginTabClose from '@hooks/useOnTabClosed';
import InfoContainer from '@components/infoContainer';
import useNetworkSelector from '@hooks/useNetwork';
+import TransactionDetailComponent from '@components/transactionDetailComponent';
import finalizeTxSignature from './utils';
-const Container = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- alignItems: 'center',
- justifyContent: 'center',
- marginBottom: props.theme.spacing(12),
-}));
-
-const TopImage = styled.img({
- width: 88,
- height: 88,
-});
-
-const FunctionTitle = styled.h1((props) => ({
- ...props.theme.headline_s,
- color: props.theme.colors.white['0'],
- marginTop: 16,
-}));
-
const Title = styled.h1((props) => ({
...props.theme.headline_category_s,
color: props.theme.colors.white['400'],
textTransform: 'uppercase',
}));
-const Value = styled.h1((props) => ({
- ...props.theme.body_m,
- color: props.theme.colors.white['0'],
- marginTop: props.theme.spacing(2),
-}));
-
-const ColumnContainer = styled.div((props) => ({
- display: 'flex',
- marginTop: props.theme.spacing(6),
- paddingTop: props.theme.spacing(12),
- paddingBottom: props.theme.spacing(12),
- borderTop: `0.5px solid ${props.theme.colors.background.elevation3}`,
- borderBottom: `0.5px solid ${props.theme.colors.background.elevation3}`,
- flexDirection: 'column',
-}));
-
const DownloadContainer = styled.div((props) => ({
display: 'flex',
- marginTop: props.theme.spacing(13.5),
flexDirection: 'row',
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '12px 16px',
justifyContent: 'center',
alignItems: 'center',
+ marginBottom: 12,
}));
const PostConditionContainer = styled.div((props) => ({
@@ -235,32 +203,26 @@ export default function ContractDeployRequest(props: ContractDeployRequestProps)
onCancelClick={cancelCallback}
loading={loaderForBroadcastingTx}
isSponsored={sponsored}
+ title={t('DEPLOY_CONTRACT_REQUEST.DEPLOY_CONTRACT')}
>
-
-
- {t('DEPLOY_CONTRACT_REQUEST.DEPLOY_CONTRACT')}
-
{hasTabClosed && }
{postConditionAlert}
{sponsored && showSponsoredTransactionTag}
{unsignedTx?.postConditions?.values?.map((postCondition) => (
))}
-
- {t('DEPLOY_CONTRACT_REQUEST.CONTRACT_NAME')}
- {contractName}
-
- {t('DEPLOY_CONTRACT_REQUEST.FUNCTION')}
-
-
-
-
-
+
+
+ {t('DEPLOY_CONTRACT_REQUEST.FUNCTION')}
+
+
+
+
>
);
diff --git a/src/app/components/transferAmountComponent/index.tsx b/src/app/components/transferAmountComponent/index.tsx
index bfaf08ace..e22fc6da4 100644
--- a/src/app/components/transferAmountComponent/index.tsx
+++ b/src/app/components/transferAmountComponent/index.tsx
@@ -1,16 +1,11 @@
import styled from 'styled-components';
import DropDownIcon from '@assets/img/transactions/dropDownIcon.svg';
-import AddressIcon from '@assets/img/transactions/address.svg';
import { useTranslation } from 'react-i18next';
-import { NumericFormat } from 'react-number-format';
-import { currencySymbolMap } from '@secretkeylabs/xverse-core/types/currency';
-import { useSelector } from 'react-redux';
-import BigNumber from 'bignumber.js';
import {
animated, config, useSpring,
} from '@react-spring/web';
-import { StoreState } from '@stores/index';
import TransferDetailView from '@components/transferDetailView';
+import { useState } from 'react';
const Container = styled.div((props) => ({
display: 'flex',
@@ -61,6 +56,13 @@ interface ColumnProps {
}
const ColumnContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: props.isExpanded ? 'column' : 'row',
+ justifyContent: 'flex-end',
+ alignItems: props.isExpanded ? 'flex-end' : 'center',
+}));
+
+const ExpandedColumnContainer = styled.div((props) => ({
display: 'flex',
flexDirection: props.isExpanded ? 'column' : 'row',
flex: 1,
@@ -75,6 +77,11 @@ const RowContainer = styled.div({
alignItems: 'center',
});
+const TitleContainer = styled.div({
+ display: 'flex',
+ flex: 1,
+});
+
const ExpandedContainer = styled(animated.div)({
display: 'flex',
flexDirection: 'column',
@@ -91,30 +98,27 @@ const Button = styled.button((props) => ({
interface Props {
title: string;
- address: string;
description?: string;
value: string;
- subValue: string;
- icon: string;
- isExpanded?: boolean;
- onArrowClick: () => void;
+ address?: string;
+ subTitle?: string;
+ subValue?: string;
+ icon?: string;
}
function TransferAmountComponent({
- title, address, value, subValue, description, icon, isExpanded = false, onArrowClick,
+ title, address, value, subValue, description, icon, subTitle,
}: Props) {
const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
- const {
- fiatCurrency,
- } = useSelector((state: StoreState) => state.walletState);
+ const [isExpanded, setIsExpanded] = useState(false);
const slideInStyles = useSpring({
config: { ...config.gentle, duration: 400 },
from: { opacity: 0, height: 0 },
to: {
opacity: isExpanded ? 1 : 0,
- height: isExpanded ? 80 : 0,
+ height: isExpanded ? 90 : 0,
},
});
@@ -123,37 +127,23 @@ function TransferAmountComponent({
config: { ...config.stiff },
});
- const getFiatAmountString = (fiatAmount: BigNumber) => {
- if (fiatAmount) {
- if (fiatAmount.isLessThan(0.01)) {
- return `<${currencySymbolMap[fiatCurrency]}0.01 ${fiatCurrency}`;
- }
- return (
- {text}}
- />
- );
- }
- return '';
- };
-
const renderAmount = value && (
<>
{value}
- {isExpanded && {getFiatAmountString(subValue)}}
+ {isExpanded && subValue && {subValue}}
>
);
+ const onArrowClick = () => {
+ setIsExpanded(!isExpanded);
+ };
+
return (
- {icon && !isExpanded && }
- {title}
+
+ {title}
+
{!isExpanded && renderAmount}
diff --git a/src/app/components/transferAmountView/index.tsx b/src/app/components/transferAmountView/index.tsx
deleted file mode 100644
index bc6e9f5ae..000000000
--- a/src/app/components/transferAmountView/index.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import useWalletSelector from '@hooks/useWalletSelector';
-import { FungibleToken } from '@secretkeylabs/xverse-core';
-import { getFiatEquivalent } from '@secretkeylabs/xverse-core/transactions';
-import { getTicker } from '@utils/helper';
-import BigNumber from 'bignumber.js';
-import { useEffect, useState } from 'react';
-import { useTranslation } from 'react-i18next';
-import { NumericFormat } from 'react-number-format';
-import styled from 'styled-components';
-
-const SendAmountContainer = styled.div({
- display: 'flex',
- flexDirection: 'column',
- justifyContent: 'center',
- alignItems: 'center',
-});
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
-const AmountText = styled.h1((props) => ({
- ...props.theme.headline_category_m,
- textTransform: 'uppercase',
- fontSize: 28,
-}));
-
-const FiatAmountText = styled.h1((props) => ({
- ...props.theme.body_m,
- color: props.theme.colors.white['400'],
-}));
-
-interface Props {
- amount: BigNumber;
- currency : string;
- fungibleToken?: FungibleToken
-}
-
-function TransferAmountView({ amount, currency, fungibleToken }: Props) {
- const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
- const [fiatAmount, setFiatAmount] = useState('0');
- const {
- stxBtcRate, btcFiatRate, fiatCurrency,
- } = useWalletSelector();
-
- function getFtTicker() {
- if (fungibleToken?.ticker) {
- return fungibleToken?.ticker.toUpperCase();
- } if (fungibleToken?.name) {
- return getTicker(fungibleToken.name).toUpperCase();
- } return '';
- }
-
- useEffect(() => {
- let amountInCurrency;
- if (currency === 'FT') {
- amountInCurrency = new BigNumber(amount).multipliedBy(fungibleToken?.tokenFiatRate!);
- if (amountInCurrency.isLessThan(0.01)) {
- amountInCurrency = '0.01';
- }
- } else { amountInCurrency = getFiatEquivalent(Number(amount), currency, new BigNumber(stxBtcRate), new BigNumber(btcFiatRate), fungibleToken); }
- setFiatAmount(amountInCurrency);
- }, [amount]);
-
- return (
-
- {t('INDICATION')}
- {value}}
- />
- {`~ $ ${fiatAmount} ${fiatCurrency}`}
-
- );
-}
-
-export default TransferAmountView;
diff --git a/src/app/components/transferDetailView/index.tsx b/src/app/components/transferDetailView/index.tsx
index cee092486..6d388b2f5 100644
--- a/src/app/components/transferDetailView/index.tsx
+++ b/src/app/components/transferDetailView/index.tsx
@@ -47,7 +47,7 @@ const ColumnContainer = styled.div({
});
interface Props {
- icon: string;
+ icon?: string;
title?: string;
amount?: string;
children?: ReactNode;
@@ -61,7 +61,7 @@ function TransferDetailView({
}: Props) {
return (
-
+ {icon && }
{amount ? (
{amount}
diff --git a/src/app/components/transferFeeView/index.tsx b/src/app/components/transferFeeView/index.tsx
index 1a96130bd..777b6f222 100644
--- a/src/app/components/transferFeeView/index.tsx
+++ b/src/app/components/transferFeeView/index.tsx
@@ -1,4 +1,4 @@
-import { getBtcFiatEquivalent } from '@secretkeylabs/xverse-core/currency';
+import { getBtcFiatEquivalent, getFiatEquivalent } from '@secretkeylabs/xverse-core';
import { currencySymbolMap } from '@secretkeylabs/xverse-core/types/currency';
import { StoreState } from '@stores/index';
import BigNumber from 'bignumber.js';
@@ -10,43 +10,52 @@ import styled from 'styled-components';
const RowContainer = styled.div((props) => ({
display: 'flex',
flexDirection: 'row',
- marginTop: props.theme.spacing(8),
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '12px 16px',
+ justifyContent: 'center',
+ marginBottom: 12,
}));
const FeeText = styled.h1((props) => ({
- ...props.theme.body_m,
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[0],
}));
const FeeTitleContainer = styled.div({
display: 'flex',
- flex: 1,
+ flexDirection: 'column',
});
const FeeContainer = styled.div({
display: 'flex',
flexDirection: 'column',
+ flex: 1,
alignItems: 'flex-end',
});
const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[200],
}));
const FiatAmountText = styled.h1((props) => ({
- ...props.theme.body_xs,
- color: props.theme.colors.white['400'],
+ ...props.theme.body_m,
+ fontSize: 12,
+ color: props.theme.colors.white[400],
}));
interface Props {
fee: BigNumber;
currency: string;
+ title?: string;
}
-function TransferFeeView({ fee, currency }: Props) {
+function TransferFeeView({ fee, currency, title }: Props) {
const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
- const { btcFiatRate, fiatCurrency } = useSelector((state: StoreState) => state.walletState);
-
+ const { btcFiatRate, stxBtcRate, fiatCurrency } = useSelector(
+ (state: StoreState) => state.walletState,
+ );
+ const fiatRate = getFiatEquivalent(Number(fee), currency, stxBtcRate, btcFiatRate);
const getFiatAmountString = (fiatAmount: BigNumber) => {
if (fiatAmount) {
if (fiatAmount.isLessThan(0.01)) {
@@ -69,12 +78,16 @@ function TransferFeeView({ fee, currency }: Props) {
return (
- {t('FEES')}
+ {title ?? t('FEES')}
{`${fee.toString()} ${currency}`}
- {getFiatAmountString(getBtcFiatEquivalent(new BigNumber(fee), btcFiatRate))}
+ {getFiatAmountString(
+ currency === 'SATS'
+ ? getBtcFiatEquivalent(new BigNumber(fee), btcFiatRate)
+ : new BigNumber(fiatRate!)
+ )}
diff --git a/src/app/hooks/useSignatureRequest.ts b/src/app/hooks/useSignatureRequest.ts
index 4e1ed3c8f..53d487644 100644
--- a/src/app/hooks/useSignatureRequest.ts
+++ b/src/app/hooks/useSignatureRequest.ts
@@ -3,12 +3,19 @@ import {
signMessage,
signStructuredDataMessage,
} from '@secretkeylabs/xverse-core/connect/signature';
+import {
+ SignaturePayload,
+} from '@stacks/connect';
import {
ChainID, ClarityValue, deserializeCV, TupleCV,
} from '@stacks/transactions';
import { decodeToken } from 'jsontokens';
import { useCallback } from 'react';
import { useLocation } from 'react-router-dom';
+import {
+ SignMessagePayload,
+} from 'sats-connect';
+import { signBip322Message } from '@secretkeylabs/xverse-core/connect/bip322Signature';
import useWalletSelector from './useWalletSelector';
export type SignatureMessageType = 'utf8' | 'structured';
@@ -32,27 +39,32 @@ export function isSignatureMessageType(messageType: unknown): messageType is Sig
return typeof messageType === 'string' && ['utf8', 'structured'].includes(messageType);
}
+export function isSignBip322Request(
+ requestPayload: SignMessagePayload | SignaturePayload,
+): requestPayload is SignMessagePayload {
+ return (requestPayload as SignMessagePayload).address !== undefined;
+}
+
function useSignatureRequest() {
const { search } = useLocation();
const params = new URLSearchParams(search);
- const requestToken = params.get('request') ?? '';
- const request = decodeToken(requestToken);
- const messageType = params.get('messageType');
+ const requestToken = params.get('request') || params.get('signMessageRequest');
+ const request = decodeToken(requestToken as string);
+ const messageType = params.get('messageType') || '';
const tabId = params.get('tabId') ?? '0';
return {
payload: request.payload as any,
- request: requestToken,
- domain: request.payload.domain ? deserializeCV(Buffer.from(request.payload.domain, 'hex')) : null,
+ isSignMessageBip322: isSignBip322Request(request.payload as any),
+ request: requestToken as string,
+ domain: request.payload.domain
+ ? deserializeCV(Buffer.from(request.payload.domain, 'hex'))
+ : null,
messageType: messageType as SignatureMessageType,
tabId,
};
}
export function useSignMessage(messageType: SignatureMessageType) {
- const {
- selectedAccount,
- seedPhrase,
- network,
- } = useWalletSelector();
+ const { selectedAccount, seedPhrase, network } = useWalletSelector();
return useCallback(
async ({ message, domain }: { message: string | ClarityValue; domain?: TupleCV }) => {
if (!selectedAccount) return null;
@@ -71,4 +83,15 @@ export function useSignMessage(messageType: SignatureMessageType) {
);
}
+export function useSignBip322Message(message: string, address: string) {
+ const { accountsList, seedPhrase, network } = useWalletSelector();
+ return useCallback(async () => signBip322Message({
+ accounts: accountsList,
+ message,
+ signatureAddress: address,
+ seedPhrase,
+ network: network.type,
+ }), []);
+}
+
export default useSignatureRequest;
diff --git a/src/app/routes/index.tsx b/src/app/routes/index.tsx
index 2315d8e8a..9ae112896 100644
--- a/src/app/routes/index.tsx
+++ b/src/app/routes/index.tsx
@@ -183,15 +183,15 @@ const router = createHashRouter([
element: ,
},
{
- path: 'settings/restore-funds',
+ path: 'restore-funds',
element: ,
},
{
- path: 'settings/restore-funds/btc',
+ path: 'recover-btc',
element: ,
},
{
- path: 'settings/restore-funds/ordinals',
+ path: 'recover-ordinals',
element: ,
},
{
diff --git a/src/app/screens/confirmBtcTransaction/index.tsx b/src/app/screens/confirmBtcTransaction/index.tsx
index b29dbe8c4..6b9351676 100644
--- a/src/app/screens/confirmBtcTransaction/index.tsx
+++ b/src/app/screens/confirmBtcTransaction/index.tsx
@@ -8,6 +8,12 @@ import useWalletSelector from '@hooks/useWalletSelector';
import ConfirmBtcTransactionComponent from '@components/confirmBtcTransactionComponent';
import styled from 'styled-components';
import { saveTimeForNonOrdinalTransferTransaction } from '@utils/localStorage';
+import InfoContainer from '@components/infoContainer';
+import { useTranslation } from 'react-i18next';
+import useOrdinalsByAddress from '@hooks/useOrdinalsByAddress';
+import useNonOrdinalUtxos from '@hooks/useNonOrdinalUtxo';
+import AlertMessage from '@components/alertMessage';
+import { Recipient } from '@secretkeylabs/xverse-core/transactions/btc';
import useBtcClient from '@hooks/useBtcClient';
const BottomBarContainer = styled.h1((props) => ({
@@ -16,11 +22,18 @@ const BottomBarContainer = styled.h1((props) => ({
function ConfirmBtcTransaction() {
const navigate = useNavigate();
+ const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
+ const { network, ordinalsAddress, btcAddress } = useWalletSelector();
const btcClient = useBtcClient();
- const { ordinalsAddress } = useWalletSelector();
const [recipientAddress, setRecipientAddress] = useState('');
+ const [signedTx, setSignedTx] = useState('');
+ const [showOrdinalsDetectedAlert, setShowOrdinalsDetectedAlert] = useState(false);
const location = useLocation();
const { refetch } = useBtcWalletData();
+ const {
+ ordinals: ordinalsInBtc,
+ } = useOrdinalsByAddress(btcAddress);
+ const { unspentUtxos: withdrawOridnalsUtxos } = useNonOrdinalUtxos();
const {
fee, amount, signedTxHex, recipient, isRestoreFundFlow, unspentUtxos,
} = location.state;
@@ -38,9 +51,16 @@ function ConfirmBtcTransaction() {
error: errorBtcOrdinalTransaction,
data: btcOrdinalTxBroadcastData,
mutate: broadcastOrdinalTransaction,
- } = useMutation(
- async ({ signedTx }) => btcClient.sendRawTransaction(signedTx),
- );
+} = useMutation(
+ async ({ signedTx }) => btcClient.sendRawTransaction(signedTx),
+);
+ const onClick = () => {
+ navigate('/recover-ordinals');
+ };
+
+ const onContinueButtonClick = () => {
+ mutate({ signedTx });
+ };
useEffect(() => {
if (errorBtcOrdinalTransaction) {
@@ -107,9 +127,10 @@ function ConfirmBtcTransaction() {
const handleOnConfirmClick = (txHex: string) => {
if (isRestoreFundFlow) {
broadcastOrdinalTransaction({ signedTx: txHex });
- } else {
- mutate({ signedTx: txHex });
- }
+ } else if (ordinalsInBtc && ordinalsInBtc.length > 0) {
+ setSignedTx(txHex);
+ setShowOrdinalsDetectedAlert(true);
+ } else mutate({ signedTx: txHex });
};
const goBackToScreen = () => {
@@ -124,19 +145,49 @@ function ConfirmBtcTransaction() {
});
}
};
+
+ const onClosePress = () => {
+ setShowOrdinalsDetectedAlert(false);
+ };
+
return (
<>
+ {showOrdinalsDetectedAlert && (
+
+ )}
+
+ amount={amount}
+ >
+ {ordinalsInBtc && ordinalsInBtc.length > 0 && (
+
+ )}
+
diff --git a/src/app/screens/confirmFtTransaction/index.tsx b/src/app/screens/confirmFtTransaction/index.tsx
index e7c39ae47..113d1cb9d 100644
--- a/src/app/screens/confirmFtTransaction/index.tsx
+++ b/src/app/screens/confirmFtTransaction/index.tsx
@@ -1,40 +1,19 @@
import { useTranslation } from 'react-i18next';
-import styled from 'styled-components';
import { useMutation } from '@tanstack/react-query';
import { useEffect } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
import { StacksTransaction } from '@secretkeylabs/xverse-core/types';
import { broadcastSignedTransaction } from '@secretkeylabs/xverse-core/transactions';
import BottomBar from '@components/tabBar';
-import RecipientAddressView from '@components/recipinetAddressView';
-import TransferAmountView from '@components/transferAmountView';
import ConfirmStxTransationComponent from '@components/confirmStxTransactionComponent';
import TopRow from '@components/topRow';
-import BigNumber from 'bignumber.js';
import useNetworkSelector from '@hooks/useNetwork';
+import RecipientComponent from '@components/recipientComponent';
+import TransactionDetailComponent from '@components/transactionDetailComponent';
+import TransferMemoView from '@components/confirmStxTransactionComponent/transferMemoView';
import useStxWalletData from '@hooks/queries/useStxWalletData';
import useWalletSelector from '@hooks/useWalletSelector';
-const InfoContainer = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- marginTop: props.theme.spacing(12),
- paddingBottom: props.theme.spacing(12),
- borderBottom: `1px solid ${props.theme.colors.background.elevation3}`,
-}));
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
-const ValueText = styled.h1((props) => ({
- ...props.theme.body_m,
- marginTop: props.theme.spacing(2),
- wordBreak: 'break-all',
-}));
-
function ConfirmFtTransaction() {
const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
const navigate = useNavigate();
@@ -112,18 +91,15 @@ function ConfirmFtTransaction() {
onConfirmClick={handleOnConfirmClick}
onCancelClick={handleBackButtonClick}
>
-
-
-
- {t('NETWORK')}
- {network.type}
-
- {!!memo && (
-
- {t('MEMO')}
- {memo}
-
- )}
+
+
+ {memo && }
diff --git a/src/app/screens/confirmNftTransaction/index.tsx b/src/app/screens/confirmNftTransaction/index.tsx
index 601ab9c15..73c75c79c 100644
--- a/src/app/screens/confirmNftTransaction/index.tsx
+++ b/src/app/screens/confirmNftTransaction/index.tsx
@@ -6,15 +6,16 @@ import { useLocation, useNavigate, useParams } from 'react-router-dom';
import { StacksTransaction } from '@secretkeylabs/xverse-core/types';
import { broadcastSignedTransaction } from '@secretkeylabs/xverse-core/transactions';
import ArrowLeft from '@assets/img/dashboard/arrow_left.svg';
-import Seperator from '@components/seperator';
import BottomBar from '@components/tabBar';
-import RecipientAddressView from '@components/recipinetAddressView';
+import AssetIcon from '@assets/img/transactions/Assets.svg';
import ConfirmStxTransationComponent from '@components/confirmStxTransactionComponent';
import useNftDataSelector from '@hooks/useNftDataSelector';
import NftImage from '@screens/nftDashboard/nftImage';
import AccountHeaderComponent from '@components/accountHeader';
import TopRow from '@components/topRow';
import useNetworkSelector from '@hooks/useNetwork';
+import RecipientComponent from '@components/recipientComponent';
+import TransactionDetailComponent from '@components/transactionDetailComponent';
import useWalletSelector from '@hooks/useWalletSelector';
import useStxWalletData from '@hooks/queries/useStxWalletData';
@@ -31,18 +32,6 @@ const ScrollContainer = styled.div`
margin: auto;
`;
-const InfoContainer = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- marginTop: props.theme.spacing(12),
-}));
-
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
const ButtonContainer = styled.div((props) => ({
display: 'flex',
flexDirection: 'row',
@@ -108,10 +97,11 @@ const NFtContainer = styled.div((props) => ({
marginBottom: props.theme.spacing(6),
}));
-const NftTitleText = styled.h1((props) => ({
+const ReviewTransactionText = styled.h1((props) => ({
...props.theme.headline_s,
- color: props.theme.colors.white['0'],
- textAlign: 'center',
+ color: props.theme.colors.white[0],
+ marginBottom: props.theme.spacing(16),
+ textAlign: 'center'
}));
function ConfirmNftTransaction() {
@@ -171,13 +161,6 @@ function ConfirmNftTransaction() {
}
}, [txError]);
- const networkInfoSection = (
-
- {t('NETWORK')}
- {network.type}
-
- );
-
const handleOnConfirmClick = (txs: StacksTransaction[]) => {
mutate({ signedTx: txs[0] });
};
@@ -208,20 +191,24 @@ function ConfirmNftTransaction() {
loading={isLoading}
onConfirmClick={handleOnConfirmClick}
onCancelClick={handleOnCancelClick}
+ isAsset
>
- {t('INDICATION')}
-
- {nft?.token_metadata.name}
+ {t('REVIEW_TRNSACTION')}
-
- {networkInfoSection}
-
+
+
{!isGalleryOpen && }
diff --git a/src/app/screens/confirmStxTransaction/index.tsx b/src/app/screens/confirmStxTransaction/index.tsx
index b40002fc0..a7d4d54aa 100644
--- a/src/app/screens/confirmStxTransaction/index.tsx
+++ b/src/app/screens/confirmStxTransaction/index.tsx
@@ -7,43 +7,25 @@ import { useLocation, useNavigate } from 'react-router-dom';
import { getStxFiatEquivalent, microstacksToStx } from '@secretkeylabs/xverse-core/currency';
import { StacksTransaction, TokenTransferPayload } from '@secretkeylabs/xverse-core/types';
import { addressToString, broadcastSignedTransaction } from '@secretkeylabs/xverse-core/transactions';
-import Seperator from '@components/seperator';
+import IconStacks from '@assets/img/dashboard/stack_icon.svg';
import BottomBar from '@components/tabBar';
-import RecipientAddressView from '@components/recipinetAddressView';
-import TransferAmountView from '@components/transferAmountView';
import TopRow from '@components/topRow';
import AccountHeaderComponent from '@components/accountHeader';
import finalizeTxSignature from '@components/transactionsRequests/utils';
import InfoContainer from '@components/infoContainer';
import useOnOriginTabClose from '@hooks/useOnTabClosed';
import useNetworkSelector from '@hooks/useNetwork';
+import TransactionDetailComponent from '@components/transactionDetailComponent';
+import RecipientComponent from '@components/recipientComponent';
+import TransferMemoView from '@components/confirmStxTransactionComponent/transferMemoView';
import useStxWalletData from '@hooks/queries/useStxWalletData';
import useWalletSelector from '@hooks/useWalletSelector';
import ConfirmStxTransationComponent from '../../components/confirmStxTransactionComponent';
-const Container = styled.div((props) => ({
- display: 'flex',
- flexDirection: 'column',
- marginTop: props.theme.spacing(12),
- marginBottom: props.theme.spacing(4),
-}));
-
const AlertContainer = styled.div((props) => ({
marginTop: props.theme.spacing(12),
}));
-const TitleText = styled.h1((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white['400'],
- textTransform: 'uppercase',
-}));
-
-const ValueText = styled.h1((props) => ({
- ...props.theme.body_m,
- marginTop: props.theme.spacing(2),
- wordBreak: 'break-all',
-}));
-
function ConfirmStxTransaction() {
const { t } = useTranslation('translation');
const [fee, setStateFee] = useState(new BigNumber(0));
@@ -141,23 +123,6 @@ function ConfirmStxTransaction() {
}
});
- const networkInfoSection = (
-
- {t('CONFIRM_TRANSACTION.NETWORK')}
- {network.type}
-
- );
-
- const memoInfoSection = !!memo && (
- <>
-
- {t('CONFIRM_TRANSACTION.MEMO')}
- {memo}
-
-
- >
- );
-
const getAmount = () => {
const txPayload = unsignedTx?.payload as TokenTransferPayload;
const amountToTransfer = new BigNumber(txPayload?.amount?.toString(10));
@@ -183,6 +148,7 @@ function ConfirmStxTransaction() {
});
}
};
+
return (
<>
{isBrowserTx ?
@@ -194,16 +160,21 @@ function ConfirmStxTransaction() {
onCancelClick={handleOnCancelClick}
isSponsored={sponsored}
>
-
+
+
+ {memo && }
{hasTabClosed && (
)}
-
- {networkInfoSection}
-
- {memoInfoSection}
+
{!isBrowserTx && }
>
diff --git a/src/app/screens/restoreFunds/index.tsx b/src/app/screens/restoreFunds/index.tsx
index 4e13bbd34..60fa45566 100644
--- a/src/app/screens/restoreFunds/index.tsx
+++ b/src/app/screens/restoreFunds/index.tsx
@@ -34,7 +34,7 @@ function RestoreFunds() {
};
const handleOnRestoreBtcClick = () => {
- navigate('btc', {
+ navigate('/recover-btc', {
state: {
unspentUtxos,
},
@@ -42,7 +42,7 @@ function RestoreFunds() {
};
const handleOnRestoreOridnalClick = () => {
- navigate('ordinals');
+ navigate('/recover-ordinals');
};
return (
diff --git a/src/app/screens/restoreFunds/restoreBtc/index.tsx b/src/app/screens/restoreFunds/restoreBtc/index.tsx
index ecfb133a3..2f61938c5 100644
--- a/src/app/screens/restoreFunds/restoreBtc/index.tsx
+++ b/src/app/screens/restoreFunds/restoreBtc/index.tsx
@@ -81,7 +81,7 @@ function RestoreBtc() {
if (unspentUtxos) {
amount = sumUnspentOutputs(unspentUtxos);
}
- const isNoAmount = amount.isEqualTo(0);
+ const isNoAmount = amount.isEqualTo(0) || !unspentUtxos[0]?.status.confirmed;
const { data: ordinalsFee, isLoading } = useQuery({
queryKey: [`getFee-${ordinalsAddress}`],
diff --git a/src/app/screens/settings/index.tsx b/src/app/screens/settings/index.tsx
index 540d6fee1..3ef84138b 100644
--- a/src/app/screens/settings/index.tsx
+++ b/src/app/screens/settings/index.tsx
@@ -123,7 +123,7 @@ function Setting() {
};
const onRestoreFundClick = () => {
- navigate('restore-funds', {
+ navigate('/restore-funds', {
state: {
unspentUtxos,
},
diff --git a/src/app/screens/signPsbtRequest/index.tsx b/src/app/screens/signPsbtRequest/index.tsx
index 559e921cb..89634a783 100644
--- a/src/app/screens/signPsbtRequest/index.tsx
+++ b/src/app/screens/signPsbtRequest/index.tsx
@@ -6,19 +6,17 @@ import useSignPsbtTx from '@hooks/useSignPsbtTx';
import useWalletSelector from '@hooks/useWalletSelector';
import { parsePsbt } from '@secretkeylabs/xverse-core/transactions/psbt';
import { useTranslation } from 'react-i18next';
-import IconBitcoin from '@assets/img/dashboard/bitcoin_icon.svg';
import IconOrdinal from '@assets/img/transactions/ordinal.svg';
import styled from 'styled-components';
import {
- BtcUtxoDataResponse,
- getBtcFiatEquivalent, getOrdinalIdFromUtxo, getOrdinalInfo, OrdinalInfo, satsToBtc,
+ getBtcFiatEquivalent, satsToBtc,
} from '@secretkeylabs/xverse-core';
import BigNumber from 'bignumber.js';
import InputOutputComponent from '@components/confirmBtcTransactionComponent/inputOutputComponent';
import TransactionDetailComponent from '@components/transactionDetailComponent';
import AccountHeaderComponent from '@components/accountHeader';
-import BtcRecipientComponent from '@components/confirmBtcTransactionComponent/btcRecipientComponent';
import { useNavigate } from 'react-router-dom';
+import RecipientComponent from '@components/recipientComponent';
import InfoContainer from '@components/infoContainer';
import { NumericFormat } from 'react-number-format';
import { MoonLoader } from 'react-spinners';
@@ -212,17 +210,11 @@ function SignPsbtRequest() {
{!payload.broadcast ? (
) : null}
-
@@ -234,7 +226,7 @@ function SignPsbtRequest() {
ordinal={ordinalInfoData}
ordinalDetail={ordinalInfoData?.metadata['content type']}
heading={t('YOU_WILL_TRANSFER')}
-
+
/>
)}
((props) => ({
const ContentContainer = styled.div({
display: 'flex',
alignItems: 'center',
+ overflow: 'hidden',
});
const ClarityValueText = styled.p((props) => ({
@@ -24,6 +25,7 @@ const ClarityValueKey = styled.p((props) => ({
...props.theme.body_m,
color: props.theme.colors.white[200],
marginRight: props.theme.spacing(4),
+ wordWrap: 'break-word',
}));
function wrapText(text: string): JSX.Element {
diff --git a/src/app/screens/signatureRequest/collapsableContainer.tsx b/src/app/screens/signatureRequest/collapsableContainer.tsx
new file mode 100644
index 000000000..bd7120032
--- /dev/null
+++ b/src/app/screens/signatureRequest/collapsableContainer.tsx
@@ -0,0 +1,116 @@
+import styled from 'styled-components';
+import {
+ animated, config, useSpring,
+} from '@react-spring/web';
+import DropDownIcon from '@assets/img/transactions/dropDownIcon.svg';
+import { useEffect, useState } from 'react';
+
+interface Props {
+ title: string;
+ text: string;
+ children: React.ReactNode;
+}
+
+const ContentContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'column',
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '12px 16px',
+ justifyContent: 'center',
+ marginBottom: 12,
+ flex: 1,
+}));
+
+const RowContainer = styled.div({
+ display: 'flex',
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'center',
+});
+
+const RequestMessageTitle = styled.p((props) => ({
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[200],
+ marginBottom: props.theme.spacing(2),
+ opacity: 0.7,
+ flex: 1,
+}));
+
+const Button = styled.button((props) => ({
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ background: 'transparent',
+ marginLeft: props.theme.spacing(4),
+}));
+
+const ExpandedContainer = styled(animated.div)({
+ display: 'flex',
+ flexDirection: 'column',
+ marginTop: 4,
+});
+
+const Text = styled.p((props) => ({
+ ...props.theme.body_medium_m,
+ textAlign: 'left',
+ lineHeight: 1.6,
+ wordWrap: 'break-word',
+ color: props.theme.colors.white[0],
+ marginBottom: props.theme.spacing(4),
+}));
+
+export default function CollapsableContainer(props: Props) {
+ const [isExpanded, setIsExpanded] = useState(false);
+ const [showArrow, setShowArrow] = useState(true);
+ const [infoText, setInfoText] = useState('');
+ const {
+ title, children, text,
+ } = props;
+
+ useEffect(() => {
+ setInfoText(text);
+ if (text.length > 35) {
+ const concatenatedText = `${text.substring(0, 35)}...`;
+ setInfoText(concatenatedText);
+ } else {
+ setShowArrow(false);
+ }
+ if (text === '') setShowArrow(true);
+ });
+
+ const slideInStyles = useSpring({
+ config: { ...config.gentle, duration: 400 },
+ from: { opacity: 0, height: 0 },
+ to: {
+ opacity: isExpanded ? 1 : 0,
+ height: isExpanded ? 'auto' : 0,
+ },
+ });
+
+ const arrowRotation = useSpring({
+ transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',
+ config: { ...config.stiff },
+ });
+
+ const onArrowClick = () => {
+ setIsExpanded(!isExpanded);
+ };
+
+ return (
+
+
+ {title}
+ {showArrow && (
+
+ )}
+
+ {!isExpanded && text !== '' && {infoText}}
+
+ {children}
+
+
+ );
+}
diff --git a/src/app/screens/signatureRequest/index.tsx b/src/app/screens/signatureRequest/index.tsx
index bf07e41ed..fb42595e2 100644
--- a/src/app/screens/signatureRequest/index.tsx
+++ b/src/app/screens/signatureRequest/index.tsx
@@ -3,26 +3,26 @@ import ConfirmScreen from '@components/confirmScreen';
import useSignatureRequest, {
isStructuredMessage,
isUtf8Message,
+ useSignBip322Message,
useSignMessage,
} from '@hooks/useSignatureRequest';
-import SignatureIcon from '@assets/img/webInteractions/signatureIcon.svg';
-import Plus from '@assets/img/transactions/Plus.svg';
-import Minus from '@assets/img/transactions/Minus.svg';
import AccountHeaderComponent from '@components/accountHeader';
import { useTranslation } from 'react-i18next';
import { SignaturePayload, StructuredDataSignaturePayload } from '@stacks/connect';
-import { useEffect, useState } from 'react';
-import Seperator from '@components/seperator';
+import { useCallback, useEffect, useState } from 'react';
import { bytesToHex } from '@stacks/transactions';
import useWalletSelector from '@hooks/useWalletSelector';
import useWalletReducer from '@hooks/useWalletReducer';
-import { getNetworkType } from '@utils/helper';
+import { getNetworkType, getTruncatedAddress } from '@utils/helper';
import { useNavigate } from 'react-router-dom';
import InfoContainer from '@components/infoContainer';
-import { hashMessage } from '@secretkeylabs/xverse-core';
+import { hashMessage } from '@secretkeylabs/xverse-core/wallet';
+import { bip0322Hash } from '@secretkeylabs/xverse-core/connect/bip322Signature';
+import { ExternalSatsMethods, MESSAGE_SOURCE } from '@common/types/message-types';
import SignatureRequestMessage from './signatureRequestMessage';
import SignatureRequestStructuredData from './signatureRequestStructuredData';
import { finalizeMessageSignature } from './utils';
+import CollapsableContainer from './collapsableContainer';
const MainContainer = styled.div((props) => ({
display: 'flex',
@@ -33,64 +33,65 @@ const MainContainer = styled.div((props) => ({
height: '100%',
}));
-const RequestImage = styled.img((props) => ({
- marginTop: props.theme.spacing(20),
- marginBottom: props.theme.spacing(12),
- alignSelf: 'center',
-}));
-
const RequestType = styled.h1((props) => ({
- ...props.theme.headline_m,
+ ...props.theme.headline_s,
+ marginTop: props.theme.spacing(11),
color: props.theme.colors.white[0],
- textAlign: 'center',
+ textAlign: 'left',
+ marginBottom: props.theme.spacing(4),
}));
const RequestSource = styled.h2((props) => ({
- ...props.theme.body_l,
- color: props.theme.colors.white['400'],
- marginTop: props.theme.spacing(2),
+ ...props.theme.body_medium_m,
+ color: props.theme.colors.white[400],
+ textAlign: 'left',
marginBottom: props.theme.spacing(12),
- textAlign: 'center',
}));
-const ShowHashButtonContainer = styled.div({
+const MessageHash = styled.p((props) => ({
+ ...props.theme.body_medium_m,
+ textAlign: 'left',
+ lineHeight: 1.6,
+ wordWrap: 'break-word',
+ color: props.theme.colors.white[0],
+ marginBottom: props.theme.spacing(4),
+}));
+
+const SigningAddressContainer = styled.div((props) => ({
display: 'flex',
- flexDirection: 'row',
- alignItems: 'center',
- width: '100%',
- div: {
- flex: 1,
- },
-});
-
-const ShowHashButton = styled.button((props) => ({
- ...props.theme.body_xs,
- background: 'none',
+ flexDirection: 'column',
+ background: props.theme.colors.background.elevation1,
+ borderRadius: 12,
+ padding: '12px 16px',
+ marginBottom: 12,
+ flex: 1,
+}));
+
+const SigningAddressTitle = styled.p((props) => ({
+ ...props.theme.body_medium_m,
+ lineHeight: 1.6,
+ wordWrap: 'break-word',
+ color: props.theme.colors.white[200],
+ marginBottom: props.theme.spacing(4),
+}));
+
+const SigningAddress = styled.div(({
display: 'flex',
- flexDirection: 'row',
- justifyContent: 'center',
+ justifyContent: 'space-between',
alignItems: 'center',
- color: props.theme.colors.white[0],
- marginBottom: props.theme.spacing(6),
- marginTop: props.theme.spacing(12),
- width: 111,
- height: 34,
- borderRadius: props.theme.radius(3),
- border: `1px solid ${props.theme.colors.background.elevation3}`,
- img: {
- marginLeft: props.theme.spacing(2),
- },
}));
-const MessageHashTitle = styled.p((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white[200],
- marginBottom: props.theme.spacing(2),
- opacity: 0.7,
+const SigningAddressType = styled.p((props) => ({
+ ...props.theme.body_medium_m,
+ textAlign: 'left',
+ lineHeight: 1.6,
+ wordWrap: 'break-word',
+ color: props.theme.colors.white[0],
+ marginBottom: props.theme.spacing(4),
}));
-const MessageHash = styled.p((props) => ({
- ...props.theme.body_m,
+const SigningAddressValue = styled.p((props) => ({
+ ...props.theme.body_medium_m,
textAlign: 'left',
lineHeight: 1.6,
wordWrap: 'break-word',
@@ -101,47 +102,66 @@ const MessageHash = styled.p((props) => ({
const ActionDisclaimer = styled.p((props) => ({
...props.theme.body_m,
color: props.theme.colors.white[400],
+ marginTop: props.theme.spacing(4),
marginBottom: props.theme.spacing(8),
}));
function SignatureRequest(): JSX.Element {
const { t } = useTranslation('translation');
const [isSigning, setIsSigning] = useState(false);
- const [showHash, setShowHash] = useState(false);
- const { selectedAccount, accountsList, network } = useWalletSelector();
+ const { accountsList, network } = useWalletSelector();
+ const [addressType, setAddressType] = useState('');
const { switchAccount } = useWalletReducer();
const {
- messageType, request, payload, tabId, domain,
+ messageType, request, payload, tabId, domain, isSignMessageBip322,
} = useSignatureRequest();
const navigate = useNavigate();
+
+ const checkAddressAvailability = () => {
+ const account = accountsList.filter((acc) => {
+ if (acc.btcAddress === payload.address) {
+ setAddressType(t('SIGNATURE_REQUEST.SIGNING_ADDRESS_SEGWIT'));
+ return true;
+ }
+ if (acc.ordinalsAddress === payload.address) {
+ setAddressType(t('SIGNATURE_REQUEST.SIGNING_ADDRESS_TAPROOT'));
+ return true;
+ }
+ if (acc.stxAddress === payload.stxAddress) {
+ setAddressType(t('SIGNATURE_REQUEST.SIGNING_ADDRESS_STX'));
+ return true;
+ }
+ return false;
+ });
+ return account[0];
+ };
+
const switchAccountBasedOnRequest = () => {
- if (getNetworkType(payload.network) !== network.type) {
+ if (!isSignMessageBip322 && getNetworkType(payload.network) !== network.type) {
navigate('/tx-status', {
state: {
txid: '',
currency: 'STX',
- error:
- 'There’s a mismatch between your active network and the network you’re logged with.',
+ errorTitle: t('SIGNATURE_REQUEST.SIGNATURE_ERROR_TITLE'),
+ error: t('CONFIRM_TRANSACTION.NETWORK_MISMATCH'),
browserTx: true,
},
});
return;
}
- if (payload.stxAddress !== selectedAccount?.stxAddress) {
- const account = accountsList.find((acc) => acc.stxAddress === payload.stxAddress);
- if (account) {
- switchAccount(account);
- } else {
- navigate('/tx-status', {
- state: {
- txid: '',
- currency: 'STX',
- error:
- 'There’s a mismatch between your active address and the address you’re logged with.',
- browserTx: true,
- },
- });
- }
+ const account = checkAddressAvailability();
+ if (account) {
+ switchAccount(account);
+ } else {
+ navigate('/tx-status', {
+ state: {
+ txid: '',
+ currency: 'STX',
+ errorTitle: t('SIGNATURE_REQUEST.SIGNATURE_ERROR_TITLE'),
+ error: t('CONFIRM_TRANSACTION.ADDRESS_MISMATCH'),
+ browserTx: true,
+ },
+ });
}
};
@@ -151,24 +171,36 @@ function SignatureRequest(): JSX.Element {
const handleMessageSigning = useSignMessage(messageType);
+ const handleBip322MessageSigning = useSignBip322Message(payload.message, payload.address);
+
const cancelCallback = () => {
finalizeMessageSignature({ requestPayload: request, tabId: +tabId, data: 'cancel' });
window.close();
};
- const handleShowHash = async () => {
- setShowHash((current) => !current);
- };
-
const confirmCallback = async () => {
try {
setIsSigning(true);
- const signature = await handleMessageSigning({
- message: payload.message,
- domain: domain || undefined,
- });
- if (signature) {
- finalizeMessageSignature({ requestPayload: request, tabId: +tabId, data: signature });
+ if (!isSignMessageBip322) {
+ const signature = await handleMessageSigning({
+ message: payload.message,
+ domain: domain || undefined,
+ });
+ if (signature) {
+ finalizeMessageSignature({ requestPayload: request, tabId: +tabId, data: signature });
+ }
+ } else {
+ const bip322signature = await handleBip322MessageSigning();
+ const signingMessage = {
+ source: MESSAGE_SOURCE,
+ method: ExternalSatsMethods.signMessageResponse,
+ payload: {
+ signMessageRequest: request,
+ signMessageResponse: bip322signature,
+ },
+ };
+ chrome.tabs.sendMessage(+tabId, signingMessage);
+ window.close();
}
} catch (err) {
console.log(err);
@@ -177,6 +209,13 @@ function SignatureRequest(): JSX.Element {
}
};
+ const getMessageHash = useCallback(() => {
+ if (!isSignMessageBip322) {
+ return bytesToHex(hashMessage(payload.message));
+ }
+ return bip0322Hash(payload.message);
+ }, [isSignMessageBip322]);
+
return (
-
{t('SIGNATURE_REQUEST.TITLE')}
- {`${t('SIGNATURE_REQUEST.DAPP_NAME_PREFIX')} ${payload.appDetails?.name}`}
- {isUtf8Message(messageType) && (
-
+ {!isSignMessageBip322 ? (
+
+ {`${t('SIGNATURE_REQUEST.DAPP_NAME_PREFIX')} ${payload.appDetails?.name}`}
+
+ ) : null}
+ {(isUtf8Message(messageType) || isSignMessageBip322) && (
+
)}
- {isStructuredMessage(messageType) && (
-
+ {!isSignMessageBip322 && isStructuredMessage(messageType) && (
+
)}
-
-
-
- {showHash ? t('SIGNATURE_REQUEST.HIDE_HASH_BUTTON') : t('SIGNATURE_REQUEST.SHOW_HASH_BUTTON')}
-
-
-
-
- {showHash ? (
- <>
- {t('SIGNATURE_REQUEST.MESSAGE_HASH_HEADER')}
- {bytesToHex(hashMessage(payload.message))}
- >
- ) : null}
+
+ {getMessageHash()}
+
+
+ {t('SIGNATURE_REQUEST.SIGNING_ADDRESS_TITLE')}
+
+ {addressType}
+
+ {getTruncatedAddress(payload.address || payload.stxAddress)}
+
+
+
{t('SIGNATURE_REQUEST.ACTION_DISCLAIMER')}
diff --git a/src/app/screens/signatureRequest/signatureRequestMessage.tsx b/src/app/screens/signatureRequest/signatureRequestMessage.tsx
index 12327e03c..bbc178918 100644
--- a/src/app/screens/signatureRequest/signatureRequestMessage.tsx
+++ b/src/app/screens/signatureRequest/signatureRequestMessage.tsx
@@ -1,32 +1,17 @@
import { SignaturePayload } from '@stacks/connect';
import styled from 'styled-components';
-
import { useTranslation } from 'react-i18next';
+import CollapsableContainer from './collapsableContainer';
interface SignatureRequestMessageProps {
request: SignaturePayload,
}
-const ContentContainer = styled.div({
- display: 'flex',
- flexDirection: 'column',
- flex: 1,
-});
-
-const RequestMessageTitle = styled.p((props) => ({
- ...props.theme.headline_category_s,
- color: props.theme.colors.white[200],
- marginBottom: props.theme.spacing(2),
- opacity: 0.7,
-}));
-
const RequestMessage = styled.p((props) => ({
- ...props.theme.body_m,
+ ...props.theme.body_medium_m,
textAlign: 'left',
- lineHeight: 1.6,
wordWrap: 'break-word',
color: props.theme.colors.white[0],
- marginBottom: props.theme.spacing(4),
}));
export default function SignatureRequestMessage(props: SignatureRequestMessageProps) {
@@ -36,11 +21,10 @@ export default function SignatureRequestMessage(props: SignatureRequestMessagePr
} = props;
return (
-
- {t('MESSAGE_HEADER')}
+
{request.message.split(/\r?\n/).map((line) => (
{line}
))}
-
+
);
}
diff --git a/src/app/screens/signatureRequest/signatureRequestStructuredData.tsx b/src/app/screens/signatureRequest/signatureRequestStructuredData.tsx
index d72e3aaff..e3dce075b 100644
--- a/src/app/screens/signatureRequest/signatureRequestStructuredData.tsx
+++ b/src/app/screens/signatureRequest/signatureRequestStructuredData.tsx
@@ -3,6 +3,7 @@ import { deserializeCV } from '@stacks/transactions/dist/esm/clarity';
import { useTranslation } from 'react-i18next';
import styled from 'styled-components';
import ClarityMessageView from './clarityMessageView';
+import CollapsableContainer from './collapsableContainer';
interface SignatureRequestStructuredDataProps {
payload: StructuredDataSignaturePayload;
@@ -25,12 +26,11 @@ export default function SignatureRequestStructuredData(props: SignatureRequestSt
const { t } = useTranslation('translation', { keyPrefix: 'SIGNATURE_REQUEST' });
const { payload } = props;
return (
-
- {t('MESSAGE_HEADER')}
+
-
+
);
}
diff --git a/src/app/screens/transactionStatus/index.tsx b/src/app/screens/transactionStatus/index.tsx
index 5201b2871..78d94a019 100644
--- a/src/app/screens/transactionStatus/index.tsx
+++ b/src/app/screens/transactionStatus/index.tsx
@@ -9,12 +9,12 @@ import { getBtcTxStatusUrl, getStxTxStatusUrl } from '@utils/helper';
import useWalletSelector from '@hooks/useWalletSelector';
import CopyButton from '@components/copyButton';
-const TxStatusContainer = styled.div({
- background: 'rgba(25, 25, 48, 0.5)',
+const TxStatusContainer = styled.div((props) => ({
+ background: props.theme.colors.background.elevation0,
display: 'flex',
flexDirection: 'column',
height: '100%',
-});
+}));
const Container = styled.div({
display: 'flex',
@@ -164,7 +164,7 @@ function TransactionStatus() {
if (browserTx) window.close();
else if (isOrdinal) navigate(-4);
else if (isNft) navigate(-3);
- else navigate(-2);
+ else navigate(-3);
};
const renderLink = (
diff --git a/src/assets/img/transactions/ArrowDown.svg b/src/assets/img/transactions/ArrowDown.svg
new file mode 100644
index 000000000..35a86bdeb
--- /dev/null
+++ b/src/assets/img/transactions/ArrowDown.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/img/transactions/wallet.svg b/src/assets/img/transactions/wallet.svg
new file mode 100644
index 000000000..c97859d45
--- /dev/null
+++ b/src/assets/img/transactions/wallet.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/common/types/inpage-types.ts b/src/common/types/inpage-types.ts
index cf91c1102..d8079136f 100644
--- a/src/common/types/inpage-types.ts
+++ b/src/common/types/inpage-types.ts
@@ -8,6 +8,7 @@ export enum DomEventName {
transactionRequest = 'stacksTransactionRequest',
getAddressRequest = 'SatsAddressRequest',
signPsbtRequest = 'SatsPsbtRequest',
+ signMessageRequest = 'SatsSignMessage',
}
export interface AuthenticationRequestEventDetails {
@@ -39,3 +40,9 @@ export interface SignPsbtRequestEventDetails {
}
export type SignPsbtRequestEvent = CustomEvent;
+
+export interface SignMessageRequestEventDetails {
+ signMessageRequest: string;
+}
+
+export type SignMessageRequestEvent = CustomEvent;
diff --git a/src/common/types/message-types.ts b/src/common/types/message-types.ts
index 3626cdca5..73cf424ff 100644
--- a/src/common/types/message-types.ts
+++ b/src/common/types/message-types.ts
@@ -101,6 +101,8 @@ export enum ExternalSatsMethods {
getAddressResponse = 'getAddressResponse',
signPsbtRequest = 'signPsbtRequest',
signPsbtResponse = 'signPsbtResponse',
+ signMessageRequest = 'signMessageRequest',
+ signMessageResponse = 'signMessageResponse',
}
type GetAddressRequestMessage = Message;
@@ -108,7 +110,7 @@ type GetAddressRequestMessage = Message;
@@ -123,6 +125,22 @@ ExternalSatsMethods.signPsbtResponse,
}
>;
-export type SatsConnectMessageFromContentScript = GetAddressRequestMessage | SignPsbtRequestMessage;
+type SignMessageRequestMessage = Message;
-export type SatsConnectMessageToContentScript = GetAddressResponseMessage | SignPsbtResponseMessage;
+export type SignMessageResponseMessage = Message<
+ExternalSatsMethods.signMessageResponse,
+{
+ signMessageRequest: string;
+ signMessageResponse: string;
+}
+>;
+
+export type SatsConnectMessageFromContentScript =
+ | GetAddressRequestMessage
+ | SignPsbtRequestMessage
+ | SignMessageRequestMessage;
+
+export type SatsConnectMessageToContentScript =
+ | GetAddressResponseMessage
+ | SignPsbtResponseMessage
+ | SignMessageResponseMessage;
diff --git a/src/common/utils/legacy-external-message-handler.ts b/src/common/utils/legacy-external-message-handler.ts
index 593109439..4dbaf6012 100644
--- a/src/common/utils/legacy-external-message-handler.ts
+++ b/src/common/utils/legacy-external-message-handler.ts
@@ -207,6 +207,27 @@ export async function handleLegacyExternalMethodFormat(
listenForOriginTabClose({ tabId });
break;
}
+ case ExternalSatsMethods.signMessageRequest: {
+ const { urlParams, tabId } = makeSearchParamsWithDefaults(port, [
+ ['signMessageRequest', payload],
+ ]);
+
+ const { id } = await triggerRequstWindowOpen(RequestsRoutes.SignatureRequest, urlParams);
+ listenForPopupClose({
+ id,
+ tabId,
+ response: {
+ source: MESSAGE_SOURCE,
+ payload: {
+ signMessageRequest: payload,
+ signMessageResponse: 'cancel',
+ },
+ method: ExternalSatsMethods.signMessageResponse,
+ },
+ });
+ listenForOriginTabClose({ tabId });
+ break;
+ }
default: {
break;
}
diff --git a/src/content-scripts/content-script.ts b/src/content-scripts/content-script.ts
index 38a630e6f..6c3674422 100644
--- a/src/content-scripts/content-script.ts
+++ b/src/content-scripts/content-script.ts
@@ -16,6 +16,7 @@ import {
TransactionRequestEvent,
GetAddressRequestEvent,
SignPsbtRequestEvent,
+ SignMessageRequestEvent,
} from '@common/types/inpage-types';
// Legacy messaging to work with older versions of Connect
@@ -146,6 +147,18 @@ document.addEventListener(DomEventName.signPsbtRequest, ((
});
}) as EventListener);
+// Listen for a CustomEvent (Message Signing request) coming from the web app
+document.addEventListener(DomEventName.signMessageRequest, ((
+ event: SignMessageRequestEvent,
+) => {
+ forwardDomEventToBackground({
+ path: RequestsRoutes.SignatureRequest,
+ payload: event.detail.signMessageRequest,
+ urlParam: 'signMessageRequest',
+ method: ExternalSatsMethods.signMessageRequest,
+ });
+}) as EventListener);
+
// Inject inpage script (Stacks Provider)
const inpage = document.createElement('script');
inpage.src = chrome.runtime.getURL('inpage.js');
diff --git a/src/inpage/sats.inpage.ts b/src/inpage/sats.inpage.ts
index 29fe3516e..dd5eefd5f 100644
--- a/src/inpage/sats.inpage.ts
+++ b/src/inpage/sats.inpage.ts
@@ -1,4 +1,4 @@
-import { SignPsbtRequestEventDetails } from './../common/types/inpage-types';
+import { SignMessageRequestEventDetails, SignPsbtRequestEventDetails } from './../common/types/inpage-types';
import { BitcoinProvider, GetAddressResponse } from 'sats-connect';
import {
DomEventName,
@@ -9,6 +9,7 @@ import {
GetAddressResponseMessage,
MESSAGE_SOURCE,
SatsConnectMessageToContentScript,
+ SignMessageResponseMessage,
SignPsbtResponseMessage,
} from '@common/types/message-types';
import { SignTransactionResponse } from 'sats-connect/src/transactions/signTransaction';
@@ -63,6 +64,27 @@ const SatsMethodsProvider: BitcoinProvider = {
window.addEventListener('message', handleMessage);
});
},
+ signMessage: async (signMessageRequest: string): Promise => {
+ const event = new CustomEvent(DomEventName.signMessageRequest, {
+ detail: { signMessageRequest },
+ });
+ document.dispatchEvent(event);
+ return new Promise((resolve, reject) => {
+ const handleMessage = (eventMessage: MessageEvent) => {
+ if (!isValidEvent(eventMessage, ExternalSatsMethods.signMessageResponse)) return;
+ if (eventMessage.data.payload?.signMessageRequest !== signMessageRequest) return;
+ window.removeEventListener('message', handleMessage);
+ if (eventMessage.data.payload.signMessageResponse === 'cancel') {
+ reject(eventMessage.data.payload.signMessageResponse);
+ return;
+ }
+ if (typeof eventMessage.data.payload.signMessageResponse === 'string') {
+ resolve(eventMessage.data.payload.signMessageResponse);
+ }
+ };
+ window.addEventListener('message', handleMessage);
+ });
+ },
call(request: string): Promise> {
throw new Error('`call` function is not implemented');
},
diff --git a/src/locales/en.json b/src/locales/en.json
index 7e199d61f..1945d43ae 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -58,7 +58,7 @@
"MEMO_INFO": "Adding a memo can have an impact on the transaction fee",
"NEXT": "Next",
"NO_FUNDS": "You don’t have any funds to send.",
- "BUY_CRYPTO": "Buy crypto →",
+ "BUY_CRYPTO": "Buy crypto",
"MOVE_TO_ASSET_DETAIL": "Back to asset detail",
"ERRORS": {
"ADDRESS_REQUIRED": "Recipient address is required",
@@ -111,9 +111,16 @@
"PSBT_CANT_PARSE_ERROR_TITLE": "Transaction Error",
"PSBT_CANT_PARSE_ERROR_DESCRIPTION": "The requested transaction is invalid and cannot be processed please contact the developer of the requesting app for support",
"PSBT_CANT_SIGN_ERROR_TITLE": "Failed to sign transaction",
+ "To": "To",
"YOU_WILL_TRANSFER": "You will transfer",
"YOU_WILL_RECEIVE": "You will receive",
- "ORDINAL": "Ordinal"
+ "ORDINAL": "Ordinal",
+ "ORDINAL_DETECTED_WARNING": "Ordinal inscription detected in transaction. Continuing will cause your ordinal to be transferred away.",
+ "ORDINAL_DETECTED_ACTION": "Move to my ordinals address",
+ "BTC_TRANSFER_DANGER_ALERT_TITLE": "Danger",
+ "BTC_TRANSFER_DANGER_ALERT_DESC": "You are about to make a Bitcoin transfer which contains an ordinal inscription. Once transferred out of the wallet, you will not be able to recover them.",
+ "CONITNUE": "Continue",
+ "BACK": "Back"
},
"TX_ERRORS": {
"INSUFFICIENT_BALANCE": "Insufficient balance",
@@ -285,7 +292,7 @@
"DESCRIPTION": "You have Bitcoin stored in your ordinal address. You can transfer them to your payment address so they can be used for payments and are shown in your balance."
},
"RESTORE_ORDINAL_SCREEN": {
- "TITLE": "Restore Oridnals",
+ "TITLE": "Restore Ordinals",
"BTC": "Bitcoin",
"TRANSFER": "Transfer",
"BACK": "Back",
@@ -459,8 +466,13 @@
"HIDE_HASH_BUTTON": "Hide Hash",
"ACTION_DISCLAIMER": "No transactions will be broadcasted and no fees will be applied.",
"SIGNING_WARNING": "By signing this message, you prove that you are the owner of an account without broadcasting any on chain transactions. This signature cannot be used to send transactions on your behalf. You should only sign messages you trust.",
+ "SIGNING_ADDRESS_TITLE": "Signing with",
+ "SIGNING_ADDRESS_STX": "Your Stacks address",
+ "SIGNING_ADDRESS_SEGWIT": "Your Bitcoin payment address",
+ "SIGNING_ADDRESS_TAPROOT": "Your Ordinals address",
"SIGN_BUTTON": "Sign",
- "CANCEL_BUTTON": "Cancel"
+ "CANCEL_BUTTON": "Cancel",
+ "SIGNATURE_ERROR_TITLE": "Signature Error"
},
"ERROR_SCREEN": {
"TITLE": "Xverse crashed unexpectedly",