{"_id":"@bithighlander/xchain-bitcoin","_rev":"1-476f365ff60d8555e75aa9c2d9dd313d","name":"@bithighlander/xchain-bitcoin","dist-tags":{"latest":"0.8.2"},"versions":{"0.8.2":{"name":"@bithighlander/xchain-bitcoin","version":"0.8.2","description":"Custom Bitcoin client and utilities used by XChainJS clients","keywords":["XChain","Bitcoin"],"author":{"name":"XChainJS"},"homepage":"https://github.com/xchainjs/xchainjs-lib","license":"MIT","main":"lib/index.js","module":"lib/index.esm.js","typings":"lib/index.d.ts","directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+ssh://git@github.com/xchainjs/xchainjs-lib.git"},"scripts":{"clean":"rimraf lib/**","build":"rollup -c","test":"jest","lint":"eslint \"{src,__tests__}/**/*.ts\" --fix --max-warnings 0","prepublishOnly":"yarn build","postversion":"git push --follow-tags"},"dependencies":{"@bithighlander/xchain-client":"^0.3.1","@bithighlander/xchain-crypto":"^0.2.4","axios":"^0.20.0","bitcoinjs-lib":"^5.2.0","wif":"^2.0.6"},"devDependencies":{"@types/bitcoinjs-lib":"^5.0.0","@types/wif":"^2.0.1","axios-mock-adapter":"^1.19.0"},"publishConfig":{"access":"public"},"gitHead":"63b804d9b4ff6a03a1aba7809708e5d5aeaf7ba6","bugs":{"url":"https://github.com/xchainjs/xchainjs-lib/issues"},"_id":"@bithighlander/xchain-bitcoin@0.8.2","_nodeVersion":"14.15.3","_npmVersion":"lerna/3.22.1/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-LBIMJGAnm9LCn1agJnA76sb0W5Ll2qIH77EQCr7Y8AiD0pCZECyNvn2X2HsqOrDtnRZQB+YIdRaoqcrtPfEqUA==","shasum":"ff2d75b2538f20d5d90144e3e1647884c8a2eb95","tarball":"https://registry.npmjs.org/@bithighlander/xchain-bitcoin/-/xchain-bitcoin-0.8.2.tgz","fileCount":19,"unpackedSize":13694944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCQDNCRA9TVsSAnZWagAAAfUP/iiDwPSPlVdTowCSBfuu\ngBt1LUh58pC5ZJ0HumKsHfcKMmXwnDrJ3PC2m4TDOKWdockCZVaga0O9WzVm\n3w+d47PVIu02bUsCAP4ErByVSe+7NT8nkVodC/npSiA4aUT27sZSQc5nYf6w\n3naJ/ZrZRvv6LxWRXRYrTIqX6vl8Xcisci183Nd4dfy8+owpEUM9d6dVEOne\nTcb3BB0DvatqOAYWoIo1s8Hoaqprw1iUrRX7s/JIn+H9MYREAkOCUTl6hf0K\nVTYawryZKC3ikBLFBLIrYhorirK2noz+vBP2t3/KmImDRxlSKoOP59vf5j2S\nKNIKWJ6bD2x/FsZxJZKZdWPglOLFDNfIvp2WjsbSc0/6WTUwNwzBBCPrUx9o\nEzVkQWo+rNeEM7aHHP11JuXP83DE7p71dg4eOoXXQTTBGqGFYxbjQ5OSqWid\nhqpUAxehofax23sKpGfvwJ0tMjyS1LQMVczRyBNGKZUbm1ldfYc8+N1YN8Et\nErmOV96E54u5K29h2Ld2TYQltyOODBjz4nzmZ7CoiOkN6J+kCe8hICFnTTL0\nzOCEN/7PpXcE9I/m/gudb2EPALJ5ihGl5UDF6X7mlxRf8pXp/o3b1n8whX+M\nIbGhzdeZeBOnnttpuQqCeAK1HAPHH8XARX4IENAV3DyQCzBbFyy27TsLtq9Y\nr+sA\r\n=QyvX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjbB9kX/99l9SxWqNuWo5/FFNJkvJXBy/UWmu5+ySPdAIhAKoBjrqkLOmadNr11o/CIfw+/Z9XEB4PkhfjZ+rJPF8L"}]},"_npmUser":{"name":"bithighlander","email":"bithighlander@gmail.com"},"maintainers":[{"name":"bithighlander","email":"bithighlander@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/xchain-bitcoin_0.8.2_1611202765101_0.15624373092830712"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-21T04:19:25.059Z","0.8.2":"2021-01-21T04:19:25.380Z","modified":"2022-04-04T19:01:14.607Z"},"maintainers":[{"name":"bithighlander","email":"bithighlander@gmail.com"}],"description":"Custom Bitcoin client and utilities used by XChainJS clients","homepage":"https://github.com/xchainjs/xchainjs-lib","keywords":["XChain","Bitcoin"],"repository":{"type":"git","url":"git+ssh://git@github.com/xchainjs/xchainjs-lib.git"},"author":{"name":"XChainJS"},"bugs":{"url":"https://github.com/xchainjs/xchainjs-lib/issues"},"license":"MIT","readme":"# `@bithighlander/xchain-client`\n\nImplements the following:\n\n```javascript\ninterface BitcoinClient {\n  generatePhrase(): string\n  setPhrase(phrase?: string): void\n  validatePhrase(phrase: string): boolean\n  purgeClient(): void\n  setNetwork(net: Network): void\n  getNetwork(net: Network): Bitcoin.networks.Network\n  setBaseUrl(endpoint: string): void\n  getAddress(): string\n  validateAddress(address: string): boolean\n  scanUTXOs(): Promise<void>\n  getBalance(): number\n  getBalanceForAddress(address?: string): Promise<number>\n  getTransactions(address: string): Promise<Txs>\n  calcFees(memo?: string): Promise<object>\n  vaultTx(addressVault: string, valueOut: number, memo: string, feeRate: number): Promise<string>\n  normalTx(addressTo: string, valueOut: number, feeRate: number): Promise<string>\n}\n```\n\n## Modules\n\n- `client` - Custom client for communicating with Bitcoin using [BIP39](https://github.com/bitcoinjs/bip39) [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) and [WIF](https://github.com/bitcoinjs/wif)\n\n## Installation\n\n```\nyarn add @bithighlander/xchain-client\n```\n\nFollowing dependencies will be installed into your project:\n\n- bitcoinjs-lib\n- bip39\n- wif\n- moment\n- axios\n\n## Testing\n\nUses a dotenv file to hold a `USER_PHRASE` and a `VAULT_PHRASE`\n\n## Usage\n\nInitialize client and use class methods:\n\n```\nimport { Client, Network } from '../src/client'\n\nconst btcClient = new Client(Network.TEST)\n\nconst newPhrase = btcClient.generatePhrase()\n```\n\n### .generatePhrase()\n\nGenerate a 12 word BIP-39 seed phrase.\n\n**Return**: `string`\n\n### .setPhrase(`phrase`)\n\nLoads a 12 word BIP-39 seed phrase to use as a BTC send/receive address.\n\n**phrase**: 12 word BIP-39 seed phrase as `string`\n\n**Return**: `void`\n\n### .validatePhrase(`phrase`)\n\nValidates if provided `phrase` is BIP-39.\n\n**phrase**: 12 word BIP-39 seed phrase as `string`\n\n**Return**: `boolean`\n\n### .purgeClient()\n\nClears UTXOs and seed phrase from client class properties.\n\n**Return**: `void`\n\n### .setNetwork(`net`)\n\nSet testnet or mainnet network using the `Network` interface.\n\n**net**: `Network.TEST` or `Network.MAIN`\n\n**Return**: `void` \n\n### .setBaseUrl(`endpoint`)\n\nSet an electrs REST API endpoint to use for chain data.\n\n**endpoint**: endpoint as `string`\n\n**Return**: `void` \n\n### .getAddress()\n\nGets a P2WPKH address using the seed phrase set in `.setPhrase()` or initialization. If no phrase is set will error.\n\n**Return**: `string` \n\n### .validateAddress(`address`)\n\nValidates if provided `address` is p2wpkh and same network as the client.\n\n**address**: `string`\n\n**Return**: `boolean` \n\n### .scanUTXOs()\n\n_Async_\n\nScans the UTXOs on the set seed phrase in `.setPhrase()` and stores them in class properties.\n\n**Return**: `void` \n\n### .getBalance()\n\nGet the balance of UTXOs from `.scanUTXOs()`\n\n**Return**: `number` in sats\n\n### .getBalanceForAddress(`address`)\n\n_Async_ \n\nGet the balance of UTXOs for an external address\n\n**address**: `string`\n\n**Return**: `number` in sats \n\n### .getTransactions(`address`)\n\n_Async_ \n\nGet transactions for an address\n\n**address**: `string`\n\n**Return**: `Array` of `objects` \n\n### .calcFees(`memo`)\n\n_Async_ \n\nCalculates the fee rate and the fee total estimate for fast, regular, and slow transactions. Add a `memo` for a vault TX\n\n**memo**: `string` _optional_\n\n**Return**: `object` of `objects`\n\n### .vaultTx(`addressVault`, `valueOut`, `memo`, `feeRate`)\n\n_Async_ \n\nGenerates a valid Vault TX hex to be broadcast\n\n**addressVault**: `string`\n\n**valueOut**: `number` in sats\n\n**memo**: `string`\n\n**feeRate**: `number`\n\n### .normalTx(`addressTo`, `valueOut`, `feeRate`)\n\n_Async_ \n\nGenerates a valid Vault TX hex to be broadcast\n\n**addressTo**: `string`\n\n**valueOut**: `number` in sats\n\n**feeRate**: `number`","readmeFilename":"README.md"}