@eulerxyz/euler-v2-sdk 0.2.6-beta → 0.2.8-beta

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 (129) hide show
  1. package/dist/src/entities/Account.d.ts +10 -2
  2. package/dist/src/entities/Account.d.ts.map +1 -1
  3. package/dist/src/entities/Account.js +15 -2
  4. package/dist/src/entities/Account.js.map +1 -1
  5. package/dist/src/entities/EVault.d.ts +6 -1
  6. package/dist/src/entities/EVault.d.ts.map +1 -1
  7. package/dist/src/entities/EVault.js.map +1 -1
  8. package/dist/src/entities/Portfolio.d.ts +143 -18
  9. package/dist/src/entities/Portfolio.d.ts.map +1 -1
  10. package/dist/src/entities/Portfolio.js +240 -36
  11. package/dist/src/entities/Portfolio.js.map +1 -1
  12. package/dist/src/plugins/keyring/keyringPlugin.d.ts.map +1 -1
  13. package/dist/src/plugins/keyring/keyringPlugin.js +67 -17
  14. package/dist/src/plugins/keyring/keyringPlugin.js.map +1 -1
  15. package/dist/src/plugins/pyth/pythPlugin.d.ts +3 -1
  16. package/dist/src/plugins/pyth/pythPlugin.d.ts.map +1 -1
  17. package/dist/src/plugins/pyth/pythPlugin.js +101 -6
  18. package/dist/src/plugins/pyth/pythPlugin.js.map +1 -1
  19. package/dist/src/plugins/types.d.ts +38 -2
  20. package/dist/src/plugins/types.d.ts.map +1 -1
  21. package/dist/src/plugins/types.js.map +1 -1
  22. package/dist/src/sdk/buildSDK.d.ts.map +1 -1
  23. package/dist/src/sdk/buildSDK.js +3 -2
  24. package/dist/src/sdk/buildSDK.js.map +1 -1
  25. package/dist/src/sdk/sdk.d.ts +15 -4
  26. package/dist/src/sdk/sdk.d.ts.map +1 -1
  27. package/dist/src/sdk/sdk.js +40 -3
  28. package/dist/src/sdk/sdk.js.map +1 -1
  29. package/dist/src/services/accountService/accountService.d.ts +7 -1
  30. package/dist/src/services/accountService/accountService.d.ts.map +1 -1
  31. package/dist/src/services/accountService/accountService.js +55 -1
  32. package/dist/src/services/accountService/accountService.js.map +1 -1
  33. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.d.ts.map +1 -1
  34. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js +2 -2
  35. package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js.map +1 -1
  36. package/dist/src/services/accountService/index.d.ts +1 -1
  37. package/dist/src/services/accountService/index.d.ts.map +1 -1
  38. package/dist/src/services/executionService/cowExecutor.d.ts +3 -0
  39. package/dist/src/services/executionService/cowExecutor.d.ts.map +1 -1
  40. package/dist/src/services/executionService/cowExecutor.js.map +1 -1
  41. package/dist/src/services/executionService/execute.d.ts +8 -0
  42. package/dist/src/services/executionService/execute.d.ts.map +1 -1
  43. package/dist/src/services/executionService/execute.js.map +1 -1
  44. package/dist/src/services/executionService/executionService.d.ts +70 -8
  45. package/dist/src/services/executionService/executionService.d.ts.map +1 -1
  46. package/dist/src/services/executionService/executionService.js +278 -124
  47. package/dist/src/services/executionService/executionService.js.map +1 -1
  48. package/dist/src/services/executionService/executionServiceTypes.d.ts +4 -0
  49. package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
  50. package/dist/src/services/executionService/simulate.d.ts +29 -0
  51. package/dist/src/services/executionService/simulate.d.ts.map +1 -1
  52. package/dist/src/services/executionService/simulate.js +42 -5
  53. package/dist/src/services/executionService/simulate.js.map +1 -1
  54. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts +2 -1
  55. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
  56. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +2 -2
  57. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
  58. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts +2 -1
  59. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts.map +1 -1
  60. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js +11 -2
  61. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js.map +1 -1
  62. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts +4 -0
  63. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts.map +1 -1
  64. package/dist/src/services/rewardsService/index.d.ts +4 -1
  65. package/dist/src/services/rewardsService/index.d.ts.map +1 -1
  66. package/dist/src/services/rewardsService/index.js +2 -0
  67. package/dist/src/services/rewardsService/index.js.map +1 -1
  68. package/dist/src/services/rewardsService/rewardCampaignEligibility.d.ts +32 -0
  69. package/dist/src/services/rewardsService/rewardCampaignEligibility.d.ts.map +1 -0
  70. package/dist/src/services/rewardsService/rewardCampaignEligibility.js +21 -0
  71. package/dist/src/services/rewardsService/rewardCampaignEligibility.js.map +1 -0
  72. package/dist/src/services/rewardsService/rewardsService.d.ts +6 -0
  73. package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
  74. package/dist/src/services/rewardsService/rewardsService.js +20 -3
  75. package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
  76. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +8 -5
  77. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
  78. package/dist/src/services/rewardsService/rewardsServiceTypes.js +1 -1
  79. package/dist/src/services/rewardsService/rewardsServiceTypes.js.map +1 -1
  80. package/dist/src/services/rewardsService/vaultRewardInfo.d.ts +25 -0
  81. package/dist/src/services/rewardsService/vaultRewardInfo.d.ts.map +1 -0
  82. package/dist/src/services/rewardsService/vaultRewardInfo.js +39 -0
  83. package/dist/src/services/rewardsService/vaultRewardInfo.js.map +1 -0
  84. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.d.ts +2 -1
  85. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.d.ts.map +1 -1
  86. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.js +1 -0
  87. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.js.map +1 -1
  88. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.d.ts.map +1 -1
  89. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js +7 -0
  90. package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js.map +1 -1
  91. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.d.ts.map +1 -1
  92. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js +17 -6
  93. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js.map +1 -1
  94. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.d.ts.map +1 -1
  95. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js +52 -17
  96. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js.map +1 -1
  97. package/dist/src/utils/accountComputations.d.ts +41 -8
  98. package/dist/src/utils/accountComputations.d.ts.map +1 -1
  99. package/dist/src/utils/accountComputations.js +127 -77
  100. package/dist/src/utils/accountComputations.js.map +1 -1
  101. package/dist/src/utils/irm.d.ts +10 -2
  102. package/dist/src/utils/irm.d.ts.map +1 -1
  103. package/dist/src/utils/irm.js +33 -0
  104. package/dist/src/utils/irm.js.map +1 -1
  105. package/dist/src/utils/oracle.d.ts +16 -0
  106. package/dist/src/utils/oracle.d.ts.map +1 -1
  107. package/dist/src/utils/oracle.js +98 -0
  108. package/dist/src/utils/oracle.js.map +1 -1
  109. package/dist/src/utils/stateOverrides/approvalOverrides.d.ts +25 -8
  110. package/dist/src/utils/stateOverrides/approvalOverrides.d.ts.map +1 -1
  111. package/dist/src/utils/stateOverrides/approvalOverrides.js +76 -16
  112. package/dist/src/utils/stateOverrides/approvalOverrides.js.map +1 -1
  113. package/dist/src/utils/stateOverrides/balanceOverrides.d.ts +26 -7
  114. package/dist/src/utils/stateOverrides/balanceOverrides.d.ts.map +1 -1
  115. package/dist/src/utils/stateOverrides/balanceOverrides.js +72 -13
  116. package/dist/src/utils/stateOverrides/balanceOverrides.js.map +1 -1
  117. package/dist/src/utils/stateOverrides/getStateOverrides.d.ts +38 -0
  118. package/dist/src/utils/stateOverrides/getStateOverrides.d.ts.map +1 -1
  119. package/dist/src/utils/stateOverrides/getStateOverrides.js +14 -4
  120. package/dist/src/utils/stateOverrides/getStateOverrides.js.map +1 -1
  121. package/dist/src/utils/stateOverrides/index.d.ts +3 -2
  122. package/dist/src/utils/stateOverrides/index.d.ts.map +1 -1
  123. package/dist/src/utils/stateOverrides/index.js +2 -1
  124. package/dist/src/utils/stateOverrides/index.js.map +1 -1
  125. package/dist/src/utils/stateOverrides/slotHints.d.ts +78 -0
  126. package/dist/src/utils/stateOverrides/slotHints.d.ts.map +1 -0
  127. package/dist/src/utils/stateOverrides/slotHints.js +152 -0
  128. package/dist/src/utils/stateOverrides/slotHints.js.map +1 -0
  129. package/package.json +1 -1
@@ -8,6 +8,21 @@ const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;
8
8
  const TARGET_TIME_AGO_SECONDS = 60 * 60;
9
9
  const SAMPLE_DISTANCE_BLOCKS = 10_000;
10
10
  const EULER_EARN_FETCH_BATCH_SIZE = 4;
11
+ // Blocks to step back from the latest head when picking the "current" sample
12
+ // point. Load-balanced JSON-RPC fleets can serve subsequent eth_calls from
13
+ // nodes whose heads lag the node that answered `getBlockNumber()` by 1–2
14
+ // blocks; pinning convertToAssets to `latest.number` would then fail on lagging
15
+ // nodes. Backing off by a few blocks puts the measurement at a height that
16
+ // every plausibly-synced backend has seen, while the resulting staleness
17
+ // (~60s on Ethereum, sub-second on most L2s) is negligible against the 3600s
18
+ // measurement window.
19
+ const MEASUREMENT_BLOCK_BACKOFF = 5n;
20
+ // Extra digits of precision added on top of share decimals when probing the
21
+ // vault exchange rate. The probe is linear in `convertToAssets`, so scaling it
22
+ // up costs nothing other than headroom against uint256 overflow. With 1e12 on
23
+ // top of asset decimals, even low-decimal assets (USDC/cbBTC) keep tens of
24
+ // significant digits of resolution in the 1h rate change.
25
+ const PROBE_PRECISION_BOOST = 12n;
11
26
  const verifiedArrayAbi = [
12
27
  {
13
28
  type: "function",
@@ -95,36 +110,55 @@ export class EulerEarnOnchainAdapter {
95
110
  }
96
111
  async getSupplyApyWindow(provider) {
97
112
  const latestBlockNumber = await this.queryBlockNumber(provider);
98
- const currentBlockNumber = latestBlockNumber > 0n ? latestBlockNumber - 1n : 0n;
99
- const sampleDistanceBlocks = currentBlockNumber > BigInt(SAMPLE_DISTANCE_BLOCKS)
113
+ if (latestBlockNumber <= MEASUREMENT_BLOCK_BACKOFF) {
114
+ throw new Error("Failed to estimate 1h EulerEarn APY block window.");
115
+ }
116
+ const measurementBlockNumber = latestBlockNumber - MEASUREMENT_BLOCK_BACKOFF;
117
+ const sampleDistanceBlocks = measurementBlockNumber > BigInt(SAMPLE_DISTANCE_BLOCKS)
100
118
  ? BigInt(SAMPLE_DISTANCE_BLOCKS)
101
- : currentBlockNumber;
102
- const sampleBlockNumber = currentBlockNumber - sampleDistanceBlocks;
103
- const [currentBlockData, sampleBlockData] = await Promise.all([
104
- this.queryBlock(provider, currentBlockNumber),
119
+ : measurementBlockNumber;
120
+ const sampleBlockNumber = measurementBlockNumber - sampleDistanceBlocks;
121
+ const [measurementBlockData, sampleBlockData] = await Promise.all([
122
+ this.queryBlock(provider, measurementBlockNumber),
105
123
  this.queryBlock(provider, sampleBlockNumber),
106
124
  ]);
107
- const elapsedForSample = Number(currentBlockData.timestamp) - Number(sampleBlockData.timestamp);
125
+ const elapsedForSample = Number(measurementBlockData.timestamp) -
126
+ Number(sampleBlockData.timestamp);
108
127
  if (elapsedForSample <= 0) {
109
128
  throw new Error("Failed to estimate 1h EulerEarn APY block window.");
110
129
  }
111
130
  const averageBlockTimeSeconds = elapsedForSample / Number(sampleDistanceBlocks);
112
131
  const oneHourAgoBlockOffset = Math.round(TARGET_TIME_AGO_SECONDS / averageBlockTimeSeconds);
113
- const oneHourAgoBlockNumber = currentBlockNumber > BigInt(oneHourAgoBlockOffset)
114
- ? currentBlockNumber - BigInt(oneHourAgoBlockOffset)
115
- : 0n;
116
- const elapsedSeconds = oneHourAgoBlockOffset * averageBlockTimeSeconds;
132
+ // Bail if the chain has less than ~1h of history rather than silently
133
+ // clamping to genesis — the latter would normalise the rate change against
134
+ // a too-short window and explode the displayed APY.
135
+ if (measurementBlockNumber <= BigInt(oneHourAgoBlockOffset)) {
136
+ throw new Error("Failed to determine 1h EulerEarn APY time delta.");
137
+ }
138
+ const oneHourAgoBlockNumber = measurementBlockNumber - BigInt(oneHourAgoBlockOffset);
139
+ // Read the actual timestamp at the prior block instead of trusting the
140
+ // 10K-block average. Block-rate variance over the last hour (sequencer
141
+ // hiccups, MEV bursts, late-block stretches) would otherwise scale the
142
+ // displayed APY by the inverse of the rate skew.
143
+ const priorBlockData = await this.queryBlock(provider, oneHourAgoBlockNumber);
144
+ const elapsedSeconds = Number(measurementBlockData.timestamp) -
145
+ Number(priorBlockData.timestamp);
117
146
  if (elapsedSeconds <= 0) {
118
147
  throw new Error("Failed to determine 1h EulerEarn APY time delta.");
119
148
  }
120
- return { currentBlockNumber, oneHourAgoBlockNumber, elapsedSeconds };
149
+ return { measurementBlockNumber, oneHourAgoBlockNumber, elapsedSeconds };
121
150
  }
151
+ // Compound a measured rate change observed over `elapsedSeconds` into an APY,
152
+ // using continuous-per-second compounding to match the EVK/Lens convention.
153
+ // Equivalent to `(1 + spy) ** SECONDS_IN_YEAR - 1` where
154
+ // `spy = rateChange / elapsedSeconds`.
122
155
  computeSupplyApy1h(currentRate, oldRate, elapsedSeconds) {
123
- if (oldRate <= 0n)
156
+ if (oldRate <= 0n || elapsedSeconds <= 0)
124
157
  return undefined;
125
158
  const rateChange = Number(currentRate - oldRate) / Number(oldRate);
126
- const apy = (rateChange * SECONDS_IN_YEAR) / elapsedSeconds;
127
- return Number.isFinite(apy) ? apy * 100 : undefined;
159
+ const spy = rateChange / elapsedSeconds;
160
+ const apy = ((1 + spy) ** SECONDS_IN_YEAR - 1) * 100;
161
+ return Number.isFinite(apy) ? apy : undefined;
128
162
  }
129
163
  async fetchVaults(chainId, vaults) {
130
164
  const provider = this.providerService.getProvider(chainId);
@@ -166,9 +200,10 @@ export class EulerEarnOnchainAdapter {
166
200
  });
167
201
  }
168
202
  else {
203
+ const probeShares = 10n ** (vaultInfo.vaultDecimals + PROBE_PRECISION_BOOST);
169
204
  const [currentRateResult, oldRateResult] = await Promise.allSettled([
170
- this.queryEulerEarnConvertToAssets(provider, vault, 10n ** vaultInfo.vaultDecimals),
171
- this.queryEulerEarnConvertToAssets(provider, vault, 10n ** vaultInfo.vaultDecimals, supplyApyWindow.value.oneHourAgoBlockNumber),
205
+ this.queryEulerEarnConvertToAssets(provider, vault, probeShares, supplyApyWindow.value.measurementBlockNumber),
206
+ this.queryEulerEarnConvertToAssets(provider, vault, probeShares, supplyApyWindow.value.oneHourAgoBlockNumber),
172
207
  ]);
173
208
  if (currentRateResult.status === "fulfilled" &&
174
209
  oldRateResult.status === "fulfilled") {
@@ -1 +1 @@
1
- {"version":3,"file":"eulerEarnOnchainAdapter.js","sourceRoot":"","sources":["../../../../../../src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eulerEarnOnchainAdapter.js","sourceRoot":"","sources":["../../../../../../src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.ts"],"names":[],"mappings":"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"}
@@ -89,43 +89,43 @@ export interface YieldApyBreakdown {
89
89
  * Requires populated vaults (for APY data) and market prices (for USD values).
90
90
  * Returns `undefined` when prerequisites are missing or equity <= 0.
91
91
  */
92
- export declare function computeSubAccountRoe(subAccount: ISubAccount<IHasVaultAddress>): SubAccountRoe | undefined;
92
+ export declare function computeSubAccountRoe(subAccount: ISubAccount<IHasVaultAddress>, viewer: Address | string | undefined | null): SubAccountRoe | undefined;
93
93
  /**
94
94
  * Net APY across the full account, relative to total supplied value.
95
95
  *
96
96
  * `totalNetYield / totalSupplyUsd`, where net yield includes supply APY,
97
97
  * borrow costs, supply/borrow reward APRs, and intrinsic APY.
98
98
  */
99
- export declare function computeAccountNetApy(account: IAccount<IHasVaultAddress>): number | undefined;
99
+ export declare function computeAccountNetApy(account: IAccount<IHasVaultAddress>, viewer: Address | string | undefined | null): number | undefined;
100
100
  /**
101
101
  * Net APY across a pre-filtered set of positions, relative to supplied value.
102
102
  * Use this when a higher-level view intentionally excludes some account positions.
103
103
  */
104
- export declare function computePositionsNetApy(positions: Iterable<AccountYieldPosition>): number | undefined;
104
+ export declare function computePositionsNetApy(positions: Iterable<AccountYieldPosition>, viewer: Address | string | undefined | null): number | undefined;
105
105
  /**
106
106
  * Return on equity across the full account, relative to net asset value.
107
107
  *
108
108
  * `totalNetYield / (totalSupplyUsd - totalBorrowUsd)`.
109
109
  */
110
- export declare function computeAccountRoe(account: IAccount<IHasVaultAddress>): number | undefined;
110
+ export declare function computeAccountRoe(account: IAccount<IHasVaultAddress>, viewer: Address | string | undefined | null): number | undefined;
111
111
  /**
112
112
  * Return on equity across a pre-filtered set of positions, relative to net asset value.
113
113
  * Use this when a higher-level view intentionally excludes some account positions.
114
114
  */
115
- export declare function computePositionsRoe(positions: Iterable<AccountYieldPosition>): number | undefined;
115
+ export declare function computePositionsRoe(positions: Iterable<AccountYieldPosition>, viewer: Address | string | undefined | null): number | undefined;
116
116
  /**
117
117
  * APY contribution breakdown across a pre-filtered set of positions, relative to supplied value.
118
118
  */
119
- export declare function computePositionsNetApyBreakdown(positions: Iterable<AccountYieldPosition>): YieldApyBreakdown | undefined;
119
+ export declare function computePositionsNetApyBreakdown(positions: Iterable<AccountYieldPosition>, viewer: Address | string | undefined | null): YieldApyBreakdown | undefined;
120
120
  /**
121
121
  * ROE contribution breakdown across a pre-filtered set of positions, relative to net asset value.
122
122
  */
123
- export declare function computePositionsRoeBreakdown(positions: Iterable<AccountYieldPosition>): YieldApyBreakdown | undefined;
123
+ export declare function computePositionsRoeBreakdown(positions: Iterable<AccountYieldPosition>, viewer: Address | string | undefined | null): YieldApyBreakdown | undefined;
124
124
  /**
125
125
  * APY breakdown for a single supplied vault position.
126
126
  * Does not require USD values because a single supply-side APY is value-independent.
127
127
  */
128
- export declare function computeSupplyApyBreakdown(vault: IHasVaultAddress | undefined): YieldApyBreakdown | undefined;
128
+ export declare function computeSupplyApyBreakdown(vault: IHasVaultAddress | undefined, viewer: Address | string | undefined | null): YieldApyBreakdown | undefined;
129
129
  /**
130
130
  * Net APY relative to total supply.
131
131
  * `(supplyUsd * (supplyApy + supplyReward) - borrowUsd * (borrowApy - borrowReward)) / supplyUsd`
@@ -151,5 +151,38 @@ export interface AccountYieldPosition {
151
151
  vault?: IHasVaultAddress;
152
152
  suppliedValueUsd?: number;
153
153
  borrowedValueUsd?: number;
154
+ /**
155
+ * Optional borrow-side context. When present on a borrow position, the
156
+ * yield computation also picks up `BORROW_COLLATERAL` campaigns (gated by
157
+ * the collateral set) and `LOOPING` campaigns (gated by the position
158
+ * multiplier). Without this context, those campaigns are excluded — the
159
+ * SDK has no way to know which collaterals back the borrow or what the
160
+ * effective leverage is.
161
+ */
162
+ borrowContext?: BorrowYieldContext;
163
+ }
164
+ /**
165
+ * Context attached to a borrow `AccountYieldPosition` so collateral-conditional
166
+ * and leverage-conditional rewards can be attributed to the position.
167
+ */
168
+ export interface BorrowYieldContext {
169
+ /**
170
+ * Collateral vault addresses backing this borrow.
171
+ * `BORROW_COLLATERAL` campaigns whose `collateralAddress` matches an entry
172
+ * here are added to the borrow-side reward yield.
173
+ */
174
+ collateralAddresses: Address[];
175
+ /**
176
+ * Effective leverage multiplier (supplied / equity) for this borrow.
177
+ * `LOOPING` campaigns count when this value is within the campaign's
178
+ * `[minMultiplier, maxMultiplier]` envelope.
179
+ */
180
+ multiplier?: number;
181
+ /**
182
+ * Equity (NAV) in USD for this borrow-collateral set.
183
+ * `LOOPING` rewards are paid per unit of equity (not scaled by leverage),
184
+ * so their contribution to the yield total is `equityUsd * loopingApr`.
185
+ */
186
+ equityUsd?: number;
154
187
  }
155
188
  //# sourceMappingURL=accountComputations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accountComputations.d.ts","sourceRoot":"","sources":["../../../src/utils/accountComputations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,OAAO,EAA8B,MAAM,MAAM,CAAC;AAChE,OAAO,KAAK,EACX,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,MAAM,wBAAwB,CAAC;AAQhC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAQpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAOpB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAQpB;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,2BAA2B,CAC1C,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAClC,MAAM,GAAG,SAAS,CAMpB;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACvD,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAEpB;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CACjD,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAEpB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,MAAM,GAAG,SAAS,CAapB;AAMD;;;;GAIG;AACH,wBAAgB,kCAAkC,CACjD,SAAS,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAC5C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAczB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAC5C,MAAM,GAAG,SAAS,CAMpB;AAMD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACvC,aAAa,GAAG,SAAS,CA2D3B;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,MAAM,GAAG,SAAS,CAKpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,MAAM,GAAG,SAAS,CAKpB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,iBAAiB,GAAG,SAAS,CAK/B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC,iBAAiB,GAAG,SAAS,CAK/B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GACjC,iBAAiB,GAAG,SAAS,CAiB/B;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,eAAe,SAAI,EACnB,eAAe,SAAI,GACjB,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,eAAe,SAAI,EACnB,eAAe,SAAI,GACjB,MAAM,CAQR;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,MAAM,EACjB,YAAY,SAAQ,GAClB,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACxB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,MAAM,CAER;AAoED,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"accountComputations.d.ts","sourceRoot":"","sources":["../../../src/utils/accountComputations.ts"],"names":[],"mappings":"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"}
@@ -136,59 +136,19 @@ export function computeBorrowLiquidationPrice(liquidity) {
136
136
  * Requires populated vaults (for APY data) and market prices (for USD values).
137
137
  * Returns `undefined` when prerequisites are missing or equity <= 0.
138
138
  */
139
- export function computeSubAccountRoe(subAccount) {
140
- let totalLendingYield = 0;
141
- let totalBorrowingYield = 0;
142
- let totalRewardYield = 0;
143
- let totalIntrinsicYield = 0;
144
- let totalSupplyUsd = 0;
145
- let totalBorrowUsd = 0;
146
- let hasData = false;
147
- for (const p of subAccount.positions) {
148
- const vault = p.vault;
149
- if (!vault)
150
- continue;
151
- const intrinsicApyDecimal = getVaultIntrinsicApy(vault);
152
- // Supply side
153
- if (p.suppliedValueUsd != null && p.suppliedValueUsd > 0) {
154
- const supplyUsd = p.suppliedValueUsd;
155
- const supplyApy = getVaultSupplyApy(vault);
156
- if (supplyApy != null) {
157
- hasData = true;
158
- totalSupplyUsd += supplyUsd;
159
- totalLendingYield += supplyUsd * supplyApy;
160
- totalRewardYield += supplyUsd * getVaultRewardApr(vault, "LEND");
161
- totalIntrinsicYield += supplyUsd * intrinsicApyDecimal;
162
- }
163
- }
164
- // Borrow side
165
- if (p.borrowedValueUsd != null && p.borrowedValueUsd > 0) {
166
- const borrowUsd = p.borrowedValueUsd;
167
- const borrowApy = getVaultBorrowApy(vault);
168
- if (borrowApy != null) {
169
- hasData = true;
170
- totalBorrowUsd += borrowUsd;
171
- totalBorrowingYield += borrowUsd * borrowApy;
172
- totalRewardYield += borrowUsd * getVaultRewardApr(vault, "BORROW");
173
- totalIntrinsicYield -= borrowUsd * intrinsicApyDecimal;
174
- }
175
- }
176
- }
177
- if (!hasData)
139
+ export function computeSubAccountRoe(subAccount, viewer) {
140
+ const totals = computePositionYieldTotals(subAccountYieldPositions(subAccount), viewer);
141
+ if (!totals)
178
142
  return undefined;
179
- const equity = totalSupplyUsd - totalBorrowUsd;
180
- if (equity <= 0)
143
+ if (totals.totalEquityUsd <= 0)
181
144
  return undefined;
182
- const lending = totalLendingYield / equity;
183
- const borrowing = -totalBorrowingYield / equity;
184
- const rewards = totalRewardYield / equity;
185
- const intrinsicApy = totalIntrinsicYield / equity;
145
+ const breakdown = divideYieldTotals(totals, totals.totalEquityUsd);
186
146
  return {
187
- lending,
188
- borrowing,
189
- rewards,
190
- intrinsicApy,
191
- total: lending + borrowing + rewards + intrinsicApy,
147
+ lending: breakdown.lending,
148
+ borrowing: breakdown.borrowing,
149
+ rewards: breakdown.rewards,
150
+ intrinsicApy: breakdown.intrinsicApy,
151
+ total: breakdown.total,
192
152
  };
193
153
  }
194
154
  // ---------------------------------------------------------------------------
@@ -200,8 +160,8 @@ export function computeSubAccountRoe(subAccount) {
200
160
  * `totalNetYield / totalSupplyUsd`, where net yield includes supply APY,
201
161
  * borrow costs, supply/borrow reward APRs, and intrinsic APY.
202
162
  */
203
- export function computeAccountNetApy(account) {
204
- const totals = computeAccountYieldTotals(account);
163
+ export function computeAccountNetApy(account, viewer) {
164
+ const totals = computeAccountYieldTotals(account, viewer);
205
165
  if (!totals)
206
166
  return undefined;
207
167
  if (totals.totalSupplyUsd === 0)
@@ -212,8 +172,8 @@ export function computeAccountNetApy(account) {
212
172
  * Net APY across a pre-filtered set of positions, relative to supplied value.
213
173
  * Use this when a higher-level view intentionally excludes some account positions.
214
174
  */
215
- export function computePositionsNetApy(positions) {
216
- const totals = computePositionYieldTotals(positions);
175
+ export function computePositionsNetApy(positions, viewer) {
176
+ const totals = computePositionYieldTotals(positions, viewer);
217
177
  if (!totals)
218
178
  return undefined;
219
179
  if (totals.totalSupplyUsd === 0)
@@ -225,8 +185,8 @@ export function computePositionsNetApy(positions) {
225
185
  *
226
186
  * `totalNetYield / (totalSupplyUsd - totalBorrowUsd)`.
227
187
  */
228
- export function computeAccountRoe(account) {
229
- const totals = computeAccountYieldTotals(account);
188
+ export function computeAccountRoe(account, viewer) {
189
+ const totals = computeAccountYieldTotals(account, viewer);
230
190
  if (!totals)
231
191
  return undefined;
232
192
  if (totals.totalEquityUsd <= 0)
@@ -237,8 +197,8 @@ export function computeAccountRoe(account) {
237
197
  * Return on equity across a pre-filtered set of positions, relative to net asset value.
238
198
  * Use this when a higher-level view intentionally excludes some account positions.
239
199
  */
240
- export function computePositionsRoe(positions) {
241
- const totals = computePositionYieldTotals(positions);
200
+ export function computePositionsRoe(positions, viewer) {
201
+ const totals = computePositionYieldTotals(positions, viewer);
242
202
  if (!totals)
243
203
  return undefined;
244
204
  if (totals.totalEquityUsd <= 0)
@@ -248,8 +208,8 @@ export function computePositionsRoe(positions) {
248
208
  /**
249
209
  * APY contribution breakdown across a pre-filtered set of positions, relative to supplied value.
250
210
  */
251
- export function computePositionsNetApyBreakdown(positions) {
252
- const totals = computePositionYieldTotals(positions);
211
+ export function computePositionsNetApyBreakdown(positions, viewer) {
212
+ const totals = computePositionYieldTotals(positions, viewer);
253
213
  if (!totals)
254
214
  return undefined;
255
215
  if (totals.totalSupplyUsd === 0)
@@ -259,8 +219,8 @@ export function computePositionsNetApyBreakdown(positions) {
259
219
  /**
260
220
  * ROE contribution breakdown across a pre-filtered set of positions, relative to net asset value.
261
221
  */
262
- export function computePositionsRoeBreakdown(positions) {
263
- const totals = computePositionYieldTotals(positions);
222
+ export function computePositionsRoeBreakdown(positions, viewer) {
223
+ const totals = computePositionYieldTotals(positions, viewer);
264
224
  if (!totals)
265
225
  return undefined;
266
226
  if (totals.totalEquityUsd <= 0)
@@ -271,12 +231,12 @@ export function computePositionsRoeBreakdown(positions) {
271
231
  * APY breakdown for a single supplied vault position.
272
232
  * Does not require USD values because a single supply-side APY is value-independent.
273
233
  */
274
- export function computeSupplyApyBreakdown(vault) {
234
+ export function computeSupplyApyBreakdown(vault, viewer) {
275
235
  if (!vault)
276
236
  return undefined;
277
237
  const lending = getVaultSupplyApy(vault) ?? 0;
278
238
  const intrinsicApy = getIntrinsicApyContribution(lending, getVaultIntrinsicApy(vault));
279
- const rewards = getVaultRewardApr(vault, "LEND");
239
+ const rewards = getVaultRewardApr(vault, "LEND", viewer);
280
240
  return {
281
241
  lending,
282
242
  borrowing: 0,
@@ -366,17 +326,57 @@ function sumPositionUsd(positions, field) {
366
326
  }
367
327
  return total;
368
328
  }
369
- function computeAccountYieldTotals(account) {
329
+ function computeAccountYieldTotals(account, viewer) {
370
330
  function* positions() {
371
331
  for (const subAccount of Object.values(account.subAccounts ?? {})) {
372
332
  if (!subAccount)
373
333
  continue;
374
- yield* subAccount.positions;
334
+ yield* subAccountYieldPositions(subAccount);
375
335
  }
376
336
  }
377
- return computePositionYieldTotals(positions());
337
+ return computePositionYieldTotals(positions(), viewer);
378
338
  }
379
- function computePositionYieldTotals(positions) {
339
+ /**
340
+ * Lifts a sub-account's positions into `AccountYieldPosition` entries with
341
+ * borrow-side context populated. For each borrow position, the collaterals
342
+ * backing it (via `findCollateralPositionsForBorrow`) are recorded so the
343
+ * yield computation can pick up `BORROW_COLLATERAL` and `LOOPING` rewards.
344
+ */
345
+ function subAccountYieldPositions(subAccount) {
346
+ const out = [];
347
+ for (const p of subAccount.positions) {
348
+ if (p.borrowedValueUsd != null && p.borrowedValueUsd > 0) {
349
+ const collaterals = findCollateralPositionsForBorrow(subAccount, p);
350
+ const suppliedSum = sumPositionUsd(collaterals, "suppliedValueUsd");
351
+ const multiplier = computeCollateralMultiplier(suppliedSum, p.borrowedValueUsd);
352
+ const equityUsd = suppliedSum != null ? suppliedSum - p.borrowedValueUsd : undefined;
353
+ out.push({
354
+ vault: p.vault,
355
+ borrowedValueUsd: p.borrowedValueUsd,
356
+ borrowContext: {
357
+ collateralAddresses: collaterals.map((c) => getAddress(c.vaultAddress)),
358
+ multiplier,
359
+ equityUsd: equityUsd != null && equityUsd > 0 ? equityUsd : undefined,
360
+ },
361
+ });
362
+ // If the same vault also carries a supply leg (mixed position), emit
363
+ // it separately so supply rewards still accrue.
364
+ if (p.suppliedValueUsd != null && p.suppliedValueUsd > 0) {
365
+ out.push({
366
+ vault: p.vault,
367
+ suppliedValueUsd: p.suppliedValueUsd,
368
+ });
369
+ }
370
+ continue;
371
+ }
372
+ out.push({
373
+ vault: p.vault,
374
+ suppliedValueUsd: p.suppliedValueUsd,
375
+ });
376
+ }
377
+ return out;
378
+ }
379
+ function computePositionYieldTotals(positions, viewer) {
380
380
  let totalNetYield = 0;
381
381
  let totalLendingYield = 0;
382
382
  let totalBorrowingYield = 0;
@@ -395,7 +395,7 @@ function computePositionYieldTotals(positions) {
395
395
  const baseSupplyApy = getVaultSupplyApy(vault) ?? 0;
396
396
  const intrinsicSupplyApy = getIntrinsicApyContribution(baseSupplyApy, getVaultIntrinsicApy(vault));
397
397
  const supplyApy = baseSupplyApy + intrinsicSupplyApy;
398
- const supplyRewardApy = getVaultRewardApr(vault, "LEND");
398
+ const supplyRewardApy = getVaultRewardApr(vault, "LEND", viewer);
399
399
  totalNetYield += supplyUsd * (supplyApy + supplyRewardApy);
400
400
  totalLendingYield += supplyUsd * baseSupplyApy;
401
401
  totalRewardYield += supplyUsd * supplyRewardApy;
@@ -409,13 +409,32 @@ function computePositionYieldTotals(positions) {
409
409
  const baseBorrowApy = getVaultBorrowApy(vault) ?? 0;
410
410
  const intrinsicBorrowApy = getIntrinsicApyContribution(baseBorrowApy, getVaultIntrinsicApy(vault));
411
411
  const borrowApy = baseBorrowApy + intrinsicBorrowApy;
412
- const borrowRewardApy = getVaultRewardApr(vault, "BORROW");
412
+ let borrowRewardApy = getVaultRewardApr(vault, "BORROW", viewer);
413
+ const ctx = position.borrowContext;
414
+ if (ctx && ctx.collateralAddresses.length > 0) {
415
+ borrowRewardApy += getVaultRewardApr(vault, "BORROW_COLLATERAL", viewer, (c) => matchesCollateral(c, ctx.collateralAddresses));
416
+ }
413
417
  totalNetYield -= borrowUsd * (borrowApy - borrowRewardApy);
414
418
  totalBorrowingYield += borrowUsd * baseBorrowApy;
415
419
  totalRewardYield += borrowUsd * borrowRewardApy;
416
420
  totalIntrinsicYield -= borrowUsd * intrinsicBorrowApy;
417
421
  totalBorrowUsd += borrowUsd;
418
422
  hasUsdData = true;
423
+ // LOOPING rewards are paid per unit of equity (independent of
424
+ // leverage), so we add `equityUsd * loopingApr` to the reward
425
+ // totals when the position has a matching, eligible campaign.
426
+ if (ctx &&
427
+ ctx.collateralAddresses.length > 0 &&
428
+ ctx.multiplier != null &&
429
+ ctx.equityUsd != null &&
430
+ ctx.equityUsd > 0) {
431
+ const loopingApr = getVaultRewardApr(vault, "LOOPING", viewer, (c) => isLoopingEligible(c, ctx.collateralAddresses, ctx.multiplier));
432
+ if (loopingApr !== 0) {
433
+ const loopingYield = ctx.equityUsd * loopingApr;
434
+ totalNetYield += loopingYield;
435
+ totalRewardYield += loopingYield;
436
+ }
437
+ }
419
438
  }
420
439
  }
421
440
  if (!hasUsdData)
@@ -487,16 +506,47 @@ function getVaultIntrinsicApy(vault) {
487
506
  function getIntrinsicApyContribution(baseApy, intrinsicApy) {
488
507
  return (1 + baseApy / 100) * intrinsicApy;
489
508
  }
490
- /** Sum reward APRs for a given action as percentage points from vault campaigns. */
491
- function getVaultRewardApr(vault, action) {
492
- if (!vault.rewards?.campaigns)
509
+ /**
510
+ * Sum reward APRs (percentage points) for a given action from vault campaigns
511
+ * eligible to the supplied viewer.
512
+ *
513
+ * Uses `vault.rewards.getActiveCampaigns(viewer)` so whitelist/blacklist
514
+ * filtering is applied consistently with the rest of the SDK. An optional
515
+ * predicate further narrows the campaigns — used to gate
516
+ * `BORROW_COLLATERAL` on collateral match and `LOOPING` on multiplier range.
517
+ */
518
+ function getVaultRewardApr(vault, action, viewer, predicate) {
519
+ if (!vault.rewards?.getActiveCampaigns)
493
520
  return 0;
494
521
  let total = 0;
495
- for (const c of vault.rewards.campaigns) {
496
- if (c.action === action && typeof c.apr === "number") {
497
- total += c.apr * 100;
498
- }
522
+ for (const c of vault.rewards.getActiveCampaigns({ viewer })) {
523
+ if (c.action !== action)
524
+ continue;
525
+ if (typeof c.apr !== "number")
526
+ continue;
527
+ if (predicate && !predicate(c))
528
+ continue;
529
+ total += c.apr * 100;
499
530
  }
500
531
  return total;
501
532
  }
533
+ /** Predicate for `BORROW_COLLATERAL` campaigns: collateral address must match. */
534
+ function matchesCollateral(campaign, collateralAddresses) {
535
+ if (!campaign.collateralAddress)
536
+ return false;
537
+ return collateralAddresses.some((address) => isAddressEqual(address, campaign.collateralAddress));
538
+ }
539
+ /**
540
+ * Predicate for `LOOPING` campaigns: collateral match AND multiplier within
541
+ * the campaign's `[minMultiplier, maxMultiplier]` envelope (open ends count).
542
+ */
543
+ function isLoopingEligible(campaign, collateralAddresses, multiplier) {
544
+ if (!matchesCollateral(campaign, collateralAddresses))
545
+ return false;
546
+ if (campaign.minMultiplier != null && multiplier < campaign.minMultiplier)
547
+ return false;
548
+ if (campaign.maxMultiplier != null && multiplier > campaign.maxMultiplier)
549
+ return false;
550
+ return true;
551
+ }
502
552
  //# sourceMappingURL=accountComputations.js.map