{"_id":"@btc-vision/ecpair","_rev":"5-dd0368ef588100f0a2beded2d8a743e8","name":"@btc-vision/ecpair","dist-tags":{"latest":"4.0.5"},"versions":{"4.0.0":{"name":"@btc-vision/ecpair","version":"4.0.0","keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"license":"MIT","_id":"@btc-vision/ecpair@4.0.0","maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"homepage":"https://github.com/btc-vision/ecpair#readme","bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"dist":{"shasum":"96bbd2fb5456685ee155c3215bfcdfb4bbe9e823","tarball":"https://registry.npmjs.org/@btc-vision/ecpair/-/ecpair-4.0.0.tgz","fileCount":75,"integrity":"sha512-pEMkMV+aFK81cUiSb2WJ3e0z3jOQqjmyhUMNBuGaWuI+Fwf5nLEFg4HZ1x3TowH22e6pXUG7zP4XH+CprSJ8OA==","signatures":[{"sig":"MEUCIQDJdFsrDkVV9VR4NG7C1rtqWkcsoBjWb9oanYcadOnXmAIgJGgQ4GQSsS2aDSoRMM+uuaQ478FvNDa7ElP7L6+9L1U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335289},"main":"build/index.js","type":"module","types":"build/index.d.ts","module":"build/index.js","browser":{"./build/index.js":"./browser/index.js","./build/index.d.ts":"./browser/index.d.ts"},"engines":{"node":">=24.0.0"},"exports":{".":{"node":{"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"types":"./build/index.d.ts","import":"./build/index.js","browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"default":"./build/index.js"},"./noble":{"types":"./build/noble.d.ts","import":"./build/noble.js"},"./types":{"types":"./build/types.d.ts","import":"./build/types.js"},"./legacy":{"types":"./build/legacy.d.ts","import":"./build/legacy.js"},"./signer":{"types":"./build/signer.d.ts","import":"./build/signer.js"},"./backend":{"types":"./build/backend.d.ts","import":"./build/backend.js"},"./branded":{"types":"./build/branded.d.ts","import":"./build/branded.js"},"./browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"./networks":{"types":"./build/networks.d.ts","import":"./build/networks.js"}},"gitHead":"17e8523735248749d927f42d3001a3b326b3436e","scripts":{"doc":"typedoc --options typedoc.json","lint":"eslint src/**","test":"npm run build && npm run lint && vitest run","unit":"vitest run","audit":"better-npm-audit audit -l high","build":"eslint src && tsc --build tsconfig.build.json","clean":"rimraf build","setup":"npm i && npm run build","watch":"tsc --watch","format":"npm run prettier -- --write","coverage":"vitest run --coverage","prebuild":"npm run check:circular","prettier":"prettier \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path ./.prettierignore","format:ci":"npm run prettier -- --check","gitdiff:ci":"npm run build && git diff --exit-code","lint:tests":"eslint test/**/*.spec.ts","test:watch":"vitest","browserBuild":"vite build --config vite.config.browser.ts","check:circular":"madge --circular --extensions ts,tsx src/"},"typings":"build/index.d.ts","_npmUser":{"name":"blobmaster41","email":"anakun@opnet.org"},"repository":{"url":"git+https://github.com/btc-vision/ecpair.git","type":"git"},"_npmVersion":"11.7.0","description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"wif":"^5.0.0"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","madge":"^8.0.0","eslint":"^9.39.2","rimraf":"^6.1.2","vitest":"^4.0.18","typedoc":"^0.28.16","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/node":"^25.0.10","@noble/curves":"^2.0.1","tiny-secp256k1":"^2.2.4","vite-plugin-dts":"^4.5.4","better-npm-audit":"^3.11.0","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","typedoc-material-theme":"^1.4.1"},"peerDependencies":{"@noble/curves":">=2.0.0"},"peerDependenciesMeta":{"@noble/curves":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ecpair_4.0.0_1769576350501_0.9849898299711637","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@btc-vision/ecpair","version":"4.0.1","keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"license":"MIT","_id":"@btc-vision/ecpair@4.0.1","maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"homepage":"https://github.com/btc-vision/ecpair#readme","bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"dist":{"shasum":"08b0b60b53de2829190c0a07037e41f48ee3f83a","tarball":"https://registry.npmjs.org/@btc-vision/ecpair/-/ecpair-4.0.1.tgz","fileCount":71,"integrity":"sha512-Mfdw8YJUe5QbBG9LcFI4GXHY5CHTmEUqP69RUGeCXtXIDARjbjTOvAwvmYBae9zDA5uxzrIS5PHV6Rk1EW/ScQ==","signatures":[{"sig":"MEQCIBRHZUFtICORx0twheNjrxxi5darKRyrrus16RiQHBKtAiAR8fZXXRcbzugbPm1Utc3eAg+VaGrOv0oScC4FnaRVdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@btc-vision%2fecpair@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":312244},"main":"build/index.js","type":"module","types":"build/index.d.ts","module":"build/index.js","browser":{"./build/index.js":"./browser/index.js","./build/index.d.ts":"./browser/index.d.ts"},"engines":{"node":">=24.0.0"},"exports":{".":{"node":{"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"types":"./build/index.d.ts","import":"./build/index.js","browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"default":"./build/index.js"},"./noble":{"types":"./build/noble.d.ts","import":"./build/noble.js"},"./types":{"types":"./build/types.d.ts","import":"./build/types.js"},"./legacy":{"types":"./build/legacy.d.ts","import":"./build/legacy.js"},"./signer":{"types":"./build/signer.d.ts","import":"./build/signer.js"},"./backend":{"types":"./build/backend.d.ts","import":"./build/backend.js"},"./branded":{"types":"./build/branded.d.ts","import":"./build/branded.js"},"./browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"./networks":{"types":"./build/networks.d.ts","import":"./build/networks.js"}},"gitHead":"85eb3c967e99e06a919428a66fcdfa2f51b02a68","scripts":{"doc":"typedoc --options typedoc.json","lint":"eslint src/**","test":"npm run build && npm run lint && vitest run","unit":"vitest run","audit":"better-npm-audit audit -l high","build":"eslint src && tsc --build tsconfig.build.json","clean":"rimraf build","setup":"npm i && npm run build","watch":"tsc --watch","format":"npm run prettier -- --write","coverage":"vitest run --coverage","prebuild":"npm run check:circular","prettier":"prettier \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path ./.prettierignore","format:ci":"npm run prettier -- --check","gitdiff:ci":"npm run build && git diff --exit-code","lint:tests":"eslint test/**/*.spec.ts","test:watch":"vitest","browserBuild":"vite build --config vite.config.browser.ts","check:circular":"madge --circular --extensions ts,tsx src/"},"typings":"build/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97cddbf0-6494-4f27-a88e-70179c2de6a7"}},"repository":{"url":"git+https://github.com/btc-vision/ecpair.git","type":"git"},"_npmVersion":"11.8.0","description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"wif":"^5.0.0"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","madge":"^8.0.0","eslint":"^9.39.2","rimraf":"^6.1.2","vitest":"^4.0.18","typedoc":"^0.28.16","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/node":"^25.0.10","@noble/curves":"^2.0.1","tiny-secp256k1":"^2.2.4","vite-plugin-dts":"^4.5.4","better-npm-audit":"^3.11.0","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","typedoc-material-theme":"^1.4.1"},"peerDependencies":{"@noble/curves":">=2.0.0"},"peerDependenciesMeta":{"@noble/curves":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ecpair_4.0.1_1769584802190_0.7570882707446907","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@btc-vision/ecpair","version":"4.0.2","keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"license":"MIT","_id":"@btc-vision/ecpair@4.0.2","maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"homepage":"https://github.com/btc-vision/ecpair#readme","bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"dist":{"shasum":"441992f3c1bdcfb29c2cefa392cc3751c8efdcc4","tarball":"https://registry.npmjs.org/@btc-vision/ecpair/-/ecpair-4.0.2.tgz","fileCount":71,"integrity":"sha512-TrJXZqRc5iNitLCx9IDkkJF+emzY3gw/nFbTjGLPQAXXeP2iSdTS9d8dcQEO8AcCyM/D5hfs4X/nnkIO4UkadA==","signatures":[{"sig":"MEUCIAs3bnKNlK9iFWn//bOHcIYDtrr1YUpAsRsgJFqK1F/DAiEArCBcwN8dtLMetaaTtyg1GBbNlzxNhfE6B+L2F+Ne4p0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@btc-vision%2fecpair@4.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320251},"main":"build/index.js","type":"module","types":"build/index.d.ts","module":"build/index.js","browser":{"./build/index.js":"./browser/index.js","./build/index.d.ts":"./browser/index.d.ts"},"engines":{"node":">=24.0.0"},"exports":{".":{"node":{"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"types":"./build/index.d.ts","import":"./build/index.js","browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"default":"./build/index.js"},"./noble":{"types":"./build/noble.d.ts","import":"./build/noble.js"},"./types":{"types":"./build/types.d.ts","import":"./build/types.js"},"./legacy":{"types":"./build/legacy.d.ts","import":"./build/legacy.js"},"./signer":{"types":"./build/signer.d.ts","import":"./build/signer.js"},"./backend":{"types":"./build/backend.d.ts","import":"./build/backend.js"},"./branded":{"types":"./build/branded.d.ts","import":"./build/branded.js"},"./browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"./networks":{"types":"./build/networks.d.ts","import":"./build/networks.js"}},"gitHead":"7ff978e9813458df6f502082e7403260e5d2c589","scripts":{"doc":"typedoc --options typedoc.json","lint":"eslint src/**","test":"npm run build && npm run lint && vitest run","unit":"vitest run","audit":"better-npm-audit audit -l high","build":"eslint src && tsc --build tsconfig.build.json","clean":"rimraf build","setup":"npm i && npm run build","watch":"tsc --watch","format":"npm run prettier -- --write","coverage":"vitest run --coverage","prebuild":"npm run check:circular","prettier":"prettier \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path ./.prettierignore","format:ci":"npm run prettier -- --check","gitdiff:ci":"npm run build && git diff --exit-code","lint:tests":"eslint test/**/*.spec.ts","test:watch":"vitest","browserBuild":"vite build --config vite.config.browser.ts","check:circular":"madge --circular --extensions ts,tsx src/"},"typings":"build/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97cddbf0-6494-4f27-a88e-70179c2de6a7"}},"repository":{"url":"git+https://github.com/btc-vision/ecpair.git","type":"git"},"_npmVersion":"11.8.0","description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"wif":"^5.0.0"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","madge":"^8.0.0","eslint":"^9.39.2","rimraf":"^6.1.2","vitest":"^4.0.18","typedoc":"^0.28.16","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/node":"^25.0.10","@noble/curves":"^2.0.1","tiny-secp256k1":"^2.2.4","vite-plugin-dts":"^4.5.4","better-npm-audit":"^3.11.0","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18","typedoc-material-theme":"^1.4.1"},"peerDependencies":{"@noble/curves":">=2.0.0"},"peerDependenciesMeta":{"@noble/curves":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ecpair_4.0.2_1769660708155_0.07694116210534863","host":"s3://npm-registry-packages-npm-production"}},"4.0.4":{"name":"@btc-vision/ecpair","version":"4.0.4","keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"license":"MIT","_id":"@btc-vision/ecpair@4.0.4","maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"homepage":"https://github.com/btc-vision/ecpair#readme","bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"dist":{"shasum":"8c386072734887d06b7c2263ec0364db7de69432","tarball":"https://registry.npmjs.org/@btc-vision/ecpair/-/ecpair-4.0.4.tgz","fileCount":71,"integrity":"sha512-RYA0LVaL+vWseohpOZj7fLWlE1S8ia+8J7K9zgCqoWrjJTcbhIqbc3Ws56EQyGjmvLFzRhhfcm6n6fNXXb0e2g==","signatures":[{"sig":"MEUCIHPi3eJp2sOYlRYPHggJ6fskzZwRV6DreBkj9JcwDK+vAiEAgAr1WVygHSHRj+Me2l1FJ1GEK6RKnDSr0FzDXUMlImI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@btc-vision%2fecpair@4.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324335},"main":"build/index.js","type":"module","types":"build/index.d.ts","module":"build/index.js","browser":{"./build/index.js":"./browser/index.js","./build/index.d.ts":"./browser/index.d.ts"},"engines":{"node":">=24.0.0"},"exports":{".":{"node":{"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"types":"./build/index.d.ts","import":"./build/index.js","browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"default":"./build/index.js"},"./noble":{"types":"./build/noble.d.ts","import":"./build/noble.js"},"./types":{"types":"./build/types.d.ts","import":"./build/types.js"},"./legacy":{"types":"./build/legacy.d.ts","import":"./build/legacy.js"},"./signer":{"types":"./build/signer.d.ts","import":"./build/signer.js"},"./backend":{"types":"./build/backend.d.ts","import":"./build/backend.js"},"./branded":{"types":"./build/branded.d.ts","import":"./build/branded.js"},"./browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"./networks":{"types":"./build/networks.d.ts","import":"./build/networks.js"}},"gitHead":"480c912250e2834ad780161d99a57257ba37e0f2","scripts":{"doc":"typedoc --options typedoc.json","lint":"eslint src/**","test":"npm run build && npm run lint && vitest run","unit":"vitest run","audit":"better-npm-audit audit -l high","build":"eslint src && tsc --build tsconfig.build.json","clean":"rimraf build","setup":"npm i && npm run build","watch":"tsc --watch","format":"npm run prettier -- --write","coverage":"vitest run --coverage","prebuild":"npm run check:circular","prettier":"prettier \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path ./.prettierignore","format:ci":"npm run prettier -- --check","gitdiff:ci":"npm run build && git diff --exit-code","lint:tests":"eslint test/**/*.spec.ts","test:watch":"vitest","browserBuild":"vite build --config vite.config.browser.ts","check:circular":"madge --circular --extensions ts,tsx src/"},"typings":"build/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97cddbf0-6494-4f27-a88e-70179c2de6a7"}},"overrides":{"markdown-it":"^14.1.1","@isaacs/brace-expansion":"^5.0.1"},"repository":{"url":"git+https://github.com/btc-vision/ecpair.git","type":"git"},"_npmVersion":"11.10.0","description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"@btc-vision/wif":"^6.0.0"},"publishConfig":{"tag":"latest","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","madge":"^8.0.0","eslint":"^9.39.2","rimraf":"^6.1.3","vitest":"^4.0.18","typedoc":"^0.28.17","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/node":"^25.2.3","@noble/curves":"^2.0.1","tiny-secp256k1":"^2.2.4","vite-plugin-dts":"^4.5.4","better-npm-audit":"^3.11.0","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^4.0.18","typedoc-material-theme":"^1.4.1"},"peerDependencies":{"@noble/curves":">=2.0.0"},"peerDependenciesMeta":{"@noble/curves":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ecpair_4.0.4_1771221090409_0.8711430098470287","host":"s3://npm-registry-packages-npm-production"}},"4.0.5":{"name":"@btc-vision/ecpair","type":"module","version":"4.0.5","sideEffects":false,"description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","engines":{"node":">=24.0.0"},"exports":{".":{"browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"node":{"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"types":"./build/index.d.ts","import":"./build/index.js","default":"./build/index.js"},"./browser":{"types":"./browser/index.d.ts","import":"./browser/index.js","default":"./browser/index.js"},"./networks":{"types":"./build/networks.d.ts","import":"./build/networks.js"},"./types":{"types":"./build/types.d.ts","import":"./build/types.js"},"./branded":{"types":"./build/branded.d.ts","import":"./build/branded.js"},"./backend":{"types":"./build/backend.d.ts","import":"./build/backend.js"},"./signer":{"types":"./build/signer.d.ts","import":"./build/signer.js"},"./noble":{"types":"./build/noble.d.ts","import":"./build/noble.js"},"./legacy":{"types":"./build/legacy.d.ts","import":"./build/legacy.js"}},"browser":{"./build/index.js":"./browser/index.js","./build/index.d.ts":"./browser/index.d.ts"},"keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"license":"MIT","main":"build/index.js","types":"build/index.d.ts","typings":"build/index.d.ts","module":"build/index.js","publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/btc-vision/ecpair.git"},"scripts":{"watch":"tsc --watch","build":"eslint src && tsc --build tsconfig.build.json","setup":"npm i && npm run build","browserBuild":"vite build --config vite.config.browser.ts","audit":"better-npm-audit audit -l high","clean":"rimraf build","coverage":"vitest run --coverage","doc":"typedoc --options typedoc.json","format":"npm run prettier -- --write","format:ci":"npm run prettier -- --check","gitdiff:ci":"npm run build && git diff --exit-code","lint":"eslint src/**","lint:tests":"eslint test/**/*.spec.ts","prettier":"prettier \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path ./.prettierignore","test":"npm run build && npm run lint && vitest run","test:watch":"vitest","unit":"vitest run","check:circular":"madge --circular --extensions ts,tsx src/","prebuild":"npm run check:circular"},"peerDependencies":{"@noble/curves":">=2.0.0"},"peerDependenciesMeta":{"@noble/curves":{"optional":true}},"overrides":{"@isaacs/brace-expansion":"^5.0.1","markdown-it":"^14.1.1"},"devDependencies":{"@eslint/js":"^10.0.1","@noble/curves":"^2.0.1","@types/node":"^25.2.3","@vitest/coverage-v8":"^4.0.18","better-npm-audit":"^3.11.0","eslint":"^10.0.0","madge":"^8.0.0","prettier":"^3.8.1","rimraf":"^6.1.3","tiny-secp256k1":"^2.2.4","typedoc":"^0.28.17","typedoc-material-theme":"^1.4.1","typescript":"^5.9.3","typescript-eslint":"^8.56.0","vite":"^7.3.1","vite-plugin-dts":"^4.5.4","vitest":"^4.0.18"},"dependencies":{"@btc-vision/wif":"^6.0.1"},"gitHead":"ecdd51697644f453895a3c7fc49792ff2c93f1ff","_id":"@btc-vision/ecpair@4.0.5","bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"homepage":"https://github.com/btc-vision/ecpair#readme","_nodeVersion":"24.13.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-edkoJJFU7tAAfwsYW+05030tNtG5Rg+qt0/zuIwvmnkaFAWqVTngNE29viwMkttMFbrtZHAVcPYWcn5qelstMA==","shasum":"7be240b1a94e7beb19ceb6e434eb622e03a6c01a","tarball":"https://registry.npmjs.org/@btc-vision/ecpair/-/ecpair-4.0.5.tgz","fileCount":71,"unpackedSize":324486,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@btc-vision%2fecpair@4.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGGPc5BDhoGB5DEcWMMgCwQfbwAo2TAY3FtkPS0sAO3AAiEAjE24Q3cTGz14Hoj7wMW0GrRc1edfpi8krq+Xwv0Xytc="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:97cddbf0-6494-4f27-a88e-70179c2de6a7"}},"directories":{},"maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ecpair_4.0.5_1771290991313_0.29091287783965725"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-28T04:59:10.399Z","modified":"2026-02-17T01:16:31.811Z","4.0.0":"2026-01-28T04:59:10.672Z","4.0.1":"2026-01-28T07:20:02.366Z","4.0.2":"2026-01-29T04:25:08.304Z","4.0.4":"2026-02-16T05:51:30.553Z","4.0.5":"2026-02-17T01:16:31.451Z"},"bugs":{"url":"https://github.com/btc-vision/ecpair/issues"},"license":"MIT","homepage":"https://github.com/btc-vision/ecpair#readme","keywords":["bitcoinjs","bitcoin","ecpair","secp256k1","signer","schnorr","ecdsa","branded-types"],"repository":{"type":"git","url":"git+https://github.com/btc-vision/ecpair.git"},"description":"Universal Bitcoin signer library with branded types and pluggable CryptoBackend","maintainers":[{"name":"blobmaster41","email":"anakun@opnet.org"}],"readme":"# @btc-vision/ecpair\n\n![Bitcoin](https://img.shields.io/badge/Bitcoin-000?style=for-the-badge&logo=bitcoin&logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white)\n![NodeJS](https://img.shields.io/badge/Node%20js-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)\n![NPM](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)\n\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n\n## Overview\n\nUniversal Bitcoin signer library with branded types and a pluggable `CryptoBackend`. Written in TypeScript with zero CommonJS. Ships with a pure-JS backend (`@noble/curves`) and a legacy adapter for `tiny-secp256k1`.\n\n> **What is ecpair?**\n>\n> `@btc-vision/ecpair` provides secp256k1 key management, ECDSA signing, BIP-340 Schnorr signing, Taproot-style key tweaking, and WIF import/export. It is designed for use with [`@btc-vision/bitcoin`](https://github.com/btc-vision/bitcoin) and the broader OPNet ecosystem, but works with any Bitcoin library that consumes standard key types.\n\n> **Why branded types?**\n>\n> `PrivateKey`, `PublicKey`, `XOnlyPublicKey`, `Signature`, and other key types are nominal (branded) `Uint8Array` subtypes. This prevents accidentally passing a raw hash where a private key is expected, or mixing up compressed and x-only public keys. Mistakes are caught at compile time, not at runtime in production.\n\n> **Why pluggable backends?**\n>\n> `CryptoBackend` is an interface. The library ships two implementations:\n> - **`NobleBackend`**: pure JavaScript via `@noble/curves/secp256k1`, zero native dependencies\n> - **`LegacyBackend`**: adapter for existing `tiny-secp256k1` installations (WASM or ASM.js)\n>\n> Swap backends without changing application code.\n\n> **No hardcoded networks**\n>\n> The library does not ship Bitcoin, testnet, or regtest constants. Consumers must provide a `Network` object to every factory method. This keeps the library network-agnostic and avoids accidental mainnet usage in test environments.\n\n## Installation\n\n```bash\nnpm install @btc-vision/ecpair\n```\n\nRequires **Node.js >= 24.0.0**. The package is ESM-only (`\"type\": \"module\"`).\n\n## Quick Start\n\n```typescript\nimport {\n  ECPairSigner,\n  createNobleBackend,\n  createPrivateKey,\n  createMessageHash,\n  verifyCryptoBackend,\n} from '@btc-vision/ecpair';\nimport type { Network } from '@btc-vision/ecpair';\n\n// Define your network\nconst bitcoin: Network = {\n  messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n  bech32: 'bc',\n  bech32Opnet: 'op',\n  bip32: { public: 0x0488b21e, private: 0x0488ade4 },\n  pubKeyHash: 0x00,\n  scriptHash: 0x05,\n  wif: 0x80,\n};\n\n// Create backend and verify integrity\nconst backend = createNobleBackend();\nverifyCryptoBackend(backend);\n\n// Generate a random signer (FIPS 186-5 B.4.2 key generation)\nconst signer = ECPairSigner.makeRandom(backend, bitcoin);\nconsole.log(signer.toWIF());\n\n// Sign and verify\nconst hash = createMessageHash(new Uint8Array(32));\nconst sig = signer.sign(hash);\nconsole.log(signer.verify(hash, sig)); // true\n\n// Schnorr (BIP-340)\nconst schnorrSig = signer.signSchnorr(hash);\nconsole.log(signer.verifySchnorr(hash, schnorrSig)); // true\n```\n\n## API Comparison\n\n| Old API (v3)                        | New API (v4)                                                    |\n|-------------------------------------|-----------------------------------------------------------------|\n| `ECPairFactory(tinysecp)`           | `createNobleBackend()` or `createLegacyBackend(tinysecp)`       |\n| `ECPair.makeRandom()`              | `ECPairSigner.makeRandom(backend, network)`                     |\n| `ECPair.fromPrivateKey(buf, opts)` | `ECPairSigner.fromPrivateKey(backend, privateKey, network)`     |\n| `ECPair.fromPublicKey(buf, opts)`  | `ECPairSigner.fromPublicKey(backend, publicKey, network)`       |\n| `ECPair.fromWIF(str, network)`     | `ECPairSigner.fromWIF(backend, str, network)`                   |\n| `keyPair.network` (optional)        | `signer.network` (always set, required parameter)               |\n| `{ network }` in options            | Separate `network` parameter on every factory method             |\n| `Set<SignerCapability>`             | `number` bitmask of `SignerCapability` flags                     |\n\n## Usage\n\n### Import from WIF\n\n```typescript\nconst signer = ECPairSigner.fromWIF(backend, 'KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn', bitcoin);\nconsole.log(signer.compressed); // true\nconsole.log(signer.toWIF());\n```\n\n### From raw private key\n\n```typescript\nconst signer = ECPairSigner.fromPrivateKey(\n  backend,\n  createPrivateKey(new Uint8Array(32).fill(1)),\n  bitcoin,\n);\n```\n\n### Public-key-only signer (verify only, cannot sign)\n\n```typescript\nimport { createPublicKey } from '@btc-vision/ecpair';\n\nconst pubOnly = ECPairSigner.fromPublicKey(backend, createPublicKey(pubKeyBytes), bitcoin);\nconsole.log(pubOnly.privateKey); // undefined\nconsole.log(pubOnly.verify(hash, sig)); // true\n```\n\n### Taproot-style tweaking\n\n```typescript\nimport type { Bytes32 } from '@btc-vision/ecpair';\n\nconst tweakScalar = new Uint8Array(32).fill(2) as Bytes32;\nconst tweaked = signer.tweak(tweakScalar);\nconsole.log(tweaked.toWIF());\n```\n\n### Legacy backend (tiny-secp256k1)\n\n```typescript\nimport { createLegacyBackend } from '@btc-vision/ecpair';\nimport type { TinySecp256k1Interface } from '@btc-vision/ecpair';\nimport * as tinysecp from 'tiny-secp256k1';\n\nconst legacy = createLegacyBackend(tinysecp as unknown as TinySecp256k1Interface);\nconst kp = ECPairSigner.makeRandom(legacy, bitcoin);\n```\n\n### Custom RNG\n\n```typescript\nimport { randomBytes } from 'node:crypto';\n\nconst kp = ECPairSigner.makeRandom(backend, bitcoin, {\n  rng: (size: number) => new Uint8Array(randomBytes(size).buffer),\n});\n```\n\nThe `rng` function receives 48 bytes (FIPS 186-5 seed length) and must return exactly `size` bytes.\n\n### Multiple networks\n\n```typescript\nconst testnet: Network = {\n  messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n  bech32: 'tb',\n  bech32Opnet: 'opt',\n  bip32: { public: 0x043587cf, private: 0x04358394 },\n  pubKeyHash: 0x6f,\n  scriptHash: 0xc4,\n  wif: 0xef,\n};\n\n// fromWIF accepts an array of candidate networks\nconst kp = ECPairSigner.fromWIF(backend, wifString, [bitcoin, testnet]);\nconsole.log(kp.network === bitcoin); // true if mainnet WIF\n```\n\n### Capabilities\n\n```typescript\nimport { SignerCapability } from '@btc-vision/ecpair';\n\nconst kp = ECPairSigner.makeRandom(backend, bitcoin);\n\nif (kp.capabilities & SignerCapability.SchnorrSign) {\n  console.log('Schnorr signing available');\n}\n\n// Or use the convenience method\nkp.hasCapability(SignerCapability.EcdsaSign);      // true\nkp.hasCapability(SignerCapability.PrivateKeyExport); // true\n```\n\n### WIF encode/decode (standalone)\n\n```typescript\nimport { encodeWIF, decodeWIF, createPrivateKey } from '@btc-vision/ecpair';\n\nconst wif = encodeWIF(createPrivateKey(keyBytes), true, bitcoin);\nconst decoded = decodeWIF(wif, bitcoin);\n// decoded.privateKey, decoded.compressed, decoded.network\n```\n\n## Documentation\n\nVisit our [API documentation](https://btc-vision.github.io/ecpair/) generated by TypeDoc.\n\n## Running Tests\n\n```bash\nnpm test\nnpm run lint\nnpm run lint:tests\nnpm run format:ci\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests: `npm test`\n5. Submit a pull request\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## Reporting Issues\n\n- **Bugs**: Open an [issue](https://github.com/btc-vision/ecpair/issues)\n- **Security**: See [SECURITY.md](./SECURITY.md) - do not open public issues for vulnerabilities\n\n## License\n\n[MIT](./LICENSE)\n\n## Links\n\n- [GitHub](https://github.com/btc-vision/ecpair)\n- [npm](https://www.npmjs.com/package/@btc-vision/ecpair)\n- [OPNet](https://opnet.org)\n- [@btc-vision/bitcoin](https://github.com/btc-vision/bitcoin)\n","readmeFilename":"README.md"}