{"_id":"@consenlabs/tcx-wasm","_rev":"12-f0067810f407e7bd31ba74c20553791f","name":"@consenlabs/tcx-wasm","dist-tags":{"latest":"0.9.1"},"versions":{"0.1.0":{"name":"@consenlabs/tcx-wasm","version":"0.1.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.1.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"6709a0f575747cc02dd98b02830ee4aa50a40770","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.1.0.tgz","fileCount":6,"integrity":"sha512-yFAyW9hNXrB0Fux5Lw7SCrYLTPeCM1tJpa4sQSXVw5wxMAVh1pOF1QJrjlHSKizJWr70WNBRU6oikfG8ID1Y9Q==","signatures":[{"sig":"MEUCICCHMTxYwZ5XF8n9ibDE81MHJUfaBP+/V0mhsMMvNqs/AiEAnMbesv7xcbbv9/byS4+WxShLDzP+iAavF1SbUBy9VEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889159},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"8c22c8f9d09514b1abb5f3c50eb3ccad38a3319e","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.1.0_1775611051658_0.7042784478281061","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@consenlabs/tcx-wasm","version":"0.2.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.2.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"e7b8963051d39bcc9771992629a625da9d1d5536","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.2.0.tgz","fileCount":6,"integrity":"sha512-orCIJARKLeBx1dlZ9ViD2V6q2vxlAF+rNAL38VtgWw58qco6+6lsMD8cS8sX+dccd6BdlXfwGWU8uiWOSrgfgg==","signatures":[{"sig":"MEQCIB6jzvS/+xbWa4K6bpE7L10nxNEFUGDLhVcT+DGCWMQLAiA1JVIzpi5AjIiIFyV5yM8XYqZyqIkwv3sbTqzmXhlwcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":881704},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"27a1c5bff7cf746a7ce90c6d12ce02eec4f5acd1","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.2.0_1775628108522_0.4836503717015579","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@consenlabs/tcx-wasm","version":"0.3.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.3.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"095df7671131829a7bf064e593860b48dc9c9dbb","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.3.0.tgz","fileCount":6,"integrity":"sha512-Mvmk/Lq5xi5CfAi/R96mYrVGofHs4T5OvwsQjPfSA15SY1t2tpK+/HCICt43EEkFB8+U7zha7qgDiwlM47jnUw==","signatures":[{"sig":"MEYCIQDuBEJ4h3akguPsWVAeHQR5+m6enGiLaBR0Ah++HoBWlwIhANiAt8LbxEnHECuJU4vKJUcEmcxRTCTGIy1GNs3FAb8a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":886044},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"68168fcd89f3aa7d1efef5452def329c0a0ce3a5","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.3.0_1775637093965_0.3231979439617092","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@consenlabs/tcx-wasm","version":"0.4.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.4.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"d953cab39a825b2b26d5cf547bb3455af2ed4d06","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.4.0.tgz","fileCount":6,"integrity":"sha512-/OUBBCmFUy69hLXxLVwHlWkhV2hueVTboMPWoV1uNDzkEKa6Ws3oi2uEqP0+XTC9Hu8NGP0TupF/EijCHdaRfA==","signatures":[{"sig":"MEUCIByQfZIrJ8AUtNpaBJhGadgPfMJgGYWAKB6ODFY3lOxwAiEAv+O74Gm1Vy8eZp4phTbW/Hfh1TwiOmDfeU5EXa6BMJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":885945},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"d7ceeb2039f2d1c25b6c91ac9375452fdde4af33","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.4.0_1775638063119_0.9673162463187779","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@consenlabs/tcx-wasm","version":"0.5.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.5.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"63c0577ec7caa061cc594519cf69c718c6856613","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.5.0.tgz","fileCount":6,"integrity":"sha512-SyyJBl6PljeHBdi6r9l0EbiUEMfmm2ArRcg5DGLW6Bsh5d8rmel3UOibbtHNxE8Kr72ocWsZ3HGhWchHMs1fOw==","signatures":[{"sig":"MEQCIGC0INRdacH9i4YB6AJuMMupOhwFl5vEMujqx+fnxg2dAiBAnTNsMkNpvcWNHUi3vCyFjcNfJE8SKMSSrKB4MBIxsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":952443},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"900367486c462fcf3829635b47470a02cf1e3652","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.5.0_1775656396591_0.7042952719781459","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@consenlabs/tcx-wasm","version":"0.6.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.6.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"0ff4ed7856dfd813702c3b2520908e850ff23d42","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.6.0.tgz","fileCount":6,"integrity":"sha512-ZidzT6uct7pMmTQk29iPMBiiIxonCIr0/E0vZBsKmq3kbQgbFTuxGXK4bE1Nt0k6GDZwPigFtuUJAImX2dOprg==","signatures":[{"sig":"MEQCICkRGXrCbeJE3pPeLp9WhGefuW0ZEV9di43jcmkN4RaTAiAjEBXJ6uoKk0h24LJNGM9ONmSnN2mryRgBzMJ6UjFT6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980760},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"e81c58a3975ff77fa2856fd52be5255c58f150ac","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.6.0_1775706698938_0.9668993967861119","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@consenlabs/tcx-wasm","version":"0.6.1","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.6.1","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"ed0c14bf602782d7fd7f1fe6cd3abad47d5fff4f","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.6.1.tgz","fileCount":6,"integrity":"sha512-a++FhKebABWhk6J47iVIi7IAdn1KL82+I9rp56rXKkhyx2ElS1X90L6H3A2r0rcv27DDWluHoFXVo22/w6W+TQ==","signatures":[{"sig":"MEUCIQDZ4BNk6lgsEAfRRMP3uQizLJd6BzkYQ9L0XVjnf4QkKgIgPjDJDtlEjj7mDqKBCZCuO/JwoJ6EXFTioBjJvSXSS84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":988294},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"e81c58a3975ff77fa2856fd52be5255c58f150ac","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.6.1_1775707199844_0.5187449529755233","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@consenlabs/tcx-wasm","version":"0.7.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.7.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"25ae8c9d065623117f3d88e18a6a645fb6870b65","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.7.0.tgz","fileCount":6,"integrity":"sha512-tIu/AAUGu8aDuIMJO/75KciPYmots7ht1L7mPZ7Mt2+RBHlZHiB7Wu6vtQkDrZtxVGpYXj1FPGR4aXWAgzb3dA==","signatures":[{"sig":"MEUCIE2eh8zt4F0vRSiBAkYhY6nvpTxQwoLoF1QxFEfrjoEkAiEAwwtyDDb3j2aEcMUqo33xOIY0QOvJmRVcWdC+KKbXEuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":990501},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"17b95ccd96cc71e6d00d35d0f0ff828e1bc457ab","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.7.0_1775715678593_0.2623272266981953","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@consenlabs/tcx-wasm","version":"0.8.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.8.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"0b90b11b5b833935e24d10819afcef4a6c546829","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.8.0.tgz","fileCount":6,"integrity":"sha512-uevgO2Hw2cCMWy0lyvWKD3B+P1JGUVp9mQrjs96PSUFp0vA1RYE/Aej0yTQIujgc3QPYzeFy2OS+x2igXzK4Dw==","signatures":[{"sig":"MEQCIGn7R1FKBwhodRJVv4kNa90o5UhKfXnzF2smwA7cuqaCAiBz2dPzRlo3jYbZMkQINILN91IXIEcji8J80906LLl5dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":995645},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"531ac1133755aa8aa9d366cc25d81eb5e462f0e3","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.8.0_1775812396964_0.9873459517957635","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@consenlabs/tcx-wasm","version":"0.9.0","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.9.0","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"f35e0724a7e60394e767264ef3bfa5029124777b","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.9.0.tgz","fileCount":6,"integrity":"sha512-cCOb3WHYWp+RkyS3Z5qw1t/TUvr5WLIxcTvEw170bcByR3K3FGvgkPKA2FCxQrwTnHoTpZntpVAu6h08mhRN0g==","signatures":[{"sig":"MEYCIQDe0RGJ4i7AHA9BO8VEhFfQoBaK6AWfqScRR0OSdzH/0QIhAOF+UL5N8CKRdN2M4PuIBRyFvzGC9XNZ9Xhm6GsSQds2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2391599},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","gitHead":"ba2b296c75e603f7c4a7aecd425d367a64f88ec4","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.9.0_1778142391353_0.6058187769597396","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@consenlabs/tcx-wasm","version":"0.9.1","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"license":"Apache-2.0","_id":"@consenlabs/tcx-wasm@0.9.1","maintainers":[{"name":"consenlabs_official","email":"xwz@token.im"},{"name":"circlehotarux","email":"circlehotarux@gmail.com"},{"name":"xuneal","email":"imxuneal@gmail.com"}],"homepage":"https://github.com/consenlabs/token-core-monorepo#readme","bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"dist":{"shasum":"05157954aa7b0374e115b358a2922435fc6f538e","tarball":"https://registry.npmjs.org/@consenlabs/tcx-wasm/-/tcx-wasm-0.9.1.tgz","fileCount":6,"integrity":"sha512-dMBQDma4hUuuUpXIoF5naKRA1q7Xw1XjNOo1aAY/pQpaJnN7za0xPnMWm0P6KI4d+DQYVus+Oip+EqhJdfBG2A==","signatures":[{"sig":"MEUCIAJ23GF77Oe19t85w8rWBHong3yDoGpfws46TuiBNtiPAiEA0Abn/0zw9n+a0NSsmgHBrOfDO05zbI3/iG3OrYRUaHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2391599},"type":"module","types":"tcx_wasm.d.ts","module":"tcx_wasm.js","_npmUser":{"name":"xuneal","email":"imxuneal@gmail.com"},"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"_npmVersion":"10.9.4","description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","directories":{},"sideEffects":["./tcx_wasm.js","./snippets/*"],"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tcx-wasm_0.9.1_1778145865007_0.598128390904044","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-08T01:17:31.539Z","modified":"2026-06-24T03:19:16.249Z","0.1.0":"2026-04-08T01:17:31.833Z","0.2.0":"2026-04-08T06:01:48.742Z","0.3.0":"2026-04-08T08:31:34.188Z","0.4.0":"2026-04-08T08:47:43.294Z","0.5.0":"2026-04-08T13:53:16.903Z","0.6.0":"2026-04-09T03:51:39.192Z","0.6.1":"2026-04-09T04:00:00.028Z","0.7.0":"2026-04-09T06:21:18.777Z","0.8.0":"2026-04-10T09:13:17.198Z","0.9.0":"2026-05-07T08:26:31.598Z","0.9.1":"2026-05-07T09:24:25.267Z"},"bugs":{"url":"https://github.com/consenlabs/token-core-monorepo/issues"},"license":"Apache-2.0","homepage":"https://github.com/consenlabs/token-core-monorepo#readme","keywords":["wasm","webassembly","crypto","ethereum","tron","keystore","signing","wallet","tokencore"],"repository":{"url":"git+https://github.com/consenlabs/token-core-monorepo.git","type":"git","directory":"token-core/tcx-wasm"},"description":"WebAssembly build of TokenCore – multi-chain key management and transaction signing","maintainers":[{"email":"xwz@token.im","name":"consenlabs_official"},{"email":"circlehotarux@gmail.com","name":"circlehotarux"},{"email":"beenhero@gmail.com","name":"beenhero"},{"email":"imxuneal@gmail.com","name":"xuneal"}],"readme":"# tcx-wasm Browser Example\n\nNext.js web app for testing the `tcx-wasm` crate in the browser, covering keystore creation, account derivation, ETH / TRON / BTC transaction, message & PSBT signing, and Message API (NIP-44 encryption + Schnorr/Nostr event signing) via WebAssembly.\n\n## Prerequisites\n\n- [Rust nightly](https://rustup.rs/) (see `rust-toolchain.toml` at repo root)\n- [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)\n- [LLVM with wasm32 support](https://formulae.brew.sh/formula/llvm) (`brew install llvm`)\n- Node.js >= 18\n\n## Quick Start\n\n```bash\n# From repo root\nmake build-wasm        # compile WASM and copy to public/\nmake dev-wasm          # build + start Next.js dev server\n```\n\nThen open [http://localhost:3000](http://localhost:3000) and click **Run Tests**.\n\n## Manual Steps\n\n```bash\n# 1. Build the WASM package\nnpm run build:wasm\n\n# 2. Start the dev server\nnpm run dev\n```\n\n## API Reference\n\nAll functions accept / return JSON strings (unless noted). Field names use **camelCase** on the JS side and are automatically mapped to Rust `snake_case` via `serde(rename_all = \"camelCase\")`.\n\nAfter creation, APIs use a single `key` string. If the keystore JSON has a native `crypto` object, `key` is treated as a password and the KDF parameters from `crypto` are used. If the keystore JSON is the Passkey envelope, `key` is treated as the 32-byte hex PRF key. Legacy `prfKey` remains accepted as an alias for existing Passkey callers.\n\n---\n\n### `cache_keystore(keystore_json: string): void`\n\nCaches a keystore JSON string in WASM thread-local storage. Subsequent calls to `derive_accounts`, `sign_tx`, `sign_message`, etc. can omit the `keystoreJson` field.\n\n```ts\ncache_keystore(keystoreJson);\n```\n\n---\n\n### `clear_cached_keystore(): void`\n\nClears the cached keystore and any cached message secret key.\n\n```ts\nclear_cached_keystore();\n```\n\n---\n\n### `create_keystore(param_json: string): string`\n\nCreates a new keystore. Creation requires exactly one of:\n- `prfKey` — 32-byte hex PRF key from WebAuthn; returns the existing Passkey envelope.\n- `password` — plain password; returns native HD keystore JSON with `crypto.kdf = \"pbkdf2\"`.\n\nMnemonic source supports three modes:\n- **Import** — provide `mnemonic`\n- **Entropy** — provide `entropy` (hex)\n- **Random** — omit both (uses Web Crypto internally)\n\n```ts\n// Import existing mnemonic\nconst ks = create_keystore(JSON.stringify({\n  prfKey: \"0000...0001\",      // 32-byte hex PRF key from WebAuthn\n  userId: \"user-1\",\n  credentialId: \"cred-1\",\n  rpId: \"example.com\",\n  mnemonic: \"inject kidney empty canal shadow pact comfort wife crush horse wife sketch\",\n  network: \"MAINNET\",           // optional: \"MAINNET\" | \"TESTNET\"\n}));\n\n// Generate from entropy\nconst ks2 = create_keystore(JSON.stringify({\n  prfKey: \"0000...0001\",\n  userId: \"user-2\",\n  credentialId: \"cred-2\",\n  rpId: \"example.com\",\n  entropy: \"a1b2c3d4e5f6...\",   // 16-byte hex\n}));\n\n// Fully random\nconst ks3 = create_keystore(JSON.stringify({\n  prfKey: \"0000...0001\",\n  userId: \"user-3\",\n  credentialId: \"cred-3\",\n  rpId: \"example.com\",\n}));\n\n// Password mode\nconst passwordKs = create_keystore(JSON.stringify({\n  password: \"correct horse battery staple\",\n  mnemonic: \"inject kidney empty canal shadow pact comfort wife crush horse wife sketch\",\n  network: \"MAINNET\",\n}));\n```\n\n**Passkey PRF output:**\n\n```json\n{\n  \"userId\": \"user-1\",\n  \"credentialId\": \"cred-1\",\n  \"rpId\": \"example.com\",\n  \"encryptedMnemonic\": \"hex...\",\n  \"mnemonicIv\": \"hex...\",\n  \"createdAt\": 1712600000,\n  \"identity\": {\n    \"identifier\": \"im...\",\n    \"ipfsId\": \"Qm...\",\n    \"encKey\": \"hex...\",\n    \"encAuthKey\": { ... }\n  }\n}\n```\n\n**Password output:** native HD keystore JSON with `version: 12000`, `crypto.kdf: \"pbkdf2\"`, `crypto.kdfparams.c: 600000`, and MAC/cipher params stored under `crypto`.\n\n---\n\n### `export_mnemonic(param_json: string): string`\n\nExports (decrypts) the mnemonic. Post-creation APIs use `key`; for native `crypto` keystore JSON it is a password, and for the Passkey envelope it is the PRF key. Legacy `prfKey` is still accepted as an alias for Passkey callers.\n\n```ts\nconst result = JSON.parse(export_mnemonic(JSON.stringify({\n  keystoreJson: ks,              // optional if cached\n  key: \"0000...0001\",\n})));\n// => { mnemonic: \"inject kidney empty canal ...\" }\n```\n\n**Output:**\n\n```json\n{\n  \"mnemonic\": \"inject kidney empty canal shadow pact comfort wife crush horse wife sketch\"\n}\n```\n\n---\n\n### `derive_accounts(param_json: string): string`\n\nDerives one or more accounts from the keystore. Supports **ETHEREUM**, **TRON** and **BITCOIN**.\n\nFor `BITCOIN`, `segWit` selects the address type:\n\n| `segWit`    | Default BIP path        | Address prefix (MAINNET) |\n|-------------|-------------------------|--------------------------|\n| `NONE`      | `m/44'/0'/0'/0/0`       | `1...` (P2PKH)           |\n| `P2WPKH`    | `m/49'/0'/0'/0/0`       | `3...` (P2SH-P2WPKH)     |\n| `VERSION_0` | `m/84'/0'/0'/0/0`       | `bc1q...` (Native SegWit)|\n| `VERSION_1` | `m/86'/0'/0'/0/0`       | `bc1p...` (Taproot)      |\n\n```ts\nconst accounts = JSON.parse(derive_accounts(JSON.stringify({\n  keystoreJson: ks,              // optional if cached\n  key: \"0000...0001\",\n  derivations: [\n    {\n      chain: \"ETHEREUM\",\n      derivationPath: \"m/44'/60'/0'/0/0\",\n      chainId: \"1\",\n      network: \"MAINNET\",\n    },\n    {\n      chain: \"TRON\",\n      derivationPath: \"m/44'/195'/0'/0/0\",\n      network: \"MAINNET\",\n    },\n    {\n      chain: \"BITCOIN\",\n      derivationPath: \"m/84'/0'/0'/0/0\",\n      network: \"MAINNET\",\n      segWit: \"VERSION_0\",\n    },\n  ],\n})));\n```\n\n**Output:** `AccountResponse[]`\n\n```json\n[\n  {\n    \"address\": \"0x...\",\n    \"chain\": \"ETHEREUM\",\n    \"derivationPath\": \"m/44'/60'/0'/0/0\",\n    \"extPubKey\": \"xpub...\",\n    \"publicKey\": \"hex...\"\n  },\n  {\n    \"address\": \"T...\",\n    \"chain\": \"TRON\",\n    \"derivationPath\": \"m/44'/195'/0'/0/0\",\n    \"extPubKey\": \"xpub...\",\n    \"publicKey\": \"hex...\"\n  },\n  {\n    \"address\": \"bc1q...\",\n    \"chain\": \"BITCOIN\",\n    \"derivationPath\": \"m/84'/0'/0'/0/0\",\n    \"extPubKey\": \"xpub...\",\n    \"publicKey\": \"hex...\"\n  }\n]\n```\n\n---\n\n### `sign_tx(param_json: string): string`\n\nSigns a transaction. Supports ETH legacy (EIP-155), EIP-1559, TRON, and BITCOIN (UTXO-based).\n\n#### ETH Legacy Transaction\n\n```ts\nconst result = JSON.parse(sign_tx(JSON.stringify({\n  keystoreJson: ks,              // optional if cached\n  key: \"0000...0001\",\n  derivationPath: \"m/44'/60'/0'/0/0\",\n  input: {\n    nonce: \"0\",\n    gasPrice: \"20000000000\",\n    gasLimit: \"21000\",\n    to: \"0x3535353535353535353535353535353535353535\",\n    value: \"1000000000000000000\",\n    chainId: \"1\",\n  },\n})));\n// => { signature: \"0x...\", txHash: \"0x...\" }\n```\n\n#### ETH EIP-1559 Transaction\n\n```ts\nconst result = JSON.parse(sign_tx(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  derivationPath: \"m/44'/60'/0'/0/0\",\n  input: {\n    nonce: \"1\",\n    gasLimit: \"21000\",\n    to: \"0x3535353535353535353535353535353535353535\",\n    value: \"1000000000000000000\",\n    chainId: \"1\",\n    txType: \"02\",\n    maxFeePerGas: \"30000000000\",\n    maxPriorityFeePerGas: \"1000000000\",\n    accessList: [],\n  },\n})));\n// => { signature: \"0x...\", txHash: \"0x...\" }\n```\n\n#### TRON Transaction\n\n```ts\nconst result = JSON.parse(sign_tx(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"TRON\",\n  input: {\n    rawData: \"0a0208312208b02efdc02638b61e40f083c3a7c92d5a65...\",\n  },\n})));\n// => { signatures: [\"hex...\"] }\n```\n\n#### BITCOIN Transaction (UTXO)\n\n```ts\nconst result = JSON.parse(sign_tx(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"BITCOIN\",\n  network: \"TESTNET\",                 // \"MAINNET\" | \"TESTNET\"\n  segWit: \"VERSION_0\",                // \"NONE\" | \"P2WPKH\" | \"VERSION_0\" | \"VERSION_1\"\n  derivationPath: \"m/84'/1'/0'/0/0\",  // full address-level path\n  input: {\n    inputs: [\n      {\n        txHash: \"cebc5c2b4f5533428ad0cca94e9bfefa6410a270ed1d7116e2ee8592494c66bd\",\n        vout: 1,\n        amount: 100000,               // satoshis\n        address: \"tb1qrfaf3g4elgykshfgahktyaqj2r593qkrae5v95\",\n        derivedPath: \"m/84'/1'/0'/0/0\",\n      },\n    ],\n    to: \"tb1p3ax2dfecfag2rlsqewje84dgxj6gp3jkj2nk4e3q9cwwgm93cgesa0zwj4\",\n    amount: 50000,\n    fee: 20000,\n    changeAddressIndex: 53,           // optional\n    opReturn: undefined,              // optional hex\n  },\n})));\n// => { rawTx: \"hex...\", txHash: \"hex...\", wtxHash: \"hex...\" }\n```\n\n---\n\n### `sign_txs(param_json: string): string`\n\nBatch-signs multiple transactions with a single keystore unlock. Only decrypts the mnemonic once, which is more efficient than calling `sign_tx` repeatedly.\n\n```ts\nconst results = JSON.parse(sign_txs(JSON.stringify({\n  keystoreJson: ks,              // optional if cached\n  key: \"0000...0001\",\n  txs: [\n    {\n      chain: \"ETHEREUM\",\n      derivationPath: \"m/44'/60'/0'/0/0\",\n      input: {\n        nonce: \"0\",\n        gasPrice: \"20000000000\",\n        gasLimit: \"21000\",\n        to: \"0x3535353535353535353535353535353535353535\",\n        value: \"1000000000000000000\",\n        chainId: \"1\",\n      },\n    },\n    {\n      chain: \"TRON\",\n      input: {\n        rawData: \"0a0208312208b02efdc02638b61e40f083c3a7c92d5a65...\",\n      },\n    },\n  ],\n})));\n// => [\n//   { signature: \"0x...\", txHash: \"0x...\" },   // ETH result\n//   { signatures: [\"hex...\"] },                 // TRON result\n// ]\n```\n\n**Input:** `{ keystoreJson?, key, txs: [{ chain?, derivationPath?, input }] }`\n\n**Output:** `Array` — each element matches the corresponding `sign_tx` output for the given chain.\n\n---\n\n### `sign_message(param_json: string): string`\n\nSigns a message. Supports ETH PersonalSign / EcSign, TRON message, and BTC BIP-322 signing.\n\n#### ETH PersonalSign\n\n```ts\nconst result = JSON.parse(sign_message(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"ETHEREUM\",\n  derivationPath: \"m/44'/60'/0'/0/0\",\n  input: {\n    message: \"Hello from tcx-wasm!\",\n    signatureType: \"PersonalSign\",    // or \"EcSign\"\n  },\n})));\n// => { signature: \"0x...\" }\n```\n\n#### TRON Message\n\n```ts\nconst result = JSON.parse(sign_message(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"TRON\",\n  input: {\n    value: \"Hello from tcx-wasm!\",\n    header: \"TRON\",                   // optional, default \"TRON\"\n    version: 2,                       // optional, default 1\n  },\n})));\n// => { signature: \"0x...\" }\n```\n\n#### BITCOIN Message (BIP-322)\n\n```ts\nconst result = JSON.parse(sign_message(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"BITCOIN\",\n  network: \"MAINNET\",                 // \"MAINNET\" | \"TESTNET\"\n  segWit: \"VERSION_0\",                // same enum as derive_accounts\n  derivationPath: \"m/84'/0'/0'\",      // account-level; a full /0/0 path is accepted and auto-trimmed\n  input: { message: \"hello world\" },\n})));\n// => { signature: \"hex...\" }\n```\n\n---\n\n### `sign_psbt(param_json: string): string`\n\nSigns a single BITCOIN PSBT (Partially Signed Bitcoin Transaction) and optionally finalizes it.\n\n```ts\nconst result = JSON.parse(sign_psbt(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"BITCOIN\",                   // optional, default \"BITCOIN\"\n  derivationPath: \"m/86'/1'/0'\",      // account-level; full /0/0 path also accepted\n  input: {\n    psbt: \"70736274ff01...\",          // hex-encoded PSBT\n    autoFinalize: true,\n  },\n})));\n// => { psbt: \"hex...\" }\n```\n\n---\n\n### `sign_psbts(param_json: string): string`\n\nBatch-signs multiple PSBTs with a single keystore unlock.\n\n```ts\nconst result = JSON.parse(sign_psbts(JSON.stringify({\n  keystoreJson: ks,\n  key: \"0000...0001\",\n  chain: \"BITCOIN\",\n  derivationPath: \"m/86'/1'/0'\",\n  input: {\n    psbts: [\"70736274ff01...\", \"70736274ff01...\"],\n    autoFinalize: true,\n  },\n})));\n// => { psbts: [\"hex...\", \"hex...\"] }\n```\n\n---\n\n### `derive_message_key_pair(param_json: string): string`\n\nDerives a NIP-44 key pair from the keystore mnemonic at the Nostr BIP-44 path (`m/44'/1237'/0'/0/0` by default). Returns the x-only public key and caches the secret key in WASM memory for subsequent `encrypt_message` / `decrypt_message` calls.\n\n```ts\nconst keyPair = JSON.parse(derive_message_key_pair(JSON.stringify({\n  keystoreJson: ks,              // optional if cached\n  key: \"0000...0001\",\n  // derivationPath: \"m/44'/1237'/0'/0/0\",  // optional, this is the default\n})));\n// => { pubkey: \"64-char hex (x-only 32-byte)\" }\n```\n\n---\n\n### `sign_message_event(param_json: string): string`\n\nSigns a Nostr event (NIP-01) with Schnorr/BIP-340. **Must call `derive_message_key_pair` first** — uses the cached secret key.\n\nWhen `recipientPubkey` is provided, performs **NIP-59 Gift Wrapping** (seal + wrap) and returns a `kind: 1059` gift-wrapped event instead of the plain signed event.\n\n```ts\n// Basic signing (no seal/wrap)\nconst signedEvent = JSON.parse(sign_message_event(JSON.stringify({\n  event: {\n    createdAt: Math.floor(Date.now() / 1000),\n    kind: 1,\n    tags: [],\n    content: \"Hello Nostr!\",\n  },\n})));\n\n// With NIP-59 seal + wrap\nconst wrappedEvent = JSON.parse(sign_message_event(JSON.stringify({\n  recipientPubkey: \"64-char hex recipient x-only pubkey\",\n  event: {\n    createdAt: Math.floor(Date.now() / 1000),\n    kind: 1,\n    tags: [],\n    content: \"Private message\",\n  },\n})));\n// => kind: 1059, pubkey is ephemeral, tags: [[\"p\", recipientPubkey]]\n```\n\n**Output (basic):**\n\n```json\n{\n  \"id\": \"64-char hex event id\",\n  \"pubkey\": \"64-char hex x-only pubkey\",\n  \"createdAt\": 1712600000,\n  \"kind\": 1,\n  \"tags\": [],\n  \"content\": \"Hello Nostr!\",\n  \"sig\": \"128-char hex Schnorr signature\"\n}\n```\n\n**Output (seal + wrap):**\n\n```json\n{\n  \"id\": \"64-char hex event id\",\n  \"pubkey\": \"64-char hex ephemeral pubkey\",\n  \"createdAt\": 1712599000,\n  \"kind\": 1059,\n  \"tags\": [[\"p\", \"64-char hex recipient pubkey\"]],\n  \"content\": \"base64 NIP-44 encrypted seal\",\n  \"sig\": \"128-char hex Schnorr signature\"\n}\n```\n\n---\n\n### `encrypt_message(param_json: string): string`\n\nEncrypts plaintext using NIP-44 v2 with the cached secret key and a caller-supplied server public key. **Must call `derive_message_key_pair` first** to populate the cached key.\n\n```ts\nconst encrypted = JSON.parse(encrypt_message(JSON.stringify({\n  serverPubkey: \"d39eadac9f88ea1a77b034e8586191ed5435f44b01dea8f214f45fd7bd0b8e0f\",\n  plaintext: \"secret message\",\n})));\n// => { encryptedContent: \"base64 NIP-44 payload\" }\n```\n\n---\n\n### `decrypt_message(param_json: string): string`\n\nDecrypts a NIP-44 v2 payload back to plaintext. Uses the same cached secret key + caller-supplied server public key.\n\n```ts\nconst decrypted = JSON.parse(decrypt_message(JSON.stringify({\n  serverPubkey: \"d39eadac9f88ea1a77b034e8586191ed5435f44b01dea8f214f45fd7bd0b8e0f\",\n  encryptedContent: encrypted.encryptedContent,\n})));\n// => { plaintext: \"secret message\" }\n```\n\n---\n\n## What It Tests\n\n| # | Test Case | API | Description |\n|---|-----------|-----|-------------|\n| 1 | Init WASM | — | Load and initialize the WASM module |\n| 2 | Create Keystore (import) | `create_keystore` | Import a known mnemonic, verify identity fields |\n| 3 | Create Keystore (new via entropy) | `create_keystore` | Create from caller-supplied entropy (TESTNET) |\n| 4 | Create Keystore (random) | `create_keystore` | Create with WASM-internal random entropy |\n| 5 | Create Password Keystore | `create_keystore` | Create native HD keystore with PBKDF2 600000 rounds |\n| 6 | Export Mnemonic | `export_mnemonic` | Decrypt and export mnemonic with `key` |\n| 7 | Export Mnemonic (legacy prfKey) | `export_mnemonic` | Verify legacy `prfKey` alias still works |\n| 8 | Password Export + Wrong Password | `export_mnemonic` | Export with password and reject a wrong password |\n| 9 | Derive Accounts (ETH + TRON) | `derive_accounts` | Derive ETH + TRON addresses in one call |\n| 10 | Password Derive Accounts | `derive_accounts` | Derive the same ETH + TRON addresses from password keystore |\n| 11 | Sign Legacy TX (EIP-155) | `sign_tx` | Sign a legacy ETH transaction |\n| 12 | Password Sign Legacy TX | `sign_tx` | Sign the same ETH transaction from password keystore |\n| 13 | Sign EIP-1559 TX | `sign_tx` | Sign a type-2 EIP-1559 transaction |\n| 14 | Sign TRON TX | `sign_tx` | Sign a TRON transaction |\n| 15 | Sign Batch TXs (ETH + TRON) | `sign_txs` | Batch-sign ETH + TRON in one call |\n| 16 | Sign ETH Message (PersonalSign) | `sign_message` | Sign ETH personal message |\n| 17 | Sign TRON Message | `sign_message` | Sign TRON message (v2) |\n| 18 | Derive BTC Accounts (4 types) | `derive_accounts` | Derive P2PKH / P2SH-P2WPKH / Native SegWit / Taproot addresses |\n| 19 | Sign BTC TX (P2WPKH TESTNET) | `sign_tx` | Sign a native-SegWit testnet transaction |\n| 20 | Sign BTC Message (BIP-322) | `sign_message` | Sign a BIP-322 message with Native SegWit |\n| 21 | Sign PSBT (Taproot TESTNET) | `sign_psbt` | Sign and auto-finalize a Taproot PSBT |\n| 22 | Sign PSBTs (batch) | `sign_psbts` | Batch-sign PSBTs with one keystore unlock |\n| 23 | Cache Keystore + Derive | `cache_keystore` / `derive_accounts` / `clear_cached_keystore` | Cache keystore, derive without explicit JSON |\n| 24 | derive_message_key_pair | `derive_message_key_pair` | Derive and cache NIP-44 key pair |\n| 25 | encrypt_message | `encrypt_message` | Encrypt plaintext with NIP-44 v2 |\n| 26 | decrypt_message | `decrypt_message` | Decrypt and verify roundtrip |\n| 27 | sign_message_event | `sign_message_event` | Sign Nostr event with Schnorr/BIP-340 |\n| 28 | sign_message_event (seal+wrap) | `sign_message_event` | NIP-59 Gift Wrapping: seal + wrap with recipientPubkey |\n| 29 | sign + encrypt/decrypt roundtrip | All Message APIs | Full roundtrip: encrypt, sign event, decrypt |\n","readmeFilename":"README.md"}