curvance 4.1.2 → 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 +65 -10
  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 +210 -21
  15. package/dist/classes/CToken.d.ts.map +1 -1
  16. package/dist/classes/CToken.js +692 -284
  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 +46 -8
  52. package/dist/classes/Market.d.ts.map +1 -1
  53. package/dist/classes/Market.js +342 -111
  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 -3
  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,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.testnet = void 0;
4
- const KyberSwap_1 = require("../classes/DexAggregators/KyberSwap");
4
+ const UnsupportedDexAgg_1 = require("../classes/DexAggregators/UnsupportedDexAgg");
5
5
  const rpc_1 = require("./rpc");
6
6
  exports.testnet = {
7
7
  chainId: 421614,
8
- dexAgg: new KyberSwap_1.KyberSwap(),
8
+ dexAgg: new UnsupportedDexAgg_1.UnsupportedDexAgg("arb-sepolia"),
9
9
  rpc: (0, rpc_1.getChainRpcConfig)("arb-sepolia"),
10
10
  provider: (0, rpc_1.createChainPrimaryProvider)("arb-sepolia"),
11
11
  fallbackProviders: (0, rpc_1.createChainFallbackProviders)("arb-sepolia"),
12
12
  native_symbol: 'ETH',
13
13
  native_name: 'Ether',
14
- wrapped_native: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
14
+ wrapped_native: '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73',
15
15
  native_vaults: [],
16
16
  vaults: []
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"arbitrum.js","sourceRoot":"","sources":["../../src/chains/arbitrum.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAEhE,+BAAoG;AAEvF,QAAA,OAAO,GAAgB;IAChC,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,IAAI,qBAAS,EAAE;IACvB,GAAG,EAAE,IAAA,uBAAiB,EAAC,aAAa,CAAC;IACrC,QAAQ,EAAE,IAAA,gCAA0B,EAAC,aAAa,CAAC;IACnD,iBAAiB,EAAE,IAAA,kCAA4B,EAAC,aAAa,CAAC;IAC9D,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,4CAAuD;IACvE,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE;CACb,CAAA"}
1
+ {"version":3,"file":"arbitrum.js","sourceRoot":"","sources":["../../src/chains/arbitrum.ts"],"names":[],"mappings":";;;AACA,mFAAgF;AAEhF,+BAAoG;AAEvF,QAAA,OAAO,GAAgB;IAChC,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,IAAI,qCAAiB,CAAC,aAAa,CAAC;IAC5C,GAAG,EAAE,IAAA,uBAAiB,EAAC,aAAa,CAAC;IACrC,QAAQ,EAAE,IAAA,gCAA0B,EAAC,aAAa,CAAC;IACnD,iBAAiB,EAAE,IAAA,kCAA4B,EAAC,aAAa,CAAC;IAC9D,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,4CAAuD;IACvE,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE;CACb,CAAA"}
@@ -1,4 +1,4 @@
1
- import { type SetupConfigSnapshot } from "../setup";
1
+ import type { SetupConfigSnapshot } from "../setup";
2
2
  import { address } from "../types";
3
3
  export type IncentiveResponse = {
4
4
  market: address;
@@ -21,7 +21,7 @@ export type Milestones = {
21
21
  [key: string]: MilestoneResponse;
22
22
  };
23
23
  export type Incentives = {
24
- [key: address]: Array<IncentiveResponse>;
24
+ [key: string]: Array<IncentiveResponse>;
25
25
  };
26
26
  export declare class Api {
27
27
  private url;
@@ -1 +1 @@
1
- {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/classes/Api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAA;AACD,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;CAAE,CAAC;AAGtE,qBAAa,GAAG;IACZ,OAAO,CAAC,GAAG,CAAS;gBAED,MAAM,GAAE,mBAAkC;WAIhD,iBAAiB,CAAC,MAAM,GAAE,mBAAkC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;WAuCzG,UAAU,CAAC,MAAM,GAAE,mBAAkC;;;;CAmCrE"}
1
+ {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/classes/Api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAA;AACD,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;CAAE,CAAC;AA2FrE,qBAAa,GAAG;IACZ,OAAO,CAAC,GAAG,CAAS;gBAED,MAAM,CAAC,EAAE,mBAAmB;WAIlC,iBAAiB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;WA4C3F,UAAU,CAAC,MAAM,CAAC,EAAE,mBAAmB;;;;CA0CvD"}
@@ -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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"}