UNPKG

@bithomp/xrpl-api

Version:

A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger

138 lines (137 loc) 7.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccountFields = exports.SignerListFlagsKeys = exports.AccountSetFlags = exports.XahauAccountSetAsfFlags = exports.XahauAccountRootFlagsKeys = exports.XRPLAccountRootFlagsKeys = exports.AccountRootFlagsKeys = exports.XahauAccountRootFlags = void 0; exports.getAccountRootFlagsKeys = getAccountRootFlagsKeys; exports.getSettings = getSettings; exports.parseAccountFlags = parseAccountFlags; exports.parseAccountFields = parseAccountFields; exports.parseSignerListFlags = parseSignerListFlags; const xrpl_1 = require("xrpl"); const bignumber_js_1 = __importDefault(require("bignumber.js")); const common_1 = require("../common"); const flags_1 = require("../parse/ledger/flags"); const client_1 = require("../client"); var XahauAccountRootFlags; (function (XahauAccountRootFlags) { XahauAccountRootFlags[XahauAccountRootFlags["lsfTshCollect"] = 33554432] = "lsfTshCollect"; XahauAccountRootFlags[XahauAccountRootFlags["lsfURITokenIssuer"] = 1073741824] = "lsfURITokenIssuer"; XahauAccountRootFlags[XahauAccountRootFlags["lsfDisallowIncomingRemit"] = 2147483648] = "lsfDisallowIncomingRemit"; })(XahauAccountRootFlags || (exports.XahauAccountRootFlags = XahauAccountRootFlags = {})); exports.AccountRootFlagsKeys = { passwordSpent: xrpl_1.LedgerEntry.AccountRootFlags.lsfPasswordSpent, requireDestTag: xrpl_1.LedgerEntry.AccountRootFlags.lsfRequireDestTag, requireAuth: xrpl_1.LedgerEntry.AccountRootFlags.lsfRequireAuth, depositAuth: xrpl_1.LedgerEntry.AccountRootFlags.lsfDepositAuth, disallowXRP: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisallowXRP, disableMaster: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisableMaster, noFreeze: xrpl_1.LedgerEntry.AccountRootFlags.lsfNoFreeze, globalFreeze: xrpl_1.LedgerEntry.AccountRootFlags.lsfGlobalFreeze, defaultRipple: xrpl_1.LedgerEntry.AccountRootFlags.lsfDefaultRipple, disallowIncomingNFTokenOffer: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisallowIncomingNFTokenOffer, disallowIncomingCheck: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisallowIncomingCheck, disallowIncomingPayChan: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisallowIncomingPayChan, disallowIncomingTrustline: xrpl_1.LedgerEntry.AccountRootFlags.lsfDisallowIncomingTrustline, }; exports.XRPLAccountRootFlagsKeys = { ...exports.AccountRootFlagsKeys, allowTrustLineClawback: xrpl_1.LedgerEntry.AccountRootFlags.lsfAllowTrustLineClawback, }; exports.XahauAccountRootFlagsKeys = { ...exports.AccountRootFlagsKeys, tshCollect: XahauAccountRootFlags.lsfTshCollect, uriTokenIssuer: XahauAccountRootFlags.lsfURITokenIssuer, disallowIncomingRemit: XahauAccountRootFlags.lsfDisallowIncomingRemit, }; function getAccountRootFlagsKeys() { const nativeCurrency = (0, client_1.getNativeCurrency)(); if (nativeCurrency === common_1.XAHAU_NATIVE_CURRENCY) { return exports.XahauAccountRootFlagsKeys; } else { return exports.XRPLAccountRootFlagsKeys; } } var XahauAccountSetAsfFlags; (function (XahauAccountSetAsfFlags) { XahauAccountSetAsfFlags[XahauAccountSetAsfFlags["asfTshCollect"] = 11] = "asfTshCollect"; XahauAccountSetAsfFlags[XahauAccountSetAsfFlags["asfDisallowIncomingRemit"] = 16] = "asfDisallowIncomingRemit"; })(XahauAccountSetAsfFlags || (exports.XahauAccountSetAsfFlags = XahauAccountSetAsfFlags = {})); exports.AccountSetFlags = { requireDestinationTag: xrpl_1.AccountSetAsfFlags.asfRequireDest, requireAuthorization: xrpl_1.AccountSetAsfFlags.asfRequireAuth, depositAuth: xrpl_1.AccountSetAsfFlags.asfDepositAuth, disallowIncomingXRP: xrpl_1.AccountSetAsfFlags.asfDisallowXRP, disableMasterKey: xrpl_1.AccountSetAsfFlags.asfDisableMaster, enableTransactionIDTracking: xrpl_1.AccountSetAsfFlags.asfAccountTxnID, noFreeze: xrpl_1.AccountSetAsfFlags.asfNoFreeze, globalFreeze: xrpl_1.AccountSetAsfFlags.asfGlobalFreeze, defaultRipple: xrpl_1.AccountSetAsfFlags.asfDefaultRipple, authorizedMinter: xrpl_1.AccountSetAsfFlags.asfAuthorizedNFTokenMinter, disallowIncomingNFTokenOffer: xrpl_1.AccountSetAsfFlags.asfDisallowIncomingNFTokenOffer, disallowIncomingCheck: xrpl_1.AccountSetAsfFlags.asfDisallowIncomingCheck, disallowIncomingPayChan: xrpl_1.AccountSetAsfFlags.asfDisallowIncomingPayChan, disallowIncomingTrustline: xrpl_1.AccountSetAsfFlags.asfDisallowIncomingTrustline, allowTrustLineClawback: xrpl_1.AccountSetAsfFlags.asfAllowTrustLineClawback, tshCollect: XahauAccountSetAsfFlags.asfTshCollect, disallowIncomingRemit: XahauAccountSetAsfFlags.asfDisallowIncomingRemit, }; exports.SignerListFlagsKeys = { oneOwnerCount: xrpl_1.LedgerEntry.SignerListFlags.lsfOneOwnerCount, }; exports.AccountFields = { EmailHash: { name: "emailHash", encoding: "hex", length: 32, defaults: "00000000000000000000000000000000" }, MessageKey: { name: "messageKey" }, Domain: { name: "domain", encoding: "hex" }, TransferRate: { name: "transferRate", defaults: 0, shift: 9 }, TickSize: { name: "tickSize", defaults: 0 }, RegularKey: { name: "regularKey" }, NFTokenMinter: { name: "nftokenMinter" }, WalletLocator: { name: "walletLocator" }, }; function getSettings(accountInfo, excludeFalse = true) { const parsedFlags = parseAccountFlags(accountInfo.Flags, { excludeFalse }); const parsedFields = parseAccountFields(accountInfo, { excludeFalse }); return { ...parsedFlags, ...parsedFields, }; } function parseAccountFlags(value, options = {}) { return (0, flags_1.parseFlags)(value, getAccountRootFlagsKeys(), options); } function parseAccountFields(accountInfo, options = {}) { const settings = {}; if (accountInfo.hasOwnProperty("signer_lists")) { if (accountInfo.Flags & exports.AccountRootFlagsKeys.disableMaster && common_1.BLACKHOLE_ACCOUNTS.includes(accountInfo.RegularKey) && accountInfo.signer_lists?.length === 0) { settings.blackholed = true; } else if (!options.excludeFalse) { settings.blackholed = false; } } for (const fieldName in exports.AccountFields) { const fieldValue = accountInfo[fieldName]; if (fieldValue != null) { const info = exports.AccountFields[fieldName]; settings[info.name] = parseField(info, fieldValue); } } function parseField(info, value) { if (info.encoding === "hex" && !info.length) { return Buffer.from(value, "hex").toString("ascii"); } if (info.shift) { return new bignumber_js_1.default(value).shiftedBy(-info.shift).toNumber(); } return value; } return settings; } function parseSignerListFlags(value, options = {}) { return (0, flags_1.parseFlags)(value, exports.SignerListFlagsKeys, options); }