@verax-attestation-registry/verax-sdk
Version:
Verax Attestation Registry SDK to interact with the subgraph and the contracts
114 lines • 5.38 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../utils/constants");
const BaseDataMapper_1 = __importDefault(require("./BaseDataMapper"));
const ModuleRegistry_1 = require("../abi/ModuleRegistry");
const errorHandler_1 = require("../utils/errorHandler");
const transactionSender_1 = require("../utils/transactionSender");
const abiCoder_1 = require("../utils/abiCoder");
class ModuleDataMapper extends BaseDataMapper_1.default {
constructor() {
super(...arguments);
this.typeName = "module";
this.gqlInterface = `{
id
moduleAddress
name
description
}`;
}
async simulateUpdateRouter(routerAddress) {
return this.simulateContract("updateRouter", [routerAddress]);
}
async updateRouter(routerAddress, options) {
const request = await this.simulateUpdateRouter(routerAddress);
return (0, transactionSender_1.executeTransaction)(request, this.web3Client, this.walletClient, options?.waitForConfirmation);
}
async simulateRegister(name, description, moduleAddress) {
return this.simulateContract("register", [name, description, moduleAddress]);
}
async register(name, description, moduleAddress, options) {
const request = await this.simulateRegister(name, description, moduleAddress);
return (0, transactionSender_1.executeTransaction)(request, this.web3Client, this.walletClient, options?.waitForConfirmation);
}
async simulateRunModules(modulesAddresses, attestationPayload, validationPayloads, value) {
const matchingSchema = await this.veraxSdk.schema.findOneById(attestationPayload.schemaId);
if (!matchingSchema) {
throw new Error("No matching Schema");
}
const attestationData = (0, abiCoder_1.encode)(matchingSchema.schema, attestationPayload.attestationData);
return this.simulateContract("runModules", [
modulesAddresses,
[attestationPayload.schemaId, attestationPayload.expirationDate, attestationPayload.subject, attestationData],
validationPayloads,
value ? `0x${value}` : undefined,
]);
}
async runModules(modulesAddresses, attestationPayload, validationPayloads, options) {
const request = await this.simulateRunModules(modulesAddresses, attestationPayload, validationPayloads, options?.value);
return (0, transactionSender_1.executeTransaction)(request, this.web3Client, this.walletClient, options?.waitForConfirmation);
}
async simulateBulkRunModules(modulesAddresses, attestationPayloads, validationPayloads) {
const attestationPayloadsArg = [];
for (const attestationPayload of attestationPayloads) {
const matchingSchema = await this.veraxSdk.schema.findOneById(attestationPayload.schemaId);
if (!matchingSchema) {
throw new Error("No matching Schema");
}
const attestationData = (0, abiCoder_1.encode)(matchingSchema.schema, attestationPayload.attestationData);
attestationPayloadsArg.push([
attestationPayload.schemaId,
attestationPayload.expirationDate,
attestationPayload.subject,
attestationData,
]);
}
return this.simulateContract("bulkRunModules", [modulesAddresses, attestationPayloadsArg, validationPayloads]);
}
async bulkRunModules(modulesAddresses, attestationPayloads, validationPayloads, options) {
const request = await this.simulateBulkRunModules(modulesAddresses, attestationPayloads, validationPayloads);
return (0, transactionSender_1.executeTransaction)(request, this.web3Client, this.walletClient, options?.waitForConfirmation);
}
async isContractAddress(contractAddress) {
return this.executeReadMethod("isContractAddress", [contractAddress]);
}
async getModulesNumber() {
return super.findTotalCount();
}
async isRegistered(moduleAddress) {
return this.executeReadMethod("isRegistered", [moduleAddress]);
}
async getModule(moduleAddress) {
return this.executeReadMethod("modules", [moduleAddress]);
}
async executeReadMethod(functionName, args) {
return this.web3Client.readContract({
abi: ModuleRegistry_1.abiModuleRegistry,
address: this.conf.moduleRegistryAddress,
functionName,
args,
});
}
async simulateContract(functionName, args) {
if (!this.walletClient)
throw new Error("VeraxSDK - Wallet not available");
try {
const { request } = await this.web3Client.simulateContract({
address: this.conf.moduleRegistryAddress,
abi: ModuleRegistry_1.abiModuleRegistry,
functionName,
account: this.walletClient.account,
args,
});
return request;
}
catch (err) {
(0, errorHandler_1.handleError)(constants_1.ActionType.Simulation, err);
}
}
}
exports.default = ModuleDataMapper;
//# sourceMappingURL=ModuleDataMapper.js.map