send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
74 lines • 7.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TERRAHandler = exports.TerraNetwork = void 0;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const terra_js_1 = require("@terra-money/terra.js");
const promiEvent_1 = require("../../lib/promiEvent");
const utils_1 = require("../../lib/utils");
var TerraNetwork;
(function (TerraNetwork) {
TerraNetwork["Bombay"] = "bombay-12";
TerraNetwork["Columbus"] = "columbus-3";
})(TerraNetwork = exports.TerraNetwork || (exports.TerraNetwork = {}));
const toDenom = (asset) => "uluna";
class TERRAHandler {
constructor(privateKey, network, options = {}, sharedState) {
this.decimals = 6;
// Returns whether or not this can handle the asset
this.handlesAsset = (asset) => typeof asset === "string" &&
["LUNA"].indexOf(asset.toUpperCase()) !== -1;
this.address = (asset, _options = {}) => {
if (!this.handlesAsset(asset)) {
throw new Error(`Asset ${asset} not supported.`);
}
return this.key.accAddress;
};
// Balance
this.getBalance = async (asset, options = {}) => (await this.getBalanceInSats(asset, options)).dividedBy(new bignumber_js_1.default(10).exponentiatedBy(this.decimals));
this.getBalanceInSats = async (asset, options = {}) => {
if (!this.handlesAsset(asset)) {
throw new Error(`Asset ${asset} not supported.`);
}
const balances = (await this.client.bank.balance((options && options.address) || (await this.address(asset))))[0];
const balance = balances.get(toDenom(asset));
return new bignumber_js_1.default(balance ? balance.amount.toFixed() : 0);
};
// Transfer
this.send = (to, value, asset, options = {}) => this.sendSats(to, value.times(new bignumber_js_1.default(10).exponentiatedBy(this.decimals)), asset, options);
this.sendSats = (to, value, asset, options = {}) => {
const promiEvent = (0, promiEvent_1.newPromiEvent)();
(async () => {
const address = await this.address(asset);
const send = new terra_js_1.MsgSend(address, to, { uluna: value.toFixed() });
const signedTx = await this.wallet.createAndSignTx({
msgs: [send],
memo: options.memo,
});
const result = await this.client.tx.broadcast(signedTx);
const txHash = result.txhash;
promiEvent.emit("transactionHash", txHash);
promiEvent.resolve(txHash);
})().catch((error) => {
promiEvent.reject(error);
});
return promiEvent;
};
this.network =
network === "mainnet" ? TerraNetwork.Columbus : TerraNetwork.Bombay;
const client = sharedState.client ||
new terra_js_1.LCDClient({
URL: options && options.terra ? options.terra.URL : "",
chainID: this.network,
});
const key = new terra_js_1.RawKey(Buffer.from((0, utils_1.strip0x)(privateKey), "hex"));
const wallet = client.wallet(key);
this.client = client;
this.wallet = wallet;
this.key = key;
}
}
exports.TERRAHandler = TERRAHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVEVSUkFIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hhbmRsZXJzL1RFUlJBL1RFUlJBSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBcUM7QUFFckMsb0RBTStCO0FBRS9CLHFEQUFpRTtBQUNqRSwyQ0FBMEM7QUFHMUMsSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3BCLG9DQUFvQixDQUFBO0lBQ3BCLHVDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFIVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUd2QjtBQWdCRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDO0FBRTNDLE1BQWEsWUFBWTtJQVlyQixZQUNJLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixVQUE4QixFQUFFLEVBQ2hDLFdBQWlCO1FBVkosYUFBUSxHQUFHLENBQUMsQ0FBQztRQStCOUIsbURBQW1EO1FBQ25DLGlCQUFZLEdBQUcsQ0FBQyxLQUFZLEVBQVcsRUFBRSxDQUNyRCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpDLFlBQU8sR0FBRyxDQUN0QixLQUFZLEVBQ1osV0FBMkIsRUFBRSxFQUN2QixFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGlCQUFpQixDQUFDLENBQUM7YUFDcEQ7WUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQy9CLENBQUMsQ0FBQztRQUVGLFVBQVU7UUFDTSxlQUFVLEdBQUcsS0FBSyxFQUM5QixLQUFZLEVBQ1osVUFBMEIsRUFBRSxF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