curvance 4.1.1 → 5.0.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.
package/README.md CHANGED
@@ -61,7 +61,7 @@ setupChain(
61
61
 
62
62
  ```ts
63
63
  for (const market of markets) {
64
- console.log(`${market.name} | tvl: ${market.tvl} | debt: ${market.totalDebt}`);
64
+ console.log(`${market.name} | deposits: ${market.totalDeposits} | debt: ${market.totalDebt}`);
65
65
  for (const token of market.tokens) {
66
66
  console.log(` ${token.symbol} | price: ${token.getPrice()} | apy: ${token.getApy(true)}%`);
67
67
  }
@@ -90,7 +90,7 @@ for (const market of markets) {
90
90
  ```ts
91
91
  market.name // market name
92
92
  market.address // market contract address
93
- market.tvl // total value locked (USD, Decimal)
93
+ market.totalDeposits // total market deposits (USD, Decimal)
94
94
  market.totalDebt // total outstanding debt (USD, Decimal)
95
95
  market.totalCollateral // total posted collateral (USD, Decimal)
96
96
  market.cooldownLength // hold period between actions (20 min)
@@ -182,7 +182,7 @@ token.getUserDebt(inUSD) // outstanding debt (borrow tokens)
182
182
  ### Market totals & caps
183
183
 
184
184
  ```ts
185
- token.getTvl(inUSD)
185
+ token.getDeposits(inUSD) // underlying assets held (USD or bigint)
186
186
  token.getTotalCollateral(inUSD)
187
187
  token.getCollateralCap(inUSD) // remaining collateral capacity
188
188
  token.getDebtCap(inUSD) // remaining debt capacity
@@ -408,6 +408,29 @@ leverage.checkLeverageAmountBelowMinimum(input) // $10.10 minimum borrow
408
408
  leverage.checkBorrowExceedsLiquidity(borrowAmount, availableLiquidity)
409
409
  ```
410
410
 
411
+ ### Contract-level slippage amplification
412
+
413
+ ```ts
414
+ import { amplifyContractSlippage, toContractSwapSlippage } from "curvance"
415
+
416
+ // Used internally by CToken.leverageUp / leverageDown / depositAndLeverage to
417
+ // expand the contract-level slippage budget for the equity-fraction amplification
418
+ // that on-chain `checkSlippage` applies. Each deterministic per-swap loss
419
+ // (CURVANCE_FEE_BPS, full-deleverage overshoot) gets amplified by (L-1) in
420
+ // (L-1)-terms, so contractSlippage must absorb it without dipping into the
421
+ // user's raw `slippage` budget (reserved for variable DEX impact + drift).
422
+ amplifyContractSlippage(baseSlippageBps, leverageDelta, bpsToAmplify)
423
+
424
+ // Used by DEX aggregator adapters (KyberSwap etc.) in `quoteAction` to
425
+ // compute the WAD-BPS slippage tolerance for the `Swap.slippage` struct
426
+ // field consumed by on-chain `_swapSafe`. When the aggregator pre-deducts
427
+ // a currency_in fee, the expansion absorbs that fee so `_swapSafe` doesn't
428
+ // double-count it as swap slippage. Adapters whose fee model does NOT
429
+ // pre-deduct (e.g., out-of-band referrer paid from output) should call
430
+ // with `feeBps` omitted / 0n so no expansion applies.
431
+ toContractSwapSlippage(userSlippageBps, feeBps?)
432
+ ```
433
+
411
434
  ### Borrow math
412
435
 
413
436
  ```ts
@@ -621,6 +644,46 @@ NATIVE_ADDRESS // canonical native token address
621
644
  DEFAULT_SLIPPAGE_BPS // 100n (1%)
622
645
  ```
623
646
 
647
+ ### Leverage tuning (`LEVERAGE`)
648
+
649
+ Exposed tuning block used by leverage preview / mutation paths. Values are considered tunable across releases — SDK consumers pinning against specific values opt into the coupling.
650
+
651
+ ```ts
652
+ import { LEVERAGE } from 'curvance';
653
+
654
+ LEVERAGE.MAX_LEVERAGE_FACTOR // Decimal(0.98)
655
+ // Cap applied to the theoretical max leverage span. Reserves ~2% of the
656
+ // equity-fraction slippage budget for deterministic loss channels
657
+ // (CURVANCE_FEE_BPS, pool-fee variance, Redstone drift, share rounding)
658
+ // that would otherwise push post-op LTV above collRatio at the boundary.
659
+
660
+ LEVERAGE.LEVERAGE_UP_BUFFER_BPS // 10n
661
+ // Flat BPS buffer added to leverage-up slippage for share-rounding + fresh
662
+ // Redstone price drift between snapshot RPC and tx broadcast. NOT amplified
663
+ // by (L-1); the contract's equity-fraction denominator handles amplification.
664
+
665
+ LEVERAGE.DELEVERAGE_OVERHEAD_BPS // 20n
666
+ // BPS overhead added to full-deleverage swap sizing to absorb DEX impact
667
+ // and oracle drift without leaving dust debt. The contract returns any
668
+ // excess debt token to the user, so economic loss is zero — but
669
+ // `checkSlippage` treats the intentional overshoot as equity loss and
670
+ // amplifies it by (L-1), which the contract-slippage expansion compensates.
671
+
672
+ LEVERAGE.SHARES_BUFFER_BPS // 2n
673
+ // Downward BPS buffer on `virtualConvertToShares` and the inner
674
+ // `previewDeposit` step of `getVaultExpectedShares`. Covers exchange-rate
675
+ // drift from interest accrual since cache load so actual mint satisfies
676
+ // `shares >= expectedShares` at tx inclusion.
677
+
678
+ LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS // 30n
679
+ // Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
680
+ // leverage-up paths. Absorbs drift between the collateral vault's
681
+ // fundamental mint rate at tx time and the stored oracle price that
682
+ // `marketManager.statusOf` uses inside `checkSlippage`. Mirrors the
683
+ // `(L-1) × feeBps` amplification the simple branch uses for DEX-fee
684
+ // absorption, with a different K since vault paths have no DEX leg.
685
+ ```
686
+
624
687
  ## ❯ Dependencies
625
688
 
626
689
  | Package | Purpose |
@@ -11,6 +11,120 @@ import { PositionManager, PositionManagerTypes } from "./PositionManager";
11
11
  import { BorrowableCToken } from "./BorrowableCToken";
12
12
  import { NativeToken } from "./NativeToken";
13
13
  import { ERC4626 } from "./ERC4626";
14
+ /**
15
+ * Leverage operation buffers — centralized for tuning.
16
+ * Calibrated for fresh-state operation via getLeverageSnapshot under
17
+ * Curvance's permanent single-oracle architecture.
18
+ *
19
+ * Single-oracle architecture (permanent design)
20
+ * ---------------------------------------------
21
+ * Curvance uses single-adaptor oracle configs only (Redstone Core/Classic
22
+ * via BaseOracleAdaptor, which ignores the getLower flag — see line 78 of
23
+ * BaseOracleAdaptor.sol). Dual-feed mode was deprecated in favor of the
24
+ * price-guard system and orderflow MEV tech, and is not coming back.
25
+ * This means MarketManager._statusOf returns symmetric prices for
26
+ * collateral (queries with getLower=true) and debt (getLower=false), so
27
+ * there is no oracle bound asymmetry contributing to checkSlippage forced
28
+ * loss. Buffers below are sized accordingly — do not re-introduce
29
+ * (L-1)-scaled buffers to "future-proof" against dual-feed.
30
+ *
31
+ * MEV / slippage protection model
32
+ * -------------------------------
33
+ * The on-chain BasePositionManager.checkSlippage modifier is per its own
34
+ * docstring "primarily a sanity check rather than a security guarantee."
35
+ * Real MEV protection comes from SwapperLib._swapSafe, which oracle-prices
36
+ * the swap input and output and reverts if realized slippage exceeds the
37
+ * Swap.slippage parameter we pass.
38
+ *
39
+ * Because _swapSafe measures value loss against the FULL input (pre-fee),
40
+ * the deterministic KyberSwap fee would consume feeBps of the user's MEV
41
+ * tolerance if not compensated. `KyberSwap.quoteAction` (the DEX adapter)
42
+ * expands action.slippage by feeBps internally so the fee is absorbed and
43
+ * the user's chosen tolerance is preserved for actual MEV/routing variance.
44
+ * Callers pass raw user slippage — the adapter owns the expansion.
45
+ *
46
+ * Asymmetry between leverage up and deleverage
47
+ * --------------------------------------------
48
+ * Leverage UP: under single-oracle, the contract sees zero forced loss
49
+ * for a perfect swap. The only real sources of difference between
50
+ * snapshot-time prices and execution-time prices are: (a) wei-level share
51
+ * rounding, (b) Redstone update drift between the snapshot RPC and the
52
+ * tx broadcast block. Both are small constants in absolute terms, NOT
53
+ * leverage-scaled. A small flat buffer suffices.
54
+ *
55
+ * DELEVERAGE (full): forced loss comes from intentional swap overshoot
56
+ * (DELEVERAGE_OVERHEAD_BPS) which prevents dust debt by oversizing the
57
+ * collateral→debt swap. This is a real bps-level loss in absolute terms
58
+ * which becomes (L-1) × bps in equity-fraction terms — so the deleverage
59
+ * contract-slippage expansion DOES scale with leverage. Note: the contract
60
+ * returns excess debt token to the user's wallet (BasePositionManager
61
+ * onRedeem lines 482-493), so the economic loss from the overshoot is
62
+ * zero — only the contract's naive equity-loss check sees it as loss.
63
+ */
64
+ export declare const LEVERAGE: {
65
+ /** Max leverage cap: fraction of theoretical max the user can select.
66
+ * Prevents boundary singularity at exact max leverage — the contract's
67
+ * post-op `canBorrow` check re-evaluates LTV against fresh on-chain
68
+ * state, and several loss channels can tick final LTV above collRatio
69
+ * at the boundary:
70
+ * - Pool fees (variable 1bp–1% across pools; aggregator route choice
71
+ * is not knowable at cap-compute time, can differ per-trade even
72
+ * for the same market)
73
+ * - `CURVANCE_FEE_BPS` (deterministic, amplified by (L-1); at L=10
74
+ * eats ~36bps of equity-fraction)
75
+ * - Oracle drift between preview snapshot and Redstone payload at
76
+ * tx inclusion
77
+ * - Share rounding (wei-level)
78
+ *
79
+ * History: 0.99 → 0.995 when caching improved precision (pre-fee era).
80
+ * 0.995 → 0.98 when `CURVANCE_FEE_BPS = 4` landed and users on high-
81
+ * collRatio markets (shMON r=0.9 → 10x theoretical) hit
82
+ * `InsufficientCollateral` reverts at the boundary.
83
+ *
84
+ * Independent of `LEVERAGE_UP_BUFFER_BPS` and `DELEVERAGE_OVERHEAD_BPS`
85
+ * below — those protect in-op slippage at `_swapSafe`; this protects
86
+ * post-op position health at `canBorrow`. */
87
+ readonly MAX_LEVERAGE_FACTOR: Decimal;
88
+ /** Flat BPS buffer added to leverage-up DEX/swapSafe slippage tolerance.
89
+ * Under single-oracle, the only forced loss at the swap level comes from
90
+ * wei-level share rounding plus possible Redstone price drift between
91
+ * snapshot RPC and tx broadcast block. Both are small constants.
92
+ *
93
+ * Fee handling: KyberSwap.quoteAction expands action.slippage by feeBps
94
+ * internally so _swapSafe doesn't treat the fee as MEV. Each call site
95
+ * still computes contractSlippage (expanded by (L-1) × feeBps) so
96
+ * checkSlippage doesn't fire from equity-fraction amplification. This
97
+ * buffer covers rounding/drift only. */
98
+ readonly LEVERAGE_UP_BUFFER_BPS: 10n;
99
+ /** BPS overhead on full deleverage swap sizing — absolute terms.
100
+ * Oversizes the collateral→debt swap so DEX impact + drift doesn't
101
+ * underdeliver and leave dust debt. The contract returns any excess
102
+ * debt token to the user, so economic loss is zero — but the contract's
103
+ * checkSlippage modifier sees the overshoot as equity loss and amplifies
104
+ * it by (L-1)x. The deleverage contract slippage expansion compensates
105
+ * for that amplification (see leverageDown). Bump when aggregator fees
106
+ * are enabled to keep dust prevention reliable. */
107
+ readonly DELEVERAGE_OVERHEAD_BPS: 20n;
108
+ /** BPS buffer on virtualConvertToShares for leverage + collateral cap.
109
+ * Covers exchange rate drift from interest accrual since cache load. */
110
+ readonly SHARES_BUFFER_BPS: 2n;
111
+ /** Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
112
+ * leverage-up paths. Absorbs the drift between the collateral vault's
113
+ * fundamental mint rate at tx time and the stored oracle price that
114
+ * `marketManager.statusOf` uses inside `checkSlippage`. The vault-token
115
+ * oracle publishes discretely; the vault's exchange rate accrues
116
+ * continuously — so new shares are minted at `r_current` but valued at
117
+ * `r_oracle`, leaving a (L-1)-amplified equity-fraction gap that the
118
+ * simple path doesn't see in practice (vault-token markets default to
119
+ * the vault/native-vault PM and `leverageDown` drift goes the other
120
+ * direction as a gain). Empirically calibrated against the ~3% user
121
+ * slippage failure threshold on shMON/WMON native-vault leverage-up;
122
+ * refine via fork testing if drift distribution turns out wider. The
123
+ * constant is NOT "feed divergence" — shMON oracle IS derived from
124
+ * p_MON × r_shMON off-chain; the gap is between publish-time snapshot
125
+ * and tx-time state, not between two independent feeds. */
126
+ readonly LEVERAGE_UP_VAULT_DRIFT_BPS: 30n;
127
+ };
14
128
  export interface AccountSnapshot {
15
129
  asset: address;
16
130
  decimals: bigint;
@@ -219,10 +333,17 @@ export declare class CToken extends Calldata<ICToken> {
219
333
  getSupplyRate(): Percentage;
220
334
  getSupplyRate(asPercentage: false): bigint;
221
335
  getSupplyRate(asPercentage: true): Percentage;
222
- getTvl(inUSD: true): USD;
223
- getTvl(inUSD: false): bigint;
224
- fetchTvl(inUSD: true): Promise<USD>;
225
- fetchTvl(inUSD: false): Promise<bigint>;
336
+ /** @returns Deposits (underlying assets held by the cToken), in USD or raw
337
+ * asset bigint. Renamed from `getTvl` the underlying field must be
338
+ * `totalAssets`, not `totalSupply`, or the displayed deposits are
339
+ * understated by the exchange-rate drift factor whenever interest has
340
+ * accrued. That drift also broke the `liquidity ≤ deposits` invariant
341
+ * on live markets (e.g. loAZND/AUSD showed $29.97K liquidity vs $29.21K
342
+ * deposits pre-fix — impossible for a solvent ERC4626). */
343
+ getDeposits(inUSD: true): USD;
344
+ getDeposits(inUSD: false): bigint;
345
+ fetchDeposits(inUSD: true): Promise<USD>;
346
+ fetchDeposits(inUSD: false): Promise<bigint>;
226
347
  getTotalCollateral(inUSD: true): USD;
227
348
  getTotalCollateral(inUSD: false): bigint;
228
349
  fetchTotalCollateral(inUSD: true): Promise<USD>;
@@ -310,6 +431,17 @@ export declare class CToken extends Calldata<ICToken> {
310
431
  * equity-fraction denominator amplifies it by (L-1)x automatically.
311
432
  * The user's swap-level slippage (passed separately to _swapSafe) is
312
433
  * unaffected — that's the layer that bounds MEV extraction.
434
+ *
435
+ * Applied uniformly to simple AND vault/native-vault leverage-up paths.
436
+ * Simple path uses the buffer for share-rounding + Redstone drift as
437
+ * described above. Vault paths inherit the flat 10 bps through the
438
+ * shared `slippage` variable before the per-branch
439
+ * `amplifyContractSlippage(..., LEVERAGE_UP_VAULT_DRIFT_BPS)` expansion;
440
+ * the flat addition is not amplified (base term stays flat) and covers
441
+ * the same residual class (share-rounding, oracle drift) on vault paths
442
+ * too. Removing the buffer for vault would save a trivial amount of
443
+ * user slippage budget at the cost of a false-negative risk on the
444
+ * residuals — we keep it for symmetry.
313
445
  */
314
446
  private _leverageUpSlippage;
315
447
  previewLeverageUp(newLeverage: Decimal, borrow: BorrowableCToken, depositAmount?: bigint): {
@@ -1 +1 @@
1
- {"version":3,"file":"CToken.d.ts","sourceRoot":"","sources":["../../src/classes/CToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CToken.d.ts","sourceRoot":"","sources":["../../src/classes/CToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAsB,UAAU,EAA+K,MAAM,YAAY,CAAC;AACzO,OAAO,EAAgB,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEzH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,eAAO,MAAM,QAAQ;IACjB;;;;;;;;;;;;;;;;;;;;;kDAqB8C;;IAE9C;;;;;;;;;6CASyC;;IAEzC;;;;;;;wDAOoD;;IAEpD;6EACyE;;IAEzE;;;;;;;;;;;;;;gEAc4D;;CAEtD,CAAC;AAEX,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,KAAK,OAAO,CAAC;QAC7F,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,CAAC,CAAC;CACN;AAED,MAAM,MAAM,kBAAkB,GAAI,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,eAAe,GAAG;IACpF,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;CACxB,CAAA;AAED,MAAM,WAAW,OAAO;IACpB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACxD,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxF,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1E,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAE3F;AAED,qBAAa,MAAO,SAAQ,QAAQ,CAAC,OAAO,CAAC;IACzC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAM;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,OAAO,EAAE,OAAO,CAAS;IACzB,aAAa,EAAE,OAAO,CAAS;IAC/B,eAAe,EAAE,OAAO,CAAS;IACjC,SAAS,UAAc;IACvB,kBAAkB,UAAc;IAChC,kBAAkB,UAAc;IAChC,IAAI,MAAM,IAAI,eAAe,GAAG,IAAI,CAA+B;IACnE,SAAS,KAAK,OAAO,IAAI,OAAO,GAAG,IAAI,CAAgC;gBAGnE,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,eAAe,EAC/D,MAAM,EAAE,MAAM;IA8BlB,OAAO,KAAK,KAAK,GAAgC;IACjD,OAAO,KAAK,YAAY,GAA+B;IACvD,OAAO,KAAK,kBAAkB,GAAgD;IAC9E,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,iBAAiB,CAAC,OAAO,GAAE,OAAO,GAAG,IAAW;IAG1D,SAAS,CAAC,gBAAgB;IAI1B,IAAI,QAAQ,qBAAkC;IAC9C,IAAI,YAAY,YAAqC;IACrD,IAAI,uBAAuB,YAAgD;IAC3E,IAAI,UAAU,YAAmC;IACjD,IAAI,aAAa,WAA0B;IAC3C,IAAI,QAAQ,WAAkC;IAC9C,IAAI,MAAM,WAAgC;IAC1C,IAAI,IAAI,WAA8B;IACtC,IAAI,KAAK,iDAA8B;IACvC,IAAI,YAAY,YAAsC;IACtD,IAAI,YAAY,WAAsC;IACtD,IAAI,MAAM,YAAuC;IACjD,IAAI,WAAW,YAOd;IACD,IAAI,WAAW,YAA4C;IAC3D,IAAI,WAAW,WAAqC;IACpD,IAAI,WAAW,WAAqC;IACpD,IAAI,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAGjC;IACD,IAAI,aAAa,YAAyD;IAC1E,IAAI,UAAU,YAAsD;IACpE,IAAI,oBAAoB,YAAgE;IACxF,IAAI,WAAW,YAAuD;IAEtE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;OAKG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM;IAKtE,WAAW;IASX,wCAAwC;IACxC,sBAAsB,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG;IAC5C,sBAAsB,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM;IAMhD,kCAAkC;IAClC,gBAAgB,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG;IACtC,gBAAgB,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM;IAM1C,iDAAiD;IACjD,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACrC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKlC,4DAA4D;IAC5D,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKpC,4DAA4D;IAC5D,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKpC,2DAA2D;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACtC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKnC,4DAA4D;IAC5D,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKpC,0DAA0D;IAC1D,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACrC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKlC,0DAA0D;IAC1D,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IACrC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKlC,kDAAkD;IAClD,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IAC3C,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKxC,mDAAmD;IACnD,mBAAmB,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IAC5C,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKzC,iDAAiD;IACjD,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IAC1C,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKvC,wDAAwD;IACxD,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;IAC1C,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKvC,mEAAmE;IACnE,mBAAmB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IACrC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;IAK7C,kGAAkG;IAClG,mBAAmB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IACrC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;IAK7C,sDAAsD;IACtD,wBAAwB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAC1C,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;IAKlD,sDAAsD;IACtD,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAClC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAKvC,gDAAgD;IAChD,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAC5B,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKhC,iDAAiD;IACjD,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAC/B,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAKpC,4CAA4C;IAC5C,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IACzB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAK9B,4DAA4D;IAC5D,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IACnC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;IAK3C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IACtC,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IACzD,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtD,wDAAwD;IACxD,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAC7B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;IAKrC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU;IAO5C;;;OAGG;IACH,GAAG,IAAI,UAAU;IAIjB,kBAAkB;IAcZ,aAAa,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5C,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,KAAK;IAC9B,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO;IAajC,QAAQ,IAAI,GAAG;IACf,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO;IAUnE,MAAM,IAAI,UAAU;IACpB,MAAM,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM;IACnC,MAAM,CAAC,YAAY,EAAE,IAAI,GAAG,UAAU;IAMtC,kBAAkB;IAIlB,kBAAkB;IAIlB,aAAa,IAAI,UAAU;IAC3B,aAAa,CAAC,YAAY,EAAE,IAAI,GAAG,UAAU;IAC7C,aAAa,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM;IAK1C,aAAa,IAAI,UAAU;IAC3B,aAAa,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM;IAC1C,aAAa,CAAC,YAAY,EAAE,IAAI,GAAG,UAAU;IAM7C;;;;;;gEAM4D;IAC5D,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IAC7B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAM3B,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IACxC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,GAAG;IACpC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAMlC,oBAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IAC/C,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzD,kBAAkB,CAAC,IAAI,EAAE,oBAAoB;IAY7C,SAAS,CAAC,IAAI,EAAE,WAAW;IAWrB,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM;IAiBnE,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAgB3E,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,EAAE,IAAI,EAAE,WAAW;IAe9E,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,EAAE,IAAI,EAAE,WAAW;IAUjF,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,IAAI;IA6BzF,YAAY,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,UAAO;IAO7D;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,UAAU,GAAG,IAAW,EAAE,MAAM,GAAE,OAAO,GAAG,IAAW;IAMjF,OAAO,CAAC,MAAM,GAAE,UAAU,GAAG,IAAI,aAAO,EAAE,OAAO,EAAE,OAAO;IAM1D,aAAa;IAMb,iBAAiB;IAMjB,UAAU;IAMV,sBAAsB;IAItB,WAAW;IAMX,SAAS;IAMT,UAAU,CAAC,KAAK,UAAQ,EAAE,QAAQ,UAAQ,EAAE,KAAK,UAAO;IAcxD,gBAAgB;IAIhB,gBAAgB;IAIhB,eAAe;IAMf,sBAAsB;IAItB,SAAS,CAAC,OAAO,EAAE,OAAO;IAI1B,UAAU,CAAC,QAAQ,EAAE,OAAO;IAI5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU;IAK9C,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAE,OAAO,GAAG,IAAW,EAAE,KAAK,GAAE,OAAO,GAAG,IAAW;IAU/F,cAAc,CAAC,MAAM,EAAE,UAAU;IAiBjC,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CvD,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAI,OAAO,CAAC,UAAU,CAAC;IAiCzF,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,GAAE,OAAe;IAyBrE,yBAAyB,CAAC,MAAM,EAAE,UAAU;IAM5C,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,GAAG,UAAU;IACxG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU;IACzH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM;IACtH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM;IAkB/F,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW;IAKtD,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IACpC,aAAa,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/C,aAAa,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IACpD,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACnE,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IACxE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAC,IAAI,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAC,CAAC;IACnI,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAC,IAAI,GAAG,OAAO,CAAC;QAAC,cAAc,EAAE,UAAU,CAAC;QAAC,oBAAoB,EAAE,UAAU,CAAA;KAAC,CAAC;IA6BlJ,uEAAuE;IACjE,gBAAgB,CAAC,MAAM,GAAE,MAAM,GAAG,IAAW;IAkF7C,wBAAwB,CAAC,MAAM,EAAE,UAAU;;;;;;IASjD;;;;;;;;;OASG;YACW,oBAAoB;IAkBlC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,mBAAmB;IAK3B,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM;;;;;;;;;;IAiDxF,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,gBAAgB;;;;;;;;;;;;IAuDvF,UAAU,CACZ,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,oBAAoB,EAC1B,SAAS,GAAE,UAA0B,EACrC,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAAC,GAAG,CAAC;IA0GT,YAAY,CACd,WAAW,EAAE,gBAAgB,EAC7B,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,oBAAoB,EAC1B,SAAS,GAAE,UAA0B,EACrC,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAAC,GAAG,CAAC;IAiJT,kBAAkB,CACpB,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,oBAAoB,EAC1B,SAAS,GAAE,UAA0B,EACrC,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAAC,GAAG,CAAC;IAgHT,eAAe,CACjB,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,kBAA2B,EAChC,QAAQ,GAAE,OAAO,GAAG,IAAW,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B1C,2BAA2B,CAC7B,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,kBAA2B,EAChC,QAAQ,GAAE,OAAO,GAAG,IAAW,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B1C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,aAAa,qBAAQ,EAAE,gBAAgB,EAAG,KAAK;;;;;;;;;IAmD5F,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAE,kBAA2B,EAAE,QAAQ,GAAE,OAAO,GAAG,IAAW;IAsC7F,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,kBAA2B,EAAG,QAAQ,GAAE,OAAO,GAAG,IAAW;IAsCvG,MAAM,CAAC,MAAM,EAAE,UAAU;IAmBzB,YAAY,CAAC,MAAM,EAAE,MAAM;IAS3B,gBAAgB,CAAC,OAAO,GAAE,OAAO,GAAG,IAAW;IAI/C,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE;IAIlC,WAAW,CAAC,OAAO,EAAE,OAAO;;;;;;;IAWlC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,UAAO,GAAI,GAAG;IAWrD,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,UAAO;IAQ/D,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,UAAO,EAAE,KAAK,UAAQ;IAK9D,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG;IAStC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3D,oBAAoB,CAAC,QAAQ,EAAE,KAAK,GAK3B,eAAe;YAGV,6BAA6B;YAO7B,oBAAoB;YAapB,mBAAmB;YAUnB,mBAAmB;YAanB,sBAAsB;IAY9B,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAejG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAW1H,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAStD"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CToken = void 0;
6
+ exports.CToken = exports.LEVERAGE = void 0;
7
7
  const helpers_1 = require("../helpers");
8
8
  const ProtocolReader_1 = require("./ProtocolReader");
9
9
  const ERC20_1 = require("./ERC20");
@@ -69,12 +69,30 @@ const EXCLUDED_ZAP_SYMBOLS = new Set([
69
69
  * onRedeem lines 482-493), so the economic loss from the overshoot is
70
70
  * zero — only the contract's naive equity-loss check sees it as loss.
71
71
  */
72
- const LEVERAGE = {
72
+ exports.LEVERAGE = {
73
73
  /** Max leverage cap: fraction of theoretical max the user can select.
74
- * Prevents boundary singularity at exact max leverage. Independent of
75
- * the slippage buffers below protects post-op position health, not
76
- * in-op slippage. */
77
- MAX_LEVERAGE_FACTOR: (0, decimal_js_1.default)(0.995),
74
+ * Prevents boundary singularity at exact max leverage the contract's
75
+ * post-op `canBorrow` check re-evaluates LTV against fresh on-chain
76
+ * state, and several loss channels can tick final LTV above collRatio
77
+ * at the boundary:
78
+ * - Pool fees (variable 1bp–1% across pools; aggregator route choice
79
+ * is not knowable at cap-compute time, can differ per-trade even
80
+ * for the same market)
81
+ * - `CURVANCE_FEE_BPS` (deterministic, amplified by (L-1); at L=10
82
+ * eats ~36bps of equity-fraction)
83
+ * - Oracle drift between preview snapshot and Redstone payload at
84
+ * tx inclusion
85
+ * - Share rounding (wei-level)
86
+ *
87
+ * History: 0.99 → 0.995 when caching improved precision (pre-fee era).
88
+ * 0.995 → 0.98 when `CURVANCE_FEE_BPS = 4` landed and users on high-
89
+ * collRatio markets (shMON r=0.9 → 10x theoretical) hit
90
+ * `InsufficientCollateral` reverts at the boundary.
91
+ *
92
+ * Independent of `LEVERAGE_UP_BUFFER_BPS` and `DELEVERAGE_OVERHEAD_BPS`
93
+ * below — those protect in-op slippage at `_swapSafe`; this protects
94
+ * post-op position health at `canBorrow`. */
95
+ MAX_LEVERAGE_FACTOR: (0, decimal_js_1.default)(0.98),
78
96
  /** Flat BPS buffer added to leverage-up DEX/swapSafe slippage tolerance.
79
97
  * Under single-oracle, the only forced loss at the swap level comes from
80
98
  * wei-level share rounding plus possible Redstone price drift between
@@ -98,6 +116,22 @@ const LEVERAGE = {
98
116
  /** BPS buffer on virtualConvertToShares for leverage + collateral cap.
99
117
  * Covers exchange rate drift from interest accrual since cache load. */
100
118
  SHARES_BUFFER_BPS: 2n,
119
+ /** Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
120
+ * leverage-up paths. Absorbs the drift between the collateral vault's
121
+ * fundamental mint rate at tx time and the stored oracle price that
122
+ * `marketManager.statusOf` uses inside `checkSlippage`. The vault-token
123
+ * oracle publishes discretely; the vault's exchange rate accrues
124
+ * continuously — so new shares are minted at `r_current` but valued at
125
+ * `r_oracle`, leaving a (L-1)-amplified equity-fraction gap that the
126
+ * simple path doesn't see in practice (vault-token markets default to
127
+ * the vault/native-vault PM and `leverageDown` drift goes the other
128
+ * direction as a gain). Empirically calibrated against the ~3% user
129
+ * slippage failure threshold on shMON/WMON native-vault leverage-up;
130
+ * refine via fork testing if drift distribution turns out wider. The
131
+ * constant is NOT "feed divergence" — shMON oracle IS derived from
132
+ * p_MON × r_shMON off-chain; the gap is between publish-time snapshot
133
+ * and tx-time state, not between two independent feeds. */
134
+ LEVERAGE_UP_VAULT_DRIFT_BPS: 30n,
101
135
  };
102
136
  class CToken extends Calldata_1.Calldata {
103
137
  provider;
@@ -168,11 +202,12 @@ class CToken extends Calldata_1.Calldata {
168
202
  get exchangeRate() { return this.cache.exchangeRate; }
169
203
  get canZap() { return this.zapTypes.length > 0; }
170
204
  get maxLeverage() {
171
- // Cap max leverage slightly below theoretical max (1% of leverage factor)
172
- // to account for share rounding and fee losses that prevent reaching the exact max.
205
+ // Cap max leverage below theoretical max by applying MAX_LEVERAGE_FACTOR
206
+ // to the (theoretical - 1) span. See LEVERAGE.MAX_LEVERAGE_FACTOR docs
207
+ // for the loss channels this buffer absorbs and the tuning history.
173
208
  const theoretical = (0, decimal_js_1.default)(this.cache.maxLeverage).div(helpers_1.BPS);
174
209
  const factor = theoretical.sub(1);
175
- return (0, decimal_js_1.default)(1).add(factor.mul(LEVERAGE.MAX_LEVERAGE_FACTOR));
210
+ return (0, decimal_js_1.default)(1).add(factor.mul(exports.LEVERAGE.MAX_LEVERAGE_FACTOR));
176
211
  }
177
212
  get canLeverage() { return this.leverageTypes.length > 0; }
178
213
  get totalAssets() { return this.cache.totalAssets; }
@@ -330,14 +365,14 @@ class CToken extends Calldata_1.Calldata {
330
365
  // TODO: add underlying yield rate
331
366
  return asPercentage ? (0, decimal_js_1.default)(this.cache.supplyRate).div(helpers_1.WAD).mul(helpers_1.SECONDS_PER_YEAR) : this.cache.supplyRate;
332
367
  }
333
- getTvl(inUSD = true) {
334
- const tvl = this.cache.totalSupply;
335
- return inUSD ? this.convertTokensToUsd(tvl) : tvl;
368
+ getDeposits(inUSD = true) {
369
+ const deposits = this.cache.totalAssets;
370
+ return inUSD ? this.convertTokensToUsd(deposits) : deposits;
336
371
  }
337
- async fetchTvl(inUSD = true) {
338
- const tvl = await this.fetchTotalSupply();
339
- this.cache.totalSupply = tvl;
340
- return inUSD ? this.getTvl(true) : this.getTvl(false);
372
+ async fetchDeposits(inUSD = true) {
373
+ const deposits = await this.fetchTotalAssets();
374
+ this.cache.totalAssets = deposits;
375
+ return inUSD ? this.getDeposits(true) : this.getDeposits(false);
341
376
  }
342
377
  getTotalCollateral(inUSD = true) {
343
378
  const totalCollateral = this.cache.collateral;
@@ -752,11 +787,22 @@ class CToken extends Calldata_1.Calldata {
752
787
  * equity-fraction denominator amplifies it by (L-1)x automatically.
753
788
  * The user's swap-level slippage (passed separately to _swapSafe) is
754
789
  * unaffected — that's the layer that bounds MEV extraction.
790
+ *
791
+ * Applied uniformly to simple AND vault/native-vault leverage-up paths.
792
+ * Simple path uses the buffer for share-rounding + Redstone drift as
793
+ * described above. Vault paths inherit the flat 10 bps through the
794
+ * shared `slippage` variable before the per-branch
795
+ * `amplifyContractSlippage(..., LEVERAGE_UP_VAULT_DRIFT_BPS)` expansion;
796
+ * the flat addition is not amplified (base term stays flat) and covers
797
+ * the same residual class (share-rounding, oracle drift) on vault paths
798
+ * too. Removing the buffer for vault would save a trivial amount of
799
+ * user slippage budget at the cost of a false-negative risk on the
800
+ * residuals — we keep it for symmetry.
755
801
  */
756
802
  _leverageUpSlippage(slippage, leverage) {
757
803
  if (leverage.lte(1))
758
804
  return slippage;
759
- return slippage + LEVERAGE.LEVERAGE_UP_BUFFER_BPS;
805
+ return slippage + exports.LEVERAGE.LEVERAGE_UP_BUFFER_BPS;
760
806
  }
761
807
  previewLeverageUp(newLeverage, borrow, depositAmount) {
762
808
  const currentLeverage = this.getLeverage() ?? (0, decimal_js_1.default)(0);
@@ -876,17 +922,13 @@ class CToken extends Calldata_1.Calldata {
876
922
  // The fee also reduces swap output, which checkSlippage sees
877
923
  // as equity loss amplified by (L-1) — same pattern as
878
924
  // deleverage. Expand the contract-level tolerance to absorb it.
879
- const contractSlippage = feeBps > 0n
880
- ? slippage + BigInt(newLeverage.sub(1)
881
- .mul(Number(feeBps))
882
- .ceil()
883
- .toFixed(0))
884
- : slippage;
925
+ // See `amplifyContractSlippage` in helpers.ts for rationale.
926
+ const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, newLeverage.sub(1), feeBps);
885
927
  calldata = manager.getLeverageCalldata({
886
928
  borrowableCToken: borrow.address,
887
929
  borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
888
930
  cToken: this.address,
889
- expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), LEVERAGE.SHARES_BUFFER_BPS),
931
+ expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), exports.LEVERAGE.SHARES_BUFFER_BPS),
890
932
  swapAction: action,
891
933
  auxData: "0x",
892
934
  }, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
@@ -894,6 +936,12 @@ class CToken extends Calldata_1.Calldata {
894
936
  }
895
937
  case 'native-vault':
896
938
  case 'vault': {
939
+ // No DEX leg, so no fee-driven forced loss to absorb.
940
+ // The `(L-1)×K` expansion here covers the vault-token
941
+ // collateral drift between the vault's fundamental mint
942
+ // rate at tx time and the stored oracle price that
943
+ // `checkSlippage` reads. See LEVERAGE_UP_VAULT_DRIFT_BPS.
944
+ const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, newLeverage.sub(1), exports.LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS);
897
945
  calldata = manager.getLeverageCalldata({
898
946
  borrowableCToken: borrow.address,
899
947
  borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
@@ -901,7 +949,7 @@ class CToken extends Calldata_1.Calldata {
901
949
  expectedShares: await PositionManager_1.PositionManager.getVaultExpectedShares(this, borrow, borrowAmount),
902
950
  swapAction: PositionManager_1.PositionManager.emptySwapAction(),
903
951
  auxData: "0x",
904
- }, FormatConverter_1.default.bpsToBpsWad(slippage));
952
+ }, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
905
953
  break;
906
954
  }
907
955
  default:
@@ -975,7 +1023,7 @@ class CToken extends Calldata_1.Calldata {
975
1023
  // Total overhead = base overhead (DEX impact + drift) + fee bps.
976
1024
  // Additive approximation is accurate to sub-bp at typical
977
1025
  // fee+overhead magnitudes (< 100 bps combined).
978
- const overheadBps = LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps;
1026
+ const overheadBps = exports.LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps;
979
1027
  swapCollateral = debtInCollateral * (10000n + overheadBps) / 10000n;
980
1028
  const maxCollateral = this.virtualConvertToAssets(this.cache.userCollateral);
981
1029
  if (swapCollateral > maxCollateral) {
@@ -1003,18 +1051,16 @@ class CToken extends Calldata_1.Calldata {
1003
1051
  //
1004
1052
  // Full: (L-1) × (overhead + fee) — overshoot + fee
1005
1053
  // Partial: (ΔL) × fee — fee only, no overshoot
1054
+ //
1055
+ // See `amplifyContractSlippage` in helpers.ts for the shared
1056
+ // primitive + per-call-site asymmetry docs.
1006
1057
  const leverageDelta = isFullDeleverage
1007
1058
  ? currentLeverage.sub(1)
1008
1059
  : currentLeverage.sub(newLeverage);
1009
1060
  const forcedBps = isFullDeleverage
1010
- ? LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps
1061
+ ? exports.LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps
1011
1062
  : feeBps;
1012
- const contractSlippage = forcedBps > 0n
1013
- ? slippage + BigInt(leverageDelta
1014
- .mul(Number(forcedBps))
1015
- .ceil()
1016
- .toFixed(0))
1017
- : slippage;
1063
+ const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, leverageDelta, forcedBps);
1018
1064
  calldata = manager.getDeleverageCalldata({
1019
1065
  cToken: this.address,
1020
1066
  collateralAssets: swapCollateral,
@@ -1070,18 +1116,14 @@ class CToken extends Calldata_1.Calldata {
1070
1116
  const { action, quote } = await this.currentChainConfig.dexAgg.quoteAction(manager.address, borrow.asset.address, this.asset.address, borrowAssets, slippage, feeBps, feeReceiver);
1071
1117
  // Fee-aware slippage expansion for `_swapSafe` is handled by
1072
1118
  // KyberSwap.quoteAction. See KyberSwap.ts for rationale.
1073
- // Fee amplification: same pattern as leverageUp.
1074
- const contractSlippage = feeBps > 0n
1075
- ? slippage + BigInt(multiplier.sub(1)
1076
- .mul(Number(feeBps))
1077
- .ceil()
1078
- .toFixed(0))
1079
- : slippage;
1119
+ // Fee amplification: same pattern as leverageUp. See
1120
+ // `amplifyContractSlippage` in helpers.ts.
1121
+ const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, multiplier.sub(1), feeBps);
1080
1122
  calldata = manager.getDepositAndLeverageCalldata(FormatConverter_1.default.decimalToBigInt(depositAmount, this.asset.decimals), {
1081
1123
  borrowableCToken: borrow.address,
1082
1124
  borrowAssets: borrowAssets,
1083
1125
  cToken: this.address,
1084
- expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), LEVERAGE.SHARES_BUFFER_BPS),
1126
+ expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), exports.LEVERAGE.SHARES_BUFFER_BPS),
1085
1127
  swapAction: action,
1086
1128
  auxData: "0x",
1087
1129
  }, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
@@ -1089,6 +1131,12 @@ class CToken extends Calldata_1.Calldata {
1089
1131
  }
1090
1132
  case 'native-vault':
1091
1133
  case 'vault': {
1134
+ // Mirrors the leverageUp vault branch: absorb (L-1) ×
1135
+ // LEVERAGE_UP_VAULT_DRIFT_BPS for vault-token collateral
1136
+ // drift. Uses `multiplier.sub(1)` per the per-call-site
1137
+ // asymmetry documented in helpers.ts (depositAndLeverage
1138
+ // leverageDelta = multiplier - 1).
1139
+ const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, multiplier.sub(1), exports.LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS);
1092
1140
  calldata = manager.getDepositAndLeverageCalldata(FormatConverter_1.default.decimalToBigInt(depositAmount, this.asset.decimals), {
1093
1141
  borrowableCToken: borrow.address,
1094
1142
  borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
@@ -1096,7 +1144,7 @@ class CToken extends Calldata_1.Calldata {
1096
1144
  expectedShares: await PositionManager_1.PositionManager.getVaultExpectedShares(this, borrow, borrowAmount),
1097
1145
  swapAction: PositionManager_1.PositionManager.emptySwapAction(),
1098
1146
  auxData: "0x",
1099
- }, FormatConverter_1.default.bpsToBpsWad(slippage));
1147
+ }, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
1100
1148
  break;
1101
1149
  }
1102
1150
  default:
@@ -1270,7 +1318,7 @@ class CToken extends Calldata_1.Calldata {
1270
1318
  if (remainingCollateral == 0n)
1271
1319
  throw new Error(collateralCapError);
1272
1320
  if (remainingCollateral > 0n) {
1273
- const shares = this.virtualConvertToShares(depositAssets, LEVERAGE.SHARES_BUFFER_BPS);
1321
+ const shares = this.virtualConvertToShares(depositAssets, exports.LEVERAGE.SHARES_BUFFER_BPS);
1274
1322
  if (shares > remainingCollateral) {
1275
1323
  throw new Error(collateralCapError);
1276
1324
  }