mainnet-js 2.7.34 → 3.0.0-next.1

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 (195) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/{mainnet-2.7.34.js → mainnet-3.0.0-next.1.js} +728 -708
  3. package/dist/module/cache/MemoryCache.d.ts +0 -1
  4. package/dist/module/cache/MemoryCache.d.ts.map +1 -1
  5. package/dist/module/cache/MemoryCache.js +5 -7
  6. package/dist/module/cache/MemoryCache.js.map +1 -1
  7. package/dist/module/cache/index.d.ts +1 -0
  8. package/dist/module/cache/index.d.ts.map +1 -1
  9. package/dist/module/cache/index.js +1 -0
  10. package/dist/module/cache/index.js.map +1 -1
  11. package/dist/module/cache/walletCache.d.ts +45 -0
  12. package/dist/module/cache/walletCache.d.ts.map +1 -0
  13. package/dist/module/cache/walletCache.js +140 -0
  14. package/dist/module/cache/walletCache.js.map +1 -0
  15. package/dist/module/chain.d.ts +1 -1
  16. package/dist/module/chain.js +1 -1
  17. package/dist/module/chain.js.map +1 -1
  18. package/dist/module/constant.d.ts +1 -1
  19. package/dist/module/constant.d.ts.map +1 -1
  20. package/dist/module/constant.js +1 -1
  21. package/dist/module/constant.js.map +1 -1
  22. package/dist/module/enum.d.ts +1 -7
  23. package/dist/module/enum.d.ts.map +1 -1
  24. package/dist/module/enum.js +0 -6
  25. package/dist/module/enum.js.map +1 -1
  26. package/dist/module/history/{electrumTransformer.d.ts → getHistory.d.ts} +3 -3
  27. package/dist/module/history/getHistory.d.ts.map +1 -0
  28. package/dist/module/history/{electrumTransformer.js → getHistory.js} +17 -14
  29. package/dist/module/history/getHistory.js.map +1 -0
  30. package/dist/module/index.d.ts +3 -1
  31. package/dist/module/index.d.ts.map +1 -1
  32. package/dist/module/index.js +3 -1
  33. package/dist/module/index.js.map +1 -1
  34. package/dist/module/interface.d.ts +7 -2
  35. package/dist/module/interface.d.ts.map +1 -1
  36. package/dist/module/interface.js.map +1 -1
  37. package/dist/module/message/interface.d.ts +2 -2
  38. package/dist/module/message/interface.d.ts.map +1 -1
  39. package/dist/module/message/interface.js +0 -3
  40. package/dist/module/message/interface.js.map +1 -1
  41. package/dist/module/message/signed.d.ts +5 -5
  42. package/dist/module/message/signed.d.ts.map +1 -1
  43. package/dist/module/message/signed.js +8 -8
  44. package/dist/module/message/signed.js.map +1 -1
  45. package/dist/module/network/ElectrumNetworkProvider.d.ts +2 -2
  46. package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
  47. package/dist/module/network/ElectrumNetworkProvider.js +3 -2
  48. package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
  49. package/dist/module/network/NetworkProvider.d.ts +2 -2
  50. package/dist/module/network/NetworkProvider.d.ts.map +1 -1
  51. package/dist/module/network/constant.js +4 -4
  52. package/dist/module/network/constant.js.map +1 -1
  53. package/dist/module/network/getRelayFeeCache.js +2 -2
  54. package/dist/module/network/getRelayFeeCache.js.map +1 -1
  55. package/dist/module/rate/ExchangeRate.d.ts +2 -1
  56. package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
  57. package/dist/module/rate/ExchangeRate.js +4 -1
  58. package/dist/module/rate/ExchangeRate.js.map +1 -1
  59. package/dist/module/transaction/Wif.d.ts +25 -23
  60. package/dist/module/transaction/Wif.d.ts.map +1 -1
  61. package/dist/module/transaction/Wif.js +26 -25
  62. package/dist/module/transaction/Wif.js.map +1 -1
  63. package/dist/module/transaction/allocateFee.d.ts +3 -3
  64. package/dist/module/transaction/allocateFee.d.ts.map +1 -1
  65. package/dist/module/transaction/allocateFee.js +5 -6
  66. package/dist/module/transaction/allocateFee.js.map +1 -1
  67. package/dist/module/util/amountInSatoshi.d.ts +1 -1
  68. package/dist/module/util/amountInSatoshi.d.ts.map +1 -1
  69. package/dist/module/util/amountInSatoshi.js +3 -9
  70. package/dist/module/util/amountInSatoshi.js.map +1 -1
  71. package/dist/module/util/asSendRequestObject.d.ts.map +1 -1
  72. package/dist/module/util/asSendRequestObject.js +10 -7
  73. package/dist/module/util/asSendRequestObject.js.map +1 -1
  74. package/dist/module/util/checkUtxos.d.ts +2 -2
  75. package/dist/module/util/checkUtxos.d.ts.map +1 -1
  76. package/dist/module/util/checkUtxos.js +11 -12
  77. package/dist/module/util/checkUtxos.js.map +1 -1
  78. package/dist/module/util/convert.d.ts +3 -0
  79. package/dist/module/util/convert.d.ts.map +1 -1
  80. package/dist/module/util/convert.js +12 -0
  81. package/dist/module/util/convert.js.map +1 -1
  82. package/dist/module/util/deriveCashaddr.d.ts.map +1 -1
  83. package/dist/module/util/deriveCashaddr.js +6 -0
  84. package/dist/module/util/deriveCashaddr.js.map +1 -1
  85. package/dist/module/util/deriveNetwork.js +1 -1
  86. package/dist/module/util/deriveNetwork.js.map +1 -1
  87. package/dist/module/util/hd.d.ts +3 -0
  88. package/dist/module/util/hd.d.ts.map +1 -0
  89. package/dist/module/util/hd.js +11 -0
  90. package/dist/module/util/hd.js.map +1 -0
  91. package/dist/module/util/index.d.ts +3 -3
  92. package/dist/module/util/index.d.ts.map +1 -1
  93. package/dist/module/util/index.js +3 -3
  94. package/dist/module/util/index.js.map +1 -1
  95. package/dist/module/util/satoshiToAmount.d.ts +1 -1
  96. package/dist/module/util/satoshiToAmount.d.ts.map +1 -1
  97. package/dist/module/util/satoshiToAmount.js +3 -9
  98. package/dist/module/util/satoshiToAmount.js.map +1 -1
  99. package/dist/module/util/sumSendRequestAmounts.d.ts.map +1 -1
  100. package/dist/module/util/sumSendRequestAmounts.js +3 -4
  101. package/dist/module/util/sumSendRequestAmounts.js.map +1 -1
  102. package/dist/module/util/sumUtxoValue.d.ts +3 -3
  103. package/dist/module/util/sumUtxoValue.d.ts.map +1 -1
  104. package/dist/module/util/sumUtxoValue.js +2 -2
  105. package/dist/module/util/sumUtxoValue.js.map +1 -1
  106. package/dist/module/wallet/Base.d.ts +45 -103
  107. package/dist/module/wallet/Base.d.ts.map +1 -1
  108. package/dist/module/wallet/Base.js +99 -298
  109. package/dist/module/wallet/Base.js.map +1 -1
  110. package/dist/module/wallet/HDWallet.d.ts +164 -0
  111. package/dist/module/wallet/HDWallet.d.ts.map +1 -0
  112. package/dist/module/wallet/HDWallet.js +486 -0
  113. package/dist/module/wallet/HDWallet.js.map +1 -0
  114. package/dist/module/wallet/Util.js +1 -1
  115. package/dist/module/wallet/Util.js.map +1 -1
  116. package/dist/module/wallet/Watch.d.ts +151 -0
  117. package/dist/module/wallet/Watch.d.ts.map +1 -0
  118. package/dist/module/wallet/Watch.js +307 -0
  119. package/dist/module/wallet/Watch.js.map +1 -0
  120. package/dist/module/wallet/Wif.d.ts +23 -29
  121. package/dist/module/wallet/Wif.d.ts.map +1 -1
  122. package/dist/module/wallet/Wif.js +204 -267
  123. package/dist/module/wallet/Wif.js.map +1 -1
  124. package/dist/module/wallet/createWallet.d.ts +7 -1
  125. package/dist/module/wallet/createWallet.d.ts.map +1 -1
  126. package/dist/module/wallet/createWallet.js +26 -17
  127. package/dist/module/wallet/createWallet.js.map +1 -1
  128. package/dist/module/wallet/interface.d.ts +5 -6
  129. package/dist/module/wallet/interface.d.ts.map +1 -1
  130. package/dist/module/wallet/model.d.ts +15 -19
  131. package/dist/module/wallet/model.d.ts.map +1 -1
  132. package/dist/module/wallet/model.js +5 -25
  133. package/dist/module/wallet/model.js.map +1 -1
  134. package/dist/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +1 -1
  136. package/src/cache/MemoryCache.ts +5 -5
  137. package/src/cache/index.ts +1 -0
  138. package/src/cache/walletCache.ts +239 -0
  139. package/src/chain.ts +1 -1
  140. package/src/constant.ts +1 -1
  141. package/src/enum.ts +0 -6
  142. package/src/history/{electrumTransformer.test.ts → getHistory.test.ts} +26 -53
  143. package/src/history/{electrumTransformer.ts → getHistory.ts} +31 -15
  144. package/src/index.ts +3 -1
  145. package/src/interface.ts +8 -2
  146. package/src/message/interface.ts +2 -28
  147. package/src/message/signed.test.ts +36 -48
  148. package/src/message/signed.ts +9 -12
  149. package/src/network/Connection.test.ts +3 -3
  150. package/src/network/ElectrumNetworkProvider.ts +5 -5
  151. package/src/network/NetworkProvider.ts +2 -2
  152. package/src/network/Rpc.test.ts +3 -4
  153. package/src/network/constant.ts +4 -4
  154. package/src/network/getRelayFeeCache.ts +2 -2
  155. package/src/rate/ExchangeRate.test.ts +2 -44
  156. package/src/rate/ExchangeRate.ts +5 -2
  157. package/src/transaction/Wif.ts +59 -52
  158. package/src/transaction/allocateFee.test.ts +110 -131
  159. package/src/transaction/allocateFee.ts +14 -15
  160. package/src/util/amountInSatoshi.test.ts +1 -9
  161. package/src/util/amountInSatoshi.ts +6 -10
  162. package/src/util/asSendRequestObject.ts +12 -7
  163. package/src/util/checkUtxos.ts +21 -26
  164. package/src/util/convert.ts +18 -0
  165. package/src/util/deriveCashaddr.ts +8 -0
  166. package/src/util/deriveNetwork.ts +1 -1
  167. package/src/util/derivePublicKeyHash.test.ts +0 -13
  168. package/src/util/hd.ts +16 -0
  169. package/src/util/index.ts +3 -7
  170. package/src/util/satoshiToAmount.test.ts +1 -1
  171. package/src/util/satoshiToAmount.ts +4 -10
  172. package/src/util/sumSendRequestAmounts.ts +3 -4
  173. package/src/util/sumUtxoValue.ts +7 -7
  174. package/src/wallet/Base.ts +147 -420
  175. package/src/wallet/Cashtokens.test.headless.js +11 -11
  176. package/src/wallet/Cashtokens.test.ts +36 -37
  177. package/src/wallet/HDWallet.test.ts +515 -0
  178. package/src/wallet/HDWallet.ts +764 -0
  179. package/src/wallet/Util.ts +1 -1
  180. package/src/wallet/Watch.ts +447 -0
  181. package/src/wallet/Wif.bip39.test.ts +1 -1
  182. package/src/wallet/Wif.test.ts +108 -133
  183. package/src/wallet/Wif.ts +258 -283
  184. package/src/wallet/createWallet.ts +28 -18
  185. package/src/wallet/interface.ts +5 -6
  186. package/src/wallet/model.test.ts +4 -7
  187. package/src/wallet/model.ts +19 -51
  188. package/dist/module/history/electrumTransformer.d.ts.map +0 -1
  189. package/dist/module/history/electrumTransformer.js.map +0 -1
  190. package/dist/module/util/balanceObjectFromSatoshi.d.ts +0 -8
  191. package/dist/module/util/balanceObjectFromSatoshi.d.ts.map +0 -1
  192. package/dist/module/util/balanceObjectFromSatoshi.js +0 -35
  193. package/dist/module/util/balanceObjectFromSatoshi.js.map +0 -1
  194. package/src/util/balanceObjectFromSatoshi.test.ts +0 -58
  195. package/src/util/balanceObjectFromSatoshi.ts +0 -52
@@ -0,0 +1,486 @@
1
+ import { assertSuccess, binToHex, CashAddressNetworkPrefix, decodeHdPrivateKey, decodeHdPublicKey, deriveHdPath, deriveHdPrivateNodeFromSeed, deriveHdPublicNode, deriveSeedFromBip39Mnemonic, encodeHdPrivateKey, encodeHdPublicKey, generateBip39Mnemonic, sha256, utf8ToBin, } from "@bitauth/libauth";
2
+ import { WalletCache } from "../cache/index.js";
3
+ import { Config } from "../config.js";
4
+ import { NetworkType, prefixFromNetworkMap } from "../enum.js";
5
+ import { getHistory } from "../history/getHistory.js";
6
+ import { checkForEmptySeed } from "../util/checkForEmptySeed.js";
7
+ import { BaseWallet } from "./Base.js";
8
+ import { WalletTypeEnum } from "./enum.js";
9
+ import { arrayRange, getNextUnusedIndex } from "../util/hd.js";
10
+ export const GAP_SIZE = 20;
11
+ export class HDWallet extends BaseWallet {
12
+ static { this.networkPrefix = CashAddressNetworkPrefix.mainnet; }
13
+ get networkPrefix() {
14
+ return prefixFromNetworkMap[this.network];
15
+ }
16
+ /// Create an uninitialized HDWallet, this method should not be called directly
17
+ /// Instead static methods such as `newRandom` or `fromSeed` should be used
18
+ constructor(network = NetworkType.Mainnet) {
19
+ super(network);
20
+ this.derivation = Config.DefaultParentDerivationPath;
21
+ // max index used for deposit address derivation
22
+ this.depositIndex = 0;
23
+ // max index used for change address derivation
24
+ this.changeIndex = 0;
25
+ this.depositStatusCallbacks = [];
26
+ this.changeStatusCallbacks = [];
27
+ this.depositWatchCancels = [];
28
+ this.changeWatchCancels = [];
29
+ this.depositStatuses = [];
30
+ this.changeStatuses = [];
31
+ this.depositUtxos = [];
32
+ this.changeUtxos = [];
33
+ this.watchPromise = undefined;
34
+ // @ts-ignore
35
+ this.walletType = WalletTypeEnum.Hd;
36
+ }
37
+ /// Initialize the wallet given the options mnemonic, xPriv or xPub
38
+ /// If none provided, a new random mnemonic will be generated
39
+ /// If mnemonic or xPriv provided, the wallet will be able to sign transactions
40
+ /// If xPub provided, the wallet will be watch-only
41
+ /// This internal method is called by the various static constructors
42
+ async initialize({ name = "", depositIndex = 0, changeIndex = 0, mnemonic = undefined, derivation = undefined, xPriv = undefined, xPub = undefined, } = {}) {
43
+ // newRandom
44
+ if (!xPriv && !xPub && !mnemonic) {
45
+ mnemonic = generateBip39Mnemonic();
46
+ }
47
+ this.depositIndex = depositIndex;
48
+ this.changeIndex = changeIndex;
49
+ // @ts-ignore
50
+ this.xPub = xPub ? xPub : "";
51
+ if (mnemonic?.length) {
52
+ // @ts-ignore
53
+ this.derivation = derivation
54
+ ? derivation
55
+ : Config.DefaultParentDerivationPath;
56
+ // @ts-ignore
57
+ this.mnemonic = mnemonic ? mnemonic : generateBip39Mnemonic();
58
+ if (this.mnemonic.length == 0) {
59
+ throw Error("refusing to create wallet from empty mnemonic");
60
+ }
61
+ const seed = deriveSeedFromBip39Mnemonic(this.mnemonic);
62
+ checkForEmptySeed(seed);
63
+ const rootNode = deriveHdPrivateNodeFromSeed(seed, {
64
+ assumeValidity: true,
65
+ throwErrors: true,
66
+ });
67
+ const node = deriveHdPath(rootNode, this.derivation);
68
+ // @ts-ignore
69
+ this.xPriv = assertSuccess(encodeHdPrivateKey({
70
+ ...node,
71
+ network: this.network === NetworkType.Mainnet ? "mainnet" : "testnet",
72
+ node: node,
73
+ })).hdPrivateKey;
74
+ // @ts-ignore
75
+ this.xPrivNode = node;
76
+ // @ts-ignore
77
+ this.xPubNode = deriveHdPublicNode(node);
78
+ // @ts-ignore
79
+ this.xPub = assertSuccess(encodeHdPublicKey({
80
+ node: this.xPubNode,
81
+ network: this.network === NetworkType.Mainnet ? "mainnet" : "testnet",
82
+ })).hdPublicKey;
83
+ }
84
+ else if (xPriv) {
85
+ // @ts-ignore
86
+ this.xPriv = xPriv;
87
+ const decoded = assertSuccess(decodeHdPrivateKey(xPriv));
88
+ if (decoded.network !==
89
+ (this.network === NetworkType.Mainnet ? "mainnet" : "testnet")) {
90
+ throw new Error(`xPriv network (${decoded.network}) does not match wallet network (${this.network === NetworkType.Mainnet ? "mainnet" : "testnet"})`);
91
+ }
92
+ // @ts-ignore
93
+ this.xPrivNode = decoded.node;
94
+ // @ts-ignore
95
+ this.xPubNode = deriveHdPublicNode(decoded.node);
96
+ // @ts-ignore
97
+ this.xPub = assertSuccess(encodeHdPublicKey({
98
+ node: this.xPubNode,
99
+ network: this.network === NetworkType.Mainnet ? "mainnet" : "testnet",
100
+ })).hdPublicKey;
101
+ }
102
+ else if (xPub) {
103
+ const decoded = assertSuccess(decodeHdPublicKey(xPub));
104
+ if (decoded.network !==
105
+ (this.network === NetworkType.Mainnet ? "mainnet" : "testnet")) {
106
+ throw new Error(`xPriv network (${decoded.network}) does not match wallet network (${this.network === NetworkType.Mainnet ? "mainnet" : "testnet"})`);
107
+ }
108
+ // @ts-ignore
109
+ this.xPubNode = decoded.node;
110
+ // @ts-ignore
111
+ this.xPub = xPub;
112
+ }
113
+ else {
114
+ throw new Error("mnemonic, xPriv or xPub must be provided to create an HDWallet");
115
+ }
116
+ this.name = name;
117
+ // @ts-ignore
118
+ this.walletId = binToHex(sha256.hash(utf8ToBin(`${(this.mnemonic ? this.mnemonic + this.derivation : undefined) ??
119
+ this.xPriv ??
120
+ this.xPub}-${this.network}`)));
121
+ // @ts-ignore
122
+ this.walletCache = new WalletCache(this.walletId, this.xPrivNode ?? this.xPubNode, this.networkPrefix);
123
+ // init wallet cache
124
+ await this.walletCache.init();
125
+ // start watching addresses asynchronously
126
+ this.makeWatchPromise().catch(() => { });
127
+ return this;
128
+ }
129
+ /// Stops the wallet from watching for address changes
130
+ /// After calling this method, the wallet will no longer update and is considered defunct
131
+ async stop() {
132
+ await Promise.all([...this.depositWatchCancels, ...this.changeWatchCancels].map((cancelFn) => cancelFn?.()));
133
+ }
134
+ /// Scan more addresses for activity beyond the current gap limit, extending the watched range as needed
135
+ async scanMoreAddresses(amount = GAP_SIZE) {
136
+ await this.watchPromise;
137
+ await this.makeWatchPromise(amount);
138
+ await this.watchPromise;
139
+ }
140
+ /// Internal method to start watching addresses for activity, extending the watched range as needed
141
+ async makeWatchPromise(gapSize = GAP_SIZE) {
142
+ await this.watchPromise;
143
+ this.watchPromise = Promise.all([
144
+ (async () => {
145
+ const depositIndex = this.depositIndex;
146
+ const depositStartIndex = (this.depositStatuses
147
+ .filter((s) => s)
148
+ .map((_, i) => i)
149
+ .at(-1) ?? -1) + 1;
150
+ const depositStopIndex = Math.max(this.depositIndex, depositStartIndex + gapSize);
151
+ const depositAddresses = arrayRange(depositStartIndex, depositStopIndex).map((i) => this.walletCache.getByIndex(i, false).address);
152
+ await Promise.all(depositAddresses.map(async (addr, index) => new Promise(async (resolve) => {
153
+ index = depositStartIndex + index;
154
+ if (this.depositStatuses[index] !== undefined) {
155
+ resolve();
156
+ }
157
+ const { status: prevStatus, utxos: prevUtxos } = this.walletCache.getByIndex(index, false);
158
+ this.depositStatuses[index] = prevStatus;
159
+ this.depositUtxos[index] = prevUtxos;
160
+ const callback = async (args) => {
161
+ const [address, status] = args;
162
+ if (address != addr) {
163
+ return;
164
+ }
165
+ if (status === null) {
166
+ this.depositUtxos[index] = [];
167
+ }
168
+ if (status !== null &&
169
+ status !== this.depositStatuses[index]) {
170
+ const utxos = (await this.provider.getUtxos(addr)).map((utxo) => {
171
+ utxo.address = addr;
172
+ return utxo;
173
+ });
174
+ this.depositUtxos[index] = utxos;
175
+ this.walletCache.setStatusAndUtxos(addr, status, utxos);
176
+ const newDepositIndex = Math.max(depositIndex, index + 1);
177
+ if (newDepositIndex > depositIndex) {
178
+ this.depositIndex = Math.max(newDepositIndex, this.depositIndex);
179
+ this.makeWatchPromise();
180
+ }
181
+ }
182
+ this.depositStatuses[index] = status;
183
+ resolve();
184
+ };
185
+ this.depositWatchCancels[index] =
186
+ await this.provider.subscribeToAddress(addr, callback);
187
+ })));
188
+ return depositAddresses.length;
189
+ })(),
190
+ (async () => {
191
+ const changeIndex = this.changeIndex;
192
+ const changeStartIndex = (this.changeStatuses
193
+ .filter((s) => s)
194
+ .map((_, i) => i)
195
+ .at(-1) ?? -1) + 1;
196
+ const changeStopIndex = Math.max(this.changeIndex, changeStartIndex + gapSize);
197
+ const changeAddresses = arrayRange(changeStartIndex, changeStopIndex).map((i) => this.walletCache.getByIndex(i, true).address);
198
+ await Promise.all(changeAddresses.map(async (addr, index) => new Promise(async (resolve) => {
199
+ index = changeStartIndex + index;
200
+ if (this.changeStatuses[index] !== undefined) {
201
+ resolve();
202
+ }
203
+ const { status: prevStatus, utxos: prevUtxos } = this.walletCache.getByIndex(index, false);
204
+ this.changeStatuses[index] = prevStatus;
205
+ this.changeUtxos[index] = prevUtxos;
206
+ const callback = async (args) => {
207
+ const [address, status] = args;
208
+ if (address != addr) {
209
+ return;
210
+ }
211
+ if (status === null) {
212
+ this.changeUtxos[index] = [];
213
+ }
214
+ if (status !== null &&
215
+ status !== this.changeStatuses[index]) {
216
+ const utxos = (await this.provider.getUtxos(addr)).map((utxo) => {
217
+ utxo.address = addr;
218
+ return utxo;
219
+ });
220
+ this.changeUtxos[index] = utxos;
221
+ this.walletCache.setStatusAndUtxos(addr, status, utxos);
222
+ const newChangeIndex = Math.max(changeIndex, index + 1);
223
+ if (newChangeIndex > changeIndex) {
224
+ this.changeIndex = Math.max(newChangeIndex, this.changeIndex);
225
+ this.makeWatchPromise();
226
+ }
227
+ }
228
+ this.changeStatuses[index] = status;
229
+ resolve();
230
+ };
231
+ this.changeWatchCancels[index] =
232
+ await this.provider.subscribeToAddress(addr, callback);
233
+ })));
234
+ return changeAddresses.length;
235
+ })(),
236
+ ]);
237
+ }
238
+ // Return wallet info
239
+ getInfo() {
240
+ return {
241
+ isTestnet: this.isTestnet,
242
+ name: this.name,
243
+ network: this.network,
244
+ seed: this.mnemonic,
245
+ walletId: this.toString(),
246
+ walletDbEntry: this.toDbString(),
247
+ };
248
+ }
249
+ /**
250
+ * utxos Get unspent outputs for the wallet
251
+ *
252
+ */
253
+ async getUtxos() {
254
+ await this.watchPromise;
255
+ return [...this.depositUtxos, ...this.changeUtxos].flat();
256
+ }
257
+ /// Get next unused deposit address, or the address at the specified index
258
+ getDepositAddress(index = -1) {
259
+ index = getNextUnusedIndex(index, this.depositStatuses);
260
+ return this.walletCache.getByIndex(index, false).address;
261
+ }
262
+ /// Get next unused token deposit address, or the token address at the specified index
263
+ getTokenDepositAddress(index = -1) {
264
+ index = getNextUnusedIndex(index, this.depositStatuses);
265
+ return this.walletCache.getByIndex(index, false).tokenAddress;
266
+ }
267
+ /// Get next unused change address, or the address at the specified index
268
+ getChangeAddress(index = -1) {
269
+ index = getNextUnusedIndex(index, this.changeStatuses);
270
+ return this.walletCache.getByIndex(index, true).address;
271
+ }
272
+ /// Get next unused token change address, or the token address at the specified index
273
+ getChangeTokenAddress(index = -1) {
274
+ index = getNextUnusedIndex(index, this.changeStatuses);
275
+ return this.walletCache.getByIndex(index, true).tokenAddress;
276
+ }
277
+ /**
278
+ * fromSeed - create a wallet using the seed phrase and derivation path
279
+ *
280
+ * unless specified the derivation path m/44'/0'/0'/0/0 will be used
281
+ *
282
+ * @param seed BIP39 12 word seed phrase
283
+ * @param derivationPath BIP44 HD wallet derivation path to get a single the private key from hierarchy
284
+ *
285
+ * @returns instantiated wallet
286
+ */
287
+ static async fromSeed(seed, derivationPath, depositIndex, changeIndex) {
288
+ return new this().initialize({
289
+ mnemonic: seed,
290
+ derivation: derivationPath,
291
+ depositIndex: depositIndex,
292
+ changeIndex: changeIndex,
293
+ });
294
+ }
295
+ /**
296
+ * newRandom - create a random wallet
297
+ *
298
+ * if `name` parameter is specified, the wallet will also be persisted to DB
299
+ *
300
+ * @param name user friendly wallet alias
301
+ * @param dbName name under which the wallet will be stored in the database
302
+ *
303
+ * @returns instantiated wallet
304
+ */
305
+ static async newRandom(name = "", dbName) {
306
+ dbName = dbName ? dbName : this.networkPrefix;
307
+ if (name.length > 0) {
308
+ return this.named(name, dbName);
309
+ }
310
+ return new this().initialize();
311
+ }
312
+ /**
313
+ * fromXPub - create a watch-only wallet using the HD Wallet Public key
314
+ *
315
+ * @param xPub HD Wallet Public Key
316
+ *
317
+ * @returns instantiated wallet
318
+ */
319
+ static async fromXPub(xPub) {
320
+ return new this().initialize({
321
+ xPub: xPub,
322
+ });
323
+ }
324
+ /**
325
+ * fromXPriv - create a wallet using the HD Wallet Private key
326
+ *
327
+ * @param xPub HD Wallet Private Key
328
+ *
329
+ * @returns instantiated wallet
330
+ */
331
+ static async fromXPriv(xPriv) {
332
+ return new this().initialize({
333
+ xPriv: xPriv,
334
+ });
335
+ }
336
+ /**
337
+ * fromId - create a wallet from encoded walletId string
338
+ *
339
+ * @param walletId walletId options to steer the creation process
340
+ *
341
+ * @returns wallet instantiated accordingly to the walletId rules
342
+ */
343
+ static async fromId(walletId) {
344
+ return new this().fromId(walletId);
345
+ }
346
+ /// override the base class fromId method implementation
347
+ async fromId(walletId) {
348
+ const [walletType, networkGiven, arg1, arg2, arg3, arg4] = walletId.split(":");
349
+ if (this.network != networkGiven) {
350
+ throw Error(`Network prefix ${networkGiven} to a ${this.network} wallet`);
351
+ }
352
+ if (walletType === WalletTypeEnum.Named) {
353
+ if (arg2) {
354
+ // named:testnet:wallet_1:my_database
355
+ return this.named(arg1, arg2);
356
+ }
357
+ else {
358
+ // named:testnet:wallet_1
359
+ return this.named(arg1);
360
+ }
361
+ }
362
+ if (walletType !== WalletTypeEnum.Hd) {
363
+ throw Error(`fromId called on a ${walletType} wallet, expected a ${WalletTypeEnum.Hd} wallet`);
364
+ }
365
+ if (arg1.startsWith("priv", 1)) {
366
+ return this.initialize({
367
+ xPriv: arg1,
368
+ depositIndex: parseInt(arg2) || 0,
369
+ changeIndex: parseInt(arg3) || 0,
370
+ });
371
+ }
372
+ if (arg1.startsWith("pub", 1)) {
373
+ return this.initialize({
374
+ xPub: arg1,
375
+ depositIndex: parseInt(arg2) || 0,
376
+ changeIndex: parseInt(arg3) || 0,
377
+ });
378
+ }
379
+ return this.initialize({
380
+ mnemonic: arg1,
381
+ derivation: arg2,
382
+ depositIndex: parseInt(arg3) || 0,
383
+ changeIndex: parseInt(arg4) || 0,
384
+ });
385
+ }
386
+ /**
387
+ * encodeTransaction Encode and sign a transaction given a list of sendRequests, options and estimate fees.
388
+ * @param {SendRequest[]} sendRequests SendRequests
389
+ * @param {boolean} discardChange=false
390
+ * @param {SendRequestOptionsI} options Options of the send requests
391
+ */
392
+ async encodeTransaction(requests, discardChange = false, options, privateKey) {
393
+ if (!this.xPriv && !privateKey && options?.buildUnsigned !== true) {
394
+ throw new Error(`Missing private key`);
395
+ }
396
+ return super.encodeTransaction(requests, discardChange, options, privateKey);
397
+ }
398
+ //#region Serialization
399
+ // Returns the serialized wallet as a string
400
+ // If storing in a database, set asNamed to false to store secrets
401
+ // In all other cases, the a named wallet is deserialized from the database
402
+ // by the name key
403
+ toString() {
404
+ if (this.name) {
405
+ return `named:${this.network}:${this.name}`;
406
+ }
407
+ return this.toDbString();
408
+ }
409
+ /**
410
+ * toDbString - store the serialized version of the wallet in the database, not just the name
411
+ *
412
+ * @throws {Error} if called on BaseWallet
413
+ */
414
+ toDbString() {
415
+ if (this.walletType == WalletTypeEnum.Hd) {
416
+ if (this.mnemonic?.length > 0) {
417
+ return `${this.walletType}:${this.network}:${this.mnemonic}:${this.derivation}:${this.depositIndex}:${this.changeIndex}`;
418
+ }
419
+ if (this.xPriv?.length > 0) {
420
+ return `${this.walletType}:${this.network}:${this.xPriv}:${this.depositIndex}:${this.changeIndex}`;
421
+ }
422
+ if (this.xPub?.length > 0) {
423
+ return `${this.walletType}:${this.network}:${this.xPub}:${this.depositIndex}:${this.changeIndex}`;
424
+ }
425
+ throw Error("HDWallet has no mnemonic, xPriv or xPub to serialize");
426
+ }
427
+ throw Error("toDbString unsupported wallet type");
428
+ }
429
+ //#endregion Serialization
430
+ /**
431
+ * getHistory gets transaction history of this wallet with most data decoded and ready to present to user
432
+ * @note balance calculations are valid only if querying to the blockchain tip (`toHeight` === -1, `count` === -1)
433
+ * @note this method is heavy on network calls, if invoked in browser use of cache is advised, @see `Config.UseLocalStorageCache`
434
+ * @note this method tries to recreate the history tab view of Electron Cash wallet, however, it may not be 100% accurate if the tnransaction value changes are the same in the same block (ordering)
435
+ *
436
+ * @param unit optional, BCH or currency unit to present balance and balance changes. If unit is currency like USD or EUR, balances will be subject to possible rounding errors. Default 0
437
+ * @param fromHeight optional, if set, history will be limited. Default 0
438
+ * @param toHeight optional, if set, history will be limited. Default -1, meaning that all history items will be returned, including mempool
439
+ * @param start optional, if set, the result set will be paginated with offset `start`
440
+ * @param count optional, if set, the result set will be paginated with `count`. Default -1, meaning that all history items will be returned
441
+ *
442
+ * @returns an array of transaction history items, with input values and addresses encoded in cashaddress format. @see `TransactionHistoryItem` type
443
+ */
444
+ async getHistory({ unit = "sat", fromHeight = 0, toHeight = -1, start = 0, count = -1, }) {
445
+ const addresses = [
446
+ ...this.depositStatuses
447
+ .map((status, i) => status !== null && i < this.depositIndex
448
+ ? this.walletCache.getByIndex(i, false).address
449
+ : undefined)
450
+ .filter((address) => address !== undefined),
451
+ ...this.changeStatuses
452
+ .map((status, i) => status !== null && i < this.depositIndex
453
+ ? this.walletCache.getByIndex(i, true).address
454
+ : undefined)
455
+ .filter((address) => address !== undefined),
456
+ ];
457
+ return getHistory({
458
+ addresses: addresses,
459
+ provider: this.provider,
460
+ unit,
461
+ fromHeight,
462
+ toHeight,
463
+ start,
464
+ count,
465
+ });
466
+ }
467
+ }
468
+ /**
469
+ * Class to manage a testnet wallet.
470
+ */
471
+ export class TestNetHDWallet extends HDWallet {
472
+ static { this.networkPrefix = CashAddressNetworkPrefix.testnet; }
473
+ constructor() {
474
+ super(NetworkType.Testnet);
475
+ }
476
+ }
477
+ /**
478
+ * Class to manage a regtest wallet.
479
+ */
480
+ export class RegTestHDWallet extends HDWallet {
481
+ static { this.networkPrefix = CashAddressNetworkPrefix.regtest; }
482
+ constructor() {
483
+ super(NetworkType.Regtest);
484
+ }
485
+ }
486
+ //# sourceMappingURL=HDWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HDWallet.js","sourceRoot":"","sources":["../../../src/wallet/HDWallet.ts"],"names":[],"mappings":"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"}
@@ -89,7 +89,7 @@ export class Util {
89
89
  ],
90
90
  hex: binToHex(output.lockingBytecode),
91
91
  },
92
- value: Number(output.valueSatoshis) / bchParam.subUnits,
92
+ value: Number(output.valueSatoshis) / Number(bchParam.subUnits),
93
93
  };
94
94
  });
95
95
  result.locktime = transaction.locktime;
@@ -1 +1 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../../src/wallet/Util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../../src/wallet/Util.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,QAAQ,EACR,iBAAiB,IAAI,wBAAwB,EAC7C,QAAQ,EACR,gBAAgB,EAChB,gCAAgC,EAChC,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAS3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAO,IAAI;IAIf;;;;OAIG;IACH,YAAY,OAAO,GAAG,WAAW,CAAC,OAAO;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,iBAAyB;QACvD,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,iBAAyB;QAEzB,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,oBAA4B,EAC5B,kBAA2B,KAAK;QAEhC,IAAI,cAAsB,CAAC;QAC3B,IAAI,cAA0B,CAAC;QAC/B,IAAI,MAAc,CAAC;QAEnB,kBAAkB;QAClB,IAAI,oBAAoB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;YAC7D,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAChD,cAAc,GAAG,oBAAoB,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,MAAM,GAAG,oBAAoB,CAAC;YAC9B,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/D,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAClD,MAAM,EACN,MAAM,EACN,cAAc,CACf,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,gCAAgC;YAChC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC1D,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkC,CAAC;YACjE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAEjE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChC,MAAM,MAAM,GAAG,cAAc;qBAC1B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE;qBAChB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAE,CAAC;gBAC7C,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjD,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,2BAA2B,CAChC,WAA+B,EAC/B,MAAc,EACd,KAAa;QAEb,IAAI,MAAM,GAA2B,EAAS,CAAC;QAE/C,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAA6B,EAAE;YACvE,OAAO;gBACL,SAAS,EAAE;oBACT,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;iBACD;gBACvC,QAAQ,EAAE,KAAK,CAAC,cAAc;gBAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,aAAa;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CACnC,CAAC,MAAM,EAAE,KAAK,EAA8B,EAAE;YAC5C,OAAO;gBACL,CAAC,EAAE,KAAK;gBACR,YAAY,EAAE;oBACZ,SAAS,EAAE;wBACT,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC;4BACtC,CAAC,CAAC,2BAA2B,CAAC;gCAC1B,SAAS,EAAE,gCAAgC,CACzC,MAAM,CAAC,eAAe,CACvB,CAAC,OAAO;gCACT,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;6BAC3C,CAAC;4BACJ,CAAC,CAAC,aAAa,CACX,4BAA4B,CAAC;gCAC3B,QAAQ,EAAE,MAAM,CAAC,eAAe;gCAChC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;6BAC3C,CAAC,CACH,CAAC,OAAO;qBACd;oBACD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;iBACI;gBAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAChE,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QACvC,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,oBAA4B,EAC5B,kBAA2B,KAAK,EAChC,OAAqB;QAErB,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CACxC,oBAAoB,EACpB,eAAe,CAChB,CAAC;IACJ,CAAC;CACF"}