UNPKG

edwin-sdk

Version:

SDK for integrating AI agents with DeFi protocols

52 lines (44 loc) 1.85 kB
import { EdwinPlugin } from '../../core/classes/edwinPlugin'; import { EdwinTool, Chain } from '../../core/types'; import { LuloProtocol } from './luloProtocol'; import { SolanaWalletClient } from '../../core/wallets/solana_wallet'; import { SupplyParametersSchema, WithdrawParametersSchema, SupplyParameters, WithdrawParameters } from './parameters'; export class LuloPlugin extends EdwinPlugin { constructor(wallet: SolanaWalletClient) { super('lulo', [new LuloProtocol(wallet)]); } getTools(): Record<string, EdwinTool> { // Combine public and private tools return { ...this.getPublicTools(), ...this.getPrivateTools(), }; } getPublicTools(): Record<string, EdwinTool> { // Lulo has no public tools return {}; } getPrivateTools(): Record<string, EdwinTool> { const luloProtocol = this.toolProviders.find(provider => provider instanceof LuloProtocol) as LuloProtocol; return { luloSupply: { name: 'lulo_supply', description: 'Supply assets to Lulo protocol', schema: SupplyParametersSchema.schema, execute: async (params: SupplyParameters) => { return await luloProtocol.supply(params); }, }, luloWithdraw: { name: 'lulo_withdraw', description: 'Withdraw assets from Lulo protocol', schema: WithdrawParametersSchema.schema, execute: async (params: WithdrawParameters) => { return await luloProtocol.withdraw(params); }, }, }; } supportsChain = (chain: Chain) => chain.type === 'solana'; } export const lulo = (wallet: SolanaWalletClient) => new LuloPlugin(wallet);