@exponent-labs/exponent-sdk 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/build/addressLookupTableUtil.d.ts +12 -0
  3. package/build/addressLookupTableUtil.js +32 -0
  4. package/build/addressLookupTableUtil.js.map +1 -0
  5. package/build/environment.d.ts +10 -0
  6. package/build/environment.js +13 -0
  7. package/build/environment.js.map +1 -0
  8. package/build/events.d.ts +339 -0
  9. package/build/events.js +231 -0
  10. package/build/events.js.map +1 -0
  11. package/build/flavors.d.ts +24 -0
  12. package/build/flavors.js +713 -0
  13. package/build/flavors.js.map +1 -0
  14. package/build/index.d.ts +11 -0
  15. package/build/index.js +45 -0
  16. package/build/index.js.map +1 -0
  17. package/build/lpPosition.d.ts +35 -0
  18. package/build/lpPosition.js +103 -0
  19. package/build/lpPosition.js.map +1 -0
  20. package/build/market.d.ts +567 -0
  21. package/build/market.js +1445 -0
  22. package/build/market.js.map +1 -0
  23. package/build/syPosition.d.ts +6 -0
  24. package/build/syPosition.js +115 -0
  25. package/build/syPosition.js.map +1 -0
  26. package/build/tokenUtil.d.ts +3 -0
  27. package/build/tokenUtil.js +23 -0
  28. package/build/tokenUtil.js.map +1 -0
  29. package/build/utils/altUtil.d.ts +8 -0
  30. package/build/utils/altUtil.js +35 -0
  31. package/build/utils/altUtil.js.map +1 -0
  32. package/build/utils/binSolver.d.ts +1 -0
  33. package/build/utils/binSolver.js +45 -0
  34. package/build/utils/binSolver.js.map +1 -0
  35. package/build/utils/binSolver.test.d.ts +1 -0
  36. package/build/utils/binSolver.test.js +15 -0
  37. package/build/utils/binSolver.test.js.map +1 -0
  38. package/build/utils/index.d.ts +6 -0
  39. package/build/utils/index.js +31 -0
  40. package/build/utils/index.js.map +1 -0
  41. package/build/utils/ix.d.ts +6 -0
  42. package/build/utils/ix.js +3 -0
  43. package/build/utils/ix.js.map +1 -0
  44. package/build/vault.d.ts +289 -0
  45. package/build/vault.js +615 -0
  46. package/build/vault.js.map +1 -0
  47. package/build/ytPosition.d.ts +86 -0
  48. package/build/ytPosition.js +231 -0
  49. package/build/ytPosition.js.map +1 -0
  50. package/jest.config.js +5 -0
  51. package/package.json +42 -0
  52. package/src/addressLookupTableUtil.ts +34 -0
  53. package/src/environment.ts +19 -0
  54. package/src/events.ts +595 -0
  55. package/src/flavors.ts +773 -0
  56. package/src/index.ts +11 -0
  57. package/src/lpPosition.ts +129 -0
  58. package/src/market.ts +2338 -0
  59. package/src/syPosition.ts +151 -0
  60. package/src/tokenUtil.ts +20 -0
  61. package/src/utils/altUtil.ts +47 -0
  62. package/src/utils/binSolver.test.ts +15 -0
  63. package/src/utils/binSolver.ts +44 -0
  64. package/src/utils/index.ts +32 -0
  65. package/src/utils/ix.ts +7 -0
  66. package/src/vault.ts +999 -0
  67. package/src/ytPosition.ts +313 -0
  68. package/tsconfig.json +38 -0
package/build/vault.js ADDED
@@ -0,0 +1,615 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vault = void 0;
4
+ const anchor_1 = require("@coral-xyz/anchor");
5
+ const exponent_fetcher_1 = require("@exponent-labs/exponent-fetcher");
6
+ const addressLookupTableUtil_1 = require("./addressLookupTableUtil");
7
+ const flavors_1 = require("./flavors");
8
+ const spl_token_1 = require("@solana/spl-token");
9
+ const syPosition_1 = require("./syPosition");
10
+ const exponent_idl_1 = require("@exponent-labs/exponent-idl");
11
+ const utils_1 = require("./utils");
12
+ const exponent_admin_pda_1 = require("@exponent-labs/exponent-admin-pda");
13
+ const exponent_pda_1 = require("@exponent-labs/exponent-pda");
14
+ const market_1 = require("./market");
15
+ const exponent_ix_1 = require("@exponent-labs/exponent-ix");
16
+ const altUtil_1 = require("./utils/altUtil");
17
+ class Vault {
18
+ state;
19
+ selfAddress;
20
+ env;
21
+ connection;
22
+ coreProgram;
23
+ constructor(state, selfAddress, env, connection) {
24
+ this.state = state;
25
+ this.selfAddress = selfAddress;
26
+ this.env = env;
27
+ this.connection = connection;
28
+ const mockWallet = new market_1.MyWallet(anchor_1.web3.Keypair.generate());
29
+ this.coreProgram = new anchor_1.Program(exponent_idl_1.IDL, new anchor_1.AnchorProvider(connection, mockWallet));
30
+ }
31
+ static loadFromJson(v, address, env, connection) {
32
+ const state = toVaultState(v);
33
+ return new Vault(state, address, env, connection);
34
+ }
35
+ static async load(env, connection, address) {
36
+ const fetcher = new exponent_fetcher_1.ExponentFetcher({ connection });
37
+ const v = await fetcher.fetchVault(address);
38
+ const alt = await (0, addressLookupTableUtil_1.fetchAddressLookupTable)(connection, v.addressLookupTable);
39
+ const cpiAccounts = (0, addressLookupTableUtil_1.makeCpiAccountMetaLists)(alt, v.cpiAccounts);
40
+ const flavor = await (0, flavors_1.makeFlavor)(fetcher, env, v.syProgram, cpiAccounts);
41
+ const positionInCpiAccounts = cpiAccounts.depositSy[6];
42
+ console.log("positionInCpiAccounts", positionInCpiAccounts.pubkey.toBase58());
43
+ const syPosition = await (0, syPosition_1.makeSyPosition)(fetcher, flavor, v.syProgram, v.authority);
44
+ const state = {
45
+ ptSupply: v.ptSupply,
46
+ syForPt: v.syForPt,
47
+ startTs: v.startTs,
48
+ durationSeconds: v.duration,
49
+ authority: v.authority,
50
+ addressLookupTable: v.addressLookupTable,
51
+ lastSeenSyExchangeRate: v.lastSeenSyExchangeRate,
52
+ allTimeHighSyExchangeRate: v.allTimeHighSyExchangeRate,
53
+ syProgram: v.syProgram,
54
+ mintPt: v.mintPt,
55
+ mintSy: v.mintSy,
56
+ mintYt: v.mintYt,
57
+ escrowSy: v.escrowSy,
58
+ escrowYt: v.escrowYt,
59
+ yieldPositonAddress: v.yieldPosition,
60
+ cpiAccounts,
61
+ flavor,
62
+ syPosition,
63
+ totalSyInEscrow: v.totalSyInEscrow,
64
+ treasurySyTokenAccount: v.treasurySyTokenAccount,
65
+ interestBpsFee: v.interestBpsFee,
66
+ emissions: v.emissions,
67
+ minOperationSizeStrip: v.minOpSizeStrip,
68
+ minOperationSizeMerge: v.minOpSizeMerge,
69
+ status: v.status,
70
+ finalSyExchangeRate: v.finalSyExchangeRate,
71
+ maxPySupply: v.maxPySupply,
72
+ };
73
+ return new Vault(state, address, env, connection);
74
+ }
75
+ async reload(conn = this.connection) {
76
+ const v = await Vault.load(this.env, conn, this.selfAddress);
77
+ this.state = v.state;
78
+ return v;
79
+ }
80
+ toJson() {
81
+ return {
82
+ startTs: this.state.startTs,
83
+ duration: this.state.durationSeconds,
84
+ authority: this.state.authority.toString(),
85
+ syBalance: this.syBalance.toString(),
86
+ addressLookupTable: this.state.addressLookupTable.toString(),
87
+ lastSeenSyExchangeRate: this.state.lastSeenSyExchangeRate,
88
+ selfAddress: this.selfAddress.toString(),
89
+ syProgram: this.state.syProgram.toString(),
90
+ mintPt: this.state.mintPt.toString(),
91
+ mintYt: this.state.mintYt.toString(),
92
+ mintSy: this.state.mintSy.toString(),
93
+ currentSyExchangeRate: this.state.flavor.currentSyExchangeRate,
94
+ startDateString: new Date(this.state.startTs * 1000).toISOString(),
95
+ escrowSy: this.state.escrowSy.toString(),
96
+ escrowYt: this.state.escrowYt.toString(),
97
+ treasurySyTokenAccount: this.state.treasurySyTokenAccount.toString(),
98
+ allTimeHighSyExchangeRate: this.state.allTimeHighSyExchangeRate,
99
+ finalSyExchangeRate: this.state.finalSyExchangeRate,
100
+ ptSupply: this.state.ptSupply.toString(),
101
+ syForPt: this.state.syForPt.toString(),
102
+ totalSyInEscrow: this.state.totalSyInEscrow.toString(),
103
+ cpiAccounts: (0, exponent_ix_1.serializeCpiAccountsRaw)(this.state.cpiAccounts),
104
+ status: this.state.status,
105
+ syPosition: (0, syPosition_1.serializeSyPostion)(this.state.syPosition),
106
+ minOperationSizeStrip: this.state.minOperationSizeStrip.toString(),
107
+ minOperationSizeMerge: this.state.minOperationSizeMerge.toString(),
108
+ yieldPositonAddress: this.state.yieldPositonAddress.toString(),
109
+ interestFeeBps: this.state.interestBpsFee,
110
+ flavor: (() => {
111
+ switch (this.state.flavor.flavor) {
112
+ case "marginfi":
113
+ return (0, flavors_1.serializeFlavorMarginfi)(this.state.flavor);
114
+ case "kamino":
115
+ return (0, flavors_1.serializeFlavorKamino)(this.state.flavor);
116
+ case "jitoRestaking":
117
+ return (0, flavors_1.serializeFlavorJitoRestaking)(this.state.flavor);
118
+ case "perena":
119
+ return (0, flavors_1.serializeFlavorParena)(this.state.flavor);
120
+ case "generic":
121
+ return (0, flavors_1.serializeFlavorGeneric)(this.state.flavor);
122
+ default:
123
+ throw new Error(`Unknown flavor: ${this.state.flavor}`);
124
+ }
125
+ })(),
126
+ emissions: this.state.emissions.map((e) => (0, exponent_fetcher_1.serializeEmission)(e)),
127
+ maxPySupply: this.state.maxPySupply.toString(),
128
+ };
129
+ }
130
+ get pda() {
131
+ return new exponent_pda_1.ExponentPDA(this.coreProgram.programId);
132
+ }
133
+ get syBalance() {
134
+ return this.state.syPosition.balanceSy;
135
+ }
136
+ get mintSy() {
137
+ return this.state.mintSy;
138
+ }
139
+ getAdminStatePda() {
140
+ return new exponent_admin_pda_1.ExponentAdminPda(exponent_admin_pda_1.EXPONENT_ADMIN_PROGRAM_ID).exponentAdmin();
141
+ }
142
+ get mintPt() {
143
+ return this.state.mintPt;
144
+ }
145
+ get mintYt() {
146
+ return this.state.mintYt;
147
+ }
148
+ get flavor() {
149
+ return this.state.flavor;
150
+ }
151
+ get cpiAccounts() {
152
+ return this.state.cpiAccounts;
153
+ }
154
+ get authority() {
155
+ return this.state.authority;
156
+ }
157
+ get escrowSy() {
158
+ return this.state.escrowSy;
159
+ }
160
+ get addressLookupTable() {
161
+ return this.state.addressLookupTable;
162
+ }
163
+ get eventAuthority() {
164
+ return (0, utils_1.emitEventAuthority)(this.coreProgram.programId);
165
+ }
166
+ /** Emission metadata from SY program */
167
+ get syEmissions() {
168
+ if (this.flavor.flavor === "marginfi") {
169
+ return this.flavor.mfiSyState.account.emissions.map((e) => ({
170
+ escrowAccountAddress: e.escrowAccount,
171
+ mint: e.mint,
172
+ tokenProgramAddress: e.tokenProgram,
173
+ totalClaimed: e.totalClaimedEmissions,
174
+ lastSeenTotalAccruedEmissions: e.lastSeenTotalAccruedEmissions,
175
+ index: e.index,
176
+ }));
177
+ }
178
+ if (this.flavor.flavor === "kamino") {
179
+ return this.flavor.kaminoSyState.account.emissions.map((e) => ({
180
+ escrowAccountAddress: e.escrowAccount,
181
+ mint: e.mint,
182
+ tokenProgramAddress: e.tokenProgram,
183
+ totalClaimed: e.totalClaimedEmissions,
184
+ lastSeenTotalAccruedEmissions: e.lastSeenTotalAccruedEmissions,
185
+ index: e.index,
186
+ }));
187
+ }
188
+ if (this.flavor.flavor === "jitoRestaking") {
189
+ return this.flavor.jitoSyState.account.emissions.map((e) => ({
190
+ escrowAccountAddress: e.escrowAccount,
191
+ mint: e.mint,
192
+ tokenProgramAddress: e.tokenProgram,
193
+ totalClaimed: e.totalClaimedEmissions,
194
+ lastSeenTotalAccruedEmissions: e.lastSeenTotalAccruedEmissions,
195
+ index: e.index,
196
+ }));
197
+ }
198
+ if (this.flavor.flavor === "perena") {
199
+ return this.flavor.perenaSyState.account.emissions.map((e) => ({
200
+ escrowAccountAddress: e.escrowAccount,
201
+ mint: e.mint,
202
+ tokenProgramAddress: e.tokenProgram,
203
+ totalClaimed: e.totalClaimedEmissions,
204
+ lastSeenTotalAccruedEmissions: e.lastSeenTotalAccruedEmissions,
205
+ index: e.index,
206
+ }));
207
+ }
208
+ if (this.flavor.flavor === "generic") {
209
+ return this.flavor.genericSyState.account.emissions.map((e) => ({
210
+ escrowAccountAddress: e.escrowAccount,
211
+ mint: e.mint,
212
+ tokenProgramAddress: e.tokenProgram,
213
+ totalClaimed: e.totalClaimedEmissions,
214
+ lastSeenTotalAccruedEmissions: e.lastSeenTotalAccruedEmissions,
215
+ index: e.index,
216
+ }));
217
+ }
218
+ throw new Error("Unknown flavor");
219
+ }
220
+ /** Emissions from the vault */
221
+ get vaultEmissions() {
222
+ return this.state.emissions;
223
+ }
224
+ /** Get the escrow token account addresses for the emissions, in order */
225
+ get vaultEmissionTokenAccounts() {
226
+ return this.vaultEmissions.map((e) => e.tokenAccount);
227
+ }
228
+ get currentSyExchangeRate() {
229
+ return this.flavor.currentSyExchangeRate;
230
+ }
231
+ get escrowYt() {
232
+ return this.state.escrowYt;
233
+ }
234
+ /** UNIX Timestamp (seconds) at which the vault expires */
235
+ get expirationTimestamp() {
236
+ return this.state.startTs + this.state.durationSeconds;
237
+ }
238
+ /** Date at which the vault expires */
239
+ get expirationDate() {
240
+ return new Date(this.expirationTimestamp * 1000);
241
+ }
242
+ /** Collect an emission earned with a YT position */
243
+ ixCollectEmission({ owner, emissionIndex, amount, emissionDst, }) {
244
+ const accounts = this.collectEmissionAccounts({ emissionIndex, owner, emissionDst });
245
+ return this.coreProgram.methods
246
+ .collectEmission(emissionIndex, amount)
247
+ .accountsStrict(accounts.mainAccounts)
248
+ .remainingAccounts(accounts.remainingAccounts)
249
+ .instruction();
250
+ }
251
+ /** Strip SY into PT & YT */
252
+ ixStrip({ syIn, depositor, ptDst, ytDst, sySrc, }) {
253
+ const { mainAccounts, remainingAccounts } = this.stripAccounts({ depositor, ptDst, ytDst, sySrc });
254
+ return this.coreProgram.methods
255
+ .strip(new anchor_1.BN(syIn.toString()))
256
+ .accountsStrict(mainAccounts)
257
+ .remainingAccounts(remainingAccounts)
258
+ .instruction();
259
+ }
260
+ async ixStripFromBase({ owner, amountBase, baseSrc, sySrc, ptDst, ytDst, }) {
261
+ baseSrc = baseSrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
262
+ sySrc = sySrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintSy, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
263
+ ptDst = ptDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
264
+ ytDst = ytDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintYt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
265
+ const mintSyIx = await this.state.flavor.ixMintSy({
266
+ amountBase: "0",
267
+ depositor: owner,
268
+ depositorBaseTokenAccount: baseSrc,
269
+ depositorSyTokenAccount: sySrc,
270
+ });
271
+ const mintSyRemAccounts = mintSyIx.keys;
272
+ const remainingAccounts = (0, utils_1.uniqueRemainingAccounts)([...this.cpiAccounts.depositSy]);
273
+ const userYieldPosition = this.pda.yieldPosition({ owner, vault: this.selfAddress });
274
+ return this.coreProgram.methods
275
+ .wrapperStrip(new anchor_1.BN(amountBase.toString()), mintSyRemAccounts.length)
276
+ .accountsStrict({
277
+ depositor: owner,
278
+ authority: this.authority,
279
+ vault: this.selfAddress,
280
+ mintPt: this.mintPt,
281
+ mintYt: this.mintYt,
282
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
283
+ syProgram: this.state.syProgram,
284
+ tokenSyDepositor: sySrc,
285
+ tokenYtDepositor: ytDst,
286
+ escrowSy: this.escrowSy,
287
+ tokenPtDepositor: ptDst,
288
+ systemProgram: anchor_1.web3.SystemProgram.programId,
289
+ vaultAddressLookupTable: this.addressLookupTable,
290
+ vaultRobotYieldPosition: this.state.yieldPositonAddress,
291
+ eventAuthority: this.eventAuthority,
292
+ program: this.coreProgram.programId,
293
+ escrowYt: this.escrowYt,
294
+ userYieldPosition,
295
+ })
296
+ .remainingAccounts(mintSyRemAccounts.concat(remainingAccounts))
297
+ .instruction();
298
+ }
299
+ async ixMergeToBase({ owner, amountPy, ptSrc, ytSrc, syDst, baseDst, }) {
300
+ baseDst = baseDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
301
+ syDst = syDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintSy, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
302
+ ptSrc = ptSrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
303
+ ytSrc = ytSrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintYt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
304
+ const redeemSyIx = await this.state.flavor.ixRedeemSy({
305
+ amountSy: "0",
306
+ redeemer: owner,
307
+ redeemerBaseTokenAccount: baseDst,
308
+ redeemerSyTokenAccount: syDst,
309
+ });
310
+ const mintSyRemAccounts = redeemSyIx.keys;
311
+ const remainingAccounts = (0, utils_1.uniqueRemainingAccounts)([...this.cpiAccounts.withdrawSy, ...this.cpiAccounts.getSyState]);
312
+ return this.coreProgram.methods
313
+ .wrapperMerge(new anchor_1.BN(amountPy.toString()), mintSyRemAccounts.length)
314
+ .accountsStrict({
315
+ merger: owner,
316
+ authority: this.authority,
317
+ vault: this.selfAddress,
318
+ mintPt: this.mintPt,
319
+ mintYt: this.mintYt,
320
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
321
+ syProgram: this.state.syProgram,
322
+ tokenSyMerger: syDst,
323
+ tokenYtMerger: ytSrc,
324
+ tokenPtMerger: ptSrc,
325
+ escrowSy: this.escrowSy,
326
+ systemProgram: anchor_1.web3.SystemProgram.programId,
327
+ vaultAddressLookupTable: this.addressLookupTable,
328
+ vaultRobotYieldPosition: this.state.yieldPositonAddress,
329
+ eventAuthority: this.eventAuthority,
330
+ program: this.coreProgram.programId,
331
+ })
332
+ .remainingAccounts(mintSyRemAccounts.concat(remainingAccounts))
333
+ .instruction();
334
+ }
335
+ /** Merge PT & YT into SY */
336
+ ixMerge({ pyIn, depositor, ptSrc, ytSrc, syDst, }) {
337
+ const accounts = this.mergeAccounts({ owner: depositor, ptSrc, ytSrc, syDst });
338
+ return this.coreProgram.methods
339
+ .merge(new anchor_1.BN(pyIn.toString()))
340
+ .accountsStrict(accounts.mainAccounts)
341
+ .remainingAccounts(accounts.remainingAccounts)
342
+ .instruction();
343
+ }
344
+ /** Initialize the yield position for a vault */
345
+ ixInitializeYieldPosition({ owner }) {
346
+ const accounts = this.initializeYieldPositionAccounts({ owner });
347
+ return this.coreProgram.methods.initializeYieldPosition().accountsStrict(accounts.mainAccounts).instruction();
348
+ }
349
+ /** Collect interest (as SY) from a yield position */
350
+ ixCollectInterest({ owner, amount, syDst }) {
351
+ const accounts = this.collectInterestAccounts({ owner, syDst });
352
+ return this.coreProgram.methods
353
+ .collectInterest(amount)
354
+ .accountsStrict(accounts.mainAccounts)
355
+ .remainingAccounts(accounts.remainingAccounts)
356
+ .instruction();
357
+ }
358
+ /** Administrative action to configure a vault */
359
+ /** Administrative action to configure a vault */
360
+ ixConfigureVault({ signer, action, }) {
361
+ const accounts = this.configureVaultAccounts({ signer });
362
+ return this.coreProgram.methods
363
+ .modifyVaultSetting(action)
364
+ .accountsStrict(accounts.mainAccounts)
365
+ .remainingAccounts(accounts.remainingAccounts)
366
+ .instruction();
367
+ }
368
+ collectEmissionAccounts({ emissionIndex, owner, emissionDst, }) {
369
+ const syE = this.syEmissions[emissionIndex];
370
+ if (!syE) {
371
+ throw new Error("Emission index out of bounds");
372
+ }
373
+ const vaultE = this.vaultEmissions[emissionIndex];
374
+ if (!vaultE) {
375
+ throw new Error("Emission index out of bounds");
376
+ }
377
+ const tokenProgram = syE.tokenProgramAddress;
378
+ const emissionEscrow = vaultE.tokenAccount;
379
+ const treasuryEmissionTokenAccount = vaultE.treasuryTokenAccount;
380
+ const position = this.pda.yieldPosition({ owner, vault: this.selfAddress });
381
+ emissionDst = emissionDst || (0, spl_token_1.getAssociatedTokenAddressSync)(syE.mint, owner, true, syE.tokenProgramAddress);
382
+ const remainingAccounts = (0, utils_1.uniqueRemainingAccounts)([...this.cpiAccounts.claimEmission[emissionIndex]]);
383
+ return {
384
+ mainAccounts: {
385
+ owner,
386
+ addressLookupTable: this.addressLookupTable,
387
+ vault: this.selfAddress,
388
+ authority: this.authority,
389
+ emissionDst,
390
+ emissionEscrow,
391
+ treasuryEmissionTokenAccount,
392
+ syProgram: this.state.syProgram,
393
+ position,
394
+ tokenProgram,
395
+ eventAuthority: this.eventAuthority,
396
+ program: this.coreProgram.programId,
397
+ },
398
+ remainingAccounts,
399
+ };
400
+ }
401
+ stripAccounts({ depositor, ptDst, ytDst, sySrc, }) {
402
+ ptDst = ptDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, depositor, true, spl_token_1.TOKEN_PROGRAM_ID);
403
+ ytDst = ytDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintYt, depositor, true, spl_token_1.TOKEN_PROGRAM_ID);
404
+ sySrc = sySrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintSy, depositor, true, spl_token_1.TOKEN_PROGRAM_ID);
405
+ console.log("sysrc account: ", sySrc.toBase58());
406
+ const remainingAccounts = (0, utils_1.uniqueRemainingAccounts)([...this.cpiAccounts.depositSy]);
407
+ return {
408
+ mainAccounts: {
409
+ depositor,
410
+ authority: this.authority,
411
+ vault: this.selfAddress,
412
+ escrowSy: this.escrowSy,
413
+ ytDst,
414
+ ptDst,
415
+ sySrc,
416
+ mintYt: this.mintYt,
417
+ mintPt: this.mintPt,
418
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
419
+ addressLookupTable: this.addressLookupTable,
420
+ syProgram: this.state.syProgram,
421
+ yieldPosition: this.state.yieldPositonAddress,
422
+ eventAuthority: this.eventAuthority,
423
+ program: this.coreProgram.programId,
424
+ },
425
+ remainingAccounts,
426
+ };
427
+ }
428
+ ixCollectTreasuryInterest({ signer, syDst, amount, kind, }) {
429
+ return this.coreProgram.methods
430
+ .collectTreasuryInterest(amount, kind)
431
+ .accountsStrict({
432
+ addressLookupTable: this.addressLookupTable,
433
+ signer,
434
+ vault: this.selfAddress,
435
+ admin: this.getAdminStatePda(),
436
+ authority: this.authority,
437
+ escrowSy: this.escrowSy,
438
+ syProgram: this.state.syProgram,
439
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
440
+ yieldPosition: this.state.yieldPositonAddress,
441
+ syDst,
442
+ })
443
+ .remainingAccounts(this.cpiAccounts.withdrawSy)
444
+ .instruction();
445
+ }
446
+ ixCollectTreasuryEmission({ index, amount, emissionDst, signer, kind, }) {
447
+ return this.coreProgram.methods
448
+ .collectTreasuryEmission(index, amount, kind)
449
+ .accountsStrict({
450
+ addressLookupTable: this.addressLookupTable,
451
+ vault: this.selfAddress,
452
+ admin: this.getAdminStatePda(),
453
+ authority: this.authority,
454
+ emissionDst,
455
+ emissionEscrow: this.state.emissions[index].tokenAccount,
456
+ signer,
457
+ syProgram: this.state.syProgram,
458
+ tokenProgram: this.syEmissions[index].tokenProgramAddress,
459
+ yieldPosition: this.state.yieldPositonAddress,
460
+ })
461
+ .remainingAccounts(this.cpiAccounts.claimEmission[index])
462
+ .instruction();
463
+ }
464
+ async ixAddStandaloneEmission({ signer, emissionMint, emissionTokenProgram = spl_token_1.TOKEN_PROGRAM_ID, treasuryTokenAccountEmission, treasuryFeeBps, altAddresses, cpiAccounts, }) {
465
+ const altUtil = (0, altUtil_1.extendAddressLookupTable)(altAddresses, cpiAccounts);
466
+ const tokenEmission = (0, spl_token_1.getAssociatedTokenAddressSync)(emissionMint, this.authority, true, emissionTokenProgram);
467
+ const ix = await this.coreProgram.methods
468
+ .addEmission(altUtil.cpiAccountIndexes, treasuryFeeBps)
469
+ .accountsStrict({
470
+ vault: this.selfAddress,
471
+ addressLookupTable: this.addressLookupTable,
472
+ admin: this.getAdminStatePda(),
473
+ authority: signer,
474
+ syProgram: this.state.syProgram,
475
+ yieldPosition: this.state.yieldPositonAddress,
476
+ robotTokenAccount: tokenEmission,
477
+ treasuryTokenAccount: treasuryTokenAccountEmission,
478
+ feePayer: signer,
479
+ systemProgram: anchor_1.web3.SystemProgram.programId,
480
+ })
481
+ .remainingAccounts(this.cpiAccounts.depositSy.concat(altUtil.addressLookupTableExtension.map((pubkey) => ({
482
+ pubkey,
483
+ isSigner: false,
484
+ isWritable: false,
485
+ }))))
486
+ .instruction();
487
+ return {
488
+ extendAddressLookupTableExtensionAccounts: altUtil.addressLookupTableExtension,
489
+ ix,
490
+ };
491
+ }
492
+ collectInterestAccounts({ owner, syDst, }) {
493
+ syDst = syDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintSy, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
494
+ const yieldPosition = this.pda.yieldPosition({ owner, vault: this.selfAddress });
495
+ const remainingAccounts = [...this.cpiAccounts.withdrawSy];
496
+ return {
497
+ mainAccounts: {
498
+ owner,
499
+ vault: this.selfAddress,
500
+ authority: this.authority,
501
+ escrowSy: this.escrowSy,
502
+ syProgram: this.state.syProgram,
503
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
504
+ yieldPosition,
505
+ addressLookupTable: this.addressLookupTable,
506
+ treasurySyTokenAccount: this.state.treasurySyTokenAccount,
507
+ tokenSyDst: syDst,
508
+ eventAuthority: this.eventAuthority,
509
+ program: this.coreProgram.programId,
510
+ },
511
+ remainingAccounts,
512
+ };
513
+ }
514
+ /** Construct accounts for Merge instruction */
515
+ mergeAccounts({ owner, ptSrc, ytSrc, syDst, }) {
516
+ ptSrc = ptSrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintPt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
517
+ ytSrc = ytSrc || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintYt, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
518
+ syDst = syDst || (0, spl_token_1.getAssociatedTokenAddressSync)(this.mintSy, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
519
+ const remainingAccounts = [...this.cpiAccounts.getSyState, ...this.cpiAccounts.withdrawSy];
520
+ return {
521
+ mainAccounts: {
522
+ owner,
523
+ authority: this.authority,
524
+ vault: this.selfAddress,
525
+ escrowSy: this.escrowSy,
526
+ ytSrc,
527
+ ptSrc,
528
+ syDst,
529
+ mintPt: this.mintPt,
530
+ mintYt: this.mintYt,
531
+ addressLookupTable: this.addressLookupTable,
532
+ syProgram: this.state.syProgram,
533
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
534
+ yieldPosition: this.state.yieldPositonAddress,
535
+ eventAuthority: this.eventAuthority,
536
+ program: this.coreProgram.programId,
537
+ },
538
+ remainingAccounts,
539
+ };
540
+ }
541
+ initializeYieldPositionAccounts({ owner, }) {
542
+ const yieldPosition = this.pda.yieldPosition({ owner, vault: this.selfAddress });
543
+ return {
544
+ mainAccounts: {
545
+ owner,
546
+ vault: this.selfAddress,
547
+ yieldPosition,
548
+ systemProgram: anchor_1.web3.SystemProgram.programId,
549
+ eventAuthority: this.eventAuthority,
550
+ program: this.coreProgram.programId,
551
+ },
552
+ remainingAccounts: [],
553
+ };
554
+ }
555
+ /** Construct accounts for Merge instruction */
556
+ configureVaultAccounts({ signer }) {
557
+ return {
558
+ mainAccounts: {
559
+ signer,
560
+ vault: this.selfAddress,
561
+ adminState: this.getAdminStatePda(),
562
+ systemProgram: anchor_1.web3.SystemProgram.programId,
563
+ },
564
+ remainingAccounts: [],
565
+ };
566
+ }
567
+ }
568
+ exports.Vault = Vault;
569
+ function toVaultState(vault) {
570
+ return {
571
+ ptSupply: BigInt(vault.ptSupply),
572
+ syForPt: BigInt(vault.syForPt),
573
+ startTs: vault.startTs,
574
+ durationSeconds: vault.duration,
575
+ authority: new anchor_1.web3.PublicKey(vault.authority),
576
+ addressLookupTable: new anchor_1.web3.PublicKey(vault.addressLookupTable),
577
+ lastSeenSyExchangeRate: vault.lastSeenSyExchangeRate,
578
+ allTimeHighSyExchangeRate: vault.allTimeHighSyExchangeRate,
579
+ escrowSy: new anchor_1.web3.PublicKey(vault.escrowSy),
580
+ escrowYt: new anchor_1.web3.PublicKey(vault.escrowYt),
581
+ syProgram: new anchor_1.web3.PublicKey(vault.syProgram),
582
+ syPosition: (0, syPosition_1.deserializeSyPosition)(vault.syPosition),
583
+ mintPt: new anchor_1.web3.PublicKey(vault.mintPt),
584
+ status: vault.status,
585
+ minOperationSizeStrip: BigInt(vault.minOperationSizeStrip),
586
+ minOperationSizeMerge: BigInt(vault.minOperationSizeMerge),
587
+ mintYt: new anchor_1.web3.PublicKey(vault.mintYt),
588
+ mintSy: new anchor_1.web3.PublicKey(vault.mintSy),
589
+ yieldPositonAddress: new anchor_1.web3.PublicKey(vault.yieldPositonAddress),
590
+ treasurySyTokenAccount: new anchor_1.web3.PublicKey(vault.treasurySyTokenAccount),
591
+ interestBpsFee: vault.interestFeeBps,
592
+ totalSyInEscrow: BigInt(vault.totalSyInEscrow),
593
+ cpiAccounts: (0, exponent_ix_1.deserializeCpiAccountsRaw)(vault.cpiAccounts),
594
+ finalSyExchangeRate: vault.finalSyExchangeRate,
595
+ flavor: (() => {
596
+ switch (vault.flavor.flavor) {
597
+ case "marginfi":
598
+ return (0, flavors_1.makeFlavorMarginfiSync)((0, flavors_1.deserializeFlavorMarginfi)(vault.flavor));
599
+ case "kamino":
600
+ return (0, flavors_1.makeFlavorKaminoSync)((0, flavors_1.deserializeFlavorKamino)(vault.flavor));
601
+ case "jitoRestaking":
602
+ return (0, flavors_1.makeFlavorJitoRestakingSync)((0, flavors_1.deserializeFlavorJitoRestaking)(vault.flavor));
603
+ case "perena":
604
+ return (0, flavors_1.makeFlavorPerenaSync)((0, flavors_1.deserializeFlavorParena)(vault.flavor));
605
+ case "generic":
606
+ return (0, flavors_1.makeFlavorGenericSync)((0, flavors_1.deserializeFlavorGeneric)(vault.flavor));
607
+ default:
608
+ throw new Error(`Unknown flavor: ${vault.flavor}`);
609
+ }
610
+ })(),
611
+ emissions: vault.emissions.map((e) => (0, exponent_fetcher_1.deserializeEmission)(e)),
612
+ maxPySupply: BigInt(vault.maxPySupply),
613
+ };
614
+ }
615
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}