diff --git a/package-lock.json b/package-lock.json index 5ffef2dde..9e1c039f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.12.3", "dependencies": { "@react-spring/web": "^9.6.1", - "@secretkeylabs/xverse-core": "1.1.2", + "@secretkeylabs/xverse-core": "1.4.0-1004b69", "@stacks/connect": "^6.10.2", "@stacks/encryption": "4.3.5", "@stacks/stacks-blockchain-api-types": "^6.1.1", @@ -712,6 +712,15 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@bitcoinerlab/secp256k1": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@bitcoinerlab/secp256k1/-/secp256k1-1.0.5.tgz", + "integrity": "sha512-8gT+ukTCFN2rTxn4hD9Jq3k+UJwcprgYjfK/SQUSLgznXoIgsBnlPuARMkyyuEjycQK9VvnPiejKdszVTflh+w==", + "dependencies": { + "@noble/hashes": "^1.1.5", + "@noble/secp256k1": "^1.7.1" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -1792,6 +1801,67 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, + "node_modules/@ledgerhq/devices": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.4.tgz", + "integrity": "sha512-dxOiWZmtEv1tgw70+rW8gviCRZUeGDUnxY6HUPiRqTAc0Ts2AXxiJChgAsPvIywWTGW+S67Nxq1oTZdpRbdt+A==", + "dependencies": { + "@ledgerhq/errors": "^6.12.7", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/devices/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/devices/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/devices/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@ledgerhq/errors": { + "version": "6.12.7", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.7.tgz", + "integrity": "sha512-1BpjzFErPK7qPFx0oItcX0mNLJMplVAm2Dpl5urZlubewnTyyw5sahIBjU+8LLCWJ2eGEh/0wyvh0jMtR0n2Mg==" + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "6.28.5", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.5.tgz", + "integrity": "sha512-xmw5RhYbqExBBqTvOnOjN/RYNIGMBxFJ+zcYNfkfw/E+uEY3L7xq8Z7sC/n7URTT6xtEctElqduBJnBQE4OQtw==", + "dependencies": { + "@ledgerhq/devices": "^8.0.4", + "@ledgerhq/errors": "^6.12.7", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -2085,33 +2155,47 @@ } }, "node_modules/@secretkeylabs/xverse-core": { +<<<<<<< HEAD "version": "1.1.2", "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/1.1.2/d46450c9efbda848963099bc366d873b516d2ab2", "integrity": "sha512-RI/riO+tH/Nd67XHSLNfO5ru0+1zLFkjc+Aw2mt8XivDOwz5t+8456soaQrSS1b5ZsJ6OrvBYEpnYsGuxD5YyA==", +======= + "version": "1.4.0-1004b69", + "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/1.4.0-1004b69/99b3ffc3a8e5106caf6aeaa56d0bc340afc3b267", + "integrity": "sha512-OtZL9c4wfCXmEgcj47YWOKG4uxiU1xaAWySrkkxZ4NwV7zF809VXEqeVyPy1MReVUixwi4Sgc3mVCT317wl0Cw==", +>>>>>>> 8482196 (fix: bump xverse-core version and handle sponsor transaction error) "license": "ISC", "dependencies": { + "@bitcoinerlab/secp256k1": "^1.0.2", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", "@scure/btc-signer": "^1.0.0", + "@stacks/auth": "^6.5.1", "@stacks/encryption": "6.1.1", "@stacks/network": "4.3.5", "@stacks/storage": "^6.0.0", "@stacks/transactions": "4.3.5", "@stacks/wallet-sdk": "^5.0.2", + "@zondax/ledger-stacks": "^1.0.4", "axios": "0.27.2", + "base64url": "^3.0.1", "bignumber.js": "9.1.0", - "bip32": "^2.0.6", + "bip32": "^4.0.0", "bip39": "3.0.3", "bitcoin-address-validation": "^2.2.1", - "bitcoinjs-lib": "5.2.0", + "bitcoinjs-lib": "^6.1.3", "bitcoinjs-message": "^2.2.0", "bn.js": "^5.1.3", + "bs58check": "^3.0.1", "buffer": "6.0.3", "c32check": "^2.0.0", + "ecdsa-sig-formatter": "^1.0.11", "ecpair": "^2.1.0", "jsontokens": "^4.0.1", + "ledger-bitcoin": "^0.2.1", "process": "^0.11.10", "util": "^0.12.4", + "uuidv4": "^6.2.13", "varuint-bitcoin": "^1.1.2" } }, @@ -2141,6 +2225,53 @@ "@scure/base": "~1.1.0" } }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/auth": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.4.tgz", + "integrity": "sha512-8Zw+fdKMHdnyDv6EpNnXXTLMWQq31xUYDnFJtFlmr1AnZYPJUbquiqUNTS6Cf2Fk3FSZpsBRDNfWiqss1yGycw==", + "dependencies": { + "@stacks/common": "^6.5.2", + "@stacks/encryption": "^6.5.4", + "@stacks/network": "^6.5.4", + "@stacks/profile": "^6.5.4", + "cross-fetch": "^3.1.5", + "jsontokens": "^4.0.1" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/auth/node_modules/@stacks/common": { + "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/@secretkeylabs/xverse-core/node_modules/@stacks/auth/node_modules/@stacks/encryption": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.4.tgz", + "integrity": "sha512-osZGQXuY0BtqwiXZHMPgObg4QlqktDp2OYzbkln7A/7B1hwkjPruJ7yMK44wr0SprjaL9JCA8tKhpXxGd/tO8A==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@scure/bip39": "1.1.0", + "@stacks/common": "^6.5.2", + "@types/node": "^18.0.4", + "base64-js": "^1.5.1", + "bs58": "^5.0.0", + "ripemd160-min": "^0.0.6", + "varuint-bitcoin": "^1.1.2" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/auth/node_modules/@stacks/network": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.4.tgz", + "integrity": "sha512-nONCBkTkYyH5yqO80Ith4QHC9PhipObKIGhlZETXd/csdRUkAYzE8/vJCx7LWPh4AiIVMjbEgBrGsjNR3YpGdw==", + "dependencies": { + "@stacks/common": "^6.5.2", + "cross-fetch": "^3.1.5" + } + }, "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/encryption": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.1.1.tgz", @@ -2166,6 +2297,50 @@ "@types/node": "^18.0.4" } }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/profile": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.4.tgz", + "integrity": "sha512-YEnt2ACOuPFydNKpxYmZ2c/+UrcuusrNHTChePLyXKmU9u3cX3uBNSvdl1H13H6b2CW3G7inxMerRgssXDzTEA==", + "dependencies": { + "@stacks/common": "^6.5.2", + "@stacks/network": "^6.5.4", + "@stacks/transactions": "^6.5.4", + "jsontokens": "^4.0.1", + "schema-inspector": "^2.0.2", + "zone-file": "^2.0.0-beta.3" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/profile/node_modules/@stacks/common": { + "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/@secretkeylabs/xverse-core/node_modules/@stacks/profile/node_modules/@stacks/network": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.4.tgz", + "integrity": "sha512-nONCBkTkYyH5yqO80Ith4QHC9PhipObKIGhlZETXd/csdRUkAYzE8/vJCx7LWPh4AiIVMjbEgBrGsjNR3YpGdw==", + "dependencies": { + "@stacks/common": "^6.5.2", + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/profile/node_modules/@stacks/transactions": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.4.tgz", + "integrity": "sha512-yQhywPQ5cospYpVPbEMFRTUBZhVvyuI+meJ3fqHpu10IXX4CdURKLtW7N64c71YNXmE1tnsN7hWaPzrwjX0Dyw==", + "dependencies": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^6.5.2", + "@stacks/network": "^6.5.4", + "c32check": "^2.0.0", + "lodash.clonedeep": "^4.5.0" + } + }, "node_modules/@secretkeylabs/xverse-core/node_modules/@stacks/transactions": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-4.3.5.tgz", @@ -2245,6 +2420,31 @@ "node": "*" } }, + "node_modules/@secretkeylabs/xverse-core/node_modules/bip32": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-4.0.0.tgz", + "integrity": "sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "@scure/base": "^1.1.1", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/bip32/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@secretkeylabs/xverse-core/node_modules/bip39": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.3.tgz", @@ -2261,6 +2461,61 @@ "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/bitcoinjs-lib": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.3.tgz", + "integrity": "sha512-TYXs/Qf+GNk2nnsB9HrXWqzFuEgCg0Gx+v3UW3B8VuceFHXVvhT+7hRnTSvwkX0i8rz2rtujeU6gFaDcFqYFDw==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.0", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/bitcoinjs-lib/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/bs58check/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@secretkeylabs/xverse-core/node_modules/schema-inspector": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/schema-inspector/-/schema-inspector-2.0.3.tgz", + "integrity": "sha512-Q9mpYxrP3w6CpHRfnh3QLOE1urkGTLvnl7xgVH7fsu0HYJUZenUASUr4j/pf7bAxShh+4R3Ta8ZgVKak1b2wyA==", + "dependencies": { + "async": "~2.6.3" + } + }, "node_modules/@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", @@ -3665,6 +3920,11 @@ "@types/jest": "*" } }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "node_modules/@types/webextension-polyfill": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@types/webextension-polyfill/-/webextension-polyfill-0.9.2.tgz", @@ -4083,6 +4343,17 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@zondax/ledger-stacks": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@zondax/ledger-stacks/-/ledger-stacks-1.0.4.tgz", + "integrity": "sha512-R8CB0CZ2poTzpcG0jhzzXZvXF7axIsmZFhp06aHCUjgz+1df63YbC4tUzyzmseekwqNWnaebWFejQKJ99WiHZA==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@ledgerhq/hw-transport": "^6.28.1", + "@stacks/transactions": "^4.1.0", + "varuint-bitcoin": "^1.1.2" + } + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -5773,6 +6044,11 @@ "node": ">=6.0.0" } }, + "node_modules/bip32-path": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz", + "integrity": "sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==" + }, "node_modules/bip32/node_modules/@types/node": { "version": "10.12.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", @@ -8611,7 +8887,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } @@ -12483,6 +12758,44 @@ "shell-quote": "^1.7.3" } }, + "node_modules/ledger-bitcoin": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ledger-bitcoin/-/ledger-bitcoin-0.2.2.tgz", + "integrity": "sha512-iZDuY+3tVmtEkJH6NbxCf8RElixKSEA8wt09c7IRvQj3SdJGc9g9oFUe/3bJotog0Ntzq69gDAKYJ4+srLpgHQ==", + "dependencies": { + "@ledgerhq/hw-transport": "^6.20.0", + "bip32-path": "^0.4.2", + "bitcoinjs-lib": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/ledger-bitcoin/node_modules/bitcoinjs-lib": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.3.tgz", + "integrity": "sha512-TYXs/Qf+GNk2nnsB9HrXWqzFuEgCg0Gx+v3UW3B8VuceFHXVvhT+7hRnTSvwkX0i8rz2rtujeU6gFaDcFqYFDw==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.0", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ledger-bitcoin/node_modules/bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14915,6 +15228,22 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -16627,11 +16956,19 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } }, + "node_modules/uuidv4": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz", + "integrity": "sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==", + "dependencies": { + "@types/uuid": "8.3.4", + "uuid": "8.3.2" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -17844,6 +18181,15 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@bitcoinerlab/secp256k1": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@bitcoinerlab/secp256k1/-/secp256k1-1.0.5.tgz", + "integrity": "sha512-8gT+ukTCFN2rTxn4hD9Jq3k+UJwcprgYjfK/SQUSLgznXoIgsBnlPuARMkyyuEjycQK9VvnPiejKdszVTflh+w==", + "requires": { + "@noble/hashes": "^1.1.5", + "@noble/secp256k1": "^1.7.1" + } + }, "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -18677,6 +19023,60 @@ } } }, + "@ledgerhq/devices": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.4.tgz", + "integrity": "sha512-dxOiWZmtEv1tgw70+rW8gviCRZUeGDUnxY6HUPiRqTAc0Ts2AXxiJChgAsPvIywWTGW+S67Nxq1oTZdpRbdt+A==", + "requires": { + "@ledgerhq/errors": "^6.12.7", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@ledgerhq/errors": { + "version": "6.12.7", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.7.tgz", + "integrity": "sha512-1BpjzFErPK7qPFx0oItcX0mNLJMplVAm2Dpl5urZlubewnTyyw5sahIBjU+8LLCWJ2eGEh/0wyvh0jMtR0n2Mg==" + }, + "@ledgerhq/hw-transport": { + "version": "6.28.5", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.5.tgz", + "integrity": "sha512-xmw5RhYbqExBBqTvOnOjN/RYNIGMBxFJ+zcYNfkfw/E+uEY3L7xq8Z7sC/n7URTT6xtEctElqduBJnBQE4OQtw==", + "requires": { + "@ledgerhq/devices": "^8.0.4", + "@ledgerhq/errors": "^6.12.7", + "events": "^3.3.0" + } + }, + "@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==" + }, "@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -18860,32 +19260,46 @@ } }, "@secretkeylabs/xverse-core": { +<<<<<<< HEAD "version": "1.1.2", "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/1.1.2/d46450c9efbda848963099bc366d873b516d2ab2", "integrity": "sha512-RI/riO+tH/Nd67XHSLNfO5ru0+1zLFkjc+Aw2mt8XivDOwz5t+8456soaQrSS1b5ZsJ6OrvBYEpnYsGuxD5YyA==", +======= + "version": "1.4.0-1004b69", + "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/1.4.0-1004b69/99b3ffc3a8e5106caf6aeaa56d0bc340afc3b267", + "integrity": "sha512-OtZL9c4wfCXmEgcj47YWOKG4uxiU1xaAWySrkkxZ4NwV7zF809VXEqeVyPy1MReVUixwi4Sgc3mVCT317wl0Cw==", +>>>>>>> 8482196 (fix: bump xverse-core version and handle sponsor transaction error) "requires": { + "@bitcoinerlab/secp256k1": "^1.0.2", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", "@scure/btc-signer": "^1.0.0", + "@stacks/auth": "^6.5.1", "@stacks/encryption": "6.1.1", "@stacks/network": "4.3.5", "@stacks/storage": "^6.0.0", "@stacks/transactions": "4.3.5", "@stacks/wallet-sdk": "^5.0.2", + "@zondax/ledger-stacks": "^1.0.4", "axios": "0.27.2", + "base64url": "^3.0.1", "bignumber.js": "9.1.0", - "bip32": "^2.0.6", + "bip32": "^4.0.0", "bip39": "3.0.3", "bitcoin-address-validation": "^2.2.1", - "bitcoinjs-lib": "5.2.0", + "bitcoinjs-lib": "^6.1.3", "bitcoinjs-message": "^2.2.0", "bn.js": "^5.1.3", + "bs58check": "^3.0.1", "buffer": "6.0.3", "c32check": "^2.0.0", + "ecdsa-sig-formatter": "^1.0.11", "ecpair": "^2.1.0", "jsontokens": "^4.0.1", + "ledger-bitcoin": "^0.2.1", "process": "^0.11.10", "util": "^0.12.4", + "uuidv4": "^6.2.13", "varuint-bitcoin": "^1.1.2" }, "dependencies": { @@ -18903,6 +19317,55 @@ "@scure/base": "~1.1.0" } }, + "@stacks/auth": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/auth/-/auth-6.5.4.tgz", + "integrity": "sha512-8Zw+fdKMHdnyDv6EpNnXXTLMWQq31xUYDnFJtFlmr1AnZYPJUbquiqUNTS6Cf2Fk3FSZpsBRDNfWiqss1yGycw==", + "requires": { + "@stacks/common": "^6.5.2", + "@stacks/encryption": "^6.5.4", + "@stacks/network": "^6.5.4", + "@stacks/profile": "^6.5.4", + "cross-fetch": "^3.1.5", + "jsontokens": "^4.0.1" + }, + "dependencies": { + "@stacks/common": { + "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.4", + "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.5.4.tgz", + "integrity": "sha512-osZGQXuY0BtqwiXZHMPgObg4QlqktDp2OYzbkln7A/7B1hwkjPruJ7yMK44wr0SprjaL9JCA8tKhpXxGd/tO8A==", + "requires": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@scure/bip39": "1.1.0", + "@stacks/common": "^6.5.2", + "@types/node": "^18.0.4", + "base64-js": "^1.5.1", + "bs58": "^5.0.0", + "ripemd160-min": "^0.0.6", + "varuint-bitcoin": "^1.1.2" + } + }, + "@stacks/network": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.4.tgz", + "integrity": "sha512-nONCBkTkYyH5yqO80Ith4QHC9PhipObKIGhlZETXd/csdRUkAYzE8/vJCx7LWPh4AiIVMjbEgBrGsjNR3YpGdw==", + "requires": { + "@stacks/common": "^6.5.2", + "cross-fetch": "^3.1.5" + } + } + } + }, "@stacks/encryption": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@stacks/encryption/-/encryption-6.1.1.tgz", @@ -18930,6 +19393,52 @@ } } }, + "@stacks/profile": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/profile/-/profile-6.5.4.tgz", + "integrity": "sha512-YEnt2ACOuPFydNKpxYmZ2c/+UrcuusrNHTChePLyXKmU9u3cX3uBNSvdl1H13H6b2CW3G7inxMerRgssXDzTEA==", + "requires": { + "@stacks/common": "^6.5.2", + "@stacks/network": "^6.5.4", + "@stacks/transactions": "^6.5.4", + "jsontokens": "^4.0.1", + "schema-inspector": "^2.0.2", + "zone-file": "^2.0.0-beta.3" + }, + "dependencies": { + "@stacks/common": { + "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/network": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/network/-/network-6.5.4.tgz", + "integrity": "sha512-nONCBkTkYyH5yqO80Ith4QHC9PhipObKIGhlZETXd/csdRUkAYzE8/vJCx7LWPh4AiIVMjbEgBrGsjNR3YpGdw==", + "requires": { + "@stacks/common": "^6.5.2", + "cross-fetch": "^3.1.5" + } + }, + "@stacks/transactions": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-6.5.4.tgz", + "integrity": "sha512-yQhywPQ5cospYpVPbEMFRTUBZhVvyuI+meJ3fqHpu10IXX4CdURKLtW7N64c71YNXmE1tnsN7hWaPzrwjX0Dyw==", + "requires": { + "@noble/hashes": "1.1.5", + "@noble/secp256k1": "1.7.1", + "@stacks/common": "^6.5.2", + "@stacks/network": "^6.5.4", + "c32check": "^2.0.0", + "lodash.clonedeep": "^4.5.0" + } + } + } + }, "@stacks/transactions": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@stacks/transactions/-/transactions-4.3.5.tgz", @@ -18991,6 +19500,24 @@ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" }, + "bip32": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-4.0.0.tgz", + "integrity": "sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==", + "requires": { + "@noble/hashes": "^1.2.0", + "@scure/base": "^1.1.1", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + } + } + }, "bip39": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.3.tgz", @@ -19008,6 +19535,50 @@ "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" } } + }, + "bitcoinjs-lib": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.3.tgz", + "integrity": "sha512-TYXs/Qf+GNk2nnsB9HrXWqzFuEgCg0Gx+v3UW3B8VuceFHXVvhT+7hRnTSvwkX0i8rz2rtujeU6gFaDcFqYFDw==", + "requires": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.0", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + } + } + }, + "bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "requires": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + } + } + }, + "schema-inspector": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/schema-inspector/-/schema-inspector-2.0.3.tgz", + "integrity": "sha512-Q9mpYxrP3w6CpHRfnh3QLOE1urkGTLvnl7xgVH7fsu0HYJUZenUASUr4j/pf7bAxShh+4R3Ta8ZgVKak1b2wyA==", + "requires": { + "async": "~2.6.3" + } } } }, @@ -20238,6 +20809,11 @@ "@types/jest": "*" } }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "@types/webextension-polyfill": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@types/webextension-polyfill/-/webextension-polyfill-0.9.2.tgz", @@ -20554,6 +21130,17 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@zondax/ledger-stacks": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@zondax/ledger-stacks/-/ledger-stacks-1.0.4.tgz", + "integrity": "sha512-R8CB0CZ2poTzpcG0jhzzXZvXF7axIsmZFhp06aHCUjgz+1df63YbC4tUzyzmseekwqNWnaebWFejQKJ99WiHZA==", + "requires": { + "@babel/runtime": "^7.12.5", + "@ledgerhq/hw-transport": "^6.28.1", + "@stacks/transactions": "^4.1.0", + "varuint-bitcoin": "^1.1.2" + } + }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -22018,6 +22605,11 @@ } } }, + "bip32-path": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz", + "integrity": "sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==" + }, "bip39": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", @@ -24220,8 +24812,7 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "evp_bytestokey": { "version": "1.0.3", @@ -27090,6 +27681,40 @@ "shell-quote": "^1.7.3" } }, + "ledger-bitcoin": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ledger-bitcoin/-/ledger-bitcoin-0.2.2.tgz", + "integrity": "sha512-iZDuY+3tVmtEkJH6NbxCf8RElixKSEA8wt09c7IRvQj3SdJGc9g9oFUe/3bJotog0Ntzq69gDAKYJ4+srLpgHQ==", + "requires": { + "@ledgerhq/hw-transport": "^6.20.0", + "bip32-path": "^0.4.2", + "bitcoinjs-lib": "^6.0.1" + }, + "dependencies": { + "bitcoinjs-lib": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.3.tgz", + "integrity": "sha512-TYXs/Qf+GNk2nnsB9HrXWqzFuEgCg0Gx+v3UW3B8VuceFHXVvhT+7hRnTSvwkX0i8rz2rtujeU6gFaDcFqYFDw==", + "requires": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^2.1.0", + "bs58check": "^3.0.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + } + }, + "bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "requires": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + } + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -28905,6 +29530,21 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -30207,8 +30847,16 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "uuidv4": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz", + "integrity": "sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==", + "requires": { + "@types/uuid": "8.3.4", + "uuid": "8.3.2" + } }, "v8-compile-cache": { "version": "2.3.0", diff --git a/package.json b/package.json index 887aa70c7..1ae4e60f6 100644 --- a/package.json +++ b/package.json @@ -5,15 +5,15 @@ "private": true, "dependencies": { "@react-spring/web": "^9.6.1", - "@secretkeylabs/xverse-core": "1.1.2", + "@secretkeylabs/xverse-core": "1.4.0-1004b69", "@stacks/connect": "^6.10.2", "@stacks/encryption": "4.3.5", "@stacks/stacks-blockchain-api-types": "^6.1.1", + "@stacks/transactions": "^4.3.8", "@tanstack/query-sync-storage-persister": "^4.29.1", "@tanstack/react-query": "^4.29.3", "@tanstack/react-query-devtools": "^4.29.3", "@tanstack/react-query-persist-client": "^4.29.3", - "@stacks/transactions": "^4.3.8", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/src/app/components/tokenImage/index.tsx b/src/app/components/tokenImage/index.tsx index bbd4ff32b..57a793ce6 100644 --- a/src/app/components/tokenImage/index.tsx +++ b/src/app/components/tokenImage/index.tsx @@ -46,9 +46,14 @@ const TickerIconText = styled.h1((props) => ({ fontSize: 13, })); -export default function TokenImage(props: TokenImageProps) { - const { token, loading, fungibleToken, round, size, loaderSize } = props; - +export default function TokenImage({ + token, + loading, + fungibleToken, + size, + loaderSize, + round, +}: TokenImageProps) { const getCoinIcon = useCallback(() => { if (token === 'STX') { return IconStacks; diff --git a/src/app/hooks/useSponsoredTransaction.ts b/src/app/hooks/useSponsoredTransaction.ts new file mode 100644 index 000000000..1b14a99a1 --- /dev/null +++ b/src/app/hooks/useSponsoredTransaction.ts @@ -0,0 +1,32 @@ +import { useEffect, useState } from 'react'; +import { useQuery } from '@tanstack/react-query'; +import { getSponsorInfo } from '@secretkeylabs/xverse-core/api'; + +export const useSponsorInfoQuery = (sponsorUrl?: string) => + useQuery({ + queryKey: ['sponsorInfo'], + queryFn: async () => { + try { + return await getSponsorInfo(sponsorUrl); + } catch (e: any) { + return Promise.reject(e); + } + }, + }); + +export const useSponsoredTransaction = (sponsorUrl?: string) => { + const [isSponsored, setIsSponsored] = useState(false); + + const { error, data: isActive } = useSponsorInfoQuery(sponsorUrl); + useEffect(() => { + if (!error) { + setIsSponsored(!!isActive); + } + }, [isActive, error]); + + return { + isSponsored, + }; +}; + +export default useSponsoredTransaction; diff --git a/src/app/screens/home/index.tsx b/src/app/screens/home/index.tsx index 8526c62c4..50d62e44a 100644 --- a/src/app/screens/home/index.tsx +++ b/src/app/screens/home/index.tsx @@ -100,6 +100,7 @@ const RowButtonContainer = styled.div((props) => ({ flexDirection: 'row', marginTop: props.theme.spacing(11), columnGap: props.theme.spacing(11), + })); const TokenListButtonContainer = styled.div((props) => ({ diff --git a/src/app/screens/swap/swapConfirmation/index.tsx b/src/app/screens/swap/swapConfirmation/index.tsx index 1884bef9b..c4850116f 100644 --- a/src/app/screens/swap/swapConfirmation/index.tsx +++ b/src/app/screens/swap/swapConfirmation/index.tsx @@ -12,6 +12,8 @@ import { useCallback, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { useConfirmSwap } from '@screens/swap/swapConfirmation/useConfirmSwap'; import { AdvanceSettings } from '@screens/swap/swapConfirmation/advanceSettings'; +import { useSponsoredTransaction } from '@hooks/useSponsoredTransaction'; +import SponsoredTransactionIcon from '@assets/img/transactions/CircleWavyCheck.svg'; const TitleText = styled.div((props) => ({ fontSize: 21, @@ -29,7 +31,7 @@ export const ButtonContainer = styled.div((props) => ({ position: 'sticky', bottom: 0, background: props.theme.colors.background.elevation0, - padding: `${props.theme.spacing(12)}px 0` + padding: `${props.theme.spacing(12)}px 0`, })); export const ActionButtonWrap = styled.div((props) => ({ @@ -37,11 +39,26 @@ export const ActionButtonWrap = styled.div((props) => ({ width: '100%', })); +const SponsoredTransactionText = styled.div((props) => ({ + ...props.theme.body_m, + color: props.theme.colors.white[200], + marginTop: props.theme.spacing(10), + display: 'flex', + gap: props.theme.spacing(4), +})); + +const Icon = styled.img((props) => ({ + marginTop: props.theme.spacing(1), + width: 24, + height: 24, +})); + export default function SwapConfirmation() { const { t } = useTranslation('translation', { keyPrefix: 'SWAP_CONFIRM_SCREEN' }); const location = useLocation(); const navigate = useNavigate(); const swap = useConfirmSwap(location.state); + const { isSponsored } = useSponsoredTransaction(); const onCancel = useCallback(() => { navigate('/swap'); @@ -69,7 +86,14 @@ export default function SwapConfirmation() { lpFeeFiatAmount={swap.lpFeeFiatAmount} currency={swap.fromToken.name} /> - + {isSponsored ? ( + + + {t('THIS_IS_A_SPONSORED_TRANSACTION')} + + ) : ( + + )} diff --git a/src/app/screens/swap/swapConfirmation/useConfirmSwap.tsx b/src/app/screens/swap/swapConfirmation/useConfirmSwap.tsx index 33625932d..6201c7554 100644 --- a/src/app/screens/swap/swapConfirmation/useConfirmSwap.tsx +++ b/src/app/screens/swap/swapConfirmation/useConfirmSwap.tsx @@ -2,16 +2,16 @@ import { SwapToken } from '@screens/swap/useSwap'; import { ReactNode } from 'react'; import { Currency } from 'alex-sdk'; import useWalletSelector from '@hooks/useWalletSelector'; -import { broadcastSignedTransaction, signTransaction } from '@secretkeylabs/xverse-core'; import { - makeUnsignedContractCall, - AnchorMode, - PostConditionMode, - StacksTransaction, -} from '@stacks/transactions'; -import type { TxToBroadCast } from 'alex-sdk/dist/helpers/SwapHelper'; + broadcastSignedTransaction, + signTransaction, + sponsorTransaction, +} from '@secretkeylabs/xverse-core'; +import { StacksTransaction } from '@stacks/transactions'; import useNetworkSelector from '@hooks/useNetwork'; import { useNavigate } from 'react-router-dom'; +import useSponsoredTransaction from '@hooks/useSponsoredTransaction'; +import { ApiResponseError } from '@secretkeylabs/xverse-core/types'; export type SwapConfirmationInput = { from: Currency; @@ -28,11 +28,14 @@ export type SwapConfirmationInput = { functionName: string; }; +const XVERSE_SPONSOR_2_URL = 'https://sponsor2.xverse.app'; + export function useConfirmSwap( - input: SwapConfirmationInput + input: SwapConfirmationInput, ): SwapConfirmationInput & { onConfirm: () => Promise } { - const { selectedAccount, seedPhrase, stxPublicKey } = useWalletSelector(); + const { selectedAccount, seedPhrase } = useWalletSelector(); const selectedNetwork = useNetworkSelector(); + const { isSponsored } = useSponsoredTransaction(XVERSE_SPONSOR_2_URL); const navigate = useNavigate(); return { ...input, @@ -41,10 +44,15 @@ export function useConfirmSwap( input.unsignedTx, seedPhrase, selectedAccount?.id ?? 0, - selectedNetwork + selectedNetwork, ); try { - const broadcastResult: string = await broadcastSignedTransaction(signed, selectedNetwork); + let broadcastResult: string | null; + if (isSponsored) { + broadcastResult = await sponsorTransaction(signed, XVERSE_SPONSOR_2_URL); + } else { + broadcastResult = await broadcastSignedTransaction(signed, selectedNetwork); + } if (broadcastResult) { navigate('/tx-status', { state: { @@ -61,7 +69,8 @@ export function useConfirmSwap( state: { txid: '', currency: 'STX', - error: e.message, + error: e instanceof ApiResponseError ? e.data.message : e.message, + sponsored: isSponsored, browserTx: true, }, }); diff --git a/src/assets/img/transactions/CircleWavyCheck.svg b/src/assets/img/transactions/CircleWavyCheck.svg new file mode 100644 index 000000000..13018548a --- /dev/null +++ b/src/assets/img/transactions/CircleWavyCheck.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/locales/en.json b/src/locales/en.json index 9ba1411d6..0fddf99ca 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -600,6 +600,7 @@ "COPIED": "Copied", "COPY_YOUR_ADDRESS": "copy your address", "ADVANCED_SETTING": "Advanced settings", - "ROUTE_DESC": "For the transaction to proceed, your BTC will be swapped for xBTC and STX. There is no additional cost for you and no STX will be added to your wallet." + "ROUTE_DESC": "For the transaction to proceed, your BTC will be swapped for xBTC and STX. There is no additional cost for you and no STX will be added to your wallet.", + "THIS_IS_A_SPONSORED_TRANSACTION": "This is a sponsored transaction, no transaction fees will be deducted from your account." } }