@centrifuge/sdk 0.0.0-alpha.50 → 0.0.0-alpha.51

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 (45) hide show
  1. package/dist/Centrifuge.d.ts +2 -1
  2. package/dist/Centrifuge.d.ts.map +1 -1
  3. package/dist/Centrifuge.js +3 -3
  4. package/dist/Centrifuge.js.map +1 -1
  5. package/dist/entities/MerkleProofManager.d.ts +30 -0
  6. package/dist/entities/MerkleProofManager.d.ts.map +1 -0
  7. package/dist/entities/MerkleProofManager.js +140 -0
  8. package/dist/entities/MerkleProofManager.js.map +1 -0
  9. package/dist/entities/MerkleProofManager.test.d.ts +2 -0
  10. package/dist/entities/MerkleProofManager.test.d.ts.map +1 -0
  11. package/dist/entities/MerkleProofManager.test.js +27 -0
  12. package/dist/entities/MerkleProofManager.test.js.map +1 -0
  13. package/dist/entities/Pool.d.ts +2 -2
  14. package/dist/entities/Pool.d.ts.map +1 -1
  15. package/dist/entities/Pool.js +2 -2
  16. package/dist/entities/Pool.js.map +1 -1
  17. package/dist/entities/Reports/PoolReports.d.ts +8 -0
  18. package/dist/entities/Reports/PoolReports.d.ts.map +1 -0
  19. package/dist/entities/Reports/PoolReports.js +14 -0
  20. package/dist/entities/Reports/PoolReports.js.map +1 -0
  21. package/dist/entities/Reports/PoolSharePricesReport.d.ts +25 -0
  22. package/dist/entities/Reports/PoolSharePricesReport.d.ts.map +1 -0
  23. package/dist/entities/Reports/PoolSharePricesReport.js +64 -0
  24. package/dist/entities/Reports/PoolSharePricesReport.js.map +1 -0
  25. package/dist/entities/Reports/PoolSharePricesReport.test.d.ts +2 -0
  26. package/dist/entities/Reports/PoolSharePricesReport.test.d.ts.map +1 -0
  27. package/dist/entities/Reports/PoolSharePricesReport.test.js +35 -0
  28. package/dist/entities/Reports/PoolSharePricesReport.test.js.map +1 -0
  29. package/dist/entities/Reports/types.d.ts +9 -0
  30. package/dist/entities/Reports/types.d.ts.map +1 -0
  31. package/dist/entities/Reports/types.js +2 -0
  32. package/dist/entities/Reports/types.js.map +1 -0
  33. package/dist/entities/Reports/utils.d.ts +20 -0
  34. package/dist/entities/Reports/utils.d.ts.map +1 -0
  35. package/dist/entities/Reports/utils.js +47 -0
  36. package/dist/entities/Reports/utils.js.map +1 -0
  37. package/dist/index.d.ts +1 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +1 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/types/indexer.d.ts +4189 -0
  42. package/dist/types/indexer.d.ts.map +1 -0
  43. package/dist/types/indexer.js +56 -0
  44. package/dist/types/indexer.js.map +1 -0
  45. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolReports.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/PoolReports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAyB,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE3F,qBAAa,WAAY,SAAQ,MAAM;IAI5B,IAAI,EAAE,IAAI;IAKnB,WAAW,CAAC,MAAM,CAAC,EAAE,uBAAuB;CAG7C"}
@@ -0,0 +1,14 @@
1
+ import { Entity } from '../Entity.js';
2
+ import { PoolSharePricesReport } from './PoolSharePricesReport.js';
3
+ export class PoolReports extends Entity {
4
+ pool;
5
+ /** @internal */
6
+ constructor(centrifuge, pool) {
7
+ super(centrifuge, ['poolReports', pool.id.toString()]);
8
+ this.pool = pool;
9
+ }
10
+ sharePrices(filter) {
11
+ return new PoolSharePricesReport(this._root, this).report(filter);
12
+ }
13
+ }
14
+ //# sourceMappingURL=PoolReports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolReports.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolReports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,qBAAqB,EAA2B,MAAM,4BAA4B,CAAA;AAE3F,MAAM,OAAO,WAAY,SAAQ,MAAM;IAI5B;IAHT,gBAAgB;IAChB,YACE,UAAsB,EACf,IAAU;QAEjB,KAAK,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAF/C,SAAI,GAAJ,IAAI,CAAM;IAGnB,CAAC;IAED,WAAW,CAAC,MAAgC;QAC1C,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import { Centrifuge } from '../../Centrifuge.js';
2
+ import { HexString } from '../../types/index.js';
3
+ import { Balance, Price } from '../../utils/BigInt.js';
4
+ import { ShareClassId } from '../../utils/types.js';
5
+ import { Entity } from '../Entity.js';
6
+ import { Pool } from '../Pool.js';
7
+ import { PoolReports } from './PoolReports.js';
8
+ import { DataReportFilter } from './types.js';
9
+ export type SharePricesReport = {
10
+ timestamp: string;
11
+ shareClasses: Record<HexString, {
12
+ price: Price;
13
+ totalIssuance: Balance;
14
+ }>;
15
+ }[];
16
+ export type SharePricesReportFilter = DataReportFilter & {
17
+ shareClassId?: ShareClassId;
18
+ };
19
+ export declare class PoolSharePricesReport extends Entity {
20
+ poolReports: PoolReports;
21
+ pool: Pool;
22
+ constructor(centrifuge: Centrifuge, poolReports: PoolReports);
23
+ report(filter?: SharePricesReportFilter): import("../../index.js").Query<SharePricesReport>;
24
+ }
25
+ //# sourceMappingURL=PoolSharePricesReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolSharePricesReport.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAClB,SAAS,EACT;QACE,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,OAAO,CAAA;KACvB,CACF,CAAA;CACF,EAAE,CAAA;AAEH,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACvD,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAaD,qBAAa,qBAAsB,SAAQ,MAAM;IAItC,WAAW,EAAE,WAAW;IAH1B,IAAI,EAAE,IAAI,CAAA;gBAEf,UAAU,EAAE,UAAU,EACf,WAAW,EAAE,WAAW;IAMjC,MAAM,CAAC,MAAM,GAAE,uBAA4B;CAqE5C"}
@@ -0,0 +1,64 @@
1
+ import { combineLatest, map, switchMap } from 'rxjs';
2
+ import { Balance, Price } from '../../utils/BigInt.js';
3
+ import { Entity } from '../Entity.js';
4
+ import { applyGrouping } from './utils.js';
5
+ export class PoolSharePricesReport extends Entity {
6
+ poolReports;
7
+ pool;
8
+ constructor(centrifuge, poolReports) {
9
+ super(centrifuge, ['poolSharePricesReport', poolReports.pool.id.toString()]);
10
+ this.poolReports = poolReports;
11
+ this.pool = poolReports.pool;
12
+ }
13
+ report(filter = {}) {
14
+ return this._query(null, () => combineLatest([this.pool._shareClassIds(), this.pool.currency()]).pipe(switchMap(([shareClassIds, poolCurrency]) => this._root
15
+ ._queryIndexer(`query ($filter: TokenInstanceSnapshotFilter) {
16
+ tokenInstanceSnapshots(
17
+ where: $filter
18
+ orderBy: "timestamp"
19
+ orderDirection: "asc"
20
+ limit: 1000
21
+ ) {
22
+ items {
23
+ tokenId
24
+ timestamp
25
+ totalIssuance
26
+ tokenPrice
27
+ }
28
+ }
29
+ }`, {
30
+ filter: {
31
+ tokenId_in: shareClassIds
32
+ .filter((id) => !filter.shareClassId || filter.shareClassId.equals(id))
33
+ .map((id) => id.toString()),
34
+ trigger_ends_with: 'NewPeriod',
35
+ triggerChainId: String(this.pool.chainId),
36
+ // TODO from/to
37
+ },
38
+ }, undefined, 60 * 60 * 1000)
39
+ .pipe(map((data) => this._process(data, filter, poolCurrency))))));
40
+ }
41
+ /** @internal */
42
+ _process(data, filter, poolCurrency) {
43
+ const sharePricesByDate = {};
44
+ data.tokenInstanceSnapshots.items.forEach((item) => {
45
+ const date = new Date(Number(item.timestamp)).toISOString().slice(0, 10);
46
+ if (!sharePricesByDate[date]) {
47
+ sharePricesByDate[date] = {};
48
+ }
49
+ sharePricesByDate[date][item.tokenId] = {
50
+ price: new Price(item.tokenPrice),
51
+ totalIssuance: new Balance(item.totalIssuance, poolCurrency.decimals),
52
+ };
53
+ });
54
+ const items = Object.entries(sharePricesByDate).map(([timestamp, shareClasses]) => {
55
+ const date = new Date(timestamp);
56
+ return {
57
+ timestamp: date.toISOString(),
58
+ shareClasses,
59
+ };
60
+ });
61
+ return applyGrouping(items, filter.groupBy ?? 'day', 'latest');
62
+ }
63
+ }
64
+ //# sourceMappingURL=PoolSharePricesReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolSharePricesReport.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PoolSharePricesReport.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolSharePricesReport.test.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { expect } from 'chai';
2
+ import { context } from '../../tests/setup.js';
3
+ import { Balance, Price } from '../../utils/BigInt.js';
4
+ import { PoolId, ShareClassId } from '../../utils/types.js';
5
+ import { Pool } from '../Pool.js';
6
+ import { PoolReports } from './PoolReports.js';
7
+ import { PoolSharePricesReport } from './PoolSharePricesReport.js';
8
+ const chainId = 11155111;
9
+ const centId = 1;
10
+ const poolId = PoolId.from(centId, 1);
11
+ const scId = ShareClassId.from(poolId, 1);
12
+ describe('PoolSharePricesReport', () => {
13
+ let poolSharePricesReport;
14
+ before(() => {
15
+ const { centrifuge } = context;
16
+ const pool = new Pool(centrifuge, poolId, chainId);
17
+ const poolReports = new PoolReports(centrifuge, pool);
18
+ poolSharePricesReport = new PoolSharePricesReport(centrifuge, poolReports);
19
+ });
20
+ it('should fetch the report', async () => {
21
+ const report = await poolSharePricesReport.report();
22
+ expect(report).to.be.an('array');
23
+ expect(report.length).to.be.greaterThan(0);
24
+ expect(report[0]).to.have.property('timestamp');
25
+ expect(report[0].shareClasses[scId.raw].price).to.be.instanceOf(Price);
26
+ expect(report[0].shareClasses[scId.raw].totalIssuance).to.be.instanceOf(Balance);
27
+ });
28
+ it('should apply grouping', async () => {
29
+ const report = await poolSharePricesReport.report({ groupBy: 'month' });
30
+ const firstDate = new Date(report[0].timestamp);
31
+ const secondDate = new Date(report[1].timestamp);
32
+ expect(firstDate.getMonth()).to.not.equal(secondDate.getMonth());
33
+ });
34
+ });
35
+ //# sourceMappingURL=PoolSharePricesReport.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolSharePricesReport.test.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,MAAM,OAAO,GAAG,QAAQ,CAAA;AACxB,MAAM,MAAM,GAAG,CAAC,CAAA;AAChB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACrC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAEzC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAA;IAEhD,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QACrD,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QACvE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { GroupBy } from '../../utils/date.js';
2
+ export type ReportFilter = {
3
+ from?: number;
4
+ to?: number;
5
+ };
6
+ export type DataReportFilter = ReportFilter & {
7
+ groupBy?: GroupBy;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/entities/Reports/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { Balance, Price } from '../../utils/BigInt.js';
2
+ import { DataReportFilter } from './types.js';
3
+ /**
4
+ * Apply grouping to a report.
5
+ * @param items Report items
6
+ * @param filter Optional filtering and grouping options
7
+ * @param strategy Grouping strategy, sum aggregates data by period, latest returns the latest item in the period
8
+ * @returns Grouped report
9
+ *
10
+ * Note: if strategy is 'sum', only Decimal values that are not nested are aggregated, all
11
+ * other values are overwritten with the last value in the period
12
+ */
13
+ export declare function applyGrouping<T extends {
14
+ timestamp: string;
15
+ [key: string]: Balance | Price | string | number | undefined | any[] | {
16
+ [key: string]: any;
17
+ };
18
+ }>(items: T[], groupBy?: DataReportFilter['groupBy'], strategy?: 'latest' | 'sum'): T[];
19
+ export declare function getDateKey(timestamp: string, groupBy?: DataReportFilter['groupBy']): string;
20
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entities/Reports/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,CAAC,SAAS;IACR,SAAS,EAAE,MAAM,CAAA;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAC9F,EACD,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,GAAE,gBAAgB,CAAC,SAAS,CAAS,EAAE,QAAQ,GAAE,QAAQ,GAAG,KAAgB,GAAG,CAAC,EAAE,CA4BtG;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,MAAM,CAa3F"}
@@ -0,0 +1,47 @@
1
+ import { Balance, Price } from '../../utils/BigInt.js';
2
+ import { groupByPeriod } from '../../utils/date.js';
3
+ /**
4
+ * Apply grouping to a report.
5
+ * @param items Report items
6
+ * @param filter Optional filtering and grouping options
7
+ * @param strategy Grouping strategy, sum aggregates data by period, latest returns the latest item in the period
8
+ * @returns Grouped report
9
+ *
10
+ * Note: if strategy is 'sum', only Decimal values that are not nested are aggregated, all
11
+ * other values are overwritten with the last value in the period
12
+ */
13
+ export function applyGrouping(items, groupBy = 'day', strategy = 'latest') {
14
+ if (strategy === 'latest') {
15
+ return groupByPeriod(items, groupBy, 'latest');
16
+ }
17
+ const groups = groupByPeriod(items, groupBy, 'all');
18
+ return groups.map((group) => {
19
+ const base = { ...group[group.length - 1] };
20
+ // Aggregate Decimal values
21
+ for (const key in base) {
22
+ const value = base[key];
23
+ if (value instanceof Balance) {
24
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Balance(0n, value.decimals));
25
+ }
26
+ if (value instanceof Price) {
27
+ base[key] = group.reduce((sum, item) => sum.add(item[key]), new Price(0n));
28
+ }
29
+ }
30
+ return base;
31
+ });
32
+ }
33
+ export function getDateKey(timestamp, groupBy) {
34
+ switch (groupBy) {
35
+ case 'month':
36
+ return timestamp.slice(0, 7); // YYYY-MM
37
+ case 'quarter':
38
+ const date = new Date(timestamp);
39
+ const quarter = Math.floor(date.getMonth() / 3) + 1;
40
+ return `${date.getFullYear()}-Q${quarter}`; // YYYY-Q#
41
+ case 'year':
42
+ return timestamp.slice(0, 4); // YYYY
43
+ default:
44
+ return timestamp.slice(0, 10); // YYYY-MM-DD
45
+ }
46
+ }
47
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/entities/Reports/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAK3B,KAAU,EAAE,UAAuC,KAAK,EAAE,WAA6B,QAAQ;IAC/F,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAI,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAO,CAAA;QAEhD,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAc,CAAC,CAAA;YAClC,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAc,CAAC,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAc,CAAY,CAAC,EACvD,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAClB,CAAA;YACjB,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAc,CAAC,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAc,CAAU,CAAC,EACrD,IAAI,KAAK,CAAC,EAAE,CAAC,CACA,CAAA;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAqC;IACjF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,UAAU;QACzC,KAAK,SAAS;YACZ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YACnD,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAA,CAAC,UAAU;QACvD,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,OAAO;QACtC;YACE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,aAAa;IAC/C,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,14 +2,13 @@ import { Centrifuge } from './Centrifuge.js';
2
2
  export * from './entities/Investor.js';
3
3
  export * from './entities/Pool.js';
4
4
  export * from './entities/PoolNetwork.js';
5
- export * from './entities/Reports/index.js';
5
+ export * from './entities/Reports/PoolReports.js';
6
6
  export * from './entities/ShareClass.js';
7
7
  export * from './entities/Vault.js';
8
8
  export type { Client, Config, CurrencyDetails, HexString } from './types/index.js';
9
9
  export type { IssuerDetail, PoolMetadataInput, PoolReport, ShareClassInput } from './types/poolInput.js';
10
10
  export * from './types/poolMetadata.js';
11
11
  export type { Query } from './types/query.js';
12
- export type { AssetListReport, AssetListReportBase, AssetListReportFilter, AssetListReportPrivateCredit, AssetListReportPublicCredit, AssetTransactionReport, AssetTransactionReportFilter, BalanceSheetReport, CashflowReport, CashflowReportBase, CashflowReportPrivateCredit, CashflowReportPublicCredit, FeeTransactionReport, FeeTransactionReportFilter, InvestorListReport, InvestorListReportFilter, InvestorTransactionsReport, InvestorTransactionsReportFilter, ProfitAndLossReport, ProfitAndLossReportBase, ProfitAndLossReportPrivateCredit, ProfitAndLossReportPublicCredit, ReportFilter, TokenPriceReport, TokenPriceReportFilter, } from './types/reports.js';
13
12
  export type { EIP1193ProviderLike, OperationConfirmedStatus, OperationPendingStatus, OperationSignedMessageStatus, OperationSigningMessageStatus, OperationSigningStatus, OperationStatus, OperationStatusType, OperationSwitchChainStatus, Signer, Transaction, } from './types/transaction.js';
14
13
  export { Balance, Perquintill, Price, Rate } from './utils/BigInt.js';
15
14
  export type { GroupBy } from './utils/date.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAClF,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxG,cAAc,yBAAyB,CAAA;AACvC,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,mBAAmB,EACnB,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,EAC/B,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,MAAM,EACN,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACrE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAClF,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxG,cAAc,yBAAyB,CAAA;AACvC,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,MAAM,EACN,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACrE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,eAAe,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { Centrifuge } from './Centrifuge.js';
2
2
  export * from './entities/Investor.js';
3
3
  export * from './entities/Pool.js';
4
4
  export * from './entities/PoolNetwork.js';
5
- export * from './entities/Reports/index.js';
5
+ export * from './entities/Reports/PoolReports.js';
6
6
  export * from './entities/ShareClass.js';
7
7
  export * from './entities/Vault.js';
8
8
  export * from './types/poolMetadata.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,yBAAyB,CAAA;AA0CvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAErE,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,yBAAyB,CAAA;AAevC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAErE,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,eAAe,UAAU,CAAA"}