curvance 5.0.0 → 5.1.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 (115) hide show
  1. package/README.md +22 -7
  2. package/dist/abis/OptimizerReader.json +43 -45
  3. package/dist/abis/ProtocolReader.json +279 -55
  4. package/dist/chains/arbitrum.js +3 -3
  5. package/dist/chains/arbitrum.js.map +1 -1
  6. package/dist/classes/Api.d.ts +2 -2
  7. package/dist/classes/Api.d.ts.map +1 -1
  8. package/dist/classes/Api.js +87 -14
  9. package/dist/classes/Api.js.map +1 -1
  10. package/dist/classes/BorrowableCToken.d.ts +9 -1
  11. package/dist/classes/BorrowableCToken.d.ts.map +1 -1
  12. package/dist/classes/BorrowableCToken.js +67 -12
  13. package/dist/classes/BorrowableCToken.js.map +1 -1
  14. package/dist/classes/CToken.d.ts +75 -18
  15. package/dist/classes/CToken.d.ts.map +1 -1
  16. package/dist/classes/CToken.js +638 -269
  17. package/dist/classes/CToken.js.map +1 -1
  18. package/dist/classes/Calldata.d.ts +2 -2
  19. package/dist/classes/Calldata.d.ts.map +1 -1
  20. package/dist/classes/Calldata.js +6 -2
  21. package/dist/classes/Calldata.js.map +1 -1
  22. package/dist/classes/DexAggregators/IDexAgg.d.ts +1 -1
  23. package/dist/classes/DexAggregators/Kuru.js +1 -1
  24. package/dist/classes/DexAggregators/Kuru.js.map +1 -1
  25. package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
  26. package/dist/classes/DexAggregators/KyberSwap.js +112 -61
  27. package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
  28. package/dist/classes/DexAggregators/MultiDexAgg.d.ts +2 -2
  29. package/dist/classes/DexAggregators/MultiDexAgg.d.ts.map +1 -1
  30. package/dist/classes/DexAggregators/MultiDexAgg.js +30 -18
  31. package/dist/classes/DexAggregators/MultiDexAgg.js.map +1 -1
  32. package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts +19 -0
  33. package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts.map +1 -0
  34. package/dist/classes/DexAggregators/UnsupportedDexAgg.js +29 -0
  35. package/dist/classes/DexAggregators/UnsupportedDexAgg.js.map +1 -0
  36. package/dist/classes/DexAggregators/helpers.d.ts +30 -0
  37. package/dist/classes/DexAggregators/helpers.d.ts.map +1 -0
  38. package/dist/classes/DexAggregators/helpers.js +57 -0
  39. package/dist/classes/DexAggregators/helpers.js.map +1 -0
  40. package/dist/classes/DexAggregators/index.d.ts +2 -0
  41. package/dist/classes/DexAggregators/index.d.ts.map +1 -1
  42. package/dist/classes/DexAggregators/index.js +1 -0
  43. package/dist/classes/DexAggregators/index.js.map +1 -1
  44. package/dist/classes/ERC20.d.ts +3 -3
  45. package/dist/classes/ERC20.d.ts.map +1 -1
  46. package/dist/classes/ERC20.js +26 -10
  47. package/dist/classes/ERC20.js.map +1 -1
  48. package/dist/classes/FormatConverter.d.ts.map +1 -1
  49. package/dist/classes/FormatConverter.js +4 -1
  50. package/dist/classes/FormatConverter.js.map +1 -1
  51. package/dist/classes/Market.d.ts +40 -6
  52. package/dist/classes/Market.d.ts.map +1 -1
  53. package/dist/classes/Market.js +333 -106
  54. package/dist/classes/Market.js.map +1 -1
  55. package/dist/classes/NativeToken.d.ts +2 -2
  56. package/dist/classes/NativeToken.d.ts.map +1 -1
  57. package/dist/classes/NativeToken.js +21 -7
  58. package/dist/classes/NativeToken.js.map +1 -1
  59. package/dist/classes/OptimizerReader.d.ts +15 -7
  60. package/dist/classes/OptimizerReader.d.ts.map +1 -1
  61. package/dist/classes/OptimizerReader.js +108 -30
  62. package/dist/classes/OptimizerReader.js.map +1 -1
  63. package/dist/classes/OracleManager.d.ts.map +1 -1
  64. package/dist/classes/OracleManager.js +11 -4
  65. package/dist/classes/OracleManager.js.map +1 -1
  66. package/dist/classes/PositionManager.d.ts.map +1 -1
  67. package/dist/classes/PositionManager.js +1 -12
  68. package/dist/classes/PositionManager.js.map +1 -1
  69. package/dist/classes/ProtocolReader.d.ts +30 -9
  70. package/dist/classes/ProtocolReader.d.ts.map +1 -1
  71. package/dist/classes/ProtocolReader.js +158 -138
  72. package/dist/classes/ProtocolReader.js.map +1 -1
  73. package/dist/classes/Zapper.d.ts +5 -5
  74. package/dist/classes/Zapper.d.ts.map +1 -1
  75. package/dist/classes/Zapper.js +21 -18
  76. package/dist/classes/Zapper.js.map +1 -1
  77. package/dist/contracts/monad-mainnet.json +1 -1
  78. package/dist/feePolicy.d.ts +2 -0
  79. package/dist/feePolicy.d.ts.map +1 -1
  80. package/dist/feePolicy.js +19 -0
  81. package/dist/feePolicy.js.map +1 -1
  82. package/dist/format/borrow.d.ts.map +1 -1
  83. package/dist/format/borrow.js +7 -1
  84. package/dist/format/borrow.js.map +1 -1
  85. package/dist/format/health.d.ts +3 -2
  86. package/dist/format/health.d.ts.map +1 -1
  87. package/dist/format/health.js +10 -9
  88. package/dist/format/health.js.map +1 -1
  89. package/dist/format/leverage.js +5 -4
  90. package/dist/format/leverage.js.map +1 -1
  91. package/dist/helpers.d.ts +14 -11
  92. package/dist/helpers.d.ts.map +1 -1
  93. package/dist/helpers.js +171 -52
  94. package/dist/helpers.js.map +1 -1
  95. package/dist/integrations/merkl.d.ts +2 -1
  96. package/dist/integrations/merkl.d.ts.map +1 -1
  97. package/dist/integrations/merkl.js +199 -4
  98. package/dist/integrations/merkl.js.map +1 -1
  99. package/dist/integrations/snapshot.d.ts +28 -24
  100. package/dist/integrations/snapshot.d.ts.map +1 -1
  101. package/dist/integrations/snapshot.js +106 -42
  102. package/dist/integrations/snapshot.js.map +1 -1
  103. package/dist/retry-provider.d.ts +6 -0
  104. package/dist/retry-provider.d.ts.map +1 -1
  105. package/dist/retry-provider.js +103 -11
  106. package/dist/retry-provider.js.map +1 -1
  107. package/dist/setup.d.ts +8 -6
  108. package/dist/setup.d.ts.map +1 -1
  109. package/dist/setup.js +125 -45
  110. package/dist/setup.js.map +1 -1
  111. package/dist/validation.d.ts +1 -1
  112. package/dist/validation.d.ts.map +1 -1
  113. package/dist/validation.js +13 -7
  114. package/dist/validation.js.map +1 -1
  115. package/package.json +6 -3
@@ -1,16 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Api = void 0;
4
- const setup_1 = require("../setup");
5
4
  const validation_1 = require("../validation");
5
+ function isRewardsResponse(value) {
6
+ if (typeof value !== "object" || value == null) {
7
+ return false;
8
+ }
9
+ const maybeRewards = value;
10
+ return Array.isArray(maybeRewards.milestones) && Array.isArray(maybeRewards.incentives);
11
+ }
12
+ function isFiniteNumber(value) {
13
+ return typeof value === "number" && Number.isFinite(value);
14
+ }
15
+ function isNonNegativeFiniteNumber(value) {
16
+ return isFiniteNumber(value) && value >= 0;
17
+ }
18
+ function isPositiveFiniteNumber(value) {
19
+ return isFiniteNumber(value) && value > 0;
20
+ }
21
+ function isNonEmptyString(value) {
22
+ return typeof value === "string" && value.trim().length > 0;
23
+ }
24
+ function isMilestoneResponse(value) {
25
+ if (typeof value !== "object" || value == null) {
26
+ return false;
27
+ }
28
+ const row = value;
29
+ return (isNonEmptyString(row.market) &&
30
+ isNonNegativeFiniteNumber(row.tvl) &&
31
+ isNonNegativeFiniteNumber(row.multiplier) &&
32
+ isNonNegativeFiniteNumber(row.fail_multiplier) &&
33
+ isNonEmptyString(row.chain_network) &&
34
+ isNonEmptyString(row.start_date) &&
35
+ isNonEmptyString(row.end_date) &&
36
+ isPositiveFiniteNumber(row.duration_in_days));
37
+ }
38
+ function isIncentiveResponse(value) {
39
+ if (typeof value !== "object" || value == null) {
40
+ return false;
41
+ }
42
+ const row = value;
43
+ return (isNonEmptyString(row.market) &&
44
+ isNonEmptyString(row.type) &&
45
+ isNonNegativeFiniteNumber(row.rate) &&
46
+ isNonEmptyString(row.description) &&
47
+ isNonEmptyString(row.image));
48
+ }
49
+ function normalizeMarketKey(market) {
50
+ return market.toLowerCase();
51
+ }
52
+ function isNativeYieldRow(value) {
53
+ if (typeof value !== "object" || value == null) {
54
+ return false;
55
+ }
56
+ const row = value;
57
+ return typeof row.symbol === "string" && isNonNegativeFiniteNumber(row.apy);
58
+ }
59
+ function resolveDefaultSetupConfig(context) {
60
+ const config = require("../setup").setup_config;
61
+ if (config == undefined) {
62
+ throw new Error(`Setup config is not configured for ${context}. ` +
63
+ `Pass config explicitly or initialize setupChain() first.`);
64
+ }
65
+ return config;
66
+ }
6
67
  class Api {
7
68
  url;
8
- constructor(config = setup_1.setup_config) {
9
- this.url = config.api_url;
69
+ constructor(config) {
70
+ this.url = (config ?? resolveDefaultSetupConfig("Api")).api_url;
10
71
  }
11
- static async fetchNativeYields(config = setup_1.setup_config) {
12
- const { api_url } = config;
13
- let chain = config.chain;
72
+ static async fetchNativeYields(config) {
73
+ const resolvedConfig = config ?? resolveDefaultSetupConfig("Api.fetchNativeYields");
74
+ const { api_url } = resolvedConfig;
75
+ let chain = resolvedConfig.chain;
14
76
  if (api_url == null) {
15
77
  console.error("You must have an API URL setup to fetch native yields.");
16
78
  return [];
@@ -21,13 +83,16 @@ class Api {
21
83
  if (['monad'].includes(chain)) {
22
84
  try {
23
85
  const res = await (0, validation_1.fetchWithTimeout)(`${api_url}/v1/${chain}/native_apy`);
86
+ if (!res.ok) {
87
+ throw new Error(`Native yields request failed: ${res.status} ${res.statusText}`);
88
+ }
24
89
  const yields = await res.json();
25
90
  // Add validation
26
91
  if (!yields || !yields.native_apy || !Array.isArray(yields.native_apy)) {
27
92
  console.error("Invalid API response structure for native yields");
28
93
  return [];
29
94
  }
30
- return yields.native_apy;
95
+ return yields.native_apy.filter(isNativeYieldRow);
31
96
  }
32
97
  catch (error) {
33
98
  console.error("Error fetching native yields:", error);
@@ -38,13 +103,21 @@ class Api {
38
103
  return [];
39
104
  }
40
105
  }
41
- static async getRewards(config = setup_1.setup_config) {
42
- const { chain, api_url } = config;
106
+ static async getRewards(config) {
107
+ const { chain, api_url } = config ?? resolveDefaultSetupConfig("Api.getRewards");
43
108
  let milestones = {};
44
109
  let incentives = {};
45
110
  let rewards;
46
111
  try {
47
- rewards = await (0, validation_1.fetchWithTimeout)(`${api_url}/v1/rewards/active/${chain}`).then(res => res.json());
112
+ const response = await (0, validation_1.fetchWithTimeout)(`${api_url}/v1/rewards/active/${chain}`);
113
+ if (!response.ok) {
114
+ throw new Error(`Rewards request failed: ${response.status} ${response.statusText}`);
115
+ }
116
+ const payload = await response.json();
117
+ if (!isRewardsResponse(payload)) {
118
+ throw new Error("Invalid rewards response structure");
119
+ }
120
+ rewards = payload;
48
121
  }
49
122
  catch (e) {
50
123
  console.error("Failed to fetch rewards data from API:", e);
@@ -53,11 +126,11 @@ class Api {
53
126
  incentives: []
54
127
  };
55
128
  }
56
- for (const milestone of rewards.milestones) {
57
- milestones[milestone.market] = milestone;
129
+ for (const milestone of rewards.milestones.filter(isMilestoneResponse)) {
130
+ milestones[normalizeMarketKey(milestone.market)] = milestone;
58
131
  }
59
- for (const incentive of rewards.incentives) {
60
- const market = incentive.market;
132
+ for (const incentive of rewards.incentives.filter(isIncentiveResponse)) {
133
+ const market = normalizeMarketKey(incentive.market);
61
134
  if (!(market in incentives)) {
62
135
  incentives[market] = [];
63
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/classes/Api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/classes/Api.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface IBorrowableCToken extends ICToken {
10
10
  repay(amount: bigint): Promise<TransactionResponse>;
11
11
  interestFee(): Promise<bigint>;
12
12
  marketOutstandingDebt(): Promise<bigint>;
13
+ assetsHeld(): Promise<bigint>;
13
14
  debtBalance(account: address): Promise<bigint>;
14
15
  IRM(): Promise<address>;
15
16
  }
@@ -19,7 +20,10 @@ export interface IDynamicIRM {
19
20
  borrowRate(assetsHeld: bigint, debt: bigint): Promise<bigint>;
20
21
  predictedBorrowRate(assetsHeld: bigint, debt: bigint): Promise<bigint>;
21
22
  supplyRate(assetsHeld: bigint, debt: bigint, interestFee: bigint): Promise<bigint>;
22
- adjustedBorrowRate(assetsHeld: bigint, debt: bigint): Promise<bigint>;
23
+ adjustedBorrowRate(assetsHeld: bigint, debt: bigint): Promise<[
24
+ ratePerSecond: bigint,
25
+ adjustmentRate: bigint
26
+ ]>;
23
27
  utilizationRate(assetsHeld: bigint, debt: bigint): Promise<bigint>;
24
28
  }
25
29
  export declare class BorrowableCToken extends CToken {
@@ -42,6 +46,8 @@ export declare class BorrowableCToken extends CToken {
42
46
  excess: bigint;
43
47
  deficit: bigint;
44
48
  isPossible: boolean;
49
+ loanSizeError: boolean;
50
+ oracleError: boolean;
45
51
  priceStale: boolean;
46
52
  }>;
47
53
  fetchDebt(inUSD: true): Promise<USD>;
@@ -60,7 +66,9 @@ export declare class BorrowableCToken extends CToken {
60
66
  fetchUtilizationRate(): Promise<bigint>;
61
67
  fetchSupplyRate(): Promise<bigint>;
62
68
  fetchLiquidity(): Promise<bigint>;
69
+ private checkRepayApproval;
63
70
  repay(amount: TokenInput): Promise<TransactionResponse>;
71
+ private getBufferedRepayTimestamp;
64
72
  fetchInterestFee(): Promise<bigint>;
65
73
  marketOutstandingDebt(): Promise<bigint>;
66
74
  debtBalance(account: address): Promise<bigint>;
@@ -1 +1 @@
1
- {"version":3,"file":"BorrowableCToken.d.ts","sourceRoot":"","sources":["../../src/classes/BorrowableCToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BorrowableCToken.d.ts","sourceRoot":"","sources":["../../src/classes/BorrowableCToken.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,12 @@ const BorrowableCToken_json_1 = __importDefault(require("../abis/BorrowableCToke
10
10
  const IDynamicIRM_json_1 = __importDefault(require("../abis/IDynamicIRM.json"));
11
11
  const decimal_js_1 = __importDefault(require("decimal.js"));
12
12
  const FormatConverter_1 = __importDefault(require("./FormatConverter"));
13
+ const REPAY_DEBT_BUFFER_TIME = 100n;
13
14
  class BorrowableCToken extends CToken_1.CToken {
14
15
  contract;
15
16
  constructor(provider, address, cache, market) {
16
17
  super(provider, address, cache, market);
17
- this.contract = (0, helpers_1.contractSetup)(provider, address, BorrowableCToken_json_1.default);
18
+ this.contract = (0, helpers_1.contractSetup)(this.provider, address, BorrowableCToken_json_1.default);
18
19
  }
19
20
  getWriteContract() {
20
21
  return (0, helpers_1.contractSetup)(this.requireSigner(), this.address, BorrowableCToken_json_1.default);
@@ -36,17 +37,43 @@ class BorrowableCToken extends CToken_1.CToken {
36
37
  }
37
38
  async getMaxBorrowable(inUSD = false) {
38
39
  const credit_usd = this.market.userRemainingCredit;
39
- return inUSD ? credit_usd : this.convertUsdToTokens(credit_usd, true);
40
+ const safeCreditUsd = credit_usd.isFinite() && credit_usd.greaterThan(0)
41
+ ? credit_usd
42
+ : new decimal_js_1.default(0);
43
+ const remainingDebtCap = this.cache.debtCap > this.cache.debt
44
+ ? this.cache.debtCap - this.cache.debt
45
+ : 0n;
46
+ const availableLiquidity = this.cache.liquidity > 0n ? this.cache.liquidity : 0n;
47
+ const tokenCapacity = remainingDebtCap < availableLiquidity
48
+ ? remainingDebtCap
49
+ : availableLiquidity;
50
+ const tokenCapacityUsd = this.convertTokensToUsd(tokenCapacity);
51
+ const cappedCreditUsd = decimal_js_1.default.min(safeCreditUsd, tokenCapacityUsd);
52
+ if (inUSD) {
53
+ return cappedCreditUsd.isFinite() && cappedCreditUsd.greaterThan(0)
54
+ ? cappedCreditUsd
55
+ : new decimal_js_1.default(0);
56
+ }
57
+ if (cappedCreditUsd.eq(0)) {
58
+ return new decimal_js_1.default(0);
59
+ }
60
+ const maxBorrowable = this.convertUsdToTokens(cappedCreditUsd, true);
61
+ return maxBorrowable.isFinite() && maxBorrowable.greaterThan(0)
62
+ ? maxBorrowable
63
+ : new decimal_js_1.default(0);
40
64
  }
41
65
  ;
42
66
  async depositAsCollateral(amount, zap = 'none', receiver = null) {
43
- if (this.cache.userDebt > 0) {
67
+ const signer = this.requireSigner();
68
+ const collateralReceiver = receiver ?? signer.address;
69
+ if (collateralReceiver.toLowerCase() === signer.address.toLowerCase() &&
70
+ this.readFreshUserCache("userDebt", "depositing as collateral") > 0n) {
44
71
  throw new Error("Cannot deposit as collateral when there is outstanding debt");
45
72
  }
46
73
  return super.depositAsCollateral(amount, zap, receiver);
47
74
  }
48
75
  async postCollateral(amount) {
49
- if (this.cache.userDebt > 0) {
76
+ if (this.readFreshUserCache("userDebt", "posting collateral") > 0n) {
50
77
  throw new Error("Cannot post collateral when there is outstanding debt");
51
78
  }
52
79
  return super.postCollateral(amount);
@@ -62,6 +89,9 @@ class BorrowableCToken extends CToken_1.CToken {
62
89
  async borrow(amount, receiver = null) {
63
90
  const signer = this.requireSigner();
64
91
  receiver ??= signer.address;
92
+ if (this.readFreshUserCache("userCollateral", "borrowing") > 0n) {
93
+ throw new Error("Cannot borrow from a token that is currently posted as collateral.");
94
+ }
65
95
  const assets = FormatConverter_1.default.decimalToBigInt(amount, this.asset.decimals);
66
96
  const calldata = this.getCallData("borrow", [assets, receiver]);
67
97
  return this.oracleRoute(calldata);
@@ -73,7 +103,9 @@ class BorrowableCToken extends CToken_1.CToken {
73
103
  async fetchUtilizationRateChange(assets, direction, inPercentage = true) {
74
104
  const assets_as_bn = FormatConverter_1.default.decimalToBigInt(assets, this.asset.decimals);
75
105
  const irm = await this.dynamicIRM();
76
- const assets_held = direction == 'add' ? this.cache.liquidity + assets_as_bn : this.cache.liquidity - assets_as_bn;
106
+ const assets_held = direction == 'add'
107
+ ? this.cache.liquidity + assets_as_bn
108
+ : assets_as_bn >= this.cache.liquidity ? 0n : this.cache.liquidity - assets_as_bn;
77
109
  const newRate = await irm.utilizationRate(assets_held, this.cache.debt);
78
110
  return inPercentage ? (0, decimal_js_1.default)(newRate).div(helpers_1.WAD) : newRate;
79
111
  }
@@ -83,7 +115,7 @@ class BorrowableCToken extends CToken_1.CToken {
83
115
  }
84
116
  async fetchBorrowRate() {
85
117
  const irm = await this.dynamicIRM();
86
- const assetsHeld = this.totalAssets;
118
+ const assetsHeld = await this.contract.assetsHeld();
87
119
  const debt = await this.contract.marketOutstandingDebt();
88
120
  const borrowRate = (await irm.borrowRate(assetsHeld, debt));
89
121
  this.cache.borrowRate = borrowRate;
@@ -91,7 +123,7 @@ class BorrowableCToken extends CToken_1.CToken {
91
123
  }
92
124
  async fetchPredictedBorrowRate() {
93
125
  const irm = await this.dynamicIRM();
94
- const assetsHeld = this.totalAssets;
126
+ const assetsHeld = await this.contract.assetsHeld();
95
127
  const debt = await this.contract.marketOutstandingDebt();
96
128
  const predictedBorrowRate = (await irm.predictedBorrowRate(assetsHeld, debt));
97
129
  this.cache.predictedBorrowRate = predictedBorrowRate;
@@ -99,7 +131,7 @@ class BorrowableCToken extends CToken_1.CToken {
99
131
  }
100
132
  async fetchUtilizationRate() {
101
133
  const irm = await this.dynamicIRM();
102
- const assetsHeld = this.totalAssets;
134
+ const assetsHeld = await this.contract.assetsHeld();
103
135
  const debt = await this.contract.marketOutstandingDebt();
104
136
  const utilizationRate = (await irm.utilizationRate(assetsHeld, debt));
105
137
  this.cache.utilizationRate = utilizationRate;
@@ -107,7 +139,7 @@ class BorrowableCToken extends CToken_1.CToken {
107
139
  }
108
140
  async fetchSupplyRate() {
109
141
  const irm = await this.dynamicIRM();
110
- const assetsHeld = this.totalAssets;
142
+ const assetsHeld = await this.contract.assetsHeld();
111
143
  const debt = await this.contract.marketOutstandingDebt();
112
144
  const fee = await this.fetchInterestFee();
113
145
  const supplyRate = (await irm.supplyRate(assetsHeld, debt, fee));
@@ -115,17 +147,40 @@ class BorrowableCToken extends CToken_1.CToken {
115
147
  return supplyRate;
116
148
  }
117
149
  async fetchLiquidity() {
118
- const assetsHeld = this.totalAssets;
119
- const debt = await this.contract.marketOutstandingDebt();
120
- const liquidity = assetsHeld - debt;
150
+ const liquidity = await this.contract.assetsHeld();
121
151
  this.cache.liquidity = liquidity;
122
152
  return liquidity;
123
153
  }
154
+ async checkRepayApproval(assets) {
155
+ const asset = this.getAsset(true);
156
+ const owner = this.getAccountOrThrow();
157
+ const allowance = await asset.allowance(owner, this.address);
158
+ if (allowance >= assets) {
159
+ return;
160
+ }
161
+ let tokenLabel = asset.symbol ?? asset.address;
162
+ if (asset.symbol == undefined) {
163
+ try {
164
+ tokenLabel = await asset.fetchSymbol();
165
+ }
166
+ catch {
167
+ tokenLabel = asset.address;
168
+ }
169
+ }
170
+ throw new Error(`Please approve the ${tokenLabel} token for ${this.symbol} repay`);
171
+ }
124
172
  async repay(amount) {
125
173
  const assets = FormatConverter_1.default.decimalToBigInt(amount, this.asset.decimals);
174
+ const repayAssets = assets === 0n
175
+ ? await this.fetchDebtBalanceAtTimestamp(this.getBufferedRepayTimestamp(), false)
176
+ : assets;
177
+ await this.checkRepayApproval(repayAssets);
126
178
  const calldata = this.getCallData("repay", [assets]);
127
179
  return this.oracleRoute(calldata);
128
180
  }
181
+ getBufferedRepayTimestamp() {
182
+ return BigInt(Math.floor(Date.now() / 1000)) + REPAY_DEBT_BUFFER_TIME;
183
+ }
129
184
  async fetchInterestFee() {
130
185
  return this.contract.interestFee();
131
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BorrowableCToken.js","sourceRoot":"","sources":["../../src/classes/BorrowableCToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BorrowableCToken.js","sourceRoot":"","sources":["../../src/classes/BorrowableCToken.ts"],"names":[],"mappings":"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"}
@@ -105,7 +105,7 @@ export declare const LEVERAGE: {
105
105
  * for that amplification (see leverageDown). Bump when aggregator fees
106
106
  * are enabled to keep dust prevention reliable. */
107
107
  readonly DELEVERAGE_OVERHEAD_BPS: 20n;
108
- /** BPS buffer on virtualConvertToShares for leverage + collateral cap.
108
+ /** BPS buffer on expected-share calculations for zap/leverage paths.
109
109
  * Covers exchange rate drift from interest accrual since cache load. */
110
110
  readonly SHARES_BUFFER_BPS: 2n;
111
111
  /** Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
@@ -127,6 +127,7 @@ export declare const LEVERAGE: {
127
127
  };
128
128
  export interface AccountSnapshot {
129
129
  asset: address;
130
+ underlying: address;
130
131
  decimals: bigint;
131
132
  isCollateral: boolean;
132
133
  collateralPosted: bigint;
@@ -137,6 +138,24 @@ export interface MulticallAction {
137
138
  isPriceUpdate: boolean;
138
139
  data: bytes;
139
140
  }
141
+ export interface LeverageUpPreview {
142
+ currentLeverage: Decimal;
143
+ effectiveCurrentLeverage: Decimal;
144
+ targetLeverage: Decimal;
145
+ borrowAmount: Decimal;
146
+ borrowAssets: bigint;
147
+ debtIncrease: Decimal;
148
+ debtIncreaseInAssets: Decimal;
149
+ newDebt: Decimal;
150
+ newDebtInAssets: Decimal;
151
+ collateralIncrease: Decimal;
152
+ collateralIncreaseInAssets: Decimal;
153
+ newCollateral: Decimal;
154
+ newCollateralInAssets: Decimal;
155
+ feeBps: bigint;
156
+ feeAssets: Decimal;
157
+ feeUsd: Decimal;
158
+ }
140
159
  export interface ZapToken {
141
160
  interface: NativeToken | ERC20;
142
161
  type: ZapperTypes;
@@ -172,6 +191,7 @@ export interface ICToken {
172
191
  marketCollateralPosted(): Promise<bigint>;
173
192
  collateralPosted(account: address): Promise<bigint>;
174
193
  redeemCollateral(shares: bigint, receiver: address, owner: address): Promise<TransactionResponse>;
194
+ redeemCollateralFor(shares: bigint, receiver: address, owner: address): Promise<TransactionResponse>;
175
195
  postCollateral(shares: bigint): Promise<TransactionResponse>;
176
196
  removeCollateral(shares: bigint): Promise<TransactionResponse>;
177
197
  symbol(): Promise<string>;
@@ -183,6 +203,7 @@ export interface ICToken {
183
203
  isDelegate(user: address, delegate: address): Promise<boolean>;
184
204
  setDelegateApproval(delegate: address, approved: boolean): Promise<TransactionResponse>;
185
205
  }
206
+ type UserCacheField = "userAssetBalance" | "userShareBalance" | "userUnderlyingBalance" | "userCollateral" | "userDebt" | "liquidationPrice";
186
207
  export declare class CToken extends Calldata<ICToken> {
187
208
  provider: curvance_read_provider;
188
209
  address: address;
@@ -198,15 +219,25 @@ export declare class CToken extends Calldata<ICToken> {
198
219
  nativeApy: Decimal;
199
220
  incentiveSupplyApy: Decimal;
200
221
  incentiveBorrowApy: Decimal;
222
+ private userCacheFreshness?;
201
223
  get signer(): curvance_signer | null;
202
224
  protected get account(): address | null;
203
225
  constructor(provider: curvance_read_provider, address: address, cache: StaticMarketToken & DynamicMarketToken & UserMarketToken, market: Market);
226
+ private getUserCacheFreshness;
227
+ markUserCacheFresh(fields?: UserCacheField[]): void;
228
+ invalidateUserCache(fields?: UserCacheField[]): void;
229
+ protected readFreshUserCache(field: UserCacheField, accessLabel: string): bigint;
204
230
  private get setup();
205
231
  private get currentChain();
206
232
  private get currentChainConfig();
207
233
  protected requireSigner(): curvance_signer;
208
234
  protected getAccountOrThrow(account?: address | null): `0x${string}`;
209
235
  protected getWriteContract(): Contract & ICToken;
236
+ private getZapType;
237
+ private isZapInstruction;
238
+ private getZapInputDecimals;
239
+ private getZapAssetAmount;
240
+ private assertVaultLeverageBorrowAssetSupported;
210
241
  get adapters(): [bigint, bigint];
211
242
  get borrowPaused(): boolean;
212
243
  get collateralizationPaused(): boolean;
@@ -229,6 +260,9 @@ export declare class CToken extends Calldata<ICToken> {
229
260
  get irmTargetUtilization(): Decimal;
230
261
  get interestFee(): Decimal;
231
262
  virtualConvertToAssets(shares: bigint): bigint;
263
+ formatAssets(assets: bigint): TokenInput;
264
+ formatShares(shares: bigint): TokenInput;
265
+ formatSharesAsAssets(shares: bigint): TokenInput;
232
266
  /**
233
267
  * Convert assets to shares using cached totalSupply/totalAssets.
234
268
  * @param bufferBps Optional downward buffer in BPS to account for
@@ -236,6 +270,7 @@ export declare class CToken extends Calldata<ICToken> {
236
270
  * Matches the buffer pattern in async convertToShares().
237
271
  */
238
272
  virtualConvertToShares(assets: bigint, bufferBps?: bigint): bigint;
273
+ private getMarketLeverageState;
239
274
  getLeverage(): Decimal | null;
240
275
  /** @returns Remaining Collateral cap */
241
276
  getRemainingCollateral(formatted: true): USD;
@@ -279,6 +314,7 @@ export declare class CToken extends Calldata<ICToken> {
279
314
  /** @returns User shares in USD (native balance amount) or token */
280
315
  getUserShareBalance(inUSD: true): USD;
281
316
  getUserShareBalance(inUSD: false): TokenInput;
317
+ getUserShareBalanceAssets(): TokenInput;
282
318
  /** @returns User assets in USD (this is the raw balance that the token exchanges too) or token */
283
319
  getUserAssetBalance(inUSD: true): USD;
284
320
  getUserAssetBalance(inUSD: false): TokenInput;
@@ -300,6 +336,8 @@ export declare class CToken extends Calldata<ICToken> {
300
336
  /** @returns User Collateral in USD or share token amount */
301
337
  getUserCollateral(inUSD: true): USD;
302
338
  getUserCollateral(inUSD: false): TokenInput;
339
+ getUserCollateralShares(): bigint;
340
+ getUserCollateralAssets(): TokenInput;
303
341
  fetchUserCollateral(): Promise<bigint>;
304
342
  fetchUserCollateral(formatted: true): Promise<TokenInput>;
305
343
  fetchUserCollateral(formatted: false): Promise<bigint>;
@@ -315,6 +353,7 @@ export declare class CToken extends Calldata<ICToken> {
315
353
  getUnderlyingVault(): ERC4626;
316
354
  getVaultAsset(asErc20: true): Promise<ERC20>;
317
355
  getVaultAsset(asErc20: false): Promise<address>;
356
+ getExpectedVaultShares(assets: bigint): Promise<bigint>;
318
357
  getAsset(asErc20: true): ERC20;
319
358
  getAsset(asErc20: false): address;
320
359
  getPrice(): USD;
@@ -381,7 +420,16 @@ export declare class CToken extends Calldata<ICToken> {
381
420
  postCollateral(amount: TokenInput): Promise<TransactionResponse>;
382
421
  getZapBalance(zap: ZapperInstructions): Promise<bigint>;
383
422
  ensureUnderlyingAmount(amount: TokenInput, zap: ZapperInstructions): Promise<TokenInput>;
384
- removeCollateral(amount: TokenInput, removeAll?: boolean): Promise<TransactionResponse>;
423
+ private getExecutionDebtBufferTime;
424
+ private resolveCollateralRemovalShares;
425
+ private executeCollateralRemoval;
426
+ maxRemovableCollateral(): Promise<TokenInput>;
427
+ maxRemovableCollateral(in_shares: true): Promise<bigint>;
428
+ maxRemovableCollateral(in_shares: false): Promise<TokenInput>;
429
+ maxRemovableCollateral(in_shares: true, bufferTime: bigint): Promise<bigint>;
430
+ maxRemovableCollateral(in_shares: false, bufferTime: bigint): Promise<TokenInput>;
431
+ removeCollateralExact(amount: TokenInput): Promise<TransactionResponse>;
432
+ removeMaxCollateral(): Promise<TransactionResponse>;
385
433
  convertTokenInputToShares(amount: TokenInput): bigint;
386
434
  convertTokenToToken(fromToken: CToken, toToken: CToken, amount: TokenInput, formatted: true): TokenInput;
387
435
  convertTokenToToken(fromToken: CToken, toToken: CToken, amount: TokenInput, formatted: true, shares: boolean): TokenInput;
@@ -408,6 +456,7 @@ export declare class CToken extends Calldata<ICToken> {
408
456
  excess: bigint;
409
457
  deficit: bigint;
410
458
  isPossible: boolean;
459
+ oracleError: boolean;
411
460
  priceStale: boolean;
412
461
  }>;
413
462
  /**
@@ -444,16 +493,13 @@ export declare class CToken extends Calldata<ICToken> {
444
493
  * residuals — we keep it for symmetry.
445
494
  */
446
495
  private _leverageUpSlippage;
447
- previewLeverageUp(newLeverage: Decimal, borrow: BorrowableCToken, depositAmount?: bigint): {
448
- borrowAmount: Decimal;
449
- newDebt: Decimal;
450
- newDebtInAssets: Decimal;
451
- newCollateral: Decimal;
452
- newCollateralInAssets: Decimal;
453
- feeBps: bigint;
454
- feeAssets: Decimal;
455
- feeUsd: Decimal;
456
- };
496
+ private assertSimpleLeverageSwapAssetsDiffer;
497
+ private assertLeverageBorrowCapacity;
498
+ private assertSelectedBorrowDebtCanDeleverage;
499
+ private computePostDepositNaturalLeverage;
500
+ private resolveLeverageUpPreview;
501
+ previewDepositAndLeverage(newLeverage: Decimal, borrow: BorrowableCToken, depositAmount: bigint, positionManagerType?: PositionManagerTypes): LeverageUpPreview;
502
+ previewLeverageUp(newLeverage: Decimal, borrow: BorrowableCToken, depositAmount?: bigint, positionManagerType?: PositionManagerTypes): LeverageUpPreview;
457
503
  previewLeverageDown(newLeverage: Decimal, currentLeverage: Decimal, borrow?: BorrowableCToken): {
458
504
  collateralAssetReduction: bigint;
459
505
  collateralAssetReductionUsd: Decimal;
@@ -467,7 +513,7 @@ export declare class CToken extends Calldata<ICToken> {
467
513
  feeUsd: Decimal;
468
514
  };
469
515
  leverageUp(borrow: BorrowableCToken, newLeverage: Decimal, type: PositionManagerTypes, slippage_?: Percentage, simulate?: boolean): Promise<any>;
470
- leverageDown(borrowToken: BorrowableCToken, currentLeverage: Decimal, newLeverage: Decimal, type: PositionManagerTypes, slippage_?: Percentage, simulate?: boolean): Promise<any>;
516
+ leverageDown(borrowToken: BorrowableCToken, currentLeverage: Decimal, newLeverage: Decimal, type: 'simple', slippage_?: Percentage, simulate?: boolean): Promise<any>;
471
517
  depositAndLeverage(depositAmount: TokenInput, borrow: BorrowableCToken, multiplier: Decimal, type: PositionManagerTypes, slippage_?: Percentage, simulate?: boolean): Promise<any>;
472
518
  simulateDeposit(amount: TokenInput, zap?: ZapperInstructions, receiver?: address | null): Promise<{
473
519
  success: boolean;
@@ -477,7 +523,7 @@ export declare class CToken extends Calldata<ICToken> {
477
523
  success: boolean;
478
524
  error?: string;
479
525
  }>;
480
- zap(assets: bigint, zap: ZapperInstructions, collateralize: boolean | undefined, default_calldata: bytes): Promise<{
526
+ zap(assets: bigint, zap: ZapperInstructions, collateralize: boolean | undefined, default_calldata: bytes, receiver?: address): Promise<{
481
527
  calldata: `0x${string}`;
482
528
  calldata_overrides: {};
483
529
  zapper: null;
@@ -494,6 +540,7 @@ export declare class CToken extends Calldata<ICToken> {
494
540
  multicall(calls: MulticallAction[]): Promise<TransactionResponse>;
495
541
  getSnapshot(account: address): Promise<{
496
542
  asset: `0x${string}`;
543
+ underlying: `0x${string}`;
497
544
  decimals: bigint;
498
545
  isCollateral: boolean;
499
546
  collateralPosted: bigint;
@@ -503,22 +550,32 @@ export declare class CToken extends Calldata<ICToken> {
503
550
  fetchConvertTokensToUsd(tokenAmount: bigint, asset?: boolean): Promise<Decimal>;
504
551
  convertUsdToTokens(usdAmount: USD, asset?: boolean, lower?: boolean): Decimal;
505
552
  convertAssetsToUsd(tokenAmount: bigint): USD;
553
+ convertSharesToUsdSync(tokenAmount: bigint): USD;
554
+ fetchConvertSharesToUsd(tokenAmount: bigint): Promise<USD>;
506
555
  convertSharesToUsd(tokenAmount: bigint): Promise<USD>;
507
- buildMultiCallAction(calldata: bytes): MulticallAction;
556
+ buildMultiCallAction(calldata: bytes, target?: address): MulticallAction;
557
+ private hasNonZeroNativeValueOverride;
558
+ private assertOracleMulticallSupportsValue;
508
559
  private _checkPositionManagerApproval;
509
560
  private _checkZapperApproval;
510
- private _checkErc20Approval;
511
- private _checkAssetApproval;
561
+ private _checkDelegateApproval;
562
+ private getDepositAssetApprovalTarget;
563
+ private getPositionManagerDepositApprovalTarget;
564
+ private resolveZapApprovalTarget;
565
+ private hasTokenApproval;
566
+ private _checkTokenApproval;
512
567
  private _checkDepositApprovals;
513
568
  oracleRoute(calldata: bytes, override?: {
514
569
  [key: string]: any;
515
- }): Promise<TransactionResponse>;
570
+ }, reloadAccount?: address | null): Promise<TransactionResponse>;
516
571
  simulateOracleRoute(calldata: bytes, override?: {
517
572
  [key: string]: any;
518
573
  }): Promise<{
519
574
  success: boolean;
520
575
  error?: string;
521
576
  }>;
577
+ private getRedstonePriceUpdateTokens;
522
578
  getPriceUpdates(): Promise<MulticallAction[]>;
523
579
  }
580
+ export {};
524
581
  //# sourceMappingURL=CToken.d.ts.map