@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
JavaScript
;
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