UNPKG

@aut-labs/sdk

Version:

The TS/JS SDK package aims to make it easy for frontends/backends to integrate with Aut Smart Contracts

113 lines 4.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HubRegistryContract = void 0; const abi_types_1 = require("@aut-labs/abi-types"); const response_1 = require("../models/response"); const base_contract_1 = __importDefault(require("./base.contract")); const find_event_1 = require("../utils/find-event"); const logger_1 = require("../utils/logger"); const sdkLogger = (0, logger_1.getLogger)(); class HubRegistryContract extends base_contract_1.default { constructor(address, multiSigner, biconomyWrapper) { super(address, multiSigner, biconomyWrapper, abi_types_1.Web3HubRegistryProvider); } async getHubs() { try { const daos = await this.functions.hubs(); sdkLogger.info("getHubs", daos); return new response_1.SDKContractGenericResponse({ isSuccess: true, data: daos }); } catch (error) { sdkLogger.error("getHubs", error); return new response_1.SDKContractGenericResponse({ error }); } } async getHubByDeployer(deployer) { try { const hubs = await this.functions.hubsDeployed(deployer); sdkLogger.info("getHubsDeployed", hubs); return new response_1.SDKContractGenericResponse({ isSuccess: true, data: hubs }); } catch (error) { sdkLogger.error("getHubByDeployer", error); return new response_1.SDKContractGenericResponse({ error }); } } async deployHub(roles, market, metadata, commitment, overrides) { const address = await this.contract.getAddress(); if (this.canSendEIP712Transaction(address)) { try { const { data } = await this.contract.populateTransaction.deployHub(market, metadata, commitment); const response = await this.sendEIP712Transaction(data); let hubAddress = null; if (response.isSuccess) { const address = await this.signerAddress; const maxRetries = 6; let retries = 0; const wait_for_address = () => { return new Promise((resolve) => { setTimeout(async () => { const daoAddresses = await this.functions.hubsDeployed(address); const new_hub = daoAddresses[daoAddresses.length - 1]; if (!new_hub && retries < maxRetries) { retries += 1; return resolve(wait_for_address()); } return resolve(new_hub); }, 2000); }); }; hubAddress = await wait_for_address(); } return new response_1.SDKContractGenericResponse({ isSuccess: !!hubAddress, data: hubAddress }); } catch (error) { return new response_1.SDKContractGenericResponse({ error }); } } else { try { sdkLogger.info("deployHub", { roles, market, metadata, commitment }); const tx = await (await this.functions.deployHub(roles, market, metadata, commitment, overrides)).wait(); const event = (0, find_event_1.findLogEvent)(tx, abi_types_1.HubRegistryContractEventType.HubCreated); sdkLogger.info("deployHub", event); return new response_1.SDKContractGenericResponse({ isSuccess: !!event, event: event, data: event?.args[0]?.toString() }); } catch (error) { sdkLogger.error("deployHub", error); return new response_1.SDKContractGenericResponse({ error }); } } } } exports.HubRegistryContract = HubRegistryContract; //# sourceMappingURL=hubRegistry.contract.js.map