@elizaos/plugin-wallet 2.0.0-beta.1 → 2.0.3-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -45
- package/auto-enable.ts +1 -1
- package/dist/actions/failure-codes.d.ts +12 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/analytics/birdeye/actions/wallet-search-address.d.ts +7 -0
- package/dist/analytics/birdeye/birdeye-task.d.ts +27 -0
- package/dist/analytics/birdeye/birdeye.d.ts +140 -0
- package/dist/analytics/birdeye/constants.d.ts +68 -0
- package/dist/analytics/birdeye/providers/agent-portfolio-provider.d.ts +8 -0
- package/dist/analytics/birdeye/providers/market.d.ts +18 -0
- package/dist/analytics/birdeye/providers/portfolio-factory.d.ts +10 -0
- package/dist/analytics/birdeye/providers/trending.d.ts +19 -0
- package/dist/analytics/birdeye/providers/wallet.d.ts +5 -0
- package/dist/analytics/birdeye/search-category.d.ts +52 -0
- package/dist/analytics/birdeye/service.d.ts +94 -0
- package/dist/analytics/birdeye/types/api/common.d.ts +199 -0
- package/dist/analytics/birdeye/types/api/defi.d.ts +187 -0
- package/dist/analytics/birdeye/types/api/pair.d.ts +182 -0
- package/dist/analytics/birdeye/types/api/search.d.ts +64 -0
- package/dist/analytics/birdeye/types/api/token.d.ts +580 -0
- package/dist/analytics/birdeye/types/api/trader.d.ts +70 -0
- package/dist/analytics/birdeye/types/api/wallet.d.ts +161 -0
- package/dist/analytics/birdeye/types/shared.d.ts +83 -0
- package/dist/analytics/birdeye/utils.d.ts +74 -0
- package/dist/analytics/dexscreener/errors.d.ts +2 -0
- package/dist/analytics/dexscreener/index.d.ts +3 -0
- package/dist/analytics/dexscreener/search-category.d.ts +3 -0
- package/dist/analytics/dexscreener/service.d.ts +34 -0
- package/dist/analytics/dexscreener/types.d.ts +131 -0
- package/dist/analytics/lpinfo/index.d.ts +31 -0
- package/dist/analytics/lpinfo/kamino/index.d.ts +7 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoPoolProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/providers/kaminoProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/kamino/services/kaminoLiquidityService.d.ts +203 -0
- package/dist/analytics/lpinfo/kamino/services/kaminoService.d.ts +171 -0
- package/dist/analytics/lpinfo/steer/index.d.ts +7 -0
- package/dist/analytics/lpinfo/steer/providers/steerLiquidityProvider.d.ts +6 -0
- package/dist/analytics/lpinfo/steer/services/steerLiquidityService.d.ts +208 -0
- package/dist/analytics/lpinfo/steer/steer-display-types.d.ts +97 -0
- package/dist/analytics/news/index.d.ts +32 -0
- package/dist/analytics/news/interfaces/types.d.ts +177 -0
- package/dist/analytics/news/providers/defiNewsProvider.d.ts +106 -0
- package/dist/analytics/news/services/newsDataService.d.ts +72 -0
- package/dist/analytics/news/utils/formatters.d.ts +54 -0
- package/dist/analytics/token-info/action.d.ts +6 -0
- package/dist/analytics/token-info/index.d.ts +3 -0
- package/dist/analytics/token-info/params.d.ts +10 -0
- package/dist/analytics/token-info/providers.d.ts +4 -0
- package/dist/analytics/token-info/service.d.ts +19 -0
- package/dist/analytics/token-info/types.d.ts +45 -0
- package/dist/api/wallet-routes.d.ts +100 -0
- package/dist/audit/audit-log.d.ts +29 -0
- package/dist/browser-shim/build-shim.d.ts +31 -0
- package/dist/browser-shim/index.d.ts +1 -0
- package/dist/chains/evm/actions/helpers.d.ts +31 -0
- package/dist/chains/evm/actions/swap.d.ts +53 -0
- package/dist/chains/evm/actions/transfer.d.ts +10 -0
- package/dist/chains/evm/bridge-router.d.ts +44 -0
- package/dist/chains/evm/build.d.ts +2 -0
- package/dist/chains/evm/chain-handler.d.ts +37 -0
- package/dist/chains/evm/constants.d.ts +16 -0
- package/dist/chains/evm/dex/aerodrome/index.d.ts +6 -0
- package/dist/chains/evm/dex/aerodrome/services/AerodromeLpService.d.ts +27 -0
- package/dist/chains/evm/dex/aerodrome/types.d.ts +435 -0
- package/dist/chains/evm/dex/pancakeswp/index.d.ts +6 -0
- package/dist/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.d.ts +28 -0
- package/dist/chains/evm/dex/pancakeswp/types.d.ts +19 -0
- package/dist/chains/evm/dex/uniswap/index.d.ts +6 -0
- package/dist/chains/evm/dex/uniswap/services/UniswapV3LpService.d.ts +28 -0
- package/dist/chains/evm/dex/uniswap/types.d.ts +458 -0
- package/dist/chains/evm/generated/specs/spec-helpers.d.ts +35 -0
- package/dist/chains/evm/generated/specs/specs.d.ts +99 -0
- package/dist/chains/evm/gov-router.d.ts +6 -0
- package/dist/chains/evm/index.browser.d.ts +3 -0
- package/dist/chains/evm/index.d.ts +6 -0
- package/dist/chains/evm/prompts.d.ts +24 -0
- package/dist/chains/evm/providers/get-balance.d.ts +2 -0
- package/dist/chains/evm/providers/wallet.d.ts +35 -0
- package/dist/chains/evm/routes/sign.d.ts +13 -0
- package/dist/chains/evm/rpc-providers.d.ts +26 -0
- package/dist/chains/evm/service.d.ts +26 -0
- package/dist/chains/evm/templates/index.d.ts +1 -0
- package/dist/chains/evm/types/index.d.ts +296 -0
- package/dist/chains/evm/vitest.config.d.ts +2 -0
- package/dist/chains/registry.d.ts +3 -0
- package/dist/chains/solana/actions/confirmation.d.ts +9 -0
- package/dist/chains/solana/bn.d.ts +6 -0
- package/dist/chains/solana/build.d.ts +2 -0
- package/dist/chains/solana/constants.d.ts +2 -0
- package/dist/chains/solana/dex/meteora/e2e/scenarios.d.ts +10 -0
- package/dist/chains/solana/dex/meteora/e2e/test-utils.d.ts +28 -0
- package/dist/chains/solana/dex/meteora/index.d.ts +3 -0
- package/dist/chains/solana/dex/meteora/providers/positionProvider.d.ts +9 -0
- package/dist/chains/solana/dex/meteora/services/MeteoraLpService.d.ts +37 -0
- package/dist/chains/solana/dex/meteora/utils/dlmm.d.ts +6 -0
- package/dist/chains/solana/dex/meteora/utils/loadWallet.d.ts +14 -0
- package/dist/chains/solana/dex/meteora/utils/sendTransaction.d.ts +2 -0
- package/dist/chains/solana/dex/orca/index.d.ts +6 -0
- package/dist/chains/solana/dex/orca/providers/positionProvider.d.ts +10 -0
- package/dist/chains/solana/dex/orca/services/srv_orca.d.ts +10 -0
- package/dist/chains/solana/dex/orca/types.d.ts +61 -0
- package/dist/chains/solana/dex/orca/utils/loadWallet.d.ts +1 -0
- package/dist/chains/solana/dex/orca/utils/sendTransaction.d.ts +2 -0
- package/dist/chains/solana/dex/raydium/index.d.ts +6 -0
- package/dist/chains/solana/dex/raydium/providers/positionProvider.d.ts +10 -0
- package/dist/chains/solana/dex/raydium/services/srv_raydium.d.ts +104 -0
- package/dist/chains/solana/dex/raydium/types.d.ts +42 -0
- package/dist/chains/solana/environment.d.ts +15 -0
- package/dist/chains/solana/generated/specs/spec-helpers.d.ts +35 -0
- package/dist/chains/solana/generated/specs/specs.d.ts +73 -0
- package/dist/chains/solana/index.browser.d.ts +3 -0
- package/dist/chains/solana/index.d.ts +7 -0
- package/dist/chains/solana/keypairUtils.d.ts +7 -0
- package/dist/chains/solana/prompts.d.ts +12 -0
- package/dist/chains/solana/providers/wallet.d.ts +2 -0
- package/dist/chains/solana/routes/index.d.ts +2 -0
- package/dist/chains/solana/routes/sign.d.ts +16 -0
- package/dist/chains/solana/service.d.ts +237 -0
- package/dist/chains/solana/types.d.ts +377 -0
- package/dist/chains/solana/vitest.config.d.ts +2 -0
- package/dist/chains/wallet-action.d.ts +3 -0
- package/dist/contracts.d.ts +58 -0
- package/dist/core-augmentation.d.ts +9 -0
- package/dist/index.d.mts +27 -34727
- package/dist/index.d.ts +27 -0
- package/dist/index.mjs +28246 -21186
- package/dist/index.mjs.map +153 -0
- package/dist/lib/server-wallet-trade.d.ts +22 -0
- package/dist/lib/server-wallet-trade.js +333 -0
- package/dist/lib/server-wallet-trade.js.map +11 -0
- package/dist/lib/wallet-export-guard.d.ts +45 -0
- package/dist/lp/actions/liquidity.d.ts +2 -0
- package/dist/lp/e2e/real-token-tests.d.ts +6 -0
- package/dist/lp/e2e/scenarios.d.ts +9 -0
- package/dist/lp/e2e/test-utils.d.ts +28 -0
- package/dist/lp/lp-manager-entry.d.ts +18 -0
- package/dist/lp/services/ConcentratedLiquidityService.d.ts +32 -0
- package/dist/lp/services/DexInteractionService.d.ts +34 -0
- package/dist/lp/services/LpManagementService.d.ts +116 -0
- package/dist/lp/services/UserLpProfileService.d.ts +18 -0
- package/dist/lp/services/VaultService.d.ts +21 -0
- package/dist/lp/services/YieldOptimizationService.d.ts +59 -0
- package/dist/lp/services/__tests__/MockLpService.d.ts +17 -0
- package/dist/lp/types.d.ts +439 -0
- package/dist/lp/utils/solanaClient.d.ts +26 -0
- package/dist/plugin.d.ts +7 -0
- package/dist/policy/policy.d.ts +14 -0
- package/dist/providers/canonical-provider.d.ts +19 -0
- package/dist/providers/wallet-provider.d.ts +5 -0
- package/dist/register-routes.d.ts +1 -0
- package/dist/routes/plugin.d.ts +14 -0
- package/dist/routes/wallet-market-overview-route.d.ts +7 -0
- package/dist/sdk/abi.d.ts +396 -0
- package/dist/sdk/bridge/abis.d.ts +63 -0
- package/dist/sdk/bridge/client.d.ts +48 -0
- package/dist/sdk/bridge/index.d.ts +14 -0
- package/dist/sdk/bridge/solana.d.ts +131 -0
- package/dist/sdk/bridge/types.d.ts +92 -0
- package/dist/sdk/convenience.d.ts +104 -0
- package/dist/sdk/escrow/MutualStakeEscrow.d.ts +75 -0
- package/dist/sdk/escrow/types.d.ts +58 -0
- package/dist/sdk/escrow/verifiers.d.ts +25 -0
- package/dist/sdk/identity/erc8004.d.ts +304 -0
- package/dist/sdk/identity/reputation.d.ts +317 -0
- package/dist/sdk/identity/uaid.d.ts +192 -0
- package/dist/sdk/identity/validation.d.ts +282 -0
- package/dist/sdk/index.d.ts +133 -0
- package/dist/sdk/index.js +5284 -0
- package/dist/sdk/index.js.map +40 -0
- package/dist/sdk/policy/SpendingPolicy.d.ts +105 -0
- package/dist/sdk/policy/UptoBillingPolicy.d.ts +87 -0
- package/dist/sdk/router/PaymentRouter.d.ts +77 -0
- package/dist/sdk/router/index.d.ts +2 -0
- package/dist/sdk/swap/SwapModule.d.ts +47 -0
- package/dist/sdk/swap/abi.d.ts +50 -0
- package/dist/sdk/swap/index.d.ts +11 -0
- package/dist/sdk/swap/types.d.ts +101 -0
- package/dist/sdk/tokens/decimals.d.ts +64 -0
- package/dist/sdk/tokens/registry.d.ts +81 -0
- package/dist/sdk/tokens/solana.d.ts +107 -0
- package/dist/sdk/tokens/transfers.d.ts +94 -0
- package/dist/sdk/types.d.ts +129 -0
- package/dist/sdk/wallet-core.d.ts +29450 -0
- package/dist/sdk/x402/budget.d.ts +51 -0
- package/dist/sdk/x402/chains/abstract/index.d.ts +134 -0
- package/dist/sdk/x402/client.d.ts +66 -0
- package/dist/sdk/x402/index.d.ts +8 -0
- package/dist/sdk/x402/middleware.d.ts +37 -0
- package/dist/sdk/x402/multi-asset.d.ts +53 -0
- package/dist/sdk/x402/types.d.ts +109 -0
- package/dist/security/wallet-context-safety.d.ts +7 -0
- package/dist/security/wallet-financial-confirmation.d.ts +23 -0
- package/dist/services/wallet-backend-service.d.ts +39 -0
- package/dist/types/wallet-router.d.ts +130 -0
- package/dist/utils/intent-trajectory.d.ts +34 -0
- package/dist/wallet/backend.d.ts +41 -0
- package/dist/wallet/errors.d.ts +17 -0
- package/dist/wallet/index.d.ts +6 -0
- package/dist/wallet/local-eoa-backend.d.ts +37 -0
- package/dist/wallet/pending.d.ts +47 -0
- package/dist/wallet/select-backend.d.ts +11 -0
- package/dist/wallet/steward-backend.d.ts +22 -0
- package/dist/wallet-action.d.ts +1 -0
- package/dist/wallet-action.js +6292 -0
- package/dist/wallet-action.js.map +44 -0
- package/package.json +35 -21
- package/registry-entry.json +134 -0
- package/src/analytics/birdeye/actions/wallet-search-address.ts +85 -5
- package/src/analytics/birdeye/birdeye-task.ts +25 -9
- package/src/analytics/birdeye/birdeye.ts +6 -7
- package/src/analytics/birdeye/constants.ts +0 -1
- package/src/analytics/birdeye/providers/agent-portfolio-provider.ts +0 -1
- package/src/analytics/birdeye/providers/market.ts +51 -45
- package/src/analytics/birdeye/providers/portfolio-factory.ts +79 -38
- package/src/analytics/birdeye/providers/trending.ts +43 -46
- package/src/analytics/birdeye/providers/wallet.ts +0 -1
- package/src/analytics/birdeye/search-category.test.ts +1 -1
- package/src/analytics/birdeye/search-category.ts +77 -12
- package/src/analytics/birdeye/service.test.ts +146 -0
- package/src/analytics/birdeye/service.ts +220 -105
- package/src/analytics/birdeye/types/api/common.ts +0 -1
- package/src/analytics/birdeye/types/api/defi.ts +0 -1
- package/src/analytics/birdeye/types/api/pair.ts +0 -1
- package/src/analytics/birdeye/types/api/search.ts +0 -1
- package/src/analytics/birdeye/types/api/token.ts +0 -1
- package/src/analytics/birdeye/types/api/trader.ts +0 -1
- package/src/analytics/birdeye/types/api/wallet.ts +0 -1
- package/src/analytics/birdeye/types/shared.ts +0 -11
- package/src/analytics/birdeye/utils.test.ts +69 -0
- package/src/analytics/birdeye/utils.ts +11 -8
- package/src/analytics/dexscreener/search-category.ts +0 -1
- package/src/analytics/dexscreener/service.ts +7 -12
- package/src/analytics/dexscreener/types.ts +0 -1
- package/src/analytics/lpinfo/index.ts +5 -2
- package/src/analytics/lpinfo/kamino/README.md +2 -2
- package/src/analytics/lpinfo/kamino/index.ts +9 -2
- package/src/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.ts +6 -26
- package/src/analytics/lpinfo/kamino/providers/kaminoPoolProvider.ts +11 -12
- package/src/analytics/lpinfo/kamino/providers/kaminoProvider.ts +76 -32
- package/src/analytics/lpinfo/kamino/services/kaminoLiquidityService.ts +78 -38
- package/src/analytics/lpinfo/kamino/services/kaminoService.ts +71 -31
- package/src/analytics/lpinfo/steer/index.ts +7 -2
- package/src/analytics/lpinfo/steer/providers/steerLiquidityProvider.ts +25 -26
- package/src/analytics/lpinfo/steer/services/steerLiquidityService.ts +367 -149
- package/src/analytics/news/index.ts +7 -2
- package/src/analytics/news/interfaces/types.ts +0 -1
- package/src/analytics/news/providers/defiNewsProvider.ts +17 -44
- package/src/analytics/news/services/newsDataService.ts +1 -22
- package/src/analytics/news/utils/formatters.test.ts +60 -0
- package/src/analytics/news/utils/formatters.ts +0 -1
- package/src/analytics/token-info/action.ts +52 -212
- package/src/analytics/token-info/index.ts +1 -1
- package/src/analytics/token-info/params.test.ts +69 -0
- package/src/analytics/token-info/params.ts +13 -11
- package/src/analytics/token-info/providers.ts +46 -17
- package/src/analytics/token-info/service.ts +3 -3
- package/src/analytics/token-info/types.ts +2 -2
- package/src/api/wallet-routes.test.ts +56 -0
- package/src/api/wallet-routes.ts +1728 -0
- package/src/audit/audit-log.ts +57 -2
- package/src/browser-shim/build-shim.ts +1 -1
- package/src/browser-shim/shim.template.js +107 -117
- package/src/chains/{wallet-router.test.ts → __tests__/wallet-router.test.ts} +57 -10
- package/src/chains/evm/actions/helpers.ts +9 -7
- package/src/chains/evm/actions/swap.ts +176 -22
- package/src/chains/evm/actions/transfer.ts +29 -22
- package/src/chains/evm/biome.json +1 -1
- package/src/chains/evm/build.ts +6 -1
- package/src/chains/evm/constants.ts +19 -0
- package/src/chains/evm/contracts/artifacts/OZGovernor.json +25 -1682
- package/src/chains/evm/dex/aerodrome/index.ts +6 -1
- package/src/chains/evm/dex/aerodrome/services/AerodromeLpService.ts +41 -15
- package/src/chains/evm/dex/aerodrome/types.ts +1 -2
- package/src/chains/evm/dex/pancakeswp/index.ts +6 -1
- package/src/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.ts +54 -17
- package/src/chains/evm/dex/pancakeswp/types.ts +1 -2
- package/src/chains/evm/dex/uniswap/index.ts +6 -1
- package/src/chains/evm/dex/uniswap/services/UniswapV3LpService.ts +20 -9
- package/src/chains/evm/dex/uniswap/types.ts +1 -2
- package/src/chains/evm/gov-router.ts +3 -1
- package/src/chains/evm/index.browser.ts +1 -1
- package/src/chains/evm/index.ts +5 -1
- package/src/chains/evm/prompts.ts +5 -0
- package/src/chains/evm/providers/get-balance.ts +1 -1
- package/src/chains/evm/providers/wallet.ts +80 -9
- package/src/chains/evm/routes/sign.ts +35 -26
- package/src/chains/evm/rpc-providers.ts +1 -1
- package/src/chains/evm/types/index.ts +22 -2
- package/src/chains/registry.ts +1 -1
- package/src/chains/wallet-action.ts +301 -91
- package/src/index.ts +9 -5
- package/src/lib/wallet-export-guard.test.ts +233 -0
- package/src/lib/wallet-export-guard.ts +1 -1
- package/src/lp/actions/liquidity.ts +53 -26
- package/src/lp/e2e/real-token-tests.ts +0 -1
- package/src/lp/e2e/scenarios.ts +1 -2
- package/src/lp/e2e/test-utils.ts +20 -7
- package/src/lp/lp-manager-entry.ts +2 -5
- package/src/lp/services/ConcentratedLiquidityService.ts +3 -10
- package/src/lp/services/DexInteractionService.ts +1 -2
- package/src/lp/services/LpManagementService.test.ts +0 -1
- package/src/lp/services/LpManagementService.ts +75 -35
- package/src/lp/services/UserLpProfileService.ts +2 -3
- package/src/lp/services/VaultService.ts +10 -4
- package/src/lp/services/YieldOptimizationService.ts +29 -13
- package/src/lp/services/__tests__/MockLpService.ts +1 -2
- package/src/lp/types.ts +9 -13
- package/src/lp/utils/solanaClient.ts +4 -2
- package/src/plugin.routes.test.ts +24 -0
- package/src/plugin.ts +30 -13
- package/src/providers/canonical-provider.ts +1 -1
- package/src/providers/{unified-wallet-provider.ts → wallet-provider.ts} +3 -3
- package/src/routes/__fixtures__/coingecko-markets.recorded.json +97 -0
- package/src/routes/wallet-market-overview-route.ts +1 -1
- package/src/routes/wallet-market-overview.contract.test.ts +139 -0
- package/src/routes/wallet-market-overview.real.test.ts +83 -0
- package/src/sdk/escrow/MutualStakeEscrow.ts +1 -2
- package/src/sdk/identity/erc8004.ts +1 -1
- package/src/sdk/identity/validation.ts +3 -4
- package/src/sdk/index.ts +2 -2
- package/src/sdk/policy/SpendingPolicy.ts +1 -1
- package/src/sdk/router/PaymentRouter.ts +8 -11
- package/src/sdk/swap/SwapModule.ts +1 -1
- package/src/sdk/tokens/registry.ts +1 -1
- package/src/sdk/x402/middleware.ts +2 -8
- package/src/security/__tests__/wallet-context-safety.test.ts +79 -0
- package/src/security/__tests__/wallet-financial-confirmation.test.ts +88 -0
- package/src/security/wallet-context-safety.ts +128 -0
- package/src/security/wallet-financial-confirmation.ts +150 -0
- package/src/services/wallet-backend-service.ts +15 -1
- package/src/utils/intent-trajectory.ts +2 -2
- package/src/wallet/steward-backend.ts +4 -4
- package/dist/LpManagementService-BWrQ5-cO.mjs +0 -353
- package/dist/MockLpService-D_Apn4Fd.mjs +0 -99
- package/dist/aerodrome-CfnESC32.mjs +0 -890
- package/dist/chunk-hT5z_Zn9.mjs +0 -35
- package/dist/lib/server-wallet-trade.d.mts +0 -34
- package/dist/lib/server-wallet-trade.mjs +0 -306
- package/dist/meteora-BPX39hZo.mjs +0 -22640
- package/dist/orca-Bybp1HXO.mjs +0 -249
- package/dist/pancakeswp-CkEXlXti.mjs +0 -604
- package/dist/plugin-ZO_MTyd0.mjs +0 -529
- package/dist/raydium-rfaM9yEf.mjs +0 -539
- package/dist/sdk/index.d.mts +0 -32492
- package/dist/sdk/index.mjs +0 -6415
- package/dist/types-D5252NZk.mjs +0 -487
- package/dist/uniswap-CReXgXVN.mjs +0 -573
- package/dist/wallet-action.d.mts +0 -6
- package/dist/wallet-action.mjs +0 -820
- package/src/analytics/birdeye/tasks/birdeye.ts +0 -232
- package/src/analytics/lpinfo/index.d.ts +0 -7
- package/src/chains/evm/contracts/artifacts/TimelockController.json +0 -1007
- package/src/chains/evm/contracts/artifacts/VoteToken.json +0 -895
- package/src/lp/tasks/LpAutoRebalanceTask.ts +0 -117
- package/src/lp/tasks/__tests__/LpAutoRebalanceTask.test.ts +0 -370
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
1
|
import type { BIRDEYE_SUPPORTED_CHAINS } from "../utils";
|
|
3
2
|
|
|
4
3
|
// Types
|
|
@@ -23,16 +22,6 @@ export interface ContractAddress extends BaseAddress {
|
|
|
23
22
|
type: "contract";
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
/**
|
|
27
|
-
* Represents a type that can be one of four values: "solana", "base", "ethereum", or "L1".
|
|
28
|
-
*/
|
|
29
|
-
//export type TChain = 'solana' | 'base' | 'ethereum' | 'L1';
|
|
30
|
-
/**
|
|
31
|
-
* Type representing different data providers.
|
|
32
|
-
* Possible values are "birdeye" and "coinmarketcap".
|
|
33
|
-
*/
|
|
34
|
-
//export type TDataProvider = 'birdeye' | 'coinmarketcap';
|
|
35
|
-
|
|
36
25
|
// Shape of what's stored in the cache
|
|
37
26
|
export interface CacheWrapper<T> {
|
|
38
27
|
data: T;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
extractLimit,
|
|
4
|
+
formatPercentChange,
|
|
5
|
+
formatPrice,
|
|
6
|
+
formatValue,
|
|
7
|
+
shortenAddress,
|
|
8
|
+
} from "./utils.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Birdeye analytics formatting + intent extraction. These render financial
|
|
12
|
+
* figures shown to the user and parse the result limit from free text, so the
|
|
13
|
+
* suffix thresholds, sign handling, and clamping are pinned.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
describe("formatValue", () => {
|
|
17
|
+
it("scales to K/M/B with a $ prefix, N/A for falsy", () => {
|
|
18
|
+
expect(formatValue(undefined)).toBe("N/A");
|
|
19
|
+
expect(formatValue(0)).toBe("N/A");
|
|
20
|
+
expect(formatValue(500)).toBe("$500.00");
|
|
21
|
+
expect(formatValue(1_500)).toBe("$1.50K");
|
|
22
|
+
expect(formatValue(2_500_000)).toBe("$2.50M");
|
|
23
|
+
expect(formatValue(3_000_000_000)).toBe("$3.00B");
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe("formatPercentChange", () => {
|
|
28
|
+
it("uses ↑/↓ and absolute magnitude", () => {
|
|
29
|
+
expect(formatPercentChange(undefined)).toBe("N/A");
|
|
30
|
+
expect(formatPercentChange(5)).toBe("↑ 5.00%");
|
|
31
|
+
expect(formatPercentChange(-3.2)).toBe("↓ 3.20%");
|
|
32
|
+
expect(formatPercentChange(0)).toBe("↑ 0.00%");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe("shortenAddress", () => {
|
|
37
|
+
it("keeps short strings, abbreviates long ones", () => {
|
|
38
|
+
expect(shortenAddress(undefined)).toBe("Unknown");
|
|
39
|
+
expect(shortenAddress("0x1234")).toBe("0x1234");
|
|
40
|
+
expect(shortenAddress("0x1234567890abcdef")).toBe("0x1234...cdef");
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe("formatPrice", () => {
|
|
45
|
+
it("uses exponential below 0.01, two decimals otherwise", () => {
|
|
46
|
+
expect(formatPrice(undefined)).toBe("N/A");
|
|
47
|
+
expect(formatPrice(0)).toBe("N/A");
|
|
48
|
+
expect(formatPrice(0.005)).toBe("5.00e-3");
|
|
49
|
+
expect(formatPrice(12.5)).toBe("12.50");
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe("extractLimit", () => {
|
|
54
|
+
it("reads explicit limits and clamps to 1..100", () => {
|
|
55
|
+
expect(extractLimit("show 25 tokens")).toBe(25);
|
|
56
|
+
expect(extractLimit("show 500")).toBe(100);
|
|
57
|
+
expect(extractLimit("show 0")).toBe(1);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("falls back to semantic and contextual hints", () => {
|
|
61
|
+
expect(extractLimit("give me everything")).toBe(100);
|
|
62
|
+
expect(extractLimit("quick summary")).toBe(5);
|
|
63
|
+
expect(extractLimit("detailed report")).toBe(50);
|
|
64
|
+
expect(extractLimit("recent trades")).toBe(10);
|
|
65
|
+
expect(extractLimit("analyze the trend")).toBe(24);
|
|
66
|
+
expect(extractLimit("historical data")).toBe(50);
|
|
67
|
+
expect(extractLimit("hello")).toBe(10);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
1
|
import { logger } from "@elizaos/core";
|
|
2
|
+
import { sanitizeWalletDisplayLabel } from "../../security/wallet-context-safety.js";
|
|
3
3
|
import type { BirdeyeApiParams } from "./types/api/common";
|
|
4
4
|
import type {
|
|
5
5
|
TokenMarketSearchResponse,
|
|
@@ -176,7 +176,7 @@ export const extractChain = (
|
|
|
176
176
|
};
|
|
177
177
|
|
|
178
178
|
export const extractAddresses = (text: string): BaseAddress[] => {
|
|
179
|
-
if (!text
|
|
179
|
+
if (!text.match) return [];
|
|
180
180
|
const addresses: BaseAddress[] = [];
|
|
181
181
|
|
|
182
182
|
// Sui addresses (0x followed by 64 hex chars). Extract first so the EVM
|
|
@@ -214,7 +214,7 @@ export const extractAddresses = (text: string): BaseAddress[] => {
|
|
|
214
214
|
// Solana addresses (base58 strings)
|
|
215
215
|
const solAddresses = Array.from(text.matchAll(/[1-9A-HJ-NP-Za-km-z]{32,44}/g))
|
|
216
216
|
.filter((match) => {
|
|
217
|
-
const start = match.index
|
|
217
|
+
const start = match.index;
|
|
218
218
|
const end = start + match[0].length;
|
|
219
219
|
return (
|
|
220
220
|
!/[A-Za-z0-9]/.test(text[start - 1] ?? "") &&
|
|
@@ -443,9 +443,9 @@ export async function makeApiRequest<T>(
|
|
|
443
443
|
headers: {
|
|
444
444
|
"X-API-KEY": apiKey,
|
|
445
445
|
"x-chain": chain,
|
|
446
|
-
...(body
|
|
446
|
+
...(body !== undefined ? { "Content-Type": "application/json" } : {}),
|
|
447
447
|
},
|
|
448
|
-
...(body
|
|
448
|
+
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
449
449
|
});
|
|
450
450
|
|
|
451
451
|
if (!response.ok) {
|
|
@@ -510,8 +510,11 @@ export const formatTokenInfo = (
|
|
|
510
510
|
? `${Math.floor((Date.now() - new Date(token.creation_time).getTime()) / (1000 * 60 * 60 * 24))}d`
|
|
511
511
|
: "N/A";
|
|
512
512
|
|
|
513
|
+
const safeName = sanitizeWalletDisplayLabel(token.name || "unknown");
|
|
514
|
+
const safeSymbol = sanitizeWalletDisplayLabel(token.symbol || "unknown");
|
|
515
|
+
|
|
513
516
|
let output =
|
|
514
|
-
`🪙 ${
|
|
517
|
+
`🪙 ${safeName} @ ${safeSymbol}\n` +
|
|
515
518
|
`💰 USD: $${priceFormatted} (${priceChange})\n` +
|
|
516
519
|
`💎 FDV: ${fdv}\n` +
|
|
517
520
|
`💦 MCap: ${token.market_cap ? `$${(token.market_cap / 1_000_000).toFixed(2)}M` : "N/A"}\n` +
|
|
@@ -552,7 +555,7 @@ export const extractSymbols = (
|
|
|
552
555
|
// strict mode will only extract symbols that are clearly formatted as a symbol using $SOL format
|
|
553
556
|
mode: "strict" | "loose" = "loose",
|
|
554
557
|
): string[] => {
|
|
555
|
-
if (!text
|
|
558
|
+
if (!text.matchAll) return [];
|
|
556
559
|
const symbols = new Set<string>();
|
|
557
560
|
|
|
558
561
|
// Match patterns
|
|
@@ -681,7 +684,7 @@ export const waitFor = (ms: number) =>
|
|
|
681
684
|
new Promise((resolve) => setTimeout(resolve, ms));
|
|
682
685
|
|
|
683
686
|
export const convertToStringParams = (
|
|
684
|
-
params: BirdeyeApiParams,
|
|
687
|
+
params: BirdeyeApiParams | Record<string, unknown>,
|
|
685
688
|
): Record<string, string> => {
|
|
686
689
|
const result: Record<string, string> = {};
|
|
687
690
|
for (const [key, value] of Object.entries(params || {})) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
1
|
import type { IAgentRuntime, SearchCategoryRegistration } from "@elizaos/core";
|
|
3
2
|
|
|
4
3
|
export const DEXSCREENER_SEARCH_CATEGORY: SearchCategoryRegistration = {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
|
-
|
|
3
1
|
import {
|
|
4
2
|
cloudServiceApisBaseUrl,
|
|
5
3
|
toRuntimeSettings,
|
|
@@ -84,10 +82,7 @@ export class DexScreenerService extends Service {
|
|
|
84
82
|
return service;
|
|
85
83
|
}
|
|
86
84
|
|
|
87
|
-
async stop(): Promise<void> {
|
|
88
|
-
// Cleanup if needed
|
|
89
|
-
console.log("DexScreener service stopped");
|
|
90
|
-
}
|
|
85
|
+
async stop(): Promise<void> {}
|
|
91
86
|
|
|
92
87
|
private async get<T>(
|
|
93
88
|
path: string,
|
|
@@ -273,15 +268,15 @@ export class DexScreenerService extends Service {
|
|
|
273
268
|
pairs.sort((a, b) => {
|
|
274
269
|
switch (params.sortBy) {
|
|
275
270
|
case "volume":
|
|
276
|
-
return (b.volume
|
|
271
|
+
return (b.volume.h24 || 0) - (a.volume.h24 || 0);
|
|
277
272
|
case "liquidity":
|
|
278
273
|
return (b.liquidity?.usd || 0) - (a.liquidity?.usd || 0);
|
|
279
274
|
case "priceChange":
|
|
280
|
-
return (b.priceChange
|
|
275
|
+
return (b.priceChange.h24 || 0) - (a.priceChange.h24 || 0);
|
|
281
276
|
case "txns":
|
|
282
277
|
return (
|
|
283
|
-
(b.txns
|
|
284
|
-
(a.txns
|
|
278
|
+
(b.txns.h24.buys + b.txns.h24.sells || 0) -
|
|
279
|
+
(a.txns.h24.buys + a.txns.h24.sells || 0)
|
|
285
280
|
);
|
|
286
281
|
default:
|
|
287
282
|
return 0;
|
|
@@ -328,7 +323,7 @@ export class DexScreenerService extends Service {
|
|
|
328
323
|
// Filter by chain if specified
|
|
329
324
|
const filteredProfiles = params.chain
|
|
330
325
|
? profiles.filter(
|
|
331
|
-
(p) => p.chainId
|
|
326
|
+
(p) => p.chainId.toLowerCase() === params.chain?.toLowerCase(),
|
|
332
327
|
)
|
|
333
328
|
: profiles;
|
|
334
329
|
|
|
@@ -392,7 +387,7 @@ export class DexScreenerService extends Service {
|
|
|
392
387
|
: [responseData];
|
|
393
388
|
|
|
394
389
|
const profile = profiles.find(
|
|
395
|
-
(p) => p.tokenAddress
|
|
390
|
+
(p) => p.tokenAddress.toLowerCase() === tokenAddress.toLowerCase(),
|
|
396
391
|
);
|
|
397
392
|
|
|
398
393
|
if (!profile) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Plugin } from "@elizaos/core";
|
|
1
|
+
import type { IAgentRuntime, Plugin } from "@elizaos/core";
|
|
3
2
|
// Kamino Protocol Plugin
|
|
4
3
|
import { kaminoPlugin } from "./kamino";
|
|
5
4
|
// Steer Finance Plugin
|
|
@@ -34,6 +33,10 @@ export const lpinfoPlugin: Plugin = {
|
|
|
34
33
|
],
|
|
35
34
|
actions: [...(steerPlugin.actions || []), ...(kaminoPlugin.actions || [])],
|
|
36
35
|
services: [...(steerPlugin.services || []), ...(kaminoPlugin.services || [])],
|
|
36
|
+
async dispose(runtime: IAgentRuntime) {
|
|
37
|
+
await steerPlugin.dispose?.(runtime);
|
|
38
|
+
await kaminoPlugin.dispose?.(runtime);
|
|
39
|
+
},
|
|
37
40
|
};
|
|
38
41
|
|
|
39
42
|
export default lpinfoPlugin;
|
|
@@ -91,9 +91,9 @@ The plugin includes comprehensive error handling for:
|
|
|
91
91
|
- API rate limits
|
|
92
92
|
- Market data unavailability
|
|
93
93
|
|
|
94
|
-
##
|
|
94
|
+
## Enhancement Backlog
|
|
95
95
|
|
|
96
|
-
Potential
|
|
96
|
+
Potential feature additions:
|
|
97
97
|
|
|
98
98
|
- Position management actions (deposit, withdraw, borrow, repay)
|
|
99
99
|
- Yield optimization recommendations
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Plugin } from "@elizaos/core";
|
|
1
|
+
import type { IAgentRuntime, Plugin } from "@elizaos/core";
|
|
3
2
|
import { kaminoLiquidityProvider } from "./providers/kaminoLiquidityProvider";
|
|
4
3
|
import { kaminoPoolProvider } from "./providers/kaminoPoolProvider";
|
|
5
4
|
// Providers
|
|
@@ -19,6 +18,14 @@ export const kaminoPlugin: Plugin = {
|
|
|
19
18
|
providers: [kaminoProvider, kaminoLiquidityProvider, kaminoPoolProvider],
|
|
20
19
|
actions: [],
|
|
21
20
|
services: [KaminoService, KaminoLiquidityService],
|
|
21
|
+
async dispose(runtime: IAgentRuntime) {
|
|
22
|
+
const kamino = runtime.getService<KaminoService>(KaminoService.serviceType);
|
|
23
|
+
await kamino?.stop();
|
|
24
|
+
const liquidity = runtime.getService<KaminoLiquidityService>(
|
|
25
|
+
KaminoLiquidityService.serviceType,
|
|
26
|
+
);
|
|
27
|
+
await liquidity?.stop();
|
|
28
|
+
},
|
|
22
29
|
};
|
|
23
30
|
|
|
24
31
|
export default kaminoPlugin;
|
|
@@ -1,28 +1,12 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
1
|
import type { IAgentRuntime, Memory, Provider, State } from "@elizaos/core";
|
|
3
2
|
import { ModelType } from "@elizaos/core";
|
|
4
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
KaminoLiquidityService,
|
|
5
|
+
KaminoStrategy,
|
|
6
|
+
} from "../services/kaminoLiquidityService";
|
|
5
7
|
|
|
6
8
|
const KAMINO_LIQUIDITY_TEXT_LIMIT = 4000;
|
|
7
9
|
|
|
8
|
-
// Import the KaminoStrategy type from the service
|
|
9
|
-
interface KaminoStrategy {
|
|
10
|
-
address: string;
|
|
11
|
-
dataSize: number;
|
|
12
|
-
lamports: number;
|
|
13
|
-
owner: string;
|
|
14
|
-
strategyType: string;
|
|
15
|
-
estimatedTvl: number;
|
|
16
|
-
volume24h: number;
|
|
17
|
-
apy: number;
|
|
18
|
-
tokenA: string;
|
|
19
|
-
tokenB: string;
|
|
20
|
-
feeTier: string;
|
|
21
|
-
rebalancing: string;
|
|
22
|
-
lastRebalance: string;
|
|
23
|
-
positions: unknown[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
10
|
function asPromptRecord(value: unknown): Record<string, unknown> {
|
|
27
11
|
return value && typeof value === "object"
|
|
28
12
|
? (value as Record<string, unknown>)
|
|
@@ -119,8 +103,6 @@ export const kaminoLiquidityProvider: Provider = {
|
|
|
119
103
|
cacheScope: "turn",
|
|
120
104
|
roleGate: { minRole: "USER" },
|
|
121
105
|
get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {
|
|
122
|
-
console.log("KAMINO_LIQUIDITY provider called");
|
|
123
|
-
|
|
124
106
|
let liquidityInfo = "";
|
|
125
107
|
|
|
126
108
|
try {
|
|
@@ -141,8 +123,6 @@ export const kaminoLiquidityProvider: Provider = {
|
|
|
141
123
|
liquidityInfo += "❌ Kamino liquidity service not available.\n";
|
|
142
124
|
} else {
|
|
143
125
|
if (tokenIdentifier) {
|
|
144
|
-
console.log(`Token identifier found: ${tokenIdentifier}`);
|
|
145
|
-
|
|
146
126
|
liquidityInfo += `=== KAMINO LIQUIDITY POOL STATS ===\n\n`;
|
|
147
127
|
liquidityInfo += `Token: ${tokenIdentifier}\n\n`;
|
|
148
128
|
|
|
@@ -217,7 +197,7 @@ export const kaminoLiquidityProvider: Provider = {
|
|
|
217
197
|
|
|
218
198
|
return {
|
|
219
199
|
data,
|
|
220
|
-
values: {}
|
|
200
|
+
values: {},
|
|
221
201
|
text,
|
|
222
202
|
};
|
|
223
203
|
},
|
|
@@ -375,7 +355,7 @@ async function generateEnhancedKaminoLiquidityReport(
|
|
|
375
355
|
const marketStats = await data.kaminoLiquidityService.getMarketStatistics();
|
|
376
356
|
|
|
377
357
|
// Create a focused prompt for the LLM
|
|
378
|
-
const liquidityPrompt = `
|
|
358
|
+
const liquidityPrompt = `Generate a comprehensive liquidity analysis report for token ${data.tokenIdentifier} on Kamino Finance.
|
|
379
359
|
|
|
380
360
|
TOKEN INFORMATION:
|
|
381
361
|
${formatTokenInfoForPrompt(data.tokenInfo)}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
// @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
|
|
2
1
|
import type { IAgentRuntime, Memory, Provider, State } from "@elizaos/core";
|
|
3
2
|
import { ModelType } from "@elizaos/core";
|
|
4
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
KaminoLiquidityService,
|
|
5
|
+
KaminoPoolByAddressResult,
|
|
6
|
+
} from "../services/kaminoLiquidityService";
|
|
5
7
|
|
|
6
8
|
const KAMINO_POOL_TEXT_LIMIT = 4000;
|
|
9
|
+
type KaminoPoolReportData = NonNullable<KaminoPoolByAddressResult>;
|
|
7
10
|
|
|
8
11
|
/**
|
|
9
12
|
* Kamino Pool-Specific Provider
|
|
@@ -22,8 +25,6 @@ export const kaminoPoolProvider: Provider = {
|
|
|
22
25
|
cacheScope: "turn",
|
|
23
26
|
roleGate: { minRole: "USER" },
|
|
24
27
|
get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {
|
|
25
|
-
console.log("KAMINO_POOL provider called");
|
|
26
|
-
|
|
27
28
|
let poolInfo = "";
|
|
28
29
|
|
|
29
30
|
try {
|
|
@@ -44,8 +45,6 @@ export const kaminoPoolProvider: Provider = {
|
|
|
44
45
|
poolInfo += "❌ Kamino liquidity service not available.\n";
|
|
45
46
|
} else {
|
|
46
47
|
if (poolAddress) {
|
|
47
|
-
console.log(`Pool address found: ${poolAddress}`);
|
|
48
|
-
|
|
49
48
|
poolInfo += `=== KAMINO POOL ANALYSIS ===\n\n`;
|
|
50
49
|
poolInfo += `🔍 Pool Address: ${poolAddress}\n\n`;
|
|
51
50
|
|
|
@@ -107,7 +106,7 @@ export const kaminoPoolProvider: Provider = {
|
|
|
107
106
|
|
|
108
107
|
return {
|
|
109
108
|
data,
|
|
110
|
-
values: {}
|
|
109
|
+
values: {},
|
|
111
110
|
text,
|
|
112
111
|
};
|
|
113
112
|
},
|
|
@@ -221,7 +220,7 @@ function formatPromptValue(value: unknown): string {
|
|
|
221
220
|
*/
|
|
222
221
|
async function generatePoolReport(
|
|
223
222
|
runtime: IAgentRuntime,
|
|
224
|
-
poolData:
|
|
223
|
+
poolData: KaminoPoolReportData,
|
|
225
224
|
_kaminoLiquidityService: KaminoLiquidityService,
|
|
226
225
|
): Promise<string> {
|
|
227
226
|
let report = "";
|
|
@@ -232,7 +231,7 @@ async function generatePoolReport(
|
|
|
232
231
|
report += ` 📍 Address: ${poolData.address}\n`;
|
|
233
232
|
report += ` 📅 Last Updated: ${new Date(poolData.timestamp).toLocaleString()}\n\n`;
|
|
234
233
|
|
|
235
|
-
if (poolData
|
|
234
|
+
if ("strategy" in poolData) {
|
|
236
235
|
const strategy = poolData.strategy;
|
|
237
236
|
|
|
238
237
|
report += `📊 STRATEGY DETAILS:\n`;
|
|
@@ -284,7 +283,7 @@ async function generatePoolReport(
|
|
|
284
283
|
}
|
|
285
284
|
|
|
286
285
|
// Metrics summary
|
|
287
|
-
if (poolData
|
|
286
|
+
if ("metrics" in poolData) {
|
|
288
287
|
const metrics = poolData.metrics;
|
|
289
288
|
report += `📈 PERFORMANCE METRICS:\n`;
|
|
290
289
|
report += ` 💰 Total Value Locked: $${metrics.totalValueLocked.toLocaleString()}\n`;
|
|
@@ -323,11 +322,11 @@ async function generatePoolReport(
|
|
|
323
322
|
*/
|
|
324
323
|
async function generateEnhancedPoolAnalysis(
|
|
325
324
|
runtime: IAgentRuntime,
|
|
326
|
-
poolData:
|
|
325
|
+
poolData: KaminoPoolReportData,
|
|
327
326
|
): Promise<string> {
|
|
328
327
|
try {
|
|
329
328
|
// Create a focused prompt for the LLM
|
|
330
|
-
const analysisPrompt = `
|
|
329
|
+
const analysisPrompt = `Generate a concise pool analysis for Kamino Finance pool at address ${poolData.address}.
|
|
331
330
|
|
|
332
331
|
POOL DATA:
|
|
333
332
|
${formatPoolDataForPrompt(poolData)}
|