UNPKG

@transia/xrpl

Version:

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

60 lines 3.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateVaultCreate = exports.VaultCreateFlags = exports.VaultWithdrawalPolicy = void 0; const errors_1 = require("../../errors"); const utils_1 = require("../utils"); const common_1 = require("./common"); var VaultWithdrawalPolicy; (function (VaultWithdrawalPolicy) { VaultWithdrawalPolicy[VaultWithdrawalPolicy["vaultStrategyFirstComeFirstServe"] = 1] = "vaultStrategyFirstComeFirstServe"; })(VaultWithdrawalPolicy || (exports.VaultWithdrawalPolicy = VaultWithdrawalPolicy = {})); var VaultCreateFlags; (function (VaultCreateFlags) { VaultCreateFlags[VaultCreateFlags["tfVaultPrivate"] = 65536] = "tfVaultPrivate"; VaultCreateFlags[VaultCreateFlags["tfVaultShareNonTransferable"] = 131072] = "tfVaultShareNonTransferable"; })(VaultCreateFlags || (exports.VaultCreateFlags = VaultCreateFlags = {})); function validateVaultCreate(tx) { (0, common_1.validateBaseTransaction)(tx); (0, common_1.validateRequiredField)(tx, 'Asset', common_1.isCurrency); (0, common_1.validateOptionalField)(tx, 'Data', common_1.isString); (0, common_1.validateOptionalField)(tx, 'AssetsMaximum', common_1.isXRPLNumber); (0, common_1.validateOptionalField)(tx, 'MPTokenMetadata', common_1.isString); (0, common_1.validateOptionalField)(tx, 'WithdrawalPolicy', common_1.isNumber); (0, common_1.validateOptionalField)(tx, 'DomainID', common_1.isString); if (tx.Data !== undefined) { const dataHex = tx.Data; if (!(0, utils_1.isHex)(dataHex)) { throw new errors_1.ValidationError('VaultCreate: Data must be a valid hex string'); } const dataByteLength = dataHex.length / 2; if (dataByteLength > common_1.VAULT_DATA_MAX_BYTE_LENGTH) { throw new errors_1.ValidationError(`VaultCreate: Data exceeds ${common_1.VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`); } } if (tx.MPTokenMetadata !== undefined) { const metaHex = tx.MPTokenMetadata; if (!(0, utils_1.isHex)(metaHex)) { throw new errors_1.ValidationError('VaultCreate: MPTokenMetadata must be a valid non-empty hex string'); } const metaByteLength = metaHex.length / 2; if (metaByteLength > common_1.MAX_MPT_META_BYTE_LENGTH) { throw new errors_1.ValidationError(`VaultCreate: MPTokenMetadata exceeds ${common_1.MAX_MPT_META_BYTE_LENGTH} bytes (actual: ${metaByteLength})`); } } if (tx.DomainID !== undefined && !(0, utils_1.hasFlag)(tx, VaultCreateFlags.tfVaultPrivate, 'tfVaultPrivate')) { throw new errors_1.ValidationError('VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set.'); } if (tx.MPTokenMetadata != null) { const validationMessages = (0, common_1.validateMPTokenMetadata)(tx.MPTokenMetadata); if (validationMessages.length > 0) { const message = [ common_1.MPT_META_WARNING_HEADER, ...validationMessages.map((msg) => `- ${msg}`), ].join('\n'); console.warn(message); } } } exports.validateVaultCreate = validateVaultCreate; //# sourceMappingURL=vaultCreate.js.map