@centrifuge/sdk 0.0.0-alpha.3 → 0.0.0-alpha.5

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 (92) hide show
  1. package/dist/IndexerQueries/assetSnapshots.d.ts +69 -0
  2. package/dist/IndexerQueries/assetSnapshots.d.ts.map +1 -0
  3. package/dist/IndexerQueries/assetSnapshots.js +91 -0
  4. package/dist/IndexerQueries/assetSnapshots.js.map +1 -0
  5. package/dist/IndexerQueries/assetTransactions.d.ts +90 -0
  6. package/dist/IndexerQueries/assetTransactions.d.ts.map +1 -0
  7. package/dist/IndexerQueries/assetTransactions.js +74 -0
  8. package/dist/IndexerQueries/assetTransactions.js.map +1 -0
  9. package/dist/IndexerQueries/index.d.ts +38 -0
  10. package/dist/IndexerQueries/index.d.ts.map +1 -0
  11. package/dist/IndexerQueries/index.js +41 -0
  12. package/dist/IndexerQueries/index.js.map +1 -0
  13. package/dist/IndexerQueries/investorTransactions.d.ts +50 -0
  14. package/dist/IndexerQueries/investorTransactions.d.ts.map +1 -0
  15. package/dist/IndexerQueries/investorTransactions.js +55 -0
  16. package/dist/IndexerQueries/investorTransactions.js.map +1 -0
  17. package/dist/IndexerQueries/poolFeeSnapshots.d.ts.map +1 -0
  18. package/dist/IndexerQueries/poolFeeSnapshots.js.map +1 -0
  19. package/dist/IndexerQueries/poolFeeTransactions.d.ts +34 -0
  20. package/dist/IndexerQueries/poolFeeTransactions.d.ts.map +1 -0
  21. package/dist/IndexerQueries/poolFeeTransactions.js +37 -0
  22. package/dist/IndexerQueries/poolFeeTransactions.js.map +1 -0
  23. package/dist/IndexerQueries/poolSnapshots.d.ts.map +1 -0
  24. package/dist/IndexerQueries/poolSnapshots.js.map +1 -0
  25. package/dist/IndexerQueries/trancheCurrencyBalance.d.ts +78 -0
  26. package/dist/IndexerQueries/trancheCurrencyBalance.d.ts.map +1 -0
  27. package/dist/IndexerQueries/trancheCurrencyBalance.js +103 -0
  28. package/dist/IndexerQueries/trancheCurrencyBalance.js.map +1 -0
  29. package/dist/{queries → IndexerQueries}/trancheSnapshots.d.ts +1 -1
  30. package/dist/IndexerQueries/trancheSnapshots.d.ts.map +1 -0
  31. package/dist/{queries → IndexerQueries}/trancheSnapshots.js +1 -1
  32. package/dist/IndexerQueries/trancheSnapshots.js.map +1 -0
  33. package/dist/Reports/Processor.d.ts +11 -5
  34. package/dist/Reports/Processor.d.ts.map +1 -1
  35. package/dist/Reports/Processor.js +229 -3
  36. package/dist/Reports/Processor.js.map +1 -1
  37. package/dist/Reports/index.d.ts +15 -12
  38. package/dist/Reports/index.d.ts.map +1 -1
  39. package/dist/Reports/index.js +79 -21
  40. package/dist/Reports/index.js.map +1 -1
  41. package/dist/tests/mocks/mockAssetSnapshots.d.ts +3 -0
  42. package/dist/tests/mocks/mockAssetSnapshots.d.ts.map +1 -0
  43. package/dist/tests/mocks/mockAssetSnapshots.js +56 -0
  44. package/dist/tests/mocks/mockAssetSnapshots.js.map +1 -0
  45. package/dist/tests/mocks/mockAssetTransactions.d.ts +3 -0
  46. package/dist/tests/mocks/mockAssetTransactions.d.ts.map +1 -0
  47. package/dist/tests/mocks/mockAssetTransactions.js +81 -0
  48. package/dist/tests/mocks/mockAssetTransactions.js.map +1 -0
  49. package/dist/tests/mocks/mockInvestorCurrencyBalance.d.ts +3 -0
  50. package/dist/tests/mocks/mockInvestorCurrencyBalance.d.ts.map +1 -0
  51. package/dist/tests/mocks/mockInvestorCurrencyBalance.js +29 -0
  52. package/dist/tests/mocks/mockInvestorCurrencyBalance.js.map +1 -0
  53. package/dist/tests/mocks/mockInvestorTransactions.d.ts +3 -0
  54. package/dist/tests/mocks/mockInvestorTransactions.d.ts.map +1 -0
  55. package/dist/tests/mocks/mockInvestorTransactions.js +35 -0
  56. package/dist/tests/mocks/mockInvestorTransactions.js.map +1 -0
  57. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts +1 -1
  58. package/dist/tests/mocks/mockPoolFeeSnapshot.d.ts.map +1 -1
  59. package/dist/tests/mocks/mockPoolFeeTransactions.d.ts +11 -0
  60. package/dist/tests/mocks/mockPoolFeeTransactions.d.ts.map +1 -0
  61. package/dist/tests/mocks/mockPoolFeeTransactions.js +20 -0
  62. package/dist/tests/mocks/mockPoolFeeTransactions.js.map +1 -0
  63. package/dist/tests/mocks/mockPoolSnapshots.d.ts +1 -1
  64. package/dist/tests/mocks/mockPoolSnapshots.d.ts.map +1 -1
  65. package/dist/tests/mocks/mockTrancheSnapshots.d.ts +1 -1
  66. package/dist/tests/mocks/mockTrancheSnapshots.d.ts.map +1 -1
  67. package/dist/types/reports.d.ts +275 -0
  68. package/dist/types/reports.d.ts.map +1 -0
  69. package/dist/types/reports.js +2 -0
  70. package/dist/types/reports.js.map +1 -0
  71. package/dist/utils/BigInt.d.ts +1 -1
  72. package/dist/utils/BigInt.d.ts.map +1 -1
  73. package/dist/utils/BigInt.js +2 -2
  74. package/dist/utils/BigInt.js.map +1 -1
  75. package/dist/utils/date.d.ts.map +1 -1
  76. package/dist/utils/date.js +5 -4
  77. package/dist/utils/date.js.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/Reports/types.d.ts +0 -102
  80. package/dist/Reports/types.d.ts.map +0 -1
  81. package/dist/Reports/types.js +0 -2
  82. package/dist/Reports/types.js.map +0 -1
  83. package/dist/queries/poolFeeSnapshots.d.ts.map +0 -1
  84. package/dist/queries/poolFeeSnapshots.js.map +0 -1
  85. package/dist/queries/poolSnapshots.d.ts.map +0 -1
  86. package/dist/queries/poolSnapshots.js.map +0 -1
  87. package/dist/queries/trancheSnapshots.d.ts.map +0 -1
  88. package/dist/queries/trancheSnapshots.js.map +0 -1
  89. /package/dist/{queries → IndexerQueries}/poolFeeSnapshots.d.ts +0 -0
  90. /package/dist/{queries → IndexerQueries}/poolFeeSnapshots.js +0 -0
  91. /package/dist/{queries → IndexerQueries}/poolSnapshots.d.ts +0 -0
  92. /package/dist/{queries → IndexerQueries}/poolSnapshots.js +0 -0
@@ -0,0 +1,37 @@
1
+ import { Currency } from '../utils/BigInt.js';
2
+ export function poolFeeTransactionPostProcess(data) {
3
+ return data.poolFeeTransactions.nodes.map((tx) => ({
4
+ feeId: tx.id,
5
+ type: tx.type,
6
+ timestamp: tx.timestamp,
7
+ blockNumber: tx.blockNumber,
8
+ epochNumber: tx.epochNumber,
9
+ amount: new Currency(tx.amount, tx.poolFee.pool.currency.decimals),
10
+ }));
11
+ }
12
+ export const poolFeeTransactionQuery = `
13
+ query($filter: PoolFeeTransactionFilter) {
14
+ poolFeeTransactions(
15
+ orderBy: TIMESTAMP_ASC,
16
+ filter: $filter
17
+ ) {
18
+ nodes {
19
+ id
20
+ type
21
+ timestamp
22
+ blockNumber
23
+ epochNumber
24
+ amount
25
+ poolFee {
26
+ feeId
27
+ pool {
28
+ currency {
29
+ decimals
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ `;
37
+ //# sourceMappingURL=poolFeeTransactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolFeeTransactions.js","sourceRoot":"","sources":["../../src/IndexerQueries/poolFeeTransactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AA6C7C,MAAM,UAAU,6BAA6B,CAAC,IAAgC;IAC5E,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,KAAK,EAAE,EAAE,CAAC,EAAE;QACZ,IAAI,EAAE,EAAE,CAAC,IAAkC;QAC3C,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACnE,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBtC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolSnapshots.d.ts","sourceRoot":"","sources":["../../src/IndexerQueries/poolSnapshots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAE9G,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,QAAQ,CAAA;IACvB,YAAY,EAAE,QAAQ,CAAA;IACtB,iBAAiB,EAAE,QAAQ,CAAA;IAC3B,kBAAkB,EAAE,QAAQ,CAAA;IAC5B,gCAAgC,EAAE,QAAQ,CAAA;IAC1C,gCAAgC,EAAE,QAAQ,CAAA;IAC1C,6BAA6B,EAAE,QAAQ,CAAA;IACvC,yBAAyB,EAAE,QAAQ,CAAA;IACnC,gCAAgC,EAAE,QAAQ,CAAA;IAC1C,+BAA+B,EAAE,QAAQ,CAAA;IACzC,kCAAkC,EAAE,QAAQ,CAAA;IAC5C,uBAAuB,EAAE,QAAQ,CAAA;IACjC,yBAAyB,EAAE,QAAQ,CAAA;IACnC,yBAAyB,EAAE,QAAQ,CAAA;IACnC,wBAAwB,EAAE,QAAQ,CAAA;IAClC,yBAAyB,EAAE,QAAQ,CAAA;IACnC,0BAA0B,EAAE,QAAQ,CAAA;IACpC,6BAA6B,EAAE,QAAQ,CAAA;IACvC,gCAAgC,EAAE,QAAQ,CAAA;IAC1C,6BAA6B,EAAE,QAAQ,CAAA;IACvC,2BAA2B,EAAE,QAAQ,CAAA;IACrC,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE;QACb,KAAK,EAAE;YACL,MAAM,EAAE,MAAM,CAAA;YACd,EAAE,EAAE,MAAM,CAAA;YACV,SAAS,EAAE,MAAM,CAAA;YACjB,KAAK,EAAE,MAAM,CAAA;YACb,aAAa,EAAE,MAAM,CAAA;YACrB,YAAY,EAAE,MAAM,CAAA;YACpB,iBAAiB,EAAE,MAAM,CAAA;YACzB,kBAAkB,EAAE,MAAM,CAAA;YAC1B,gCAAgC,EAAE,MAAM,CAAA;YACxC,gCAAgC,EAAE,MAAM,CAAA;YACxC,6BAA6B,EAAE,MAAM,CAAA;YACrC,yBAAyB,EAAE,MAAM,CAAA;YACjC,gCAAgC,EAAE,MAAM,CAAA;YACxC,+BAA+B,EAAE,MAAM,CAAA;YACvC,kCAAkC,EAAE,MAAM,CAAA;YAC1C,uBAAuB,EAAE,MAAM,CAAA;YAC/B,yBAAyB,EAAE,MAAM,CAAA;YACjC,yBAAyB,EAAE,MAAM,CAAA;YACjC,WAAW,EAAE,MAAM,CAAA;YACnB,wBAAwB,EAAE,MAAM,CAAA;YAChC,yBAAyB,EAAE,MAAM,CAAA;YACjC,0BAA0B,EAAE,MAAM,CAAA;YAClC,6BAA6B,EAAE,MAAM,CAAA;YACrC,gCAAgC,EAAE,MAAM,CAAA;YACxC,6BAA6B,EAAE,MAAM,CAAA;YACrC,2BAA2B,EAAE,MAAM,CAAA;YACnC,IAAI,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAA;gBACV,QAAQ,EAAE;oBACR,QAAQ,EAAE,MAAM,CAAA;iBACjB,CAAA;aACF,CAAA;SACF,EAAE,CAAA;KACJ,CAAA;CACF,CAAA;AAED,eAAO,MAAM,kBAAkB,69BAuC7B,CAAA;AAEF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,YAAY,EAAE,CAuGnF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolSnapshots.js","sourceRoot":"","sources":["../../src/IndexerQueries/poolSnapshots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { Currency } from '../utils/BigInt.js';
2
+ export type TrancheCurrencyBalanceFilter = Partial<Record<keyof SubqueryTrancheBalances['trancheBalances']['nodes'][0], any>> | Partial<Record<keyof SubqueryCurrencyBalances['currencyBalances']['nodes'][0], any>>;
3
+ export type TrancheBalanceFilter = Partial<Record<keyof SubqueryTrancheBalances['trancheBalances']['nodes'][0], any>>;
4
+ export type CurrencyBalanceFilter = Partial<Record<keyof SubqueryCurrencyBalances['currencyBalances']['nodes'][0], any>>;
5
+ export declare function trancheCurrencyBalancePostProcessor(data: SubqueryTrancheBalances & SubqueryCurrencyBalances): {
6
+ accountId: string;
7
+ chainId: number | "centrifuge";
8
+ trancheId: string;
9
+ evmAddress: string | undefined;
10
+ balance: Currency;
11
+ pendingInvestCurrency: Currency;
12
+ claimableTrancheTokens: Currency;
13
+ sumClaimedTrancheTokens: Currency;
14
+ pendingRedeemTrancheTokens: Currency;
15
+ claimableCurrency: Currency;
16
+ sumClaimedCurrency: Currency;
17
+ }[];
18
+ export type TrancheCurrencyBalance = {
19
+ accountId: string;
20
+ chainId: number | 'centrifuge';
21
+ trancheId: string;
22
+ evmAddress?: string;
23
+ balance: Currency;
24
+ pendingInvestCurrency: Currency;
25
+ claimableTrancheTokens: Currency;
26
+ sumClaimedTrancheTokens: Currency;
27
+ pendingRedeemTrancheTokens: Currency;
28
+ claimableCurrency: Currency;
29
+ sumClaimedCurrency: Currency;
30
+ };
31
+ export type SubqueryTrancheBalances = {
32
+ trancheBalances: {
33
+ nodes: {
34
+ __typename?: 'TrancheBalances';
35
+ id: string;
36
+ timestamp: string;
37
+ accountId: string;
38
+ account: {
39
+ chainId: string;
40
+ evmAddress?: string;
41
+ };
42
+ pool: {
43
+ currency: {
44
+ decimals: number;
45
+ };
46
+ };
47
+ poolId: string;
48
+ trancheId: string;
49
+ pendingInvestCurrency: string;
50
+ claimableTrancheTokens: string;
51
+ sumClaimedTrancheTokens: string;
52
+ pendingRedeemTrancheTokens: string;
53
+ claimableCurrency: string;
54
+ sumClaimedCurrency: string;
55
+ }[];
56
+ };
57
+ };
58
+ export type SubqueryCurrencyBalances = {
59
+ currencyBalances: {
60
+ nodes: {
61
+ __typename?: 'CurrencyBalances';
62
+ id: string;
63
+ accountId: string;
64
+ currency: {
65
+ trancheId: string | null;
66
+ };
67
+ account: {
68
+ chainId: string;
69
+ evmAddress?: string;
70
+ };
71
+ amount: string;
72
+ }[];
73
+ };
74
+ };
75
+ export declare const trancheBalancesQuery = "\nquery($filter: TrancheBalanceFilter) {\n trancheBalances(filter: $filter) {\n nodes {\n accountId\n trancheId\n account {\n chainId\n evmAddress\n }\n pool {\n currency {\n decimals\n }\n }\n pendingInvestCurrency\n claimableTrancheTokens\n sumClaimedTrancheTokens\n pendingRedeemTrancheTokens\n claimableCurrency\n sumClaimedCurrency\n }\n }\n}";
76
+ export declare const currencyBalancesQuery = "\nquery($filter: CurrencyBalanceFilter) {\n currencyBalances(filter: $filter) {\n nodes {\n accountId\n account {\n chainId\n evmAddress\n }\n currency {\n trancheId\n }\n amount\n }\n }\n}";
77
+ export declare const trancheCurrencyBalanceQuery = "\nquery($filterTranches: TrancheBalanceFilter, $filterCurrencies: CurrencyBalanceFilter) {\n trancheBalances(filter: $filterTranches) {\n nodes {\n accountId\n trancheId\n account {\n chainId\n evmAddress\n }\n pool {\n currency {\n decimals\n }\n }\n pendingInvestCurrency\n claimableTrancheTokens\n sumClaimedTrancheTokens\n pendingRedeemTrancheTokens\n claimableCurrency\n sumClaimedCurrency\n }\n }\n currencyBalances(filter: $filterCurrencies) {\n nodes {\n accountId\n account {\n chainId\n evmAddress\n }\n currency {\n trancheId\n }\n amount\n }\n }\n}\n";
78
+ //# sourceMappingURL=trancheCurrencyBalance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trancheCurrencyBalance.d.ts","sourceRoot":"","sources":["../../src/IndexerQueries/trancheCurrencyBalance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { Currency } from '../utils/BigInt.js';
2
+ export function trancheCurrencyBalancePostProcessor(data) {
3
+ const currencyBalancesByAccountId = {};
4
+ data.currencyBalances.nodes.forEach((balance) => {
5
+ const trancheId = balance.currency.trancheId?.split('-')[1] ?? '';
6
+ currencyBalancesByAccountId[`${balance.accountId}-${trancheId}`] = balance;
7
+ });
8
+ return data.trancheBalances.nodes.map((balance) => {
9
+ const currencyDecimals = balance.pool.currency.decimals;
10
+ return {
11
+ accountId: balance.accountId,
12
+ chainId: balance.account?.chainId !== '0' ? Number(balance.account?.chainId) : 'centrifuge',
13
+ trancheId: balance.trancheId.split('-')[1] ?? '',
14
+ evmAddress: balance.account?.evmAddress,
15
+ balance: new Currency(currencyBalancesByAccountId[`${balance.accountId}-${balance.trancheId.split('-')[1]}`]?.amount ?? 0, currencyDecimals),
16
+ pendingInvestCurrency: new Currency(balance.pendingInvestCurrency, currencyDecimals),
17
+ claimableTrancheTokens: new Currency(balance.claimableTrancheTokens, currencyDecimals),
18
+ sumClaimedTrancheTokens: new Currency(balance.sumClaimedTrancheTokens, currencyDecimals),
19
+ pendingRedeemTrancheTokens: new Currency(balance.pendingRedeemTrancheTokens, currencyDecimals),
20
+ claimableCurrency: new Currency(balance.claimableCurrency, currencyDecimals),
21
+ sumClaimedCurrency: new Currency(balance.sumClaimedCurrency, currencyDecimals),
22
+ };
23
+ });
24
+ }
25
+ export const trancheBalancesQuery = `
26
+ query($filter: TrancheBalanceFilter) {
27
+ trancheBalances(filter: $filter) {
28
+ nodes {
29
+ accountId
30
+ trancheId
31
+ account {
32
+ chainId
33
+ evmAddress
34
+ }
35
+ pool {
36
+ currency {
37
+ decimals
38
+ }
39
+ }
40
+ pendingInvestCurrency
41
+ claimableTrancheTokens
42
+ sumClaimedTrancheTokens
43
+ pendingRedeemTrancheTokens
44
+ claimableCurrency
45
+ sumClaimedCurrency
46
+ }
47
+ }
48
+ }`;
49
+ export const currencyBalancesQuery = `
50
+ query($filter: CurrencyBalanceFilter) {
51
+ currencyBalances(filter: $filter) {
52
+ nodes {
53
+ accountId
54
+ account {
55
+ chainId
56
+ evmAddress
57
+ }
58
+ currency {
59
+ trancheId
60
+ }
61
+ amount
62
+ }
63
+ }
64
+ }`;
65
+ export const trancheCurrencyBalanceQuery = `
66
+ query($filterTranches: TrancheBalanceFilter, $filterCurrencies: CurrencyBalanceFilter) {
67
+ trancheBalances(filter: $filterTranches) {
68
+ nodes {
69
+ accountId
70
+ trancheId
71
+ account {
72
+ chainId
73
+ evmAddress
74
+ }
75
+ pool {
76
+ currency {
77
+ decimals
78
+ }
79
+ }
80
+ pendingInvestCurrency
81
+ claimableTrancheTokens
82
+ sumClaimedTrancheTokens
83
+ pendingRedeemTrancheTokens
84
+ claimableCurrency
85
+ sumClaimedCurrency
86
+ }
87
+ }
88
+ currencyBalances(filter: $filterCurrencies) {
89
+ nodes {
90
+ accountId
91
+ account {
92
+ chainId
93
+ evmAddress
94
+ }
95
+ currency {
96
+ trancheId
97
+ }
98
+ amount
99
+ }
100
+ }
101
+ }
102
+ `;
103
+ //# sourceMappingURL=trancheCurrencyBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trancheCurrencyBalance.js","sourceRoot":"","sources":["../../src/IndexerQueries/trancheCurrencyBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAS7C,MAAM,UAAU,mCAAmC,CAAC,IAAwD;IAC1G,MAAM,2BAA2B,GAA6E,EAAE,CAAA;IAChH,IAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,2BAA2B,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,GAAG,OAAO,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,OAAO,IAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;QACvD,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;YAC3F,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAChD,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU;YACvC,OAAO,EAAE,IAAI,QAAQ,CACnB,2BAA2B,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,EACnG,gBAAgB,CACjB;YACD,qBAAqB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;YACpF,sBAAsB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;YACtF,uBAAuB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;YACxF,0BAA0B,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YAC9F,iBAAiB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YAC5E,kBAAkB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SAC9C,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AA8DD,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBlC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;EAenC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC1C,CAAA"}
@@ -37,7 +37,7 @@ export type SubqueryTrancheSnapshot = {
37
37
  };
38
38
  export type TrancheSnapshot = {
39
39
  id: string;
40
- price: Price | null;
40
+ price: Price;
41
41
  timestamp: string;
42
42
  trancheId: string;
43
43
  poolId: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trancheSnapshots.d.ts","sourceRoot":"","sources":["../../src/IndexerQueries/trancheSnapshots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAGxE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAEvH,eAAO,MAAM,qBAAqB,utBAmCjC,CAAA;AACD,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE;QAChB,KAAK,EAAE;YACL,EAAE,EAAE,MAAM,CAAA;YACV,UAAU,EAAE,MAAM,CAAA;YAClB,WAAW,EAAE,MAAM,CAAA;YACnB,SAAS,EAAE,MAAM,CAAA;YACjB,SAAS,EAAE,MAAM,CAAA;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAA;gBACd,SAAS,EAAE,MAAM,CAAA;gBACjB,IAAI,EAAE;oBACJ,QAAQ,EAAE;wBACR,QAAQ,EAAE,MAAM,CAAA;wBAChB,MAAM,EAAE,MAAM,CAAA;qBACf,CAAA;iBACF,CAAA;aACF,CAAA;YACD,WAAW,EAAE,MAAM,CAAA;YACnB,kCAAkC,EAAE,MAAM,CAAA;YAC1C,kCAAkC,EAAE,MAAM,CAAA;YAC1C,gCAAgC,EAAE,MAAM,CAAA;YACxC,gCAAgC,EAAE,MAAM,CAAA;YACxC,oBAAoB,EAAE,MAAM,CAAA;YAC5B,qBAAqB,EAAE,MAAM,CAAA;YAC7B,qBAAqB,EAAE,MAAM,CAAA;YAC7B,mBAAmB,EAAE,MAAM,CAAA;YAC3B,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,oBAAoB,EAAE,MAAM,CAAA;SAC7B,EAAE,CAAA;KACJ,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,KAAK,CAAA;IAClB,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;IACD,uBAAuB,EAAE,QAAQ,CAAA;IACjC,uBAAuB,EAAE,QAAQ,CAAA;IACjC,qBAAqB,EAAE,QAAQ,CAAA;IAC/B,qBAAqB,EAAE,QAAQ,CAAA;IAC/B,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAA;IACxC,qBAAqB,EAAE,WAAW,GAAG,IAAI,CAAA;IACzC,qBAAqB,EAAE,WAAW,GAAG,IAAI,CAAA;IACzC,mBAAmB,EAAE,WAAW,CAAA;IAChC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAAA;CACvC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAAA;CAAE,CAyChH"}
@@ -54,7 +54,7 @@ export function trancheSnapshotsPostProcess(data) {
54
54
  symbol: poolCurrency.symbol,
55
55
  },
56
56
  },
57
- price: tranche.tokenPrice ? new Price(tranche.tokenPrice) : null,
57
+ price: new Price(tranche.tokenPrice ?? 0),
58
58
  tokenSupply: new Token(tranche.tokenSupply, poolCurrency.decimals),
59
59
  fulfilledInvestOrders: new Currency(tranche.sumFulfilledInvestOrdersByPeriod, poolCurrency.decimals),
60
60
  fulfilledRedeemOrders: new Currency(tranche.sumFulfilledRedeemOrdersByPeriod, poolCurrency.decimals),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trancheSnapshots.js","sourceRoot":"","sources":["../../src/IndexerQueries/trancheSnapshots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAKxE,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCpC,CAAA;AAmED,MAAM,UAAU,2BAA2B,CAAC,IAA6B;IACvE,MAAM,cAAc,GAA2B,EAAE,CAAA;IAEjD,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;QAClD,MAAM,eAAe,GAAoB;YACvC,EAAE,EAAE,OAAO,CAAC,SAAS;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC9B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;YACpC,IAAI,EAAE;gBACJ,QAAQ,EAAE;oBACR,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B;aACF;YACD,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;YACzC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC;YAClE,qBAAqB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC,QAAQ,CAAC;YACpG,qBAAqB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC,QAAQ,CAAC;YACpG,uBAAuB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,kCAAkC,EAAE,YAAY,CAAC,QAAQ,CAAC;YACxG,uBAAuB,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,kCAAkC,EAAE,YAAY,CAAC,QAAQ,CAAC;YACxG,oBAAoB,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC;YACxE,qBAAqB,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAC1E,qBAAqB,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAC1E,mBAAmB,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC;YACtE,QAAQ,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;YAChD,QAAQ,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;YAChD,QAAQ,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;YAChD,oBAAoB,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC;SACzE,CAAA;QAED,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,OAAO,cAAc,CAAA;AACvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { BalanceSheetData, BalanceSheetReport, CashflowData, CashflowReport, ProfitAndLossReport, ProfitAndLossData, ReportFilter } from './types.js';
1
+ import { BalanceSheetData, BalanceSheetReport, CashflowData, CashflowReport, ProfitAndLossReport, ProfitAndLossData, ReportFilter, InvestorTransactionsData, InvestorTransactionsReport, InvestorTransactionsReportFilter, AssetTransactionReport, AssetTransactionsData, AssetTransactionReportFilter, FeeTransactionsData, FeeTransactionReportFilter, FeeTransactionReport, TokenPriceReport, TokenPriceReportFilter, TokenPriceData, AssetListReport, AssetListReportFilter, AssetListData, InvestorListData, InvestorListReportFilter, InvestorListReport } from '../types/reports.js';
2
2
  export declare class Processor {
3
3
  /**
4
4
  * Process raw data into a balance sheet report
@@ -6,21 +6,27 @@ export declare class Processor {
6
6
  * @param filter Optional filtering and grouping options
7
7
  * @returns Processed balance sheet report at the end of each period
8
8
  */
9
- balanceSheet(data: BalanceSheetData, filter?: ReportFilter): BalanceSheetReport[];
9
+ balanceSheet(data: BalanceSheetData, filter?: Omit<ReportFilter, 'to' | 'from'>): BalanceSheetReport[];
10
10
  /**
11
11
  * Process raw data into an aggregated cashflow report, fees and endCashBalance are NOT aggregated by period
12
12
  * @param data Pool snapshot data
13
13
  * @param filter Optional filtering and grouping options
14
14
  * @returns Processed cashflow report at the end of each period
15
15
  */
16
- cashflow(data: CashflowData, filter?: ReportFilter): CashflowReport[];
16
+ cashflow(data: CashflowData, filter?: Omit<ReportFilter, 'to' | 'from'>): CashflowReport[];
17
17
  /**
18
18
  * Process raw data into an aggregated profit and loss report, fees and endCashBalance are NOT aggregated by period
19
19
  * @param data Pool snapshot data
20
20
  * @param filter Optional filtering and grouping options
21
21
  * @returns Processed profit and loss report at the end of each period
22
22
  */
23
- profitAndLoss(data: ProfitAndLossData, filter?: ReportFilter): ProfitAndLossReport[];
23
+ profitAndLoss(data: ProfitAndLossData, filter?: Omit<ReportFilter, 'to' | 'from'>): ProfitAndLossReport[];
24
+ investorTransactions(data: InvestorTransactionsData, filter?: Omit<InvestorTransactionsReportFilter, 'to' | 'from'>): InvestorTransactionsReport[];
25
+ assetTransactions(data: AssetTransactionsData, filter?: Omit<AssetTransactionReportFilter, 'to' | 'from'>): AssetTransactionReport[];
26
+ feeTransactions(data: FeeTransactionsData, filter?: Omit<FeeTransactionReportFilter, 'to' | 'from'>): FeeTransactionReport[];
27
+ tokenPrice(data: TokenPriceData, filter?: Omit<TokenPriceReportFilter, 'to' | 'from'>): TokenPriceReport[];
28
+ assetList(data: AssetListData, filter?: Omit<AssetListReportFilter, 'to' | 'from'>): AssetListReport[];
29
+ investorList(data: InvestorListData, filter?: Omit<InvestorListReportFilter, 'to' | 'from'>): InvestorListReport[];
24
30
  /**
25
31
  * Apply grouping to a report.
26
32
  * @param items Report items
@@ -28,7 +34,7 @@ export declare class Processor {
28
34
  * @param strategy Grouping strategy, sum aggregates data by period, latest returns the latest item in the period
29
35
  * @returns Grouped report
30
36
  *
31
- * Note: if strategy is 'sum', only Currency values that are not nested are aggregated, all
37
+ * Note: if strategy is 'sum', only Decimal values that are not nested are aggregated, all
32
38
  * other values are overwritten with the last value in the period
33
39
  */
34
40
  private applyGrouping;
@@ -1 +1 @@
1
- {"version":3,"file":"Processor.d.ts","sourceRoot":"","sources":["../../src/Reports/Processor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB,qBAAa,SAAS;IACpB;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,kBAAkB,EAAE;IA6BjF;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,EAAE;IAyCrE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,mBAAmB,EAAE;IAwCpF;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,UAAU;CAcnB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAA"}
1
+ {"version":3,"file":"Processor.d.ts","sourceRoot":"","sources":["../../src/Reports/Processor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,aAAa,EAGb,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAG5B,qBAAa,SAAS;IACpB;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,kBAAkB,EAAE;IA8BtG;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,cAAc,EAAE;IA0C1F;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,mBAAmB,EAAE;IAyCzG,oBAAoB,CAClB,IAAI,EAAE,wBAAwB,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,gCAAgC,EAAE,IAAI,GAAG,MAAM,CAAC,GAC7D,0BAA0B,EAAE;IAuD/B,iBAAiB,CACf,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,GAAG,MAAM,CAAC,GACzD,sBAAsB,EAAE;IAoC3B,eAAe,CACb,IAAI,EAAE,mBAAmB,EACzB,MAAM,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,GAAG,MAAM,CAAC,GACvD,oBAAoB,EAAE;IA8BzB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,gBAAgB,EAAE;IAgB1G,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,eAAe,EAAE;IAgEtG,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,kBAAkB,EAAE;IAoClH;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,UAAU;CAcnB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Currency } from '../utils/BigInt.js';
1
+ import { Currency, Price, Rate, Token } from '../utils/BigInt.js';
2
2
  import { groupByPeriod } from '../utils/date.js';
3
3
  export class Processor {
4
4
  /**
@@ -8,6 +8,8 @@ export class Processor {
8
8
  * @returns Processed balance sheet report at the end of each period
9
9
  */
10
10
  balanceSheet(data, filter) {
11
+ if (!data.poolSnapshots?.length)
12
+ return [];
11
13
  const items = data?.poolSnapshots?.map((snapshot) => {
12
14
  const tranches = data.trancheSnapshots[this.getDateKey(snapshot.timestamp)] ?? [];
13
15
  if (tranches.length === 0)
@@ -40,6 +42,8 @@ export class Processor {
40
42
  * @returns Processed cashflow report at the end of each period
41
43
  */
42
44
  cashflow(data, filter) {
45
+ if (!data.poolSnapshots?.length)
46
+ return [];
43
47
  const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
44
48
  const items = data.poolSnapshots.map((day) => {
45
49
  const poolFees = data.poolFeeSnapshots[this.getDateKey(day.timestamp)]?.map((fee) => ({
@@ -85,6 +89,8 @@ export class Processor {
85
89
  * @returns Processed profit and loss report at the end of each period
86
90
  */
87
91
  profitAndLoss(data, filter) {
92
+ if (!data.poolSnapshots?.length)
93
+ return [];
88
94
  const items = data.poolSnapshots.map((day) => {
89
95
  const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
90
96
  const profitAndLossFromAsset = subtype === 'publicCredit'
@@ -121,6 +127,220 @@ export class Processor {
121
127
  });
122
128
  return this.applyGrouping(items, filter?.groupBy, 'sum');
123
129
  }
130
+ investorTransactions(data, filter) {
131
+ if (!data.investorTransactions?.length)
132
+ return [];
133
+ const validTypes = new Set([
134
+ 'INVEST_ORDER_UPDATE',
135
+ 'REDEEM_ORDER_UPDATE',
136
+ 'INVEST_ORDER_CANCEL',
137
+ 'REDEEM_ORDER_CANCEL',
138
+ 'INVEST_EXECUTION',
139
+ 'REDEEM_EXECUTION',
140
+ 'INVEST_COLLECT',
141
+ 'REDEEM_COLLECT',
142
+ 'INVEST_LP_COLLECT',
143
+ 'REDEEM_LP_COLLECT',
144
+ 'TRANSFER_IN',
145
+ 'TRANSFER_OUT',
146
+ ]);
147
+ const filterAddress = filter?.address?.toLowerCase();
148
+ const filterNetwork = filter?.network === 'all' ? null : filter?.network;
149
+ return data.investorTransactions.reduce((acc, day) => {
150
+ const typeMatches = (filter?.transactionType === 'orders' && day.type.includes('ORDER')) ||
151
+ (filter?.transactionType === 'executions' && day.type.includes('EXECUTION')) ||
152
+ (filter?.transactionType === 'transfers' && (day.type.includes('COLLECT') || day.type.includes('TRANSFER'))) ||
153
+ ((!filter?.transactionType || filter?.transactionType === 'all') && validTypes.has(day.type));
154
+ const filterMatches = (!filterNetwork || filterNetwork === day.chainId) &&
155
+ (!filter?.tokenId || filter.tokenId === day.trancheId) &&
156
+ (!filterAddress ||
157
+ day.accountId.toLowerCase() === filterAddress ||
158
+ day.evmAddress?.toLowerCase() === filterAddress);
159
+ if (typeMatches && filterMatches) {
160
+ acc.push({
161
+ type: 'investorTransactions',
162
+ timestamp: day.timestamp.toISOString(),
163
+ chainId: day.chainId,
164
+ account: day.evmAddress ?? day.accountId,
165
+ epoch: day.epochNumber?.toString() ?? '',
166
+ transactionType: day.type,
167
+ currencyAmount: day.currencyAmount,
168
+ trancheTokenAmount: day.tokenAmount,
169
+ trancheTokenId: day.trancheId,
170
+ price: day.tokenPrice ?? '',
171
+ transactionHash: day.hash,
172
+ });
173
+ }
174
+ return acc;
175
+ }, []);
176
+ }
177
+ assetTransactions(data, filter) {
178
+ if (!data.assetTransactions?.length)
179
+ return [];
180
+ const typeMap = {
181
+ created: 'CREATED',
182
+ financed: 'BORROWED',
183
+ repaid: 'REPAID',
184
+ priced: 'PRICED',
185
+ closed: 'CLOSED',
186
+ cashTransfer: 'CASH_TRANSFER',
187
+ };
188
+ return data.assetTransactions.reduce((acc, tx) => {
189
+ const typeMatches = !filter?.transactionType || filter.transactionType === 'all' || tx.type === typeMap[filter.transactionType];
190
+ const assetMatches = !filter?.assetId || filter.assetId === tx.asset.id.split('-')[1];
191
+ if (typeMatches && assetMatches) {
192
+ acc.push({
193
+ type: 'assetTransactions',
194
+ timestamp: tx.timestamp.toISOString(),
195
+ assetId: tx.asset.id,
196
+ epoch: tx.epochId,
197
+ transactionType: tx.type,
198
+ amount: tx.amount,
199
+ transactionHash: tx.hash,
200
+ });
201
+ }
202
+ return acc;
203
+ }, []);
204
+ }
205
+ feeTransactions(data, filter) {
206
+ if (!data.poolFeeTransactions?.length)
207
+ return [];
208
+ const feeTransactionTypes = {
209
+ PROPOSED: 'proposed',
210
+ ADDED: 'added',
211
+ REMOVED: 'removed',
212
+ CHARGED: 'directChargeMade',
213
+ UNCHARGED: 'directChargeCancelled',
214
+ ACCRUED: 'accrued',
215
+ PAID: 'paid',
216
+ };
217
+ return data.poolFeeTransactions.reduce((acc, tx) => {
218
+ if (!filter?.transactionType ||
219
+ filter.transactionType === 'all' ||
220
+ filter.transactionType === feeTransactionTypes[tx.type]) {
221
+ acc.push({
222
+ type: 'feeTransactions',
223
+ timestamp: tx.timestamp,
224
+ feeId: tx.feeId,
225
+ amount: tx.amount,
226
+ });
227
+ }
228
+ return acc;
229
+ }, []);
230
+ }
231
+ tokenPrice(data, filter) {
232
+ if (Object.values(data.trancheSnapshots).length === 0)
233
+ return [];
234
+ const items = Object.entries(data.trancheSnapshots).map(([timestamp, snapshots]) => ({
235
+ type: 'tokenPrice',
236
+ timestamp: timestamp,
237
+ tranches: snapshots.map((snapshot) => ({
238
+ timestamp: snapshot.timestamp,
239
+ id: snapshot.trancheId,
240
+ price: snapshot.price,
241
+ supply: snapshot.tokenSupply,
242
+ })),
243
+ }));
244
+ return this.applyGrouping(items, filter?.groupBy ?? 'day', 'latest');
245
+ }
246
+ assetList(data, filter) {
247
+ if (!data.assetSnapshots?.length)
248
+ return [];
249
+ return data.assetSnapshots
250
+ .filter((snapshot) => {
251
+ if (snapshot.valuationMethod?.toLowerCase() === 'cash')
252
+ return false;
253
+ const isMaturityDatePassed = snapshot?.actualMaturityDate
254
+ ? new Date() > new Date(snapshot.actualMaturityDate)
255
+ : false;
256
+ const isDebtZero = snapshot?.outstandingDebt?.isZero();
257
+ if (filter?.status === 'ongoing') {
258
+ return snapshot.status === 'ACTIVE' && !isMaturityDatePassed && !isDebtZero;
259
+ }
260
+ else if (filter?.status === 'repaid') {
261
+ return isMaturityDatePassed && isDebtZero;
262
+ }
263
+ else if (filter?.status === 'overdue') {
264
+ return isMaturityDatePassed && !isDebtZero;
265
+ }
266
+ else
267
+ return true;
268
+ })
269
+ .sort((a, b) => {
270
+ // Sort by actualMaturityDate in descending order
271
+ const dateA = new Date(a.actualMaturityDate || 0).getTime();
272
+ const dateB = new Date(b.actualMaturityDate || 0).getTime();
273
+ return dateB - dateA;
274
+ })
275
+ .map((snapshot) => {
276
+ const subtype = data.metadata?.pool.asset.class === 'Public credit' ? 'publicCredit' : 'privateCredit';
277
+ const items = subtype === 'publicCredit'
278
+ ? {
279
+ subtype,
280
+ faceValue: snapshot.faceValue,
281
+ outstandingQuantity: snapshot.outstandingQuantity,
282
+ currentPrice: snapshot.currentPrice,
283
+ maturityDate: snapshot.actualMaturityDate,
284
+ unrealizedProfit: snapshot.unrealizedProfitAtMarketPrice,
285
+ realizedProfit: snapshot.sumRealizedProfitFifo,
286
+ }
287
+ : {
288
+ subtype,
289
+ outstandingPrincipal: snapshot.outstandingPrincipal,
290
+ outstandingInterest: snapshot.outstandingInterest,
291
+ repaidPrincipal: snapshot.totalRepaidPrincipal,
292
+ repaidInterest: snapshot.totalRepaidInterest,
293
+ repaidUnscheduled: snapshot.totalRepaidUnscheduled,
294
+ originationDate: snapshot.actualOriginationDate,
295
+ maturityDate: snapshot.actualMaturityDate,
296
+ valuationMethod: snapshot.valuationMethod,
297
+ advanceRate: snapshot.advanceRate,
298
+ collateralValue: snapshot.collateralValue,
299
+ probabilityOfDefault: snapshot.probabilityOfDefault,
300
+ lossGivenDefault: snapshot.lossGivenDefault,
301
+ discountRate: snapshot.discountRate,
302
+ };
303
+ return {
304
+ type: 'assetList',
305
+ transactionType: snapshot.status,
306
+ timestamp: snapshot.timestamp,
307
+ assetId: snapshot.assetId,
308
+ presentValue: snapshot.presentValue,
309
+ ...items,
310
+ };
311
+ });
312
+ }
313
+ investorList(data, filter) {
314
+ if (!data.trancheCurrencyBalance?.length)
315
+ return [];
316
+ const filterNetwork = filter?.network === 'all' ? null : filter?.network;
317
+ const filterAddress = filter?.address?.toLowerCase();
318
+ return data.trancheCurrencyBalance
319
+ .filter((investor) => {
320
+ const networkMatches = !filterNetwork || filterNetwork === investor.chainId;
321
+ const addressMatches = !filterAddress ||
322
+ investor.accountId.toLowerCase() === filterAddress ||
323
+ investor.evmAddress?.toLowerCase() === filterAddress;
324
+ const trancheMatches = !filter?.trancheId || filter.trancheId === investor.trancheId;
325
+ const hasPosition = !filter?.address && (!investor.balance.isZero() || !investor.claimableTrancheTokens.isZero());
326
+ return networkMatches && addressMatches && trancheMatches && (hasPosition || filter?.address);
327
+ })
328
+ .map((balance) => {
329
+ const totalPositions = data.trancheCurrencyBalance.reduce((sum, investor) => {
330
+ return sum.add(investor.balance).add(investor.claimableTrancheTokens);
331
+ }, new Currency(0));
332
+ return {
333
+ type: 'investorList',
334
+ chainId: balance.chainId,
335
+ accountId: balance.accountId,
336
+ evmAddress: balance.evmAddress,
337
+ position: balance.balance.add(balance.claimableTrancheTokens),
338
+ poolPercentage: new Rate(balance.balance.add(balance.claimableTrancheTokens.div(totalPositions)).toBigInt()),
339
+ pendingInvest: balance.pendingInvestCurrency,
340
+ pendingRedeem: balance.pendingRedeemTrancheTokens,
341
+ };
342
+ });
343
+ }
124
344
  /**
125
345
  * Apply grouping to a report.
126
346
  * @param items Report items
@@ -128,7 +348,7 @@ export class Processor {
128
348
  * @param strategy Grouping strategy, sum aggregates data by period, latest returns the latest item in the period
129
349
  * @returns Grouped report
130
350
  *
131
- * Note: if strategy is 'sum', only Currency values that are not nested are aggregated, all
351
+ * Note: if strategy is 'sum', only Decimal values that are not nested are aggregated, all
132
352
  * other values are overwritten with the last value in the period
133
353
  */
134
354
  applyGrouping(items, groupBy = 'day', strategy = 'latest') {
@@ -138,12 +358,18 @@ export class Processor {
138
358
  const groups = groupByPeriod(items, groupBy, 'all');
139
359
  return groups.map((group) => {
140
360
  const base = { ...group[group.length - 1] };
141
- // Aggregate Currency values
361
+ // Aggregate Decimal values
142
362
  for (const key in base) {
143
363
  const value = base[key];
144
364
  if (value instanceof Currency) {
145
365
  base[key] = group.reduce((sum, item) => sum.add(item[key]), new Currency(0n, value.decimals));
146
366
  }
367
+ if (value instanceof Token) {
368
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Token(0n, value.decimals));
369
+ }
370
+ if (value instanceof Price) {
371
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Price(0n));
372
+ }
147
373
  }
148
374
  return base;
149
375
  });