UNPKG

@signumjs/core

Version:

Principal package with functions and models for building Signum Network applications.

55 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transferMultipleAssets = void 0; const constants_1 = require("../../../constants"); const createParametersFromAttachment_1 = require("../../../internal/createParametersFromAttachment"); const signIfPrivateKey_1 = require("../../../internal/signIfPrivateKey"); function mountAssetQuantitiesString(assetQuantities) { return assetQuantities.map(({ quantity, assetId }) => `${assetId}:${quantity}`).join(';'); } function assertCorrectAssetQuantities(assetQuantities) { const MaxItems = 4; const MinItems = 2; if (assetQuantities.length < MinItems) { throw new Error(`At least ${MinItems} asset-quantities are needed`); } if (assetQuantities.length > MaxItems) { throw new Error(`At maximum ${MaxItems} asset-quantities are allowed`); } const assetIds = new Set(); for (const ra of assetQuantities) { if (assetIds.has(ra.assetId)) { throw new Error('Duplicate assetId found'); } assetIds.add(ra.assetId); } } /** * * Use with {@link ApiComposer} and belongs to {@link AssetApi}. * * See details at {@link AssetApi.transferMultipleAssets} * * * @category factories */ const transferMultipleAssets = (service) => (args) => (0, signIfPrivateKey_1.signIfPrivateKey)(service, args, async (a) => { assertCorrectAssetQuantities(args.assetQuantities); const assetIdsAndQuantities = mountAssetQuantitiesString(args.assetQuantities); let parameters = { assetIdsAndQuantities, amountNQT: a.amountPlanck, publicKey: a.senderPublicKey, recipient: a.recipientId, recipientPublicKey: a.recipientPublicKey || undefined, feeNQT: a.feePlanck, deadline: a.deadline || constants_1.DefaultDeadline, referencedTransactionFullHash: a.referencedTransactionFullHash }; if (a.attachment) { parameters = (0, createParametersFromAttachment_1.createParametersFromAttachment)(a.attachment, parameters); } return service.send('transferAssetMulti', parameters); }); exports.transferMultipleAssets = transferMultipleAssets; //# sourceMappingURL=transferMultipleAssets.js.map