UNPKG

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
"use strict"; /* 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;