@signumjs/core
Version:
Principal package with functions and models for building Signum Network applications.
55 lines • 2.22 kB
JavaScript
;
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