UNPKG

@radixdlt/atom-transaction-mapping

Version:
42 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tokenTransferActionToParticleGroupsMapper = void 0; const actions_1 = require("@radixdlt/actions"); const atom_1 = require("@radixdlt/atom"); const neverthrow_1 = require("neverthrow"); const fungibleParticleTransitioner_1 = require("./fungibleParticleTransitioner"); const validation_1 = require("./validation"); const utils_1 = require("./utils"); const particleGroupsFromTransferTokensAction = (input) => { const transferAction = input.transferTokensAction; const transitioner = fungibleParticleTransitioner_1.makeTransitioner({ inputAmountMapper: (from) => from.amount, inputCreator: utils_1.transferrableTokensParticleFromOther.bind(null, transferAction.sender), outputCreator: utils_1.transferrableTokensParticleFromOther.bind(null, transferAction.recipient), }); const consumableParticles = input.upParticles .map((sp) => sp.particle) .filter((p) => p.resourceIdentifier.equals(transferAction.resourceIdentifier)); return transitioner .transition({ currentParticles: consumableParticles, totalAmountToTransfer: transferAction.amount, }) .map((spp) => atom_1.spunParticles(spp)) .map((sps) => [atom_1.ParticleGroup.create(sps)]); }; const tokenTransferActionToParticleGroupsMapper = () => { const actionType = actions_1.UserActionType.TOKEN_TRANSFER; return { actionType, particleGroupsFromAction: (input) => validation_1.validate(validation_1.validateUserActionSender, validation_1.validateUserActionType(actionType), validation_1.validateConsumeTokensAction())(input) .andThen((res) => neverthrow_1.combine(utils_1.collectUpParticles(res))) .andThen((upParticles) => particleGroupsFromTransferTokensAction({ transferTokensAction: input.action, upParticles: upParticles, addressOfActiveAccount: input.addressOfActiveAccount, })), }; }; exports.tokenTransferActionToParticleGroupsMapper = tokenTransferActionToParticleGroupsMapper; //# sourceMappingURL=tokenTransferActionToParticleGroupsMapper.js.map