UNPKG

@catalabs/catalyst-sdk

Version:
95 lines 4.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EvmRegistryModule = void 0; const ethers_1 = require("ethers"); const catalyst_sdk_1 = require("../catalyst-sdk"); const contracts_1 = require("../contracts"); const registry_module_1 = require("../modules/registry.module"); class EvmRegistryModule extends registry_module_1.RegistryModule { sdk; registry; constructor(sdk) { super(); this.sdk = sdk; this.registry = contracts_1.DescriberRegisitry__factory.connect(sdk.addresses.registry, sdk.provider); } async hasCatalystDeployment(address, options) { const deployedContract = await this.sdk.provider.getCode(address, options?.blockTag); if (deployedContract === '0x0') { return false; } return true; } async getCatalystVaultDescriber(address, options) { return this.getVaultDescriber(address, catalyst_sdk_1.CatalystSDK.CATALYST_VERSION, { blockTag: options?.blockTag, }); } async getCatalystVaultFactory(address, options) { const catalystDescriber = await this.getCatalystVaultDescriber(address); const catalystDecsriberContract = contracts_1.Describer__factory.connect(catalystDescriber, this.sdk.provider); const catalystVaultFactories = (await catalystDecsriberContract.get_vault_factories({ ...options, })).filter((a) => a !== ethers_1.ethers.ZeroAddress); return catalystVaultFactories[catalystVaultFactories.length - 1]; } async getCatalystCrosschainInterface(address, version, options) { const catalystDescriber = await this.getCatalystVaultDescriber(address); const catalystDecsriberContract = contracts_1.Describer__factory.connect(catalystDescriber, this.sdk.provider); const currentCCIs = await catalystDecsriberContract.get_whitelisted_CCI({ ...options, }); for (const cci of currentCCIs) { if (cci.version === version) { return cci.addr; } } throw new Error(`${version} is not a supported or whitelisted CCI option`); } async getCatalystVaultTemplate(address, vaultType, options) { const catalystDescriber = await this.getCatalystVaultDescriber(address); const catalystDecsriberContract = contracts_1.Describer__factory.connect(catalystDescriber, this.sdk.provider); const vaultTemplates = await catalystDecsriberContract.get_whitelisted_templates({ blockTag: options?.blockTag, }); if (vaultTemplates.length < vaultType + 1) { throw new Error('Requested vault type is either not supported or invalid'); } return vaultTemplates[vaultType]; } async getVaultDescriber(address, version, options) { const vaultDescribers = await contracts_1.DescriberRegisitry__factory.connect(address, this.sdk.provider).getVaultDescribers({ blockTag: options?.blockTag, }); for (const result of vaultDescribers) { if (result.version === version) { return result.addr; } } throw new Error(`${version} is not a valid or supported version`); } async getDescriberVersion(address, options) { const vaultDescribers = await contracts_1.DescriberRegisitry__factory.connect(address, this.sdk.provider).getVaultDescribers({ blockTag: options?.blockTag, }); for (const result of vaultDescribers) { if (result.version === address) { return result.version; } } throw new Error(`${address} is not a valid vault describer`); } async getVaultDescribers(address, options) { const vaultDescribers = await contracts_1.DescriberRegisitry__factory.connect(address, this.sdk.provider).getVaultDescribers({ blockTag: options?.blockTag }); return vaultDescribers.map((v) => v.addr); } async getDeployBlock(address) { const deployBlock = await contracts_1.DescriberRegisitry__factory.connect(address, this.sdk.provider).initBlock(); return Number(deployBlock.toString()); } registryAddress() { return this.sdk.addresses.registry; } } exports.EvmRegistryModule = EvmRegistryModule; //# sourceMappingURL=evm-registry.module.js.map