@radixdlt/atom
Version:
Container for CRUD instructions known as 'Particles' that are sent to the Radix decentralized ledger
57 lines • 3.54 kB
JavaScript
;
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