UNPKG

@verax-attestation-registry/verax-sdk

Version:

Verax Attestation Registry SDK to interact with the subgraph and the contracts

114 lines 5.38 kB
"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