@xchainjs/xchain-utxo-providers 0.1.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.
- package/README.md +72 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +14 -0
- package/lib/index.js.map +1 -0
- package/lib/providers/blockcypher/blockcypher-api-types.d.ts +96 -0
- package/lib/providers/blockcypher/blockcypher-api-types.js +11 -0
- package/lib/providers/blockcypher/blockcypher-api-types.js.map +1 -0
- package/lib/providers/blockcypher/blockcypher-api.d.ts +69 -0
- package/lib/providers/blockcypher/blockcypher-api.js +233 -0
- package/lib/providers/blockcypher/blockcypher-api.js.map +1 -0
- package/lib/providers/blockcypher/blockcypher-data-provider.d.ts +52 -0
- package/lib/providers/blockcypher/blockcypher-data-provider.js +366 -0
- package/lib/providers/blockcypher/blockcypher-data-provider.js.map +1 -0
- package/lib/providers/haskoin/haskoin-api-types.d.ts +113 -0
- package/lib/providers/haskoin/haskoin-api-types.js +14 -0
- package/lib/providers/haskoin/haskoin-api-types.js.map +1 -0
- package/lib/providers/haskoin/haskoin-api.d.ts +150 -0
- package/lib/providers/haskoin/haskoin-api.js +485 -0
- package/lib/providers/haskoin/haskoin-api.js.map +1 -0
- package/lib/providers/haskoin/haskoin-data-provider.d.ts +37 -0
- package/lib/providers/haskoin/haskoin-data-provider.js +269 -0
- package/lib/providers/haskoin/haskoin-data-provider.js.map +1 -0
- package/lib/providers/index.d.ts +8 -0
- package/lib/providers/index.js +34 -0
- package/lib/providers/index.js.map +1 -0
- package/lib/providers/sochainv3/sochain-api-types.d.ts +101 -0
- package/lib/providers/sochainv3/sochain-api-types.js +13 -0
- package/lib/providers/sochainv3/sochain-api-types.js.map +1 -0
- package/lib/providers/sochainv3/sochain-api.d.ts +113 -0
- package/lib/providers/sochainv3/sochain-api.js +354 -0
- package/lib/providers/sochainv3/sochain-api.js.map +1 -0
- package/lib/providers/sochainv3/sochain-data-provider.d.ts +42 -0
- package/lib/providers/sochainv3/sochain-data-provider.js +312 -0
- package/lib/providers/sochainv3/sochain-data-provider.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
31
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
32
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
33
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
34
|
+
function step(op) {
|
|
35
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
36
|
+
while (_) try {
|
|
37
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
38
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
39
|
+
switch (op[0]) {
|
|
40
|
+
case 0: case 1: t = op; break;
|
|
41
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
42
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
43
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
44
|
+
default:
|
|
45
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
46
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
47
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
48
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
49
|
+
if (t[2]) _.ops.pop();
|
|
50
|
+
_.trys.pop(); continue;
|
|
51
|
+
}
|
|
52
|
+
op = body.call(thisArg, _);
|
|
53
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
54
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
58
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
59
|
+
if (!m) return o;
|
|
60
|
+
var i = m.call(o), r, ar = [], e;
|
|
61
|
+
try {
|
|
62
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
63
|
+
}
|
|
64
|
+
catch (error) { e = { error: error }; }
|
|
65
|
+
finally {
|
|
66
|
+
try {
|
|
67
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
68
|
+
}
|
|
69
|
+
finally { if (e) throw e.error; }
|
|
70
|
+
}
|
|
71
|
+
return ar;
|
|
72
|
+
};
|
|
73
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
74
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
75
|
+
to[j] = from[i];
|
|
76
|
+
return to;
|
|
77
|
+
};
|
|
78
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
79
|
+
exports.BlockcypherProvider = void 0;
|
|
80
|
+
var promise_pool_1 = require("@supercharge/promise-pool");
|
|
81
|
+
var xchain_client_1 = require("@xchainjs/xchain-client");
|
|
82
|
+
var xchain_util_1 = require("@xchainjs/xchain-util");
|
|
83
|
+
var blockcypher = __importStar(require("./blockcypher-api"));
|
|
84
|
+
var BlockcypherProvider = /** @class */ (function () {
|
|
85
|
+
function BlockcypherProvider(baseUrl, chain, asset, assetDecimals, blockcypherNetwork, apiKey) {
|
|
86
|
+
if (baseUrl === void 0) { baseUrl = 'https://api.blockcypher.com/v1/'; }
|
|
87
|
+
this.baseUrl = baseUrl;
|
|
88
|
+
this._apiKey = apiKey;
|
|
89
|
+
this.chain = chain;
|
|
90
|
+
this.asset = asset;
|
|
91
|
+
this.assetDecimals = assetDecimals;
|
|
92
|
+
this.blockcypherNetwork = blockcypherNetwork;
|
|
93
|
+
this.asset;
|
|
94
|
+
this.chain;
|
|
95
|
+
}
|
|
96
|
+
Object.defineProperty(BlockcypherProvider.prototype, "apiKey", {
|
|
97
|
+
get: function () {
|
|
98
|
+
return this._apiKey;
|
|
99
|
+
},
|
|
100
|
+
set: function (value) {
|
|
101
|
+
this._apiKey = value;
|
|
102
|
+
},
|
|
103
|
+
enumerable: false,
|
|
104
|
+
configurable: true
|
|
105
|
+
});
|
|
106
|
+
BlockcypherProvider.prototype.broadcastTx = function (txHex) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
108
|
+
return __generator(this, function (_a) {
|
|
109
|
+
switch (_a.label) {
|
|
110
|
+
case 0: return [4 /*yield*/, blockcypher.broadcastTx({
|
|
111
|
+
apiKey: this._apiKey,
|
|
112
|
+
baseUrl: this.baseUrl,
|
|
113
|
+
network: this.blockcypherNetwork,
|
|
114
|
+
txHex: txHex,
|
|
115
|
+
})];
|
|
116
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
BlockcypherProvider.prototype.getConfirmedUnspentTxs = function (address) {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
123
|
+
var allUnspent;
|
|
124
|
+
return __generator(this, function (_a) {
|
|
125
|
+
switch (_a.label) {
|
|
126
|
+
case 0: return [4 /*yield*/, this.getRawTransactions({ address: address, offset: 0, limit: 2000 }, true)];
|
|
127
|
+
case 1:
|
|
128
|
+
allUnspent = _a.sent();
|
|
129
|
+
return [2 /*return*/, this.mapUTXOs(address, allUnspent.filter(function (i) { return i.confirmed; }))];
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
BlockcypherProvider.prototype.getUnspentTxs = function (address) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
136
|
+
var allUnspent;
|
|
137
|
+
return __generator(this, function (_a) {
|
|
138
|
+
switch (_a.label) {
|
|
139
|
+
case 0: return [4 /*yield*/, this.getRawTransactions({ address: address, offset: 0, limit: 2000 }, true)];
|
|
140
|
+
case 1:
|
|
141
|
+
allUnspent = _a.sent();
|
|
142
|
+
return [2 /*return*/, this.mapUTXOs(address, allUnspent)];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
BlockcypherProvider.prototype.getBalance = function (address, assets /*ignored*/, confirmedOnly) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
149
|
+
var amount;
|
|
150
|
+
return __generator(this, function (_a) {
|
|
151
|
+
switch (_a.label) {
|
|
152
|
+
case 0:
|
|
153
|
+
assets; // TODO can we fix this?
|
|
154
|
+
return [4 /*yield*/, blockcypher.getBalance({
|
|
155
|
+
apiKey: this._apiKey,
|
|
156
|
+
baseUrl: this.baseUrl,
|
|
157
|
+
network: this.blockcypherNetwork,
|
|
158
|
+
address: address,
|
|
159
|
+
confirmedOnly: !!confirmedOnly,
|
|
160
|
+
assetDecimals: this.assetDecimals,
|
|
161
|
+
})];
|
|
162
|
+
case 1:
|
|
163
|
+
amount = _a.sent();
|
|
164
|
+
return [2 /*return*/, [{ amount: amount, asset: this.asset }]];
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Get transaction history of a given address with pagination options.
|
|
171
|
+
* By default it will return the transaction history of the current wallet.
|
|
172
|
+
*
|
|
173
|
+
* @param {TxHistoryParams} params The options to get transaction history. (optional)
|
|
174
|
+
* @returns {TxsPage} The transaction history.
|
|
175
|
+
*/
|
|
176
|
+
BlockcypherProvider.prototype.getTransactions = function (params, unspentOnly) {
|
|
177
|
+
if (unspentOnly === void 0) { unspentOnly = false; }
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
var rawTxs, txs, result;
|
|
180
|
+
var _this = this;
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
switch (_a.label) {
|
|
183
|
+
case 0: return [4 /*yield*/, this.getRawTransactions(params, unspentOnly)];
|
|
184
|
+
case 1:
|
|
185
|
+
rawTxs = _a.sent();
|
|
186
|
+
txs = rawTxs.map(function (i) { return _this.mapTransactionToTx(i); });
|
|
187
|
+
result = {
|
|
188
|
+
total: txs.length,
|
|
189
|
+
txs: txs,
|
|
190
|
+
};
|
|
191
|
+
return [2 /*return*/, result];
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Get the transaction details of a given transaction id.
|
|
198
|
+
*
|
|
199
|
+
* @param {string} txId The transaction id.
|
|
200
|
+
* @returns {Tx} The transaction details of the given transaction id.
|
|
201
|
+
*/
|
|
202
|
+
BlockcypherProvider.prototype.getTransactionData = function (txId) {
|
|
203
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
204
|
+
var rawTx, error_1;
|
|
205
|
+
return __generator(this, function (_a) {
|
|
206
|
+
switch (_a.label) {
|
|
207
|
+
case 0:
|
|
208
|
+
_a.trys.push([0, 2, , 3]);
|
|
209
|
+
return [4 /*yield*/, blockcypher.getTx({
|
|
210
|
+
apiKey: this._apiKey,
|
|
211
|
+
baseUrl: this.baseUrl,
|
|
212
|
+
network: this.blockcypherNetwork,
|
|
213
|
+
hash: txId,
|
|
214
|
+
})];
|
|
215
|
+
case 1:
|
|
216
|
+
rawTx = _a.sent();
|
|
217
|
+
return [2 /*return*/, this.mapTransactionToTx(rawTx)];
|
|
218
|
+
case 2:
|
|
219
|
+
error_1 = _a.sent();
|
|
220
|
+
console.error(error_1);
|
|
221
|
+
throw error_1;
|
|
222
|
+
case 3: return [2 /*return*/];
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
};
|
|
227
|
+
BlockcypherProvider.prototype.mapTransactionToTx = function (rawTx) {
|
|
228
|
+
var _this = this;
|
|
229
|
+
return {
|
|
230
|
+
asset: this.asset,
|
|
231
|
+
from: rawTx.inputs.map(function (i) { return ({
|
|
232
|
+
from: i.addresses[0],
|
|
233
|
+
amount: xchain_util_1.baseAmount(i.output_value, _this.assetDecimals),
|
|
234
|
+
}); }),
|
|
235
|
+
to: rawTx.outputs
|
|
236
|
+
.filter(function (i) { return i.script_type !== 'null-data'; }) //filter out op_return outputs
|
|
237
|
+
.map(function (i) { return ({ to: i.addresses[0], amount: xchain_util_1.baseAmount(i.value, _this.assetDecimals) }); }),
|
|
238
|
+
date: new Date(rawTx.confirmed),
|
|
239
|
+
type: xchain_client_1.TxType.Transfer,
|
|
240
|
+
hash: rawTx.hash,
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
BlockcypherProvider.prototype.mapUTXOs = function (address, utxos) {
|
|
244
|
+
var utxosOut = [];
|
|
245
|
+
for (var index = 0; index < utxos.length; index++) {
|
|
246
|
+
var utxo = utxos[index];
|
|
247
|
+
for (var index2 = 0; index2 < utxo.outputs.length; index2++) {
|
|
248
|
+
var output = utxo.outputs[index2];
|
|
249
|
+
if (output.addresses && output.addresses[0] === address) {
|
|
250
|
+
var utxoOut = {
|
|
251
|
+
hash: utxo.hash,
|
|
252
|
+
index: index2,
|
|
253
|
+
value: xchain_util_1.baseAmount(output.value, this.assetDecimals).amount().toNumber(),
|
|
254
|
+
witnessUtxo: {
|
|
255
|
+
value: xchain_util_1.baseAmount(output.value, this.assetDecimals).amount().toNumber(),
|
|
256
|
+
script: Buffer.from(output.script, 'hex'),
|
|
257
|
+
},
|
|
258
|
+
txHex: utxo.hex,
|
|
259
|
+
};
|
|
260
|
+
utxosOut.push(utxoOut);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return utxosOut;
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* helper function tto limit adding to an array
|
|
268
|
+
*
|
|
269
|
+
* @param arr array to be added to
|
|
270
|
+
* @param toAdd elements to add
|
|
271
|
+
* @param limit do not add more than this limit
|
|
272
|
+
*/
|
|
273
|
+
BlockcypherProvider.prototype.addArrayUpToLimit = function (arr, toAdd, limit) {
|
|
274
|
+
for (var index = 0; index < toAdd.length; index++) {
|
|
275
|
+
var element = toAdd[index];
|
|
276
|
+
if (arr.length < limit) {
|
|
277
|
+
arr.push(element);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
BlockcypherProvider.prototype.delay = function (ms) {
|
|
282
|
+
return new Promise(function (resolve) { return setTimeout(resolve, ms); });
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Get transaction history of a given address with pagination options.
|
|
286
|
+
* By default it will return the transaction history of the current wallet.
|
|
287
|
+
*
|
|
288
|
+
* @param {TxHistoryParams} params The options to get transaction history. (optional)
|
|
289
|
+
* @returns {TxsPage} The transaction history.
|
|
290
|
+
*/
|
|
291
|
+
BlockcypherProvider.prototype.getRawTransactions = function (params, unspentOnly) {
|
|
292
|
+
var _a;
|
|
293
|
+
if (unspentOnly === void 0) { unspentOnly = false; }
|
|
294
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
295
|
+
var offset, limit, txHashesToFetch, response, txs, uniqTxs, start, end, txsToFetch, error_2, batchResult;
|
|
296
|
+
var _this = this;
|
|
297
|
+
return __generator(this, function (_b) {
|
|
298
|
+
switch (_b.label) {
|
|
299
|
+
case 0:
|
|
300
|
+
offset = (_a = params === null || params === void 0 ? void 0 : params.offset) !== null && _a !== void 0 ? _a : 0;
|
|
301
|
+
limit = (params === null || params === void 0 ? void 0 : params.limit) || 10;
|
|
302
|
+
if (offset + limit > 2000)
|
|
303
|
+
throw Error('cannot fetch more than last 2000 txs');
|
|
304
|
+
if (offset < 0 || limit < 0)
|
|
305
|
+
throw Error('ofset and limit must be equal or greater than 0');
|
|
306
|
+
txHashesToFetch = [];
|
|
307
|
+
_b.label = 1;
|
|
308
|
+
case 1:
|
|
309
|
+
_b.trys.push([1, 3, , 4]);
|
|
310
|
+
return [4 /*yield*/, blockcypher.getTxs({
|
|
311
|
+
apiKey: this._apiKey,
|
|
312
|
+
baseUrl: this.baseUrl,
|
|
313
|
+
network: this.blockcypherNetwork,
|
|
314
|
+
address: "" + (params === null || params === void 0 ? void 0 : params.address),
|
|
315
|
+
limit: 2000,
|
|
316
|
+
unspentOnly: unspentOnly,
|
|
317
|
+
})
|
|
318
|
+
//remove duplicates
|
|
319
|
+
];
|
|
320
|
+
case 2:
|
|
321
|
+
response = _b.sent();
|
|
322
|
+
txs = response.txrefs.map(function (i) { return i.tx_hash; });
|
|
323
|
+
uniqTxs = __spreadArray([], __read(new Set(txs)));
|
|
324
|
+
start = offset >= uniqTxs.length ? uniqTxs.length : offset;
|
|
325
|
+
end = offset + limit >= uniqTxs.length ? uniqTxs.length : offset + limit;
|
|
326
|
+
txsToFetch = uniqTxs.slice(start, end);
|
|
327
|
+
// console.log(JSON.stringify(txsToFetch, null, 2))
|
|
328
|
+
this.addArrayUpToLimit(txHashesToFetch, txsToFetch, limit);
|
|
329
|
+
return [3 /*break*/, 4];
|
|
330
|
+
case 3:
|
|
331
|
+
error_2 = _b.sent();
|
|
332
|
+
console.error(error_2);
|
|
333
|
+
return [3 /*break*/, 4];
|
|
334
|
+
case 4: return [4 /*yield*/, promise_pool_1.PromisePool.for(txHashesToFetch)
|
|
335
|
+
.withConcurrency(3)
|
|
336
|
+
.useCorrespondingResults()
|
|
337
|
+
.process(function (hash) { return __awaiter(_this, void 0, void 0, function () {
|
|
338
|
+
var rawTx;
|
|
339
|
+
return __generator(this, function (_a) {
|
|
340
|
+
switch (_a.label) {
|
|
341
|
+
case 0: return [4 /*yield*/, this.delay(1000)];
|
|
342
|
+
case 1:
|
|
343
|
+
_a.sent();
|
|
344
|
+
return [4 /*yield*/, blockcypher.getTx({
|
|
345
|
+
apiKey: this._apiKey,
|
|
346
|
+
baseUrl: this.baseUrl,
|
|
347
|
+
network: this.blockcypherNetwork,
|
|
348
|
+
hash: hash,
|
|
349
|
+
})];
|
|
350
|
+
case 2:
|
|
351
|
+
rawTx = _a.sent();
|
|
352
|
+
return [2 /*return*/, rawTx];
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
}); })];
|
|
356
|
+
case 5:
|
|
357
|
+
batchResult = _b.sent();
|
|
358
|
+
return [2 /*return*/, batchResult.results];
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
return BlockcypherProvider;
|
|
364
|
+
}());
|
|
365
|
+
exports.BlockcypherProvider = BlockcypherProvider;
|
|
366
|
+
//# sourceMappingURL=blockcypher-data-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockcypher-data-provider.js","sourceRoot":"","sources":["../../../src/providers/blockcypher/blockcypher-data-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Haskoin API types
|
|
3
|
+
*/
|
|
4
|
+
import { TxHash } from '@xchainjs/xchain-client';
|
|
5
|
+
import { Address } from '@xchainjs/xchain-util';
|
|
6
|
+
export declare enum HaskoinNetwork {
|
|
7
|
+
BTC = "btc",
|
|
8
|
+
BTCTEST = "btctest",
|
|
9
|
+
BCH = "bch",
|
|
10
|
+
BCHTEST = "bchtest"
|
|
11
|
+
}
|
|
12
|
+
export declare type AddressParams = {
|
|
13
|
+
haskoinUrl: string;
|
|
14
|
+
network: HaskoinNetwork;
|
|
15
|
+
address: string;
|
|
16
|
+
};
|
|
17
|
+
export declare type ErrorResponse = {
|
|
18
|
+
error: unknown;
|
|
19
|
+
};
|
|
20
|
+
export declare type AddressBalance = {
|
|
21
|
+
received: number;
|
|
22
|
+
utxo: number;
|
|
23
|
+
address: string;
|
|
24
|
+
txs: number;
|
|
25
|
+
unconfirmed: number;
|
|
26
|
+
confirmed: number;
|
|
27
|
+
};
|
|
28
|
+
export declare type BalanceData = {
|
|
29
|
+
address: Address;
|
|
30
|
+
confirmed: number;
|
|
31
|
+
unconfirmed: number;
|
|
32
|
+
utxo: number;
|
|
33
|
+
txs: number;
|
|
34
|
+
received: number;
|
|
35
|
+
};
|
|
36
|
+
export declare type RawTransaction = {
|
|
37
|
+
result: string;
|
|
38
|
+
};
|
|
39
|
+
export declare type AddressDTO = {
|
|
40
|
+
network: string;
|
|
41
|
+
address: string;
|
|
42
|
+
balance: string;
|
|
43
|
+
received_value: string;
|
|
44
|
+
pending_value: string;
|
|
45
|
+
total_txs: number;
|
|
46
|
+
};
|
|
47
|
+
export declare type TxHashParams = {
|
|
48
|
+
haskoinUrl: string;
|
|
49
|
+
network: HaskoinNetwork;
|
|
50
|
+
txId: TxHash;
|
|
51
|
+
};
|
|
52
|
+
export interface TxIO {
|
|
53
|
+
txid: number;
|
|
54
|
+
output: number;
|
|
55
|
+
script: string;
|
|
56
|
+
address: string;
|
|
57
|
+
value: number;
|
|
58
|
+
type?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare type Transaction = {
|
|
61
|
+
txid: string;
|
|
62
|
+
block: Block;
|
|
63
|
+
confirmations: number;
|
|
64
|
+
time: number;
|
|
65
|
+
tx_hex: string;
|
|
66
|
+
inputs: TxIO[];
|
|
67
|
+
outputs: TxIO[];
|
|
68
|
+
};
|
|
69
|
+
export interface HaskoinResponse<T> {
|
|
70
|
+
data: T;
|
|
71
|
+
status: string;
|
|
72
|
+
}
|
|
73
|
+
export declare type Block = {
|
|
74
|
+
height: number;
|
|
75
|
+
position: number;
|
|
76
|
+
};
|
|
77
|
+
export declare type GetTxsDTO = {
|
|
78
|
+
transactions: AddressTxDTO[];
|
|
79
|
+
};
|
|
80
|
+
export declare type AddressTxDTO = {
|
|
81
|
+
txid: string;
|
|
82
|
+
block: Block;
|
|
83
|
+
time: number;
|
|
84
|
+
};
|
|
85
|
+
export declare type TxConfirmedStatus = {
|
|
86
|
+
network: string;
|
|
87
|
+
txid: string;
|
|
88
|
+
confirmations: number;
|
|
89
|
+
is_confirmed: boolean;
|
|
90
|
+
};
|
|
91
|
+
export declare type AddressUTXO = {
|
|
92
|
+
address: string;
|
|
93
|
+
block: Block;
|
|
94
|
+
txid: string;
|
|
95
|
+
index: number;
|
|
96
|
+
pkscript: string;
|
|
97
|
+
value: string;
|
|
98
|
+
tx_hex: string;
|
|
99
|
+
};
|
|
100
|
+
export declare type UnspentTxsDTO = {
|
|
101
|
+
outputs: AddressUTXO[];
|
|
102
|
+
};
|
|
103
|
+
export declare type TxUnspent = {
|
|
104
|
+
pkscript: string;
|
|
105
|
+
value: number;
|
|
106
|
+
address: string;
|
|
107
|
+
block: {
|
|
108
|
+
height: number;
|
|
109
|
+
position: number;
|
|
110
|
+
};
|
|
111
|
+
index: number;
|
|
112
|
+
txid: string;
|
|
113
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Haskoin API types
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HaskoinNetwork = void 0;
|
|
7
|
+
var HaskoinNetwork;
|
|
8
|
+
(function (HaskoinNetwork) {
|
|
9
|
+
HaskoinNetwork["BTC"] = "btc";
|
|
10
|
+
HaskoinNetwork["BTCTEST"] = "btctest";
|
|
11
|
+
HaskoinNetwork["BCH"] = "bch";
|
|
12
|
+
HaskoinNetwork["BCHTEST"] = "bchtest";
|
|
13
|
+
})(HaskoinNetwork = exports.HaskoinNetwork || (exports.HaskoinNetwork = {}));
|
|
14
|
+
//# sourceMappingURL=haskoin-api-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haskoin-api-types.js","sourceRoot":"","sources":["../../../src/providers/haskoin/haskoin-api-types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,qCAAmB,CAAA;IACnB,6BAAW,CAAA;IACX,qCAAmB,CAAA;AACrB,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module to interact with Haskoin API
|
|
3
|
+
*
|
|
4
|
+
* Doc (SwaggerHub) https://app.swaggerhub.com/apis/eligecode/blockchain-api/0.0.1-oas3
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
import { TxHash } from '@xchainjs/xchain-client';
|
|
8
|
+
import { BaseAmount } from '@xchainjs/xchain-util';
|
|
9
|
+
import { AddressBalance, AddressDTO, AddressParams, HaskoinNetwork, Transaction, TxConfirmedStatus, TxHashParams, TxUnspent } from './haskoin-api-types';
|
|
10
|
+
/**
|
|
11
|
+
* Get account from address.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} haskoinUrl The haskoin API url.
|
|
14
|
+
* @param {string} address The BCH address.
|
|
15
|
+
* @returns {AddressBalance}
|
|
16
|
+
*
|
|
17
|
+
* @throws {"failed to query account by a given address"} thrown if failed to query account by a given address
|
|
18
|
+
*/
|
|
19
|
+
export declare const getAccount: ({ haskoinUrl, network, address }: AddressParams) => Promise<AddressBalance>;
|
|
20
|
+
/**
|
|
21
|
+
* Get address information.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} haskoinUrl The haskoin node url.
|
|
24
|
+
* @param {string} network
|
|
25
|
+
* @param {string} address
|
|
26
|
+
* @returns {AddressDTO}
|
|
27
|
+
*/
|
|
28
|
+
export declare const getAddress: ({ haskoinUrl, network, address }: AddressParams) => Promise<AddressDTO>;
|
|
29
|
+
/**
|
|
30
|
+
* Get transaction by hash.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} haskoinUrl The haskoin API url.
|
|
33
|
+
* @param {string} txId The transaction id.
|
|
34
|
+
* @returns {Transaction}
|
|
35
|
+
*
|
|
36
|
+
* @throws {"failed to query transaction by a given hash"} thrown if failed to query transaction by a given hash
|
|
37
|
+
*/
|
|
38
|
+
export declare const getTx: ({ haskoinUrl, txId, network }: TxHashParams) => Promise<Transaction>;
|
|
39
|
+
/**
|
|
40
|
+
* Get raw transaction by hash.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} haskoinUrl The haskoin API url.
|
|
43
|
+
* @param {string} txId The transaction id.
|
|
44
|
+
* @returns {Transaction}
|
|
45
|
+
*
|
|
46
|
+
* @throws {"failed to query transaction by a given hash"} thrown if failed to query raw transaction by a given hash
|
|
47
|
+
*/
|
|
48
|
+
export declare const getRawTransaction: ({ haskoinUrl, network, txId }: TxHashParams) => Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* Get transactions
|
|
51
|
+
*
|
|
52
|
+
* @see https://haskoin.com/api#get-tx
|
|
53
|
+
*
|
|
54
|
+
* @param {string} haskoinUrl The haskoin node url.
|
|
55
|
+
* @param {string} network network id
|
|
56
|
+
* @param {string} hash The transaction hash.
|
|
57
|
+
* @returns {Transactions}
|
|
58
|
+
*/
|
|
59
|
+
export declare const getTxs: ({ address, haskoinUrl, network, limit, offset, }: {
|
|
60
|
+
address: string;
|
|
61
|
+
haskoinUrl: string;
|
|
62
|
+
network: HaskoinNetwork;
|
|
63
|
+
limit: number;
|
|
64
|
+
offset?: number;
|
|
65
|
+
}) => Promise<Transaction[]>;
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @param param
|
|
69
|
+
* @returns Returns BaseAmount
|
|
70
|
+
*/
|
|
71
|
+
export declare const getBalance: ({ haskoinUrl, haskoinNetwork, address, confirmedOnly, assetDecimals, }: {
|
|
72
|
+
haskoinUrl: string;
|
|
73
|
+
haskoinNetwork: string;
|
|
74
|
+
address: string;
|
|
75
|
+
confirmedOnly: boolean;
|
|
76
|
+
assetDecimals: number;
|
|
77
|
+
}) => Promise<BaseAmount>;
|
|
78
|
+
/**
|
|
79
|
+
* Get unspent transactions.
|
|
80
|
+
*
|
|
81
|
+
* @param {string} haskoinUrl The haskoin API url.
|
|
82
|
+
* @param {string} address The BCH address.
|
|
83
|
+
* @returns {TxUnspent[]}
|
|
84
|
+
*
|
|
85
|
+
* @throws {"failed to query unspent transactions"} thrown if failed to query unspent transactions
|
|
86
|
+
*/
|
|
87
|
+
export declare const getUnspentTxs: ({ haskoinUrl, network, address }: AddressParams) => Promise<TxUnspent[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Get Tx Confirmation status
|
|
90
|
+
*
|
|
91
|
+
* @param {string} haskoinUrl The haskoin node url.
|
|
92
|
+
* @param {Network} network
|
|
93
|
+
* @param {string} hash tx id
|
|
94
|
+
* @returns {TxConfirmedStatus}
|
|
95
|
+
*/
|
|
96
|
+
export declare const getIsTxConfirmed: ({ haskoinUrl, network, txId }: TxHashParams) => Promise<TxConfirmedStatus>;
|
|
97
|
+
/**
|
|
98
|
+
* Helper to get `confirmed` status of a tx.
|
|
99
|
+
*
|
|
100
|
+
* It will get it from cache or try to get it from haskoin (if not cached before)
|
|
101
|
+
*/
|
|
102
|
+
export declare const getConfirmedTxStatus: ({ txHash, haskoinUrl, network, }: {
|
|
103
|
+
haskoinUrl: string;
|
|
104
|
+
txHash: TxHash;
|
|
105
|
+
network: HaskoinNetwork;
|
|
106
|
+
}) => Promise<boolean>;
|
|
107
|
+
/**
|
|
108
|
+
* Get unspent txs and filter out pending UTXOs
|
|
109
|
+
*
|
|
110
|
+
* @see https://haskoin.com/api#get-unspent-tx
|
|
111
|
+
*
|
|
112
|
+
* @param {string} haskoinUrl The haskoin node url.
|
|
113
|
+
* @param {Network} network
|
|
114
|
+
* @param {string} address
|
|
115
|
+
* @returns {AddressUTXO[]}
|
|
116
|
+
*/
|
|
117
|
+
export declare const getConfirmedUnspentTxs: ({ haskoinUrl, network, address }: AddressParams) => Promise<TxUnspent[]>;
|
|
118
|
+
/**
|
|
119
|
+
* Helper to get `hex` of `Tx`
|
|
120
|
+
*
|
|
121
|
+
* It will try to get it from cache before requesting it from Sochain
|
|
122
|
+
*/
|
|
123
|
+
export declare const getTxHex: ({ haskoinUrl, network, txId }: TxHashParams) => Promise<string>;
|
|
124
|
+
/**
|
|
125
|
+
* Get unspent transactions.
|
|
126
|
+
*
|
|
127
|
+
* @param {string} haskoinUrl The haskoin API url.
|
|
128
|
+
* @param {string} address The BCH address.
|
|
129
|
+
* @returns {TxUnspent[]}
|
|
130
|
+
*
|
|
131
|
+
* @throws {"failed to query unspent transactions"} thrown if failed to query unspent transactions
|
|
132
|
+
*/
|
|
133
|
+
export declare const getUnspentTransactions: ({ haskoinUrl, network, address }: AddressParams) => Promise<TxUnspent[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Broadcast transaction.
|
|
136
|
+
*
|
|
137
|
+
* @see https://app.swaggerhub.com/apis/eligecode/blockchain-api/0.0.1-oas3#/blockchain/sendTransaction
|
|
138
|
+
*
|
|
139
|
+
* Note: Because of an Haskoin issue (@see https://github.com/haskoin/haskoin-store/issues/25),
|
|
140
|
+
* we need to broadcast same tx several times in case of `500` errors
|
|
141
|
+
* @see https://github.com/xchainjs/xchainjs-lib/issues/492
|
|
142
|
+
*
|
|
143
|
+
* @param {BroadcastTxParams} params
|
|
144
|
+
* @returns {TxHash} Transaction hash.
|
|
145
|
+
*/
|
|
146
|
+
export declare const broadcastTx: ({ txHex, haskoinUrl, haskoinNetwork, }: {
|
|
147
|
+
txHex: string;
|
|
148
|
+
haskoinUrl: string;
|
|
149
|
+
haskoinNetwork: string;
|
|
150
|
+
}) => Promise<TxHash>;
|