@ledgerhq/hw-app-btc 10.2.1-start-exchange.0 → 10.2.2-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/README.md +104 -58
  4. package/lib/Btc.d.ts +31 -7
  5. package/lib/Btc.d.ts.map +1 -1
  6. package/lib/Btc.js +31 -7
  7. package/lib/Btc.js.map +1 -1
  8. package/lib/BtcNew.d.ts +4 -2
  9. package/lib/BtcNew.d.ts.map +1 -1
  10. package/lib/BtcNew.js +9 -2
  11. package/lib/BtcNew.js.map +1 -1
  12. package/lib/BtcOld.d.ts +8 -6
  13. package/lib/BtcOld.d.ts.map +1 -1
  14. package/lib/BtcOld.js +8 -6
  15. package/lib/BtcOld.js.map +1 -1
  16. package/lib/bip32.d.ts +9 -0
  17. package/lib/bip32.d.ts.map +1 -1
  18. package/lib/bip32.js +9 -0
  19. package/lib/bip32.js.map +1 -1
  20. package/lib/constants.d.ts.map +1 -1
  21. package/lib/constants.js +6 -1
  22. package/lib/constants.js.map +1 -1
  23. package/lib/createTransaction.d.ts.map +1 -1
  24. package/lib/createTransaction.js +2 -1
  25. package/lib/createTransaction.js.map +1 -1
  26. package/lib/getWalletPublicKey.d.ts +1 -1
  27. package/lib/types.d.ts.map +1 -1
  28. package/lib-es/Btc.d.ts +31 -7
  29. package/lib-es/Btc.d.ts.map +1 -1
  30. package/lib-es/Btc.js +31 -7
  31. package/lib-es/Btc.js.map +1 -1
  32. package/lib-es/BtcNew.d.ts +4 -2
  33. package/lib-es/BtcNew.d.ts.map +1 -1
  34. package/lib-es/BtcNew.js +9 -2
  35. package/lib-es/BtcNew.js.map +1 -1
  36. package/lib-es/BtcOld.d.ts +8 -6
  37. package/lib-es/BtcOld.d.ts.map +1 -1
  38. package/lib-es/BtcOld.js +8 -6
  39. package/lib-es/BtcOld.js.map +1 -1
  40. package/lib-es/bip32.d.ts +9 -0
  41. package/lib-es/bip32.d.ts.map +1 -1
  42. package/lib-es/bip32.js +9 -0
  43. package/lib-es/bip32.js.map +1 -1
  44. package/lib-es/constants.d.ts.map +1 -1
  45. package/lib-es/constants.js +6 -1
  46. package/lib-es/constants.js.map +1 -1
  47. package/lib-es/createTransaction.d.ts.map +1 -1
  48. package/lib-es/createTransaction.js +2 -1
  49. package/lib-es/createTransaction.js.map +1 -1
  50. package/lib-es/getWalletPublicKey.d.ts +1 -1
  51. package/lib-es/types.d.ts.map +1 -1
  52. package/package.json +4 -4
  53. package/src/Btc.ts +34 -8
  54. package/src/BtcNew.ts +9 -2
  55. package/src/BtcOld.ts +8 -6
  56. package/src/bip32.ts +10 -0
  57. package/src/constants.ts +6 -1
  58. package/src/createTransaction.ts +2 -1
  59. package/src/getWalletPublicKey.ts +1 -1
  60. package/src/types.ts +12 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/hw-app-btc@10.2.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-btc
2
+ > @ledgerhq/hw-app-btc@10.2.1 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/hw-app-btc
3
3
  > tsc && tsc -m ES6 --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,11 +1,27 @@
1
1
  # @ledgerhq/hw-app-btc
2
2
 
3
- ## 10.2.1-start-exchange.0
3
+ ## 10.2.2-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#6105](https://github.com/LedgerHQ/ledger-live/pull/6105) [`6d40673`](https://github.com/LedgerHQ/ledger-live/commit/6d4067382b55827b00806a1b71ac0b249563d90f) Thanks [@hzheng-ledger](https://github.com/hzheng-ledger)! - update hw-app-btc doc
8
+
9
+ - Updated dependencies []:
10
+ - @ledgerhq/hw-transport@6.30.4-next.0
11
+
12
+ ## 10.2.1
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [[`eadebff`](https://github.com/LedgerHQ/ledger-live/commit/eadebff3fe58aef6a5befb033d5147afc49663d3)]:
17
+ - @ledgerhq/hw-transport@6.30.3
18
+
19
+ ## 10.2.1-next.0
4
20
 
5
21
  ### Patch Changes
6
22
 
7
23
  - Updated dependencies [[`eadebff`](https://github.com/LedgerHQ/ledger-live/commit/eadebff3fe58aef6a5befb033d5147afc49663d3)]:
8
- - @ledgerhq/hw-transport@6.30.3-start-exchange.0
24
+ - @ledgerhq/hw-transport@6.30.3-next.0
9
25
 
10
26
  ## 10.2.0
11
27
 
package/README.md CHANGED
@@ -27,6 +27,7 @@ For a smooth and quick integration:
27
27
 
28
28
  #### Table of Contents
29
29
 
30
+ * [bippath](#bippath)
30
31
  * [Btc](#btc)
31
32
  * [Parameters](#parameters)
32
33
  * [Examples](#examples)
@@ -50,80 +51,90 @@ For a smooth and quick integration:
50
51
  * [serializeTransactionOutputs](#serializetransactionoutputs)
51
52
  * [Parameters](#parameters-7)
52
53
  * [Examples](#examples-6)
54
+ * [getTrustedInput](#gettrustedinput)
55
+ * [Parameters](#parameters-8)
56
+ * [getTrustedInputBIP143](#gettrustedinputbip143)
57
+ * [Parameters](#parameters-9)
53
58
  * [BtcNew](#btcnew)
54
- * [Parameters](#parameters-8)
55
59
  * [getWalletXpub](#getwalletxpub-1)
56
- * [Parameters](#parameters-9)
57
- * [getWalletPublicKey](#getwalletpublickey-1)
58
60
  * [Parameters](#parameters-10)
59
- * [createPaymentTransaction](#createpaymenttransaction-1)
61
+ * [getWalletPublicKey](#getwalletpublickey-1)
60
62
  * [Parameters](#parameters-11)
61
- * [signMessage](#signmessage-1)
63
+ * [createPaymentTransaction](#createpaymenttransaction-1)
62
64
  * [Parameters](#parameters-12)
65
+ * [signMessage](#signmessage-1)
66
+ * [Parameters](#parameters-13)
67
+ * [descrTemplFrom](#descrtemplfrom)
68
+ * [Parameters](#parameters-14)
63
69
  * [BtcOld](#btcold)
64
- * [Parameters](#parameters-13)
65
- * [Examples](#examples-7)
66
70
  * [getWalletPublicKey](#getwalletpublickey-2)
67
- * [Parameters](#parameters-14)
68
- * [Examples](#examples-8)
69
- * [createPaymentTransaction](#createpaymenttransaction-2)
70
71
  * [Parameters](#parameters-15)
71
- * [Examples](#examples-9)
72
+ * [Examples](#examples-7)
73
+ * [createPaymentTransaction](#createpaymenttransaction-2)
74
+ * [Parameters](#parameters-16)
75
+ * [Examples](#examples-8)
72
76
  * [CreateTransactionArg](#createtransactionarg)
73
77
  * [Properties](#properties)
74
78
  * [AddressFormat](#addressformat)
75
79
  * [AccountType](#accounttype)
76
80
  * [spendingCondition](#spendingcondition)
77
- * [Parameters](#parameters-16)
78
- * [setInput](#setinput)
79
81
  * [Parameters](#parameters-17)
80
- * [setOwnOutput](#setownoutput)
82
+ * [setInput](#setinput)
81
83
  * [Parameters](#parameters-18)
84
+ * [setOwnOutput](#setownoutput)
85
+ * [Parameters](#parameters-19)
82
86
  * [getDescriptorTemplate](#getdescriptortemplate)
83
87
  * [SingleKeyAccount](#singlekeyaccount)
84
88
  * [getTaprootOutputKey](#gettaprootoutputkey)
85
- * [Parameters](#parameters-19)
86
- * [AppClient](#appclient)
87
89
  * [Parameters](#parameters-20)
88
- * [ClientCommandInterpreter](#clientcommandinterpreter)
90
+ * [AppClient](#appclient)
89
91
  * [Parameters](#parameters-21)
90
- * [MerkelizedPsbt](#merkelizedpsbt)
92
+ * [ClientCommandInterpreter](#clientcommandinterpreter)
91
93
  * [Parameters](#parameters-22)
92
- * [Merkle](#merkle)
94
+ * [MerkelizedPsbt](#merkelizedpsbt)
93
95
  * [Parameters](#parameters-23)
94
- * [MerkleMap](#merklemap)
96
+ * [Merkle](#merkle)
95
97
  * [Parameters](#parameters-24)
96
- * [WalletPolicy](#walletpolicy)
98
+ * [MerkleMap](#merklemap)
97
99
  * [Parameters](#parameters-25)
98
- * [extract](#extract)
100
+ * [WalletPolicy](#walletpolicy)
99
101
  * [Parameters](#parameters-26)
100
- * [finalize](#finalize)
102
+ * [extract](#extract)
101
103
  * [Parameters](#parameters-27)
102
- * [clearFinalizedInput](#clearfinalizedinput)
104
+ * [finalize](#finalize)
103
105
  * [Parameters](#parameters-28)
104
- * [writePush](#writepush)
106
+ * [clearFinalizedInput](#clearfinalizedinput)
105
107
  * [Parameters](#parameters-29)
108
+ * [writePush](#writepush)
109
+ * [Parameters](#parameters-30)
106
110
  * [PsbtV2](#psbtv2)
107
111
  * [serializeTransactionOutputs](#serializetransactionoutputs-1)
108
- * [Parameters](#parameters-30)
109
- * [Examples](#examples-10)
112
+ * [Parameters](#parameters-31)
113
+ * [Examples](#examples-9)
110
114
  * [SignP2SHTransactionArg](#signp2shtransactionarg)
111
115
  * [Properties](#properties-1)
112
116
  * [TransactionInput](#transactioninput)
113
117
  * [TransactionOutput](#transactionoutput)
114
118
  * [Transaction](#transaction)
115
119
 
120
+ ### bippath
121
+
122
+ BIP32 Path Handling for Bitcoin Wallets
123
+
124
+ This file provides utility functions to handle BIP32 paths,
125
+ which are commonly used in hierarchical deterministic (HD) wallets.
126
+ It includes functions to convert BIP32 paths to and from different formats,
127
+ extract components from extended public keys (xpubs), and manipulate path elements.
128
+
116
129
  ### Btc
117
130
 
118
131
  Bitcoin API.
119
132
 
120
133
  #### Parameters
121
134
 
122
- * `$0` **{transport: Transport, scrambleKey: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?, currency: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?}** 
123
-
124
- * `$0.transport`  
125
- * `$0.scrambleKey` (optional, default `"BTC"`)
126
- * `$0.currency` (optional, default `"bitcoin"`)
135
+ * `transport` The transport layer used for communication.
136
+ * `scrambleKey` This parameter is deprecated and no longer needed.
137
+ * `currency` The currency to use, defaults to "bitcoin".
127
138
 
128
139
  #### Examples
129
140
 
@@ -138,8 +149,10 @@ Get an XPUB with a ledger device
138
149
 
139
150
  ##### Parameters
140
151
 
141
- * `arg` **{path: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), xpubVersion: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** derivation parameter* path: a BIP 32 path of the account level. e.g. `84'/0'/0'`
142
- * xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)
152
+ * `arg` **{path: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), xpubVersion: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** derivation parameter* path: a BIP 32 path of the account level. (e.g. The derivation path `84'/0'/0'`
153
+ follows the `purpose' / coin_type' / account'` standard, with purpose=84, coin\_type=0, account=0)
154
+ * xpubVersion: the XPUBVersion of the coin used. (refer to ledgerjs/packages/cryptoassets/src/currencies.ts
155
+ for the XPUBVersion value if needed)
143
156
 
144
157
  Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** XPUB of the account
145
158
 
@@ -147,9 +160,9 @@ Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/
147
160
 
148
161
  ##### Parameters
149
162
 
150
- * `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a BIP 32 path
163
+ * `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a BIP 32 path (i.e. the `purpose’ / coin_type’ / account’ / change / address_index` standard)
151
164
  * `opts` **{verify: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?, format: [AddressFormat](#addressformat)?}?**&#x20;
152
- * `options` an object with optional these fields:* verify (boolean) will ask user to confirm the address on the device
165
+ * `options` an object with optional these fields:* verify (boolean) whether ask user to confirm the address on the device
153
166
 
154
167
  * format ("legacy" | "p2sh" | "bech32" | "bech32m" | "cashaddr") to use different bitcoin address formatter.NB The normal usage is to use:* legacy format with 44' paths
155
168
 
@@ -157,6 +170,8 @@ Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/
157
170
 
158
171
  * bech32 format with 84' paths
159
172
 
173
+ * bech32m format with 86' paths
174
+
160
175
  * cashaddr in case of Bitcoin Cash
161
176
 
162
177
  ##### Examples
@@ -211,6 +226,8 @@ To sign a transaction involving standard (P2PKH) inputs, call createTransaction
211
226
  * "bech32m" for spending segwit v1+ outputs
212
227
  * "abc" for bch
213
228
  * "gold" for btg
229
+ * "decred" for decred
230
+ * "zcash" for zcash
214
231
  * "bipxxx" for using BIPxxx
215
232
  * "sapling" to indicate a zec transaction is supporting sapling (to be set over block 419200)
216
233
  * `expiryHeight` is an optional Buffer for zec overwinter / sapling Txs
@@ -262,11 +279,11 @@ For each UTXO included in your transaction, create a transaction object from the
262
279
 
263
280
  ##### Parameters
264
281
 
265
- * `transactionHex` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
266
- * `isSegwitSupported` **([boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** (optional, default `false`)
267
- * `hasTimestamp` (optional, default `false`)
268
- * `hasExtraData` (optional, default `false`)
269
- * `additionals` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `[]`)
282
+ * `transactionHex` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a raw hexadecimal serialized transaction
283
+ * `isSegwitSupported` **([boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** is a boolean indicating if the segwit is supported (optional, default `false`)
284
+ * `hasTimestamp` is a boolean (peercoin includes timestamp in their transactions, others don't) (optional, default `false`)
285
+ * `hasExtraData` is a boolean (komodo, zencash and zcash include extraData in their transactions, others don't) (optional, default `false`)
286
+ * `additionals` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** list of additionnal options (optional, default `[]`)
270
287
 
271
288
  ##### Examples
272
289
 
@@ -274,10 +291,12 @@ For each UTXO included in your transaction, create a transaction object from the
274
291
  const tx1 = btc.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
275
292
  ```
276
293
 
277
- Returns **[Transaction](#transaction)**&#x20;
294
+ Returns **[Transaction](#transaction)** the transaction object deserialized from the raw hexadecimal transaction
278
295
 
279
296
  #### serializeTransactionOutputs
280
297
 
298
+ Serialize a transaction's outputs to hexadecimal
299
+
281
300
  ##### Parameters
282
301
 
283
302
  * `t` **[Transaction](#transaction)**&#x20;
@@ -291,10 +310,36 @@ const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');
291
310
 
292
311
  Returns **[Buffer](https://nodejs.org/api/buffer.html)**&#x20;
293
312
 
313
+ #### getTrustedInput
314
+
315
+ Trusted input is the hash of a UTXO that needs to be signed
316
+ For Legacy transactions, the app has some APDUs flows that do the amount check for an UTXO,
317
+ by parsing the transaction that created this UTXO
318
+
319
+ ##### Parameters
320
+
321
+ * `indexLookup` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**&#x20;
322
+ * `transaction` **[Transaction](#transaction)**&#x20;
323
+ * `additionals` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `[]`)
324
+
325
+ Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20;
326
+
327
+ #### getTrustedInputBIP143
328
+
329
+ Trusted input is the hash of a UTXO that needs to be signed. BIP143 is used for Segwit inputs.
330
+
331
+ ##### Parameters
332
+
333
+ * `indexLookup` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**&#x20;
334
+ * `transaction` **[Transaction](#transaction)**&#x20;
335
+ * `additionals` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `[]`)
336
+
337
+ Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
338
+
294
339
  ### BtcNew
295
340
 
296
341
  This class implements the same interface as BtcOld (formerly
297
- named Btc), but interacts with Bitcoin hardware app version 2+
342
+ named Btc), but interacts with Bitcoin hardware app version 2.1.0+
298
343
  which uses a totally new APDU protocol. This new
299
344
  protocol is documented at
300
345
  <https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md>
@@ -305,10 +350,6 @@ input data into the PSBT process. In the future, a new interface should
305
350
  be developed that exposes PSBT to the outer world, which would render
306
351
  a much cleaner implementation.
307
352
 
308
- #### Parameters
309
-
310
- * `` &#x20;
311
-
312
353
  #### getWalletXpub
313
354
 
314
355
  This is a new method that allow users to get an xpub at a standard path.
@@ -394,20 +435,21 @@ and returns v, r, s.
394
435
 
395
436
  Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{v: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), r: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), s: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>**&#x20;
396
437
 
397
- ### BtcOld
438
+ ### descrTemplFrom
398
439
 
399
- Bitcoin API.
440
+ This function returns a descriptor template based on the address format.
441
+ See <https://github.com/LedgerHQ/app-bitcoin-new/blob/develop/doc/wallet.md> for details of
442
+ the bitcoin descriptor template.
400
443
 
401
444
  #### Parameters
402
445
 
403
- * `` &#x20;
446
+ * `addressFormat` **[AddressFormat](#addressformat)**&#x20;
404
447
 
405
- #### Examples
448
+ Returns **DefaultDescriptorTemplate**&#x20;
406
449
 
407
- ```javascript
408
- import Btc from "@ledgerhq/hw-app-btc";
409
- const btc = new Btc({ transport, currency: "zcash" });
410
- ```
450
+ ### BtcOld
451
+
452
+ This Bitcoin old API is compatible with versions of the Bitcoin nano app that are earlier than 2.1.0
411
453
 
412
454
  #### getWalletPublicKey
413
455
 
@@ -417,11 +459,13 @@ const btc = new Btc({ transport, currency: "zcash" });
417
459
  * `opts` **{verify: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?, format: [AddressFormat](#addressformat)?}?**&#x20;
418
460
  * `options` an object with optional these fields:* verify (boolean) will ask user to confirm the address on the device
419
461
 
420
- * format ("legacy" | "p2sh" | "bech32" | "cashaddr") to use different bitcoin address formatter.NB The normal usage is to use:* legacy format with 44' paths
462
+ * format ("legacy" | "p2sh" | "bech32" | "bech32m" | "cashaddr") to use different bitcoin address formatter.NB The normal usage is to use:* legacy format with 44' paths
421
463
 
422
464
  * p2sh format with 49' paths
423
465
 
424
- * bech32 format with 173' paths
466
+ * bech32 format with 84' paths
467
+
468
+ * bech32m format with 86' paths
425
469
 
426
470
  * cashaddr in case of Bitcoin Cash
427
471
 
@@ -455,6 +499,8 @@ To sign a transaction involving standard (P2PKH) inputs, call createTransaction
455
499
  * `additionals` list of additionnal options* "bech32" for spending native segwit outputs
456
500
  * "abc" for bch
457
501
  * "gold" for btg
502
+ * "decred" for decred
503
+ * "zcash" for zcash
458
504
  * "bipxxx" for using BIPxxx
459
505
  * "sapling" to indicate a zec transaction is supporting sapling (to be set over block 419200)
460
506
  * `expiryHeight` is an optional Buffer for zec overwinter / sapling Txs
@@ -495,7 +541,7 @@ Type: {inputs: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Referen
495
541
 
496
542
  ### AddressFormat
497
543
 
498
- address format is one of legacy | p2sh | bech32 | cashaddr
544
+ address format is one of legacy | p2sh | bech32 | bech32m | cashaddr
499
545
 
500
546
  Type: (`"legacy"` | `"p2sh"` | `"bech32"` | `"bech32m"` | `"cashaddr"`)
501
547
 
package/lib/Btc.d.ts CHANGED
@@ -8,8 +8,11 @@ import type { SignP2SHTransactionArg } from "./signP2SHTransaction";
8
8
  import type { Transaction } from "./types";
9
9
  export type { AddressFormat };
10
10
  /**
11
- * Bitcoin API.
12
- *
11
+ * @class Btc
12
+ * @description Bitcoin API.
13
+ * @param transport The transport layer used for communication.
14
+ * @param scrambleKey This parameter is deprecated and no longer needed.
15
+ * @param currency The currency to use, defaults to "bitcoin".
13
16
  * @example
14
17
  * import Btc from "@ledgerhq/hw-app-btc";
15
18
  * const btc = new Btc({ transport, currency: "bitcoin" });
@@ -25,8 +28,10 @@ export default class Btc {
25
28
  /**
26
29
  * Get an XPUB with a ledger device
27
30
  * @param arg derivation parameter
28
- * - path: a BIP 32 path of the account level. e.g. `84'/0'/0'`
29
- * - xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)
31
+ * - path: a BIP 32 path of the account level. (e.g. The derivation path `84'/0'/0'`
32
+ * follows the `purpose' / coin_type' / account'` standard, with purpose=84, coin_type=0, account=0)
33
+ * - xpubVersion: the XPUBVersion of the coin used. (refer to ledgerjs/packages/cryptoassets/src/currencies.ts
34
+ * for the XPUBVersion value if needed)
30
35
  * @returns XPUB of the account
31
36
  */
32
37
  getWalletXpub(arg: {
@@ -34,10 +39,10 @@ export default class Btc {
34
39
  xpubVersion: number;
35
40
  }): Promise<string>;
36
41
  /**
37
- * @param path a BIP 32 path
42
+ * @param path a BIP 32 path (i.e. the `purpose’ / coin_type’ / account’ / change / address_index` standard)
38
43
  * @param options an object with optional these fields:
39
44
  *
40
- * - verify (boolean) will ask user to confirm the address on the device
45
+ * - verify (boolean) whether ask user to confirm the address on the device
41
46
  *
42
47
  * - format ("legacy" | "p2sh" | "bech32" | "bech32m" | "cashaddr") to use different bitcoin address formatter.
43
48
  *
@@ -49,6 +54,8 @@ export default class Btc {
49
54
  *
50
55
  * - bech32 format with 84' paths
51
56
  *
57
+ * - bech32m format with 86' paths
58
+ *
52
59
  * - cashaddr in case of Bitcoin Cash
53
60
  *
54
61
  * @example
@@ -98,6 +105,8 @@ export default class Btc {
98
105
  * - "bech32m" for spending segwit v1+ outputs
99
106
  * - "abc" for bch
100
107
  * - "gold" for btg
108
+ * - "decred" for decred
109
+ * - "zcash" for zcash
101
110
  * - "bipxxx" for using BIPxxx
102
111
  * - "sapling" to indicate a zec transaction is supporting sapling (to be set over block 419200)
103
112
  * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs
@@ -133,17 +142,32 @@ export default class Btc {
133
142
  signP2SHTransaction(arg: SignP2SHTransactionArg): Promise<string[]>;
134
143
  /**
135
144
  * For each UTXO included in your transaction, create a transaction object from the raw serialized version of the transaction used in this UTXO.
145
+ * @param transactionHex a raw hexadecimal serialized transaction
146
+ * @param isSegwitSupported is a boolean indicating if the segwit is supported
147
+ * @param hasTimestamp is a boolean (peercoin includes timestamp in their transactions, others don't)
148
+ * @param hasExtraData is a boolean (komodo, zencash and zcash include extraData in their transactions, others don't)
149
+ * @param additionals list of additionnal options
150
+ * @return the transaction object deserialized from the raw hexadecimal transaction
136
151
  * @example
137
152
  const tx1 = btc.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
138
153
  */
139
154
  splitTransaction(transactionHex: string, isSegwitSupported?: boolean | null | undefined, hasTimestamp?: boolean, hasExtraData?: boolean, additionals?: Array<string>): Transaction;
140
155
  /**
141
- @example
156
+ * Serialize a transaction's outputs to hexadecimal
157
+ * @example
142
158
  const tx1 = btc.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
143
159
  const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');
144
160
  */
145
161
  serializeTransactionOutputs(t: Transaction): Buffer;
162
+ /**
163
+ * Trusted input is the hash of a UTXO that needs to be signed
164
+ * For Legacy transactions, the app has some APDUs flows that do the amount check for an UTXO,
165
+ * by parsing the transaction that created this UTXO
166
+ */
146
167
  getTrustedInput(indexLookup: number, transaction: Transaction, additionals?: Array<string>): Promise<string>;
168
+ /**
169
+ * Trusted input is the hash of a UTXO that needs to be signed. BIP143 is used for Segwit inputs.
170
+ */
147
171
  getTrustedInputBIP143(indexLookup: number, transaction: Transaction, additionals?: Array<string>): string;
148
172
  changeImplIfNecessary(): Promise<BtcOld | BtcNew>;
149
173
  }
package/lib/Btc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Btc.d.ts","sourceRoot":"","sources":["../src/Btc.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAkB;gBAEnB,EACV,SAAS,EACT,WAAmB,EACnB,QAAoB,GACrB,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IA8BD;;;;;;OAMG;IACH,aAAa,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1E;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GACA,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;OAQG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IASF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,wBAAwB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpE;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInE;;;;OAIG;IACH,gBAAgB,CACd,cAAc,EAAE,MAAM,EACtB,iBAAiB,GAAE,OAAO,GAAG,IAAI,GAAG,SAAiB,EACrD,YAAY,UAAQ,EACpB,YAAY,UAAQ,EACpB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,WAAW;IAUd;;;;MAIE;IACF,2BAA2B,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IAInD,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,OAAO,CAAC,MAAM,CAAC;IAIlB,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,MAAM;IAIH,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAmCxD"}
1
+ {"version":3,"file":"Btc.d.ts","sourceRoot":"","sources":["../src/Btc.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;;;;;;;GASG;AAEH,MAAM,CAAC,OAAO,OAAO,GAAG;IAEtB,OAAO,CAAC,UAAU,CAAY;IAG9B,OAAO,CAAC,KAAK,CAAkB;gBACnB,EACV,SAAS,EACT,WAAmB,EACnB,QAAoB,GACrB,EAAE;QACD,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IA8BD;;;;;;;;OAQG;IACH,aAAa,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GACA,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmBF;;;;;;;;OAQG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IASF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,wBAAwB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpE;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInE;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,cAAc,EAAE,MAAM,EACtB,iBAAiB,GAAE,OAAO,GAAG,IAAI,GAAG,SAAiB,EACrD,YAAY,UAAQ,EACpB,YAAY,UAAQ,EACpB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,WAAW;IAUd;;;;;MAKE;IACF,2BAA2B,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IAInD;;;;OAIG;IACH,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,OAAO,CAAC,MAAM,CAAC;IAIlB;;OAEG;IACH,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,GAAE,KAAK,CAAC,MAAM,CAAM,GAC9B,MAAM;IAIH,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAmCxD"}
package/lib/Btc.js CHANGED
@@ -23,8 +23,11 @@ const splitTransaction_1 = require("./splitTransaction");
23
23
  const signP2SHTransaction_1 = require("./signP2SHTransaction");
24
24
  const getAppAndVersion_1 = require("./getAppAndVersion");
25
25
  /**
26
- * Bitcoin API.
27
- *
26
+ * @class Btc
27
+ * @description Bitcoin API.
28
+ * @param transport The transport layer used for communication.
29
+ * @param scrambleKey This parameter is deprecated and no longer needed.
30
+ * @param currency The currency to use, defaults to "bitcoin".
28
31
  * @example
29
32
  * import Btc from "@ledgerhq/hw-app-btc";
30
33
  * const btc = new Btc({ transport, currency: "bitcoin" });
@@ -57,8 +60,10 @@ class Btc {
57
60
  /**
58
61
  * Get an XPUB with a ledger device
59
62
  * @param arg derivation parameter
60
- * - path: a BIP 32 path of the account level. e.g. `84'/0'/0'`
61
- * - xpubVersion: the XPUBVersion of the coin used. (use @ledgerhq/currencies if needed)
63
+ * - path: a BIP 32 path of the account level. (e.g. The derivation path `84'/0'/0'`
64
+ * follows the `purpose' / coin_type' / account'` standard, with purpose=84, coin_type=0, account=0)
65
+ * - xpubVersion: the XPUBVersion of the coin used. (refer to ledgerjs/packages/cryptoassets/src/currencies.ts
66
+ * for the XPUBVersion value if needed)
62
67
  * @returns XPUB of the account
63
68
  */
64
69
  getWalletXpub(arg) {
@@ -67,10 +72,10 @@ class Btc {
67
72
  });
68
73
  }
69
74
  /**
70
- * @param path a BIP 32 path
75
+ * @param path a BIP 32 path (i.e. the `purpose’ / coin_type’ / account’ / change / address_index` standard)
71
76
  * @param options an object with optional these fields:
72
77
  *
73
- * - verify (boolean) will ask user to confirm the address on the device
78
+ * - verify (boolean) whether ask user to confirm the address on the device
74
79
  *
75
80
  * - format ("legacy" | "p2sh" | "bech32" | "bech32m" | "cashaddr") to use different bitcoin address formatter.
76
81
  *
@@ -82,6 +87,8 @@ class Btc {
82
87
  *
83
88
  * - bech32 format with 84' paths
84
89
  *
90
+ * - bech32m format with 86' paths
91
+ *
85
92
  * - cashaddr in case of Bitcoin Cash
86
93
  *
87
94
  * @example
@@ -143,6 +150,8 @@ class Btc {
143
150
  * - "bech32m" for spending segwit v1+ outputs
144
151
  * - "abc" for bch
145
152
  * - "gold" for btg
153
+ * - "decred" for decred
154
+ * - "zcash" for zcash
146
155
  * - "bipxxx" for using BIPxxx
147
156
  * - "sapling" to indicate a zec transaction is supporting sapling (to be set over block 419200)
148
157
  * @param expiryHeight is an optional Buffer for zec overwinter / sapling Txs
@@ -187,6 +196,12 @@ class Btc {
187
196
  }
188
197
  /**
189
198
  * For each UTXO included in your transaction, create a transaction object from the raw serialized version of the transaction used in this UTXO.
199
+ * @param transactionHex a raw hexadecimal serialized transaction
200
+ * @param isSegwitSupported is a boolean indicating if the segwit is supported
201
+ * @param hasTimestamp is a boolean (peercoin includes timestamp in their transactions, others don't)
202
+ * @param hasExtraData is a boolean (komodo, zencash and zcash include extraData in their transactions, others don't)
203
+ * @param additionals list of additionnal options
204
+ * @return the transaction object deserialized from the raw hexadecimal transaction
190
205
  * @example
191
206
  const tx1 = btc.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
192
207
  */
@@ -194,16 +209,25 @@ class Btc {
194
209
  return (0, splitTransaction_1.splitTransaction)(transactionHex, isSegwitSupported, hasTimestamp, hasExtraData, additionals);
195
210
  }
196
211
  /**
197
- @example
212
+ * Serialize a transaction's outputs to hexadecimal
213
+ * @example
198
214
  const tx1 = btc.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
199
215
  const outputScript = btc.serializeTransactionOutputs(tx1).toString('hex');
200
216
  */
201
217
  serializeTransactionOutputs(t) {
202
218
  return (0, serializeTransaction_1.serializeTransactionOutputs)(t);
203
219
  }
220
+ /**
221
+ * Trusted input is the hash of a UTXO that needs to be signed
222
+ * For Legacy transactions, the app has some APDUs flows that do the amount check for an UTXO,
223
+ * by parsing the transaction that created this UTXO
224
+ */
204
225
  getTrustedInput(indexLookup, transaction, additionals = []) {
205
226
  return (0, getTrustedInput_1.getTrustedInput)(this._transport, indexLookup, transaction, additionals);
206
227
  }
228
+ /**
229
+ * Trusted input is the hash of a UTXO that needs to be signed. BIP143 is used for Segwit inputs.
230
+ */
207
231
  getTrustedInputBIP143(indexLookup, transaction, additionals = []) {
208
232
  return (0, getTrustedInputBIP143_1.getTrustedInputBIP143)(this._transport, indexLookup, transaction, additionals);
209
233
  }
package/lib/Btc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Btc.js","sourceRoot":"","sources":["../src/Btc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Btc.js","sourceRoot":"","sources":["../src/Btc.ts"],"names":[],"mappings":"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"}
package/lib/BtcNew.d.ts CHANGED
@@ -2,8 +2,9 @@ import type { CreateTransactionArg } from "./createTransaction";
2
2
  import type { AddressFormat } from "./getWalletPublicKey";
3
3
  import { AppClient as Client } from "./newops/appClient";
4
4
  /**
5
- * This class implements the same interface as BtcOld (formerly
6
- * named Btc), but interacts with Bitcoin hardware app version 2+
5
+ * @class BtcNew
6
+ * @description This class implements the same interface as BtcOld (formerly
7
+ * named Btc), but interacts with Bitcoin hardware app version 2.1.0+
7
8
  * which uses a totally new APDU protocol. This new
8
9
  * protocol is documented at
9
10
  * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md
@@ -13,6 +14,7 @@ import { AppClient as Client } from "./newops/appClient";
13
14
  * input data into the PSBT process. In the future, a new interface should
14
15
  * be developed that exposes PSBT to the outer world, which would render
15
16
  * a much cleaner implementation.
17
+ *
16
18
  */
17
19
  export default class BtcNew {
18
20
  private client;
@@ -1 +1 @@
1
- {"version":3,"file":"BtcNew.d.ts","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQzD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACb,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,aAAa,CAAC,EAClB,IAAI,EACJ,WAAW,GACZ,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYnB;;;;;;OAMG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GACA,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAuBF;;;;;;;;;;;;;;OAcG;YACW,gBAAgB;IAyB9B;;;;;;;OAOG;IACG,wBAAwB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2G1E;;;;OAIG;IACG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACrF,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IAiBF;;;;;;;OAOG;YACW,cAAc;IAoB5B;;;;OAIG;YACW,QAAQ;IAuCtB;;;;;;;;OAQG;YACW,QAAQ;CA6BvB;AAuED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA8BlD"}
1
+ {"version":3,"file":"BtcNew.d.ts","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACb,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,aAAa,CAAC,EAClB,IAAI,EACJ,WAAW,GACZ,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYnB;;;;;;OAMG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GACA,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAuBF;;;;;;;;;;;;;;OAcG;YACW,gBAAgB;IAyB9B;;;;;;;OAOG;IACG,wBAAwB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2G1E;;;;OAIG;IACG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACrF,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IAiBF;;;;;;;OAOG;YACW,cAAc;IAoB5B;;;;OAIG;YACW,QAAQ;IAuCtB;;;;;;;;OAQG;YACW,QAAQ;CA6BvB;AA4ED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA8BlD"}
package/lib/BtcNew.js CHANGED
@@ -21,8 +21,9 @@ const psbtFinalizer_1 = require("./newops/psbtFinalizer");
21
21
  const psbtv2_1 = require("./newops/psbtv2");
22
22
  const serializeTransaction_1 = require("./serializeTransaction");
23
23
  /**
24
- * This class implements the same interface as BtcOld (formerly
25
- * named Btc), but interacts with Bitcoin hardware app version 2+
24
+ * @class BtcNew
25
+ * @description This class implements the same interface as BtcOld (formerly
26
+ * named Btc), but interacts with Bitcoin hardware app version 2.1.0+
26
27
  * which uses a totally new APDU protocol. This new
27
28
  * protocol is documented at
28
29
  * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/bitcoin.md
@@ -32,6 +33,7 @@ const serializeTransaction_1 = require("./serializeTransaction");
32
33
  * input data into the PSBT process. In the future, a new interface should
33
34
  * be developed that exposes PSBT to the outer world, which would render
34
35
  * a much cleaner implementation.
36
+ *
35
37
  */
36
38
  class BtcNew {
37
39
  constructor(client) {
@@ -347,6 +349,11 @@ class BtcNew {
347
349
  }
348
350
  }
349
351
  exports.default = BtcNew;
352
+ /**
353
+ * This function returns a descriptor template based on the address format.
354
+ * See https://github.com/LedgerHQ/app-bitcoin-new/blob/develop/doc/wallet.md for details of
355
+ * the bitcoin descriptor template.
356
+ */
350
357
  function descrTemplFrom(addressFormat) {
351
358
  if (addressFormat == "legacy")
352
359
  return "pkh(@0)";