xrpl
Version:
A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser
54 lines • 3.29 kB
JavaScript
;
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