diff --git a/examples/cross-chain-swap/package.json b/examples/cross-chain-swap/package.json index 5ef8702..77022a3 100644 --- a/examples/cross-chain-swap/package.json +++ b/examples/cross-chain-swap/package.json @@ -32,6 +32,6 @@ "stxer": "^0.4.1", "tsx": "^4.19.3", "typescript": "^5.8.2", - "vite": "^6.2.2" + "vite": "^6.2.6" } } diff --git a/examples/cross-chain-swap/pnpm-lock.yaml b/examples/cross-chain-swap/pnpm-lock.yaml index 54dd08c..a7cef12 100644 --- a/examples/cross-chain-swap/pnpm-lock.yaml +++ b/examples/cross-chain-swap/pnpm-lock.yaml @@ -56,7 +56,7 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(tsx@4.19.3)) + version: 4.3.4(vite@6.2.6(@types/node@22.13.10)(tsx@4.19.3)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -70,8 +70,8 @@ importers: specifier: ^5.8.2 version: 5.8.2 vite: - specifier: ^6.2.2 - version: 6.2.2(@types/node@22.13.10)(tsx@4.19.3) + specifier: ^6.2.6 + version: 6.2.6(@types/node@22.13.10)(tsx@4.19.3) packages: @@ -177,150 +177,300 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.3': + resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.1': resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.3': + resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.1': resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.3': + resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.1': resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.3': + resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.1': resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.3': + resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.1': resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.3': + resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.1': resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.1': resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.1': resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.3': + resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.1': resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.3': + resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.1': resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.3': + resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.1': resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.3': + resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.1': resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.3': + resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.1': resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.3': + resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.1': resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.3': + resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.1': resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.3': + resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.1': resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.3': + resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.1': resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.3': + resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.1': resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.3': + resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.1': resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.3': + resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.1': resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.3': + resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.25.1': resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.3': + resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.1': resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.3': + resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.1': resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.3': + resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.1': resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.3': + resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -350,101 +500,117 @@ packages: resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.7.2': + resolution: {integrity: sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - '@rollup/rollup-android-arm-eabi@4.36.0': - resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} + '@noble/secp256k1@1.7.2': + resolution: {integrity: sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ==} + + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.36.0': - resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.36.0': - resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.36.0': - resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.36.0': - resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.36.0': - resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': - resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.36.0': - resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.36.0': - resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.36.0': - resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': - resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': - resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.36.0': - resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.36.0': - resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.36.0': - resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.36.0': - resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.36.0': - resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.36.0': - resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.36.0': - resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] @@ -510,8 +676,8 @@ packages: '@types/bn.js@5.1.6': resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} @@ -519,8 +685,8 @@ packages: '@types/lodash@4.17.16': resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - '@types/node@18.19.80': - resolution: {integrity: sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==} + '@types/node@18.19.87': + resolution: {integrity: sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==} '@types/node@22.13.10': resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} @@ -711,6 +877,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.3: + resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -862,8 +1033,8 @@ packages: nano-time@1.0.0: resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} - nanoid@3.3.10: - resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -955,8 +1126,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.36.0: - resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1025,8 +1196,8 @@ packages: typescript: optional: true - vite@6.2.2: - resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} + vite@6.2.6: + resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -1261,78 +1432,153 @@ snapshots: '@esbuild/aix-ppc64@0.25.1': optional: true + '@esbuild/aix-ppc64@0.25.3': + optional: true + '@esbuild/android-arm64@0.25.1': optional: true + '@esbuild/android-arm64@0.25.3': + optional: true + '@esbuild/android-arm@0.25.1': optional: true + '@esbuild/android-arm@0.25.3': + optional: true + '@esbuild/android-x64@0.25.1': optional: true + '@esbuild/android-x64@0.25.3': + optional: true + '@esbuild/darwin-arm64@0.25.1': optional: true + '@esbuild/darwin-arm64@0.25.3': + optional: true + '@esbuild/darwin-x64@0.25.1': optional: true + '@esbuild/darwin-x64@0.25.3': + optional: true + '@esbuild/freebsd-arm64@0.25.1': optional: true + '@esbuild/freebsd-arm64@0.25.3': + optional: true + '@esbuild/freebsd-x64@0.25.1': optional: true + '@esbuild/freebsd-x64@0.25.3': + optional: true + '@esbuild/linux-arm64@0.25.1': optional: true + '@esbuild/linux-arm64@0.25.3': + optional: true + '@esbuild/linux-arm@0.25.1': optional: true + '@esbuild/linux-arm@0.25.3': + optional: true + '@esbuild/linux-ia32@0.25.1': optional: true + '@esbuild/linux-ia32@0.25.3': + optional: true + '@esbuild/linux-loong64@0.25.1': optional: true + '@esbuild/linux-loong64@0.25.3': + optional: true + '@esbuild/linux-mips64el@0.25.1': optional: true + '@esbuild/linux-mips64el@0.25.3': + optional: true + '@esbuild/linux-ppc64@0.25.1': optional: true + '@esbuild/linux-ppc64@0.25.3': + optional: true + '@esbuild/linux-riscv64@0.25.1': optional: true + '@esbuild/linux-riscv64@0.25.3': + optional: true + '@esbuild/linux-s390x@0.25.1': optional: true + '@esbuild/linux-s390x@0.25.3': + optional: true + '@esbuild/linux-x64@0.25.1': optional: true + '@esbuild/linux-x64@0.25.3': + optional: true + '@esbuild/netbsd-arm64@0.25.1': optional: true + '@esbuild/netbsd-arm64@0.25.3': + optional: true + '@esbuild/netbsd-x64@0.25.1': optional: true + '@esbuild/netbsd-x64@0.25.3': + optional: true + '@esbuild/openbsd-arm64@0.25.1': optional: true + '@esbuild/openbsd-arm64@0.25.3': + optional: true + '@esbuild/openbsd-x64@0.25.1': optional: true + '@esbuild/openbsd-x64@0.25.3': + optional: true + '@esbuild/sunos-x64@0.25.1': optional: true + '@esbuild/sunos-x64@0.25.3': + optional: true + '@esbuild/win32-arm64@0.25.1': optional: true + '@esbuild/win32-arm64@0.25.3': + optional: true + '@esbuild/win32-ia32@0.25.1': optional: true + '@esbuild/win32-ia32@0.25.3': + optional: true + '@esbuild/win32-x64@0.25.1': optional: true + '@esbuild/win32-x64@0.25.3': + optional: true + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -1358,63 +1604,72 @@ snapshots: '@noble/hashes@1.7.1': {} + '@noble/hashes@1.7.2': {} + + '@noble/hashes@1.8.0': {} + '@noble/secp256k1@1.7.1': {} - '@rollup/rollup-android-arm-eabi@4.36.0': + '@noble/secp256k1@1.7.2': {} + + '@rollup/rollup-android-arm-eabi@4.40.0': optional: true - '@rollup/rollup-android-arm64@4.36.0': + '@rollup/rollup-android-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-arm64@4.36.0': + '@rollup/rollup-darwin-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-x64@4.36.0': + '@rollup/rollup-darwin-x64@4.40.0': optional: true - '@rollup/rollup-freebsd-arm64@4.36.0': + '@rollup/rollup-freebsd-arm64@4.40.0': optional: true - '@rollup/rollup-freebsd-x64@4.36.0': + '@rollup/rollup-freebsd-x64@4.40.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.36.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.36.0': + '@rollup/rollup-linux-arm64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.36.0': + '@rollup/rollup-linux-arm64-musl@4.40.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-musl@4.40.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.36.0': + '@rollup/rollup-linux-s390x-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-musl@4.36.0': + '@rollup/rollup-linux-x64-gnu@4.40.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.36.0': + '@rollup/rollup-linux-x64-musl@4.40.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.36.0': + '@rollup/rollup-win32-arm64-msvc@4.40.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.36.0': + '@rollup/rollup-win32-ia32-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true '@scure/base@1.2.4': {} @@ -1422,25 +1677,25 @@ snapshots: '@scure/bip32@1.6.2': dependencies: '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.2 '@scure/base': 1.2.4 '@scure/bip39@1.5.4': dependencies: - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.2 '@scure/base': 1.2.4 '@scure/btc-signer@1.7.0': dependencies: '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.2 '@scure/base': 1.2.4 micro-packed: 0.7.2 '@stacks/common@6.16.0': dependencies: '@types/bn.js': 5.1.6 - '@types/node': 18.19.80 + '@types/node': 18.19.87 '@stacks/common@7.0.2': {} @@ -1537,7 +1792,7 @@ snapshots: dependencies: '@types/node': 22.13.10 - '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} '@types/lodash-es@4.17.12': dependencies: @@ -1545,7 +1800,7 @@ snapshots: '@types/lodash@4.17.16': {} - '@types/node@18.19.80': + '@types/node@18.19.87': dependencies: undici-types: 5.26.5 @@ -1561,14 +1816,14 @@ snapshots: dependencies: csstype: 3.1.3 - '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(tsx@4.19.3))': + '@vitejs/plugin-react@4.3.4(vite@6.2.6(@types/node@22.13.10)(tsx@4.19.3))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.2(@types/node@22.13.10)(tsx@4.19.3) + vite: 6.2.6(@types/node@22.13.10)(tsx@4.19.3) transitivePeerDependencies: - supports-color @@ -1773,6 +2028,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.1 '@esbuild/win32-x64': 0.25.1 + esbuild@0.25.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.3 + '@esbuild/android-arm': 0.25.3 + '@esbuild/android-arm64': 0.25.3 + '@esbuild/android-x64': 0.25.3 + '@esbuild/darwin-arm64': 0.25.3 + '@esbuild/darwin-x64': 0.25.3 + '@esbuild/freebsd-arm64': 0.25.3 + '@esbuild/freebsd-x64': 0.25.3 + '@esbuild/linux-arm': 0.25.3 + '@esbuild/linux-arm64': 0.25.3 + '@esbuild/linux-ia32': 0.25.3 + '@esbuild/linux-loong64': 0.25.3 + '@esbuild/linux-mips64el': 0.25.3 + '@esbuild/linux-ppc64': 0.25.3 + '@esbuild/linux-riscv64': 0.25.3 + '@esbuild/linux-s390x': 0.25.3 + '@esbuild/linux-x64': 0.25.3 + '@esbuild/netbsd-arm64': 0.25.3 + '@esbuild/netbsd-x64': 0.25.3 + '@esbuild/openbsd-arm64': 0.25.3 + '@esbuild/openbsd-x64': 0.25.3 + '@esbuild/sunos-x64': 0.25.3 + '@esbuild/win32-arm64': 0.25.3 + '@esbuild/win32-ia32': 0.25.3 + '@esbuild/win32-x64': 0.25.3 + escalade@3.2.0: {} eventemitter3@5.0.1: {} @@ -1865,8 +2148,8 @@ snapshots: jsontokens@4.0.1: dependencies: - '@noble/hashes': 1.7.1 - '@noble/secp256k1': 1.7.1 + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 1.7.2 base64-js: 1.5.1 lodash-es@4.17.21: {} @@ -1908,7 +2191,7 @@ snapshots: dependencies: big-integer: 1.6.52 - nanoid@3.3.10: {} + nanoid@3.3.11: {} node-fetch@2.7.0: dependencies: @@ -1926,7 +2209,7 @@ snapshots: dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.8.0 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 abitype: 1.0.8(typescript@5.8.2) @@ -1942,7 +2225,7 @@ snapshots: postcss@8.5.3: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -1980,29 +2263,30 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.36.0: + rollup@4.40.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.36.0 - '@rollup/rollup-android-arm64': 4.36.0 - '@rollup/rollup-darwin-arm64': 4.36.0 - '@rollup/rollup-darwin-x64': 4.36.0 - '@rollup/rollup-freebsd-arm64': 4.36.0 - '@rollup/rollup-freebsd-x64': 4.36.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 - '@rollup/rollup-linux-arm-musleabihf': 4.36.0 - '@rollup/rollup-linux-arm64-gnu': 4.36.0 - '@rollup/rollup-linux-arm64-musl': 4.36.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 - '@rollup/rollup-linux-riscv64-gnu': 4.36.0 - '@rollup/rollup-linux-s390x-gnu': 4.36.0 - '@rollup/rollup-linux-x64-gnu': 4.36.0 - '@rollup/rollup-linux-x64-musl': 4.36.0 - '@rollup/rollup-win32-arm64-msvc': 4.36.0 - '@rollup/rollup-win32-ia32-msvc': 4.36.0 - '@rollup/rollup-win32-x64-msvc': 4.36.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 scheduler@0.25.0: {} @@ -2090,11 +2374,11 @@ snapshots: - utf-8-validate - zod - vite@6.2.2(@types/node@22.13.10)(tsx@4.19.3): + vite@6.2.6(@types/node@22.13.10)(tsx@4.19.3): dependencies: - esbuild: 0.25.1 + esbuild: 0.25.3 postcss: 8.5.3 - rollup: 4.36.0 + rollup: 4.40.0 optionalDependencies: '@types/node': 22.13.10 fsevents: 2.3.3 diff --git a/src/sdkUtils/bridgeFromBRC20.ts b/src/sdkUtils/bridgeFromBRC20.ts index 44806ab..d6579e4 100644 --- a/src/sdkUtils/bridgeFromBRC20.ts +++ b/src/sdkUtils/bridgeFromBRC20.ts @@ -109,6 +109,11 @@ export interface BridgeFromBRC20Input { networkFeeChangeAddress: string networkFeeChangeAddressScriptPubKey: Uint8Array + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] + signPsbt: BridgeFromBRC20Input_signPsbtFn sendTransaction: (tx: { hex: string @@ -124,6 +129,10 @@ export interface BridgeFromBRC20Input { export interface BridgeFromBRC20Output { txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] } export async function bridgeFromBRC20( @@ -395,6 +404,7 @@ async function bridgeFromBRC20_toStacks( withHardLinkageOutput: false, bridgeFeeOutput, swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], }, createdOrder, ) @@ -444,6 +454,7 @@ async function bridgeFromBRC20_toEVM( withHardLinkageOutput: false, bridgeFeeOutput, swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], }, createdOrder, ) @@ -506,6 +517,7 @@ async function bridgeFromBRC20_toBitcoin( withHardLinkageOutput: true, bridgeFeeOutput, swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], }, createdOrder, ) @@ -568,6 +580,7 @@ async function bridgeFromBRC20_toMeta( withHardLinkageOutput: true, bridgeFeeOutput, swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], }, createdOrder, ) @@ -583,7 +596,13 @@ async function broadcastBRC20Transaction( sendTransaction: BridgeFromBRC20Input["sendTransaction"] }, createdOrder: CreateBridgeOrderResult, -): Promise<{ txid: string }> { +): Promise<{ + txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] +}> { const pegInAddress = getMetaPegInAddress(info.fromChain, info.toChain) if (pegInAddress == null) { throw new UnsupportedBridgeRouteError( @@ -665,7 +684,10 @@ async function broadcastBRC20Transaction( ) } - return { txid: delegateBroadcastedTxId } + return { + txid: delegateBroadcastedTxId, + extraOutputs: tx.extraOutputs, + } } type ConstructBRC20TransactionInput = PrepareBRC20TransactionInput & { @@ -694,15 +716,24 @@ async function constructBRC20Transaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] }> { const txOptions = await prepareBRC20Transaction(sdkContext, info) + const recipients = + txOptions.changeAmount > 0n + ? txOptions.recipients.concat({ + addressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, + satsAmount: txOptions.changeAmount, + }) + : txOptions.recipients + const tx = createTransaction( txOptions.inputs, - txOptions.recipients.concat({ - addressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, - satsAmount: txOptions.changeAmount, - }), + recipients, txOptions.opReturnScripts ?? [], ) @@ -749,6 +780,7 @@ async function constructBRC20Transaction( return { hex: signedTx.hex, revealOutput: txOptions.revealOutput, + extraOutputs: txOptions.extraOutputs, } } @@ -771,6 +803,10 @@ export type PrepareBRC20TransactionInput = KnownRoute_FromBRC20 & { satsAmount: BigNumber } hardLinkageOutput: null | BitcoinAddress + extraOutputs: { + address: BitcoinAddress + satsAmount: bigint + }[] } /** * Bitcoin Tx Structure: @@ -781,6 +817,7 @@ export type PrepareBRC20TransactionInput = KnownRoute_FromBRC20 & { * * Peg-in order data * * Bridge fee (optional) * * Hard linkage (optional) + * * ...extra outputs * * BTC change (optional) * * (with bridge fee example tx) https://mempool.space/testnet/tx/e127a2d3c343675a1cde8ca8d10ae5621b40d309ce44b4f45bedc10499f8d596 @@ -807,6 +844,10 @@ export async function prepareBRC20Transaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] } > { const bitcoinNetwork = @@ -858,6 +899,10 @@ export async function prepareBRC20Transaction( satsAmount: BITCOIN_OUTPUT_MINIMUM_AMOUNT, }, ]), + ...info.extraOutputs.map(o => ({ + addressScriptPubKey: o.address.scriptPubKey, + satsAmount: o.satsAmount, + })), ], changeAddressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, feeRate: info.networkFeeRate, @@ -872,6 +917,7 @@ export async function prepareBRC20Transaction( pegInOrderDataCausedOffset + (info.bridgeFeeOutput == null ? 0 : 1) const hardLinkageCausedOffset = bridgeFeeCausedOffset + (info.hardLinkageOutput == null ? 0 : 1) + const extraOutputsStartOffset = hardLinkageCausedOffset return { ...result, @@ -899,5 +945,9 @@ export async function prepareBRC20Transaction( index: hardLinkageCausedOffset - 1, satsAmount: BITCOIN_OUTPUT_MINIMUM_AMOUNT, }, + extraOutputs: info.extraOutputs.map((o, i) => ({ + index: extraOutputsStartOffset + i, + satsAmount: o.satsAmount, + })), } } diff --git a/src/sdkUtils/bridgeFromBitcoin.ts b/src/sdkUtils/bridgeFromBitcoin.ts index eb1a084..5c08321 100644 --- a/src/sdkUtils/bridgeFromBitcoin.ts +++ b/src/sdkUtils/bridgeFromBitcoin.ts @@ -89,9 +89,16 @@ export interface BridgeFromBitcoinInput { toAddressScriptPubKey?: Uint8Array amount: SDKNumber - networkFeeRate: bigint swapRoute?: SwapRoute_WithMinimumAmountsToReceive_Public + + networkFeeRate: bigint reselectSpendableUTXOs: BridgeFromBitcoinInput_reselectSpendableUTXOs + + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] + signPsbt: BridgeFromBitcoinInput_signPsbtFn sendTransaction: (tx: { hex: string @@ -107,6 +114,10 @@ export interface BridgeFromBitcoinInput { export interface BridgeFromBitcoinOutput { txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] } export async function bridgeFromBitcoin( @@ -289,7 +300,12 @@ async function bridgeFromBitcoin_toStacks( return broadcastBitcoinTransaction( sdkContext, - { ...info, withHardLinkageOutput: false, swapRoute: info.swapRoute }, + { + ...info, + withHardLinkageOutput: false, + swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], + }, createdOrder, ) } @@ -331,7 +347,12 @@ async function bridgeFromBitcoin_toEVM( return broadcastBitcoinTransaction( sdkContext, - { ...info, withHardLinkageOutput: false, swapRoute: info.swapRoute }, + { + ...info, + withHardLinkageOutput: false, + swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], + }, createdOrder, ) } @@ -386,7 +407,12 @@ async function bridgeFromBitcoin_toMeta( return broadcastBitcoinTransaction( sdkContext, - { ...info, withHardLinkageOutput: true, swapRoute: info.swapRoute }, + { + ...info, + withHardLinkageOutput: true, + swapRoute: info.swapRoute, + extraOutputs: info.extraOutputs ?? [], + }, createdOrder, ) } @@ -401,7 +427,13 @@ async function broadcastBitcoinTransaction( sendTransaction: BridgeFromBitcoinInput["sendTransaction"] }, createdOrder: CreateBridgeOrderResult, -): Promise<{ txid: string }> { +): Promise<{ + txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] +}> { const pegInAddress = getBTCPegInAddress(info.fromChain, info.toChain) if (pegInAddress == null) { throw new UnsupportedBridgeRouteError( @@ -486,7 +518,10 @@ async function broadcastBitcoinTransaction( ) } - return { txid: delegateBroadcastedTxId } + return { + txid: delegateBroadcastedTxId, + extraOutputs: tx.extraOutputs, + } } type ConstructBitcoinTransactionInput = PrepareBitcoinTransactionInput & { @@ -495,7 +530,6 @@ type ConstructBitcoinTransactionInput = PrepareBitcoinTransactionInput & { | SwapRouteViaALEX_WithMinimumAmountsToReceive_Public | SwapRouteViaEVMDexAggregator_WithMinimumAmountsToReceive_Public signPsbt: BridgeFromBitcoinInput["signPsbt"] - pegInAddress: BitcoinAddress validateBridgeOrder: ( pegInTx: Uint8Array, revealTx: undefined | Uint8Array, @@ -511,6 +545,10 @@ async function constructBitcoinTransaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] }> { const txOptions = await prepareBitcoinTransaction(sdkContext, info) @@ -565,6 +603,7 @@ async function constructBitcoinTransaction( return { hex: signedTx.hex, revealOutput: txOptions.revealOutput, + extraOutputs: txOptions.extraOutputs, } } @@ -578,6 +617,10 @@ export type PrepareBitcoinTransactionInput = KnownRoute_FromBitcoin & { orderData: Uint8Array hardLinkageOutput: null | BitcoinAddress pegInAddress: BitcoinAddress + extraOutputs: { + address: BitcoinAddress + satsAmount: bigint + }[] } /** * Bitcoin Tx Structure: @@ -603,6 +646,10 @@ export async function prepareBitcoinTransaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] } > { const bitcoinNetwork = @@ -642,6 +689,10 @@ export async function prepareBitcoinTransaction( satsAmount: BITCOIN_OUTPUT_MINIMUM_AMOUNT, }, ]), + ...info.extraOutputs.map(o => ({ + addressScriptPubKey: o.address.scriptPubKey, + satsAmount: o.satsAmount, + })), ], changeAddressScriptPubKey: info.fromAddressScriptPubKey, feeRate: info.networkFeeRate, @@ -650,20 +701,30 @@ export async function prepareBitcoinTransaction( ), }) + const pegInOrderDataCausedOffset = 1 + const pegInBitcoinTokenCausedOffset = pegInOrderDataCausedOffset + 1 + const hardLinkageCausedOffset = + pegInBitcoinTokenCausedOffset + (info.hardLinkageOutput == null ? 0 : 1) + const extraOutputsStartOffset = hardLinkageCausedOffset + return { ...result, bitcoinNetwork, revealOutput: { - index: 0, + index: pegInOrderDataCausedOffset - 1, satsAmount: recipient.satsAmount, }, hardLinkageOutput: - info.hardLinkageOutput == null + hardLinkageCausedOffset == null ? undefined : { - index: 2, + index: hardLinkageCausedOffset - 1, satsAmount: BITCOIN_OUTPUT_MINIMUM_AMOUNT, }, + extraOutputs: info.extraOutputs.map((o, i) => ({ + index: extraOutputsStartOffset + i, + satsAmount: o.satsAmount, + })), } } diff --git a/src/sdkUtils/bridgeFromRunes.ts b/src/sdkUtils/bridgeFromRunes.ts index 27bd07f..0991b66 100644 --- a/src/sdkUtils/bridgeFromRunes.ts +++ b/src/sdkUtils/bridgeFromRunes.ts @@ -120,6 +120,11 @@ export interface BridgeFromRunesInput { networkFeeChangeAddressScriptPubKey: Uint8Array reselectSpendableNetworkFeeUTXOs: BridgeFromRunesInput_reselectSpendableNetworkFeeUTXOs + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] + signPsbt: BridgeFromRunesInput_signPsbtFn sendTransaction: (tx: { hex: string @@ -135,6 +140,10 @@ export interface BridgeFromRunesInput { export interface BridgeFromRunesOutput { txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] } export async function bridgeFromRunes( @@ -336,6 +345,7 @@ async function bridgeFromRunes_toStacks( ...info, withHardLinkageOutput: false, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], swapRoute: info.swapRoute, }, createdOrder, @@ -385,6 +395,7 @@ async function bridgeFromRunes_toEVM( ...info, withHardLinkageOutput: false, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], swapRoute: info.swapRoute, }, createdOrder, @@ -447,6 +458,7 @@ async function bridgeFromRunes_toBitcoin( ...info, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], swapRoute: info.swapRoute, }, createdOrder, @@ -509,6 +521,7 @@ async function bridgeFromRunes_toMeta( ...info, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], swapRoute: info.swapRoute, }, createdOrder, @@ -525,7 +538,13 @@ async function broadcastRunesTransaction( sendTransaction: BridgeFromRunesInput["sendTransaction"] }, createdOrder: CreateBridgeOrderResult, -): Promise<{ txid: string }> { +): Promise<{ + txid: string + extraOutputs: { + index: number + satsAmount: bigint + }[] +}> { const pegInAddress = getMetaPegInAddress(info.fromChain, info.toChain) if (pegInAddress == null) { throw new UnsupportedBridgeRouteError( @@ -607,7 +626,10 @@ async function broadcastRunesTransaction( ) } - return { txid: delegateBroadcastedTxId } + return { + txid: delegateBroadcastedTxId, + extraOutputs: tx.extraOutputs, + } } type ConstructRunesTransactionInput = PrepareRunesTransactionInput & { @@ -636,6 +658,10 @@ async function constructRunesTransaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] }> { const txOptions = await prepareRunesTransaction( sdkContext, @@ -643,12 +669,17 @@ async function constructRunesTransaction( info, ) + const recipients = + txOptions.changeAmount > 0n + ? txOptions.recipients.concat({ + addressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, + satsAmount: txOptions.changeAmount, + }) + : txOptions.recipients + const tx = createTransaction( txOptions.inputs, - txOptions.recipients.concat({ - addressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, - satsAmount: txOptions.changeAmount, - }), + recipients, txOptions.opReturnScripts ?? [], ) @@ -695,6 +726,7 @@ async function constructRunesTransaction( return { hex: signedTx.hex, revealOutput: txOptions.revealOutput, + extraOutputs: txOptions.extraOutputs, } } @@ -718,6 +750,10 @@ export type PrepareRunesTransactionInput = KnownRoute_FromRunes & { satsAmount: BigNumber } hardLinkageOutput: null | BitcoinAddress + extraOutputs: { + address: BitcoinAddress + satsAmount: bigint + }[] } /** * Bitcoin Tx Structure: @@ -729,6 +765,7 @@ export type PrepareRunesTransactionInput = KnownRoute_FromRunes & { * * Bridge fee (optional) * * Hard linkage (optional) * * Peg-in Rune tokens + * * ...extra outputs * * BTC change (optional) * * Runestone * @@ -757,6 +794,10 @@ export async function prepareRunesTransaction( index: number satsAmount: bigint } + extraOutputs: { + index: number + satsAmount: bigint + }[] } > { const bitcoinNetwork = @@ -845,6 +886,7 @@ export async function prepareRunesTransaction( const hardLinkageCausedOffset = bridgeFeeCausedOffset + (info.hardLinkageOutput == null ? 0 : 1) const pegInRuneTokensCausedOffset = hardLinkageCausedOffset + 1 + const extraOutputsStartOffset = pegInRuneTokensCausedOffset const runesOpReturnScript = toBitcoinOpReturnScript({ edicts: [ @@ -907,6 +949,10 @@ export async function prepareRunesTransaction( }), ), }, + ...info.extraOutputs.map(o => ({ + addressScriptPubKey: o.address.scriptPubKey, + satsAmount: o.satsAmount, + })), ], changeAddressScriptPubKey: info.networkFeeChangeAddressScriptPubKey, feeRate: info.networkFeeRate, @@ -942,6 +988,10 @@ export async function prepareRunesTransaction( index: hardLinkageCausedOffset - 1, satsAmount: BITCOIN_OUTPUT_MINIMUM_AMOUNT, }, + extraOutputs: info.extraOutputs.map((o, i) => ({ + index: extraOutputsStartOffset + i, + satsAmount: o.satsAmount, + })), } } diff --git a/src/sdkUtils/estimateBridgeTransactionFromBRC20.ts b/src/sdkUtils/estimateBridgeTransactionFromBRC20.ts index ee3dad6..6d2712f 100644 --- a/src/sdkUtils/estimateBridgeTransactionFromBRC20.ts +++ b/src/sdkUtils/estimateBridgeTransactionFromBRC20.ts @@ -1,5 +1,8 @@ import { UTXOSpendable } from "../bitcoinHelpers" -import { getBitcoinHardLinkageAddress } from "../bitcoinUtils/btcAddresses" +import { + BitcoinAddress, + getBitcoinHardLinkageAddress, +} from "../bitcoinUtils/btcAddresses" import { SDK_NAME } from "../bitcoinUtils/constants" import { getMetaPegInAddress } from "../metaUtils/btcAddresses" import { isSupportedBRC20Route } from "../metaUtils/peggingHelpers" @@ -65,6 +68,11 @@ export interface EstimateBridgeTransactionFromBRC20Input { networkFeeChangeAddress: string networkFeeChangeAddressScriptPubKey: Uint8Array reselectSpendableNetworkFeeUTXOs: BridgeFromBRC20Input_reselectSpendableNetworkFeeUTXOs + + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] } export interface EstimateBridgeTransactionFromBRC20Output { @@ -203,6 +211,7 @@ async function estimateFromBRC20_toStacks( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -246,6 +255,7 @@ async function estimateFromBRC20_toEVM( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -303,6 +313,7 @@ async function estimateFromBRC20_toBitcoin( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -360,6 +371,7 @@ async function estimateFromBRC20_toMeta( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } diff --git a/src/sdkUtils/estimateBridgeTransactionFromBitcoin.ts b/src/sdkUtils/estimateBridgeTransactionFromBitcoin.ts index 372bfe3..5a088fb 100644 --- a/src/sdkUtils/estimateBridgeTransactionFromBitcoin.ts +++ b/src/sdkUtils/estimateBridgeTransactionFromBitcoin.ts @@ -1,4 +1,5 @@ import { + BitcoinAddress, getBitcoinHardLinkageAddress, getBTCPegInAddress, } from "../bitcoinUtils/btcAddresses" @@ -65,6 +66,11 @@ export interface EstimateBridgeTransactionFromBitcoinInput { | SwapRouteViaEVMDexAggregator_WithMinimumAmountsToReceive_Public networkFeeRate: bigint reselectSpendableUTXOs: BridgeFromBitcoinInput_reselectSpendableUTXOs + + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] } export interface EstimateBridgeTransactionFromBitcoinOutput { @@ -187,6 +193,7 @@ async function estimateFromBitcoin_toStacks( ...info, orderData: createdOrder.data, withHardLinkageOutput: true, + extraOutputs: info.extraOutputs ?? [], }) } @@ -227,6 +234,7 @@ async function estimateFromBitcoin_toEVM( ...info, orderData: createdOrder.data, withHardLinkageOutput: true, + extraOutputs: info.extraOutputs ?? [], }) } @@ -281,6 +289,7 @@ async function estimateFromBitcoin_toMeta( ...info, orderData: createdOrder.data, withHardLinkageOutput: true, + extraOutputs: info.extraOutputs ?? [], }) } diff --git a/src/sdkUtils/estimateBridgeTransactionFromRunes.ts b/src/sdkUtils/estimateBridgeTransactionFromRunes.ts index 6c9c806..9e3a821 100644 --- a/src/sdkUtils/estimateBridgeTransactionFromRunes.ts +++ b/src/sdkUtils/estimateBridgeTransactionFromRunes.ts @@ -1,4 +1,7 @@ -import { getBitcoinHardLinkageAddress } from "../bitcoinUtils/btcAddresses" +import { + BitcoinAddress, + getBitcoinHardLinkageAddress, +} from "../bitcoinUtils/btcAddresses" import { SDK_NAME } from "../bitcoinUtils/constants" import { getMetaPegInAddress } from "../metaUtils/btcAddresses" import { isSupportedRunesRoute } from "../metaUtils/peggingHelpers" @@ -66,6 +69,11 @@ export interface EstimateBridgeTransactionFromRunesInput { networkFeeChangeAddress: string networkFeeChangeAddressScriptPubKey: Uint8Array reselectSpendableNetworkFeeUTXOs: BridgeFromRunesInput_reselectSpendableNetworkFeeUTXOs + + extraOutputs?: { + address: BitcoinAddress + satsAmount: bigint + }[] } export interface EstimateBridgeTransactionFromRunesOutput { @@ -204,6 +212,7 @@ async function estimateFromRunes_toStacks( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -247,6 +256,7 @@ async function estimateFromRunes_toEVM( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -304,6 +314,7 @@ async function estimateFromRunes_toBitcoin( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } @@ -361,6 +372,7 @@ async function estimateFromRunes_toMeta( orderData: createdOrder.data, withHardLinkageOutput: true, bridgeFeeOutput, + extraOutputs: info.extraOutputs ?? [], }) } diff --git a/src/utils/objectHelper.ts b/src/utils/objectHelper.ts index 4c1a463..b40b557 100644 --- a/src/utils/objectHelper.ts +++ b/src/utils/objectHelper.ts @@ -4,3 +4,7 @@ export function entries(obj: T): [keyof T, T[keyof T]][] { export function fromEntries(entries: [keyof T, T[keyof T]][]): T { return Object.fromEntries(entries) as T } + +export function pick(obj: T, keys: K[]): Pick { + return Object.fromEntries(keys.map(key => [key, obj[key]])) as Pick +}