@centrifuge/sdk 1.8.3 → 1.8.4

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.
@@ -1 +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;AAS7C,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;;;;OAIG;IACH,MAAM,CAAC,MAAM,GAAE,uBAA4B;CA+F5C"}
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;AAcD,qBAAa,qBAAsB,SAAQ,MAAM;IAItC,WAAW,EAAE,WAAW;IAH1B,IAAI,EAAE,IAAI,CAAA;gBAEf,UAAU,EAAE,UAAU,EACf,WAAW,EAAE,WAAW;IAMjC;;;;OAIG;IACH,MAAM,CAAC,MAAM,GAAE,uBAA4B;CAsG5C"}
@@ -30,6 +30,7 @@ export class PoolSharePricesReport extends Entity {
30
30
  timestamp
31
31
  totalIssuance
32
32
  tokenPrice
33
+ triggerChainId
33
34
  }
34
35
  }
35
36
  }`, {
@@ -45,44 +46,45 @@ export class PoolSharePricesReport extends Entity {
45
46
  }
46
47
  /** @internal */
47
48
  _process(data, filter, poolDecimals) {
48
- // Snapshots are emitted per (tokenId, triggerChainId). For multi-network share
49
- // classes there are several rows per (date, tokenId) — sum issuance across them.
50
- const aggregates = {};
49
+ // Snapshots are emitted per (tokenId, triggerChainId, period). The indexer
50
+ // sometimes returns multiple rows for the same (date, tokenId, chain) — e.g.
51
+ // when the same period boundary triggers on more than one block. Dedupe to
52
+ // one row per (date, tokenId, chain) by keeping the largest issuance, then
53
+ // sum across chains for the (date, tokenId) total.
54
+ const perChain = {};
51
55
  data.tokenInstanceSnapshots.items.forEach((item) => {
52
56
  const date = new Date(Number(item.timestamp)).toISOString().slice(0, 10);
53
- if (!aggregates[date]) {
54
- aggregates[date] = {};
55
- }
56
57
  const issuance = BigInt(item.totalIssuance);
57
58
  const price = BigInt(item.tokenPrice);
58
- const existing = aggregates[date][item.tokenId];
59
- if (!existing) {
60
- aggregates[date][item.tokenId] = {
61
- totalIssuance: issuance,
62
- priceSourceIssuance: issuance,
63
- price,
64
- };
65
- }
66
- else {
67
- existing.totalIssuance += issuance;
68
- // Prefer the price from the snapshot with the largest issuance — stale
69
- // chains may report 0 issuance with an outdated price.
70
- if (issuance > existing.priceSourceIssuance) {
71
- existing.priceSourceIssuance = issuance;
72
- existing.price = price;
73
- }
59
+ const byTokenId = (perChain[date] ??= {});
60
+ const byChain = (byTokenId[item.tokenId] ??= {});
61
+ const existing = byChain[item.triggerChainId];
62
+ if (!existing || issuance > existing.issuance) {
63
+ byChain[item.triggerChainId] = { issuance, price };
74
64
  }
75
65
  });
76
- const items = Object.entries(aggregates).map(([timestamp, byTokenId]) => {
66
+ const items = Object.entries(perChain).map(([date, byTokenId]) => {
77
67
  const shareClasses = {};
78
- Object.entries(byTokenId).forEach(([tokenId, agg]) => {
68
+ Object.entries(byTokenId).forEach(([tokenId, byChain]) => {
69
+ let totalIssuance = 0n;
70
+ let priceSourceIssuance = -1n;
71
+ let price = 0n;
72
+ Object.values(byChain).forEach((row) => {
73
+ totalIssuance += row.issuance;
74
+ // Prefer the price from the chain with the largest issuance — stale
75
+ // chains may report 0 issuance with an outdated price.
76
+ if (row.issuance > priceSourceIssuance) {
77
+ priceSourceIssuance = row.issuance;
78
+ price = row.price;
79
+ }
80
+ });
79
81
  shareClasses[tokenId] = {
80
- price: new Price(agg.price),
81
- totalIssuance: new Balance(agg.totalIssuance, poolDecimals),
82
+ price: new Price(price),
83
+ totalIssuance: new Balance(totalIssuance, poolDecimals),
82
84
  };
83
85
  });
84
86
  return {
85
- timestamp: new Date(timestamp).toISOString(),
87
+ timestamp: new Date(date).toISOString(),
86
88
  shareClasses,
87
89
  };
88
90
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PoolSharePricesReport.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PoolSharePricesReport.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.ts"],"names":[],"mappings":"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"}
@@ -32,13 +32,12 @@ describe('PoolSharePricesReport', () => {
32
32
  });
33
33
  it('sums issuance across chains for the same (date, tokenId)', () => {
34
34
  const tokenId = scId.raw;
35
- // Three snapshots at the same timestamp from three different chains.
36
35
  const data = {
37
36
  tokenInstanceSnapshots: {
38
37
  items: [
39
- { tokenId, timestamp: '1777939200000', totalIssuance: '100', tokenPrice: '1000000000000000000' },
40
- { tokenId, timestamp: '1777939200000', totalIssuance: '200', tokenPrice: '1000000000000000000' },
41
- { tokenId, timestamp: '1777939200000', totalIssuance: '300', tokenPrice: '1000000000000000000' },
38
+ { tokenId, timestamp: '1777939200000', totalIssuance: '100', tokenPrice: '1000000000000000000', triggerChainId: '1' },
39
+ { tokenId, timestamp: '1777939200000', totalIssuance: '200', tokenPrice: '1000000000000000000', triggerChainId: '8453' },
40
+ { tokenId, timestamp: '1777939200000', totalIssuance: '300', tokenPrice: '1000000000000000000', triggerChainId: '42161' },
42
41
  ],
43
42
  },
44
43
  };
@@ -50,16 +49,14 @@ describe('PoolSharePricesReport', () => {
50
49
  });
51
50
  it('prefers the price from the chain with the largest issuance', () => {
52
51
  const tokenId = scId.raw;
53
- // First row has 0 issuance and a stale price — should be ignored in favor
54
- // of the row with the largest issuance.
55
52
  const stalePrice = '900000000000000000';
56
53
  const freshPrice = '1100000000000000000';
57
54
  const data = {
58
55
  tokenInstanceSnapshots: {
59
56
  items: [
60
- { tokenId, timestamp: '1777939200000', totalIssuance: '0', tokenPrice: stalePrice },
61
- { tokenId, timestamp: '1777939200000', totalIssuance: '500', tokenPrice: freshPrice },
62
- { tokenId, timestamp: '1777939200000', totalIssuance: '100', tokenPrice: stalePrice },
57
+ { tokenId, timestamp: '1777939200000', totalIssuance: '0', tokenPrice: stalePrice, triggerChainId: '143' },
58
+ { tokenId, timestamp: '1777939200000', totalIssuance: '500', tokenPrice: freshPrice, triggerChainId: '1' },
59
+ { tokenId, timestamp: '1777939200000', totalIssuance: '100', tokenPrice: stalePrice, triggerChainId: '8453' },
63
60
  ],
64
61
  },
65
62
  };
@@ -68,5 +65,27 @@ describe('PoolSharePricesReport', () => {
68
65
  expect(entry.totalIssuance.toBigInt()).to.equal(600n);
69
66
  expect(entry.price.toBigInt()).to.equal(BigInt(freshPrice));
70
67
  });
68
+ it('dedupes duplicate rows for the same (date, chain) before summing', () => {
69
+ const tokenId = scId.raw;
70
+ const price = '1000000000000000000';
71
+ // The indexer can emit multiple rows for the same (date, chain) — e.g. when
72
+ // a period boundary triggers more than once. Each chain should contribute
73
+ // only its largest-issuance row to the daily total.
74
+ const data = {
75
+ tokenInstanceSnapshots: {
76
+ items: [
77
+ { tokenId, timestamp: '1777939200000', totalIssuance: '500', tokenPrice: price, triggerChainId: '1' },
78
+ { tokenId, timestamp: '1777939200000', totalIssuance: '500', tokenPrice: price, triggerChainId: '1' },
79
+ { tokenId, timestamp: '1777939200000', totalIssuance: '500', tokenPrice: price, triggerChainId: '1' },
80
+ { tokenId, timestamp: '1777939200000', totalIssuance: '300', tokenPrice: price, triggerChainId: '8453' },
81
+ { tokenId, timestamp: '1777939200000', totalIssuance: '300', tokenPrice: price, triggerChainId: '8453' },
82
+ ],
83
+ },
84
+ };
85
+ const report = poolSharePricesReport._process(data, {}, 18);
86
+ const entry = report[0].shareClasses[tokenId];
87
+ // Naive sum would be 2100; correct dedup-then-sum is 800.
88
+ expect(entry.totalIssuance.toBigInt()).to.equal(800n);
89
+ });
71
90
  });
72
91
  //# sourceMappingURL=PoolSharePricesReport.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PoolSharePricesReport.test.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PoolSharePricesReport.test.js","sourceRoot":"","sources":["../../../src/entities/Reports/PoolSharePricesReport.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@centrifuge/sdk",
3
- "version": "1.8.3",
3
+ "version": "1.8.4",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/centrifuge/sdk/tree/main#readme",
6
6
  "author": "",