UNPKG

@protokol/guardian-crypto

Version:

Transaction Builders For Guardian Transaction Types

147 lines 5.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GuardianUserPermissionsTransaction = void 0; const crypto_1 = require("@arkecosystem/crypto"); const utils_1 = require("@protokol/utils"); const bytebuffer_1 = __importDefault(require("bytebuffer")); const defaults_1 = require("../defaults"); const enums_1 = require("../enums"); const guardian_schemas_1 = require("./utils/guardian-schemas"); const serde_1 = require("./utils/serde"); const { schemas } = crypto_1.Transactions; class GuardianUserPermissionsTransaction extends crypto_1.Transactions.Transaction { static getSchema() { return schemas.extend(schemas.transactionBaseSchema, { $id: this.key, required: ["asset", "typeGroup"], properties: { type: { transactionType: this.type }, typeGroup: { const: this.typeGroup }, amount: guardian_schemas_1.amountSchema, vendorField: guardian_schemas_1.vendorFieldSchema, asset: { type: "object", required: ["setUserPermissions"], properties: { setUserPermissions: { type: "object", required: ["publicKey"], uniqueAllowDeny: true, properties: { publicKey: { $ref: "publicKey", }, groupNames: { type: "array", uniqueItems: true, items: guardian_schemas_1.groupNameSchema, }, allow: guardian_schemas_1.permissionsSchema, deny: guardian_schemas_1.permissionsSchema, }, }, }, }, }, }); } serialize() { var _a; const { data } = this; utils_1.Asserts.assert.defined((_a = data.asset) === null || _a === void 0 ? void 0 : _a.setUserPermissions); const setUserPermissionAsset = data.asset.setUserPermissions; const groupNamesBuffer = []; let groupNamesLength = 1; if (setUserPermissionAsset.groupNames) { for (const groupName of setUserPermissionAsset.groupNames) { const groupNameBuffer = Buffer.from(groupName); groupNamesBuffer.push(groupNameBuffer); groupNamesLength += 1 + groupNameBuffer.length; } } const buffer = new bytebuffer_1.default(66 + // privateKey groupNamesLength + (0, serde_1.calculatePermissionsLength)(setUserPermissionAsset.allow) + (0, serde_1.calculatePermissionsLength)(setUserPermissionAsset.deny), true); // publicKey buffer.append(Buffer.from(setUserPermissionAsset.publicKey), "hex"); // groupNames buffer.writeByte(groupNamesBuffer.length); for (const groupNameBuffer of groupNamesBuffer) { buffer.writeByte(groupNameBuffer.length); buffer.append(groupNameBuffer, "hex"); } // allow permissions (0, serde_1.serializePermissions)(buffer, setUserPermissionAsset.allow); // deny permissions (0, serde_1.serializePermissions)(buffer, setUserPermissionAsset.deny); return buffer; } deserialize(buf) { const { data } = this; const publicKey = buf.readString(66); const setUserPermissions = { publicKey, }; // groupNames const numOfGroupNames = buf.readUint8(); if (numOfGroupNames) { setUserPermissions.groupNames = []; for (let i = 0; i < numOfGroupNames; i++) { const groupNameLength = buf.readUint8(); setUserPermissions.groupNames.push(buf.readBytes(groupNameLength).toBuffer().toString("utf8")); } } // allow permissions const allow = (0, serde_1.deserializePermissions)(buf); if (allow) { setUserPermissions.allow = allow; } // deny permissions const deny = (0, serde_1.deserializePermissions)(buf); if (deny) { setUserPermissions.deny = deny; } data.asset = { setUserPermissions, }; } hasVendorField() { return true; } } exports.GuardianUserPermissionsTransaction = GuardianUserPermissionsTransaction; Object.defineProperty(GuardianUserPermissionsTransaction, "typeGroup", { enumerable: true, configurable: true, writable: true, value: enums_1.GuardianTransactionGroup }); Object.defineProperty(GuardianUserPermissionsTransaction, "type", { enumerable: true, configurable: true, writable: true, value: enums_1.GuardianTransactionTypes.GuardianSetUserPermissions }); Object.defineProperty(GuardianUserPermissionsTransaction, "key", { enumerable: true, configurable: true, writable: true, value: "GuardianUserPermissions" }); Object.defineProperty(GuardianUserPermissionsTransaction, "version", { enumerable: true, configurable: true, writable: true, value: defaults_1.defaults.version }); Object.defineProperty(GuardianUserPermissionsTransaction, "defaultStaticFee", { enumerable: true, configurable: true, writable: true, value: crypto_1.Utils.BigNumber.make(enums_1.GuardianStaticFees.GuardianSetUserPermissions) }); //# sourceMappingURL=guardian-user-permissions.js.map