@catalabs/catalyst-sdk
Version:
Catalyst AMM SDK
95 lines • 4.39 kB
JavaScript
;
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