@carrot-protocol/clend-vaults-rpc 0.0.29 → 0.0.30-exec-fee-2-dev-1383e4d
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/dist/addresses.d.ts +1 -0
- package/dist/addresses.js +5 -0
- package/dist/addresses.js.map +1 -1
- package/dist/events.d.ts +35 -3
- package/dist/events.js +56 -4
- package/dist/events.js.map +1 -1
- package/dist/idl/clend_vaults.d.ts +863 -80
- package/dist/idl/clend_vaults.json +864 -81
- package/dist/math.d.ts +9 -0
- package/dist/math.js +39 -0
- package/dist/math.js.map +1 -1
- package/dist/program.d.ts +10 -3
- package/dist/program.js +62 -20
- package/dist/program.js.map +1 -1
- package/dist/rpc.d.ts +4 -4
- package/dist/rpc.js +47 -54
- package/dist/rpc.js.map +1 -1
- package/dist/swapper.js +3 -2
- package/dist/swapper.js.map +1 -1
- package/package.json +1 -1
package/dist/math.d.ts
CHANGED
|
@@ -36,3 +36,12 @@ export declare function usdToAmount(usdAmount: number, decimals: number, price:
|
|
|
36
36
|
*/
|
|
37
37
|
export declare function convertSharesToAsset(vaultNav: number, sharesAmountUi: number, assetDecimals: number, assetPrice: number): BN;
|
|
38
38
|
export declare function convertAssetToShares(vaultNav: number, assetAmount: BN, assetDecimals: number, sharesDecimals: number, assetPrice: number): BN;
|
|
39
|
+
/**
|
|
40
|
+
* Adjusts an amount upwards to compensate for potential swap slippage,
|
|
41
|
+
* assuming worst-case based on slippageBps.
|
|
42
|
+
*
|
|
43
|
+
* @param amountToAdjust - The amount to adjust (native units, BN), typically after cost adjustments.
|
|
44
|
+
* @param slippageBps - The maximum slippage tolerance in basis points (e.g., 100 for 1%).
|
|
45
|
+
* @returns Adjusted amount (native units, BN), slightly more than the input amount. Returns input amount if slippageBps is zero or invalid.
|
|
46
|
+
*/
|
|
47
|
+
export declare function adjustAmountForSlippage(amountToAdjust: BN, slippageBps: number): BN;
|
package/dist/math.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.calculateVaultNav = calculateVaultNav;
|
|
4
7
|
exports.usdEarned = usdEarned;
|
|
@@ -9,7 +12,10 @@ exports.amountToUsd = amountToUsd;
|
|
|
9
12
|
exports.usdToAmount = usdToAmount;
|
|
10
13
|
exports.convertSharesToAsset = convertSharesToAsset;
|
|
11
14
|
exports.convertAssetToShares = convertAssetToShares;
|
|
15
|
+
exports.adjustAmountForSlippage = adjustAmountForSlippage;
|
|
16
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
12
17
|
const utils_1 = require("./utils");
|
|
18
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
13
19
|
/**
|
|
14
20
|
* Computes the net asset value (NAV) per share based on vault equity and share supply.
|
|
15
21
|
*/
|
|
@@ -78,4 +84,37 @@ function convertAssetToShares(vaultNav, assetAmount, assetDecimals, sharesDecima
|
|
|
78
84
|
const assetUsd = amountToUsd(assetAmount, assetDecimals, assetPrice);
|
|
79
85
|
return usdToAmount(assetUsd, sharesDecimals, vaultNav);
|
|
80
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Adjusts an amount upwards to compensate for potential swap slippage,
|
|
89
|
+
* assuming worst-case based on slippageBps.
|
|
90
|
+
*
|
|
91
|
+
* @param amountToAdjust - The amount to adjust (native units, BN), typically after cost adjustments.
|
|
92
|
+
* @param slippageBps - The maximum slippage tolerance in basis points (e.g., 100 for 1%).
|
|
93
|
+
* @returns Adjusted amount (native units, BN), slightly more than the input amount. Returns input amount if slippageBps is zero or invalid.
|
|
94
|
+
*/
|
|
95
|
+
function adjustAmountForSlippage(amountToAdjust, slippageBps) {
|
|
96
|
+
if (slippageBps <= 0) {
|
|
97
|
+
return amountToAdjust; // No adjustment if no slippage tolerance
|
|
98
|
+
}
|
|
99
|
+
const S = new decimal_js_1.default(slippageBps).div(10000); // Slippage factor S as decimal
|
|
100
|
+
// Ensure S is less than 1 (100% slippage)
|
|
101
|
+
if (S.gte(1)) {
|
|
102
|
+
return amountToAdjust;
|
|
103
|
+
}
|
|
104
|
+
// Formula: B_actual ≈ B_ideal / (1 - S)
|
|
105
|
+
// We borrow slightly more, anticipating the swap output will be worth less by factor S.
|
|
106
|
+
const denominator = new decimal_js_1.default(1).sub(S);
|
|
107
|
+
// Should not happen with S < 1, but safety check
|
|
108
|
+
if (denominator.isZero() ||
|
|
109
|
+
denominator.isNaN() ||
|
|
110
|
+
!denominator.isFinite() ||
|
|
111
|
+
denominator.isNegative()) {
|
|
112
|
+
return amountToAdjust;
|
|
113
|
+
}
|
|
114
|
+
const amountToAdjustDecimal = new decimal_js_1.default(amountToAdjust.toString());
|
|
115
|
+
const adjustedAmountDecimal = amountToAdjustDecimal.div(denominator);
|
|
116
|
+
// Round up when increasing amount due to needing more input for slippage
|
|
117
|
+
const adjustedAmount = new anchor_1.BN(adjustedAmountDecimal.ceil().toFixed());
|
|
118
|
+
return adjustedAmount;
|
|
119
|
+
}
|
|
81
120
|
//# sourceMappingURL=math.js.map
|
package/dist/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts
CHANGED
|
@@ -15,14 +15,21 @@ export declare class ClendVaultsProgram {
|
|
|
15
15
|
updateAssetFlags(vault: web3.PublicKey, manager: web3.PublicKey, assetMint: web3.PublicKey, newFlags: BN): Promise<web3.TransactionInstruction>;
|
|
16
16
|
updateClendAccountFlags(vault: web3.PublicKey, manager: web3.PublicKey, clendAccount: web3.PublicKey, newFlags: BN): Promise<web3.TransactionInstruction>;
|
|
17
17
|
updateVaultFlags(vault: web3.PublicKey, manager: web3.PublicKey, newFlags: BN): Promise<web3.TransactionInstruction>;
|
|
18
|
-
|
|
18
|
+
userSession(vault: web3.PublicKey, manager: web3.PublicKey, user: web3.PublicKey, op: "issue" | "redeem", endSessionIxIndex: number): Promise<{
|
|
19
|
+
startIx: web3.TransactionInstruction;
|
|
20
|
+
endIx: web3.TransactionInstruction;
|
|
21
|
+
}>;
|
|
22
|
+
issue(vault: web3.PublicKey, sharesMint: web3.PublicKey, user: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, amount: BN, minAmountOut: BN, assetTokenProgram: web3.PublicKey, sharesTokenProgram: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<{
|
|
23
|
+
issueStartIxns: web3.TransactionInstruction[];
|
|
24
|
+
issueEndIxns: web3.TransactionInstruction[];
|
|
25
|
+
}>;
|
|
19
26
|
redeem(vault: web3.PublicKey, sharesMint: web3.PublicKey, user: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, amount: BN, minAmountOut: BN, assetTokenProgram: web3.PublicKey, sharesTokenProgram: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
20
27
|
clendAccountDeposit(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, assetMintTokenProgram: web3.PublicKey, amount: BN, vaultReserve: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
21
28
|
clendAccountWithdraw(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, assetMintTokenProgram: web3.PublicKey, amount: BN, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
22
29
|
clendAccountRepay(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, mintTokenProgram: web3.PublicKey, amount: BN, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
23
|
-
clendAccountBorrow(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, mintTokenProgram: web3.PublicKey, amount: BN, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
30
|
+
clendAccountBorrow(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, mintTokenProgram: web3.PublicKey, userSession: web3.PublicKey | null, amount: BN, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
24
31
|
clendAccountWithdrawEmissions(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, clendBank: web3.PublicKey, assetMint: web3.PublicKey, assetTokenProgram: web3.PublicKey): Promise<web3.TransactionInstruction>;
|
|
25
|
-
swap(vault: web3.PublicKey, vaultManager: web3.PublicKey, assetInMint: web3.PublicKey, assetOutMint: web3.PublicKey, vaultAssetInReserve: web3.PublicKey, vaultAssetOutReserve: web3.PublicKey, swapData: Buffer, remainingAccounts: web3.AccountMeta[]
|
|
32
|
+
swap(vault: web3.PublicKey, vaultManager: web3.PublicKey, assetInMint: web3.PublicKey, assetOutMint: web3.PublicKey, vaultAssetInOracle: web3.PublicKey, vaultAssetOutOracle: web3.PublicKey, vaultAssetInReserve: web3.PublicKey, vaultAssetOutReserve: web3.PublicKey, userSession: web3.PublicKey | null, swapData: Buffer, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
|
|
26
33
|
distributeFees(vault: web3.PublicKey, manager: web3.PublicKey, shares: web3.PublicKey, sharesDestinationOwner: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
|
|
27
34
|
updateSbOraclePrice(vault: web3.PublicKey, shares: web3.PublicKey, queue: web3.PublicKey, feed: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction>;
|
|
28
35
|
updateAssetOracle(vault: web3.PublicKey, manager: web3.PublicKey, assetMint: web3.PublicKey, oracleMaxAge: number | null, oracle: web3.PublicKey | null): Promise<web3.TransactionInstruction>;
|
package/dist/program.js
CHANGED
|
@@ -127,25 +127,47 @@ class ClendVaultsProgram {
|
|
|
127
127
|
.instruction();
|
|
128
128
|
return ix;
|
|
129
129
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
async userSession(vault, manager, user, op, endSessionIxIndex) {
|
|
131
|
+
const userSession = (0, addresses_1.getUserSessionPda)(vault, user);
|
|
132
|
+
const args = {
|
|
133
|
+
op: op === "issue" ? 0 : 1,
|
|
134
|
+
endSessionIxIndex,
|
|
135
|
+
};
|
|
136
|
+
const startIx = await this.program.methods
|
|
137
|
+
.userSessionStart(args)
|
|
138
|
+
.accountsStrict({
|
|
139
|
+
vault,
|
|
140
|
+
userSession,
|
|
141
|
+
user,
|
|
142
|
+
manager,
|
|
143
|
+
instructions: anchor_1.web3.SYSVAR_INSTRUCTIONS_PUBKEY,
|
|
144
|
+
systemProgram: anchor_1.web3.SystemProgram.programId,
|
|
145
|
+
})
|
|
146
|
+
.instruction();
|
|
147
|
+
const endIx = await this.program.methods
|
|
148
|
+
.userSessionEnd()
|
|
149
|
+
.accountsStrict({
|
|
150
|
+
vault,
|
|
151
|
+
userSession,
|
|
152
|
+
manager,
|
|
153
|
+
})
|
|
154
|
+
.instruction();
|
|
155
|
+
return { startIx, endIx };
|
|
156
|
+
}
|
|
133
157
|
async issue(vault, sharesMint, user, assetMint, assetOracle, amount, minAmountOut, assetTokenProgram, sharesTokenProgram, remainingAccounts) {
|
|
134
158
|
// Vault reserve (owner is vault PDA)
|
|
135
159
|
const vaultAssetReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetTokenProgram);
|
|
136
160
|
// User ATAs (owner is user)
|
|
137
161
|
const userAssetAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, user, true, assetTokenProgram);
|
|
138
162
|
const userSharesAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(sharesMint, user, true, sharesTokenProgram);
|
|
139
|
-
const
|
|
163
|
+
const userSession = (0, addresses_1.getUserSessionPda)(vault, user);
|
|
164
|
+
const issueStartIxns = [];
|
|
140
165
|
if (assetMint.equals(SOL_MINT)) {
|
|
141
166
|
// if the asset is sol, wrap it before issue
|
|
142
|
-
|
|
167
|
+
issueStartIxns.push(...createWSolTokenAccountIxns(user, amount));
|
|
143
168
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
ixns.push(createUserSharesIx);
|
|
147
|
-
const ix = await this.program.methods
|
|
148
|
-
.issue({ amount, minAmountOut })
|
|
169
|
+
const issueStartIx = await this.program.methods
|
|
170
|
+
.issueStart({ amount })
|
|
149
171
|
.accountsStrict({
|
|
150
172
|
vault,
|
|
151
173
|
shares: sharesMint,
|
|
@@ -153,21 +175,38 @@ class ClendVaultsProgram {
|
|
|
153
175
|
assetOracle,
|
|
154
176
|
vaultAssetReserve,
|
|
155
177
|
userAssetAccount,
|
|
156
|
-
|
|
178
|
+
userSession,
|
|
157
179
|
user,
|
|
158
180
|
clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
|
|
159
181
|
assetTokenProgram,
|
|
160
|
-
sharesTokenProgram,
|
|
161
182
|
})
|
|
162
183
|
.remainingAccounts(remainingAccounts)
|
|
163
184
|
.instruction();
|
|
164
|
-
|
|
165
|
-
|
|
185
|
+
issueStartIxns.push(issueStartIx);
|
|
186
|
+
// for shares received
|
|
187
|
+
const createUserSharesIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(user, userSharesAccount, user, sharesMint, sharesTokenProgram);
|
|
188
|
+
const issueEndIx = await this.program.methods
|
|
189
|
+
.issueEnd({ minAmountOut })
|
|
190
|
+
.accountsStrict({
|
|
191
|
+
vault,
|
|
192
|
+
shares: sharesMint,
|
|
193
|
+
userSession,
|
|
194
|
+
user,
|
|
195
|
+
userSharesAccount,
|
|
196
|
+
sharesTokenProgram,
|
|
197
|
+
})
|
|
198
|
+
.instruction();
|
|
199
|
+
const issueEndIxns = [
|
|
200
|
+
createUserSharesIx,
|
|
201
|
+
issueEndIx,
|
|
202
|
+
];
|
|
203
|
+
return { issueStartIxns, issueEndIxns };
|
|
166
204
|
}
|
|
167
205
|
async redeem(vault, sharesMint, user, assetMint, assetOracle, amount, minAmountOut, assetTokenProgram, sharesTokenProgram, remainingAccounts) {
|
|
168
206
|
const vaultAssetReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetTokenProgram);
|
|
169
207
|
const userAssetAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, user, true, assetTokenProgram);
|
|
170
208
|
const userSharesAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(sharesMint, user, true, sharesTokenProgram);
|
|
209
|
+
const userSession = (0, addresses_1.getUserSessionPda)(vault, user);
|
|
171
210
|
// Make sure the user asset ATA exists
|
|
172
211
|
const createUserAssetIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(user, userAssetAccount, user, assetMint, assetTokenProgram);
|
|
173
212
|
const ix = await this.program.methods
|
|
@@ -180,6 +219,7 @@ class ClendVaultsProgram {
|
|
|
180
219
|
vaultAssetReserve,
|
|
181
220
|
userAssetAccount,
|
|
182
221
|
userSharesAccount,
|
|
222
|
+
userSession,
|
|
183
223
|
user,
|
|
184
224
|
clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
|
|
185
225
|
assetTokenProgram,
|
|
@@ -194,9 +234,6 @@ class ClendVaultsProgram {
|
|
|
194
234
|
}
|
|
195
235
|
return ixns;
|
|
196
236
|
}
|
|
197
|
-
// -----------------
|
|
198
|
-
// Clend-account ops (builders; vault PDA signs via seeds)
|
|
199
|
-
// -----------------
|
|
200
237
|
async clendAccountDeposit(vault, vaultManager, clendGroup, clendAccount, assetMint, assetMintTokenProgram, amount, vaultReserve, remainingAccounts) {
|
|
201
238
|
const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
|
|
202
239
|
const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
|
|
@@ -264,7 +301,7 @@ class ClendVaultsProgram {
|
|
|
264
301
|
.instruction();
|
|
265
302
|
return [ix];
|
|
266
303
|
}
|
|
267
|
-
async clendAccountBorrow(vault, vaultManager, clendGroup, clendAccount, assetMint, mintTokenProgram, amount, remainingAccounts) {
|
|
304
|
+
async clendAccountBorrow(vault, vaultManager, clendGroup, clendAccount, assetMint, assetOracle, mintTokenProgram, userSession, amount, remainingAccounts) {
|
|
268
305
|
const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
|
|
269
306
|
const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
|
|
270
307
|
const bankLiquidityVaultAuthority = (0, clend_rpc_1.getBankLiquidityVaultAuthorityPda)(bank);
|
|
@@ -274,12 +311,14 @@ class ClendVaultsProgram {
|
|
|
274
311
|
.accountsStrict({
|
|
275
312
|
vault,
|
|
276
313
|
assetMint,
|
|
314
|
+
assetOracle,
|
|
277
315
|
clendGroup,
|
|
278
316
|
clendAccount,
|
|
279
317
|
bank,
|
|
280
318
|
destinationTokenAccount,
|
|
281
319
|
bankLiquidityVaultAuthority,
|
|
282
320
|
bankLiquidityVault,
|
|
321
|
+
userSession,
|
|
283
322
|
manager: vaultManager,
|
|
284
323
|
tokenProgram: mintTokenProgram,
|
|
285
324
|
clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
|
|
@@ -310,17 +349,20 @@ class ClendVaultsProgram {
|
|
|
310
349
|
.instruction();
|
|
311
350
|
return ix;
|
|
312
351
|
}
|
|
313
|
-
async swap(vault, vaultManager, assetInMint, assetOutMint, vaultAssetInReserve, vaultAssetOutReserve, swapData, remainingAccounts
|
|
352
|
+
async swap(vault, vaultManager, assetInMint, assetOutMint, vaultAssetInOracle, vaultAssetOutOracle, vaultAssetInReserve, vaultAssetOutReserve, userSession, swapData, remainingAccounts) {
|
|
314
353
|
const ix = await this.program.methods
|
|
315
354
|
.swap({ swapData: Buffer.from(swapData) })
|
|
316
355
|
.accountsStrict({
|
|
317
356
|
vault,
|
|
318
357
|
assetInMint,
|
|
319
358
|
assetOutMint,
|
|
359
|
+
vaultAssetInOracle,
|
|
360
|
+
vaultAssetOutOracle,
|
|
320
361
|
vaultAssetInReserve,
|
|
321
362
|
vaultAssetOutReserve,
|
|
363
|
+
userSession,
|
|
322
364
|
manager: vaultManager,
|
|
323
|
-
|
|
365
|
+
systemProgram: anchor_1.web3.SystemProgram.programId,
|
|
324
366
|
})
|
|
325
367
|
.remainingAccounts(remainingAccounts)
|
|
326
368
|
.instruction();
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
CHANGED
|
@@ -33,10 +33,10 @@ export declare class ClendVaultsClient {
|
|
|
33
33
|
updateAssetFlags(vault: web3.PublicKey, assetMint: web3.PublicKey, newFlags: BN): Promise<string>;
|
|
34
34
|
updateClendAccountFlags(vault: web3.PublicKey, clendAccount: web3.PublicKey, newFlags: BN): Promise<string>;
|
|
35
35
|
updateVaultFlags(vault: web3.PublicKey, newFlags: BN): Promise<string>;
|
|
36
|
-
issue(vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN): Promise<string>;
|
|
37
|
-
prepareIssueIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN): Promise<web3.TransactionInstruction[]>;
|
|
38
|
-
redeem(vault: web3.PublicKey, assetMint: web3.PublicKey, sharesAmount: BN, minAmountOut: BN): Promise<string>;
|
|
39
|
-
prepareRedeemIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN): Promise<web3.TransactionInstruction[]>;
|
|
36
|
+
issue(vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN, vaultManager?: web3.Signer): Promise<string>;
|
|
37
|
+
prepareIssueIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN, additionalIxnCount: number): Promise<web3.TransactionInstruction[]>;
|
|
38
|
+
redeem(vault: web3.PublicKey, assetMint: web3.PublicKey, sharesAmount: BN, minAmountOut: BN, vaultManager?: web3.Signer): Promise<string>;
|
|
39
|
+
prepareRedeemIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN, minAmountOut: BN, additionalIxnCount: number): Promise<web3.TransactionInstruction[]>;
|
|
40
40
|
clendAccountDeposit(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
|
|
41
41
|
clendAccountWithdraw(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
|
|
42
42
|
clendAccountRepay(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN | number): Promise<string>;
|
package/dist/rpc.js
CHANGED
|
@@ -128,29 +128,52 @@ class ClendVaultsClient {
|
|
|
128
128
|
const txSig = await this.send([ix]);
|
|
129
129
|
return txSig;
|
|
130
130
|
}
|
|
131
|
-
async issue(vault, assetMint, amount, minAmountOut) {
|
|
132
|
-
const ixns = await this.prepareIssueIxns(this.address(), vault, assetMint, amount, minAmountOut);
|
|
133
|
-
const
|
|
131
|
+
async issue(vault, assetMint, amount, minAmountOut, vaultManager) {
|
|
132
|
+
const ixns = await this.prepareIssueIxns(this.address(), vault, assetMint, amount, minAmountOut, 2);
|
|
133
|
+
const additionalSigners = vaultManager ? [vaultManager] : [];
|
|
134
|
+
const txSig = await this.send(ixns, additionalSigners);
|
|
134
135
|
return txSig;
|
|
135
136
|
}
|
|
136
|
-
async prepareIssueIxns(user, vault, assetMint, amount, minAmountOut) {
|
|
137
|
+
async prepareIssueIxns(user, vault, assetMint, amount, minAmountOut, additionalIxnCount) {
|
|
137
138
|
// get vault and asset data
|
|
138
139
|
const vaultState = await this.getVault(vault);
|
|
139
140
|
const assetData = vaultState.assets.find((a) => a.mint.address.equals(assetMint));
|
|
140
141
|
const remainingAccounts = await buildEquityRemainingAccounts(vaultState, this.clendClient);
|
|
141
|
-
const
|
|
142
|
+
const { issueStartIxns, issueEndIxns } = await this.program.issue(vault, vaultState.sharesMint, user, assetMint, assetData.oracle.address, amount, minAmountOut, assetData.mint.tokenProgram, spl_token_1.TOKEN_2022_PROGRAM_ID, remainingAccounts);
|
|
143
|
+
const endSessionIxIndex = additionalIxnCount +
|
|
144
|
+
1 + // userSessionStartIx
|
|
145
|
+
issueStartIxns.length +
|
|
146
|
+
issueEndIxns.length;
|
|
147
|
+
const { startIx: userSessionStartIx, endIx: userSessionEndIx } = await this.program.userSession(vault, vaultState.manager, user, "issue", endSessionIxIndex);
|
|
148
|
+
const ixns = [
|
|
149
|
+
userSessionStartIx,
|
|
150
|
+
...issueStartIxns,
|
|
151
|
+
...issueEndIxns,
|
|
152
|
+
userSessionEndIx,
|
|
153
|
+
];
|
|
142
154
|
return ixns;
|
|
143
155
|
}
|
|
144
|
-
async redeem(vault, assetMint, sharesAmount, minAmountOut) {
|
|
145
|
-
const ixns = await this.prepareRedeemIxns(this.address(), vault, assetMint, sharesAmount, minAmountOut);
|
|
146
|
-
const
|
|
156
|
+
async redeem(vault, assetMint, sharesAmount, minAmountOut, vaultManager) {
|
|
157
|
+
const ixns = await this.prepareRedeemIxns(this.address(), vault, assetMint, sharesAmount, minAmountOut, 2);
|
|
158
|
+
const additionalSigners = vaultManager ? [vaultManager] : [];
|
|
159
|
+
const txSig = await this.send(ixns, additionalSigners);
|
|
147
160
|
return txSig;
|
|
148
161
|
}
|
|
149
|
-
async prepareRedeemIxns(user, vault, assetMint, amount, minAmountOut) {
|
|
162
|
+
async prepareRedeemIxns(user, vault, assetMint, amount, minAmountOut, additionalIxnCount) {
|
|
150
163
|
const vaultState = await this.getVault(vault);
|
|
151
164
|
const assetData = vaultState.assets.find((a) => a.mint.address.equals(assetMint));
|
|
152
165
|
const remainingAccounts = await buildEquityRemainingAccounts(vaultState, this.clendClient);
|
|
153
|
-
|
|
166
|
+
const redeemIxns = await this.program.redeem(vault, vaultState.sharesMint, user, assetMint, assetData.oracle.address, amount, minAmountOut, assetData.mint.tokenProgram, spl_token_1.TOKEN_2022_PROGRAM_ID, remainingAccounts);
|
|
167
|
+
const endSessionIxIndex = additionalIxnCount +
|
|
168
|
+
1 + // userSessionStartIx
|
|
169
|
+
redeemIxns.length;
|
|
170
|
+
const { startIx: userSessionStartIx, endIx: userSessionEndIx } = await this.program.userSession(vault, vaultState.manager, user, "redeem", endSessionIxIndex);
|
|
171
|
+
const ixns = [
|
|
172
|
+
userSessionStartIx,
|
|
173
|
+
...redeemIxns,
|
|
174
|
+
userSessionEndIx,
|
|
175
|
+
];
|
|
176
|
+
return ixns;
|
|
154
177
|
}
|
|
155
178
|
async clendAccountDeposit(vault, clendAccount, assetMint, amount) {
|
|
156
179
|
// fetch clend account data
|
|
@@ -219,7 +242,7 @@ class ClendVaultsClient {
|
|
|
219
242
|
}
|
|
220
243
|
const activeBankData = await this.clendClient.getBanks(clendAccountActiveBanks);
|
|
221
244
|
const ra = (0, clend_rpc_1.getClendAccountRemainingAccounts)(activeBankData);
|
|
222
|
-
const ixns = await this.program.clendAccountBorrow(vault, this.address(), clendAccountData.group, clendAccount, assetMint, assetData.mint.tokenProgram, amount, ra);
|
|
245
|
+
const ixns = await this.program.clendAccountBorrow(vault, this.address(), clendAccountData.group, clendAccount, assetMint, assetData.oracle.address, assetData.mint.tokenProgram, null, amount, ra);
|
|
223
246
|
const txSig = await this.send(ixns);
|
|
224
247
|
return txSig;
|
|
225
248
|
}
|
|
@@ -409,9 +432,9 @@ class ClendVaultsClient {
|
|
|
409
432
|
if (isIncrease && finalDebtDeltaUi > 0) {
|
|
410
433
|
// how much debt is actually borrowable in UI terms
|
|
411
434
|
const availableDebtUiRaw = (0, math_1.amountToUi)(debtBankData.availableSupply, debtDecimals);
|
|
412
|
-
//
|
|
413
|
-
const
|
|
414
|
-
const maxUsableDebtUi =
|
|
435
|
+
// calculate the max usable debt based on the target pool utilization
|
|
436
|
+
const targetUtilFactor = 0.85; // target pool utilization is 85%
|
|
437
|
+
const maxUsableDebtUi = availableDebtUiRaw * targetUtilFactor;
|
|
415
438
|
if (maxUsableDebtUi <= 0) {
|
|
416
439
|
// error if there's literally no debt available to borrow
|
|
417
440
|
throw new Error("Not enough debt available to adjust leverage");
|
|
@@ -503,7 +526,11 @@ class ClendVaultsClient {
|
|
|
503
526
|
});
|
|
504
527
|
const swapIxns = await this.swapper.getSwapIxns(swapQuote);
|
|
505
528
|
const debtTokenProgram = await (0, clend_rpc_1.getTokenProgramForMintFromRpc)(this.program.program.provider.connection, debtBankData.mint);
|
|
506
|
-
const
|
|
529
|
+
const debtVaultAssetState = vaultState.assets.find((a) => a.mint.address.equals(debtBankData.mint));
|
|
530
|
+
if (!debtVaultAssetState) {
|
|
531
|
+
throw new Error(`Vault asset not found: ${debtBankData.mint.toString()}`);
|
|
532
|
+
}
|
|
533
|
+
const borrowIxns = await this.program.clendAccountBorrow(vault, vaultManager, clendAccountState.group, clendAccount, debtBankData.mint, debtVaultAssetState.oracle.address, debtTokenProgram, null, additionalDebtAmount, remainingAccounts);
|
|
507
534
|
const additionalCollateralAmount = swapQuote.outAmount;
|
|
508
535
|
const depositIxns = await this.program.clendAccountDeposit(vault, vaultManager, clendAccountState.group, clendAccount, collateralBankData.mint, collateralTokenProgram, additionalCollateralAmount, userCollateralAta, remainingAccounts);
|
|
509
536
|
instructions.push(...borrowIxns, ...swapIxns.ixns, ...depositIxns);
|
|
@@ -578,7 +605,8 @@ class ClendVaultsClient {
|
|
|
578
605
|
prependedIxCount += cuIxCount;
|
|
579
606
|
// get the redemption ixns
|
|
580
607
|
// these are run after the withdraw leverage ixns
|
|
581
|
-
const redeemIxns = await this.prepareRedeemIxns(user, vault, outputAssetMint, totalSharesToRedeem, new anchor_1.BN(0)
|
|
608
|
+
const redeemIxns = await this.prepareRedeemIxns(user, vault, outputAssetMint, totalSharesToRedeem, new anchor_1.BN(0), // TODO, maybe base this off slippage?
|
|
609
|
+
2);
|
|
582
610
|
// calculate parameters for withdraw leverage
|
|
583
611
|
// based on output asset mint
|
|
584
612
|
let debtToRepay;
|
|
@@ -665,11 +693,7 @@ class ClendVaultsClient {
|
|
|
665
693
|
const debtToRepayUi = new decimal_js_1.Decimal((0, math_1.amountToUi)(debtToRepay, debtDecimals).toString());
|
|
666
694
|
const collateralToSwapUi_ideal = debtToRepayUi.div(outAmountUi);
|
|
667
695
|
const collateralToSwap_ideal = (0, math_1.uiToAmount)(collateralToSwapUi_ideal.toNumber(), collateralDecimals);
|
|
668
|
-
collateralToSwap = collateralToSwap_ideal;
|
|
669
|
-
//collateralToSwap = adjustAmountForSlippage(
|
|
670
|
-
// collateralToSwap_ideal,
|
|
671
|
-
// slippageBps,
|
|
672
|
-
//);
|
|
696
|
+
collateralToSwap = (0, math_1.adjustAmountForSlippage)(collateralToSwap_ideal, slippageBps);
|
|
673
697
|
// Step 4 (Final Quote): Get the real quote for the buffered amount.
|
|
674
698
|
swapQuote = await this.swapper.getQuote(vault, {
|
|
675
699
|
payer: vaultManager,
|
|
@@ -877,10 +901,8 @@ class ClendVaultsClient {
|
|
|
877
901
|
return { ixns: instructions, luts: swapIxns.luts };
|
|
878
902
|
}
|
|
879
903
|
async swap(vault, inputMint, outputMint, inAmount) {
|
|
880
|
-
const { state: inputMintState, tokenProgram:
|
|
881
|
-
const { state: outputMintState, tokenProgram:
|
|
882
|
-
const vaultAssetInReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(inputMint, vault, true, inputMintTokenProgram);
|
|
883
|
-
const vaultAssetOutReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(outputMint, vault, true, outputMintTokenProgram);
|
|
904
|
+
const { state: inputMintState, tokenProgram: _inputMintTokenProgram } = await (0, state_1.getMintState)(inputMint, this.connection);
|
|
905
|
+
const { state: outputMintState, tokenProgram: _outputMintTokenProgram } = await (0, state_1.getMintState)(outputMint, this.connection);
|
|
884
906
|
const quote = await this.swapper.getQuote(vault, {
|
|
885
907
|
payer: this.address(),
|
|
886
908
|
inputMint: inputMint,
|
|
@@ -892,35 +914,6 @@ class ClendVaultsClient {
|
|
|
892
914
|
slippageBps: 30,
|
|
893
915
|
});
|
|
894
916
|
const swapIxns = await this.swapper.getSwapIxns(quote);
|
|
895
|
-
//const swapIx = swapIxns.ixns[0];
|
|
896
|
-
////const swapIx = swapIxns.ixns.find((ix) =>
|
|
897
|
-
//// ix.programId.equals(JUPITER_SWAP_PROGRAM_ID),
|
|
898
|
-
////);
|
|
899
|
-
////if (!swapIx) {
|
|
900
|
-
//// throw new Error(
|
|
901
|
-
//// `Swap ix not found in swapIxns, programIds: ${JSON.stringify(swapIxns.ixns.map((ix) => ix.programId.toString()))}`,
|
|
902
|
-
//// );
|
|
903
|
-
////}
|
|
904
|
-
//const swapRemainingAccounts: web3.AccountMeta[] = swapIx.keys.map(
|
|
905
|
-
// (key) => ({
|
|
906
|
-
// pubkey: key.pubkey,
|
|
907
|
-
// // If the account is the vault PDA, mark it as NOT a signer for the client transaction.
|
|
908
|
-
// isSigner: key.pubkey.equals(vault) ? false : key.isSigner,
|
|
909
|
-
// isWritable: key.isWritable,
|
|
910
|
-
// }),
|
|
911
|
-
//);
|
|
912
|
-
//const swapData = swapIx.data;
|
|
913
|
-
//const ixns = await this.program.swap(
|
|
914
|
-
// vault,
|
|
915
|
-
// this.address(),
|
|
916
|
-
// inputMint,
|
|
917
|
-
// outputMint,
|
|
918
|
-
// vaultAssetInReserve,
|
|
919
|
-
// vaultAssetOutReserve,
|
|
920
|
-
// swapData,
|
|
921
|
-
// swapRemainingAccounts,
|
|
922
|
-
// JUPITER_SWAP_PROGRAM_ID,
|
|
923
|
-
//);
|
|
924
917
|
const txSig = await this.send(swapIxns.ixns, [], swapIxns.luts);
|
|
925
918
|
return txSig;
|
|
926
919
|
}
|