@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.
- package/dist/Centrifuge.d.ts +2 -1
- package/dist/Centrifuge.d.ts.map +1 -1
- package/dist/Centrifuge.js +3 -3
- package/dist/Centrifuge.js.map +1 -1
- package/dist/entities/MerkleProofManager.d.ts +30 -0
- package/dist/entities/MerkleProofManager.d.ts.map +1 -0
- package/dist/entities/MerkleProofManager.js +140 -0
- package/dist/entities/MerkleProofManager.js.map +1 -0
- package/dist/entities/MerkleProofManager.test.d.ts +2 -0
- package/dist/entities/MerkleProofManager.test.d.ts.map +1 -0
- package/dist/entities/MerkleProofManager.test.js +27 -0
- package/dist/entities/MerkleProofManager.test.js.map +1 -0
- package/dist/entities/Pool.d.ts +2 -2
- package/dist/entities/Pool.d.ts.map +1 -1
- package/dist/entities/Pool.js +2 -2
- package/dist/entities/Pool.js.map +1 -1
- package/dist/entities/Reports/PoolReports.d.ts +8 -0
- package/dist/entities/Reports/PoolReports.d.ts.map +1 -0
- package/dist/entities/Reports/PoolReports.js +14 -0
- package/dist/entities/Reports/PoolReports.js.map +1 -0
- package/dist/entities/Reports/PoolSharePricesReport.d.ts +25 -0
- package/dist/entities/Reports/PoolSharePricesReport.d.ts.map +1 -0
- package/dist/entities/Reports/PoolSharePricesReport.js +64 -0
- package/dist/entities/Reports/PoolSharePricesReport.js.map +1 -0
- package/dist/entities/Reports/PoolSharePricesReport.test.d.ts +2 -0
- package/dist/entities/Reports/PoolSharePricesReport.test.d.ts.map +1 -0
- package/dist/entities/Reports/PoolSharePricesReport.test.js +35 -0
- package/dist/entities/Reports/PoolSharePricesReport.test.js.map +1 -0
- package/dist/entities/Reports/types.d.ts +9 -0
- package/dist/entities/Reports/types.d.ts.map +1 -0
- package/dist/entities/Reports/types.js +2 -0
- package/dist/entities/Reports/types.js.map +1 -0
- package/dist/entities/Reports/utils.d.ts +20 -0
- package/dist/entities/Reports/utils.d.ts.map +1 -0
- package/dist/entities/Reports/utils.js +47 -0
- package/dist/entities/Reports/utils.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/indexer.d.ts +4189 -0
- package/dist/types/indexer.d.ts.map +1 -0
- package/dist/types/indexer.js +56 -0
- package/dist/types/indexer.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAIpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAIrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA4B1C,MAAM,OAAO,qBAAsB,SAAQ,MAAM;IAItC;IAHF,IAAI,CAAM;IACjB,YACE,UAAsB,EACf,WAAwB;QAE/B,KAAK,CAAC,UAAU,EAAE,CAAC,uBAAuB,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAFrE,gBAAW,GAAX,WAAW,CAAa;QAG/B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,SAAkC,EAAE;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAC5B,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,EAAE,CAC1C,IAAI,CAAC,KAAK;aACP,aAAa,CACZ;;;;;;;;;;;;;;SAcL,EACK;YACE,MAAM,EAAE;gBACN,UAAU,EAAE,aAAa;qBACtB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;qBACtE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC7B,iBAAiB,EAAE,WAAW;gBAC9B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBACzC,eAAe;aACsB;SACxC,EACD,SAAS,EACT,EAAE,GAAG,EAAE,GAAG,IAAI,CACf;aACA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAClE,CACF,CACF,CAAA;IACH,CAAC;IAED,gBAAgB;IAChB,QAAQ,CACN,IAAoB,EACpB,MAAgD,EAChD,YAAkC;QAElC,MAAM,iBAAiB,GAA8D,EAAE,CAAA;QAEvF,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACxE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YAC9B,CAAC;YAED,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;gBACtC,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjC,aAAa,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC;aACtE,CAAA;QACH,CAAC,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE;YAChF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;YAChC,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC7B,YAAY;aACb,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAA;IAChE,CAAC;CACF"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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/
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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/
|
|
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,
|
|
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"}
|