From e64968211aea0dff52ad57c9321272fcfb40cca4 Mon Sep 17 00:00:00 2001 From: Jongwon Park Date: Wed, 11 Dec 2024 22:15:46 +0900 Subject: [PATCH 1/3] refactor(plugin-evm): base lifi class & import ordering --- packages/plugin-evm/src/actions/baseLifi.ts | 45 +++++++++++++++++ packages/plugin-evm/src/actions/bridge.ts | 44 ++--------------- packages/plugin-evm/src/actions/swap.ts | 53 ++------------------- packages/plugin-evm/src/actions/transfer.ts | 5 +- 4 files changed, 56 insertions(+), 91 deletions(-) create mode 100644 packages/plugin-evm/src/actions/baseLifi.ts diff --git a/packages/plugin-evm/src/actions/baseLifi.ts b/packages/plugin-evm/src/actions/baseLifi.ts new file mode 100644 index 00000000000..f8df80b420c --- /dev/null +++ b/packages/plugin-evm/src/actions/baseLifi.ts @@ -0,0 +1,45 @@ +import { createConfig, type ExtendedChain, type SDKConfig } from "@lifi/sdk"; +import { getChainConfigs, WalletProvider } from "../providers/wallet"; + +export class BaseLifiAction { + protected config: SDKConfig; + + constructor(protected walletProvider: WalletProvider) { + this.config = createConfig({ + integrator: "eliza", + chains: Object.values( + getChainConfigs(this.walletProvider.runtime) + ).map((config) => ({ + id: config.chainId, + name: config.name, + key: config.name.toLowerCase(), + chainType: "EVM" as const, + nativeToken: { + ...config.nativeCurrency, + chainId: config.chainId, + address: "0x0000000000000000000000000000000000000000", + coinKey: config.nativeCurrency.symbol, + priceUSD: "0", + logoURI: "", + symbol: config.nativeCurrency.symbol, + decimals: config.nativeCurrency.decimals, + name: config.nativeCurrency.name, + }, + rpcUrls: { + public: { http: [config.rpcUrl] }, + }, + blockExplorerUrls: [config.blockExplorerUrl], + metamask: { + chainId: `0x${config.chainId.toString(16)}`, + chainName: config.name, + nativeCurrency: config.nativeCurrency, + rpcUrls: [config.rpcUrl], + blockExplorerUrls: [config.blockExplorerUrl], + }, + coin: config.nativeCurrency.symbol, + mainnet: true, + diamondAddress: "0x0000000000000000000000000000000000000000", + })) as ExtendedChain[], + }); + } +} diff --git a/packages/plugin-evm/src/actions/bridge.ts b/packages/plugin-evm/src/actions/bridge.ts index 3d0a38582d6..abba2439773 100644 --- a/packages/plugin-evm/src/actions/bridge.ts +++ b/packages/plugin-evm/src/actions/bridge.ts @@ -1,50 +1,14 @@ import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; -import { - ChainId, - createConfig, - executeRoute, - ExtendedChain, - getRoutes, -} from "@lifi/sdk"; +import { ChainId, executeRoute, getRoutes } from "@lifi/sdk"; + +import { BaseLifiAction } from "./baseLifi"; import { getChainConfigs, WalletProvider } from "../providers/wallet"; import { bridgeTemplate } from "../templates"; import type { BridgeParams, Transaction } from "../types"; export { bridgeTemplate }; -export class BridgeAction { - private config; - - constructor(private walletProvider: WalletProvider) { - this.config = createConfig({ - integrator: "eliza", - chains: Object.values( - getChainConfigs(this.walletProvider.runtime) - ).map((config) => ({ - id: config.chainId, - name: config.name, - key: config.name.toLowerCase(), - chainType: "EVM", - nativeToken: { - ...config.nativeCurrency, - chainId: config.chainId, - address: "0x0000000000000000000000000000000000000000", - coinKey: config.nativeCurrency.symbol, - }, - metamask: { - chainId: `0x${config.chainId.toString(16)}`, - chainName: config.name, - nativeCurrency: config.nativeCurrency, - rpcUrls: [config.rpcUrl], - blockExplorerUrls: [config.blockExplorerUrl], - }, - diamondAddress: "0x0000000000000000000000000000000000000000", - coin: config.nativeCurrency.symbol, - mainnet: true, - })) as ExtendedChain[], - }); - } - +export class BridgeAction extends BaseLifiAction { async bridge(params: BridgeParams): Promise { const walletClient = this.walletProvider.getWalletClient(); const [fromAddress] = await walletClient.getAddresses(); diff --git a/packages/plugin-evm/src/actions/swap.ts b/packages/plugin-evm/src/actions/swap.ts index 4bc23080942..d6a98d33709 100644 --- a/packages/plugin-evm/src/actions/swap.ts +++ b/packages/plugin-evm/src/actions/swap.ts @@ -1,59 +1,14 @@ import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; -import { - ChainId, - createConfig, - executeRoute, - ExtendedChain, - getRoutes, -} from "@lifi/sdk"; +import { ChainId, executeRoute, getRoutes } from "@lifi/sdk"; + +import { BaseLifiAction } from "./baseLifi"; import { getChainConfigs, WalletProvider } from "../providers/wallet"; import { swapTemplate } from "../templates"; import type { SwapParams, Transaction } from "../types"; export { swapTemplate }; -export class SwapAction { - private config; - - constructor(private walletProvider: WalletProvider) { - this.config = createConfig({ - integrator: "eliza", - chains: Object.values( - getChainConfigs(this.walletProvider.runtime) - ).map((config) => ({ - id: config.chainId, - name: config.name, - key: config.name.toLowerCase(), - chainType: "EVM" as const, - nativeToken: { - ...config.nativeCurrency, - chainId: config.chainId, - address: "0x0000000000000000000000000000000000000000", - coinKey: config.nativeCurrency.symbol, - priceUSD: "0", - logoURI: "", - symbol: config.nativeCurrency.symbol, - decimals: config.nativeCurrency.decimals, - name: config.nativeCurrency.name, - }, - rpcUrls: { - public: { http: [config.rpcUrl] }, - }, - blockExplorerUrls: [config.blockExplorerUrl], - metamask: { - chainId: `0x${config.chainId.toString(16)}`, - chainName: config.name, - nativeCurrency: config.nativeCurrency, - rpcUrls: [config.rpcUrl], - blockExplorerUrls: [config.blockExplorerUrl], - }, - coin: config.nativeCurrency.symbol, - mainnet: true, - diamondAddress: "0x0000000000000000000000000000000000000000", - })) as ExtendedChain[], - }); - } - +export class SwapAction extends BaseLifiAction { async swap(params: SwapParams): Promise { const walletClient = this.walletProvider.getWalletClient(); const [fromAddress] = await walletClient.getAddresses(); diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index 18321097fe9..448e652e7d8 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -1,8 +1,9 @@ +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; import { ByteArray, parseEther, type Hex } from "viem"; + import { WalletProvider } from "../providers/wallet"; -import type { Transaction, TransferParams } from "../types"; import { transferTemplate } from "../templates"; -import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import type { Transaction, TransferParams } from "../types"; export { transferTemplate }; export class TransferAction { From 6d15ee1a8121dd4c7ba48389acdb19b0f53187f9 Mon Sep 17 00:00:00 2001 From: Jongwon Park Date: Wed, 11 Dec 2024 22:16:10 +0900 Subject: [PATCH 2/3] nit(gitignore): add IDE folders --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index b3d84f00fb7..21bb1feb4b7 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,7 @@ packages/plugin-coinbase/package-lock.json tsup.config.bundled_*.mjs .turbo + +# IDE +.vscode +.idea From c5a9ebfd0e559ee6b5749af4efe4279eb6d7a7a7 Mon Sep 17 00:00:00 2001 From: Jongwon Park Date: Wed, 11 Dec 2024 22:29:03 +0900 Subject: [PATCH 3/3] fix(plugin-evm): remove misused config --- packages/plugin-evm/src/actions/bridge.ts | 2 +- packages/plugin-evm/src/actions/swap.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/plugin-evm/src/actions/bridge.ts b/packages/plugin-evm/src/actions/bridge.ts index abba2439773..52237fa18c1 100644 --- a/packages/plugin-evm/src/actions/bridge.ts +++ b/packages/plugin-evm/src/actions/bridge.ts @@ -29,7 +29,7 @@ export class BridgeAction extends BaseLifiAction { if (!routes.routes.length) throw new Error("No routes found"); - const execution = await executeRoute(routes.routes[0], this.config); + const execution = await executeRoute(routes.routes[0]); const process = execution.steps[0]?.execution?.process[0]; if (!process?.status || process.status === "FAILED") { diff --git a/packages/plugin-evm/src/actions/swap.ts b/packages/plugin-evm/src/actions/swap.ts index d6a98d33709..8886329c0ac 100644 --- a/packages/plugin-evm/src/actions/swap.ts +++ b/packages/plugin-evm/src/actions/swap.ts @@ -32,7 +32,7 @@ export class SwapAction extends BaseLifiAction { if (!routes.routes.length) throw new Error("No routes found"); - const execution = await executeRoute(routes.routes[0], this.config); + const execution = await executeRoute(routes.routes[0]); const process = execution.steps[0]?.execution?.process[0]; if (!process?.status || process.status === "FAILED") {