UNPKG

@radixdlt/atom-transaction-mapping

Version:
40 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateUserActionType = exports.validateConsumeTokensAction = exports.alwaysValid = exports.validateUserActionSender = exports.validate = void 0; const atom_1 = require("@radixdlt/atom"); const neverthrow_1 = require("neverthrow"); /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */ const validate = (...validators) => (input) => validators.reduce((result, validator) => result.andThen(validator), neverthrow_1.ok(input)); exports.validate = validate; /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */ const validateUserActionSender = (input) => { return input.action.sender.equals(input.addressOfActiveAccount) ? neverthrow_1.ok(input) : neverthrow_1.err(new Error('Wrong sender/signer')); }; exports.validateUserActionSender = validateUserActionSender; exports.alwaysValid = { witness: 'always valid' }; const validateConsumeTokensAction = (validateTokenDefinition) => (input) => { const resourceIdentifier = input.action.resourceIdentifier; const tokenDefValidation = validateTokenDefinition !== null && validateTokenDefinition !== void 0 ? validateTokenDefinition : (() => neverthrow_1.ok(exports.alwaysValid)); const spunParticles_ = atom_1.spunParticles(input.upParticles); const tokenDefinitionParticle = spunParticles_.tokenDefinitionParticleMatchingIdentifier(resourceIdentifier); if (!tokenDefinitionParticle) { return neverthrow_1.err(new Error(`Unknown token with identifier: '${resourceIdentifier.toString()}'`)); } if (!input.action.amount.isMultipleOf(tokenDefinitionParticle.granularity)) { return neverthrow_1.err(new Error('Amount not multiple of granularity')); } return tokenDefValidation({ tokenDefinitionParticle, burner: input.action.sender, }).map((_) => input); }; exports.validateConsumeTokensAction = validateConsumeTokensAction; const validateUserActionType = (filterOnType) => (input) => { if (input.action.actionType !== filterOnType) return neverthrow_1.err(new Error('Incorrect UserAction type.')); return neverthrow_1.ok(input); }; exports.validateUserActionType = validateUserActionType; //# sourceMappingURL=validation.js.map