@bithomp/xrpl-api
Version:
A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger
138 lines (137 loc) • 7.06 kB
JavaScript
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);
}
;