@protokol/guardian-crypto
Version:
Transaction Builders For Guardian Transaction Types
140 lines • 5.67 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GuardianGroupPermissionsTransaction = 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 GuardianGroupPermissionsTransaction 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: ["setGroupPermissions"],
properties: {
setGroupPermissions: {
type: "object",
required: ["name", "priority", "active", "default"],
uniqueAllowDeny: true,
properties: {
name: guardian_schemas_1.groupNameSchema,
priority: {
type: "integer",
minimum: defaults_1.defaults.guardianGroupPriority.min,
maximum: defaults_1.defaults.guardianGroupPriority.max,
},
active: { type: "boolean" },
default: { type: "boolean" },
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.setGroupPermissions);
const setGroupPermissionAsset = data.asset.setGroupPermissions;
const nameBuffer = Buffer.from(setGroupPermissionAsset.name);
const buffer = new bytebuffer_1.default(nameBuffer.length +
4 + // priority
1 + // active
1 + // default
(0, serde_1.calculatePermissionsLength)(setGroupPermissionAsset.allow) +
(0, serde_1.calculatePermissionsLength)(setGroupPermissionAsset.deny), true);
// name
buffer.writeByte(nameBuffer.length);
buffer.append(nameBuffer, "hex");
// priority
buffer.writeUint32(setGroupPermissionAsset.priority);
// active
buffer.writeByte(+setGroupPermissionAsset.active);
// default
buffer.writeByte(+setGroupPermissionAsset.default);
// allow permissions
(0, serde_1.serializePermissions)(buffer, setGroupPermissionAsset.allow);
// deny permissions
(0, serde_1.serializePermissions)(buffer, setGroupPermissionAsset.deny);
return buffer;
}
deserialize(buf) {
const { data } = this;
const nameLength = buf.readUint8();
const name = buf.readBytes(nameLength).toBuffer().toString("utf8");
const priority = buf.readUInt32();
const active = Boolean(buf.readUint8());
const isDefault = Boolean(buf.readUint8());
const setGroupPermissions = {
name,
priority,
active,
default: isDefault,
};
// allow permissions
const allow = (0, serde_1.deserializePermissions)(buf);
if (allow) {
setGroupPermissions.allow = allow;
}
// deny permissions
const deny = (0, serde_1.deserializePermissions)(buf);
if (deny) {
setGroupPermissions.deny = deny;
}
data.asset = {
setGroupPermissions,
};
}
hasVendorField() {
return true;
}
}
exports.GuardianGroupPermissionsTransaction = GuardianGroupPermissionsTransaction;
Object.defineProperty(GuardianGroupPermissionsTransaction, "typeGroup", {
enumerable: true,
configurable: true,
writable: true,
value: enums_1.GuardianTransactionGroup
});
Object.defineProperty(GuardianGroupPermissionsTransaction, "type", {
enumerable: true,
configurable: true,
writable: true,
value: enums_1.GuardianTransactionTypes.GuardianSetGroupPermissions
});
Object.defineProperty(GuardianGroupPermissionsTransaction, "key", {
enumerable: true,
configurable: true,
writable: true,
value: "GuardianGroupPermissions"
});
Object.defineProperty(GuardianGroupPermissionsTransaction, "version", {
enumerable: true,
configurable: true,
writable: true,
value: defaults_1.defaults.version
});
Object.defineProperty(GuardianGroupPermissionsTransaction, "defaultStaticFee", {
enumerable: true,
configurable: true,
writable: true,
value: crypto_1.Utils.BigNumber.make(enums_1.GuardianStaticFees.GuardianSetGroupPermissions)
});
//# sourceMappingURL=guardian-group-permissions.js.map