UNPKG

@ledgerhq/coin-stellar

Version:
75 lines 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isAddressValid = exports.isAccountMultiSign = exports.isMemoValid = exports.getAssetCodeIssuer = exports.getAmountValue = exports.STELLAR_BURN_ADDRESS = void 0; const bignumber_js_1 = require("bignumber.js"); const stellar_sdk_1 = require("@stellar/stellar-sdk"); const helpers_1 = require("@ledgerhq/coin-framework/account/helpers"); const network_1 = require("../network"); exports.STELLAR_BURN_ADDRESS = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF"; function getAmountValue(account, transaction, fees) { // Asset if (transaction.subAccountId) { const asset = (0, helpers_1.findSubAccountById)(account, transaction.subAccountId); return transaction.useAllAmount ? new bignumber_js_1.BigNumber(asset.spendableBalance) : transaction.amount; } // Native return transaction.useAllAmount && transaction.networkInfo ? bignumber_js_1.BigNumber.max(account.spendableBalance.minus(fees), 0) : transaction.amount; } exports.getAmountValue = getAmountValue; function getAssetCodeIssuer(tr) { if (tr.subAccountId) { const assetString = tr.subAccountId.split("+")[1]; return assetString.split(":"); } return [tr.assetCode || "", tr.assetIssuer || ""]; } exports.getAssetCodeIssuer = getAssetCodeIssuer; function isMemoValid(memoType, memoValue) { switch (memoType) { case "MEMO_TEXT": if (memoValue.length > 28) { return false; } break; case "MEMO_ID": if (new bignumber_js_1.BigNumber(memoValue.toString()).isNaN()) { return false; } break; case "MEMO_HASH": case "MEMO_RETURN": if (!memoValue.length || memoValue.length !== 64) { return false; } break; } return true; } exports.isMemoValid = isMemoValid; async function isAccountMultiSign(account) { const signers = await (0, network_1.fetchSigners)(account); return signers.length > 1; } exports.isAccountMultiSign = isAccountMultiSign; /** * Returns true if address is valid, false if it's invalid (can't parse or wrong checksum) * * @param {*} address */ function isAddressValid(address) { if (!address) return false; // FIXME Workaround for burn address, see https://ledgerhq.atlassian.net/browse/LIVE-4014 if (address === exports.STELLAR_BURN_ADDRESS) return false; try { return stellar_sdk_1.StrKey.isValidEd25519PublicKey(address) || stellar_sdk_1.StrKey.isValidMed25519PublicKey(address); } catch (err) { return false; } } exports.isAddressValid = isAddressValid; //# sourceMappingURL=logic.js.map