UNPKG

@allo-team/allo-v2-sdk

Version:
79 lines (78 loc) 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StrategyFactory = void 0; const viem_1 = require("viem"); const chains_config_1 = require("../../chains.config"); const Client_1 = require("../../Client/Client"); const strategyFactory_DGL_config_1 = require("./strategyFactory.DGL.config"); const strategyFactory_DVMDT_config_1 = require("./strategyFactory.DVMDT.config"); class StrategyFactory { constructor({ chain, factoryType, address, rpc, }) { const usedChain = (0, viem_1.extractChain)({ chains: chains_config_1.supportedChains, id: chain, }); this.factoryType = factoryType; this.client = (0, Client_1.create)(usedChain, rpc); this.chainId = chain; if (address) this.setFactoryAddress(address); } getAbi() { switch (this.factoryType) { case "DGL": return strategyFactory_DGL_config_1.abi; case "DVMDT": return strategyFactory_DVMDT_config_1.abi; default: throw new Error("Invalid factory type"); } } getAddress(chainId) { switch (this.factoryType) { case "DGL": return (0, strategyFactory_DGL_config_1.getAddress)(chainId); case "DVMDT": return (0, strategyFactory_DVMDT_config_1.getAddress)(chainId); default: throw new Error("Invalid factory type"); } } setFactoryAddress(address) { if (address) { this.contract = (0, viem_1.getContract)({ address: address, abi: this.getAbi(), client: { public: this.client, }, }); this.factory = address; } } getCreateStrategyData() { const encodedData = (0, viem_1.encodeFunctionData)({ abi: this.getAbi(), functionName: "createStrategy", args: [], }); return { to: this.factory || this.getAddress(this.chainId), data: encodedData, value: "0", }; } getCreateStrategyDataByChainId(chainId) { const encodedData = (0, viem_1.encodeFunctionData)({ abi: this.getAbi(), functionName: "createStrategy", args: [], }); return { to: this.getAddress(chainId), data: encodedData, value: "0", }; } } exports.StrategyFactory = StrategyFactory;