thorchain.js
Version:
Thorchain.js is a libary that lets you interact with mutiple blockchains perform swaps, etc
94 lines (93 loc) • 3.83 kB
JavaScript
;
/* YOU WILL FIND ALOT OF TS-IGNORE's THROUGHOUT THIS PROJECT. YOU CAN FIX THEM IF YOU WANT I DONT REALLY CARE */
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bitcoin = void 0;
const xchain_client_1 = require("@xchainjs/xchain-client");
const xchain_bitcoin_1 = require("@xchainjs/xchain-bitcoin");
const xchain_util_1 = require("@xchainjs/xchain-util");
class Bitcoin {
constructor({ network = xchain_client_1.Network.Mainnet, phrase, }) {
this.chain = xchain_util_1.BTCChain;
this.client = new xchain_bitcoin_1.Client({
network,
phrase,
});
}
getClient() {
return this.client;
}
get getAddress() {
return this.client.getAddress();
}
getBalance(address) {
return __awaiter(this, void 0, void 0, function* () {
if (address) {
let bal = yield this.client.getBalance(address).catch((err) => {
return "invalid address";
});
if (bal === "invalid address") {
return new Error("Invalid address");
}
// @ts-ignore
let assetAmount = (0, xchain_util_1.baseToAsset)(bal[0].amount).amount();
return {
// @ts-ignore
base: bal[0].amount.amount().toString(),
asset: assetAmount.toString(),
};
}
else {
let addy = this.getAddress;
let balance = yield this.client.getBalance(addy).catch((err) => {
return "invalid address";
});
if (balance === "invalid address") {
return new Error("Invalid address");
}
// @ts-ignore
let assetAmount = (0, xchain_util_1.baseToAsset)(balance[0].amount).amount();
return {
// @ts-ignore
base: balance[0].amount.amount().toString(),
asset: assetAmount.toString(),
};
}
});
}
assetToBase(amount) {
if (isNaN(amount)) {
return new Error("Amount is not a number");
}
// @ts-ignore
return (0, xchain_util_1.assetToBase)((0, xchain_util_1.assetAmount)(amount, 8));
}
baseToAsset(amount) {
return (0, xchain_util_1.baseToAsset)(amount);
}
transfer(baseAmount, receiver, memo) {
return __awaiter(this, void 0, void 0, function* () {
if (!memo) {
memo = "";
}
const { fast, fastest, average } = yield this.client.getFeeRates();
const txid = yield this.client.transfer({
asset: xchain_util_1.AssetBTC,
recipient: receiver,
amount: baseAmount,
memo: memo,
feeRate: fast,
});
return txid;
});
}
}
exports.Bitcoin = Bitcoin;