{"_id":"@asgardex-clients/bitcoin","_rev":"2-358d46e61ad085abfa118ffe3c9ff845","name":"@asgardex-clients/bitcoin","dist-tags":{"latest":"0.3.3"},"versions":{"0.3.3":{"name":"@asgardex-clients/bitcoin","version":"0.3.3","description":"Custom Bitcoin client and utilities used by ASGARDEX clients","keywords":["THORChain","ASGARDEX","Bitcoin"],"author":{"name":"THORChain"},"homepage":"https://gitlab.com/thorchain/asgardex-common/asgardex-bitcoin","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@gitlab.com:thorchain/asgardex-common/asgardex-bitcoin.git"},"scripts":{"clean":"rimraf lib/**","build":"rollup -c","test":"jest","lint":"eslint \"{src,__tests__}/**/*.ts\" --fix","prepublishOnly":"yarn build","postversion":"git push --follow-tags"},"dependencies":{"axios":"^0.20.0","bip39":"^3.0.2","bitcoinjs-lib":"^5.2.0","wif":"^2.0.6"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/bip39":"^3.0.0","@types/bitcoinjs-lib":"^5.0.0","@types/jest":"^26.0.14","@types/wif":"^2.0.1","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","dotenv":"^8.2.0","eslint":"^7.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","husky":"^4.3.0","jest":"^26.4.2","lint-staged":"^10.4.0","prettier":"^2.1.2","rollup":"^2.27.1","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-json":"^4.0.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-typescript2":"^0.27.2","ts-jest":"^26.3.0","tslib":"^2.0.1","typescript":"^4.0.2"},"publishConfig":{"access":"public"},"gitHead":"91b817009b1164c079a0d277b9fccd17e23a32dc","_id":"@asgardex-clients/bitcoin@0.3.3","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (win32)","dist":{"integrity":"sha512-C8oUpi2mwsUa5qB6/wkuE9UDYYGybqZ8Wo/xudqa5Z11+kby9OJtc7ju9Ybsm15MN5MZfxOCNrDE8UQXujbhrA==","shasum":"aa1ee07ea678a626244a5f610ced776236572f1d","tarball":"https://registry.npmjs.org/@asgardex-clients/bitcoin/-/bitcoin-0.3.3.tgz","fileCount":15,"unpackedSize":4295163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcvMWCRA9TVsSAnZWagAA2wkP/20HVdRk5U+O5y9B8zD0\nVHUX8FD6rv/LGrNmwBsMhnlA7lJRx6mtBf/qD683iWgPGs96xWFK+UV+1lp4\ntSsF/KJ+mDaQhl3ZaIrdJP+BaII4sajqrXMcpcg3e3qCmOSA2xhyXYXYlFEZ\nq1S2UtnWYOr7JiCSLI/1beDKFeg9m8gkrDU1blhLUK8+JlcsN5H4eEVsmIqf\nYVO4HFnr/k2PsDmu2oQ0juFF6V+5CiYbPgoDimgSkjl8Lu0aViJU3Xe5JgNc\napG9SBrF87WMoWOZ5oHc+cEQ0z80SIozE9P3kNZoiJHhAJf2PmPTTINKx/br\nRSQ3JI33DmJpPebCYNZK2vjudgrbnLocMg0VlEatmCmnnNAyJYQU5JpkPGd/\nNz2dga6dIeMisbF/k4O2nxWwI/nWSOigIOp3fu57x4grwq6fCrpdnTNiOS9d\nFikm61+6cP6R12BOhouLjKqsooOdPHGzoqCooihuWkIuTksQfBY3/2PPqx31\nj0V/5+ZjzMO/eyHp/+XiXL4ZkU9fLZXgMR6teiQQLSN8fkZ0jBWZiKSEFN6S\nXwZvxIR1TCWCYU33Ssrjks2aPnU89aK8WBvcD7rJddJR1m4YqD+nIcflZert\nmQFpp4j8sz4M3aV/P0d7VZ3/ANXR1gw7Sgt5oNNIAAzURXIkunMZ9qDKCUXP\nn0KQ\r\n=UmfK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDErb8HGMfGQwY1fjwnkmiWb5Uga8fPyg1L8tYxzIMBjAIhAIOXjQZglSZzywDJ+j0u1UkIZYVlcsWuf76RotjHTBAC"}]},"maintainers":[{"name":"s-kashif","email":"static.kash@gmail.com"}],"_npmUser":{"name":"s-kashif","email":"static.kash@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bitcoin_0.3.3_1601368853848_0.7229667295513635"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-29T08:40:53.570Z","0.3.3":"2020-09-29T08:40:54.014Z","modified":"2022-04-04T15:45:10.705Z"},"maintainers":[{"email":"s.w.kuentzel@gmail.com","name":"_stu"},{"email":"static.kash@gmail.com","name":"s-kashif"}],"description":"Custom Bitcoin client and utilities used by ASGARDEX clients","homepage":"https://gitlab.com/thorchain/asgardex-common/asgardex-bitcoin","keywords":["THORChain","ASGARDEX","Bitcoin"],"repository":{"type":"git","url":"git@gitlab.com:thorchain/asgardex-common/asgardex-bitcoin.git"},"author":{"name":"THORChain"},"license":"MIT","readme":"# `@thorchain/asgardex-bitcoin`\r\n\r\nImplements the following:\r\n\r\n```javascript\r\ninterface BitcoinClient {\r\n  generatePhrase(): string\r\n  setPhrase(phrase?: string): void\r\n  validatePhrase(phrase: string): boolean\r\n  purgeClient(): void\r\n  setNetwork(net: Network): void\r\n  getNetwork(net: Network): Bitcoin.networks.Network\r\n  setBaseUrl(endpoint: string): void\r\n  getAddress(): string\r\n  validateAddress(address: string): boolean\r\n  scanUTXOs(): Promise<void>\r\n  getBalance(): number\r\n  getBalanceForAddress(address?: string): Promise<number>\r\n  getTransactions(address: string): Promise<Txs>\r\n  calcFees(memo?: string): Promise<object>\r\n  vaultTx(addressVault: string, valueOut: number, memo: string, feeRate: number): Promise<string>\r\n  normalTx(addressTo: string, valueOut: number, feeRate: number): Promise<string>\r\n}\r\n```\r\n\r\n## Modules\r\n\r\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)\r\n\r\n## Installation\r\n\r\n```\r\nyarn add @thorchain/asgardex-bitcoin\r\n```\r\n\r\nFollowing dependencies will be installed into your project:\r\n\r\n- bitcoinjs-lib\r\n- bip39\r\n- wif\r\n- moment\r\n- axios\r\n\r\n## Testing\r\n\r\nUses a dotenv file to hold a `USER_PHRASE` and a `VAULT_PHRASE`\r\n\r\n## Usage\r\n\r\nInitialize client and use class methods:\r\n\r\n```\r\nimport { Client, Network } from '../src/client'\r\n\r\nconst btcClient = new Client(Network.TEST)\r\n\r\nconst newPhrase = btcClient.generatePhrase()\r\n```\r\n\r\n### .generatePhrase()\r\n\r\nGenerate a 12 word BIP-39 seed phrase.\r\n\r\n**Return**: `string`\r\n\r\n### .setPhrase(`phrase`)\r\n\r\nLoads a 12 word BIP-39 seed phrase to use as a BTC send/receive address.\r\n\r\n**phrase**: 12 word BIP-39 seed phrase as `string`\r\n\r\n**Return**: `void`\r\n\r\n### .validatePhrase(`phrase`)\r\n\r\nValidates if provided `phrase` is BIP-39.\r\n\r\n**phrase**: 12 word BIP-39 seed phrase as `string`\r\n\r\n**Return**: `boolean`\r\n\r\n### .purgeClient()\r\n\r\nClears UTXOs and seed phrase from client class properties.\r\n\r\n**Return**: `void`\r\n\r\n### .setNetwork(`net`)\r\n\r\nSet testnet or mainnet network using the `Network` interface.\r\n\r\n**net**: `Network.TEST` or `Network.MAIN`\r\n\r\n**Return**: `void` \r\n\r\n### .setBaseUrl(`endpoint`)\r\n\r\nSet an electrs REST API endpoint to use for chain data.\r\n\r\n**endpoint**: endpoint as `string`\r\n\r\n**Return**: `void` \r\n\r\n### .getAddress()\r\n\r\nGets a P2WPKH address using the seed phrase set in `.setPhrase()` or initialization. If no phrase is set will error.\r\n\r\n**Return**: `string` \r\n\r\n### .validateAddress(`address`)\r\n\r\nValidates if provided `address` is p2wpkh and same network as the client.\r\n\r\n**address**: `string`\r\n\r\n**Return**: `boolean` \r\n\r\n### .scanUTXOs()\r\n\r\n_Async_\r\n\r\nScans the UTXOs on the set seed phrase in `.setPhrase()` and stores them in class properties.\r\n\r\n**Return**: `void` \r\n\r\n### .getBalance()\r\n\r\nGet the balance of UTXOs from `.scanUTXOs()`\r\n\r\n**Return**: `number` in sats\r\n\r\n### .getBalanceForAddress(`address`)\r\n\r\n_Async_ \r\n\r\nGet the balance of UTXOs for an external address\r\n\r\n**address**: `string`\r\n\r\n**Return**: `number` in sats \r\n\r\n### .getTransactions(`address`)\r\n\r\n_Async_ \r\n\r\nGet transactions for an address\r\n\r\n**address**: `string`\r\n\r\n**Return**: `Array` of `objects` \r\n\r\n### .calcFees(`memo`)\r\n\r\n_Async_ \r\n\r\nCalculates the fee rate and the fee total estimate for fast, regular, and slow transactions. Add a `memo` for a vault TX\r\n\r\n**memo**: `string` _optional_\r\n\r\n**Return**: `object` of `objects`\r\n\r\n### .vaultTx(`addressVault`, `valueOut`, `memo`, `feeRate`)\r\n\r\n_Async_ \r\n\r\nGenerates a valid Vault TX hex to be broadcast\r\n\r\n**addressVault**: `string`\r\n\r\n**valueOut**: `number` in sats\r\n\r\n**memo**: `string`\r\n\r\n**feeRate**: `number`\r\n\r\n### .normalTx(`addressTo`, `valueOut`, `feeRate`)\r\n\r\n_Async_ \r\n\r\nGenerates a valid Vault TX hex to be broadcast\r\n\r\n**addressTo**: `string`\r\n\r\n**valueOut**: `number` in sats\r\n\r\n**feeRate**: `number`","readmeFilename":"README.md"}