UNPKG

@ledgerhq/coin-mina

Version:
91 lines 3.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNonce = exports.getFees = exports.broadcastTransaction = exports.getTransactions = exports.getBlockInfo = exports.getAccount = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const rosetta_1 = require("./rosetta"); const consts_1 = require("../consts"); const common_logic_1 = require("../common-logic"); const logs_1 = require("@ledgerhq/logs"); const getAccount = async (address) => { const networkStatus = await (0, rosetta_1.fetchNetworkStatus)(); let balance = new bignumber_js_1.default(0); let spendableBalance = new bignumber_js_1.default(0); try { const resp = await (0, rosetta_1.fetchAccountBalance)(address); balance = new bignumber_js_1.default(resp.balances[0].metadata.total_balance); spendableBalance = new bignumber_js_1.default(resp.balances[0].metadata.liquid_balance); } catch (e) { (0, logs_1.log)("info", "[mina] getAccount error:", { address, error: e, }); // fail is expected for when account has no balance and no transactions /* empty */ } return { blockHeight: networkStatus.current_block_identifier.index, balance, spendableBalance, }; }; exports.getAccount = getAccount; const getBlockInfo = async (blockHeight) => { const data = await (0, rosetta_1.rosettaGetBlockInfo)(blockHeight); return data; }; exports.getBlockInfo = getBlockInfo; const getTransactions = async (address, offset = 0) => { const txns = await (0, rosetta_1.fetchAccountTransactions)(address, offset); return txns.sort((a, b) => b.timestamp - a.timestamp); }; exports.getTransactions = getTransactions; const broadcastTransaction = async (txn) => { const { nonce, receiverAddress, amount, fee, memo, senderAddress } = txn.transaction; const blob = { signature: txn.signature, payment: { to: receiverAddress, from: senderAddress, fee: fee.toFixed(), token: consts_1.MINA_TOKEN_ID, nonce: nonce.toFixed(), memo: memo ?? null, amount: amount.toFixed(), valid_until: null, }, stake_delegation: null, }; const { data } = await (0, rosetta_1.rosettaSubmitTransaction)(JSON.stringify(blob)); return data.transaction_identifier.hash; }; exports.broadcastTransaction = broadcastTransaction; const getFees = async (txn, address) => { if (!txn.amount || !txn.recipient || !(0, common_logic_1.isValidAddress)(txn.recipient)) { return { fee: txn.fees.fee, accountCreationFee: new bignumber_js_1.default(0) }; } const { data } = await (0, rosetta_1.fetchTransactionMetadata)(address, txn.recipient, txn.fees.fee.toNumber(), txn.amount.toNumber()); const accountCreationFee = data.metadata.account_creation_fee ? new bignumber_js_1.default(data.metadata.account_creation_fee) : new bignumber_js_1.default(0); return { fee: new bignumber_js_1.default(data.suggested_fee[0].value), accountCreationFee, }; }; exports.getFees = getFees; const getNonce = async (txn, address) => { if (!txn.recipient || !(0, common_logic_1.isValidAddress)(txn.recipient)) { return txn.nonce; } if (!txn.amount || !txn.fees) { return txn.nonce; } const { data } = await (0, rosetta_1.fetchTransactionMetadata)(address, txn.recipient, txn.fees.fee.toNumber(), txn.amount.toNumber()); return parseInt(data.metadata.nonce); }; exports.getNonce = getNonce; //# sourceMappingURL=index.js.map