@thorwallet/xchain-bitcoin
Version:
Custom Bitcoin client and utilities used by XChainJS clients
43 lines • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConfirmedUnspentTxs = exports.getUnspentTxs = exports.getBalance = void 0;
const tslib_1 = require("tslib");
const lib_1 = require("@thorwallet/xchain-util/lib");
const axios_1 = tslib_1.__importDefault(require("axios"));
const sochain_api_1 = require("./sochain-api");
const utils_1 = require("./utils");
const SOCHAIN_API_URL = 'https://sochain.com/api/v2';
const getBalance = ({ haskoinUrl, address, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { data: { confirmed, unconfirmed }, } = yield axios_1.default.get(`${haskoinUrl}/address/${address}/balance`);
const confirmedAmount = lib_1.baseAmount(confirmed, utils_1.BTC_DECIMAL);
const unconfirmedAmount = lib_1.baseAmount(unconfirmed, utils_1.BTC_DECIMAL);
return confirmedAmount.plus(unconfirmedAmount);
});
exports.getBalance = getBalance;
const getUnspentTxs = ({ haskoinUrl, address, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { data: response } = yield axios_1.default.get(`${haskoinUrl}/address/${address}/unspent`);
return response;
});
exports.getUnspentTxs = getUnspentTxs;
const getConfirmedUnspentTxs = ({ haskoinUrl, address, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
try {
const allUtxos = yield exports.getUnspentTxs({ haskoinUrl, address });
const confirmedUTXOs = [];
yield Promise.all(allUtxos.map((tx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { is_confirmed: isTxConfirmed } = yield sochain_api_1.getIsTxConfirmed({
sochainUrl: SOCHAIN_API_URL,
network: 'mainnet',
hash: tx.txid,
});
if (isTxConfirmed) {
confirmedUTXOs.push(tx);
}
})));
return confirmedUTXOs;
}
catch (error) {
return Promise.reject(error);
}
});
exports.getConfirmedUnspentTxs = getConfirmedUnspentTxs;
//# sourceMappingURL=haskoin-api.js.map