@@ -61,6 +61,8 @@ export class TrustScoreManager {
61
61
private baseMint : PublicKey = new PublicKey ( settings . BASE_MINT ! ) ;
62
62
private DECAY_RATE = 0.95 ;
63
63
private MAX_DECAY_DAYS = 30 ;
64
+ private backend = settings . BACKEND_URL ; // TODO add to .env
65
+ private backendToken = settings . BACKEND_TOKEN ; // TODO add to .env
64
66
constructor (
65
67
tokenProvider : TokenProvider ,
66
68
trustScoreDb : TrustScoreDatabase
@@ -378,9 +380,56 @@ export class TrustScoreManager {
378
380
rapidDump : false ,
379
381
} ;
380
382
this . trustScoreDb . addTradePerformance ( creationData , data . is_simulation ) ;
383
+ // api call to update trade performance
384
+ this . createTradeInBe ( tokenAddress , recommenderId , data ) ;
381
385
return creationData ;
382
386
}
383
387
388
+ async delay ( ms : number ) {
389
+ return new Promise ( ( resolve ) => setTimeout ( resolve , ms ) ) ;
390
+ }
391
+
392
+ async createTradeInBe (
393
+ tokenAddress : string ,
394
+ recommenderId : string ,
395
+ data : TradeData ,
396
+ retries = 3 ,
397
+ delayMs = 2000
398
+ ) {
399
+ for ( let attempt = 1 ; attempt <= retries ; attempt ++ ) {
400
+ try {
401
+ await fetch (
402
+ `${ this . backend } /api/updaters/createTradePerformance` ,
403
+ {
404
+ method : "POST" ,
405
+ headers : {
406
+ "Content-Type" : "application/json" ,
407
+ Authorization : `Bearer ${ this . backendToken } ` ,
408
+ } ,
409
+ body : JSON . stringify ( {
410
+ tokenAddress : tokenAddress ,
411
+ tradeData : data ,
412
+ recommenderId : recommenderId ,
413
+ } ) ,
414
+ }
415
+ ) ;
416
+ // If the request is successful, exit the loop
417
+ return ;
418
+ } catch ( error ) {
419
+ console . error (
420
+ `Attempt ${ attempt } failed: Error creating trade in backend` ,
421
+ error
422
+ ) ;
423
+ if ( attempt < retries ) {
424
+ console . log ( `Retrying in ${ delayMs } ms...` ) ;
425
+ await this . delay ( delayMs ) ; // Wait for the specified delay before retrying
426
+ } else {
427
+ console . error ( "All attempts failed." ) ;
428
+ }
429
+ }
430
+ }
431
+ }
432
+
384
433
/**
385
434
* Updates a trade with sell details.
386
435
* @param tokenAddress The address of the token.
0 commit comments