UNPKG

xrpl

Version:

A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser

54 lines 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateMPTokenIssuanceCreate = exports.MPTokenIssuanceCreateFlags = void 0; const errors_1 = require("../../errors"); const utils_1 = require("../utils"); const common_1 = require("./common"); const MAX_AMT = '9223372036854775807'; const MAX_TRANSFER_FEE = 50000; var MPTokenIssuanceCreateFlags; (function (MPTokenIssuanceCreateFlags) { MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTCanLock"] = 2] = "tfMPTCanLock"; MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTRequireAuth"] = 4] = "tfMPTRequireAuth"; MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTCanEscrow"] = 8] = "tfMPTCanEscrow"; MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTCanTrade"] = 16] = "tfMPTCanTrade"; MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTCanTransfer"] = 32] = "tfMPTCanTransfer"; MPTokenIssuanceCreateFlags[MPTokenIssuanceCreateFlags["tfMPTCanClawback"] = 64] = "tfMPTCanClawback"; })(MPTokenIssuanceCreateFlags || (exports.MPTokenIssuanceCreateFlags = MPTokenIssuanceCreateFlags = {})); function validateMPTokenIssuanceCreate(tx) { var _a; (0, common_1.validateBaseTransaction)(tx); (0, common_1.validateOptionalField)(tx, 'MaximumAmount', common_1.isString); (0, common_1.validateOptionalField)(tx, 'MPTokenMetadata', common_1.isString); (0, common_1.validateOptionalField)(tx, 'TransferFee', common_1.isNumber); (0, common_1.validateOptionalField)(tx, 'AssetScale', common_1.isNumber); if (typeof tx.MPTokenMetadata === 'string' && tx.MPTokenMetadata === '') { throw new errors_1.ValidationError('MPTokenIssuanceCreate: MPTokenMetadata must not be empty string'); } if (typeof tx.MPTokenMetadata === 'string' && !(0, utils_1.isHex)(tx.MPTokenMetadata)) { throw new errors_1.ValidationError('MPTokenIssuanceCreate: MPTokenMetadata must be in hex format'); } if (typeof tx.MaximumAmount === 'string') { if (!utils_1.INTEGER_SANITY_CHECK.exec(tx.MaximumAmount)) { throw new errors_1.ValidationError('MPTokenIssuanceCreate: Invalid MaximumAmount'); } else if (BigInt(tx.MaximumAmount) > BigInt(MAX_AMT) || BigInt(tx.MaximumAmount) < BigInt(`0`)) { throw new errors_1.ValidationError('MPTokenIssuanceCreate: MaximumAmount out of range'); } } if (typeof tx.TransferFee === 'number') { const flags = tx.Flags; const isTfMPTCanTransfer = typeof flags === 'number' ? (0, utils_1.isFlagEnabled)(flags, MPTokenIssuanceCreateFlags.tfMPTCanTransfer) : (_a = flags.tfMPTCanTransfer) !== null && _a !== void 0 ? _a : false; if (tx.TransferFee < 0 || tx.TransferFee > MAX_TRANSFER_FEE) { throw new errors_1.ValidationError(`MPTokenIssuanceCreate: TransferFee must be between 0 and ${MAX_TRANSFER_FEE}`); } if (tx.TransferFee && !isTfMPTCanTransfer) { throw new errors_1.ValidationError('MPTokenIssuanceCreate: TransferFee cannot be provided without enabling tfMPTCanTransfer flag'); } } } exports.validateMPTokenIssuanceCreate = validateMPTokenIssuanceCreate; //# sourceMappingURL=MPTokenIssuanceCreate.js.map