@kasufinance/kasu-sdk 2.11.0 → 2.13.0

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 (70) hide show
  1. package/README.md +37 -2
  2. package/dist/bundle.cjs.js +1516 -71
  3. package/dist/bundle.esm.js +1511 -73
  4. package/dist/domain/index.d.ts +6 -2
  5. package/dist/domain/index.js +2 -0
  6. package/dist/domain/index.js.map +1 -1
  7. package/dist/domain/pool-tvl.d.ts +62 -0
  8. package/dist/domain/pool-tvl.js +22 -0
  9. package/dist/domain/pool-tvl.js.map +1 -0
  10. package/dist/domain/yield-history.d.ts +122 -0
  11. package/dist/domain/yield-history.js +95 -0
  12. package/dist/domain/yield-history.js.map +1 -0
  13. package/dist/facade/chain-configs.js +24 -0
  14. package/dist/facade/chain-configs.js.map +1 -1
  15. package/dist/facade/kasu.d.ts +2 -0
  16. package/dist/facade/kasu.js +13 -5
  17. package/dist/facade/kasu.js.map +1 -1
  18. package/dist/facade/strategies.d.ts +20 -0
  19. package/dist/facade/strategies.js +22 -0
  20. package/dist/facade/strategies.js.map +1 -1
  21. package/dist/facade/types.d.ts +20 -0
  22. package/dist/facade/user-portfolio.d.ts +32 -0
  23. package/dist/facade/user-portfolio.js +34 -0
  24. package/dist/facade/user-portfolio.js.map +1 -1
  25. package/dist/index.d.ts +5 -0
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/kasu-sdk.d.ts +9 -1
  29. package/dist/kasu-sdk.js +2 -2
  30. package/dist/kasu-sdk.js.map +1 -1
  31. package/dist/sdk-config.d.ts +20 -0
  32. package/dist/sdk-config.js +3 -1
  33. package/dist/sdk-config.js.map +1 -1
  34. package/dist/services/DataService/data-service.d.ts +81 -1
  35. package/dist/services/DataService/data-service.js +211 -6
  36. package/dist/services/DataService/data-service.js.map +1 -1
  37. package/dist/services/DataService/tvl-history.d.ts +296 -0
  38. package/dist/services/DataService/tvl-history.js +558 -0
  39. package/dist/services/DataService/tvl-history.js.map +1 -0
  40. package/dist/services/Portfolio/portfolio.d.ts +37 -0
  41. package/dist/services/Portfolio/portfolio.js +136 -56
  42. package/dist/services/Portfolio/portfolio.js.map +1 -1
  43. package/dist/services/Portfolio/queries.js +15 -3
  44. package/dist/services/Portfolio/queries.js.map +1 -1
  45. package/dist/services/Portfolio/types.d.ts +8 -0
  46. package/dist/services/Portfolio/yield-history.d.ts +162 -0
  47. package/dist/services/Portfolio/yield-history.js +378 -0
  48. package/dist/services/Portfolio/yield-history.js.map +1 -0
  49. package/dist/services/shared.d.ts +16 -0
  50. package/dist/services/shared.js +30 -0
  51. package/dist/services/shared.js.map +1 -1
  52. package/package.json +1 -1
  53. package/src/domain/index.ts +15 -10
  54. package/src/domain/pool-tvl.ts +66 -0
  55. package/src/domain/yield-history.ts +194 -0
  56. package/src/facade/chain-configs.ts +26 -0
  57. package/src/facade/kasu.ts +20 -2
  58. package/src/facade/strategies.ts +26 -0
  59. package/src/facade/types.ts +20 -0
  60. package/src/facade/user-portfolio.ts +40 -3
  61. package/src/index.ts +11 -0
  62. package/src/kasu-sdk.ts +19 -2
  63. package/src/sdk-config.ts +22 -0
  64. package/src/services/DataService/data-service.ts +296 -6
  65. package/src/services/DataService/tvl-history.ts +853 -0
  66. package/src/services/Portfolio/portfolio.ts +263 -153
  67. package/src/services/Portfolio/queries.ts +15 -3
  68. package/src/services/Portfolio/types.ts +10 -0
  69. package/src/services/Portfolio/yield-history.ts +541 -0
  70. package/src/services/shared.ts +38 -1
@@ -11,6 +11,7 @@ import { BigNumber } from 'ethers';
11
11
  import { formatEther, parseEther, parseUnits } from 'ethers/lib/utils';
12
12
  import { GraphQLClient } from 'graphql-request';
13
13
  import { IKasuNFTsAbi__factory, ISystemVariablesAbi__factory, IUserLoyaltyRewardsAbi__factory, } from '../../contracts';
14
+ import { epochTrancheYield, } from '../../domain/yield-history';
14
15
  import { isLiteDeployment } from '../../utils/deployment-mode';
15
16
  import { DataService } from '../DataService/data-service';
16
17
  import { getAllTrancheConfigurationsQuery, getAllTranchesQuery, } from '../DataService/queries';
@@ -18,6 +19,7 @@ import { KSULocking } from '../Locking/locking';
18
19
  import { getSystemVariablesQuery, lockingSummariesQuery, } from '../Locking/queries';
19
20
  import { UserLending } from '../UserLending/user-lending';
20
21
  import { lendingPortfolioQuery } from './queries';
22
+ import { buildYieldHistory, fetchYieldHistorySeries, isEmptyHistoryError, resolveYieldHistoryWindow, validateYieldHistoryOptions, YIELD_HISTORY_PAGE_SIZE, yieldHistoryPageQuery, yieldHistoryPositionsQuery, } from './yield-history';
21
23
  export class Portfolio {
22
24
  constructor(_kasuConfig, signerOrProvider) {
23
25
  this._kasuConfig = _kasuConfig;
@@ -118,7 +120,7 @@ export class Portfolio {
118
120
  performanceFee *
119
121
  ecosystemFeeRate;
120
122
  }
121
- return ((totalWeeklyEcosystemFees * userRKsuAmount) / totalRKsuAmount);
123
+ return (totalWeeklyEcosystemFees * userRKsuAmount) / totalRKsuAmount;
122
124
  }
123
125
  /**
124
126
  * Calculate the user's weekly KASU bonus rewards (KASU) based on current deposits,
@@ -126,7 +128,7 @@ export class Portfolio {
126
128
  */
127
129
  calculateWeeklyKsuBonusRewards(params) {
128
130
  return __awaiter(this, void 0, void 0, function* () {
129
- const { userAddress, userRksuAmount, userDepositAmounts, ksuEpochPrice } = params;
131
+ const { userAddress, userRksuAmount, userDepositAmounts, ksuEpochPrice, } = params;
130
132
  const totalUserDeposits = userDepositAmounts[0].add(userDepositAmounts[1]);
131
133
  if (totalUserDeposits.isZero())
132
134
  return 0;
@@ -235,7 +237,7 @@ export class Portfolio {
235
237
  }
236
238
  getPortfolioLendingData(userAddress, poolOverviews, currentEpoch, provider) {
237
239
  return __awaiter(this, void 0, void 0, function* () {
238
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
240
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
239
241
  const SECONDS_PER_EPOCH = 604800; // seconds in a week
240
242
  const portfolioLendingPoolsPromise = [];
241
243
  const previousEpoch = BigNumber.from(currentEpoch).sub(BigNumber.from(1));
@@ -245,6 +247,7 @@ export class Portfolio {
245
247
  epochId: parseFloat(currentEpoch),
246
248
  lastEpochId: previousEpoch.toNumber(),
247
249
  unusedPools: this._kasuConfig.UNUSED_LENDING_POOL_IDS,
250
+ first: YIELD_HISTORY_PAGE_SIZE,
248
251
  }),
249
252
  this._userLendingService.getPortfolioUserTrancheBalances(userAddress),
250
253
  this._userLendingService.getUserPoolBalance(userAddress, poolOverviews.map(({ id }) => id), provider),
@@ -282,7 +285,6 @@ export class Portfolio {
282
285
  }
283
286
  }
284
287
  let totalInvestments = BigNumber.from(0);
285
- let totalYieldEarnedLastEpoch = 0;
286
288
  for (const poolOverview of poolOverviews) {
287
289
  const userPoolBalance = userPoolBalances.find(({ poolId }) => poolId === poolOverview.id);
288
290
  if (!userPoolBalance) {
@@ -290,6 +292,7 @@ export class Portfolio {
290
292
  }
291
293
  totalInvestments = userPoolBalance.balance.add(totalInvestments);
292
294
  const tranches = [];
295
+ let poolYieldEarnedLastEpoch = 0;
293
296
  const lendingPoolUserDetails = lastEpochData.user.lendingPoolUserDetails.find(({ lendingPool }) => lendingPool.id === poolOverview.id);
294
297
  if (!lendingPoolUserDetails)
295
298
  continue;
@@ -308,18 +311,42 @@ export class Portfolio {
308
311
  }, depositDetails, fixedLoans: [] }));
309
312
  continue;
310
313
  }
311
- const lastEpochTotalYield = parseFloat((_e = (_d = (_c = lastEpochUserTrancheDetails.tranche
312
- .lendingPoolTrancheEpochInterest) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.epochInterestAmount) !== null && _e !== void 0 ? _e : '0');
313
- const lastEpochUserShares = parseFloat((_h = (_g = (_f = lastEpochUserTrancheDetails
314
- .lendingPoolTrancheUserEpochSharesUpdates) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.shares) !== null && _h !== void 0 ? _h : '0');
315
- const lastEpochTotalShares = parseFloat((_l = (_k = (_j = lastEpochUserTrancheDetails.tranche
316
- .lendingPoolTrancheShareUpdates) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.shares) !== null && _l !== void 0 ? _l : '0');
317
- const currentTotalAmount = parseFloat(lastEpochUserTrancheDetails.tranche.balance);
318
- const currentTotalShares = parseFloat(lastEpochUserTrancheDetails.tranche.shares);
319
- const lastEpochTotalBaseYield = lastEpochTotalShares === 0
320
- ? 0
321
- : (lastEpochTotalYield * lastEpochUserShares) /
322
- lastEpochTotalShares;
314
+ const lastEpoch = previousEpoch.toNumber();
315
+ const userHasLastEpochShares = Boolean((_c = lastEpochUserTrancheDetails
316
+ .lendingPoolTrancheUserEpochSharesUpdates) === null || _c === void 0 ? void 0 : _c.length);
317
+ const fixedTermDeposits = lastEpochUserTrancheDetails.userLendingPoolTrancheFixedTermDepositLocks;
318
+ // The one per-epoch formula `getYieldHistory` runs too, with
319
+ // the same share selection — so the last bar of a history
320
+ // equals these figures.
321
+ const lastEpochYield = epochTrancheYield({
322
+ epochInterest: parseFloat((_f = (_e = (_d = lastEpochUserTrancheDetails.tranche
323
+ .lendingPoolTrancheEpochInterest) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.epochInterestAmount) !== null && _f !== void 0 ? _f : '0'),
324
+ userShares: parseFloat((_j = (_h = (_g = lastEpochUserTrancheDetails
325
+ .lendingPoolTrancheUserEpochSharesUpdates) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.shares) !== null && _j !== void 0 ? _j : '0'),
326
+ trancheShares: parseFloat((_m = (_l = (_k = lastEpochUserTrancheDetails.tranche
327
+ .lendingPoolTrancheShareUpdates) === null || _k === void 0 ? void 0 : _k[0]) === null || _l === void 0 ? void 0 : _l.shares) !== null && _m !== void 0 ? _m : '0'),
328
+ trancheBalanceNow: parseFloat(lastEpochUserTrancheDetails.tranche.balance),
329
+ trancheSharesNow: parseFloat(lastEpochUserTrancheDetails.tranche.shares),
330
+ locks: fixedTermDeposits.map((fixedTermDeposit) => {
331
+ var _a, _b, _c, _d, _e, _f;
332
+ return ({
333
+ active: parseFloat(fixedTermDeposit.epochLockStart) <
334
+ lastEpoch &&
335
+ parseFloat(fixedTermDeposit.epochLockEnd) >=
336
+ lastEpoch &&
337
+ userHasLastEpochShares,
338
+ // No snapshot = the lock's opening shares, exactly
339
+ // as `getYieldHistory` reads it: a lock made after
340
+ // clearing E starts at E with its first update
341
+ // tagged E + 1. Never the CURRENT shares, which
342
+ // would carry a top-up from a clearing that ran
343
+ // after the last settled epoch.
344
+ sharesAtEpoch: parseFloat((_c = (_b = (_a = fixedTermDeposit.lockSharesAtLastEpoch) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.shares) !== null && _c !== void 0 ? _c : fixedTermDeposit.initialTrancheShares),
345
+ sharesBeforeEpoch: parseFloat((_f = (_e = (_d = fixedTermDeposit
346
+ .userLendingPoolTrancheFixedTermDepositLockShareUpdate) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.shares) !== null && _f !== void 0 ? _f : fixedTermDeposit.initialTrancheShares),
347
+ });
348
+ }),
349
+ });
323
350
  const userTrancheBalance = {
324
351
  balance: '0',
325
352
  yieldEarned: 0,
@@ -334,47 +361,20 @@ export class Portfolio {
334
361
  }
335
362
  }
336
363
  let totalLifetimeFtdYield = 0;
337
- let lastEpochVariableBaseYield = lastEpochTotalBaseYield;
338
- const fixedLoans = lastEpochUserTrancheDetails.userLendingPoolTrancheFixedTermDepositLocks.map((fixedTermDeposit) => {
339
- var _a, _b, _c, _d, _e;
364
+ const fixedLoans = fixedTermDeposits.map((fixedTermDeposit, lockIndex) => {
365
+ var _a, _b;
340
366
  const fixedLoanDepositDetails = (_a = userRequest === null || userRequest === void 0 ? void 0 : userRequest[fixedTermDeposit
341
- .lendingPoolTrancheFixedTermConfig
342
- .configId]) !== null && _a !== void 0 ? _a : [];
343
- let lastEpochYieldEarned = 0;
344
- let lifetimeYieldEarned = 0;
345
- if (parseFloat(fixedTermDeposit.epochLockStart) <
346
- previousEpoch.toNumber() &&
347
- parseFloat(fixedTermDeposit.epochLockEnd) >=
348
- previousEpoch.toNumber() &&
349
- Boolean((_b = lastEpochUserTrancheDetails
350
- .lendingPoolTrancheUserEpochSharesUpdates) === null || _b === void 0 ? void 0 : _b.length)) {
351
- const currentEpochFtdShares = parseFloat(fixedTermDeposit.trancheShares);
352
- const lastEpochFtdShares = parseFloat((_e = (_d = (_c = fixedTermDeposit
353
- .userLendingPoolTrancheFixedTermDepositLockShareUpdate) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.shares) !== null && _e !== void 0 ? _e : '0');
354
- const additionalFtdYield = ((currentEpochFtdShares -
355
- lastEpochFtdShares) *
356
- currentTotalAmount) /
357
- currentTotalShares;
358
- const lastEpochFtdBaseYield = (lastEpochTotalBaseYield *
359
- lastEpochFtdShares) /
360
- lastEpochUserShares;
361
- lastEpochVariableBaseYield -=
362
- lastEpochFtdBaseYield;
363
- lastEpochYieldEarned =
364
- lastEpochFtdBaseYield + additionalFtdYield;
365
- }
366
- lifetimeYieldEarned =
367
- this.calculateFixedTermDepositEarnings(fixedTermDeposit, lastEpochUserTrancheDetails.tranche.balance, lastEpochUserTrancheDetails.tranche.shares);
367
+ .lendingPoolTrancheFixedTermConfig.configId]) !== null && _a !== void 0 ? _a : [];
368
+ const lastEpochYieldEarned = (_b = lastEpochYield.locks[lockIndex]) !== null && _b !== void 0 ? _b : 0;
369
+ const lifetimeYieldEarned = this.calculateFixedTermDepositEarnings(fixedTermDeposit, lastEpochUserTrancheDetails.tranche.balance, lastEpochUserTrancheDetails.tranche.shares);
368
370
  totalLifetimeFtdYield += lifetimeYieldEarned;
369
- totalYieldEarnedLastEpoch += lastEpochYieldEarned;
370
371
  const lockDuration = parseFloat(fixedTermDeposit
371
372
  .lendingPoolTrancheFixedTermConfig
372
373
  .epochLockDuration) * SECONDS_PER_EPOCH;
373
374
  return {
374
375
  lockId: fixedTermDeposit.lockId,
375
376
  configId: fixedTermDeposit
376
- .lendingPoolTrancheFixedTermConfig
377
- .configId,
377
+ .lendingPoolTrancheFixedTermConfig.configId,
378
378
  epochLockDuration: fixedTermDeposit
379
379
  .lendingPoolTrancheFixedTermConfig
380
380
  .epochLockDuration,
@@ -384,9 +384,7 @@ export class Portfolio {
384
384
  .epochInterestRate,
385
385
  epochLockStart: fixedTermDeposit.epochLockStart,
386
386
  amount: this._userLendingService
387
- .convertSharesToAssets(fixedTermDeposit.trancheShares, lastEpochUserTrancheDetails.tranche
388
- .balance, lastEpochUserTrancheDetails.tranche
389
- .shares)
387
+ .convertSharesToAssets(fixedTermDeposit.trancheShares, lastEpochUserTrancheDetails.tranche.balance, lastEpochUserTrancheDetails.tranche.shares)
390
388
  .toString(),
391
389
  endTime: parseInt(fixedTermDeposit.createdOn) +
392
390
  lockDuration,
@@ -394,20 +392,22 @@ export class Portfolio {
394
392
  isWithdrawalRequested: fixedTermDeposit.isWithdrawalRequested,
395
393
  startTime: parseInt(fixedTermDeposit.createdOn),
396
394
  yieldEarnings: {
397
- lastEpoch: lastEpochYieldEarned.toString(),
395
+ lastEpoch: this.precisionToString(lastEpochYieldEarned),
398
396
  lifetime: this.precisionToString(lifetimeYieldEarned),
399
397
  },
400
398
  depositDetails: fixedLoanDepositDetails,
401
399
  };
402
400
  });
403
- totalYieldEarnedLastEpoch += lastEpochTotalBaseYield;
401
+ // This POOL's last-epoch total: the tranche totals summed, the
402
+ // locks counted once (inside `total`).
403
+ poolYieldEarnedLastEpoch += lastEpochYield.total;
404
404
  tranches.push(Object.assign(Object.assign({}, tranche), { investedAmount: userTrancheBalance, yieldEarnings: {
405
- lastEpoch: lastEpochVariableBaseYield.toString(),
405
+ lastEpoch: this.precisionToString(lastEpochYield.variable),
406
406
  lifetime: this.precisionToString(totalLifetimeFtdYield), // passing in total FTD yield to be subtracted by total trache lifetime later down
407
407
  }, fixedLoans,
408
408
  depositDetails }));
409
409
  }
410
- portfolioLendingPoolsPromise.push(Object.assign(Object.assign({}, poolOverview), { totalYieldEarningsLastEpoch: totalYieldEarnedLastEpoch.toString(), totalInvestedAmount: userPoolBalance.balance.toString(), totalYieldEarningsLifetime: userPoolBalance.yieldEarned.toString(), tranches }));
410
+ portfolioLendingPoolsPromise.push(Object.assign(Object.assign({}, poolOverview), { totalYieldEarningsLastEpoch: this.precisionToString(poolYieldEarnedLastEpoch), totalInvestedAmount: userPoolBalance.balance.toString(), totalYieldEarningsLifetime: userPoolBalance.yieldEarned.toString(), tranches }));
411
411
  }
412
412
  const portfolioLendingPools = portfolioLendingPoolsPromise.map((pool) => (Object.assign(Object.assign({}, pool), { tranches: pool.tranches.map((tranche) => {
413
413
  const trancheBalance = tranche.investedAmount;
@@ -425,7 +425,87 @@ export class Portfolio {
425
425
  !parseUnits(pool.totalYieldEarningsLifetime).isZero());
426
426
  });
427
427
  }
428
+ /**
429
+ * The lender's settled yield per cycle (epoch), per pool and tranche —
430
+ * what the chain credited at each close, NET of the performance fee
431
+ * (`domain/yield-history.ts`), in the deployment's own stable token. Each
432
+ * entry runs the same `epochTrancheYield` as `getPortfolioLendingData`'s
433
+ * last-epoch figures: a tranche's `yieldEarnings.lastEpoch` plus its
434
+ * locks' equals its entry for the epoch of the tranche's most recently
435
+ * APPLIED interest (older than the last cycle for a pool that has not
436
+ * cleared since; no entry, and a figure of 0, when the lender held
437
+ * nothing at that epoch).
438
+ *
439
+ * Sum entries with `aggregateYieldHistory` (all strategies, or one with
440
+ * `{ poolId }`). Only epochs in which the lender held shares appear — a
441
+ * new lender gets `[]`. Pools in `UNUSED_LENDING_POOL_IDS` are left out,
442
+ * as in `lendingPortfolioQuery`; Directus enablement is NOT applied.
443
+ *
444
+ * Cost: three parallel `SystemVariables` reads and the positions query in
445
+ * one round, then one subgraph request per page of the longest series
446
+ * (1000 rows a page) — normally two subgraph round trips in all, never one
447
+ * per epoch.
448
+ *
449
+ * On a LITE deployment, a subgraph that lacks the entities (a validation
450
+ * error naming them) yields `[]`; on a full deployment that error throws,
451
+ * like every other failure (`isEmptyHistoryError`).
452
+ *
453
+ * @throws RangeError on a malformed `fromEpoch` / `count`, before any
454
+ * network read.
455
+ */
456
+ getYieldHistory(userAddress_1) {
457
+ return __awaiter(this, arguments, void 0, function* (userAddress, options = {}) {
458
+ validateYieldHistoryOptions(options);
459
+ try {
460
+ const [currentEpoch, epochZeroStart, epochDuration, positions] = yield Promise.all([
461
+ this._systemVariablesAbi.currentEpochNumber(),
462
+ this._systemVariablesAbi.epochStartTimestamp(0),
463
+ this._systemVariablesAbi.epochDuration(),
464
+ this._graph.request(yieldHistoryPositionsQuery, {
465
+ userAddress: userAddress.toLowerCase(),
466
+ unusedPools: this._kasuConfig.UNUSED_LENDING_POOL_IDS,
467
+ first: YIELD_HISTORY_PAGE_SIZE,
468
+ }),
469
+ ]);
470
+ const window = resolveYieldHistoryWindow(options, currentEpoch.toNumber());
471
+ if (!window || !positions.user)
472
+ return [];
473
+ const userTranches = [];
474
+ const tranches = new Set();
475
+ const locks = [];
476
+ for (const pool of positions.user.lendingPoolUserDetails) {
477
+ for (const position of pool.lendingPoolTrancheUserDetails) {
478
+ userTranches.push(position.id);
479
+ tranches.add(position.tranche.id);
480
+ for (const lock of position.userLendingPoolTrancheFixedTermDepositLocks) {
481
+ locks.push(lock.id);
482
+ }
483
+ }
484
+ }
485
+ if (userTranches.length === 0)
486
+ return [];
487
+ const { rows } = yield fetchYieldHistorySeries((variables) => this._graph.request(yieldHistoryPageQuery, variables), { tranches: [...tranches], userTranches, locks }, window);
488
+ return buildYieldHistory(Object.assign({ positions }, rows), window, {
489
+ epochZeroStart: epochZeroStart.toNumber(),
490
+ epochDuration: epochDuration.toNumber(),
491
+ });
492
+ }
493
+ catch (error) {
494
+ if (isEmptyHistoryError(error, this._isLiteDeployment))
495
+ return [];
496
+ throw error;
497
+ }
498
+ });
499
+ }
500
+ /**
501
+ * A money figure as a plain decimal string. Below a millionth of a token
502
+ * (the stable asset's own precision) is float noise, never money, so it
503
+ * is `'0'` — not `'1e-7'`, which `parseUnits` rejects, nor `'-3e-12'`. A
504
+ * small negative remainder (above −0.0001) is `'0'` as well.
505
+ */
428
506
  precisionToString(val) {
507
+ if (Math.abs(val) < 1e-6)
508
+ return '0';
429
509
  if (val < 0 && val > -0.0001) {
430
510
  return '0';
431
511
  }
@@ -1 +1 @@
1
- {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../../src/services/Portfolio/portfolio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../../src/services/Portfolio/portfolio.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,11 @@ export const lendingPortfolioQuery = gql `
65
65
  $epochId: BigInt!
66
66
  $lastEpochId: BigInt!
67
67
  $unusedPools: [String!]!
68
+ $first: Int!
68
69
  ) {
69
70
  user(id: $userAddress) {
70
71
  lendingPoolUserDetails(
72
+ first: $first
71
73
  where: { lendingPool_not_in: $unusedPools }
72
74
  ) {
73
75
  id
@@ -75,11 +77,11 @@ export const lendingPortfolioQuery = gql `
75
77
  id
76
78
  name
77
79
  balance
78
- tranches {
80
+ tranches(first: $first) {
79
81
  shares
80
82
  }
81
83
  }
82
- lendingPoolTrancheUserDetails {
84
+ lendingPoolTrancheUserDetails(first: $first) {
83
85
  shares
84
86
  lendingPoolTrancheUserEpochSharesUpdates(
85
87
  orderDirection: desc
@@ -89,7 +91,7 @@ export const lendingPortfolioQuery = gql `
89
91
  ) {
90
92
  shares
91
93
  }
92
- userLendingPoolTrancheFixedTermDepositLocks {
94
+ userLendingPoolTrancheFixedTermDepositLocks(first: $first) {
93
95
  isLocked
94
96
  unlockAmount
95
97
  initialAmount
@@ -113,6 +115,14 @@ export const lendingPortfolioQuery = gql `
113
115
  ) {
114
116
  shares
115
117
  }
118
+ lockSharesAtLastEpoch: userLendingPoolTrancheFixedTermDepositLockShareUpdate(
119
+ orderBy: shareUpdatesIndex
120
+ orderDirection: desc
121
+ first: 1
122
+ where: { epochId_lt: $epochId }
123
+ ) {
124
+ shares
125
+ }
116
126
  }
117
127
  tranche {
118
128
  id
@@ -139,6 +149,7 @@ export const lendingPortfolioQuery = gql `
139
149
  }
140
150
  }
141
151
  userRequests(
152
+ first: $first
142
153
  where: {
143
154
  user: $userAddress
144
155
  userRequestEvents_: {
@@ -154,6 +165,7 @@ export const lendingPortfolioQuery = gql `
154
165
  }
155
166
  fixedTermConfigId
156
167
  userRequestEvents(
168
+ first: $first
157
169
  where: { type_in: [DepositInitiated, DepositIncreased] }
158
170
  ) {
159
171
  id
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/services/Portfolio/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DhC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGvC,CAAC"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/services/Portfolio/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DhC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkHvC,CAAC"}
@@ -104,6 +104,14 @@ export interface UserLendingPoolTrancheFixedTermDepositLock {
104
104
  userLendingPoolTrancheFixedTermDepositLockShareUpdate: {
105
105
  shares: string;
106
106
  }[] | undefined;
107
+ /**
108
+ * The lock's shares as of the last settled epoch (`epochId < currentEpoch`),
109
+ * the `sharesAtEpoch` of `epochTrancheYield`. Present in
110
+ * `lendingPortfolioQuery` responses only.
111
+ */
112
+ lockSharesAtLastEpoch?: {
113
+ shares: string;
114
+ }[] | undefined;
107
115
  }
108
116
  export interface LastEpochQueryResult {
109
117
  user: {
@@ -0,0 +1,162 @@
1
+ import { YieldHistoryEntry } from '../../domain/yield-history';
2
+ /**
3
+ * Which settled epochs a history covers. Epochs are counted in the chain's
4
+ * numbering (`SystemVariables.currentEpochNumber`). Only SETTLED epochs exist
5
+ * in a history — the newest is `currentEpoch − 1`.
6
+ *
7
+ * - neither field: every settled epoch;
8
+ * - `count` only: the newest `count` settled epochs;
9
+ * - `fromEpoch` only: `fromEpoch` up to the newest settled epoch;
10
+ * - both: `count` epochs starting at `fromEpoch`, capped at the newest settled.
11
+ */
12
+ export interface YieldHistoryOptions {
13
+ /** First epoch included. A non-negative integer. */
14
+ fromEpoch?: number;
15
+ /** How many epochs. A positive integer. */
16
+ count?: number;
17
+ }
18
+ /** The resolved, inclusive epoch range; `null` when it holds no settled epoch. */
19
+ export interface YieldHistoryWindow {
20
+ fromEpoch: number;
21
+ toEpoch: number;
22
+ }
23
+ /** The subgraph returns at most this many rows per collection per request. */
24
+ export declare const YIELD_HISTORY_PAGE_SIZE = 1000;
25
+ /**
26
+ * A runaway guard, not a working limit: a collection this many pages long
27
+ * (`MAX × PAGE_SIZE` rows for one lender) is a broken response, not a history.
28
+ */
29
+ export declare const YIELD_HISTORY_MAX_PAGES = 100;
30
+ /**
31
+ * Throws `RangeError` on a malformed `fromEpoch` / `count`. `getYieldHistory`
32
+ * calls it BEFORE any network read.
33
+ */
34
+ export declare function validateYieldHistoryOptions(options: YieldHistoryOptions): void;
35
+ export declare function resolveYieldHistoryWindow(options: YieldHistoryOptions, currentEpoch: number): YieldHistoryWindow | null;
36
+ /**
37
+ * Round trip 1: the lender's tranche positions and fixed-term locks. Same
38
+ * pool exclusion and the same nested-list size (`$first`) as
39
+ * `lendingPortfolioQuery`, so both read the same lock set.
40
+ */
41
+ export declare const yieldHistoryPositionsQuery: string;
42
+ /**
43
+ * Round trip 2 onwards: the four per-epoch series, one page of each per
44
+ * request, cursor-paginated by `id`. A series that is exhausted is skipped with
45
+ * `@include`, so a history costs as many requests as its LONGEST series has
46
+ * pages — normally one — never one per epoch.
47
+ *
48
+ * Share snapshots are read up to the window's end with no lower bound: the
49
+ * value AS OF the first epoch may come from an update long before it.
50
+ */
51
+ export declare const yieldHistoryPageQuery: string;
52
+ export interface YieldHistoryPositionsResult {
53
+ user: {
54
+ lendingPoolUserDetails: {
55
+ lendingPool: {
56
+ id: string;
57
+ };
58
+ lendingPoolTrancheUserDetails: {
59
+ id: string;
60
+ tranche: {
61
+ id: string;
62
+ balance: string;
63
+ shares: string;
64
+ };
65
+ userLendingPoolTrancheFixedTermDepositLocks: {
66
+ id: string;
67
+ epochLockStart: string;
68
+ epochLockEnd: string;
69
+ initialTrancheShares: string;
70
+ }[];
71
+ }[];
72
+ }[];
73
+ } | null;
74
+ }
75
+ /** One share snapshot: the value from `epochId` on, until the next one. */
76
+ export interface ShareUpdateRow {
77
+ id: string;
78
+ epochId: string;
79
+ shareUpdatesIndex: number;
80
+ shares: string;
81
+ }
82
+ export interface InterestRow {
83
+ id: string;
84
+ epochId: string;
85
+ epochInterestAmount: string;
86
+ lendingPoolTranche: {
87
+ id: string;
88
+ };
89
+ }
90
+ export interface YieldHistoryPageResult {
91
+ interest?: InterestRow[];
92
+ trancheShares?: (ShareUpdateRow & {
93
+ lendingPoolTranche: {
94
+ id: string;
95
+ };
96
+ })[];
97
+ userShares?: (ShareUpdateRow & {
98
+ lendingPoolTrancheUserDetails: {
99
+ id: string;
100
+ };
101
+ })[];
102
+ lockShares?: (ShareUpdateRow & {
103
+ userLendingPoolTrancheFixedTermDepositLock: {
104
+ id: string;
105
+ };
106
+ })[];
107
+ }
108
+ /** Everything `buildYieldHistory` reads, keyed by the subgraph's entity ids. */
109
+ export interface YieldHistoryRead {
110
+ positions: YieldHistoryPositionsResult;
111
+ interest: InterestRow[];
112
+ trancheShares: (ShareUpdateRow & {
113
+ lendingPoolTranche: {
114
+ id: string;
115
+ };
116
+ })[];
117
+ userShares: (ShareUpdateRow & {
118
+ lendingPoolTrancheUserDetails: {
119
+ id: string;
120
+ };
121
+ })[];
122
+ lockShares: (ShareUpdateRow & {
123
+ userLendingPoolTrancheFixedTermDepositLock: {
124
+ id: string;
125
+ };
126
+ })[];
127
+ }
128
+ /** The chain's epoch clock: epoch E ends at `epochZeroStart + (E + 1) × duration`. */
129
+ export interface EpochClock {
130
+ epochZeroStart: number;
131
+ epochDuration: number;
132
+ }
133
+ type PageRequest = (variables: Record<string, unknown>) => Promise<YieldHistoryPageResult>;
134
+ /**
135
+ * Fetch the four series for the window, paginating each by `id` until a short
136
+ * page. Returns the rows and how many requests it took.
137
+ */
138
+ export declare function fetchYieldHistorySeries(request: PageRequest, ids: {
139
+ tranches: string[];
140
+ userTranches: string[];
141
+ locks: string[];
142
+ }, window: YieldHistoryWindow): Promise<{
143
+ rows: Omit<YieldHistoryRead, 'positions'>;
144
+ requests: number;
145
+ }>;
146
+ /**
147
+ * The snapshot in force at `epoch`: among updates with `epochId ≤ epoch`, the
148
+ * one with the highest `shareUpdatesIndex` — exactly what
149
+ * `lendingPortfolioQuery` selects with `orderBy: shareUpdatesIndex, desc,
150
+ * first: 1, where: { epochId_lt: epoch + 1 }`. `undefined` when none.
151
+ */
152
+ export declare function sharesAsOf(updates: readonly ShareUpdateRow[], epoch: number): ShareUpdateRow | undefined;
153
+ /**
154
+ * Pure: the fetched series → one entry per pool, tranche and settled epoch in
155
+ * which the lender held shares (or a lock earned a top-up). Each entry runs the
156
+ * same `epochTrancheYield` as the portfolio's last-epoch figure, with the same
157
+ * share selection, so the newest entry equals that figure.
158
+ *
159
+ * Sorted by `epochId`, then `poolId`, then `trancheId`.
160
+ */
161
+ export declare function buildYieldHistory(read: YieldHistoryRead, window: YieldHistoryWindow, clock: EpochClock): YieldHistoryEntry[];
162
+ export { isEmptyHistoryError, isMissingEntityError } from '../shared';