send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
81 lines • 7.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BitcoinDotCom = exports.broadcastTransaction = void 0;
const axios_1 = __importDefault(require("axios"));
const utxo_1 = require("../../lib/utxo");
const timeout_1 = require("./timeout");
const endpoint = (testnet) => testnet ? "https://trest.bitcoin.com/v2/" : "https://rest.bitcoin.com/v2/";
const endpointV2 = (testnet) => testnet
? "https://explorer-tbch.api.bitcoin.com/tbch/v1"
: "https://explorer.api.bitcoin.com/bch/v1";
const fetchUTXO = (testnet) => async (txHash, vOut) => {
const url = `${endpointV2(testnet)}/tx/${txHash}`;
const response = await axios_1.default.get(`${url}`, {
timeout: timeout_1.DEFAULT_TIMEOUT,
});
const utxo = response.data;
return (0, utxo_1.fixUTXO)({
txHash,
amount: parseFloat(utxo.vout[vOut].value),
// script_hex: utxo.scriptPubKey,
vOut,
confirmations: utxo.confirmations,
}, 8);
};
const fetchUTXOs = (testnet) => async (address, confirmations) => {
const url = `${endpointV2(testnet)}/addr/${address}/utxo`;
const response = await axios_1.default.get(url, {
timeout: timeout_1.DEFAULT_TIMEOUT,
});
return (0, utxo_1.fixUTXOs)(response.data
.map((utxo) => ({
txHash: utxo.txid,
amount: utxo.amount,
// script_hex: utxo.scriptPubKey,
vOut: utxo.vout,
confirmations: utxo.confirmations,
}))
.filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations), 8).sort(utxo_1.sortUTXOs);
};
const fetchTXs = (testnet) => async (address, confirmations) => {
const url = `${endpoint(testnet).replace(/\/$/, "")}/address/transactions/${address}`;
const { data } = await axios_1.default.get(url, {
timeout: timeout_1.DEFAULT_TIMEOUT,
});
const received = [];
for (const tx of data.txs) {
for (let i = 0; i < tx.vout.length; i++) {
const vout = tx.vout[i];
if (vout.scriptPubKey.addresses.indexOf(address) >= 0) {
received.push({
txHash: tx.txid,
amount: (0, utxo_1.fixValue)(parseFloat(vout.value), 8),
vOut: i,
confirmations: tx.confirmations,
});
}
}
}
return received
.filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations)
.sort(utxo_1.sortUTXOs);
};
const broadcastTransaction = (testnet) => async (txHex) => {
const url = `${endpoint(testnet).replace(/\/$/, "")}/rawtransactions/sendRawTransaction`;
const response = await axios_1.default.post(url, { hexes: [txHex] }, { timeout: timeout_1.DEFAULT_TIMEOUT });
if (response.data.error) {
throw new Error(response.data.error);
}
return response.data[0];
};
exports.broadcastTransaction = broadcastTransaction;
exports.BitcoinDotCom = {
fetchUTXO,
fetchUTXOs,
fetchTXs,
broadcastTransaction: exports.broadcastTransaction,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pbkRvdENvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vYXBpcy9iaXRjb2luRG90Q29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQix5Q0FBOEU7QUFFOUUsdUNBQTRDO0FBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQ2xDLE9BQU8sQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO0FBRS9FLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQ3BDLE9BQU87SUFDSCxDQUFDLENBQUMsK0NBQStDO0lBQ2pELENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQztBQUVwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFDekMsTUFBYyxFQUNkLElBQVksRUFDQyxFQUFFO0lBQ2YsTUFBTSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sTUFBTSxFQUFFLENBQUM7SUFFbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFrQixHQUFHLEdBQUcsRUFBRSxFQUFFO1FBQ3hELE9BQU8sRUFBRSx5QkFBZTtLQUMzQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBRTNCLE9BQU8sSUFBQSxjQUFPLEVBQ1Y7UUFDSSxNQUFNO1FBQ04sTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6QyxpQ0FBaUM7UUFDakMsSUFBSTtRQUNKLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtLQUNwQyxFQUNELENBQUMsQ0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcs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