@carrot-protocol/clend-vaults-rpc 0.0.2 → 0.0.3-pub2-dev-be4bd59

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/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./addresses"), exports);
18
+ __exportStar(require("./program"), exports);
19
+ __exportStar(require("./rpc"), exports);
20
+ __exportStar(require("./state"), exports);
21
+ __exportStar(require("./math"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,wCAAsB;AACtB,0CAAwB;AACxB,yCAAuB"}
package/dist/math.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { LendingAccount } from "@carrot-protocol/clend-rpc";
2
+ import { BN } from "@coral-xyz/anchor";
3
+ /**
4
+ * Computes the net asset value (NAV) per share based on vault equity and share supply.
5
+ */
6
+ export declare function calculateVaultNav(equity: number, sharesSupplyUi: number): number;
7
+ /**
8
+ * Calculates the USD value earned from a given number of shares and NAV.
9
+ */
10
+ export declare function usdEarned(sharesUi: number, nav: number): number;
11
+ /**
12
+ * Convert a UI number to a token amount BN
13
+ * @param uiAmount Amount in UI format (e.g., 1.5 USDC)
14
+ * @param decimals Token decimals
15
+ * @returns BN representing the token amount in smallest units (lamports)
16
+ */
17
+ export declare function uiToAmount(uiAmount: number, decimals: number): BN;
18
+ /**
19
+ * Convert a token amount BN to a UI number
20
+ * @param amount BN representing the token amount in smallest units (lamports)
21
+ * @param decimals Token decimals
22
+ * @returns Number in UI format (e.g., 1.5 USDC)
23
+ */
24
+ export declare function amountToUi(amount: BN, decimals: number): number;
25
+ export declare function calculateLendingAccountEquity(lendingAccount: LendingAccount): number;
26
+ /**
27
+ * Converts a token amount to its USD value based on price and decimals.
28
+ */
29
+ export declare function amountToUsd(amount: BN, decimals: number, price: number): number;
30
+ /**
31
+ * Converts a USD amount to its token representation based on price and decimals.
32
+ */
33
+ export declare function usdToAmount(usdAmount: number, decimals: number, price: number): BN;
34
+ /**
35
+ * Converts shares to asset tokens.
36
+ */
37
+ export declare function convertSharesToAsset(vaultNav: number, sharesAmountUi: number, assetDecimals: number, assetPrice: number): BN;
38
+ export declare function convertAssetToShares(vaultNav: number, assetAmount: BN, assetDecimals: number, sharesDecimals: number, assetPrice: number): BN;
package/dist/math.js ADDED
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateVaultNav = calculateVaultNav;
4
+ exports.usdEarned = usdEarned;
5
+ exports.uiToAmount = uiToAmount;
6
+ exports.amountToUi = amountToUi;
7
+ exports.calculateLendingAccountEquity = calculateLendingAccountEquity;
8
+ exports.amountToUsd = amountToUsd;
9
+ exports.usdToAmount = usdToAmount;
10
+ exports.convertSharesToAsset = convertSharesToAsset;
11
+ exports.convertAssetToShares = convertAssetToShares;
12
+ const anchor_1 = require("@coral-xyz/anchor");
13
+ /**
14
+ * Computes the net asset value (NAV) per share based on vault equity and share supply.
15
+ */
16
+ function calculateVaultNav(equity, sharesSupplyUi) {
17
+ if (equity === 0 || sharesSupplyUi === 0) {
18
+ return 0;
19
+ }
20
+ return equity / sharesSupplyUi;
21
+ }
22
+ /**
23
+ * Calculates the USD value earned from a given number of shares and NAV.
24
+ */
25
+ function usdEarned(sharesUi, nav) {
26
+ return sharesUi * nav;
27
+ }
28
+ /**
29
+ * Convert a UI number to a token amount BN
30
+ * @param uiAmount Amount in UI format (e.g., 1.5 USDC)
31
+ * @param decimals Token decimals
32
+ * @returns BN representing the token amount in smallest units (lamports)
33
+ */
34
+ function uiToAmount(uiAmount, decimals) {
35
+ // floor to avoid over-minting
36
+ return new anchor_1.BN(Math.floor(uiAmount * 10 ** decimals));
37
+ }
38
+ /**
39
+ * Convert a token amount BN to a UI number
40
+ * @param amount BN representing the token amount in smallest units (lamports)
41
+ * @param decimals Token decimals
42
+ * @returns Number in UI format (e.g., 1.5 USDC)
43
+ */
44
+ function amountToUi(amount, decimals) {
45
+ return amount.toNumber() / 10 ** decimals;
46
+ }
47
+ function calculateLendingAccountEquity(lendingAccount) {
48
+ let accountEquity = 0;
49
+ for (const balance of lendingAccount.balances) {
50
+ accountEquity =
51
+ accountEquity + (balance.assetValue - balance.liabilityValue);
52
+ }
53
+ return accountEquity;
54
+ }
55
+ /**
56
+ * Converts a token amount to its USD value based on price and decimals.
57
+ */
58
+ function amountToUsd(amount, decimals, price) {
59
+ return amountToUi(amount, decimals) * price;
60
+ }
61
+ /**
62
+ * Converts a USD amount to its token representation based on price and decimals.
63
+ */
64
+ function usdToAmount(usdAmount, decimals, price) {
65
+ return uiToAmount(usdAmount / price, decimals);
66
+ }
67
+ /**
68
+ * Converts shares to asset tokens.
69
+ */
70
+ function convertSharesToAsset(vaultNav, sharesAmountUi, assetDecimals, assetPrice) {
71
+ const sharesUsd = usdEarned(sharesAmountUi, vaultNav);
72
+ const tokenAmount = usdToAmount(sharesUsd, assetDecimals, assetPrice);
73
+ return tokenAmount;
74
+ }
75
+ function convertAssetToShares(vaultNav, assetAmount, assetDecimals, sharesDecimals, assetPrice) {
76
+ const assetUsd = amountToUsd(assetAmount, assetDecimals, assetPrice);
77
+ return usdToAmount(assetUsd, sharesDecimals, vaultNav);
78
+ }
79
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":";;AAMA,8CAQC;AAKD,8BAEC;AAQD,gCAGC;AAQD,gCAEC;AAED,sEASC;AAKD,kCAMC;AAKD,kCAMC;AAKD,oDAWC;AAED,oDASC;AArGD,8CAAuC;AAEvC;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,MAAc,EACd,cAAsB;IAEtB,IAAI,MAAM,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,GAAW;IACrD,OAAO,QAAQ,GAAG,GAAG,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,QAAgB,EAAE,QAAgB;IAC3D,8BAA8B;IAC9B,OAAO,IAAI,WAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,MAAU,EAAE,QAAgB;IACrD,OAAO,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC;AAC5C,CAAC;AAED,SAAgB,6BAA6B,CAC3C,cAA8B;IAE9B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,aAAa;YACX,aAAa,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,MAAU,EACV,QAAgB,EAChB,KAAa;IAEb,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,SAAiB,EACjB,QAAgB,EAChB,KAAa;IAEb,OAAO,UAAU,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,QAAgB,EAChB,cAAsB,EACtB,aAAqB,EACrB,UAAkB;IAElB,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEtE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,oBAAoB,CAClC,QAAgB,EAChB,WAAe,EACf,aAAqB,EACrB,cAAsB,EACtB,UAAkB;IAElB,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { AnchorProvider, BN, Program, web3 } from "@coral-xyz/anchor";
2
+ import { type ClendVaults } from "./idl/clend_vaults";
3
+ export declare class ClendVaultsProgram {
4
+ readonly program: Program<ClendVaults>;
5
+ constructor(provider?: AnchorProvider);
6
+ initVault(vaultSharesMint: web3.PublicKey, manager: web3.PublicKey, managementFeeBps: number): Promise<{
7
+ vault: web3.PublicKey;
8
+ ixns: web3.TransactionInstruction[];
9
+ }>;
10
+ addAsset(vault: web3.PublicKey, manager: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, assetTokenProgram: web3.PublicKey, addAssetArgs: AddAssetArgs): Promise<web3.TransactionInstruction[]>;
11
+ addClendAccount(vault: web3.PublicKey, manager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.Keypair): Promise<web3.TransactionInstruction[]>;
12
+ updateVaultManager(vault: web3.PublicKey, currentManager: web3.PublicKey, newManager: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
13
+ issue(vault: web3.PublicKey, sharesMint: web3.PublicKey, user: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, amount: BN | number, assetTokenProgram: web3.PublicKey, sharesTokenProgram: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
14
+ redeem(vault: web3.PublicKey, sharesMint: web3.PublicKey, user: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, amount: BN, assetTokenProgram: web3.PublicKey, sharesTokenProgram: web3.PublicKey, remainingAccounts: web3.AccountMeta[]): Promise<web3.TransactionInstruction[]>;
15
+ 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[]>;
16
+ 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[]>;
17
+ 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[]>;
18
+ 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[]>;
19
+ clendAccountClaimEmissions(vault: web3.PublicKey, vaultManager: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, bank: web3.PublicKey, assetMint: web3.PublicKey, emissionsMint: web3.PublicKey, destinationAccount: web3.PublicKey, // vault-owned ATA for emissions mint
20
+ mintTokenProgram: web3.PublicKey, emissionsVault: web3.PublicKey, emissionsAuthority: web3.PublicKey, clendProgramId: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
21
+ swap(vault: web3.PublicKey, vaultManager: web3.PublicKey, assetInMint: web3.PublicKey, assetOutMint: web3.PublicKey, vaultAssetInReserve: web3.PublicKey, vaultAssetOutReserve: web3.PublicKey, swapData: Buffer, remainingAccounts: web3.AccountMeta[], swapProgram?: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
22
+ distributeFees(vault: web3.PublicKey, manager: web3.PublicKey, shares: web3.PublicKey, sharesDestinationOwner: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
23
+ }
24
+ export interface AddAssetArgs {
25
+ issueFeeBps: number;
26
+ redemptionFeeBps: number;
27
+ }
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ClendVaultsProgram = void 0;
7
+ // instructions.ts
8
+ const anchor_1 = require("@coral-xyz/anchor");
9
+ const spl_token_1 = require("@solana/spl-token");
10
+ const addresses_1 = require("./addresses");
11
+ const clend_vaults_json_1 = __importDefault(require("./idl/clend_vaults.json"));
12
+ const clend_rpc_1 = require("@carrot-protocol/clend-rpc");
13
+ const utils_1 = require("./utils");
14
+ class ClendVaultsProgram {
15
+ constructor(provider) {
16
+ if (!provider) {
17
+ provider = (0, utils_1.getDummyProvider)();
18
+ }
19
+ this.program = new anchor_1.Program(clend_vaults_json_1.default, provider);
20
+ }
21
+ async initVault(vaultSharesMint, manager, managementFeeBps) {
22
+ const vault = (0, addresses_1.getVaultPda)(vaultSharesMint);
23
+ const transferMintAuthorityIx = (0, spl_token_1.createSetAuthorityInstruction)(vaultSharesMint, manager, spl_token_1.AuthorityType.MintTokens, vault, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
24
+ const args = {
25
+ managementFeeBps,
26
+ };
27
+ const ix = await this.program.methods
28
+ .initVault(args)
29
+ .accountsStrict({
30
+ manager,
31
+ payer: manager,
32
+ vault,
33
+ vaultShares: vaultSharesMint,
34
+ systemProgram: anchor_1.web3.SystemProgram.programId,
35
+ })
36
+ .instruction();
37
+ return { vault, ixns: [transferMintAuthorityIx, ix] };
38
+ }
39
+ async addAsset(vault, manager, assetMint, assetOracle, assetTokenProgram, addAssetArgs) {
40
+ const vaultAssetReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetTokenProgram);
41
+ // Create ATA idempotently
42
+ const createVaultReserveIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(manager, // payer
43
+ vaultAssetReserve, vault, assetMint, assetTokenProgram);
44
+ const addAssetIx = await this.program.methods
45
+ .addAsset(addAssetArgs)
46
+ .accountsStrict({
47
+ vault,
48
+ assetMint,
49
+ assetOracle,
50
+ vaultAssetReserve,
51
+ manager,
52
+ tokenProgram: assetTokenProgram,
53
+ systemProgram: anchor_1.web3.SystemProgram.programId,
54
+ })
55
+ .instruction();
56
+ return [createVaultReserveIx, addAssetIx];
57
+ }
58
+ async addClendAccount(vault, manager, clendGroup, clendAccount) {
59
+ const ix = await this.program.methods
60
+ .addClendAccount()
61
+ .accountsStrict({
62
+ vault,
63
+ clendAccount: clendAccount.publicKey,
64
+ clendGroup,
65
+ manager,
66
+ clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
67
+ systemProgram: anchor_1.web3.SystemProgram.programId,
68
+ })
69
+ .instruction();
70
+ return [ix];
71
+ }
72
+ async updateVaultManager(vault, currentManager, newManager) {
73
+ const ix = await this.program.methods
74
+ .updateVaultManager()
75
+ .accountsStrict({
76
+ vault,
77
+ newManager,
78
+ manager: currentManager,
79
+ })
80
+ .instruction();
81
+ return [ix];
82
+ }
83
+ // -----------------
84
+ // Shares ops
85
+ // -----------------
86
+ async issue(vault, sharesMint, user, assetMint, assetOracle, amount, assetTokenProgram, sharesTokenProgram, remainingAccounts) {
87
+ const amt = new anchor_1.BN(amount);
88
+ // Vault reserve (owner is vault PDA)
89
+ const vaultAssetReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetTokenProgram);
90
+ // User ATAs (owner is user)
91
+ const userAssetAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, user, true, assetTokenProgram);
92
+ const userSharesAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(sharesMint, user, true, sharesTokenProgram);
93
+ // Ensure user's ATAs exist (idempotent)
94
+ const createUserAssetIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(user, userAssetAccount, user, assetMint, assetTokenProgram);
95
+ const createUserSharesIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(user, userSharesAccount, user, sharesMint, sharesTokenProgram);
96
+ const ix = await this.program.methods
97
+ .issue({ amount: amt })
98
+ .accountsStrict({
99
+ vault,
100
+ shares: sharesMint,
101
+ assetMint,
102
+ assetOracle,
103
+ vaultAssetReserve,
104
+ userAssetAccount,
105
+ userSharesAccount,
106
+ user,
107
+ assetTokenProgram,
108
+ sharesTokenProgram,
109
+ systemProgram: anchor_1.web3.SystemProgram.programId,
110
+ })
111
+ .remainingAccounts(remainingAccounts)
112
+ .instruction();
113
+ return [createUserAssetIx, createUserSharesIx, ix];
114
+ }
115
+ async redeem(vault, sharesMint, user, assetMint, assetOracle, amount, assetTokenProgram, sharesTokenProgram, remainingAccounts) {
116
+ const amt = new anchor_1.BN(amount);
117
+ const vaultAssetReserve = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetTokenProgram);
118
+ const userAssetAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, user, true, assetTokenProgram);
119
+ const userSharesAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(sharesMint, user, true, sharesTokenProgram);
120
+ // Make sure the user asset ATA exists
121
+ const createUserAssetIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(user, userAssetAccount, user, assetMint, assetTokenProgram);
122
+ const ix = await this.program.methods
123
+ .redeem({ amount: amt })
124
+ .accountsStrict({
125
+ vault,
126
+ shares: sharesMint,
127
+ assetMint,
128
+ assetOracle,
129
+ vaultAssetReserve,
130
+ userAssetAccount,
131
+ userSharesAccount,
132
+ user,
133
+ assetTokenProgram,
134
+ sharesTokenProgram,
135
+ systemProgram: anchor_1.web3.SystemProgram.programId,
136
+ })
137
+ .remainingAccounts(remainingAccounts)
138
+ .instruction();
139
+ return [createUserAssetIx, ix];
140
+ }
141
+ // -----------------
142
+ // Clend-account ops (builders; vault PDA signs via seeds)
143
+ // -----------------
144
+ async clendAccountDeposit(vault, vaultManager, clendGroup, clendAccount, assetMint, assetMintTokenProgram, amount, vaultReserve, remainingAccounts) {
145
+ const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
146
+ const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
147
+ const ix = await this.program.methods
148
+ .clendAccountDeposit({ amount })
149
+ .accountsStrict({
150
+ vault,
151
+ assetMint,
152
+ clendGroup,
153
+ clendAccount,
154
+ bank,
155
+ vaultReserve,
156
+ bankLiquidityVault,
157
+ manager: vaultManager,
158
+ tokenProgram: assetMintTokenProgram,
159
+ clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
160
+ systemProgram: anchor_1.web3.SystemProgram.programId,
161
+ })
162
+ .remainingAccounts(remainingAccounts)
163
+ .instruction();
164
+ return [ix];
165
+ }
166
+ async clendAccountWithdraw(vault, vaultManager, clendGroup, clendAccount, assetMint, assetMintTokenProgram, amount, remainingAccounts) {
167
+ const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
168
+ const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
169
+ const bankLiquidityVaultAuthority = (0, clend_rpc_1.getBankLiquidityVaultAuthorityPda)(bank);
170
+ const destinationTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, assetMintTokenProgram);
171
+ const ix = await this.program.methods
172
+ .clendAccountWithdraw({ amount })
173
+ .accountsStrict({
174
+ vault,
175
+ assetMint,
176
+ clendGroup,
177
+ clendAccount,
178
+ bank,
179
+ destinationTokenAccount,
180
+ bankLiquidityVaultAuthority,
181
+ bankLiquidityVault,
182
+ manager: vaultManager,
183
+ tokenProgram: assetMintTokenProgram,
184
+ clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
185
+ systemProgram: anchor_1.web3.SystemProgram.programId,
186
+ })
187
+ .remainingAccounts(remainingAccounts)
188
+ .instruction();
189
+ return [ix];
190
+ }
191
+ async clendAccountRepay(vault, vaultManager, clendGroup, clendAccount, assetMint, mintTokenProgram, amount, remainingAccounts) {
192
+ const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
193
+ const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
194
+ const signerTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, mintTokenProgram);
195
+ const ix = await this.program.methods
196
+ .clendAccountRepay({ amount: new anchor_1.BN(amount) })
197
+ .accountsStrict({
198
+ vault,
199
+ assetMint,
200
+ clendGroup,
201
+ clendAccount,
202
+ bank,
203
+ signerTokenAccount,
204
+ bankLiquidityVault,
205
+ manager: vaultManager,
206
+ tokenProgram: mintTokenProgram,
207
+ clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
208
+ systemProgram: anchor_1.web3.SystemProgram.programId,
209
+ })
210
+ .remainingAccounts(remainingAccounts)
211
+ .instruction();
212
+ return [ix];
213
+ }
214
+ async clendAccountBorrow(vault, vaultManager, clendGroup, clendAccount, assetMint, mintTokenProgram, amount, remainingAccounts) {
215
+ const bank = (0, clend_rpc_1.getBankPda)(clendGroup, assetMint);
216
+ const bankLiquidityVault = (0, clend_rpc_1.getBankLiquidityVaultPda)(bank);
217
+ const bankLiquidityVaultAuthority = (0, clend_rpc_1.getBankLiquidityVaultAuthorityPda)(bank);
218
+ const destinationTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(assetMint, vault, true, mintTokenProgram);
219
+ const ix = await this.program.methods
220
+ .clendAccountBorrow({ amount })
221
+ .accountsStrict({
222
+ vault,
223
+ assetMint,
224
+ clendGroup,
225
+ clendAccount,
226
+ bank,
227
+ destinationTokenAccount,
228
+ bankLiquidityVaultAuthority,
229
+ bankLiquidityVault,
230
+ manager: vaultManager,
231
+ tokenProgram: mintTokenProgram,
232
+ clendProgram: clend_rpc_1.CLEND_PROGRAM_ID,
233
+ systemProgram: anchor_1.web3.SystemProgram.programId,
234
+ })
235
+ .remainingAccounts(remainingAccounts)
236
+ .instruction();
237
+ return [ix];
238
+ }
239
+ async clendAccountClaimEmissions(vault, vaultManager, clendGroup, clendAccount, bank, assetMint, emissionsMint, destinationAccount, // vault-owned ATA for emissions mint
240
+ mintTokenProgram, emissionsVault, emissionsAuthority, clendProgramId) {
241
+ const ix = await this.program.methods
242
+ .clendAccountClaimEmissions()
243
+ .accountsStrict({
244
+ vault,
245
+ assetMint,
246
+ clendGroup,
247
+ clendAccount,
248
+ bank,
249
+ emissionsMint,
250
+ emissionsAuth: emissionsAuthority,
251
+ emissionsVault,
252
+ destinationAccount,
253
+ manager: vaultManager,
254
+ tokenProgram: mintTokenProgram,
255
+ clendProgram: clendProgramId,
256
+ systemProgram: anchor_1.web3.SystemProgram.programId,
257
+ })
258
+ .instruction();
259
+ return [ix];
260
+ }
261
+ async swap(vault, vaultManager, assetInMint, assetOutMint, vaultAssetInReserve, vaultAssetOutReserve, swapData, remainingAccounts, swapProgram = addresses_1.JUPITER_SWAP_PROGRAM_ID) {
262
+ const ix = await this.program.methods
263
+ .swap({ swapData: Buffer.from(swapData) })
264
+ .accountsStrict({
265
+ vault,
266
+ assetInMint,
267
+ assetOutMint,
268
+ vaultAssetInReserve,
269
+ vaultAssetOutReserve,
270
+ manager: vaultManager,
271
+ swapProgram,
272
+ })
273
+ .remainingAccounts(remainingAccounts)
274
+ .instruction();
275
+ return [ix];
276
+ }
277
+ async distributeFees(vault, manager, shares, sharesDestinationOwner) {
278
+ const sharesDestination = (0, spl_token_1.getAssociatedTokenAddressSync)(shares, sharesDestinationOwner, true, spl_token_1.TOKEN_2022_PROGRAM_ID);
279
+ const createSharesDestinationIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(manager, sharesDestination, sharesDestinationOwner, shares, spl_token_1.TOKEN_2022_PROGRAM_ID);
280
+ const ix = await this.program.methods
281
+ .distributeFees()
282
+ .accountsStrict({
283
+ vault,
284
+ manager,
285
+ shares,
286
+ sharesDestination,
287
+ tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
288
+ })
289
+ .instruction();
290
+ return [createSharesDestinationIx, ix];
291
+ }
292
+ }
293
+ exports.ClendVaultsProgram = ClendVaultsProgram;
294
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
package/dist/rpc.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ import { AnchorProvider, BN, web3 } from "@coral-xyz/anchor";
2
+ import { Connection } from "@solana/web3.js";
3
+ import { AddAssetArgs, ClendVaultsProgram } from "./program";
4
+ import { ClendClient, ISwapper } from "@carrot-protocol/clend-rpc";
5
+ import { Vault, VaultEquity } from "./state";
6
+ export type Wallet = AnchorProvider["wallet"];
7
+ type AccountMeta = web3.AccountMeta;
8
+ export declare class ClendVaultsClient {
9
+ readonly connection: Connection;
10
+ readonly program: ClendVaultsProgram;
11
+ readonly clendClient: ClendClient;
12
+ readonly swapper: ISwapper;
13
+ readonly skipPreflight: boolean;
14
+ constructor(provider: AnchorProvider, skipPreflight?: boolean, swapperOverride?: ISwapper);
15
+ address(): web3.PublicKey;
16
+ getVault(vault: web3.PublicKey): Promise<Vault>;
17
+ getVaultEquity(vault: Vault): Promise<VaultEquity>;
18
+ initVault(sharesMint: web3.PublicKey, managementFeeBps: number): Promise<{
19
+ txSig: string;
20
+ vault: web3.PublicKey;
21
+ }>;
22
+ addAsset(vault: web3.PublicKey, assetMint: web3.PublicKey, assetOracle: web3.PublicKey, addAssetArgs: AddAssetArgs): Promise<string>;
23
+ addClendAccount(vault: web3.PublicKey, clendGroup: web3.PublicKey): Promise<{
24
+ txSig: string;
25
+ clendAccount: web3.PublicKey;
26
+ }>;
27
+ updateVaultManager(vault: web3.PublicKey, newManager: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
28
+ issue(vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
29
+ prepareIssueIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<web3.TransactionInstruction[]>;
30
+ redeem(vault: web3.PublicKey, assetMint: web3.PublicKey, sharesAmount: BN): Promise<string>;
31
+ prepareRedeemIxns(user: web3.PublicKey, vault: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<web3.TransactionInstruction[]>;
32
+ clendAccountDeposit(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
33
+ clendAccountWithdraw(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
34
+ clendAccountRepay(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN | number): Promise<string>;
35
+ clendAccountBorrow(vault: web3.PublicKey, clendAccount: web3.PublicKey, assetMint: web3.PublicKey, amount: BN): Promise<string>;
36
+ clendAccountClaimEmissions(vault: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, bank: web3.PublicKey, assetMint: web3.PublicKey, emissionsMint: web3.PublicKey): Promise<web3.TransactionInstruction[]>;
37
+ clendAccountAdjustLeverage(clendAccount: web3.PublicKey, collateralMint: web3.PublicKey, debtMint: web3.PublicKey, targetLeverage: number, slippageBps: number): Promise<string>;
38
+ prepareRedeemFromClendAccountIxns(user: web3.PublicKey, vault: web3.PublicKey, clendAccount: web3.PublicKey, outputAssetMint: web3.PublicKey, collateralMint: web3.PublicKey, debtMint: web3.PublicKey, totalSharesToRedeem: BN, sharesToRedeemFromClendAccount: BN, slippageBps: number): Promise<{
39
+ ixns: web3.TransactionInstruction[];
40
+ luts: web3.PublicKey[];
41
+ }>;
42
+ getWithdrawLeverageCollateralIxns(vault: web3.PublicKey, vaultManager: web3.PublicKey, user: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, collateralMint: web3.PublicKey, debtMint: web3.PublicKey, collateralDecimals: number, debtDecimals: number, withdrawAll: boolean, collateralToWithdraw: BN, desiredNetCollateralToReceive: BN, debtToRepay: BN, slippageBps: number, additionalIxnCount: number, swapperOverride?: ISwapper): Promise<{
43
+ ixns: web3.TransactionInstruction[];
44
+ luts: web3.PublicKey[];
45
+ }>;
46
+ getWithdrawLeverageDebtIxns(vault: web3.PublicKey, vaultManager: web3.PublicKey, user: web3.PublicKey, clendGroup: web3.PublicKey, clendAccount: web3.PublicKey, collateralMint: web3.PublicKey, debtMint: web3.PublicKey, collateralDecimals: number, debtDecimals: number, withdrawAll: boolean, debtToRepay: BN, collateralToWithdraw: BN, slippageBps: number, additionalIxnCount: number, swapperOverride?: ISwapper): Promise<{
47
+ ixns: web3.TransactionInstruction[];
48
+ luts: web3.PublicKey[];
49
+ }>;
50
+ swap(vault: web3.PublicKey, inputMint: web3.PublicKey, outputMint: web3.PublicKey, inAmount: BN): Promise<string>;
51
+ distributeFees(vault: web3.PublicKey, sharesDestinationOwner: web3.PublicKey): Promise<string>;
52
+ send(ixns: web3.TransactionInstruction[], additionalSigners?: web3.Signer[]): Promise<string>;
53
+ confirmTx(txSig: string): Promise<void>;
54
+ }
55
+ export declare function buildEquityRemainingAccounts(vaultData: Vault, clendClient: ClendClient): Promise<AccountMeta[]>;
56
+ export {};