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.
- package/README.md +22 -7
- package/dist/abis/OptimizerReader.json +43 -45
- package/dist/abis/ProtocolReader.json +279 -55
- package/dist/chains/arbitrum.js +3 -3
- package/dist/chains/arbitrum.js.map +1 -1
- package/dist/classes/Api.d.ts +2 -2
- package/dist/classes/Api.d.ts.map +1 -1
- package/dist/classes/Api.js +87 -14
- package/dist/classes/Api.js.map +1 -1
- package/dist/classes/BorrowableCToken.d.ts +9 -1
- package/dist/classes/BorrowableCToken.d.ts.map +1 -1
- package/dist/classes/BorrowableCToken.js +67 -12
- package/dist/classes/BorrowableCToken.js.map +1 -1
- package/dist/classes/CToken.d.ts +75 -18
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +638 -269
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/Calldata.d.ts +2 -2
- package/dist/classes/Calldata.d.ts.map +1 -1
- package/dist/classes/Calldata.js +6 -2
- package/dist/classes/Calldata.js.map +1 -1
- package/dist/classes/DexAggregators/IDexAgg.d.ts +1 -1
- package/dist/classes/DexAggregators/Kuru.js +1 -1
- package/dist/classes/DexAggregators/Kuru.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +112 -61
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts +2 -2
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.js +30 -18
- package/dist/classes/DexAggregators/MultiDexAgg.js.map +1 -1
- package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts +19 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts.map +1 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.js +29 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.js.map +1 -0
- package/dist/classes/DexAggregators/helpers.d.ts +30 -0
- package/dist/classes/DexAggregators/helpers.d.ts.map +1 -0
- package/dist/classes/DexAggregators/helpers.js +57 -0
- package/dist/classes/DexAggregators/helpers.js.map +1 -0
- package/dist/classes/DexAggregators/index.d.ts +2 -0
- package/dist/classes/DexAggregators/index.d.ts.map +1 -1
- package/dist/classes/DexAggregators/index.js +1 -0
- package/dist/classes/DexAggregators/index.js.map +1 -1
- package/dist/classes/ERC20.d.ts +3 -3
- package/dist/classes/ERC20.d.ts.map +1 -1
- package/dist/classes/ERC20.js +26 -10
- package/dist/classes/ERC20.js.map +1 -1
- package/dist/classes/FormatConverter.d.ts.map +1 -1
- package/dist/classes/FormatConverter.js +4 -1
- package/dist/classes/FormatConverter.js.map +1 -1
- package/dist/classes/Market.d.ts +40 -6
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +333 -106
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/NativeToken.d.ts +2 -2
- package/dist/classes/NativeToken.d.ts.map +1 -1
- package/dist/classes/NativeToken.js +21 -7
- package/dist/classes/NativeToken.js.map +1 -1
- package/dist/classes/OptimizerReader.d.ts +15 -7
- package/dist/classes/OptimizerReader.d.ts.map +1 -1
- package/dist/classes/OptimizerReader.js +108 -30
- package/dist/classes/OptimizerReader.js.map +1 -1
- package/dist/classes/OracleManager.d.ts.map +1 -1
- package/dist/classes/OracleManager.js +11 -4
- package/dist/classes/OracleManager.js.map +1 -1
- package/dist/classes/PositionManager.d.ts.map +1 -1
- package/dist/classes/PositionManager.js +1 -12
- package/dist/classes/PositionManager.js.map +1 -1
- package/dist/classes/ProtocolReader.d.ts +30 -9
- package/dist/classes/ProtocolReader.d.ts.map +1 -1
- package/dist/classes/ProtocolReader.js +158 -138
- package/dist/classes/ProtocolReader.js.map +1 -1
- package/dist/classes/Zapper.d.ts +5 -5
- package/dist/classes/Zapper.d.ts.map +1 -1
- package/dist/classes/Zapper.js +21 -18
- package/dist/classes/Zapper.js.map +1 -1
- package/dist/contracts/monad-mainnet.json +1 -1
- package/dist/feePolicy.d.ts +2 -0
- package/dist/feePolicy.d.ts.map +1 -1
- package/dist/feePolicy.js +19 -0
- package/dist/feePolicy.js.map +1 -1
- package/dist/format/borrow.d.ts.map +1 -1
- package/dist/format/borrow.js +7 -1
- package/dist/format/borrow.js.map +1 -1
- package/dist/format/health.d.ts +3 -2
- package/dist/format/health.d.ts.map +1 -1
- package/dist/format/health.js +10 -9
- package/dist/format/health.js.map +1 -1
- package/dist/format/leverage.js +5 -4
- package/dist/format/leverage.js.map +1 -1
- package/dist/helpers.d.ts +14 -11
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +171 -52
- package/dist/helpers.js.map +1 -1
- package/dist/integrations/merkl.d.ts +2 -1
- package/dist/integrations/merkl.d.ts.map +1 -1
- package/dist/integrations/merkl.js +199 -4
- package/dist/integrations/merkl.js.map +1 -1
- package/dist/integrations/snapshot.d.ts +28 -24
- package/dist/integrations/snapshot.d.ts.map +1 -1
- package/dist/integrations/snapshot.js +106 -42
- package/dist/integrations/snapshot.js.map +1 -1
- package/dist/retry-provider.d.ts +6 -0
- package/dist/retry-provider.d.ts.map +1 -1
- package/dist/retry-provider.js +103 -11
- package/dist/retry-provider.js.map +1 -1
- package/dist/setup.d.ts +8 -6
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +125 -45
- package/dist/setup.js.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +13 -7
- package/dist/validation.js.map +1 -1
- package/package.json +6 -3
package/dist/classes/Api.js
CHANGED
|
@@ -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
|
|
9
|
-
this.url = config.api_url;
|
|
69
|
+
constructor(config) {
|
|
70
|
+
this.url = (config ?? resolveDefaultSetupConfig("Api")).api_url;
|
|
10
71
|
}
|
|
11
|
-
static async fetchNativeYields(config
|
|
12
|
-
const
|
|
13
|
-
|
|
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
|
|
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
|
-
|
|
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
|
}
|
package/dist/classes/Api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/classes/Api.ts"],"names":[],"mappings":";;;
|
|
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<
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAwD,MAAM,YAAY,CAAC;AAG9F,OAAO,OAAO,MAAM,YAAY,CAAC;
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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'
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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":";;;;;;AAEA,qCAA+D;AAG/D,wCAA8F;AAC9F,0FAAkE;AAClE,gFAA+C;AAC/C,4DAAiC;AACjC,wEAAgD;
|
|
1
|
+
{"version":3,"file":"BorrowableCToken.js","sourceRoot":"","sources":["../../src/classes/BorrowableCToken.ts"],"names":[],"mappings":"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"}
|
package/dist/classes/CToken.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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:
|
|
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
|
|
511
|
-
private
|
|
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
|