@@ -151,7 +151,7 @@ export class MonitoringController {
151151 @ApiExcludeEndpoint ( )
152152 async btcHistory (
153153 @Query ( 'range' ) range : string ,
154- ) : Promise < { points : { timestamp : string ; netBalance : number } [ ] ; range : string } > {
154+ ) : Promise < { points : { timestamp : string ; netBalance : number ; onchain : number ; lndOnchain : number ; lightning : number ; citrea : number ; wbtc : number ; wbtce : number } [ ] ; range : string } > {
155155 const { fromDate, grouping } = this . parseRange ( range ) ;
156156
157157 const [ balanceHistory , evmHistory , seedBalance , seedEvmBalances ] = await Promise . all ( [
@@ -169,7 +169,7 @@ export class MonitoringController {
169169 @ApiExcludeEndpoint ( )
170170 async usdHistory (
171171 @Query ( 'range' ) range : string ,
172- ) : Promise < { points : { timestamp : string ; totalBalance : number } [ ] ; range : string } > {
172+ ) : Promise < { points : { timestamp : string ; totalBalance : number ; jusd : number ; usdc : number ; usdtEthereum : number ; usdtPolygon : number } [ ] ; range : string } > {
173173 const { fromDate, grouping } = this . parseRange ( range ) ;
174174
175175 const [ evmHistory , seedEvmBalances ] = await Promise . all ( [
@@ -217,7 +217,7 @@ export class MonitoringController {
217217 evmHistory : { timestamp : string ; blockchain : string ; nativeBalance : number ; tokenBalances : string } [ ] ,
218218 seedBalance ?: { timestamp : string ; onchainBalance : number ; lndOnchainBalance : number ; lightningBalance : number ; citreaBalance : number ; customerBalance : number } ,
219219 seedEvmBalances ?: { timestamp : string ; blockchain : string ; nativeBalance : number ; tokenBalances : string } [ ] ,
220- ) : { timestamp : string ; netBalance : number } [ ] {
220+ ) : { timestamp : string ; netBalance : number ; onchain : number ; lndOnchain : number ; lightning : number ; citrea : number ; wbtc : number ; wbtce : number } [ ] {
221221 const allTimestamps = new Set < string > ( ) ;
222222 for ( const b of balanceHistory ) allTimestamps . add ( new Date ( b . timestamp ) . toISOString ( ) ) ;
223223 for ( const e of evmHistory ) allTimestamps . add ( new Date ( e . timestamp ) . toISOString ( ) ) ;
@@ -230,7 +230,7 @@ export class MonitoringController {
230230 let balIdx = 0 ;
231231 let evmIdx = 0 ;
232232
233- const points : { timestamp : string ; netBalance : number } [ ] = [ ] ;
233+ const points : { timestamp : string ; netBalance : number ; onchain : number ; lndOnchain : number ; lightning : number ; citrea : number ; wbtc : number ; wbtce : number } [ ] = [ ] ;
234234
235235 for ( const ts of sorted ) {
236236 while ( balIdx < balanceHistory . length && new Date ( balanceHistory [ balIdx ] . timestamp ) . toISOString ( ) <= ts ) {
@@ -243,7 +243,10 @@ export class MonitoringController {
243243 evmIdx ++ ;
244244 }
245245
246- const onchain = lastBalance ? ( Number ( lastBalance . onchainBalance ) + Number ( lastBalance . lndOnchainBalance ) + Number ( lastBalance . lightningBalance ) + Number ( lastBalance . citreaBalance ) ) / 1e8 : 0 ;
246+ const onchain = lastBalance ? Number ( lastBalance . onchainBalance ) / 1e8 : 0 ;
247+ const lndOnchain = lastBalance ? Number ( lastBalance . lndOnchainBalance ) / 1e8 : 0 ;
248+ const lightning = lastBalance ? Number ( lastBalance . lightningBalance ) / 1e8 : 0 ;
249+ const citrea = lastBalance ? Number ( lastBalance . citreaBalance ) / 1e8 : 0 ;
247250 const customer = lastBalance ? Number ( lastBalance . customerBalance ) / 1e8 : 0 ;
248251
249252 let wbtc = 0 ;
@@ -263,7 +266,13 @@ export class MonitoringController {
263266
264267 points . push ( {
265268 timestamp : ts ,
266- netBalance : onchain + wbtc + wbtce - customer ,
269+ netBalance : onchain + lndOnchain + lightning + citrea + wbtc + wbtce - customer ,
270+ onchain,
271+ lndOnchain,
272+ lightning,
273+ citrea,
274+ wbtc,
275+ wbtce,
267276 } ) ;
268277 }
269278
@@ -273,14 +282,7 @@ export class MonitoringController {
273282 private buildUsdHistory (
274283 evmHistory : { timestamp : string ; blockchain : string ; nativeBalance : number ; tokenBalances : string } [ ] ,
275284 seedEvmBalances ?: { timestamp : string ; blockchain : string ; nativeBalance : number ; tokenBalances : string } [ ] ,
276- ) : { timestamp : string ; totalBalance : number } [ ] {
277- const usdTokens = [
278- { symbol : 'JUSD' , chain : 'citrea' } ,
279- { symbol : 'USDC' , chain : 'ethereum' } ,
280- { symbol : 'USDT' , chain : 'ethereum' } ,
281- { symbol : 'USDT' , chain : 'polygon' } ,
282- ] ;
283-
285+ ) : { timestamp : string ; totalBalance : number ; jusd : number ; usdc : number ; usdtEthereum : number ; usdtPolygon : number } [ ] {
284286 const allTimestamps = new Set < string > ( ) ;
285287 for ( const e of evmHistory ) allTimestamps . add ( new Date ( e . timestamp ) . toISOString ( ) ) ;
286288
@@ -290,24 +292,34 @@ export class MonitoringController {
290292 if ( seedEvmBalances ) for ( const e of seedEvmBalances ) lastEvm [ e . blockchain ] = e ;
291293 let evmIdx = 0 ;
292294
293- const points : { timestamp : string ; totalBalance : number } [ ] = [ ] ;
295+ const points : { timestamp : string ; totalBalance : number ; jusd : number ; usdc : number ; usdtEthereum : number ; usdtPolygon : number } [ ] = [ ] ;
294296
295297 for ( const ts of sorted ) {
296298 while ( evmIdx < evmHistory . length && new Date ( evmHistory [ evmIdx ] . timestamp ) . toISOString ( ) <= ts ) {
297299 lastEvm [ evmHistory [ evmIdx ] . blockchain ] = evmHistory [ evmIdx ] ;
298300 evmIdx ++ ;
299301 }
300302
301- let total = 0 ;
302- for ( const def of usdTokens ) {
303- if ( lastEvm [ def . chain ] ) {
304- const tokens = this . parseTokenBalances ( lastEvm [ def . chain ] . tokenBalances ) ;
305- const t = tokens . find ( ( tk ) => tk . symbol === def . symbol ) ;
306- if ( t ) total += t . balance ;
307- }
308- }
303+ const findToken = ( chain : string , symbol : string ) : number => {
304+ if ( ! lastEvm [ chain ] ) return 0 ;
305+ const tokens = this . parseTokenBalances ( lastEvm [ chain ] . tokenBalances ) ;
306+ const t = tokens . find ( ( tk ) => tk . symbol === symbol ) ;
307+ return t ? t . balance : 0 ;
308+ } ;
309+
310+ const jusd = findToken ( 'citrea' , 'JUSD' ) ;
311+ const usdc = findToken ( 'ethereum' , 'USDC' ) ;
312+ const usdtEthereum = findToken ( 'ethereum' , 'USDT' ) ;
313+ const usdtPolygon = findToken ( 'polygon' , 'USDT' ) ;
309314
310- points . push ( { timestamp : ts , totalBalance : total } ) ;
315+ points . push ( {
316+ timestamp : ts ,
317+ totalBalance : jusd + usdc + usdtEthereum + usdtPolygon ,
318+ jusd,
319+ usdc,
320+ usdtEthereum,
321+ usdtPolygon,
322+ } ) ;
311323 }
312324
313325 return points ;
0 commit comments