@centrifuge/sdk 0.55.2 → 0.55.3

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.
Files changed (99) hide show
  1. package/dist/entities/BalanceSheet.js +3 -3
  2. package/dist/entities/BalanceSheet.js.map +1 -1
  3. package/dist/entities/IndexerQueries/assetSnapshots.d.ts +69 -0
  4. package/dist/entities/IndexerQueries/assetSnapshots.d.ts.map +1 -0
  5. package/dist/entities/IndexerQueries/assetSnapshots.js +91 -0
  6. package/dist/entities/IndexerQueries/assetSnapshots.js.map +1 -0
  7. package/dist/entities/IndexerQueries/assetTransactions.d.ts +93 -0
  8. package/dist/entities/IndexerQueries/assetTransactions.d.ts.map +1 -0
  9. package/dist/entities/IndexerQueries/assetTransactions.js +75 -0
  10. package/dist/entities/IndexerQueries/assetTransactions.js.map +1 -0
  11. package/dist/entities/IndexerQueries/epochs.d.ts +45 -0
  12. package/dist/entities/IndexerQueries/epochs.d.ts.map +1 -0
  13. package/dist/entities/IndexerQueries/epochs.js +51 -0
  14. package/dist/entities/IndexerQueries/epochs.js.map +1 -0
  15. package/dist/entities/IndexerQueries/index.d.ts +40 -0
  16. package/dist/entities/IndexerQueries/index.d.ts.map +1 -0
  17. package/dist/entities/IndexerQueries/index.js +45 -0
  18. package/dist/entities/IndexerQueries/index.js.map +1 -0
  19. package/dist/entities/IndexerQueries/investorTransactions.d.ts +50 -0
  20. package/dist/entities/IndexerQueries/investorTransactions.d.ts.map +1 -0
  21. package/dist/entities/IndexerQueries/investorTransactions.js +55 -0
  22. package/dist/entities/IndexerQueries/investorTransactions.js.map +1 -0
  23. package/dist/entities/IndexerQueries/poolFeeSnapshots.d.ts +48 -0
  24. package/dist/entities/IndexerQueries/poolFeeSnapshots.d.ts.map +1 -0
  25. package/dist/entities/IndexerQueries/poolFeeSnapshots.js +62 -0
  26. package/dist/entities/IndexerQueries/poolFeeSnapshots.js.map +1 -0
  27. package/dist/entities/IndexerQueries/poolFeeTransactions.d.ts +34 -0
  28. package/dist/entities/IndexerQueries/poolFeeTransactions.d.ts.map +1 -0
  29. package/dist/entities/IndexerQueries/poolFeeTransactions.js +37 -0
  30. package/dist/entities/IndexerQueries/poolFeeTransactions.js.map +1 -0
  31. package/dist/entities/IndexerQueries/poolSnapshots.d.ts +79 -0
  32. package/dist/entities/IndexerQueries/poolSnapshots.d.ts.map +1 -0
  33. package/dist/entities/IndexerQueries/poolSnapshots.js +112 -0
  34. package/dist/entities/IndexerQueries/poolSnapshots.js.map +1 -0
  35. package/dist/entities/IndexerQueries/trancheCurrencyBalance.d.ts +76 -0
  36. package/dist/entities/IndexerQueries/trancheCurrencyBalance.d.ts.map +1 -0
  37. package/dist/entities/IndexerQueries/trancheCurrencyBalance.js +63 -0
  38. package/dist/entities/IndexerQueries/trancheCurrencyBalance.js.map +1 -0
  39. package/dist/entities/IndexerQueries/trancheSnapshots.d.ts +70 -0
  40. package/dist/entities/IndexerQueries/trancheSnapshots.d.ts.map +1 -0
  41. package/dist/entities/IndexerQueries/trancheSnapshots.js +76 -0
  42. package/dist/entities/IndexerQueries/trancheSnapshots.js.map +1 -0
  43. package/dist/entities/Reports/Processor.d.ts +46 -0
  44. package/dist/entities/Reports/Processor.d.ts.map +1 -0
  45. package/dist/entities/Reports/Processor.js +471 -0
  46. package/dist/entities/Reports/Processor.js.map +1 -0
  47. package/dist/entities/Reports/Processor.test.d.ts +2 -0
  48. package/dist/entities/Reports/Processor.test.d.ts.map +1 -0
  49. package/dist/entities/Reports/Processor.test.js +767 -0
  50. package/dist/entities/Reports/Processor.test.js.map +1 -0
  51. package/dist/entities/Reports/Reports.test.d.ts +2 -0
  52. package/dist/entities/Reports/Reports.test.d.ts.map +1 -0
  53. package/dist/entities/Reports/Reports.test.js +559 -0
  54. package/dist/entities/Reports/Reports.test.js.map +1 -0
  55. package/dist/entities/Reports/index.d.ts +21 -0
  56. package/dist/entities/Reports/index.d.ts.map +1 -0
  57. package/dist/entities/Reports/index.js +144 -0
  58. package/dist/entities/Reports/index.js.map +1 -0
  59. package/dist/tests/mocks/mockAssetSnapshots.d.ts +3 -0
  60. package/dist/tests/mocks/mockAssetSnapshots.d.ts.map +1 -0
  61. package/dist/tests/mocks/mockAssetSnapshots.js +56 -0
  62. package/dist/tests/mocks/mockAssetSnapshots.js.map +1 -0
  63. package/dist/tests/mocks/mockAssetTransactions.d.ts +3 -0
  64. package/dist/tests/mocks/mockAssetTransactions.d.ts.map +1 -0
  65. package/dist/tests/mocks/mockAssetTransactions.js +86 -0
  66. package/dist/tests/mocks/mockAssetTransactions.js.map +1 -0
  67. package/dist/tests/mocks/mockEpochs.d.ts +3 -0
  68. package/dist/tests/mocks/mockEpochs.d.ts.map +1 -0
  69. package/dist/tests/mocks/mockEpochs.js +26 -0
  70. package/dist/tests/mocks/mockEpochs.js.map +1 -0
  71. package/dist/tests/mocks/mockInvestorCurrencyBalance.d.ts +3 -0
  72. package/dist/tests/mocks/mockInvestorCurrencyBalance.d.ts.map +1 -0
  73. package/dist/tests/mocks/mockInvestorCurrencyBalance.js +29 -0
  74. package/dist/tests/mocks/mockInvestorCurrencyBalance.js.map +1 -0
  75. package/dist/tests/mocks/mockInvestorTransactions.d.ts +3 -0
  76. package/dist/tests/mocks/mockInvestorTransactions.d.ts.map +1 -0
  77. package/dist/tests/mocks/mockInvestorTransactions.js +35 -0
  78. package/dist/tests/mocks/mockInvestorTransactions.js.map +1 -0
  79. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts +3 -0
  80. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts.map +1 -0
  81. package/dist/tests/mocks/mockPoolFeeSnapshot.js +68 -0
  82. package/dist/tests/mocks/mockPoolFeeSnapshot.js.map +1 -0
  83. package/dist/tests/mocks/mockPoolFeeTransactions.d.ts +11 -0
  84. package/dist/tests/mocks/mockPoolFeeTransactions.d.ts.map +1 -0
  85. package/dist/tests/mocks/mockPoolFeeTransactions.js +20 -0
  86. package/dist/tests/mocks/mockPoolFeeTransactions.js.map +1 -0
  87. package/dist/tests/mocks/mockPoolSnapshots.d.ts +3 -0
  88. package/dist/tests/mocks/mockPoolSnapshots.d.ts.map +1 -0
  89. package/dist/tests/mocks/mockPoolSnapshots.js +66 -0
  90. package/dist/tests/mocks/mockPoolSnapshots.js.map +1 -0
  91. package/dist/tests/mocks/mockTrancheSnapshots.d.ts +3 -0
  92. package/dist/tests/mocks/mockTrancheSnapshots.d.ts.map +1 -0
  93. package/dist/tests/mocks/mockTrancheSnapshots.js +112 -0
  94. package/dist/tests/mocks/mockTrancheSnapshots.js.map +1 -0
  95. package/dist/types/reports.d.ts +336 -0
  96. package/dist/types/reports.d.ts.map +1 -0
  97. package/dist/types/reports.js +2 -0
  98. package/dist/types/reports.js.map +1 -0
  99. package/package.json +1 -1
@@ -0,0 +1,471 @@
1
+ import { Balance, Price, Rate } from '../../utils/BigInt.js';
2
+ import { groupByPeriod } from '../../utils/date.js';
3
+ export class Processor {
4
+ /**
5
+ * Process raw data into a balance sheet report
6
+ * @param data Pool and tranche snapshot data
7
+ * @param filter Optional filtering and grouping options
8
+ * @returns Processed balance sheet report at the end of each period
9
+ */
10
+ balanceSheet(data, filter) {
11
+ if (!data.poolSnapshots?.length)
12
+ return [];
13
+ const items = data?.poolSnapshots?.map((snapshot) => {
14
+ const tranches = data.trancheSnapshots[this.getDateKey(snapshot.timestamp)] ?? [];
15
+ if (tranches.length === 0)
16
+ console.warn('No tranche snapshots found for pool snapshot', snapshot.timestamp);
17
+ return {
18
+ type: 'balanceSheet',
19
+ timestamp: snapshot.timestamp,
20
+ assetValuation: snapshot.portfolioValuation,
21
+ onchainReserve: snapshot.totalReserve,
22
+ offchainCash: snapshot.offchainCashValue,
23
+ accruedFees: snapshot.sumPoolFeesPendingAmount,
24
+ netAssetValue: snapshot.netAssetValue,
25
+ tranches: tranches.length
26
+ ? tranches?.map((tranche) => ({
27
+ name: tranche.pool.currency.symbol,
28
+ timestamp: tranche.timestamp,
29
+ tokenId: tranche.trancheId,
30
+ tokenSupply: tranche.tokenSupply,
31
+ tokenPrice: tranche.price,
32
+ trancheValue: tranche.tokenSupply.mul(tranche?.price?.toDecimal() ?? 0n),
33
+ }))
34
+ : [
35
+ {
36
+ name: '',
37
+ timestamp: '',
38
+ tokenId: '',
39
+ tokenSupply: new Balance(0n, snapshot.poolCurrency.decimals),
40
+ tokenPrice: new Price(0n),
41
+ trancheValue: new Balance(0n, snapshot.poolCurrency.decimals),
42
+ },
43
+ ],
44
+ totalCapital: tranches.reduce((acc, curr) => {
45
+ return acc.add(curr.tokenSupply.mul(curr?.price?.toDecimal()));
46
+ }, new Balance(0, snapshot.poolCurrency.decimals)),
47
+ };
48
+ });
49
+ return this.applyGrouping(items, filter?.groupBy, 'latest');
50
+ }
51
+ /**
52
+ * Process raw data into an aggregated cashflow report, fees and endCashBalance are NOT aggregated by period
53
+ * @param data Pool snapshot data
54
+ * @param filter Optional filtering and grouping options
55
+ * @returns Processed cashflow report at the end of each period
56
+ */
57
+ cashflow(data, filter) {
58
+ if (!data.poolSnapshots?.length)
59
+ return [];
60
+ if (!data.metadata) {
61
+ throw new Error('Provide the correct metadataHash to centrifuge.pool(<poolId>, <metadataHash>).reports.cashflow()');
62
+ }
63
+ const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
64
+ const items = data.poolSnapshots.map((day) => {
65
+ const poolFees = data.poolFeeSnapshots[this.getDateKey(day.timestamp)]?.map((fee) => ({
66
+ name: fee.poolFee.name,
67
+ amount: fee.sumPaidAmountByPeriod,
68
+ timestamp: fee.timestamp,
69
+ feeId: fee.poolFeeId.split('-')[1] ?? '',
70
+ })) ?? [];
71
+ const principalRepayments = day.sumPrincipalRepaidAmountByPeriod;
72
+ const interest = day.sumInterestRepaidAmountByPeriod.add(day.sumUnscheduledRepaidAmountByPeriod);
73
+ const acquisistions = day.sumBorrowedAmountByPeriod;
74
+ const fees = day.sumPoolFeesPaidAmountByPeriod;
75
+ const netCashflowAsset = principalRepayments.sub(acquisistions).add(interest);
76
+ const investments = day.sumInvestedAmountByPeriod;
77
+ const redemptions = day.sumRedeemedAmountByPeriod;
78
+ const activitiesCashflow = investments.sub(redemptions);
79
+ const netCashflowAfterFees = netCashflowAsset.sub(fees);
80
+ const totalCashflow = netCashflowAfterFees.add(activitiesCashflow);
81
+ return {
82
+ type: 'cashflow',
83
+ subtype,
84
+ timestamp: day.timestamp,
85
+ principalPayments: principalRepayments,
86
+ ...(subtype === 'publicCredit' && { realizedPL: day.sumRealizedProfitFifoByPeriod }),
87
+ interestPayments: interest,
88
+ ...(subtype === 'privateCredit' ? { assetFinancing: acquisistions } : { assetPurchases: acquisistions }),
89
+ netCashflowAsset,
90
+ fees: poolFees,
91
+ netCashflowAfterFees,
92
+ investments,
93
+ redemptions,
94
+ activitiesCashflow,
95
+ totalCashflow,
96
+ endCashBalance: { balance: day.totalReserve.add(day.offchainCashValue) },
97
+ };
98
+ });
99
+ return this.applyGrouping(items, filter?.groupBy, 'sum');
100
+ }
101
+ /**
102
+ * Process raw data into an aggregated profit and loss report, fees and endCashBalance are NOT aggregated by period
103
+ * @param data Pool snapshot data
104
+ * @param filter Optional filtering and grouping options
105
+ * @returns Processed profit and loss report at the end of each period
106
+ */
107
+ profitAndLoss(data, filter) {
108
+ if (!data.poolSnapshots?.length)
109
+ return [];
110
+ // Check if the metadata tranches match the pool snapshots tranches to verify the correct metadataHash is provided
111
+ if (Object.keys(data.metadata?.shareClasses ?? {})[0] !== data.poolSnapshots[0]?.tranches[0]?.split('-')[1]) {
112
+ throw new Error('Provide the correct metadataHash to centrifuge.pool(<poolId>, <metadataHash>).reports.profitAndLoss()');
113
+ }
114
+ const items = data.poolSnapshots.map((day) => {
115
+ const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
116
+ const profitAndLossFromAsset = subtype === 'publicCredit'
117
+ ? day.sumUnrealizedProfitByPeriod
118
+ : day.sumInterestRepaidAmountByPeriod
119
+ .add(day.sumInterestAccruedByPeriod)
120
+ .add(day.sumDebtWrittenOffByPeriod)
121
+ .sub(day.sumUnscheduledRepaidAmountByPeriod);
122
+ const interestPayments = day.sumInterestRepaidAmountByPeriod;
123
+ const otherPayments = day.sumUnscheduledRepaidAmountByPeriod;
124
+ const totalIncome = profitAndLossFromAsset.add(interestPayments).add(otherPayments);
125
+ const fees = data.poolFeeSnapshots[this.getDateKey(day.timestamp)]?.map((fee) => ({
126
+ name: fee.poolFee.name,
127
+ amount: fee.sumAccruedAmountByPeriod.add(fee.sumChargedAmountByPeriod),
128
+ timestamp: fee.timestamp,
129
+ feeId: fee.poolFeeId.split('-')[1] ?? '',
130
+ })) ?? [];
131
+ const totalExpenses = day.sumPoolFeesChargedAmountByPeriod.sub(day.sumPoolFeesAccruedAmountByPeriod);
132
+ const totalProfitAndLoss = totalIncome.sub(totalExpenses);
133
+ return {
134
+ type: 'profitAndLoss',
135
+ subtype,
136
+ timestamp: day.timestamp,
137
+ profitAndLossFromAsset,
138
+ interestPayments,
139
+ ...(subtype === 'privateCredit' && { interestAccrued: day.sumInterestAccruedByPeriod }),
140
+ ...(subtype === 'privateCredit' && { assetWriteOffs: day.sumDebtWrittenOffByPeriod }),
141
+ otherPayments,
142
+ ...(subtype === 'publicCredit' && { totalIncome }),
143
+ fees,
144
+ totalExpenses,
145
+ totalProfitAndLoss,
146
+ };
147
+ });
148
+ return this.applyGrouping(items, filter?.groupBy, 'sum');
149
+ }
150
+ investorTransactions(data, filter) {
151
+ if (!data.investorTransactions?.length)
152
+ return [];
153
+ const validTypes = new Set([
154
+ 'INVEST_ORDER_UPDATE',
155
+ 'REDEEM_ORDER_UPDATE',
156
+ 'INVEST_ORDER_CANCEL',
157
+ 'REDEEM_ORDER_CANCEL',
158
+ 'INVEST_EXECUTION',
159
+ 'REDEEM_EXECUTION',
160
+ 'INVEST_COLLECT',
161
+ 'REDEEM_COLLECT',
162
+ 'INVEST_LP_COLLECT',
163
+ 'REDEEM_LP_COLLECT',
164
+ 'TRANSFER_IN',
165
+ 'TRANSFER_OUT',
166
+ ]);
167
+ const filterAddress = filter?.address?.toLowerCase();
168
+ const filterNetwork = filter?.network === 'all' ? null : filter?.network;
169
+ return data.investorTransactions.reduce((acc, day) => {
170
+ const typeMatches = (filter?.transactionType === 'orders' && day.type.includes('ORDER')) ||
171
+ (filter?.transactionType === 'executions' && day.type.includes('EXECUTION')) ||
172
+ (filter?.transactionType === 'transfers' && (day.type.includes('COLLECT') || day.type.includes('TRANSFER'))) ||
173
+ ((!filter?.transactionType || filter?.transactionType === 'all') && validTypes.has(day.type));
174
+ const filterMatches = (!filterNetwork || filterNetwork === day.chainId) &&
175
+ (!filter?.tokenId || filter.tokenId === day.trancheId) &&
176
+ (!filterAddress ||
177
+ day.accountId.toLowerCase() === filterAddress ||
178
+ day.evmAddress?.toLowerCase() === filterAddress);
179
+ if (typeMatches && filterMatches) {
180
+ acc.push({
181
+ type: 'investorTransactions',
182
+ timestamp: day.timestamp.toISOString(),
183
+ chainId: day.chainId,
184
+ account: day.evmAddress ?? day.accountId,
185
+ epoch: day.epochNumber?.toString() ?? '',
186
+ transactionType: day.type,
187
+ currencyAmount: day.currencyAmount,
188
+ trancheTokenAmount: day.tokenAmount,
189
+ trancheTokenId: day.trancheId,
190
+ price: day.tokenPrice ?? '',
191
+ transactionHash: day.hash,
192
+ });
193
+ }
194
+ return acc;
195
+ }, []);
196
+ }
197
+ assetTransactions(data, filter) {
198
+ if (!data.assetTransactions?.length)
199
+ return [];
200
+ const typeMap = {
201
+ created: 'CREATED',
202
+ financed: 'BORROWED',
203
+ repaid: 'REPAID',
204
+ priced: 'PRICED',
205
+ closed: 'CLOSED',
206
+ cashTransfer: 'CASH_TRANSFER',
207
+ };
208
+ return data.assetTransactions.reduce((acc, tx) => {
209
+ const typeMatches = !filter?.transactionType || filter.transactionType === 'all' || tx.type === typeMap[filter.transactionType];
210
+ const assetMatches = !filter?.assetId || filter.assetId === tx.asset.id.split('-')[1];
211
+ if (typeMatches && assetMatches) {
212
+ acc.push({
213
+ type: 'assetTransactions',
214
+ timestamp: tx.timestamp.toISOString(),
215
+ assetId: tx.asset.id,
216
+ epoch: tx.epochId,
217
+ transactionType: tx.type,
218
+ amount: tx.amount,
219
+ principalAmount: tx.principalAmount,
220
+ interestAmount: tx.interestAmount,
221
+ transactionHash: tx.hash,
222
+ name: tx.asset.name,
223
+ fromAsset: tx.fromAsset
224
+ ? {
225
+ id: tx.fromAsset.id,
226
+ name: tx.fromAsset.name,
227
+ }
228
+ : undefined,
229
+ toAsset: tx.toAsset
230
+ ? {
231
+ id: tx.toAsset.id,
232
+ name: tx.toAsset.name,
233
+ }
234
+ : undefined,
235
+ });
236
+ }
237
+ return acc;
238
+ }, []);
239
+ }
240
+ feeTransactions(data, filter) {
241
+ if (!data.poolFeeTransactions?.length)
242
+ return [];
243
+ const feeTransactionTypes = {
244
+ PROPOSED: 'proposed',
245
+ ADDED: 'added',
246
+ REMOVED: 'removed',
247
+ CHARGED: 'directChargeMade',
248
+ UNCHARGED: 'directChargeCancelled',
249
+ ACCRUED: 'accrued',
250
+ PAID: 'paid',
251
+ };
252
+ return data.poolFeeTransactions.reduce((acc, tx) => {
253
+ if (!filter?.transactionType ||
254
+ filter.transactionType === 'all' ||
255
+ filter.transactionType === feeTransactionTypes[tx.type]) {
256
+ acc.push({
257
+ type: 'feeTransactions',
258
+ timestamp: tx.timestamp,
259
+ feeId: tx.feeId,
260
+ amount: tx.amount,
261
+ transactionType: tx.type,
262
+ });
263
+ }
264
+ return acc;
265
+ }, []);
266
+ }
267
+ tokenPrice(data, filter) {
268
+ if (Object.values(data.trancheSnapshots).length === 0)
269
+ return [];
270
+ const items = Object.entries(data.trancheSnapshots).map(([timestamp, snapshots]) => ({
271
+ type: 'tokenPrice',
272
+ timestamp,
273
+ tranches: snapshots.map((snapshot) => ({
274
+ timestamp: snapshot.timestamp,
275
+ id: snapshot.trancheId,
276
+ price: snapshot.price,
277
+ supply: snapshot.tokenSupply,
278
+ yieldMTD: snapshot.yieldMTD,
279
+ yieldQTD: snapshot.yieldQTD,
280
+ yieldYTD: snapshot.yieldYTD,
281
+ yield7daysAnnualized: snapshot.yield7DaysAnnualized,
282
+ yield30daysAnnualized: snapshot.yield30DaysAnnualized,
283
+ yield90daysAnnualized: snapshot.yield90DaysAnnualized,
284
+ yieldSinceInception: snapshot.yieldSinceInception,
285
+ })),
286
+ }));
287
+ return this.applyGrouping(items, filter?.groupBy ?? 'day', 'latest');
288
+ }
289
+ assetList(data, filter) {
290
+ if (!data.assetSnapshots?.length)
291
+ return [];
292
+ if (!data.metadata) {
293
+ throw new Error('Provide the correct metadataHash to centrifuge.pool(<poolId>, <metadataHash>).reports.assetList()');
294
+ }
295
+ return data.assetSnapshots
296
+ .filter((snapshot) => {
297
+ if (snapshot.valuationMethod?.toLowerCase() === 'cash')
298
+ return false;
299
+ const isMaturityDatePassed = snapshot?.actualMaturityDate
300
+ ? new Date() > new Date(snapshot.actualMaturityDate)
301
+ : false;
302
+ const isDebtZero = snapshot?.outstandingDebt?.isZero();
303
+ if (filter?.status === 'ongoing') {
304
+ return snapshot.status === 'ACTIVE' && !isMaturityDatePassed && !isDebtZero;
305
+ }
306
+ else if (filter?.status === 'repaid') {
307
+ return isMaturityDatePassed && isDebtZero;
308
+ }
309
+ else if (filter?.status === 'overdue') {
310
+ return isMaturityDatePassed && !isDebtZero;
311
+ }
312
+ return true;
313
+ })
314
+ .sort((a, b) => {
315
+ // Sort by actualMaturityDate in descending order
316
+ const dateA = new Date(a.actualMaturityDate || 0).getTime();
317
+ const dateB = new Date(b.actualMaturityDate || 0).getTime();
318
+ return dateB - dateA;
319
+ })
320
+ .map((snapshot) => {
321
+ const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
322
+ const items = subtype === 'publicCredit'
323
+ ? {
324
+ subtype,
325
+ faceValue: snapshot.faceValue,
326
+ outstandingQuantity: snapshot.outstandingQuantity,
327
+ currentPrice: snapshot.currentPrice,
328
+ maturityDate: snapshot.actualMaturityDate,
329
+ unrealizedProfit: snapshot.unrealizedProfitAtMarketPrice,
330
+ realizedProfit: snapshot.sumRealizedProfitFifo,
331
+ }
332
+ : {
333
+ subtype,
334
+ outstandingPrincipal: snapshot.outstandingPrincipal,
335
+ outstandingInterest: snapshot.outstandingInterest,
336
+ repaidPrincipal: snapshot.totalRepaidPrincipal,
337
+ repaidInterest: snapshot.totalRepaidInterest,
338
+ repaidUnscheduled: snapshot.totalRepaidUnscheduled,
339
+ originationDate: snapshot.actualOriginationDate,
340
+ maturityDate: snapshot.actualMaturityDate,
341
+ valuationMethod: snapshot.valuationMethod,
342
+ advanceRate: snapshot.advanceRate,
343
+ collateralValue: snapshot.collateralValue,
344
+ probabilityOfDefault: snapshot.probabilityOfDefault,
345
+ lossGivenDefault: snapshot.lossGivenDefault,
346
+ discountRate: snapshot.discountRate,
347
+ };
348
+ return {
349
+ type: 'assetList',
350
+ transactionType: snapshot.status,
351
+ timestamp: snapshot.timestamp,
352
+ assetId: snapshot.assetId,
353
+ presentValue: snapshot.presentValue,
354
+ name: snapshot.name,
355
+ ...items,
356
+ };
357
+ });
358
+ }
359
+ investorList(data, filter) {
360
+ if (!data.trancheCurrencyBalance?.length)
361
+ return [];
362
+ const filterNetwork = filter?.network === 'all' ? null : filter?.network;
363
+ const filterAddress = filter?.address?.toLowerCase();
364
+ return data.trancheCurrencyBalance
365
+ .filter((investor) => {
366
+ const networkMatches = !filterNetwork || filterNetwork === investor.chainId;
367
+ const addressMatches = !filterAddress ||
368
+ investor.accountId.toLowerCase() === filterAddress ||
369
+ investor.evmAddress?.toLowerCase() === filterAddress;
370
+ const trancheMatches = !filter?.trancheId || filter.trancheId === investor.trancheId;
371
+ const hasPosition = !filter?.address && (!investor.balance.isZero() || !investor.claimableTrancheTokens.isZero());
372
+ return networkMatches && addressMatches && trancheMatches && (hasPosition || filter?.address);
373
+ })
374
+ .map((balance) => {
375
+ const totalPositions = data.trancheCurrencyBalance.reduce((sum, investor) => {
376
+ return sum.add(investor.balance).add(investor.claimableTrancheTokens);
377
+ }, new Balance(0, balance.balance.decimals));
378
+ return {
379
+ type: 'investorList',
380
+ chainId: balance.chainId,
381
+ accountId: balance.accountId,
382
+ evmAddress: balance.evmAddress,
383
+ position: balance.balance.add(balance.claimableTrancheTokens),
384
+ poolPercentage: Rate.fromPercent(balance.balance.toDecimal().div(totalPositions.toDecimal()).mul(100).toString()),
385
+ pendingInvest: balance.pendingInvestCurrency,
386
+ pendingRedeem: balance.pendingRedeemTrancheTokens,
387
+ trancheId: balance.trancheId,
388
+ };
389
+ });
390
+ }
391
+ ordersList(data) {
392
+ if (!data.poolEpochs?.length)
393
+ return [];
394
+ const items = data.poolEpochs.map((epoch) => ({
395
+ type: 'ordersList',
396
+ epoch: epoch.epochId.split('-')[1],
397
+ timestamp: epoch.closedAt,
398
+ netAssetValue: epoch.netAssetValue,
399
+ navPerShare: epoch.tokenPrice,
400
+ lockedInvestments: epoch.sumOutstandingInvestOrders,
401
+ lockedRedemptions: epoch.sumOutstandingRedeemOrders,
402
+ executedInvestments: epoch.sumFulfilledInvestOrders,
403
+ executedRedemptions: epoch.sumFulfilledRedeemOrders,
404
+ paidFees: epoch.paidFees,
405
+ }));
406
+ return items;
407
+ }
408
+ assetTimeSeries(data, filter) {
409
+ if (!data.assetSnapshots?.length)
410
+ return [];
411
+ const items = data.assetSnapshots
412
+ .filter((snapshot) => {
413
+ return ((!filter?.assetId || snapshot.assetId.split('-')[1] === filter.assetId) &&
414
+ (!filter?.name || snapshot.name === filter.name));
415
+ })
416
+ .map((snapshot) => ({
417
+ type: 'assetTimeSeries',
418
+ timestamp: snapshot.timestamp,
419
+ currentPrice: snapshot.currentPrice,
420
+ assetId: snapshot.assetId.split('-')[1],
421
+ name: snapshot.name,
422
+ }));
423
+ return items;
424
+ }
425
+ /**
426
+ * Apply grouping to a report.
427
+ * @param items Report items
428
+ * @param filter Optional filtering and grouping options
429
+ * @param strategy Grouping strategy, sum aggregates data by period, latest returns the latest item in the period
430
+ * @returns Grouped report
431
+ *
432
+ * Note: if strategy is 'sum', only Decimal values that are not nested are aggregated, all
433
+ * other values are overwritten with the last value in the period
434
+ */
435
+ applyGrouping(items, groupBy = 'day', strategy = 'latest') {
436
+ if (strategy === 'latest') {
437
+ return groupByPeriod(items, groupBy, 'latest');
438
+ }
439
+ const groups = groupByPeriod(items, groupBy, 'all');
440
+ return groups.map((group) => {
441
+ const base = { ...group[group.length - 1] };
442
+ // Aggregate Decimal values
443
+ for (const key in base) {
444
+ const value = base[key];
445
+ if (value instanceof Balance) {
446
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Balance(0n, value.decimals));
447
+ }
448
+ if (value instanceof Price) {
449
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Price(0n));
450
+ }
451
+ }
452
+ return base;
453
+ });
454
+ }
455
+ getDateKey(timestamp, groupBy) {
456
+ switch (groupBy) {
457
+ case 'month':
458
+ return timestamp.slice(0, 7); // YYYY-MM
459
+ case 'quarter':
460
+ const date = new Date(timestamp);
461
+ const quarter = Math.floor(date.getMonth() / 3) + 1;
462
+ return `${date.getFullYear()}-Q${quarter}`; // YYYY-Q#
463
+ case 'year':
464
+ return timestamp.slice(0, 4); // YYYY
465
+ default:
466
+ return timestamp.slice(0, 10); // YYYY-MM-DD
467
+ }
468
+ }
469
+ }
470
+ export const processor = new Processor();
471
+ //# sourceMappingURL=Processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Processor.js","sourceRoot":"","sources":["../../../src/entities/Reports/Processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Processor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Processor.test.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/Processor.test.ts"],"names":[],"mappings":""}