11import { SelectQueryBuilder , ORM , raw } from "fasset-indexer-core/orm"
22import {
3- CollateralPoolEntered , CollateralPoolExited ,
4- MintingExecuted , RedemptionRequested , LiquidationPerformed
3+ MintingExecuted , RedemptionRequested , LiquidationPerformed ,
4+ CPExited , CPEntered , CPSelfCloseExited
55} from "fasset-indexer-core/entities"
66
77
@@ -12,12 +12,13 @@ export abstract class SharedAnalytics {
1212 const entered = await this . poolCollateralEnteredAt ( pool , user , timestamp )
1313 if ( entered === BigInt ( 0 ) ) return BigInt ( 0 )
1414 const exited = await this . poolCollateralExitedAt ( pool , user , timestamp )
15- return entered - exited
15+ const selfCloseExited = await this . poolCollateralSelfCloseExitedAt ( pool , user , timestamp )
16+ return entered - exited - selfCloseExited
1617 }
1718
1819 protected async poolCollateralEnteredAt ( pool ?: string , user ?: string , timestamp ?: number ) : Promise < bigint > {
1920 const enteredCollateral = await this . filterEnterOrExitQueryBy (
20- this . orm . em . fork ( ) . createQueryBuilder ( CollateralPoolEntered , 'cpe' )
21+ this . orm . em . fork ( ) . createQueryBuilder ( CPEntered , 'cpe' )
2122 . select ( [ raw ( 'sum(cpe.amount_nat_wei) as collateral' ) ] ) ,
2223 'cpe' , pool , user , timestamp
2324 ) . execute ( ) as { collateral : bigint } [ ]
@@ -26,13 +27,22 @@ export abstract class SharedAnalytics {
2627
2728 protected async poolCollateralExitedAt ( pool ?: string , user ?: string , timestamp ?: number ) : Promise < bigint > {
2829 const exitedCollateral = await this . filterEnterOrExitQueryBy (
29- this . orm . em . fork ( ) . createQueryBuilder ( CollateralPoolExited , 'cpe' )
30+ this . orm . em . fork ( ) . createQueryBuilder ( CPExited , 'cpe' )
3031 . select ( [ raw ( 'sum(cpe.received_nat_wei) as collateral' ) ] ) ,
3132 'cpe' , pool , user , timestamp
3233 ) . execute ( ) as { collateral : bigint } [ ]
3334 return BigInt ( exitedCollateral [ 0 ] ?. collateral || 0 )
3435 }
3536
37+ protected async poolCollateralSelfCloseExitedAt ( pool ?: string , user ?: string , timestamp ?: number ) : Promise < bigint > {
38+ const selfCloseExitedCollateral = await this . filterEnterOrExitQueryBy (
39+ this . orm . em . fork ( ) . createQueryBuilder ( CPSelfCloseExited , 'cpsce' )
40+ . select ( [ raw ( 'sum(cpsce.received_nat_wei) as collateral' ) ] ) ,
41+ 'cpsce' , pool , user , timestamp
42+ ) . execute ( ) as { collateral : bigint } [ ]
43+ return BigInt ( selfCloseExitedCollateral [ 0 ] ?. collateral || 0 )
44+ }
45+
3646 protected async backedFAssets ( vault : string ) : Promise < bigint > {
3747 const em = this . orm . em . fork ( )
3848 const minted = await em . createQueryBuilder ( MintingExecuted , 'me' )
0 commit comments