@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,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type {
|
|
2
|
+
Entity,
|
|
3
|
+
IAgentRuntime,
|
|
4
|
+
Memory,
|
|
5
|
+
Provider,
|
|
6
|
+
State,
|
|
7
|
+
} from "@elizaos/core";
|
|
3
8
|
import { ModelType } from "@elizaos/core";
|
|
4
9
|
import type { KaminoService } from "../services/kaminoService";
|
|
5
10
|
|
|
@@ -19,6 +24,54 @@ type AccountLike = {
|
|
|
19
24
|
}>;
|
|
20
25
|
};
|
|
21
26
|
|
|
27
|
+
type Metawallets = NonNullable<AccountLike["metawallets"]>;
|
|
28
|
+
|
|
29
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
30
|
+
return value !== null && typeof value === "object";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isMetawallets(value: unknown): value is Metawallets {
|
|
34
|
+
return (
|
|
35
|
+
Array.isArray(value) &&
|
|
36
|
+
value.every(
|
|
37
|
+
(metawallet) =>
|
|
38
|
+
isRecord(metawallet) &&
|
|
39
|
+
(metawallet.keypairs === undefined || isRecord(metawallet.keypairs)),
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function getAccountFromMessage(
|
|
45
|
+
runtime: IAgentRuntime,
|
|
46
|
+
message: Memory,
|
|
47
|
+
): Promise<unknown | null> {
|
|
48
|
+
const entity = await runtime.getEntityById(message.entityId);
|
|
49
|
+
if (!entity) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return buildAccountLike(entity);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function buildAccountLike(entity: Entity): AccountLike {
|
|
57
|
+
const metadata = isRecord(entity.metadata) ? entity.metadata : {};
|
|
58
|
+
const account = isRecord(metadata.account) ? metadata.account : {};
|
|
59
|
+
const firstName = entity.names[0];
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
...metadata,
|
|
63
|
+
...account,
|
|
64
|
+
id: entity.id,
|
|
65
|
+
username: account.username ?? metadata.username,
|
|
66
|
+
name: account.name ?? metadata.name ?? firstName,
|
|
67
|
+
metawallets: isMetawallets(account.metawallets)
|
|
68
|
+
? account.metawallets
|
|
69
|
+
: isMetawallets(metadata.metawallets)
|
|
70
|
+
? metadata.metawallets
|
|
71
|
+
: undefined,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
22
75
|
function getSolanaWalletAddresses(account: unknown): string[] {
|
|
23
76
|
const walletAddresses: string[] = [];
|
|
24
77
|
const accountData = account as AccountLike;
|
|
@@ -28,7 +81,7 @@ function getSolanaWalletAddresses(account: unknown): string[] {
|
|
|
28
81
|
}
|
|
29
82
|
|
|
30
83
|
for (const mw of accountData.metawallets) {
|
|
31
|
-
if (!mw
|
|
84
|
+
if (!mw.keypairs) {
|
|
32
85
|
continue;
|
|
33
86
|
}
|
|
34
87
|
|
|
@@ -95,7 +148,7 @@ export const kaminoProvider: Provider = {
|
|
|
95
148
|
description:
|
|
96
149
|
"Provides information about Kamino lending protocol positions, market data, and available lending/borrowing opportunities",
|
|
97
150
|
descriptionCompressed:
|
|
98
|
-
"
|
|
151
|
+
"Kamino lending positions, markets, lend/borrow opportunities",
|
|
99
152
|
dynamic: true,
|
|
100
153
|
contexts: ["finance", "crypto", "wallet"],
|
|
101
154
|
contextGate: { anyOf: ["finance", "crypto", "wallet"] },
|
|
@@ -103,8 +156,6 @@ export const kaminoProvider: Provider = {
|
|
|
103
156
|
cacheScope: "turn",
|
|
104
157
|
roleGate: { minRole: "OWNER" },
|
|
105
158
|
get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {
|
|
106
|
-
console.log("KAMINO_LENDING provider called");
|
|
107
|
-
|
|
108
159
|
let kaminoInfo = "";
|
|
109
160
|
|
|
110
161
|
try {
|
|
@@ -113,31 +164,25 @@ export const kaminoProvider: Provider = {
|
|
|
113
164
|
if (isDM) {
|
|
114
165
|
const account = await getAccountFromMessage(runtime, message);
|
|
115
166
|
if (!account) {
|
|
116
|
-
console.log("No account found for user");
|
|
117
167
|
return {
|
|
118
168
|
data: {},
|
|
119
|
-
values: {}
|
|
169
|
+
values: {},
|
|
120
170
|
text: "No account found for this user.",
|
|
121
171
|
};
|
|
122
172
|
}
|
|
123
173
|
|
|
124
|
-
console.log("Account found, getting Kamino service...");
|
|
125
|
-
|
|
126
174
|
// Get Kamino service with proper type casting
|
|
127
175
|
const kaminoService = runtime.getService(
|
|
128
176
|
"KAMINO_SERVICE",
|
|
129
177
|
) as KaminoService;
|
|
130
178
|
if (!kaminoService) {
|
|
131
|
-
console.log("Kamino service not available");
|
|
132
179
|
return {
|
|
133
180
|
data: {},
|
|
134
|
-
values: {}
|
|
181
|
+
values: {},
|
|
135
182
|
text: "Kamino service not available.",
|
|
136
183
|
};
|
|
137
184
|
}
|
|
138
185
|
|
|
139
|
-
console.log("Kamino service found, generating report...");
|
|
140
|
-
|
|
141
186
|
kaminoInfo += `=== KAMINO LENDING PROTOCOL REPORT ===\n\n`;
|
|
142
187
|
|
|
143
188
|
// Get user's Kamino positions
|
|
@@ -182,7 +227,7 @@ export const kaminoProvider: Provider = {
|
|
|
182
227
|
|
|
183
228
|
return {
|
|
184
229
|
data,
|
|
185
|
-
values: {}
|
|
230
|
+
values: {},
|
|
186
231
|
text,
|
|
187
232
|
};
|
|
188
233
|
},
|
|
@@ -214,10 +259,8 @@ async function getUserKaminoPositions(
|
|
|
214
259
|
// Get real positions from Kamino service
|
|
215
260
|
const positions = await kaminoService.getUserPositions(walletAddress);
|
|
216
261
|
|
|
217
|
-
if (positions
|
|
262
|
+
if ("error" in positions) {
|
|
218
263
|
positionsInfo += ` ❌ Error: ${positions.error}\n\n`;
|
|
219
|
-
} else if (positions.message) {
|
|
220
|
-
positionsInfo += ` ℹ️ ${positions.message}\n\n`;
|
|
221
264
|
} else if (
|
|
222
265
|
positions.lending.length === 0 &&
|
|
223
266
|
positions.borrowing.length === 0
|
|
@@ -314,12 +357,12 @@ async function getAvailableKaminoReserves(
|
|
|
314
357
|
reservesInfo += "💰 TOP LENDING OPPORTUNITIES:\n\n";
|
|
315
358
|
|
|
316
359
|
for (const reserve of topLendingReserves) {
|
|
317
|
-
reservesInfo += `🔸 ${reserve.
|
|
318
|
-
reservesInfo += ` Supply APY: ${reserve.supplyApy
|
|
319
|
-
reservesInfo += ` Borrow APY: ${reserve.borrowApy
|
|
320
|
-
reservesInfo += ` Total Supply: $${reserve.totalSupply
|
|
321
|
-
reservesInfo += ` Total Borrow: $${reserve.totalBorrow
|
|
322
|
-
reservesInfo += ` Utilization: ${(reserve.utilization * 100)
|
|
360
|
+
reservesInfo += `🔸 ${reserve.marketName || reserve.market || "Unknown"}\n`;
|
|
361
|
+
reservesInfo += ` Supply APY: ${reserve.supplyApy.toFixed(2) || "N/A"}%\n`;
|
|
362
|
+
reservesInfo += ` Borrow APY: ${reserve.borrowApy.toFixed(2) || "N/A"}%\n`;
|
|
363
|
+
reservesInfo += ` Total Supply: $${reserve.totalSupply.toLocaleString() || "N/A"}\n`;
|
|
364
|
+
reservesInfo += ` Total Borrow: $${reserve.totalBorrow.toLocaleString() || "N/A"}\n`;
|
|
365
|
+
reservesInfo += ` Utilization: ${(reserve.utilization * 100).toFixed(2) || "N/A"}%\n`;
|
|
323
366
|
reservesInfo += ` Market: ${reserve.marketName || "Unknown"}\n\n`;
|
|
324
367
|
}
|
|
325
368
|
}
|
|
@@ -355,22 +398,23 @@ async function getKaminoMarketOverview(
|
|
|
355
398
|
}
|
|
356
399
|
|
|
357
400
|
marketInfo += `📊 Total Markets: ${overview.totalMarkets}\n`;
|
|
358
|
-
marketInfo += `💰 Total TVL: $${overview.totalTvl
|
|
359
|
-
marketInfo += `💳 Total Borrowed: $${overview.totalBorrowed
|
|
401
|
+
marketInfo += `💰 Total TVL: $${overview.totalTvl.toLocaleString() || "N/A"}\n`;
|
|
402
|
+
marketInfo += `💳 Total Borrowed: $${overview.totalBorrowed.toLocaleString() || "N/A"}\n\n`;
|
|
360
403
|
|
|
361
404
|
// Show top markets by TVL
|
|
362
405
|
if (overview.markets && overview.markets.length > 0) {
|
|
363
406
|
marketInfo += "🏆 TOP MARKETS BY TVL:\n\n";
|
|
364
407
|
|
|
365
408
|
const topMarkets = overview.markets
|
|
366
|
-
.sort((a, b) => (b.
|
|
409
|
+
.sort((a, b) => (b.lamports || 0) - (a.lamports || 0))
|
|
367
410
|
.slice(0, 3);
|
|
368
411
|
|
|
369
412
|
for (const market of topMarkets) {
|
|
370
|
-
marketInfo += `🔸 ${market.
|
|
371
|
-
marketInfo += `
|
|
372
|
-
marketInfo += `
|
|
373
|
-
marketInfo += `
|
|
413
|
+
marketInfo += `🔸 ${market.marketName || "Unknown Market"}\n`;
|
|
414
|
+
marketInfo += ` Address: ${market.address}\n`;
|
|
415
|
+
marketInfo += ` Data Size: ${market.dataSize.toLocaleString()} bytes\n`;
|
|
416
|
+
marketInfo += ` Lamports: ${market.lamports.toLocaleString()}\n`;
|
|
417
|
+
marketInfo += ` Owner: ${market.owner}\n\n`;
|
|
374
418
|
}
|
|
375
419
|
}
|
|
376
420
|
} catch (error) {
|
|
@@ -440,7 +484,7 @@ async function generateEnhancedKaminoLendingReport(
|
|
|
440
484
|
): Promise<string> {
|
|
441
485
|
try {
|
|
442
486
|
// Create a focused prompt for the LLM
|
|
443
|
-
const lendingPrompt = `
|
|
487
|
+
const lendingPrompt = `Generate a comprehensive lending analysis report for Kamino Finance lending.
|
|
444
488
|
|
|
445
489
|
USER ACCOUNT DATA:
|
|
446
490
|
${formatAccountForPrompt(data.account)}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import type { AgentRuntime } from "@elizaos/core";
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
3
2
|
import { logger, Service } from "@elizaos/core";
|
|
4
3
|
|
|
5
4
|
// Kamino API constants
|
|
6
5
|
const KAMINO_API_BASE_URL = "https://api.kamino.finance";
|
|
6
|
+
const KAMINO_LIQUIDITY_PROGRAM_ID = "kamino-rest-api";
|
|
7
7
|
|
|
8
8
|
// Known token addresses for reference
|
|
9
|
-
const KNOWN_TOKENS = {
|
|
9
|
+
const KNOWN_TOKENS: Record<string, string> = {
|
|
10
10
|
HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC: "AI16Z Token",
|
|
11
11
|
ai16z: "AI16Z Token (Symbol)",
|
|
12
12
|
"4WfUvajjYTrq7KRdToJBkoHQ6bSt7NyBeLhP9LKwtFKh": "Kamino Strategy",
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// Interfaces for type safety
|
|
16
|
-
interface KaminoStrategy {
|
|
16
|
+
export interface KaminoStrategy {
|
|
17
17
|
address: string;
|
|
18
18
|
strategyType: string;
|
|
19
19
|
estimatedTvl: number;
|
|
@@ -34,14 +34,14 @@ interface KaminoStrategy {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
interface KaminoPosition {
|
|
37
|
+
export interface KaminoPosition {
|
|
38
38
|
type: string;
|
|
39
39
|
range: string;
|
|
40
40
|
liquidity: number;
|
|
41
41
|
feesEarned: number;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
interface TokenLiquidityStats {
|
|
44
|
+
export interface TokenLiquidityStats {
|
|
45
45
|
tokenIdentifier: string;
|
|
46
46
|
normalizedToken: string;
|
|
47
47
|
tokenName: string;
|
|
@@ -53,7 +53,7 @@ interface TokenLiquidityStats {
|
|
|
53
53
|
poolCount: number;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
interface TokenInfo {
|
|
56
|
+
export interface TokenInfo {
|
|
57
57
|
name: string;
|
|
58
58
|
symbol: string;
|
|
59
59
|
address: string;
|
|
@@ -124,7 +124,7 @@ interface KaminoMarketStatistics {
|
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
interface KaminoPoolInfoWithStrategy {
|
|
127
|
+
export interface KaminoPoolInfoWithStrategy {
|
|
128
128
|
address: string;
|
|
129
129
|
strategy: KaminoStrategy;
|
|
130
130
|
tokenInfo: TokenInfo | null;
|
|
@@ -140,20 +140,22 @@ interface KaminoPoolInfoWithStrategy {
|
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
interface KaminoPoolInfoTokenFallback {
|
|
143
|
+
export interface KaminoPoolInfoTokenFallback {
|
|
144
144
|
address: string;
|
|
145
145
|
tokenInfo: TokenInfo;
|
|
146
146
|
timestamp: string;
|
|
147
147
|
note: string;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
type KaminoPoolByAddressResult =
|
|
150
|
+
export type KaminoPoolByAddressResult =
|
|
151
151
|
| KaminoPoolInfoWithStrategy
|
|
152
152
|
| KaminoPoolInfoTokenFallback
|
|
153
153
|
| null;
|
|
154
154
|
|
|
155
155
|
interface KaminoLiquidityConnectionTest {
|
|
156
156
|
apiBaseUrl: string;
|
|
157
|
+
programId: string;
|
|
158
|
+
rpcEndpoint: string;
|
|
157
159
|
connectionTest: boolean;
|
|
158
160
|
stakingYieldsTest: boolean;
|
|
159
161
|
limoTradesTest: boolean;
|
|
@@ -176,6 +178,19 @@ interface LimoTrade {
|
|
|
176
178
|
order: string;
|
|
177
179
|
}
|
|
178
180
|
|
|
181
|
+
function getStringSetting(
|
|
182
|
+
runtime: IAgentRuntime | undefined,
|
|
183
|
+
key: string,
|
|
184
|
+
fallback: string,
|
|
185
|
+
): string {
|
|
186
|
+
const value = runtime?.getSetting(key);
|
|
187
|
+
return typeof value === "string" && value.length > 0 ? value : fallback;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function formatLogError(error: unknown): string {
|
|
191
|
+
return error instanceof Error ? error.message : String(error);
|
|
192
|
+
}
|
|
193
|
+
|
|
179
194
|
/**
|
|
180
195
|
* Kamino Liquidity Protocol Service
|
|
181
196
|
* Handles interactions with Kamino liquidity protocol using the official API
|
|
@@ -189,11 +204,14 @@ export class KaminoLiquidityService extends Service {
|
|
|
189
204
|
capabilityDescription =
|
|
190
205
|
"Provides detailed access to Kamino liquidity protocol pools and strategies for specific tokens via the official API." as const;
|
|
191
206
|
|
|
192
|
-
constructor(runtime
|
|
207
|
+
constructor(runtime?: IAgentRuntime) {
|
|
193
208
|
super(runtime);
|
|
194
209
|
|
|
195
|
-
this.apiBaseUrl =
|
|
196
|
-
runtime
|
|
210
|
+
this.apiBaseUrl = getStringSetting(
|
|
211
|
+
runtime,
|
|
212
|
+
"KAMINO_API_URL",
|
|
213
|
+
KAMINO_API_BASE_URL,
|
|
214
|
+
);
|
|
197
215
|
|
|
198
216
|
logger.log(
|
|
199
217
|
`KaminoLiquidityService initialized with API: ${this.apiBaseUrl}`,
|
|
@@ -225,7 +243,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
225
243
|
|
|
226
244
|
return await response.json();
|
|
227
245
|
} catch (error) {
|
|
228
|
-
logger.error(
|
|
246
|
+
logger.error(
|
|
247
|
+
`API request failed for ${endpoint}:`,
|
|
248
|
+
formatLogError(error),
|
|
249
|
+
);
|
|
229
250
|
throw error;
|
|
230
251
|
}
|
|
231
252
|
}
|
|
@@ -304,7 +325,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
304
325
|
} catch (error) {
|
|
305
326
|
logger.error(
|
|
306
327
|
`Error resolving token ${tokenIdentifier} with Birdeye:`,
|
|
307
|
-
error,
|
|
328
|
+
formatLogError(error),
|
|
308
329
|
);
|
|
309
330
|
return null;
|
|
310
331
|
}
|
|
@@ -321,7 +342,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
321
342
|
logger.log(`Found ${yields.length} staking yields`);
|
|
322
343
|
return yields;
|
|
323
344
|
} catch (error) {
|
|
324
|
-
logger.error("Error fetching staking yields:", error);
|
|
345
|
+
logger.error("Error fetching staking yields:", formatLogError(error));
|
|
325
346
|
return [];
|
|
326
347
|
}
|
|
327
348
|
}
|
|
@@ -338,7 +359,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
338
359
|
logger.log(`Found ${yields.length} median staking yields`);
|
|
339
360
|
return yields;
|
|
340
361
|
} catch (error) {
|
|
341
|
-
logger.error(
|
|
362
|
+
logger.error(
|
|
363
|
+
"Error fetching median staking yields:",
|
|
364
|
+
formatLogError(error),
|
|
365
|
+
);
|
|
342
366
|
return [];
|
|
343
367
|
}
|
|
344
368
|
}
|
|
@@ -366,7 +390,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
366
390
|
logger.log(`Found ${trades.length} Limo trades`);
|
|
367
391
|
return trades;
|
|
368
392
|
} catch (error) {
|
|
369
|
-
logger.error("Error fetching Limo trades:", error);
|
|
393
|
+
logger.error("Error fetching Limo trades:", formatLogError(error));
|
|
370
394
|
return [];
|
|
371
395
|
}
|
|
372
396
|
}
|
|
@@ -434,7 +458,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
434
458
|
logger.log("Market statistics retrieved successfully");
|
|
435
459
|
return stats;
|
|
436
460
|
} catch (error) {
|
|
437
|
-
logger.error("Error fetching market statistics:", error);
|
|
461
|
+
logger.error("Error fetching market statistics:", formatLogError(error));
|
|
438
462
|
return null;
|
|
439
463
|
}
|
|
440
464
|
}
|
|
@@ -512,7 +536,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
512
536
|
logger.log(`Found ${strategies.length} strategies from API data`);
|
|
513
537
|
return strategies;
|
|
514
538
|
} catch (error) {
|
|
515
|
-
logger.error("Error getting all strategies:", error);
|
|
539
|
+
logger.error("Error getting all strategies:", formatLogError(error));
|
|
516
540
|
return [];
|
|
517
541
|
}
|
|
518
542
|
}
|
|
@@ -602,7 +626,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
602
626
|
logger.log(`No strategy found for address: ${strategyAddress}`);
|
|
603
627
|
return null;
|
|
604
628
|
} catch (error) {
|
|
605
|
-
logger.error("Error getting strategy by address:", error);
|
|
629
|
+
logger.error("Error getting strategy by address:", formatLogError(error));
|
|
606
630
|
return null;
|
|
607
631
|
}
|
|
608
632
|
}
|
|
@@ -621,13 +645,13 @@ export class KaminoLiquidityService extends Service {
|
|
|
621
645
|
|
|
622
646
|
if (strategy) {
|
|
623
647
|
// Get additional token information if available
|
|
624
|
-
let tokenInfo = null;
|
|
648
|
+
let tokenInfo: TokenInfo | null = null;
|
|
625
649
|
try {
|
|
626
650
|
tokenInfo = await this.resolveTokenWithBirdeye(strategy.tokenA);
|
|
627
651
|
} catch (error) {
|
|
628
652
|
logger.warn(
|
|
629
653
|
`Could not resolve token info for ${strategy.tokenA}:`,
|
|
630
|
-
error,
|
|
654
|
+
formatLogError(error),
|
|
631
655
|
);
|
|
632
656
|
}
|
|
633
657
|
|
|
@@ -664,7 +688,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
664
688
|
};
|
|
665
689
|
}
|
|
666
690
|
} catch (error) {
|
|
667
|
-
logger.warn(
|
|
691
|
+
logger.warn(
|
|
692
|
+
`Could not resolve token info for ${poolAddress}:`,
|
|
693
|
+
formatLogError(error),
|
|
694
|
+
);
|
|
668
695
|
}
|
|
669
696
|
|
|
670
697
|
logger.log(
|
|
@@ -672,7 +699,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
672
699
|
);
|
|
673
700
|
return null;
|
|
674
701
|
} catch (error) {
|
|
675
|
-
logger.error("Error getting pool by address:", error);
|
|
702
|
+
logger.error("Error getting pool by address:", formatLogError(error));
|
|
676
703
|
return null;
|
|
677
704
|
}
|
|
678
705
|
}
|
|
@@ -691,7 +718,6 @@ export class KaminoLiquidityService extends Service {
|
|
|
691
718
|
|
|
692
719
|
// Normalize token identifier
|
|
693
720
|
const normalizedToken = this.normalizeTokenIdentifier(tokenIdentifier);
|
|
694
|
-
console.log("normalizedToken", normalizedToken);
|
|
695
721
|
|
|
696
722
|
const stats: TokenLiquidityStats = {
|
|
697
723
|
tokenIdentifier: tokenIdentifier,
|
|
@@ -803,7 +829,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
803
829
|
logger.log(`No strategies found involving token: ${normalizedToken}`);
|
|
804
830
|
}
|
|
805
831
|
} catch (apiError) {
|
|
806
|
-
logger.error(
|
|
832
|
+
logger.error(
|
|
833
|
+
"Error fetching strategies via API:",
|
|
834
|
+
formatLogError(apiError),
|
|
835
|
+
);
|
|
807
836
|
logger.log(
|
|
808
837
|
`API method failed, returning basic token info for ${normalizedToken}`,
|
|
809
838
|
);
|
|
@@ -811,7 +840,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
811
840
|
|
|
812
841
|
return stats;
|
|
813
842
|
} catch (error) {
|
|
814
|
-
logger.error(
|
|
843
|
+
logger.error(
|
|
844
|
+
"Error getting token liquidity info:",
|
|
845
|
+
formatLogError(error),
|
|
846
|
+
);
|
|
815
847
|
throw error;
|
|
816
848
|
}
|
|
817
849
|
}
|
|
@@ -1011,6 +1043,8 @@ export class KaminoLiquidityService extends Service {
|
|
|
1011
1043
|
|
|
1012
1044
|
const results = {
|
|
1013
1045
|
apiBaseUrl: this.apiBaseUrl,
|
|
1046
|
+
programId: KAMINO_LIQUIDITY_PROGRAM_ID,
|
|
1047
|
+
rpcEndpoint: this.apiBaseUrl,
|
|
1014
1048
|
connectionTest: false,
|
|
1015
1049
|
stakingYieldsTest: false,
|
|
1016
1050
|
limoTradesTest: false,
|
|
@@ -1027,7 +1061,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
1027
1061
|
`API connection test passed. Found ${stakingYields.length} staking yields`,
|
|
1028
1062
|
);
|
|
1029
1063
|
} catch (error) {
|
|
1030
|
-
logger.error("API connection test failed:", error);
|
|
1064
|
+
logger.error("API connection test failed:", formatLogError(error));
|
|
1031
1065
|
}
|
|
1032
1066
|
|
|
1033
1067
|
// Test Limo trades endpoint
|
|
@@ -1038,7 +1072,7 @@ export class KaminoLiquidityService extends Service {
|
|
|
1038
1072
|
`Limo trades test passed. Found ${limoTrades.length} trades`,
|
|
1039
1073
|
);
|
|
1040
1074
|
} catch (error) {
|
|
1041
|
-
logger.error("Limo trades test failed:", error);
|
|
1075
|
+
logger.error("Limo trades test failed:", formatLogError(error));
|
|
1042
1076
|
}
|
|
1043
1077
|
|
|
1044
1078
|
// Test strategy discovery
|
|
@@ -1049,30 +1083,30 @@ export class KaminoLiquidityService extends Service {
|
|
|
1049
1083
|
`Strategy discovery test: ${strategies.length} strategies found`,
|
|
1050
1084
|
);
|
|
1051
1085
|
} catch (error) {
|
|
1052
|
-
logger.error("Strategy discovery test failed:", error);
|
|
1086
|
+
logger.error("Strategy discovery test failed:", formatLogError(error));
|
|
1053
1087
|
}
|
|
1054
1088
|
|
|
1055
1089
|
logger.log("Connection test completed");
|
|
1056
1090
|
return results;
|
|
1057
1091
|
} catch (error) {
|
|
1058
|
-
logger.error("Error in connection test:", error);
|
|
1092
|
+
logger.error("Error in connection test:", formatLogError(error));
|
|
1059
1093
|
throw error;
|
|
1060
1094
|
}
|
|
1061
1095
|
}
|
|
1062
1096
|
|
|
1063
1097
|
// Service lifecycle methods
|
|
1064
1098
|
|
|
1065
|
-
static async create(runtime:
|
|
1099
|
+
static async create(runtime: IAgentRuntime): Promise<KaminoLiquidityService> {
|
|
1066
1100
|
return new KaminoLiquidityService(runtime);
|
|
1067
1101
|
}
|
|
1068
1102
|
|
|
1069
|
-
static async start(runtime:
|
|
1103
|
+
static async start(runtime: IAgentRuntime): Promise<KaminoLiquidityService> {
|
|
1070
1104
|
const service = new KaminoLiquidityService(runtime);
|
|
1071
1105
|
await service.start();
|
|
1072
1106
|
return service;
|
|
1073
1107
|
}
|
|
1074
1108
|
|
|
1075
|
-
static async stop(runtime:
|
|
1109
|
+
static async stop(runtime: IAgentRuntime): Promise<void> {
|
|
1076
1110
|
const service = runtime.getService(
|
|
1077
1111
|
"KAMINO_LIQUIDITY_SERVICE",
|
|
1078
1112
|
) as KaminoLiquidityService;
|
|
@@ -1092,12 +1126,15 @@ export class KaminoLiquidityService extends Service {
|
|
|
1092
1126
|
|
|
1093
1127
|
// Test connection on startup
|
|
1094
1128
|
const testResults = await this.testConnection();
|
|
1095
|
-
logger.log("Startup connection test results
|
|
1129
|
+
logger.log({ testResults }, "Startup connection test results");
|
|
1096
1130
|
|
|
1097
1131
|
this.isRunning = true;
|
|
1098
1132
|
logger.log("KaminoLiquidityService started successfully");
|
|
1099
1133
|
} catch (error) {
|
|
1100
|
-
logger.error(
|
|
1134
|
+
logger.error(
|
|
1135
|
+
"Failed to start KaminoLiquidityService:",
|
|
1136
|
+
formatLogError(error),
|
|
1137
|
+
);
|
|
1101
1138
|
throw error;
|
|
1102
1139
|
}
|
|
1103
1140
|
}
|
|
@@ -1112,7 +1149,10 @@ export class KaminoLiquidityService extends Service {
|
|
|
1112
1149
|
this.isRunning = false;
|
|
1113
1150
|
logger.log("KaminoLiquidityService stopped successfully");
|
|
1114
1151
|
} catch (error) {
|
|
1115
|
-
logger.error(
|
|
1152
|
+
logger.error(
|
|
1153
|
+
"Failed to stop KaminoLiquidityService:",
|
|
1154
|
+
formatLogError(error),
|
|
1155
|
+
);
|
|
1116
1156
|
throw error;
|
|
1117
1157
|
}
|
|
1118
1158
|
}
|