@elmntl/vaults-v2 1.0.3 → 1.0.4

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.
@@ -20,7 +20,15 @@ export declare class ElementalV2Context {
20
20
  private defaultPositionData;
21
21
  createPositionInstruction(pool: Pool, ownerAddress?: PublicKey): Promise<TransactionInstruction>;
22
22
  depositInstructions(position: Position, amount: number | string, minOutput?: number | string): Promise<TransactionInstruction[]>;
23
- private getDepositRemainingAccounts;
23
+ /**
24
+ * Build the 22 remaining accounts required for OnRe CPI
25
+ *
26
+ * IMPORTANT: For OnRe adapter, pool_authority acts as the "user" in the CPI.
27
+ * This is because:
28
+ * - OnRe expects user_token_out_account.owner == user (the signer)
29
+ * - liquidityHolder is owned by pool_authority
30
+ * - Therefore pool_authority must be the "user" in the CPI
31
+ */
24
32
  private getOnReRemainingAccounts;
25
33
  deactivateInstructions(position: Position, amount: number | string): Promise<TransactionInstruction[]>;
26
34
  claimInstructions(position: Position): Promise<TransactionInstruction[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"elemental.d.ts","sourceRoot":"","sources":["../../src/programs/elemental.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elemental.d.ts","sourceRoot":"","sources":["../../src/programs/elemental.ts"],"names":[],"mappings":"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"}
@@ -110,6 +110,7 @@ class ElementalV2Context {
110
110
  instructions.push(await this.createPositionInstruction(position.pool));
111
111
  }
112
112
  const pool = position.pool;
113
+ const poolAuthority = pool.authorityAddress;
113
114
  const amountBN = new bn_js_1.default(new decimal_js_1.default(amount.toString())
114
115
  .mul(new decimal_js_1.default(pool.data.perTokenAmount.toString()))
115
116
  .toFixed(0));
@@ -119,81 +120,125 @@ class ElementalV2Context {
119
120
  .toFixed(0))
120
121
  : null;
121
122
  const userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, this.walletAddress);
122
- // Build base accounts
123
- const accounts = {
124
- positionOwner: {
125
- owner: this.walletAddress,
126
- position: position.address,
127
- pool: pool.address,
128
- },
129
- userTokenAccount,
130
- liquidityHolder: pool.liquidityHolderAddress,
131
- depositMint: pool.depositMintAddress,
132
- vaultMint: pool.vaultMintAddress,
133
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
134
- };
135
- // Add remaining accounts for adapter
136
- const remainingAccounts = await this.getDepositRemainingAccounts(pool);
137
- const depositIx = await this.program.methods
138
- .deposit(amountBN, minOutputBN)
139
- .accounts(accounts)
140
- .remainingAccounts(remainingAccounts)
141
- .instruction();
142
- instructions.push(depositIx);
143
- return instructions;
144
- }
145
- async getDepositRemainingAccounts(pool) {
123
+ // For OnRe adapter, we need to:
124
+ // 1. Create pool_authority's deposit token ATA if needed
125
+ // 2. Transfer user's tokens to pool_authority's ATA
126
+ // 3. Use pool_authority's ATA in the deposit instruction
146
127
  if (pool.adapterType === types_1.SwapAdapter.OnRe) {
147
- return this.getOnReRemainingAccounts(pool);
128
+ const poolAuthTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, poolAuthority, true // allowOwnerOffCurve for PDA
129
+ );
130
+ // Check if pool_authority's token account exists
131
+ try {
132
+ await (0, spl_token_1.getAccount)(this.connection, poolAuthTokenAccount);
133
+ }
134
+ catch (err) {
135
+ if (err instanceof spl_token_1.TokenAccountNotFoundError) {
136
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(this.walletAddress, poolAuthTokenAccount, poolAuthority, pool.depositMintAddress));
137
+ }
138
+ else {
139
+ throw err;
140
+ }
141
+ }
142
+ // Transfer user's tokens to pool_authority's ATA
143
+ instructions.push((0, spl_token_1.createTransferInstruction)(userTokenAccount, poolAuthTokenAccount, this.walletAddress, BigInt(amountBN.toString())));
144
+ // Build remaining accounts for OnRe CPI
145
+ const remainingAccounts = await this.getOnReRemainingAccounts(pool, poolAuthTokenAccount);
146
+ // Build deposit instruction
147
+ const depositIx = await this.program.methods
148
+ .deposit(amountBN, minOutputBN)
149
+ .accounts({
150
+ positionOwner: {
151
+ owner: this.walletAddress,
152
+ position: position.address,
153
+ pool: pool.address,
154
+ },
155
+ userTokenAccount, // This is user's original account (for accounting)
156
+ liquidityHolder: pool.liquidityHolderAddress,
157
+ depositMint: pool.depositMintAddress,
158
+ vaultMint: pool.vaultMintAddress,
159
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
160
+ })
161
+ .remainingAccounts(remainingAccounts)
162
+ .instruction();
163
+ instructions.push(depositIx);
164
+ }
165
+ else {
166
+ // Direct adapter - simple flow
167
+ const depositIx = await this.program.methods
168
+ .deposit(amountBN, minOutputBN)
169
+ .accounts({
170
+ positionOwner: {
171
+ owner: this.walletAddress,
172
+ position: position.address,
173
+ pool: pool.address,
174
+ },
175
+ userTokenAccount,
176
+ liquidityHolder: pool.liquidityHolderAddress,
177
+ depositMint: pool.depositMintAddress,
178
+ vaultMint: pool.vaultMintAddress,
179
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
180
+ })
181
+ .instruction();
182
+ instructions.push(depositIx);
148
183
  }
149
- // Direct adapter - no remaining accounts needed
150
- return [];
184
+ return instructions;
151
185
  }
152
- async getOnReRemainingAccounts(pool) {
186
+ /**
187
+ * Build the 22 remaining accounts required for OnRe CPI
188
+ *
189
+ * IMPORTANT: For OnRe adapter, pool_authority acts as the "user" in the CPI.
190
+ * This is because:
191
+ * - OnRe expects user_token_out_account.owner == user (the signer)
192
+ * - liquidityHolder is owned by pool_authority
193
+ * - Therefore pool_authority must be the "user" in the CPI
194
+ */
195
+ async getOnReRemainingAccounts(pool, poolAuthTokenAccount) {
153
196
  const onreOffer = pool.onReOfferAddress;
154
197
  if (!onreOffer)
155
198
  throw new Error("OnRe offer not configured");
156
- // Derive OnRe PDAs (these are program-derived, not stored in offer)
157
- const [vaultAuthority] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("offer_vault_authority")], types_1.ONRE_PROGRAM_ID);
199
+ const poolAuthority = pool.authorityAddress;
200
+ // Derive OnRe PDAs
201
+ const [onreVaultAuth] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("offer_vault_authority")], types_1.ONRE_PROGRAM_ID);
158
202
  const [permissionlessAuth] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("permissionless-1")], types_1.ONRE_PROGRAM_ID);
159
203
  const [mintAuthority] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("mint_authority")], types_1.ONRE_PROGRAM_ID);
160
- // Fetch boss from OnRe state account (not from offer)
161
- const stateInfo = await this.connection.getAccountInfo(types_1.ONRE_STATE);
162
- if (!stateInfo)
163
- throw new Error("OnRe state account not found");
164
- // State account structure: 8 byte discriminator, then boss pubkey at offset 8
165
- const boss = new web3_js_1.PublicKey(stateInfo.data.slice(8, 40));
166
- // Get vault token accounts
167
- const vaultTokenIn = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, vaultAuthority, true);
168
- const vaultTokenOut = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.vaultMintAddress, vaultAuthority, true);
169
- // User's deposit token account
170
- const userTokenIn = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, this.walletAddress);
204
+ // OnRe state PDA
205
+ const [onreState] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("state")], types_1.ONRE_PROGRAM_ID);
206
+ // OnRe offer PDA (derived from token pair)
207
+ const [onreOfferPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("offer"), pool.depositMintAddress.toBuffer(), pool.vaultMintAddress.toBuffer()], types_1.ONRE_PROGRAM_ID);
208
+ // Boss - hardcoded for mainnet (from OnRe state account)
209
+ const boss = new web3_js_1.PublicKey("45YnzauhsBM8CpUz96Djf8UG5vqq2Dua62wuW9H3jaJ5");
210
+ // OnRe vault token accounts (owned by OnRe vault_authority)
211
+ const onreVaultUsdcAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, onreVaultAuth, true);
212
+ const onreVaultOnycAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.vaultMintAddress, onreVaultAuth, true);
213
+ // Permissionless token accounts
214
+ const permTokenIn = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, permissionlessAuth, true);
215
+ const permTokenOut = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.vaultMintAddress, permissionlessAuth, true);
171
216
  // Boss token account
172
217
  const bossTokenIn = (0, spl_token_1.getAssociatedTokenAddressSync)(pool.depositMintAddress, boss, true);
173
- // 22 accounts for OnRe CPI
218
+ // 22 accounts for OnRe CPI - ORDER MATTERS!
174
219
  return [
175
- { pubkey: types_1.ONRE_PROGRAM_ID, isSigner: false, isWritable: false },
176
- { pubkey: onreOffer, isSigner: false, isWritable: true },
177
- { pubkey: types_1.ONRE_STATE, isSigner: false, isWritable: false },
178
- { pubkey: boss, isSigner: false, isWritable: false },
179
- { pubkey: vaultAuthority, isSigner: false, isWritable: false },
180
- { pubkey: vaultTokenIn, isSigner: false, isWritable: true },
181
- { pubkey: vaultTokenOut, isSigner: false, isWritable: true },
182
- { pubkey: permissionlessAuth, isSigner: false, isWritable: false },
183
- { pubkey: userTokenIn, isSigner: false, isWritable: true }, // permissionless_token_in
184
- { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true }, // permissionless_token_out
185
- { pubkey: pool.depositMintAddress, isSigner: false, isWritable: true },
186
- { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // token_in_program
187
- { pubkey: pool.vaultMintAddress, isSigner: false, isWritable: true },
188
- { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // token_out_program
189
- { pubkey: userTokenIn, isSigner: false, isWritable: true },
190
- { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true },
191
- { pubkey: bossTokenIn, isSigner: false, isWritable: true },
192
- { pubkey: mintAuthority, isSigner: false, isWritable: false },
193
- { pubkey: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },
194
- { pubkey: this.walletAddress, isSigner: true, isWritable: false },
195
- { pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
196
- { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
220
+ { pubkey: types_1.ONRE_PROGRAM_ID, isSigner: false, isWritable: false }, // 0: onre_program
221
+ { pubkey: onreOfferPda, isSigner: false, isWritable: true }, // 1: offer
222
+ { pubkey: onreState, isSigner: false, isWritable: false }, // 2: state
223
+ { pubkey: boss, isSigner: false, isWritable: false }, // 3: boss
224
+ { pubkey: onreVaultAuth, isSigner: false, isWritable: false }, // 4: vault_authority
225
+ { pubkey: onreVaultUsdcAccount, isSigner: false, isWritable: true }, // 5: vault_token_in_account
226
+ { pubkey: onreVaultOnycAccount, isSigner: false, isWritable: true }, // 6: vault_token_out_account
227
+ { pubkey: permissionlessAuth, isSigner: false, isWritable: false }, // 7: permissionless_authority
228
+ { pubkey: permTokenIn, isSigner: false, isWritable: true }, // 8: permissionless_token_in_account
229
+ { pubkey: permTokenOut, isSigner: false, isWritable: true }, // 9: permissionless_token_out_account
230
+ { pubkey: pool.depositMintAddress, isSigner: false, isWritable: true }, // 10: token_in_mint
231
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // 11: token_in_program
232
+ { pubkey: pool.vaultMintAddress, isSigner: false, isWritable: true }, // 12: token_out_mint
233
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // 13: token_out_program
234
+ { pubkey: poolAuthTokenAccount, isSigner: false, isWritable: true }, // 14: user_token_in_account (pool_authority's ATA!)
235
+ { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true }, // 15: user_token_out_account (vault's liquidity holder)
236
+ { pubkey: bossTokenIn, isSigner: false, isWritable: true }, // 16: boss_token_in_account
237
+ { pubkey: mintAuthority, isSigner: false, isWritable: false }, // 17: mint_authority
238
+ { pubkey: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false }, // 18: instructions_sysvar
239
+ { pubkey: poolAuthority, isSigner: false, isWritable: true }, // 19: user (pool_authority signs via CPI!)
240
+ { pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // 20: associated_token_program
241
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false }, // 21: system_program
197
242
  ];
198
243
  }
199
244
  async deactivateInstructions(position, amount) {
@@ -1 +1 @@
1
- {"version":3,"file":"elemental.js","sourceRoot":"","sources":["../../src/programs/elemental.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elemental.js","sourceRoot":"","sources":["../../src/programs/elemental.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elmntl/vaults-v2",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "SDK for Elemental Vault V2 (ELE6) - Multi-mint vault with swap adapters",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,6 +17,7 @@ import {
17
17
  ASSOCIATED_TOKEN_PROGRAM_ID,
18
18
  getAssociatedTokenAddressSync,
19
19
  createAssociatedTokenAccountInstruction,
20
+ createTransferInstruction,
20
21
  getAccount,
21
22
  TokenAccountNotFoundError,
22
23
  } from "@solana/spl-token";
@@ -181,6 +182,8 @@ export class ElementalV2Context {
181
182
  }
182
183
 
183
184
  const pool = position.pool;
185
+ const poolAuthority = pool.authorityAddress;
186
+
184
187
  const amountBN = new BN(
185
188
  new Decimal(amount.toString())
186
189
  .mul(new Decimal(pool.data.perTokenAmount.toString()))
@@ -200,51 +203,111 @@ export class ElementalV2Context {
200
203
  this.walletAddress
201
204
  );
202
205
 
203
- // Build base accounts
204
- const accounts = {
205
- positionOwner: {
206
- owner: this.walletAddress,
207
- position: position.address,
208
- pool: pool.address,
209
- },
210
- userTokenAccount,
211
- liquidityHolder: pool.liquidityHolderAddress,
212
- depositMint: pool.depositMintAddress,
213
- vaultMint: pool.vaultMintAddress,
214
- tokenProgram: TOKEN_PROGRAM_ID,
215
- };
216
-
217
- // Add remaining accounts for adapter
218
- const remainingAccounts = await this.getDepositRemainingAccounts(pool);
206
+ // For OnRe adapter, we need to:
207
+ // 1. Create pool_authority's deposit token ATA if needed
208
+ // 2. Transfer user's tokens to pool_authority's ATA
209
+ // 3. Use pool_authority's ATA in the deposit instruction
210
+ if (pool.adapterType === SwapAdapter.OnRe) {
211
+ const poolAuthTokenAccount = getAssociatedTokenAddressSync(
212
+ pool.depositMintAddress,
213
+ poolAuthority,
214
+ true // allowOwnerOffCurve for PDA
215
+ );
216
+
217
+ // Check if pool_authority's token account exists
218
+ try {
219
+ await getAccount(this.connection, poolAuthTokenAccount);
220
+ } catch (err) {
221
+ if (err instanceof TokenAccountNotFoundError) {
222
+ instructions.push(
223
+ createAssociatedTokenAccountInstruction(
224
+ this.walletAddress,
225
+ poolAuthTokenAccount,
226
+ poolAuthority,
227
+ pool.depositMintAddress
228
+ )
229
+ );
230
+ } else {
231
+ throw err;
232
+ }
233
+ }
219
234
 
220
- const depositIx = await (this.program.methods as any)
221
- .deposit(amountBN, minOutputBN)
222
- .accounts(accounts)
223
- .remainingAccounts(remainingAccounts)
224
- .instruction();
235
+ // Transfer user's tokens to pool_authority's ATA
236
+ instructions.push(
237
+ createTransferInstruction(
238
+ userTokenAccount,
239
+ poolAuthTokenAccount,
240
+ this.walletAddress,
241
+ BigInt(amountBN.toString())
242
+ )
243
+ );
244
+
245
+ // Build remaining accounts for OnRe CPI
246
+ const remainingAccounts = await this.getOnReRemainingAccounts(pool, poolAuthTokenAccount);
247
+
248
+ // Build deposit instruction
249
+ const depositIx = await (this.program.methods as any)
250
+ .deposit(amountBN, minOutputBN)
251
+ .accounts({
252
+ positionOwner: {
253
+ owner: this.walletAddress,
254
+ position: position.address,
255
+ pool: pool.address,
256
+ },
257
+ userTokenAccount, // This is user's original account (for accounting)
258
+ liquidityHolder: pool.liquidityHolderAddress,
259
+ depositMint: pool.depositMintAddress,
260
+ vaultMint: pool.vaultMintAddress,
261
+ tokenProgram: TOKEN_PROGRAM_ID,
262
+ })
263
+ .remainingAccounts(remainingAccounts)
264
+ .instruction();
265
+
266
+ instructions.push(depositIx);
267
+ } else {
268
+ // Direct adapter - simple flow
269
+ const depositIx = await (this.program.methods as any)
270
+ .deposit(amountBN, minOutputBN)
271
+ .accounts({
272
+ positionOwner: {
273
+ owner: this.walletAddress,
274
+ position: position.address,
275
+ pool: pool.address,
276
+ },
277
+ userTokenAccount,
278
+ liquidityHolder: pool.liquidityHolderAddress,
279
+ depositMint: pool.depositMintAddress,
280
+ vaultMint: pool.vaultMintAddress,
281
+ tokenProgram: TOKEN_PROGRAM_ID,
282
+ })
283
+ .instruction();
284
+
285
+ instructions.push(depositIx);
286
+ }
225
287
 
226
- instructions.push(depositIx);
227
288
  return instructions;
228
289
  }
229
290
 
230
- private async getDepositRemainingAccounts(
231
- pool: Pool
232
- ): Promise<{ pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[]> {
233
- if (pool.adapterType === SwapAdapter.OnRe) {
234
- return this.getOnReRemainingAccounts(pool);
235
- }
236
- // Direct adapter - no remaining accounts needed
237
- return [];
238
- }
239
-
291
+ /**
292
+ * Build the 22 remaining accounts required for OnRe CPI
293
+ *
294
+ * IMPORTANT: For OnRe adapter, pool_authority acts as the "user" in the CPI.
295
+ * This is because:
296
+ * - OnRe expects user_token_out_account.owner == user (the signer)
297
+ * - liquidityHolder is owned by pool_authority
298
+ * - Therefore pool_authority must be the "user" in the CPI
299
+ */
240
300
  private async getOnReRemainingAccounts(
241
- pool: Pool
301
+ pool: Pool,
302
+ poolAuthTokenAccount: PublicKey
242
303
  ): Promise<{ pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[]> {
243
304
  const onreOffer = pool.onReOfferAddress;
244
305
  if (!onreOffer) throw new Error("OnRe offer not configured");
245
306
 
246
- // Derive OnRe PDAs (these are program-derived, not stored in offer)
247
- const [vaultAuthority] = PublicKey.findProgramAddressSync(
307
+ const poolAuthority = pool.authorityAddress;
308
+
309
+ // Derive OnRe PDAs
310
+ const [onreVaultAuth] = PublicKey.findProgramAddressSync(
248
311
  [Buffer.from("offer_vault_authority")],
249
312
  ONRE_PROGRAM_ID
250
313
  );
@@ -259,28 +322,43 @@ export class ElementalV2Context {
259
322
  ONRE_PROGRAM_ID
260
323
  );
261
324
 
262
- // Fetch boss from OnRe state account (not from offer)
263
- const stateInfo = await this.connection.getAccountInfo(ONRE_STATE);
264
- if (!stateInfo) throw new Error("OnRe state account not found");
265
- // State account structure: 8 byte discriminator, then boss pubkey at offset 8
266
- const boss = new PublicKey(stateInfo.data.slice(8, 40));
325
+ // OnRe state PDA
326
+ const [onreState] = PublicKey.findProgramAddressSync(
327
+ [Buffer.from("state")],
328
+ ONRE_PROGRAM_ID
329
+ );
267
330
 
268
- // Get vault token accounts
269
- const vaultTokenIn = getAssociatedTokenAddressSync(
331
+ // OnRe offer PDA (derived from token pair)
332
+ const [onreOfferPda] = PublicKey.findProgramAddressSync(
333
+ [Buffer.from("offer"), pool.depositMintAddress.toBuffer(), pool.vaultMintAddress.toBuffer()],
334
+ ONRE_PROGRAM_ID
335
+ );
336
+
337
+ // Boss - hardcoded for mainnet (from OnRe state account)
338
+ const boss = new PublicKey("45YnzauhsBM8CpUz96Djf8UG5vqq2Dua62wuW9H3jaJ5");
339
+
340
+ // OnRe vault token accounts (owned by OnRe vault_authority)
341
+ const onreVaultUsdcAccount = getAssociatedTokenAddressSync(
270
342
  pool.depositMintAddress,
271
- vaultAuthority,
343
+ onreVaultAuth,
272
344
  true
273
345
  );
274
- const vaultTokenOut = getAssociatedTokenAddressSync(
346
+ const onreVaultOnycAccount = getAssociatedTokenAddressSync(
275
347
  pool.vaultMintAddress,
276
- vaultAuthority,
348
+ onreVaultAuth,
277
349
  true
278
350
  );
279
351
 
280
- // User's deposit token account
281
- const userTokenIn = getAssociatedTokenAddressSync(
352
+ // Permissionless token accounts
353
+ const permTokenIn = getAssociatedTokenAddressSync(
282
354
  pool.depositMintAddress,
283
- this.walletAddress
355
+ permissionlessAuth,
356
+ true
357
+ );
358
+ const permTokenOut = getAssociatedTokenAddressSync(
359
+ pool.vaultMintAddress,
360
+ permissionlessAuth,
361
+ true
284
362
  );
285
363
 
286
364
  // Boss token account
@@ -290,30 +368,30 @@ export class ElementalV2Context {
290
368
  true
291
369
  );
292
370
 
293
- // 22 accounts for OnRe CPI
371
+ // 22 accounts for OnRe CPI - ORDER MATTERS!
294
372
  return [
295
- { pubkey: ONRE_PROGRAM_ID, isSigner: false, isWritable: false },
296
- { pubkey: onreOffer, isSigner: false, isWritable: true },
297
- { pubkey: ONRE_STATE, isSigner: false, isWritable: false },
298
- { pubkey: boss, isSigner: false, isWritable: false },
299
- { pubkey: vaultAuthority, isSigner: false, isWritable: false },
300
- { pubkey: vaultTokenIn, isSigner: false, isWritable: true },
301
- { pubkey: vaultTokenOut, isSigner: false, isWritable: true },
302
- { pubkey: permissionlessAuth, isSigner: false, isWritable: false },
303
- { pubkey: userTokenIn, isSigner: false, isWritable: true }, // permissionless_token_in
304
- { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true }, // permissionless_token_out
305
- { pubkey: pool.depositMintAddress, isSigner: false, isWritable: true },
306
- { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // token_in_program
307
- { pubkey: pool.vaultMintAddress, isSigner: false, isWritable: true },
308
- { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // token_out_program
309
- { pubkey: userTokenIn, isSigner: false, isWritable: true },
310
- { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true },
311
- { pubkey: bossTokenIn, isSigner: false, isWritable: true },
312
- { pubkey: mintAuthority, isSigner: false, isWritable: false },
313
- { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },
314
- { pubkey: this.walletAddress, isSigner: true, isWritable: false },
315
- { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
316
- { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
373
+ { pubkey: ONRE_PROGRAM_ID, isSigner: false, isWritable: false }, // 0: onre_program
374
+ { pubkey: onreOfferPda, isSigner: false, isWritable: true }, // 1: offer
375
+ { pubkey: onreState, isSigner: false, isWritable: false }, // 2: state
376
+ { pubkey: boss, isSigner: false, isWritable: false }, // 3: boss
377
+ { pubkey: onreVaultAuth, isSigner: false, isWritable: false }, // 4: vault_authority
378
+ { pubkey: onreVaultUsdcAccount, isSigner: false, isWritable: true }, // 5: vault_token_in_account
379
+ { pubkey: onreVaultOnycAccount, isSigner: false, isWritable: true }, // 6: vault_token_out_account
380
+ { pubkey: permissionlessAuth, isSigner: false, isWritable: false }, // 7: permissionless_authority
381
+ { pubkey: permTokenIn, isSigner: false, isWritable: true }, // 8: permissionless_token_in_account
382
+ { pubkey: permTokenOut, isSigner: false, isWritable: true }, // 9: permissionless_token_out_account
383
+ { pubkey: pool.depositMintAddress, isSigner: false, isWritable: true }, // 10: token_in_mint
384
+ { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // 11: token_in_program
385
+ { pubkey: pool.vaultMintAddress, isSigner: false, isWritable: true }, // 12: token_out_mint
386
+ { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // 13: token_out_program
387
+ { pubkey: poolAuthTokenAccount, isSigner: false, isWritable: true }, // 14: user_token_in_account (pool_authority's ATA!)
388
+ { pubkey: pool.liquidityHolderAddress, isSigner: false, isWritable: true }, // 15: user_token_out_account (vault's liquidity holder)
389
+ { pubkey: bossTokenIn, isSigner: false, isWritable: true }, // 16: boss_token_in_account
390
+ { pubkey: mintAuthority, isSigner: false, isWritable: false }, // 17: mint_authority
391
+ { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false }, // 18: instructions_sysvar
392
+ { pubkey: poolAuthority, isSigner: false, isWritable: true }, // 19: user (pool_authority signs via CPI!)
393
+ { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },// 20: associated_token_program
394
+ { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, // 21: system_program
317
395
  ];
318
396
  }
319
397