@yaswap/yacoin 2.0.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 (50) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/lib/chain/YacoinBaseChainProvider.d.ts +12 -0
  3. package/dist/lib/chain/YacoinBaseChainProvider.js +7 -0
  4. package/dist/lib/chain/YacoinBaseChainProvider.js.map +1 -0
  5. package/dist/lib/chain/esplora/YacoinEsploraApiProvider.d.ts +19 -0
  6. package/dist/lib/chain/esplora/YacoinEsploraApiProvider.js +135 -0
  7. package/dist/lib/chain/esplora/YacoinEsploraApiProvider.js.map +1 -0
  8. package/dist/lib/chain/esplora/YacoinEsploraBaseProvider.d.ts +20 -0
  9. package/dist/lib/chain/esplora/YacoinEsploraBaseProvider.js +138 -0
  10. package/dist/lib/chain/esplora/YacoinEsploraBaseProvider.js.map +1 -0
  11. package/dist/lib/chain/esplora/YacoinEsploraBatchBaseProvider.d.ts +12 -0
  12. package/dist/lib/chain/esplora/YacoinEsploraBatchBaseProvider.js +48 -0
  13. package/dist/lib/chain/esplora/YacoinEsploraBatchBaseProvider.js.map +1 -0
  14. package/dist/lib/chain/esplora/types.d.ts +80 -0
  15. package/dist/lib/chain/esplora/types.js +3 -0
  16. package/dist/lib/chain/esplora/types.js.map +1 -0
  17. package/dist/lib/fee/YacoinFeeApiProvider.d.ts +6 -0
  18. package/dist/lib/fee/YacoinFeeApiProvider.js +45 -0
  19. package/dist/lib/fee/YacoinFeeApiProvider.js.map +1 -0
  20. package/dist/lib/index.d.ts +12 -0
  21. package/dist/lib/index.js +49 -0
  22. package/dist/lib/index.js.map +1 -0
  23. package/dist/lib/networks.d.ts +7 -0
  24. package/dist/lib/networks.js +14 -0
  25. package/dist/lib/networks.js.map +1 -0
  26. package/dist/lib/swap/YacoinSwapBaseProvider.d.ts +48 -0
  27. package/dist/lib/swap/YacoinSwapBaseProvider.js +320 -0
  28. package/dist/lib/swap/YacoinSwapBaseProvider.js.map +1 -0
  29. package/dist/lib/swap/YacoinSwapEsploraProvider.d.ts +11 -0
  30. package/dist/lib/swap/YacoinSwapEsploraProvider.js +56 -0
  31. package/dist/lib/swap/YacoinSwapEsploraProvider.js.map +1 -0
  32. package/dist/lib/swap/types.d.ts +12 -0
  33. package/dist/lib/swap/types.js +4 -0
  34. package/dist/lib/swap/types.js.map +1 -0
  35. package/dist/lib/types.d.ts +84 -0
  36. package/dist/lib/types.js +40 -0
  37. package/dist/lib/types.js.map +1 -0
  38. package/dist/lib/utils.d.ts +30 -0
  39. package/dist/lib/utils.js +216 -0
  40. package/dist/lib/utils.js.map +1 -0
  41. package/dist/lib/wallet/IYacoinWallet.d.ts +11 -0
  42. package/dist/lib/wallet/IYacoinWallet.js +3 -0
  43. package/dist/lib/wallet/IYacoinWallet.js.map +1 -0
  44. package/dist/lib/wallet/YacoinBaseWallet.d.ts +68 -0
  45. package/dist/lib/wallet/YacoinBaseWallet.js +426 -0
  46. package/dist/lib/wallet/YacoinBaseWallet.js.map +1 -0
  47. package/dist/lib/wallet/YacoinHDWallet.d.ts +43 -0
  48. package/dist/lib/wallet/YacoinHDWallet.js +250 -0
  49. package/dist/lib/wallet/YacoinHDWallet.js.map +1 -0
  50. package/package.json +36 -0
@@ -0,0 +1,426 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.YacoinBaseWalletProvider = exports.AddressSearchType = void 0;
16
+ const client_1 = require("@yaswap/client");
17
+ const errors_1 = require("@yaswap/errors");
18
+ const types_1 = require("@yaswap/types");
19
+ const utils_1 = require("@yaswap/utils");
20
+ const yacoinjs_lib_1 = require("@yaswap/yacoinjs-lib");
21
+ const memoizee_1 = __importDefault(require("memoizee"));
22
+ const types_2 = require("../types");
23
+ const utils_2 = require("../utils");
24
+ const ADDRESS_GAP = 10;
25
+ const NUMBER_ADDRESS_PER_CALL = ADDRESS_GAP;
26
+ const NUMBER_ADDRESS_LIMIT = 200;
27
+ var AddressSearchType;
28
+ (function (AddressSearchType) {
29
+ AddressSearchType[AddressSearchType["EXTERNAL"] = 0] = "EXTERNAL";
30
+ AddressSearchType[AddressSearchType["CHANGE"] = 1] = "CHANGE";
31
+ AddressSearchType[AddressSearchType["EXTERNAL_OR_CHANGE"] = 2] = "EXTERNAL_OR_CHANGE";
32
+ })(AddressSearchType = exports.AddressSearchType || (exports.AddressSearchType = {}));
33
+ class YacoinBaseWalletProvider extends client_1.Wallet {
34
+ constructor(options, chainProvider) {
35
+ const { baseDerivationPath, addressType = types_2.AddressType.LEGACY } = options;
36
+ const addressTypes = Object.values(types_2.AddressType);
37
+ if (!addressTypes.includes(addressType)) {
38
+ throw new Error(`addressType must be one of ${addressTypes.join(',')}`);
39
+ }
40
+ super(chainProvider);
41
+ this._baseDerivationPath = baseDerivationPath;
42
+ this._network = chainProvider ? chainProvider.getNetwork() : options.network;
43
+ this._addressType = addressType;
44
+ this._derivationCache = {};
45
+ }
46
+ onChainProviderUpdate(chainProvider) {
47
+ this._network = chainProvider.getNetwork();
48
+ }
49
+ getDerivationCache() {
50
+ return this._derivationCache;
51
+ }
52
+ getUnusedAddress(change = false, numAddressPerCall = NUMBER_ADDRESS_PER_CALL) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ const addressType = change ? AddressSearchType.CHANGE : AddressSearchType.EXTERNAL;
55
+ const key = change ? 'change' : 'external';
56
+ return this._getUsedUnusedAddresses(numAddressPerCall, addressType).then(({ unusedAddress }) => unusedAddress[key]);
57
+ });
58
+ }
59
+ getUsedAddresses(numAddressPerCall = NUMBER_ADDRESS_PER_CALL) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ return this._getUsedUnusedAddresses(numAddressPerCall, AddressSearchType.EXTERNAL_OR_CHANGE).then(({ usedAddresses }) => usedAddresses);
62
+ });
63
+ }
64
+ getAddresses(startingIndex = 0, numAddresses = 1, change = false) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ if (numAddresses < 1) {
67
+ throw new Error('You must return at least one address');
68
+ }
69
+ const addresses = [];
70
+ const lastIndex = startingIndex + numAddresses;
71
+ const changeVal = change ? '1' : '0';
72
+ for (let currentIndex = startingIndex; currentIndex < lastIndex; currentIndex++) {
73
+ const subPath = changeVal + '/' + currentIndex;
74
+ const path = this._baseDerivationPath + '/' + subPath;
75
+ const addressObject = yield this.getDerivationPathAddress(path);
76
+ addresses.push(addressObject);
77
+ yield (0, utils_1.asyncSetImmediate)();
78
+ }
79
+ return addresses;
80
+ });
81
+ }
82
+ sendTransaction(options) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ return this._sendTransaction(this.sendOptionsToOutputs([options]), options.fee);
85
+ });
86
+ }
87
+ sendBatchTransaction(transactions) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return [yield this._sendTransaction(this.sendOptionsToOutputs(transactions))];
90
+ });
91
+ }
92
+ sendSweepTransaction(externalChangeAddress, _asset, feePerByte) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ const { hex, fee } = yield this.buildSweepTransaction(externalChangeAddress.toString(), feePerByte);
95
+ yield this.chainProvider.sendRawTransaction(`data=${hex}`);
96
+ return (0, utils_2.normalizeTransactionObject)((0, utils_2.decodeRawTransaction)(hex, this._network), fee);
97
+ });
98
+ }
99
+ updateTransactionFee(tx, newFeePerByte) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ const txHash = typeof tx === 'string' ? tx : tx.hash;
102
+ const transaction = (yield this.chainProvider.getTransactionByHash(txHash))._raw;
103
+ const fixedInputs = [transaction.vin[0]]; // TODO: should this pick more than 1 input? RBF doesn't mandate it
104
+ const lookupAddresses = transaction.vout.map((vout) => vout.scriptPubKey.addresses[0]);
105
+ const changeAddress = yield this.findAddress(lookupAddresses, true);
106
+ const changeOutput = transaction.vout.find((vout) => vout.scriptPubKey.addresses[0] === changeAddress.address);
107
+ let outputs = transaction.vout;
108
+ if (changeOutput) {
109
+ outputs = outputs.filter((vout) => vout.scriptPubKey.addresses[0] !== changeOutput.scriptPubKey.addresses[0]);
110
+ }
111
+ // TODO more checks?
112
+ const transactions = outputs.map((output) => ({
113
+ address: output.scriptPubKey.addresses[0],
114
+ value: new types_1.BigNumber(output.value).times(1e6).toNumber(),
115
+ }));
116
+ const { hex, fee } = yield this.buildTransaction(transactions, newFeePerByte, fixedInputs);
117
+ yield this.chainProvider.sendRawTransaction(`data=${hex}`);
118
+ return (0, utils_2.normalizeTransactionObject)((0, utils_2.decodeRawTransaction)(hex, this._network), fee);
119
+ });
120
+ }
121
+ getTotalFees(transactions, max) {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ const fees = yield this.withCachedUtxos(() => __awaiter(this, void 0, void 0, function* () {
124
+ const fees = {};
125
+ for (const tx of transactions) {
126
+ const fee = yield this.getTotalFee(tx, max);
127
+ fees[tx.fee] = new types_1.BigNumber(fee);
128
+ }
129
+ return fees;
130
+ }));
131
+ return fees;
132
+ });
133
+ }
134
+ _sendTransaction(transactions, feePerByte) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ const { hex, fee } = yield this.buildTransaction(transactions, feePerByte);
137
+ const result = yield this.chainProvider.sendRawTransaction(`data=${hex}`);
138
+ if (result == 'There was an error. Check your console.') {
139
+ throw new Error("Cannot send transaction, there might some reasons:\n 1) It might be the fee is not enough, please try increasing the fee.\n 2) The wallet haven't updated latest balance info, please wait 10 seconds and try again.");
140
+ }
141
+ return (0, utils_2.normalizeTransactionObject)((0, utils_2.decodeRawTransaction)(hex, this._network), fee);
142
+ });
143
+ }
144
+ findAddress(addresses, change = false) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ // A maximum number of addresses to lookup after which it is deemed that the wallet does not contain this address
147
+ const maxAddresses = NUMBER_ADDRESS_LIMIT;
148
+ const addressesPerCall = 50;
149
+ let index = 0;
150
+ while (index < maxAddresses) {
151
+ const walletAddresses = yield this.getAddresses(index, addressesPerCall, change);
152
+ const walletAddress = walletAddresses.find((walletAddr) => addresses.find((addr) => walletAddr.toString() === addr.toString()));
153
+ if (walletAddress) {
154
+ return walletAddress;
155
+ }
156
+ index += addressesPerCall;
157
+ }
158
+ });
159
+ }
160
+ getWalletAddress(address) {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const externalAddress = yield this.findAddress([address], false);
163
+ if (externalAddress) {
164
+ return externalAddress;
165
+ }
166
+ const changeAddress = yield this.findAddress([address], true);
167
+ if (changeAddress) {
168
+ return changeAddress;
169
+ }
170
+ throw new Error('Wallet does not contain address');
171
+ });
172
+ }
173
+ getDerivationPathAddress(path) {
174
+ return __awaiter(this, void 0, void 0, function* () {
175
+ if (path in this._derivationCache) {
176
+ return this._derivationCache[path];
177
+ }
178
+ const baseDerivationNode = yield this.baseDerivationNode();
179
+ const subPath = path.replace(this._baseDerivationPath + '/', '');
180
+ const publicKey = baseDerivationNode.derivePath(subPath).publicKey;
181
+ const address = this.getAddressFromPublicKey(publicKey);
182
+ const addressObject = new types_1.Address({
183
+ address,
184
+ publicKey: publicKey.toString('hex'),
185
+ derivationPath: path,
186
+ });
187
+ this._derivationCache[path] = addressObject;
188
+ return addressObject;
189
+ });
190
+ }
191
+ _getUsedUnusedAddresses(numAddressPerCall = NUMBER_ADDRESS_PER_CALL, addressType) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ const usedAddresses = [];
194
+ const addressCountMap = { change: 0, external: 0 };
195
+ const numAddressAlreadyGet = { change: 0, external: 0 };
196
+ const unusedAddressMap = { change: null, external: null };
197
+ let addrList;
198
+ let uniqueAddresses = [];
199
+ let addressIndex = 0;
200
+ let changeAddresses = [];
201
+ let externalAddresses = [];
202
+ /* eslint-disable no-unmodified-loop-condition */
203
+ while ((addressType === AddressSearchType.EXTERNAL_OR_CHANGE &&
204
+ ((addressCountMap.change < ADDRESS_GAP && numAddressAlreadyGet['change'] < NUMBER_ADDRESS_LIMIT) ||
205
+ (addressCountMap.external < ADDRESS_GAP && numAddressAlreadyGet['external'] < NUMBER_ADDRESS_LIMIT)) ||
206
+ (addressType === AddressSearchType.EXTERNAL &&
207
+ addressCountMap.external < ADDRESS_GAP && numAddressAlreadyGet['external'] < NUMBER_ADDRESS_LIMIT) ||
208
+ (addressType === AddressSearchType.CHANGE &&
209
+ addressCountMap.change < ADDRESS_GAP && numAddressAlreadyGet['change'] < NUMBER_ADDRESS_LIMIT))) {
210
+ /* eslint-enable no-unmodified-loop-condition */
211
+ addrList = [];
212
+ if ((addressType === AddressSearchType.EXTERNAL_OR_CHANGE || addressType === AddressSearchType.CHANGE) &&
213
+ addressCountMap.change < ADDRESS_GAP && numAddressAlreadyGet['change'] < NUMBER_ADDRESS_LIMIT) {
214
+ // Scanning for change addr
215
+ changeAddresses = yield this.getAddresses(addressIndex, numAddressPerCall, true);
216
+ addrList = addrList.concat(changeAddresses);
217
+ numAddressAlreadyGet['change'] += numAddressPerCall;
218
+ }
219
+ else {
220
+ changeAddresses = [];
221
+ }
222
+ if ((addressType === AddressSearchType.EXTERNAL_OR_CHANGE || addressType === AddressSearchType.EXTERNAL) &&
223
+ addressCountMap.external < ADDRESS_GAP && numAddressAlreadyGet['external'] < NUMBER_ADDRESS_LIMIT) {
224
+ // Scanning for non change addr
225
+ externalAddresses = yield this.getAddresses(addressIndex, numAddressPerCall, false);
226
+ addrList = addrList.concat(externalAddresses);
227
+ numAddressAlreadyGet['external'] += numAddressPerCall;
228
+ }
229
+ const transactionCounts = yield this.chainProvider.getProvider().getAddressTransactionCounts(addrList);
230
+ for (const address of addrList) {
231
+ // Remove duplicate addresses
232
+ if (!uniqueAddresses.includes(address.address)) {
233
+ uniqueAddresses.push(address.address);
234
+ }
235
+ else {
236
+ continue;
237
+ }
238
+ const isUsed = transactionCounts[address.toString()] > 0;
239
+ const isChangeAddress = changeAddresses.find((a) => address.toString() === a.toString());
240
+ const key = isChangeAddress ? 'change' : 'external';
241
+ if (isUsed) {
242
+ usedAddresses.push(address);
243
+ addressCountMap[key] = 0;
244
+ unusedAddressMap[key] = null;
245
+ }
246
+ else {
247
+ addressCountMap[key]++;
248
+ if (!unusedAddressMap[key]) {
249
+ unusedAddressMap[key] = address;
250
+ }
251
+ }
252
+ }
253
+ addressIndex += numAddressPerCall;
254
+ }
255
+ if (!unusedAddressMap['change']) {
256
+ unusedAddressMap['change'] = changeAddresses[0];
257
+ }
258
+ if (!unusedAddressMap['external']) {
259
+ unusedAddressMap['external'] = externalAddresses[0];
260
+ }
261
+ return {
262
+ usedAddresses,
263
+ unusedAddress: unusedAddressMap
264
+ };
265
+ });
266
+ }
267
+ withCachedUtxos(func) {
268
+ return __awaiter(this, void 0, void 0, function* () {
269
+ const originalProvider = this.chainProvider.getProvider();
270
+ const memoizedGetFeePerByte = (0, memoizee_1.default)(originalProvider.getFeePerByte, { primitive: true });
271
+ const memoizedGetUnspentTransactions = (0, memoizee_1.default)(originalProvider.getUnspentTransactions, { primitive: true });
272
+ const memoizedGetAddressTransactionCounts = (0, memoizee_1.default)(originalProvider.getAddressTransactionCounts, { primitive: true });
273
+ const newProvider = originalProvider;
274
+ newProvider.getFeePerByte = memoizedGetFeePerByte;
275
+ newProvider.getUnspentTransactions = memoizedGetUnspentTransactions;
276
+ newProvider.getAddressTransactionCounts = memoizedGetAddressTransactionCounts;
277
+ this.chainProvider.setProvider(newProvider);
278
+ const result = yield func.bind(this)();
279
+ this.chainProvider.setProvider(originalProvider);
280
+ return result;
281
+ });
282
+ }
283
+ getTotalFee(opts, max) {
284
+ return __awaiter(this, void 0, void 0, function* () {
285
+ const targets = this.sendOptionsToOutputs([opts]);
286
+ if (!max) {
287
+ const { fee } = yield this.getInputsForAmount(targets, opts.fee);
288
+ return fee;
289
+ }
290
+ else {
291
+ const { fee } = yield this.getInputsForAmount(targets.filter((t) => !t.value), opts.fee, [], NUMBER_ADDRESS_PER_CALL, true);
292
+ return fee;
293
+ }
294
+ });
295
+ }
296
+ getInputsForAmount(_targets, feePerByte, fixedInputs = [], numAddressPerCall = NUMBER_ADDRESS_PER_CALL, sweep = false) {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ let addressIndex = 0;
299
+ let changeAddresses = [];
300
+ let externalAddresses = [];
301
+ const addressCountMap = {
302
+ change: 0,
303
+ nonChange: 0,
304
+ };
305
+ const feePerBytePromise = this.chainProvider.getProvider().getFeePerByte();
306
+ let utxos = [];
307
+ while (addressCountMap.change < ADDRESS_GAP || addressCountMap.nonChange < ADDRESS_GAP) {
308
+ let addrList = [];
309
+ if (addressCountMap.change < ADDRESS_GAP) {
310
+ // Scanning for change addr
311
+ changeAddresses = yield this.getAddresses(addressIndex, numAddressPerCall, true);
312
+ addrList = addrList.concat(changeAddresses);
313
+ }
314
+ else {
315
+ changeAddresses = [];
316
+ }
317
+ if (addressCountMap.nonChange < ADDRESS_GAP) {
318
+ // Scanning for non change addr
319
+ externalAddresses = yield this.getAddresses(addressIndex, numAddressPerCall, false);
320
+ addrList = addrList.concat(externalAddresses);
321
+ }
322
+ const fixedUtxos = [];
323
+ if (fixedInputs.length > 0) {
324
+ for (const input of fixedInputs) {
325
+ const txHex = yield this.chainProvider.getProvider().getRawTransactionByHash(input.txid);
326
+ const tx = (0, utils_2.decodeRawTransaction)(txHex, this._network);
327
+ const value = new types_1.BigNumber(tx.vout[input.vout].value).times(1e6).toNumber();
328
+ const address = tx.vout[input.vout].scriptPubKey.addresses[0];
329
+ const walletAddress = yield this.getWalletAddress(address);
330
+ const utxo = Object.assign(Object.assign({}, input), { value, address, derivationPath: walletAddress.derivationPath });
331
+ fixedUtxos.push(utxo);
332
+ }
333
+ }
334
+ if (!sweep || fixedUtxos.length === 0) {
335
+ const _utxos = yield this.chainProvider.getProvider().getUnspentTransactions(addrList);
336
+ utxos.push(..._utxos.map((utxo) => {
337
+ const addr = addrList.find((a) => a.address === utxo.address);
338
+ return Object.assign(Object.assign({}, utxo), { derivationPath: addr.derivationPath });
339
+ }));
340
+ }
341
+ else {
342
+ utxos = fixedUtxos;
343
+ }
344
+ const utxoBalance = utxos.reduce((a, b) => a + (b.value || 0), 0);
345
+ const transactionCounts = yield this.chainProvider.getProvider().getAddressTransactionCounts(addrList);
346
+ if (!feePerByte)
347
+ feePerByte = yield feePerBytePromise;
348
+ const minRelayFee = yield this.chainProvider.getProvider().getMinRelayFee();
349
+ if (feePerByte < minRelayFee) {
350
+ throw new Error(`Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`);
351
+ }
352
+ let targets;
353
+ if (sweep) {
354
+ const outputBalance = _targets.reduce((a, b) => a + (b['value'] || 0), 0);
355
+ const sweepOutputSize = 39;
356
+ const paymentOutputSize = _targets.filter((t) => t.value && t.address).length * 39;
357
+ const scriptOutputSize = _targets
358
+ .filter((t) => !t.value && t.script)
359
+ .reduce((size, t) => size + 39 + t.script.byteLength, 0);
360
+ const outputSize = sweepOutputSize + paymentOutputSize + scriptOutputSize;
361
+ const inputSize = utxos.length * 153;
362
+ const sweepFee = feePerByte * (inputSize + outputSize);
363
+ const amountToSend = new types_1.BigNumber(utxoBalance).minus(sweepFee);
364
+ targets = _targets.map((target) => ({ id: 'main', value: target.value, script: target.script }));
365
+ targets.push({ id: 'main', value: amountToSend.minus(outputBalance).toNumber() });
366
+ }
367
+ else {
368
+ targets = _targets.map((target) => ({ id: 'main', value: target.value, script: target.script }));
369
+ }
370
+ const { inputs, outputs, change, fee } = (0, utils_2.selectCoins)(utxos, targets, Math.ceil(feePerByte), fixedUtxos);
371
+ if (inputs && outputs) {
372
+ return {
373
+ inputs,
374
+ change,
375
+ outputs,
376
+ fee,
377
+ };
378
+ }
379
+ for (const address of addrList) {
380
+ const isUsed = transactionCounts[address.address];
381
+ const isChangeAddress = changeAddresses.find((a) => address.address === a.address);
382
+ const key = isChangeAddress ? 'change' : 'nonChange';
383
+ if (isUsed) {
384
+ addressCountMap[key] = 0;
385
+ }
386
+ else {
387
+ addressCountMap[key]++;
388
+ }
389
+ }
390
+ addressIndex += numAddressPerCall;
391
+ }
392
+ throw new errors_1.InsufficientBalanceError('Not enough balance');
393
+ });
394
+ }
395
+ sendOptionsToOutputs(transactions) {
396
+ const targets = [];
397
+ transactions.forEach((tx) => {
398
+ if (tx.to && tx.value && tx.value.gt(0)) {
399
+ targets.push({
400
+ address: tx.to.toString(),
401
+ value: tx.value.toNumber(),
402
+ });
403
+ }
404
+ if (tx.data) {
405
+ const scriptBuffer = yacoinjs_lib_1.script.compile([yacoinjs_lib_1.script.OPS.OP_RETURN, Buffer.from(tx.data, 'hex')]);
406
+ targets.push({
407
+ value: 0,
408
+ script: scriptBuffer,
409
+ });
410
+ }
411
+ });
412
+ return targets;
413
+ }
414
+ getAddressFromPublicKey(publicKey) {
415
+ return this.getPaymentVariantFromPublicKey(publicKey).address;
416
+ }
417
+ getPaymentVariantFromPublicKey(publicKey) {
418
+ if (this._addressType === types_2.AddressType.LEGACY) {
419
+ return yacoinjs_lib_1.payments.p2pkh({ pubkey: publicKey, network: this._network });
420
+ }
421
+ else
422
+ throw new Error('Unknown script type');
423
+ }
424
+ }
425
+ exports.YacoinBaseWalletProvider = YacoinBaseWalletProvider;
426
+ //# sourceMappingURL=YacoinBaseWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YacoinBaseWallet.js","sourceRoot":"","sources":["../../../lib/wallet/YacoinBaseWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="node" />
2
+ import { Chain } from '@yaswap/client';
3
+ import { AddressType, Asset, BigNumber } from '@yaswap/types';
4
+ import { BIP32Interface } from 'bip32';
5
+ import { YacoinBaseChainProvider } from '../chain/YacoinBaseChainProvider';
6
+ import { YacoinHDWalletProviderOptions, Input, OutputTarget, PsbtInputTarget } from '../types';
7
+ import { YacoinBaseWalletProvider } from './YacoinBaseWallet';
8
+ import { IYacoinWallet } from './IYacoinWallet';
9
+ export declare class YacoinHDWalletProvider extends YacoinBaseWalletProvider implements IYacoinWallet<YacoinBaseChainProvider> {
10
+ private _mnemonic;
11
+ private _seedNode;
12
+ private _baseDerivationNode;
13
+ constructor(options: YacoinHDWalletProviderOptions, chainProvider?: Chain<YacoinBaseChainProvider>);
14
+ canUpdateFee(): boolean;
15
+ getSigner(): Promise<null>;
16
+ getAddress(): Promise<AddressType>;
17
+ getBalance(_assets: Asset[]): Promise<BigNumber[]>;
18
+ signMessage(message: string, from: string): Promise<string>;
19
+ exportPrivateKey(): Promise<string>;
20
+ getConnectedNetwork(): Promise<import("../types").YacoinNetwork>;
21
+ isWalletAvailable(): Promise<boolean>;
22
+ protected baseDerivationNode(): Promise<BIP32Interface>;
23
+ protected buildTransaction(targets: OutputTarget[], feePerByte?: number, fixedInputs?: Input[]): Promise<{
24
+ hex: string;
25
+ fee: number;
26
+ }>;
27
+ protected buildSweepTransaction(externalChangeAddress: string, feePerByte: number): Promise<{
28
+ hex: string;
29
+ fee: number;
30
+ }>;
31
+ signPSBT(data: string, inputs: PsbtInputTarget[]): Promise<string>;
32
+ signTx(transaction: string, hash: string, derivationPath: string, txfee: number): Promise<string>;
33
+ signBatchP2SHTransaction(inputs: [{
34
+ inputTxHex: string;
35
+ index: number;
36
+ vout: any;
37
+ outputScript: Buffer;
38
+ txInputIndex?: number;
39
+ }], addresses: string, tx: any, lockTime?: number, segwit?: boolean): Promise<Buffer[]>;
40
+ private keyPair;
41
+ private _toWIF;
42
+ private seedNode;
43
+ }