UNPKG

@radixdlt/atom

Version:

Container for CRUD instructions known as 'Particles' that are sent to the Radix decentralized ledger

57 lines 3.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MutableSupplyTokenDefinitionParticle = exports.isMutableTokenDefinitionParticle = void 0; const _types_1 = require("../_types"); const neverthrow_1 = require("neverthrow"); const radixParticleTypes_1 = require("./meta/radixParticleTypes"); const tokenPermissions_1 = require("../tokenPermissions"); const tokenDefinitionParticleBase_1 = require("./tokenDefinitionParticleBase"); const resourceIdentifier_1 = require("../resourceIdentifier"); const data_formats_1 = require("@radixdlt/data-formats"); const account_1 = require("@radixdlt/account"); const primitives_1 = require("@radixdlt/primitives"); const _index_1 = require("../_index"); const utils_1 = require("../utils"); const radixParticleType = radixParticleTypes_1.RadixParticleType.MUTABLE_SUPPLY_TOKEN_DEFINITION; const SERIALIZER = 'radix.particles.mutable_supply_token_definition'; const JSONDecoder = data_formats_1.taggedObjectDecoder(SERIALIZER, _types_1.SERIALIZER_KEY)((input) => create(input)); const jsonDecoding = utils_1.JSONDecoding.withDependencies(resourceIdentifier_1.ResourceIdentifier, account_1.Address, primitives_1.Amount) .withDecoders(JSONDecoder) .create(); const validateTokenPermissions = (permissions) => { return permissions.mint === _types_1.TokenPermission.ALL || permissions.mint === _types_1.TokenPermission.TOKEN_OWNER_ONLY ? neverthrow_1.ok(permissions) : neverthrow_1.err(new Error('Someone must have permission to mint.')); }; const create = (input) => { var _a; return validateTokenPermissions((_a = input.permissions) !== null && _a !== void 0 ? _a : tokenPermissions_1.tokenOwnerOnly.permissions).andThen((permissions) => { return tokenDefinitionParticleBase_1.baseTokenDefinitionParticle(Object.assign(Object.assign({}, input), { serializer: SERIALIZER, radixParticleType: radixParticleTypes_1.RadixParticleType.MUTABLE_SUPPLY_TOKEN_DEFINITION, specificEncodableKeyValues: { permissions, }, // eslint-disable-next-line complexity makeEquals: (thisParticle, other) => { if (!exports.isMutableTokenDefinitionParticle(other)) return false; const oterhMSTDP = other; const equalsBase = oterhMSTDP.name === thisParticle.name && oterhMSTDP.description === thisParticle.description && oterhMSTDP.granularity.equals(thisParticle.granularity) && oterhMSTDP.resourceIdentifier.equals(thisParticle.resourceIdentifier) && oterhMSTDP.url === thisParticle.url && oterhMSTDP.iconURL === thisParticle.iconURL; return (equalsBase && oterhMSTDP.permissions.equals(_index_1.makeTokenPermissions(permissions))); } })).map((base) => (Object.assign(Object.assign({}, base), { permissions: _index_1.makeTokenPermissions(permissions) }))); }); }; const isMutableTokenDefinitionParticle = (something) => { if (!tokenDefinitionParticleBase_1.isTokenDefinitionParticleBase(something)) return false; return something.radixParticleType === radixParticleType; }; exports.isMutableTokenDefinitionParticle = isMutableTokenDefinitionParticle; exports.MutableSupplyTokenDefinitionParticle = Object.assign(Object.assign({ SERIALIZER, create }, jsonDecoding), { JSONDecoder }); //# sourceMappingURL=mutableSupplyTokenDefinitionParticle.js.map