{"_id":"@chainberry/chainberry-wallet","_rev":"13-14f982d31b9002e7fe0e184349316666","name":"@chainberry/chainberry-wallet","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@chainberry/chainberry-wallet","version":"1.0.0","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.0","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"6f1d3d6254d9a6d73908bb10867e06e18044814b","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.0.tgz","fileCount":59,"integrity":"sha512-lY518W+aFVesBltT1h4iAI0LwwxrLN1RW8cOJq2dxy1DPdu+svfLtfZlNHEnu9qtCK7w65Sc8l/kH7bAiLMKfw==","signatures":[{"sig":"MEUCICLbM5c47EGpuu/Q6l9SLOpw44z5IjrU5zt7atAxtsp5AiEAy4N0SE8YO4oBZsH4tkh2pW5fpMHSsNHq5dsOpa9RZxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":643544},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"585fa22a190d06d3286c799b8a0b57f6cef63b82","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","@solana/web3.js":">=1.0.0","@solana/spl-token":">=0.3.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/spl-token":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.0_1784204397343_0.5959611344631419","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chainberry/chainberry-wallet","version":"1.0.1","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.1","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"e95beb0d90dade0d6d46a55e9856c3b23c425635","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.1.tgz","fileCount":59,"integrity":"sha512-wdckgDOnrmiWiRJmGeaPmUDrctoXj8hM284Cy/SD9VmzDQYxWHGZkQ9Zw2YGpMD5wg4PgDg6VWSlZ1dKoY2/5A==","signatures":[{"sig":"MEUCIQDq5tGzyF+WDWKkJEQfZEA3YsRuuIaSrgDZylyJapnElgIgA7OqNPG2ZsG0qdh20i290480pnnghMj0Q6LG78NpqcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":643929},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"83723cf6d6d6440e56d09d7613576be3b791f338","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.1_1784556849080_0.4647047524887351","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chainberry/chainberry-wallet","version":"1.0.2","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.2","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"9a7574fc03a6036a5f3c6892191b420436906c1b","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.2.tgz","fileCount":67,"integrity":"sha512-t/+Kbp1FSbtpCLjoZoHDjKcbhnbJnp8p2rKtb6bRYNC5M7bk1fGAhO26sCzL+dlPSxXAV/QffKm0PwxhQMsTJw==","signatures":[{"sig":"MEUCIQDQR/WEg1M19396igMXGHh7HFcBsR1Ir5Wk+8V2iuA8OwIgLy5+yHaaZUKJb6M1/mrvXnO0oO7sm0BN2QsxA43EGLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":575862},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"83723cf6d6d6440e56d09d7613576be3b791f338","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.2_1784558196534_0.5078557289844681","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@chainberry/chainberry-wallet","version":"1.0.3","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.3","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"f4f076e3ef93caa94699d664ccd25ffc578aafc8","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.3.tgz","fileCount":69,"integrity":"sha512-7jk/c71WekrzGbruWS+s/uJq2uonOG6f9lT8Mrx2XdH7gI2g8mZ9dftZNtdSaBsgiCNHI9Z9BeRx+9zEPbrRJg==","signatures":[{"sig":"MEYCIQCQJvcNhOcUrNZMJFYhaud5/PJIw5KuFyI7xSagdiaTxgIhAPTsw5WJ8NuMVfN0bvMZ2ym623E7stBXxBlZclCQrWm5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610024},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"83723cf6d6d6440e56d09d7613576be3b791f338","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.3_1784558405011_0.22768531801052294","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@chainberry/chainberry-wallet","version":"1.0.4","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.4","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"ec35b5cdc308b85bfade619e7fd6bed6b0c83d1f","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.4.tgz","fileCount":69,"integrity":"sha512-XtB1mtV14NdzqpVNUgWfybspkcZQOfQM6bjAZpUMTv79ZxmFfHTChPFv11OdQyYjHtkxvrlAofuMwEs8jYNWwg==","signatures":[{"sig":"MEUCIFwEg+OxH6LxMG/PwtwIiWNNqeeyJ4aOPWu1x4m3vSZpAiEArdoWCKupknErLGYjk6RDH73kDYZ0fFG/evVDAut2xAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617174},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a932f2e8c29d4989803032228b3b3ad2f593ddd8","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"11.7.0","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.4_1784890217362_0.5334808676333282","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@chainberry/chainberry-wallet","version":"1.0.6","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.6","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"f6f5e829aa3e9ef6893472e331c6d0065fa91f72","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.6.tgz","fileCount":81,"integrity":"sha512-miny9Vu3dBYmq6MbX5kF5d4VOOShkInFgIrblyKeOr8IRxXiOKII/ztB+QXrHAzfGSmZTGwit/b9JfqS2DaAHw==","signatures":[{"sig":"MEYCIQD58WIRkMUrB7br0/Q2nIsTlNWeXpuhiY0vzzw5jv5EAwIhAOPdTiI6NVF1xAi/OmRneLVCgrNrqTkPIKzNCED2NXzj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":661398},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b52f20ded06ac39d941024ad5d3be754d8326feb","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"11.6.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"25.0.0","dependencies":{"tslib":"2.8.1","decimal.js":"10.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-types":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-types":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.6_1785426794318_0.09849873625936056","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@chainberry/chainberry-wallet","version":"1.0.7","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.7","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"24e1d131ea7854a3c6cbb0bac7f5e7f43bbe3463","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.7.tgz","fileCount":81,"integrity":"sha512-oTVSA7hiJDwsp9EGHKHzOM2cNboyg8bdrcgDWwkuPMzxI9A4enpH6el45MoUA1ucOakYme2LQzjXk0aWg65azg==","signatures":[{"sig":"MEYCIQDot/6GtnIh4jMnL8ZcSnT9abI5Spda+LSF9xXzDN69PwIhAMpZoI7FNE+3F1gFi6EnJXLgm2BQndAxNUFVMEWlKSGL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663390},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"87ae4f5cd9f4b6a098ec827c4f90a8a286235f8f","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"11.6.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"25.0.0","dependencies":{"tslib":"2.8.1","decimal.js":"10.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-types":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-keys":{"optional":false},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.7_1787228976757_0.696354712089428","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@chainberry/chainberry-wallet","version":"1.0.8","license":"MIT","_id":"@chainberry/chainberry-wallet@1.0.8","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"6404a27225e84a3d874bea0dcb040418518c3f1f","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.0.8.tgz","fileCount":81,"integrity":"sha512-ad0tCm1xU7M6rGQ7YMc1YDp8X36TGJcRiFiRo8iB1Z8IVp2DBXULl8VDhV6LytFXiolPCXxGizSQnnnYw7cp3g==","signatures":[{"sig":"MEYCIQDXboUKZNAfm4XqecJfJakURyQA8zIKNy36mZqT9YTBnAIhAIWTLmqlDNRs8cSRmLqRNf9jwRGKijpaunV7EhzJAFLi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":665000},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"462ca8cf42859d82980338c413a40e8bac4ca6e9","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"11.6.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"25.0.0","dependencies":{"tslib":"2.8.1","decimal.js":"10.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-types":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-keys":{"optional":false},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.0.8_1787231426156_0.8420456778520167","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@chainberry/chainberry-wallet","version":"1.1.0","license":"MIT","_id":"@chainberry/chainberry-wallet@1.1.0","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"dist":{"shasum":"dc3083c0fdb4231b4d49061ec575f38d89b3760d","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.1.0.tgz","fileCount":81,"integrity":"sha512-Gz6atRUNagppYZSkhFiM8wpWmG4/hK9iuexxEiCxg4g4+5+Llppc1WSKq0MuTRQ+70yszLVBYuRp9n647QrDuQ==","signatures":[{"sig":"MEQCIFlbtSiTdR1L0/3fnBoaJaA6IwtCOZ17l/F9qmL3P6hhAiAWlE+Vqs3Jc6OOLhku5SkpcfrewyUR5GRVK4+vQ4X+SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE2HkcYTIyQkjZiy3TG2wV0pIWzzyzO+pRx8AQTtSpb3AiA2B6RRpFk0c8f1t/cg5flE9aod042TZF82joAi6mws4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":668703},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"34fa9482f256533c2ab57ed244063d00be76cc6f","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON","directories":{},"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1","decimal.js":"10.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-types":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-keys":{"optional":false},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/chainberry-wallet_1.1.0_1789462109477_0.27227504698090743","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"_id":"@chainberry/chainberry-wallet@1.1.1","dist":{"shasum":"504379a0fb482867e28c18dead27e4e46d3e381a","tarball":"https://registry.npmjs.org/@chainberry/chainberry-wallet/-/chainberry-wallet-1.1.1.tgz","fileCount":85,"integrity":"sha512-Tcyu3vXqESUgRbEBxpZnmMAnP7lyAMW5GyPaBSgron30488rc+UrAgs/ri9cCECbUtGr41Tz7CwrTNhzRjOryQ==","signatures":[{"sig":"MEYCIQD2Yf6irCD1pbkMhgi/zbwPs19LNgkjM0ZB+NYdxNX2wQIhAOkPCIZy+9kI9YZzZPoiyKWSVsU0/hc6OE+ST/9RBwzu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDcRLOSZ2PO+cVwcEvU9qFs96mUSaujN3vShH5kRmFe2wIhAJqzLqBVDIxdNfsehjkeNZ2ZrXKuZfdgc+6USaJca5l8"}],"unpackedSize":688503},"main":"./dist/index.js","name":"@chainberry/chainberry-wallet","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"3e7025647c57b891f0f03dc338198f87f0c058af","license":"MIT","version":"1.1.1","_npmUser":{"name":"chainberry","email":"pd@chainberry.com"},"_npmVersion":"10.9.2","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON, ADA","directories":{},"maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"_nodeVersion":"23.11.0","dependencies":{"tslib":"2.8.1","decimal.js":"10.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"bs58":">=5.0.0","xrpl":">=2.0.0","axios":">=1.0.0","ecpair":">=2.0.0","ethers":">=6.0.0","tronweb":">=5.0.0","@ton/ton":">=13.0.0","@ton/core":">=0.50.0","@ton/crypto":">=3.0.0","bitcoinjs-lib":">=6.0.0","tiny-secp256k1":">=2.0.0","@solana/web3.js":">=1.0.0","bitcore-lib-cash":">=10.0.0","@solana/spl-token":">=0.3.0","@chainberry/berry-signer":">=1.0.0","@chainberry/wallet-types":">=1.0.0","@chainberry/wallet-broadcast":">=1.0.0"},"peerDependenciesMeta":{"bs58":{"optional":true},"xrpl":{"optional":true},"axios":{"optional":true},"ecpair":{"optional":true},"ethers":{"optional":true},"tronweb":{"optional":true},"@ton/ton":{"optional":true},"@ton/core":{"optional":true},"@ton/crypto":{"optional":true},"bitcoinjs-lib":{"optional":true},"tiny-secp256k1":{"optional":true},"@solana/web3.js":{"optional":true},"bitcore-lib-cash":{"optional":true},"@solana/spl-token":{"optional":true},"@chainberry/berry-keys":{"optional":false},"@chainberry/berry-signer":{"optional":false},"@chainberry/wallet-broadcast":{"optional":false}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chainberry-wallet_1.1.1_1790275629132_0.8332426095247254"}}},"time":{"created":"2026-07-16T12:19:57.103Z","modified":"2026-09-24T18:47:09.467Z","1.0.0":"2026-07-16T12:19:57.500Z","1.0.1":"2026-07-20T14:14:09.258Z","1.0.2":"2026-07-20T14:36:36.708Z","1.0.3":"2026-07-20T14:40:05.169Z","1.0.4":"2026-07-24T10:50:17.496Z","1.0.6":"2026-07-30T15:53:14.556Z","1.0.7":"2026-08-20T12:29:36.901Z","1.0.8":"2026-08-20T13:10:26.318Z","1.1.0":"2026-09-15T08:48:29.553Z","1.1.1":"2026-09-24T18:47:09.296Z"},"license":"MIT","description":"Blockchain wallet provider library — sign, broadcast, balance, fee estimation for EVM, BTC, LTC, BCH, SOL, TRX, XRP, TON, ADA","maintainers":[{"name":"chainberry","email":"pd@chainberry.com"}],"readme":"# @chainberry/chainberry-wallet\n\nPure TypeScript wallet provider library — no NestJS dependency. Handles EVM (ETH/POL/BNB), Solana, TRON, TON, and Bitcoin chain operations with a unified provider interface.\n\n## Setup\n\nAdd to your app's `tsconfig.app.json` references:\n\n```json\n{\n  \"path\": \"../../libs/chainberry-wallet/tsconfig.lib.json\"\n}\n```\n\n## Core concepts\n\n- **`IWalletChainProvider`** — common interface for all chains (send, estimateFee, getBalances)\n- **`WalletProviderRegistry`** — routes `(token, network)` to the correct provider, no if-chains\n- **`CredentialUtils`** — hybrid AES-256-GCM encrypt/decrypt; takes `IKeyProvider` to abstract key storage\n- **`IKeyProvider`** — abstraction over key wrapping (AWS KMS, RSA, or any other backend)\n\n---\n\n## Minimal setup (no framework)\n\n```typescript\nimport {\n  CredentialUtils,\n  EvmChainProvider,\n  WalletProviderRegistry,\n  type IKeyProvider,\n  type WalletConfig,\n} from \"@chainberry/chainberry-wallet\";\nimport { constants, privateDecrypt, publicEncrypt } from \"crypto\";\nimport fs from \"fs\";\n\n// 1. Build a key provider (RSA example — swap for AWS KMS in production)\nconst privateKeyPem = fs.readFileSync(\"private.pem\", \"utf-8\");\nconst publicKeyPem  = fs.readFileSync(\"public.pem\", \"utf-8\");\nconst rsaOpts = { padding: constants.RSA_PKCS1_OAEP_PADDING, oaepHash: \"sha256\" } as const;\n\nconst keyProvider: IKeyProvider = {\n  wrapKey:   (aesKey)     => Promise.resolve(publicEncrypt({ key: publicKeyPem, ...rsaOpts }, aesKey).toString(\"base64\")),\n  unwrapKey: (wrappedKey) => Promise.resolve(privateDecrypt({ key: privateKeyPem, ...rsaOpts }, Buffer.from(wrappedKey, \"base64\"))),\n};\n\n// 2. Build credential utils\nconst credentialUtils = new CredentialUtils(keyProvider);\n\n// 3. Config (all RPC URL fields optional — fall back to public endpoints)\nconst config: WalletConfig = {\n  WALLET_ENV: \"testnet\",\n  ETH_RPC_URL: \"https://my-rpc.example.com\",\n};\n\n// 4. Create providers and registry\nconst registry = new WalletProviderRegistry([\n  new EvmChainProvider(config, credentialUtils),\n]);\n```\n\n---\n\n## Encrypt a private key (wallet creation)\n\n`CredentialUtils.hybridEncrypt` wraps a raw private key into the `WalletData` format expected by providers:\n\n```typescript\nconst kmsKeyId = \"my-kms-key-id\"; // or any string identifier for the key pair\n\nconst encrypted = await credentialUtils.hybridEncrypt(rawPrivateKeyHex, kmsKeyId);\n// encrypted = { ciphertext, iv, tag, wrappedKey, kmsKeyId }\n\n// Store encrypted in DB as WalletData:\nconst walletData = {\n  address:         \"0xYourAddress\",\n  encryptedSecret: encrypted.ciphertext,\n  iv:              encrypted.iv,\n  tag:             encrypted.tag,\n  wrappedKey:      encrypted.wrappedKey,\n  kmsKeyId:        encrypted.kmsKeyId,\n};\n```\n\n---\n\n## Send a transaction\n\n```typescript\nconst provider = registry.getProviderForSend(\"ETH\", \"ETH\");\nif (!provider) throw new Error(\"No provider for ETH on ETH\");\n\n// walletData comes from your database (encrypted at creation time)\nconst walletData = {\n  address:         \"0xSenderAddress\",\n  encryptedSecret: \"<base64 ciphertext>\",\n  iv:              \"<base64>\",\n  tag:             \"<base64>\",\n  wrappedKey:      \"<base64>\",\n  kmsKeyId:        \"my-kms-key-id\",\n};\n\nconst txHash = await provider.send({\n  token:     \"ETH\",\n  network:   \"ETH\",\n  toAddress: \"0xRecipientAddress\",\n  amount:    \"0.05\",   // in ETH (human-readable)\n  wallet:    walletData,\n});\n\nconsole.log(\"tx:\", txHash);\n// \"0xabc123...\"\n\n// Same pattern for USDC on Polygon:\nconst usdcHash = await provider.send({\n  token:     \"USDC\",\n  network:   \"POL\",\n  toAddress: \"0xRecipientAddress\",\n  amount:    \"10.00\",\n  wallet:    walletData,\n});\n```\n\n---\n\n## Estimate fee before sending\n\n```typescript\nconst fee = await provider.estimateFee({\n  token:     \"ETH\",\n  network:   \"ETH\",\n  toAddress: \"0xRecipientAddress\",\n  amount:    \"0.05\",\n  wallet:    walletData,\n});\n\nconsole.log(`Fee: ${fee.estimatedFee} ${fee.feeToken} (${fee.estimatedFeeInBaseUnit} ${fee.baseUnit})`);\n// \"Fee: 0.000021 ETH (21000000000000 wei)\"\n```\n\n---\n\n## Get balances\n\n```typescript\nconst evmProvider = registry.getProviderByNetwork(\"ETH\")!;\n\nconst balances = await evmProvider.getBalances({\n  network:     \"ETH\",\n  address:     \"0xYourAddress\",\n  tokenFilter: undefined,   // omit to get all tokens (ETH + USDC + USDT)\n});\n\n// [\n//   { token: \"ETH\",  balance: \"1.234\", balanceInBaseUnit: \"1234000000000000000\", baseUnit: \"wei\",        decimals: \"18\" },\n//   { token: \"USDC\", balance: \"50.0\",  balanceInBaseUnit: \"50000000\",            baseUnit: \"tokenUnits\", decimals: \"6\"  },\n//   { token: \"USDT\", balance: \"0.0\",   balanceInBaseUnit: \"0\",                   baseUnit: \"tokenUnits\", decimals: \"6\"  },\n// ]\n```\n\n---\n\n## All providers and supported networks\n\n```typescript\nimport {\n  BtcChainProvider,\n  EvmChainProvider,\n  SolChainProvider,\n  TonChainProvider,\n  TrxChainProvider,\n} from \"@chainberry/chainberry-wallet\";\n\nconst registry = new WalletProviderRegistry([\n  new EvmChainProvider(config, credentialUtils),  // ETH, POL, BNB  + USDC/USDT\n  new SolChainProvider(config, credentialUtils),  // SOL             + USDC/USDT\n  new TrxChainProvider(config, credentialUtils),  // TRX             + USDT\n  new TonChainProvider(config, credentialUtils),  // TON\n  new BtcChainProvider(config, credentialUtils),  // BTC\n]);\n\nregistry.getAllNetworks();\n// [\"ETH\", \"POL\", \"BNB\", \"SOL\", \"SOL Devnet\", \"TRX\", \"TON\", \"BTC\"]\n```\n\n---\n\n## WalletConfig defaults\n\nAll RPC URL fields are optional. Omitting them uses public endpoints (suitable for testnet/development):\n\n| Key | Default |\n|---|---|\n| `WALLET_ENV` | `\"testnet\"` |\n| `ETH_RPC_URL` | `https://ethereum-rpc.publicnode.com` |\n| `POL_RPC_URL` | `https://polygon-mainnet.gateway.tenderly.co` |\n| `BNB_RPC_URL` | `https://bsc.drpc.org` |\n| `SOL_RPC_URL` | `https://api.mainnet-beta.solana.com` |\n| `TRX_RPC_URL` | `https://api.trongrid.io` |\n| `TON_RPC_URL` | `https://toncenter.com/api/v2` |\n| `TATUM_API_KEY` | _(required for BTC)_ |\n\n---\n\n## AWS KMS key provider\n\n```typescript\nimport { KMSClient, EncryptCommand, DecryptCommand } from \"@aws-sdk/client-kms\";\nimport type { IKeyProvider } from \"@chainberry/chainberry-wallet\";\n\nconst kms = new KMSClient({ region: \"eu-central-1\" });\n\nconst kmsKeyProvider: IKeyProvider = {\n  async wrapKey(aesKey, keyId) {\n    const { CiphertextBlob } = await kms.send(new EncryptCommand({ KeyId: keyId, Plaintext: aesKey }));\n    return Buffer.from(CiphertextBlob!).toString(\"base64\");\n  },\n  async unwrapKey(wrappedKey, keyId) {\n    const { Plaintext } = await kms.send(new DecryptCommand({\n      KeyId: keyId,\n      CiphertextBlob: Buffer.from(wrappedKey, \"base64\"),\n    }));\n    return Buffer.from(Plaintext!);\n  },\n};\n```\n\n---\n\n## NestJS integration\n\nIn NestJS wrap each provider with `@Injectable()` and resolve config from `ConfigService`. See the [vault adapter pattern](../../apps/vault/src/app/api/wallet/README-DESIGN.md) for the full reference implementation already wired in this monorepo.\n\n---\n\n## React Native — private key in device secure store\n\n### Required polyfills\n\n`CredentialUtils` uses Node's built-in `crypto` module (`createCipheriv`, `randomBytes`, etc.) and `Buffer` — neither exists in React Native's JS engine out of the box.\n\n> **Expo Go not supported** — `react-native-quick-crypto` contains native code. You must use a [development build](https://docs.expo.dev/develop/development-builds/introduction/) (`npx expo run:ios` / `npx expo run:android` or EAS Build).\n\n```sh\nnpx expo install react-native-quick-crypto buffer\n```\n\n**`app.json`** — register the config plugin so Expo links the native module:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\"react-native-quick-crypto\"]\n  }\n}\n```\n\n**`metro.config.js`** — create this file in your project root if it doesn't exist:\n\n```js\nconst { getDefaultConfig } = require('expo/metro-config');\nconst config = getDefaultConfig(__dirname);\n\nconfig.resolver.extraNodeModules = {\n  ...config.resolver.extraNodeModules,\n  crypto: require.resolve('react-native-quick-crypto'),\n  buffer: require.resolve('buffer'),\n};\n\nmodule.exports = config;\n```\n\n**App entry point** (`index.js` / `App.tsx`, before any other import):\n\n```typescript\nimport { install } from 'react-native-quick-crypto';\ninstall(); // replaces global crypto with native implementation\n\nimport { Buffer } from 'buffer';\nglobal.Buffer = global.Buffer ?? Buffer;\n```\n\nWithout these steps `CredentialUtils` will throw `Cannot find module 'crypto'` at runtime.\n\n---\n\n```sh\nnpx expo install react-native-keychain\n```\n\nImplement `IKeyProvider` so the ephemeral AES-256 key never leaves hardware-backed storage (iOS Keychain / Android Keystore). The actual private key stays AES-encrypted in `WalletData`; only the wrapping key touches the device secure store.\n\n```typescript\nimport * as Keychain from 'react-native-keychain';\nimport {\n  CredentialUtils,\n  EvmChainProvider,\n  WalletProviderRegistry,\n  type IKeyProvider,\n  type WalletConfig,\n} from '@chainberry/chainberry-wallet';\n\nconst keychainKeyProvider: IKeyProvider = {\n  async wrapKey(aesKey: Buffer, keyId: string): Promise<string> {\n    await Keychain.setGenericPassword(keyId, aesKey.toString('base64'), {\n      service: keyId,\n      accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY,\n    });\n    // \"wrappedKey\" stored in WalletData is the service name used for retrieval\n    return keyId;\n  },\n  async unwrapKey(_wrappedKey: string, keyId: string): Promise<Buffer> {\n    const credentials = await Keychain.getGenericPassword({ service: keyId });\n    if (!credentials) throw new Error(`No key in keychain for service: ${keyId}`);\n    return Buffer.from(credentials.password, 'base64');\n  },\n};\n\nconst credentialUtils = new CredentialUtils(keychainKeyProvider);\nconst config: WalletConfig = { WALLET_ENV: 'mainnet' };\n\nconst registry = new WalletProviderRegistry([\n  new EvmChainProvider(config, credentialUtils),\n  // add more providers as needed\n]);\n```\n\n### Key generation\n\n`hybridEncrypt(plaintext, keyId)` expects the private key as a UTF-8 string. Each chain has its own format:\n\n| Chain | `@trustwallet/wallet-core` | Chain-specific lib | Expected string format |\n|---|---|---|---|\n| **EVM** (ETH/POL/BNB) | `hdWallet.getKeyForCoin(CoinType.ethereum).data()` | `ethers.Wallet.createRandom().privateKey` | hex, `0x` prefix OK |\n| **SOL** | `hdWallet.getKeyForCoin(CoinType.solana).data()` | `Keypair.generate().secretKey` | hex, 32 or 64 bytes |\n| **TRX** | `hdWallet.getKeyForCoin(CoinType.tron).data()` | `TronWeb.createAccount().privateKey` | hex, no `0x` |\n| **TON** | `hdWallet.getKeyForCoin(CoinType.ton).data()` | `mnemonicToPrivateKey(...)` | exactly 64 hex chars (32-byte seed) |\n| **BTC** | `hdWallet.getKeyForCoin(CoinType.bitcoin).data()` | `ECPair.makeRandom()` | hex string |\n\nTrustWallet Core (used by the vault, covers all chains) returns raw bytes — convert uniformly:\n\n```typescript\nimport { initWasm } from '@trustwallet/wallet-core';\n\nconst { HDWallet, CoinType } = await initWasm();\nconst hdWallet = HDWallet.create(128, ''); // 128-bit entropy = 12-word mnemonic\n\n// EVM\nconst evmKey = hdWallet.getKeyForCoin(CoinType.ethereum);\nconst rawPrivateKeyHex = '0x' + Buffer.from(evmKey.data()).toString('hex');\nconst address = hdWallet.getAddressForCoin(CoinType.ethereum);\n```\n\nFor EVM-only apps, `ethers.js` is a lighter alternative:\n\n```typescript\nimport { Wallet } from 'ethers';\n\nconst wallet = Wallet.createRandom();\nconst rawPrivateKeyHex = wallet.privateKey; // \"0x3a4b...\" — 66 chars\nconst address = wallet.address;\n```\n\n### Encrypt on creation, send on use\n\n```typescript\n// On wallet creation — encrypt private key; AES wrapping key goes to device keychain\nconst keyId = `wallet-${address}`;  // unique per wallet — use address or a UUID, NOT userId (one user can have many wallets)\nconst encrypted = await credentialUtils.hybridEncrypt(rawPrivateKeyHex, keyId);\n// Store { ciphertext, iv, tag, wrappedKey, kmsKeyId } in AsyncStorage or your DB\n// wrappedKey here is just the keyId string (the keychain service name)\n\n// On send — keychain is read automatically via unwrapKey inside the provider\nconst txHash = await registry.getProviderForSend('ETH', 'ETH')!.send({\n  token: 'ETH', network: 'ETH',\n  toAddress: '0xRecipient', amount: '0.05',\n  wallet: { address, ...encrypted },\n});\n```\n\n### Biometric protection (optional)\n\nAdd `accessControl` to require Face ID / fingerprint before the AES key can be retrieved:\n\n```typescript\n// wrapKey — add accessControl when storing\nawait Keychain.setGenericPassword(keyId, aesKey.toString('base64'), {\n  service: keyId,\n  accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY,\n  accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_ANY_OR_DEVICE_PASSCODE,\n});\n\n// unwrapKey — prompt appears automatically on retrieval\nconst credentials = await Keychain.getGenericPassword({\n  service: keyId,\n  authenticationPrompt: { title: 'Authenticate to sign transaction' },\n});\n```\n\n---\n\n## Custom key provider (testing)\n\nAny object satisfying `IKeyProvider` works:\n\n```typescript\nimport type { IKeyProvider } from \"@chainberry/chainberry-wallet\";\n\nexport const inMemoryKeyProvider: IKeyProvider = {\n  wrapKey:   async (aesKey) => aesKey.toString(\"hex\"),\n  unwrapKey: async (wrappedKey) => Buffer.from(wrappedKey, \"hex\"),\n};\n```\n\n---\n\n## Logger\n\nAll providers accept an optional `ILogger` as their third constructor argument. Any object with `debug / warn / error / log` methods works (NestJS `Logger`, `winston`, `pino`, etc.):\n\n```typescript\nimport { Logger } from \"@nestjs/common\";\n\nconst provider = new EvmChainProvider(config, credentialUtils, new Logger(\"EVM\"));\n```\n","readmeFilename":"README.md"}