@elizaos/plugin-wallet 2.0.0-beta.1 → 2.0.3-beta.5
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
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-wallet",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.3-beta.5",
|
|
4
|
+
"description": "Non-custodial wallet for elizaOS agents — EVM + Solana, ERC-6551 token-bound accounts, on-chain spend policies, x402 micropayments, CCTP bridge, Li.Fi swap routing, Jupiter routing, multi-DEX LP management (Raydium/Orca/Meteora on Solana, Uniswap/Aerodrome on EVM), Hyperliquid perps, Polymarket, Aave/Morpho lending, and Clanker token launches. Replaces plugin-evm + plugin-solana + plugin-raydium + plugin-orca + plugin-meteora + plugin-jupiter + plugin-lp-manager + plugin-clanker behind one canonical action+provider surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/eliza-ai/eliza/tree/main/eliza/plugins/plugin-wallet",
|
|
@@ -11,16 +11,33 @@
|
|
|
11
11
|
"directory": "eliza/plugins/plugin-wallet"
|
|
12
12
|
},
|
|
13
13
|
"main": "dist/index.mjs",
|
|
14
|
-
"types": "dist/index.d.
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"eliza-source": {
|
|
19
|
+
"types": "./src/index.ts",
|
|
20
|
+
"import": "./src/index.ts",
|
|
21
|
+
"default": "./src/index.ts"
|
|
22
|
+
},
|
|
17
23
|
"import": "./dist/index.mjs",
|
|
18
|
-
"default": "./dist/index.mjs"
|
|
19
|
-
"types": "./dist/index.d.mts"
|
|
24
|
+
"default": "./dist/index.mjs"
|
|
20
25
|
},
|
|
21
|
-
"./package.json": "./package.json"
|
|
26
|
+
"./package.json": "./package.json",
|
|
27
|
+
"./*.css": "./dist/*.css",
|
|
28
|
+
"./*": {
|
|
29
|
+
"types": "./dist/*.d.ts",
|
|
30
|
+
"eliza-source": {
|
|
31
|
+
"types": "./src/*.ts",
|
|
32
|
+
"import": "./src/*.ts",
|
|
33
|
+
"default": "./src/*.ts"
|
|
34
|
+
},
|
|
35
|
+
"import": "./dist/*.js",
|
|
36
|
+
"default": "./dist/*.js"
|
|
37
|
+
}
|
|
22
38
|
},
|
|
23
39
|
"files": [
|
|
40
|
+
"registry-entry.json",
|
|
24
41
|
"dist",
|
|
25
42
|
"src",
|
|
26
43
|
"auto-enable.ts",
|
|
@@ -37,28 +54,23 @@
|
|
|
37
54
|
}
|
|
38
55
|
},
|
|
39
56
|
"scripts": {
|
|
40
|
-
"build": "
|
|
57
|
+
"build": "bun run build.ts",
|
|
41
58
|
"check": "tsc --noEmit",
|
|
42
59
|
"lint": "bunx @biomejs/biome check --write --unsafe .",
|
|
43
60
|
"test": "vitest run --config ./vitest.config.ts",
|
|
44
61
|
"test:watch": "vitest --config ./vitest.config.ts",
|
|
45
|
-
"clean": "rm
|
|
62
|
+
"clean": "node ../../packages/scripts/rm-path-recursive.mjs dist"
|
|
46
63
|
},
|
|
47
64
|
"peerDependencies": {
|
|
48
|
-
"@elizaos/core": "2.0.
|
|
49
|
-
"@elizaos/plugin-elizacloud": "2.0.
|
|
65
|
+
"@elizaos/core": "2.0.3-beta.5",
|
|
66
|
+
"@elizaos/plugin-elizacloud": "2.0.3-beta.5"
|
|
50
67
|
},
|
|
51
68
|
"dependencies": {
|
|
52
69
|
"@coral-xyz/anchor": "^0.32.1",
|
|
53
|
-
"@elizaos/cloud-routing": "2.0.
|
|
54
|
-
"@
|
|
70
|
+
"@elizaos/cloud-routing": "2.0.3-beta.5",
|
|
71
|
+
"@elizaos/shared": "2.0.3-beta.5",
|
|
55
72
|
"@lifi/sdk": "^3.7.9",
|
|
56
|
-
"@
|
|
57
|
-
"@noble/hashes": "^1.8.0",
|
|
58
|
-
"@orca-so/whirlpools": "^2.2.0",
|
|
59
|
-
"@orca-so/whirlpools-client": "^6.2.1",
|
|
60
|
-
"@orca-so/whirlpools-core": "^3.1.0",
|
|
61
|
-
"@orca-so/whirlpools-sdk": "^0.20.0",
|
|
73
|
+
"@meteora-ag/dlmm": "^1.9.7",
|
|
62
74
|
"@raydium-io/raydium-sdk": "^1.3.1-beta.58",
|
|
63
75
|
"@solana/spl-token": "0.4.14",
|
|
64
76
|
"@solana/spl-token-metadata": "^0.1.6",
|
|
@@ -66,7 +78,9 @@
|
|
|
66
78
|
"@steerprotocol/sdk": "^3.0.7",
|
|
67
79
|
"bignumber.js": "^11.0.0",
|
|
68
80
|
"bs58": "^6.0.0",
|
|
81
|
+
"ethers": "^6.16.0",
|
|
69
82
|
"tweetnacl": "^1.0.3",
|
|
83
|
+
"uuid": "^11.1.0",
|
|
70
84
|
"viem": "^2.48.8",
|
|
71
85
|
"zod": "^4.4.3"
|
|
72
86
|
},
|
|
@@ -74,9 +88,8 @@
|
|
|
74
88
|
"access": "public"
|
|
75
89
|
},
|
|
76
90
|
"devDependencies": {
|
|
77
|
-
"@elizaos/core": "2.0.
|
|
91
|
+
"@elizaos/core": "2.0.3-beta.5",
|
|
78
92
|
"@types/node": "^24.0.0",
|
|
79
|
-
"tsdown": "^0.21.10",
|
|
80
93
|
"typescript": "^6.0.3",
|
|
81
94
|
"vitest": "^4.0.18"
|
|
82
95
|
},
|
|
@@ -148,5 +161,6 @@
|
|
|
148
161
|
"trading",
|
|
149
162
|
"automation"
|
|
150
163
|
],
|
|
151
|
-
"packageType": "plugin"
|
|
164
|
+
"packageType": "plugin",
|
|
165
|
+
"gitHead": "ff6157011c9459670021cc28a6797592a78b8817"
|
|
152
166
|
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "evm",
|
|
3
|
+
"name": "Evm",
|
|
4
|
+
"description": "This plugin enables interaction with EVM-compatible chains, supporting token transfers, cross-chain bridging, and swaps via LiFi integration.",
|
|
5
|
+
"npmName": "@elizaos/plugin-wallet",
|
|
6
|
+
"version": "2.0.0-beta.0",
|
|
7
|
+
"source": "bundled",
|
|
8
|
+
"tags": ["crypto", "evm"],
|
|
9
|
+
"config": {
|
|
10
|
+
"EVM_PRIVATE_KEY": {
|
|
11
|
+
"type": "secret",
|
|
12
|
+
"required": true,
|
|
13
|
+
"sensitive": true,
|
|
14
|
+
"label": "Private Key",
|
|
15
|
+
"help": "Hex-encoded private key (starting with 0x) used by the WalletProvider to sign transactions.",
|
|
16
|
+
"advanced": false
|
|
17
|
+
},
|
|
18
|
+
"EVM_RPC_PROVIDER": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"sensitive": false,
|
|
22
|
+
"label": "Rpc Provider",
|
|
23
|
+
"help": "Preferred RPC provider: 'alchemy', 'infura', 'ankr', or 'elizacloud'. If set, this provider is used first for all chains it supports, with fallback to others.",
|
|
24
|
+
"advanced": false
|
|
25
|
+
},
|
|
26
|
+
"ALCHEMY_API_KEY": {
|
|
27
|
+
"type": "secret",
|
|
28
|
+
"required": false,
|
|
29
|
+
"sensitive": true,
|
|
30
|
+
"label": "Api Key",
|
|
31
|
+
"help": "Alchemy API key for RPC access. Supports Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BSC, and many more chains.",
|
|
32
|
+
"advanced": false
|
|
33
|
+
},
|
|
34
|
+
"INFURA_API_KEY": {
|
|
35
|
+
"type": "secret",
|
|
36
|
+
"required": false,
|
|
37
|
+
"sensitive": true,
|
|
38
|
+
"label": "Api Key",
|
|
39
|
+
"help": "Infura API key for RPC access. Supports Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, Linea, and more.",
|
|
40
|
+
"advanced": false
|
|
41
|
+
},
|
|
42
|
+
"ANKR_API_KEY": {
|
|
43
|
+
"type": "secret",
|
|
44
|
+
"required": false,
|
|
45
|
+
"sensitive": true,
|
|
46
|
+
"label": "Api Key",
|
|
47
|
+
"help": "Ankr premium API key for RPC access. Supports the broadest range of EVM chains.",
|
|
48
|
+
"advanced": false
|
|
49
|
+
},
|
|
50
|
+
"ETHEREUM_PROVIDER_ETHEREUM": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"required": false,
|
|
53
|
+
"sensitive": false,
|
|
54
|
+
"label": "Provider Ethereum",
|
|
55
|
+
"help": "Custom RPC URL for Ethereum mainnet (overrides provider-based RPC). For other chains, set ETHEREUM_PROVIDER_<CHAINNAME> (or EVM_PROVIDER_<CHAINNAME>) in your .env.",
|
|
56
|
+
"advanced": false
|
|
57
|
+
},
|
|
58
|
+
"ETHEREUM_PROVIDER_BASE": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"required": false,
|
|
61
|
+
"sensitive": false,
|
|
62
|
+
"label": "Provider Base",
|
|
63
|
+
"help": "Custom RPC URL for Base mainnet (overrides provider-based RPC).",
|
|
64
|
+
"advanced": false
|
|
65
|
+
},
|
|
66
|
+
"ETHEREUM_PROVIDER_ARBITRUM": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"required": false,
|
|
69
|
+
"sensitive": false,
|
|
70
|
+
"label": "Provider Arbitrum",
|
|
71
|
+
"help": "Custom RPC URL for Arbitrum One (overrides provider-based RPC).",
|
|
72
|
+
"advanced": false
|
|
73
|
+
},
|
|
74
|
+
"ETHEREUM_PROVIDER_OPTIMISM": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"required": false,
|
|
77
|
+
"sensitive": false,
|
|
78
|
+
"label": "Provider Optimism",
|
|
79
|
+
"help": "Custom RPC URL for Optimism mainnet (overrides provider-based RPC).",
|
|
80
|
+
"advanced": false
|
|
81
|
+
},
|
|
82
|
+
"TEE_MODE": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"required": false,
|
|
85
|
+
"sensitive": false,
|
|
86
|
+
"default": "OFF",
|
|
87
|
+
"label": "Mode",
|
|
88
|
+
"help": "Controls whether Trusted Execution Environment (TEE) mode is enabled.",
|
|
89
|
+
"advanced": false
|
|
90
|
+
},
|
|
91
|
+
"WALLET_SECRET_SALT": {
|
|
92
|
+
"type": "secret",
|
|
93
|
+
"required": false,
|
|
94
|
+
"sensitive": true,
|
|
95
|
+
"label": "Secret Salt",
|
|
96
|
+
"help": "Salt value for TEE-derived wallet keypair.",
|
|
97
|
+
"advanced": false
|
|
98
|
+
},
|
|
99
|
+
"SEPOLIA_RPC_URL": {
|
|
100
|
+
"type": "url",
|
|
101
|
+
"required": false,
|
|
102
|
+
"sensitive": false,
|
|
103
|
+
"default": "https://ethereum-sepolia-rpc.publicnode.com",
|
|
104
|
+
"label": "Rpc Url",
|
|
105
|
+
"help": "RPC endpoint URL for Sepolia testnet.",
|
|
106
|
+
"advanced": false
|
|
107
|
+
},
|
|
108
|
+
"BASE_SEPOLIA_RPC_URL": {
|
|
109
|
+
"type": "url",
|
|
110
|
+
"required": false,
|
|
111
|
+
"sensitive": false,
|
|
112
|
+
"default": "https://sepolia.base.org",
|
|
113
|
+
"label": "Sepolia Rpc Url",
|
|
114
|
+
"help": "RPC endpoint URL for Base Sepolia testnet.",
|
|
115
|
+
"advanced": false
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"render": {
|
|
119
|
+
"visible": true,
|
|
120
|
+
"pinTo": [],
|
|
121
|
+
"style": "card",
|
|
122
|
+
"icon": "Link",
|
|
123
|
+
"group": "blockchain",
|
|
124
|
+
"groupOrder": 4,
|
|
125
|
+
"actions": ["enable", "configure"]
|
|
126
|
+
},
|
|
127
|
+
"resources": {
|
|
128
|
+
"homepage": "https://github.com/elizaOS/eliza/tree/develop/plugins/plugin-wallet#readme",
|
|
129
|
+
"repository": "https://github.com/elizaOS/eliza"
|
|
130
|
+
},
|
|
131
|
+
"dependsOn": [],
|
|
132
|
+
"kind": "plugin",
|
|
133
|
+
"subtype": "blockchain"
|
|
134
|
+
}
|
|
@@ -1,9 +1,89 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
|
+
ActionResult,
|
|
3
|
+
HandlerCallback,
|
|
4
|
+
HandlerOptions,
|
|
5
|
+
IAgentRuntime,
|
|
6
|
+
Memory,
|
|
7
|
+
State,
|
|
8
|
+
} from "@elizaos/core";
|
|
9
|
+
import { parseTokenInfoParams } from "../../token-info/params";
|
|
10
|
+
import {
|
|
11
|
+
TOKEN_INFO_SERVICE_TYPE,
|
|
12
|
+
type TokenInfoService,
|
|
13
|
+
} from "../../token-info/service";
|
|
14
|
+
|
|
15
|
+
function unavailable(
|
|
16
|
+
callback: HandlerCallback | undefined,
|
|
17
|
+
text: string,
|
|
18
|
+
data: Record<string, unknown>,
|
|
19
|
+
): ActionResult {
|
|
20
|
+
const dataAsContent = data as Parameters<HandlerCallback>[0]["data"];
|
|
21
|
+
callback?.({ text, actions: ["WALLET"], data: dataAsContent });
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
text,
|
|
25
|
+
error: String(data.error ?? "BIRDEYE_SEARCH_UNAVAILABLE"),
|
|
26
|
+
data: data as ActionResult["data"],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
2
29
|
|
|
3
30
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
31
|
+
* Folded into WALLET as `action=search_address`. Forces the TokenInfoService
|
|
32
|
+
* route through the Birdeye provider with the `wallet` subaction so callers get
|
|
33
|
+
* Birdeye portfolio data for a wallet address.
|
|
6
34
|
*/
|
|
7
|
-
export
|
|
35
|
+
export async function walletSearchAddressHandler(
|
|
36
|
+
runtime: IAgentRuntime,
|
|
37
|
+
message: Memory,
|
|
38
|
+
state?: State,
|
|
39
|
+
options?: HandlerOptions | Record<string, unknown>,
|
|
40
|
+
callback?: HandlerCallback,
|
|
41
|
+
): Promise<ActionResult> {
|
|
42
|
+
const service = runtime.getService(
|
|
43
|
+
TOKEN_INFO_SERVICE_TYPE,
|
|
44
|
+
) as TokenInfoService | null;
|
|
45
|
+
if (!service || typeof service.route !== "function") {
|
|
46
|
+
return unavailable(callback, "Token info service is not available.", {
|
|
47
|
+
actionName: "WALLET",
|
|
48
|
+
subaction: "search_address",
|
|
49
|
+
error: "SERVICE_UNAVAILABLE",
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const baseParams = parseTokenInfoParams(message, state, options);
|
|
54
|
+
const params = {
|
|
55
|
+
...baseParams,
|
|
56
|
+
target: "birdeye",
|
|
57
|
+
subaction: "wallet" as const,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const routed = await service.route({
|
|
61
|
+
runtime,
|
|
62
|
+
message,
|
|
63
|
+
state,
|
|
64
|
+
options,
|
|
65
|
+
params,
|
|
66
|
+
callback,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
if (routed.ok) {
|
|
70
|
+
const result = routed.result;
|
|
71
|
+
return {
|
|
72
|
+
...result,
|
|
73
|
+
data: {
|
|
74
|
+
...(result.data ?? {}),
|
|
75
|
+
actionName: "WALLET",
|
|
76
|
+
subaction: "search_address",
|
|
77
|
+
target: routed.provider.name,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
8
81
|
|
|
9
|
-
|
|
82
|
+
return unavailable(callback, routed.detail, {
|
|
83
|
+
actionName: "WALLET",
|
|
84
|
+
subaction: "search_address",
|
|
85
|
+
error: routed.error,
|
|
86
|
+
detail: routed.detail,
|
|
87
|
+
providers: routed.providers,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck -- legacy wallet sync task from absorbed Birdeye plugin; strict types pending cleanup
|
|
2
1
|
import {
|
|
3
2
|
type Content,
|
|
4
3
|
createUniqueUuid,
|
|
@@ -15,6 +14,11 @@ import type {
|
|
|
15
14
|
} from "./types/shared";
|
|
16
15
|
import { extractChain } from "./utils";
|
|
17
16
|
|
|
17
|
+
const settingAsString = (
|
|
18
|
+
value: string | number | boolean | null,
|
|
19
|
+
): string | undefined =>
|
|
20
|
+
typeof value === "string" && value.trim().length > 0 ? value : undefined;
|
|
21
|
+
|
|
18
22
|
export interface SentimentContent extends Content {
|
|
19
23
|
text: string;
|
|
20
24
|
source: "sentiment-analysis";
|
|
@@ -39,7 +43,7 @@ export default class Birdeye {
|
|
|
39
43
|
beService!: BirdeyeService;
|
|
40
44
|
|
|
41
45
|
constructor(runtime: IAgentRuntime) {
|
|
42
|
-
this.apiKey = runtime.getSetting("BIRDEYE_API_KEY");
|
|
46
|
+
this.apiKey = settingAsString(runtime.getSetting("BIRDEYE_API_KEY")) ?? "";
|
|
43
47
|
this.sentimentRoomId = createUniqueUuid(runtime, "sentiment-analysis");
|
|
44
48
|
this.twitterFeedRoomId = createUniqueUuid(runtime, "twitter-feed");
|
|
45
49
|
this.runtime = runtime;
|
|
@@ -69,13 +73,21 @@ export default class Birdeye {
|
|
|
69
73
|
publicKey,
|
|
70
74
|
);
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
if (!Array.isArray(birdeyeData)) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const transactions: TransactionHistory[] = [];
|
|
81
|
+
for (const tx of birdeyeData) {
|
|
82
|
+
if (typeof tx.txHash !== "string" || typeof tx.blockTime !== "string") {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
transactions.push({
|
|
74
86
|
txHash: tx.txHash,
|
|
75
87
|
blockTime: new Date(tx.blockTime),
|
|
76
88
|
data: tx,
|
|
77
|
-
})
|
|
78
|
-
|
|
89
|
+
});
|
|
90
|
+
}
|
|
79
91
|
|
|
80
92
|
try {
|
|
81
93
|
const cachedTxs = await this.runtime.getCache<TransactionHistory[]>(
|
|
@@ -150,12 +162,16 @@ export default class Birdeye {
|
|
|
150
162
|
}
|
|
151
163
|
|
|
152
164
|
async syncWallet() {
|
|
153
|
-
const walletAddr =
|
|
165
|
+
const walletAddr = settingAsString(
|
|
166
|
+
this.runtime.getSetting("BIRDEYE_WALLET_ADDR"),
|
|
167
|
+
);
|
|
154
168
|
if (!walletAddr) {
|
|
155
169
|
return;
|
|
156
170
|
}
|
|
157
171
|
|
|
158
|
-
const explicitChain =
|
|
172
|
+
const explicitChain = settingAsString(
|
|
173
|
+
this.runtime.getSetting("BIRDEYE_CHAIN"),
|
|
174
|
+
);
|
|
159
175
|
|
|
160
176
|
try {
|
|
161
177
|
const chain = extractChain(walletAddr, explicitChain);
|
|
@@ -164,7 +180,7 @@ export default class Birdeye {
|
|
|
164
180
|
|
|
165
181
|
return true;
|
|
166
182
|
} catch (error) {
|
|
167
|
-
this.runtime.logger
|
|
183
|
+
this.runtime.logger.error(
|
|
168
184
|
`Failed to sync wallet: ${
|
|
169
185
|
error instanceof Error ? error.message : String(error)
|
|
170
186
|
}`,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { elizaLogger } from "@elizaos/core";
|
|
1
|
+
import { elizaLogger, type IAgentRuntime } from "@elizaos/core";
|
|
3
2
|
import {
|
|
4
3
|
API_BASE_URL,
|
|
5
4
|
BIRDEYE_ENDPOINTS,
|
|
@@ -162,11 +161,11 @@ class HttpError extends Error {
|
|
|
162
161
|
// extends BaseCachedProvider
|
|
163
162
|
// really more like a service
|
|
164
163
|
export class BirdeyeProvider {
|
|
165
|
-
private runtime:
|
|
164
|
+
private runtime: Pick<IAgentRuntime, "getCache" | "setCache">;
|
|
166
165
|
private maxRetries: number;
|
|
167
166
|
|
|
168
167
|
constructor(
|
|
169
|
-
runtime,
|
|
168
|
+
runtime: Pick<IAgentRuntime, "getCache" | "setCache">,
|
|
170
169
|
//cacheManager: ICacheManager,
|
|
171
170
|
_symbolMap?: Record<string, string>,
|
|
172
171
|
maxRetries?: number,
|
|
@@ -184,10 +183,10 @@ export class BirdeyeProvider {
|
|
|
184
183
|
options: RequestInit = {},
|
|
185
184
|
): Promise<T> {
|
|
186
185
|
let attempts = 0;
|
|
186
|
+
const headers = new Headers(options.headers);
|
|
187
187
|
|
|
188
188
|
// allow the user to override the chain
|
|
189
|
-
const chain =
|
|
190
|
-
options.headers?.["x-chain"] || settings.BIRDEYE_CHAIN || "solana";
|
|
189
|
+
const chain = headers.get("x-chain") || settings.BIRDEYE_CHAIN || "solana";
|
|
191
190
|
|
|
192
191
|
while (attempts < this.maxRetries) {
|
|
193
192
|
attempts++;
|
|
@@ -278,7 +277,7 @@ export class BirdeyeProvider {
|
|
|
278
277
|
: `${url}:${JSON.stringify(params)}`;
|
|
279
278
|
|
|
280
279
|
// Check cache first
|
|
281
|
-
const cachedVal = await this.runtime.getCache(cacheKey);
|
|
280
|
+
const cachedVal = await this.runtime.getCache<T>(cacheKey);
|
|
282
281
|
if (cachedVal) return cachedVal as T;
|
|
283
282
|
|
|
284
283
|
const urlWithParams =
|
|
@@ -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, Memory, Provider, State } from "@elizaos/core";
|
|
3
2
|
//import { addHeader, composeActionExamples, formatActionNames, formatActions } from '@elizaos/core';
|
|
4
3
|
//import type { IToken } from '../types';
|
|
@@ -8,6 +7,30 @@ import { formatJsonScalar, formatJsonTable } from "../utils";
|
|
|
8
7
|
|
|
9
8
|
const MARKET_ROW_LIMIT = 12;
|
|
10
9
|
|
|
10
|
+
type MarketTokenSnapshot = {
|
|
11
|
+
symbol?: string;
|
|
12
|
+
priceUsd: number;
|
|
13
|
+
priceChange24h: number;
|
|
14
|
+
liquidity: number;
|
|
15
|
+
marketCapUsd?: number;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
type MarketRow = {
|
|
19
|
+
chain: string;
|
|
20
|
+
address: string;
|
|
21
|
+
symbol: string;
|
|
22
|
+
priceUsd: string;
|
|
23
|
+
marketCapUsd: string;
|
|
24
|
+
change24hPct: string;
|
|
25
|
+
liquidityUsd: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
function formatUsd(value: number | undefined): string {
|
|
29
|
+
return typeof value === "number" && Number.isFinite(value)
|
|
30
|
+
? value.toFixed(2)
|
|
31
|
+
: "unknown";
|
|
32
|
+
}
|
|
33
|
+
|
|
11
34
|
export async function getCacheTimed<T>(
|
|
12
35
|
runtime: IAgentRuntime,
|
|
13
36
|
key: string,
|
|
@@ -30,12 +53,6 @@ export async function getCacheTimed<T>(
|
|
|
30
53
|
/**
|
|
31
54
|
* Provider for Birdeye market data
|
|
32
55
|
*
|
|
33
|
-
* @typedef {import('./Provider').Provider} Provider
|
|
34
|
-
* @typedef {import('./Runtime').IAgentRuntime} IAgentRuntime
|
|
35
|
-
* @typedef {import('./Memory').Memory} Memory
|
|
36
|
-
* @typedef {import('./State').State} State
|
|
37
|
-
* @typedef {import('./Action').Action} Action
|
|
38
|
-
*
|
|
39
56
|
* @type {Provider}
|
|
40
57
|
* @property {string} name - The name of the provider
|
|
41
58
|
* @property {string} description - Description of the provider
|
|
@@ -62,15 +79,14 @@ export const marketProvider: Provider = {
|
|
|
62
79
|
try {
|
|
63
80
|
//console.log('BIRDEYE_CRYPTOCURRENCY_MARKET_DATA getting');
|
|
64
81
|
|
|
65
|
-
//
|
|
66
|
-
// FIXME: get out of runtime.getSettings
|
|
82
|
+
// Static Solana market addresses used for the Birdeye overview.
|
|
67
83
|
const TOKEN_ADDRESSES = {
|
|
68
84
|
SOL: "So11111111111111111111111111111111111111112",
|
|
69
85
|
BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", // wBTC
|
|
70
86
|
ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", // wETH
|
|
71
87
|
};
|
|
72
88
|
|
|
73
|
-
const hardcodedSolanaCA2SymbolMap = {
|
|
89
|
+
const hardcodedSolanaCA2SymbolMap: Record<string, string> = {
|
|
74
90
|
So11111111111111111111111111111111111111112: "SOL",
|
|
75
91
|
"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh": "BTC", // wBTC
|
|
76
92
|
"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs": "ETH", // wETH
|
|
@@ -85,17 +101,8 @@ export const marketProvider: Provider = {
|
|
|
85
101
|
getTokensMarketData?: (
|
|
86
102
|
chain: string,
|
|
87
103
|
addresses: string[],
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
string,
|
|
91
|
-
{
|
|
92
|
-
symbol: string;
|
|
93
|
-
priceUsd: number;
|
|
94
|
-
priceChange24h: number;
|
|
95
|
-
liquidity: number;
|
|
96
|
-
}
|
|
97
|
-
>
|
|
98
|
-
>;
|
|
104
|
+
options?: GetCacheTimedOptions,
|
|
105
|
+
) => Promise<Record<string, MarketTokenSnapshot | undefined>>;
|
|
99
106
|
}
|
|
100
107
|
| undefined;
|
|
101
108
|
// want this for custom symbols
|
|
@@ -112,7 +119,7 @@ export const marketProvider: Provider = {
|
|
|
112
119
|
!birdeyeService ||
|
|
113
120
|
typeof birdeyeService.getTokensMarketData !== "function"
|
|
114
121
|
) {
|
|
115
|
-
runtime.logger
|
|
122
|
+
runtime.logger.error(
|
|
116
123
|
"Birdeye service is unavailable or does not have getTokensMarketData method",
|
|
117
124
|
);
|
|
118
125
|
return {
|
|
@@ -126,23 +133,21 @@ export const marketProvider: Provider = {
|
|
|
126
133
|
};
|
|
127
134
|
}
|
|
128
135
|
|
|
129
|
-
// FIXME: cache (how fresh does this have to be? 5 mins? 1 min?)
|
|
130
136
|
// get data
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
) {
|
|
136
|
-
ps.push(solanaService.getTokensSymbols(CAs));
|
|
137
|
-
}
|
|
137
|
+
const tokenSymbolsPromise =
|
|
138
|
+
solanaService && typeof solanaService.getTokensSymbols === "function"
|
|
139
|
+
? solanaService.getTokensSymbols(CAs)
|
|
140
|
+
: Promise.resolve({} as Record<string, string>);
|
|
138
141
|
|
|
139
|
-
const
|
|
142
|
+
const [result, tokenSymbols] = await Promise.all([
|
|
143
|
+
birdeyeService.getTokensMarketData("solana", CAs, {
|
|
144
|
+
notOlderThan: 30 * 1000,
|
|
145
|
+
}),
|
|
146
|
+
tokenSymbolsPromise,
|
|
147
|
+
]);
|
|
140
148
|
|
|
141
|
-
const
|
|
142
|
-
const rows = [];
|
|
149
|
+
const rows: MarketRow[] = [];
|
|
143
150
|
|
|
144
|
-
// FIXME: Market cap column is currently not populated from Birdeye API response
|
|
145
|
-
// Need to calculate or fetch market cap data separately
|
|
146
151
|
for (const ca of CAs) {
|
|
147
152
|
// Check if result[ca] exists before accessing it
|
|
148
153
|
if (!result[ca]) {
|
|
@@ -159,20 +164,21 @@ export const marketProvider: Provider = {
|
|
|
159
164
|
}
|
|
160
165
|
|
|
161
166
|
const t = result[ca];
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
let symbol =
|
|
168
|
+
tokenSymbols[ca] ??
|
|
169
|
+
t.symbol ??
|
|
170
|
+
hardcodedSolanaCA2SymbolMap[ca] ??
|
|
171
|
+
"(Not available)";
|
|
166
172
|
// unwrap symbols
|
|
167
|
-
if (
|
|
168
|
-
if (
|
|
173
|
+
if (symbol === "WBTC") symbol = "BTC";
|
|
174
|
+
if (symbol === "WETH") symbol = "ETH";
|
|
169
175
|
//console.log('t', t)
|
|
170
176
|
rows.push({
|
|
171
177
|
chain: "solana",
|
|
172
178
|
address: ca,
|
|
173
|
-
symbol
|
|
179
|
+
symbol,
|
|
174
180
|
priceUsd: t.priceUsd.toFixed(4),
|
|
175
|
-
marketCapUsd:
|
|
181
|
+
marketCapUsd: formatUsd(t.marketCapUsd),
|
|
176
182
|
change24hPct: t.priceChange24h.toFixed(2),
|
|
177
183
|
liquidityUsd: t.liquidity.toFixed(2),
|
|
178
184
|
});
|
|
@@ -183,7 +189,7 @@ export const marketProvider: Provider = {
|
|
|
183
189
|
const boundedRows = rows.slice(0, MARKET_ROW_LIMIT);
|
|
184
190
|
const data = {
|
|
185
191
|
tokens: Object.fromEntries(
|
|
186
|
-
Object.entries(
|
|
192
|
+
Object.entries(result).slice(0, MARKET_ROW_LIMIT),
|
|
187
193
|
),
|
|
188
194
|
};
|
|
189
195
|
|
|
@@ -210,7 +216,7 @@ export const marketProvider: Provider = {
|
|
|
210
216
|
text,
|
|
211
217
|
};
|
|
212
218
|
} catch (err) {
|
|
213
|
-
runtime.logger
|
|
219
|
+
runtime.logger.error(
|
|
214
220
|
`Error fetching Birdeye market data: ${err instanceof Error ? err.message : String(err)}`,
|
|
215
221
|
);
|
|
216
222
|
return {
|