UNPKG

allo-monad-ray

Version:

Monad version of Allo v2 SDK

309 lines (308 loc) 8.6 kB
import { encodeFunctionData, getContract, extractChain, } from "viem"; import { create } from "../Client/Client"; import { abi, getAddress } from "./allo.config"; import { supportedChains } from "../chains.config"; export class Allo { constructor({ chain, rpc }) { const usedChain = extractChain({ chains: supportedChains, id: chain, }); this.addr = getAddress(usedChain); this.client = create(usedChain, rpc); this.contract = getContract({ address: this.addr, abi: abi, client: { public: this.client, } }); } address() { return this.addr; } // Read only funcitons async getFeeDenominator() { const denominator = await this.contract.read.getFeeDenominator(); return denominator; } async isPoolAdmin(poolId, address) { const isAdmin = await this.contract.read.isPoolAdmin([poolId, address]); return isAdmin; } async isPoolManager(poolId, address) { const isManager = await this.contract.read.isPoolManager([poolId, address]); return isManager; } async getStrategy(poolId) { const strategyAddress = this.contract.read.getStrategy([poolId]); return strategyAddress; } async getPercentFee() { const percentage = this.contract.read.getPercentFee(); return percentage; } async getBaseFee() { const baseFee = this.contract.read.getBaseFee(); return baseFee; } async getTreasury() { const treasuryAddress = this.contract.read.getTreasury(); return treasuryAddress; } async getRegistry() { const registryAddress = this.contract.read.getRegistry(); return registryAddress; } async isCloneableStrategy() { const isCloneable = this.contract.read.isCloneableStrategy(); return isCloneable; } async getPool(poolId) { const pool = this.contract.read.getPool([poolId]); return pool; } // Write functions createPoolWithCustomStrategy({ profileId, strategy, initStrategyData, token, amount, metadata, managers, }) { const data = encodeFunctionData({ abi: abi, functionName: "createPoolWithCustomStrategy", args: [ profileId, strategy, initStrategyData, token, amount, metadata, managers, ], }); const value = token.toLocaleLowerCase() === "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLocaleLowerCase() ? amount.toString() : "0"; return { to: this.addr, data: data, value: value, }; } createPool({ profileId, strategy, initStrategyData, token, amount, metadata, managers, }) { const data = encodeFunctionData({ abi: abi, functionName: "createPool", args: [ profileId, strategy, initStrategyData, token, amount, metadata, managers, ], }); const value = token.toLocaleLowerCase() === "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLocaleLowerCase() ? amount.toString() : "0"; return { to: this.addr, data: data, value: value, }; } // updatePoolMetadata(uint256 _poolId, Metadata memory _metadata) updatePoolMetadata({ poolId, metadata, }) { const data = encodeFunctionData({ abi: abi, functionName: "updatePoolMetadata", args: [poolId, metadata], }); return { to: this.addr, data: data, value: "0", }; } updateRegistry(registry) { const data = encodeFunctionData({ abi: abi, functionName: "updateRegistry", args: [registry], }); return { to: this.addr, data: data, value: "0", }; } updateTreasury(registry) { const data = encodeFunctionData({ abi: abi, functionName: "updateRegistry", args: [registry], }); return { to: this.addr, data: data, value: "0", }; } updatePercentFee(percentage) { const data = encodeFunctionData({ abi: abi, functionName: "updatePercentFee", args: [percentage], }); return { to: this.addr, data: data, value: "0", }; } updateBaseFee(percentage) { const data = encodeFunctionData({ abi: abi, functionName: "updateBaseFee", args: [percentage], }); return { to: this.addr, data: data, value: "0", }; } addToCloneableStrategies(strategy) { const data = encodeFunctionData({ abi: abi, functionName: "addToCloneableStrategies", args: [strategy], }); return { to: this.addr, data: data, value: "0", }; } removeFromCloneableStrategies(strategy) { const data = encodeFunctionData({ abi: abi, functionName: "removeFromCloneableStrategies", args: [strategy], }); return { to: this.addr, data: data, value: "0", }; } addPoolManager(poolId, manager) { const data = encodeFunctionData({ abi: abi, functionName: "addPoolManager", args: [poolId, manager], }); return { to: this.addr, data: data, value: "0", }; } removePoolManager(poolId, manager) { const data = encodeFunctionData({ abi: abi, functionName: "removePoolManager", args: [poolId, manager], }); return { to: this.addr, data: data, value: "0", }; } recoverFunds(token, recipient) { const data = encodeFunctionData({ abi: abi, functionName: "recoverFunds", args: [token, recipient], }); return { to: this.addr, data: data, value: "0", }; } // Strategy functions registerRecipient(poolId, strategyData) { const data = encodeFunctionData({ abi: abi, functionName: "registerRecipient", args: [poolId, strategyData], }); return { to: this.addr, data: data, value: "0", }; } batchRegisterRecipient(poolIds, strategyData) { const data = encodeFunctionData({ abi: abi, functionName: "batchRegisterRecipient", args: [poolIds, strategyData], }); return { to: this.addr, data: data, value: "0", }; } fundPool(poolId, amount) { const data = encodeFunctionData({ abi: abi, functionName: "fundPool", args: [poolId, amount], }); return { to: this.addr, data: data, value: "0", }; } allocate(poolId, strategyData) { const data = encodeFunctionData({ abi: abi, functionName: "allocate", args: [poolId, strategyData], }); return { to: this.addr, data: data, value: "0", }; } batchAllocate(poolIds, strategyData) { const data = encodeFunctionData({ abi: abi, functionName: "batchAllocate", args: [poolIds, strategyData], }); return { to: this.addr, data: data, value: "0", }; } distribute(poolId, recipientId, strategyData) { const data = encodeFunctionData({ abi: abi, functionName: "distribute", args: [poolId, recipientId, strategyData], }); return { to: this.addr, data: data, value: "0", }; } }