@@ -19,7 +19,7 @@ import {
19
19
} from "@elizaos/plugin-trustdb" ;
20
20
import { getTokenBalance } from "../utils/index.ts" ;
21
21
import { TokenProvider } from "./token.ts" ;
22
- import { WalletProvider } from "./walletProvider .ts" ;
22
+ import { WalletProvider } from "./portfolioProvider .ts" ;
23
23
24
24
const _Wallet = settings . MAIN_WALLET_ADDRESS ;
25
25
interface TradeData {
@@ -136,16 +136,19 @@ export class TrustScoreManager {
136
136
tokenAddress :
137
137
processedData . dexScreenerData . pairs [ 0 ] ?. baseToken . address ||
138
138
"" ,
139
+ symbol : processedData . dexScreenerData . pairs [ 0 ] ?. baseToken . symbol || "" ,
140
+ balance : 0 , // TODO: Implement balance check
141
+ initialMarketCap : processedData . dexScreenerData . pairs [ 0 ] ?. marketCap || 0 ,
139
142
priceChange24h :
140
- processedData . tradeData . price_change_24h_percent ,
141
- volumeChange24h : processedData . tradeData . volume_24h ,
143
+ processedData . tradeData . market . priceChangePercentage24h ,
144
+ volumeChange24h : processedData . tradeData . market . starknetVolume24h ,
142
145
trade_24h_change :
143
- processedData . tradeData . trade_24h_change_percent ,
146
+ processedData . tradeData . market . starknetTradingVolume24h ,
144
147
liquidity :
145
148
processedData . dexScreenerData . pairs [ 0 ] ?. liquidity . usd || 0 ,
146
149
liquidityChange24h : 0 ,
147
150
holderChange24h :
148
- processedData . tradeData . unique_wallet_24h_change_percent ,
151
+ processedData . tradeData . market . starknetTradingVolume24h ,
149
152
rugPull : false , // TODO: Implement rug pull detection
150
153
isScam : false , // TODO: Implement scam detection
151
154
marketCapChange24h : 0 , // TODO: Implement market cap change
@@ -289,8 +292,8 @@ export class TrustScoreManager {
289
292
async suspiciousVolume ( tokenAddress : string ) : Promise < boolean > {
290
293
const processedData : ProcessedTokenData =
291
294
await this . tokenProvider . getProcessedTokenData ( ) ;
292
- const unique_wallet_24h = processedData . tradeData . unique_wallet_24h ;
293
- const volume_24h = processedData . tradeData . volume_24h ;
295
+ const unique_wallet_24h = processedData . tradeData . market . starknetTradingVolume24h ;
296
+ const volume_24h = processedData . tradeData . market . starknetVolume24h ;
294
297
const suspiciousVolume = unique_wallet_24h / volume_24h > 0.5 ;
295
298
elizaLogger . log (
296
299
`Fetched processed token data for token: ${ tokenAddress } `
@@ -305,7 +308,13 @@ export class TrustScoreManager {
305
308
`Fetched processed token data for token: ${ tokenAddress } `
306
309
) ;
307
310
308
- return processedData . tradeData . volume_24h_change_percent > 50 ;
311
+ // Use starknetTradingVolume24h as a proxy for volume growth
312
+ const currentVolume = processedData . tradeData . market . starknetTradingVolume24h ;
313
+
314
+ // Define a growth threshold (e.g., $1M volume as sustained growth)
315
+ const growthThreshold = 1_000_000 ;
316
+
317
+ return currentVolume > growthThreshold ;
309
318
}
310
319
311
320
async isRapidDump ( tokenAddress : string ) : Promise < boolean > {
@@ -315,7 +324,11 @@ export class TrustScoreManager {
315
324
`Fetched processed token data for token: ${ tokenAddress } `
316
325
) ;
317
326
318
- return processedData . tradeData . trade_24h_change_percent < - 50 ;
327
+ // Use priceChangePercentage24h as a proxy for rapid dump
328
+ const priceChange24h = processedData . tradeData . market . priceChangePercentage24h ;
329
+
330
+ // Consider a rapid dump if the price drops more than 50% in 24 hours
331
+ return priceChange24h < - 50 ;
319
332
}
320
333
321
334
async checkTrustScore ( tokenAddress : string ) : Promise < TokenSecurityData > {
@@ -358,15 +371,18 @@ export class TrustScoreManager {
358
371
// TODO: change to starknet
359
372
const wallet = new WalletProvider ( runtime ) ;
360
373
361
- const prices = await wallet . fetchPrices ( runtime ) ;
362
- const solPrice = prices . solana . usd ;
363
- const buySol = data . buy_amount / parseFloat ( solPrice ) ;
364
- const buy_value_usd = data . buy_amount * processedData . tradeData . price ;
374
+ const prices = await wallet . getTokenUsdValues ( ) ;
375
+ const solPrice = prices . solana ?. usd ;
376
+ if ( ! solPrice ) {
377
+ throw new Error ( "Unable to fetch Solana price (cryptoName: 'solana')." ) ;
378
+ }
379
+ const buySol = data . buy_amount / solPrice ;
380
+ const buy_value_usd = data . buy_amount * processedData . tradeData . market . currentPrice ;
365
381
366
382
const creationData = {
367
383
token_address : tokenAddress ,
368
384
recommender_id : recommender . id ,
369
- buy_price : processedData . tradeData . price ,
385
+ buy_price : processedData . tradeData . market . currentPrice ,
370
386
sell_price : 0 ,
371
387
buy_timeStamp : new Date ( ) . toISOString ( ) ,
372
388
sell_timeStamp : "" ,
@@ -469,11 +485,14 @@ export class TrustScoreManager {
469
485
// TODO:
470
486
const wallet = new WalletProvider ( this . runtime ) ;
471
487
472
- const prices = await wallet . fetchPrices ( runtime ) ;
473
- const solPrice = prices . solana . usd ;
474
- const sellSol = sellDetails . sell_amount / parseFloat ( solPrice ) ;
488
+ const prices = await wallet . getTokenUsdValues ( ) ;
489
+ const solPrice = prices . solana ?. usd ;
490
+ if ( ! solPrice ) {
491
+ throw new Error ( "Unable to fetch Solana price (cryptoName: 'solana')." ) ;
492
+ }
493
+ const sellSol = sellDetails . sell_amount / solPrice ;
475
494
const sell_value_usd =
476
- sellDetails . sell_amount * processedData . tradeData . price ;
495
+ sellDetails . sell_amount * processedData . tradeData . market . currentPrice ;
477
496
const trade = await this . trustScoreDb . getLatestTradePerformance (
478
497
tokenAddress ,
479
498
recommender . id ,
@@ -484,7 +503,7 @@ export class TrustScoreManager {
484
503
processedData . dexScreenerData . pairs [ 0 ] ?. marketCap || 0 ;
485
504
const liquidity =
486
505
processedData . dexScreenerData . pairs [ 0 ] ?. liquidity . usd || 0 ;
487
- const sell_price = processedData . tradeData . price ;
506
+ const sell_price = processedData . tradeData . market . currentPrice ;
488
507
const profit_usd = sell_value_usd - trade . buy_value_usd ;
489
508
const profit_percent = ( profit_usd / trade . buy_value_usd ) * 100 ;
490
509
0 commit comments