UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

71 lines 7.55 kB
import BigNumber from "bignumber.js"; import { LCDClient, MsgSend, RawKey, } from "@terra-money/terra.js"; import { newPromiEvent } from "../../lib/promiEvent"; import { strip0x } from "../../lib/utils"; export var TerraNetwork; (function (TerraNetwork) { TerraNetwork["Bombay"] = "bombay-12"; TerraNetwork["Columbus"] = "columbus-3"; })(TerraNetwork || (TerraNetwork = {})); const toDenom = (asset) => "uluna"; export class TERRAHandler { network; decimals = 6; client; wallet; key; constructor(privateKey, network, options = {}, sharedState) { this.network = network === "mainnet" ? TerraNetwork.Columbus : TerraNetwork.Bombay; const client = sharedState.client || new LCDClient({ URL: options && options.terra ? options.terra.URL : "", chainID: this.network, }); const key = new RawKey(Buffer.from(strip0x(privateKey), "hex")); const wallet = client.wallet(key); this.client = client; this.wallet = wallet; this.key = key; } // Returns whether or not this can handle the asset handlesAsset = (asset) => typeof asset === "string" && ["LUNA"].indexOf(asset.toUpperCase()) !== -1; address = (asset, _options = {}) => { if (!this.handlesAsset(asset)) { throw new Error(`Asset ${asset} not supported.`); } return this.key.accAddress; }; // Balance getBalance = async (asset, options = {}) => (await this.getBalanceInSats(asset, options)).dividedBy(new BigNumber(10).exponentiatedBy(this.decimals)); 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(balance ? balance.amount.toFixed() : 0); }; // Transfer send = (to, value, asset, options = {}) => this.sendSats(to, value.times(new BigNumber(10).exponentiatedBy(this.decimals)), asset, options); sendSats = (to, value, asset, options = {}) => { const promiEvent = newPromiEvent(); (async () => { const address = await this.address(asset); const send = new 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; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVEVSUkFIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hhbmRsZXJzL1RFUlJBL1RFUlJBSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFFckMsT0FBTyxFQUVILFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxHQUVULE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcxQyxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3BCLG9DQUFvQixDQUFBO0lBQ3BCLHVDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QjtBQWdCRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDO0FBRTNDLE1BQU0sT0FBTyxZQUFZO0lBSUosT0FBTyxDQUFlO0lBRXRCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFdkIsTUFBTSxDQUFZO0lBQ2xCLE1BQU0sQ0FBUztJQUNmLEdBQUcsQ0FBUztJQUVuQixZQUNJLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixVQUE4QixFQUFFLEVBQ2hDLFdBQWlCO1FBRWpCLElBQUksQ0FBQyxPQUFPO1lBQ1IsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUV4RSxNQUFNLE1BQU0sR0FDUixXQUFXLENBQUMsTUFBTTtZQUNsQixJQUFJLFNBQVMsQ0FBQztnQkFDVixHQUFHLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDeEIsQ0FBQyxDQUFDO1FBRVAsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtREFBbUQ7SUFDbkMsWUFBWSxHQUFHLENBQUMsS0FBWSxFQUFXLEVBQUUsQ0FDckQsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVqQyxPQUFPLEdBQUcsQ0FDdEIsS0FBWSxFQUNaLFdBQTJCLEVBQUUsRUFDdkIsRUFBRTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGlCQUFpQixDQUFDLENBQUM7U0FDcEQ7UUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUVGLFVBQVU7SUFDTSxVQUFVLEdBQUcsS0FBSyxFQUM5QixLQUFZLEVBQ1osVUFBMEIsRUFBRSxFQUNWLEVBQUUsQ0FDcEIsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ25ELElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ25ELENBQUM7SUFFVSxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3BDLEtBQVksRUFDWixVQUEwQixFQUFFLEVBQ1YsRUFBRTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FDYixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDMUIsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlELENBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNMLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQWUsQ0FBQyxDQUFDLENBQUM7UUFFdkQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQztJQUVGLFdBQVc7SUFDSyxJQUFJLEdBQUcsQ0FDbkIsRUFBVSxFQUNWLEtBQWdCLEVBQ2hCLEtBQVksRUFDWixVQUFxQixFQUFFLEVBQ0wsRUFBRSxDQUNwQixJQUFJLENBQUMsUUFBUSxDQUNULEVBQUUsRUFDRixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDN0QsS0FBSyxFQUNMLE9BQU8sQ0FDVixDQUFDO0lBRVUsUUFBUSxHQUFHLENBQ3ZCLEVBQVUsRUFDVixLQUFnQixFQUNoQixLQUFZLEVBQ1osVUFBcUIsRUFBRSxFQUNMLEVBQUU7UUFDcEIsTUFBTSxVQUFVLEdBQUcsYUFBYSxFQUFVLENBQUM7UUFFM0MsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNSLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQyxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDL0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTthQUNyQixDQUFDLENBQUM7WUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBRTdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFM0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDLENBQUM7Q0FDTCJ9