@crypticdot/defituna-client 3.0.4 → 3.1.1

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 CHANGED
@@ -49,7 +49,6 @@ __export(index_exports, {
49
49
  DECREASE_TUNA_SPOT_POSITION_FUSION_DISCRIMINATOR: () => DECREASE_TUNA_SPOT_POSITION_FUSION_DISCRIMINATOR,
50
50
  DECREASE_TUNA_SPOT_POSITION_ORCA_DISCRIMINATOR: () => DECREASE_TUNA_SPOT_POSITION_ORCA_DISCRIMINATOR,
51
51
  DEFAULT_ADDRESS: () => DEFAULT_ADDRESS,
52
- DEFAULT_MAX_AMOUNT_SLIPPAGE: () => DEFAULT_MAX_AMOUNT_SLIPPAGE,
53
52
  DEFAULT_MAX_SWAP_SLIPPAGE: () => DEFAULT_MAX_SWAP_SLIPPAGE,
54
53
  DEFAULT_PUSH_ORACLE_PROGRAM_ID: () => DEFAULT_PUSH_ORACLE_PROGRAM_ID,
55
54
  DEPOSIT_DISCRIMINATOR: () => DEPOSIT_DISCRIMINATOR,
@@ -349,6 +348,7 @@ __export(index_exports, {
349
348
  getDepositInstructionDataCodec: () => getDepositInstructionDataCodec,
350
349
  getDepositInstructionDataDecoder: () => getDepositInstructionDataDecoder,
351
350
  getDepositInstructionDataEncoder: () => getDepositInstructionDataEncoder,
351
+ getIncreaseLpPositionQuote: () => getIncreaseLpPositionQuote,
352
352
  getIncreaseTunaLpPositionFusionDiscriminatorBytes: () => getIncreaseTunaLpPositionFusionDiscriminatorBytes,
353
353
  getIncreaseTunaLpPositionFusionInstruction: () => getIncreaseTunaLpPositionFusionInstruction,
354
354
  getIncreaseTunaLpPositionFusionInstructionDataCodec: () => getIncreaseTunaLpPositionFusionInstructionDataCodec,
@@ -396,7 +396,6 @@ __export(index_exports, {
396
396
  getLiquidateTunaSpotPositionOrcaInstructionDataCodec: () => getLiquidateTunaSpotPositionOrcaInstructionDataCodec,
397
397
  getLiquidateTunaSpotPositionOrcaInstructionDataDecoder: () => getLiquidateTunaSpotPositionOrcaInstructionDataDecoder,
398
398
  getLiquidateTunaSpotPositionOrcaInstructionDataEncoder: () => getLiquidateTunaSpotPositionOrcaInstructionDataEncoder,
399
- getLiquidityIncreaseQuote: () => getLiquidityIncreaseQuote,
400
399
  getMarketAddress: () => getMarketAddress,
401
400
  getMarketCodec: () => getMarketCodec,
402
401
  getMarketDecoder: () => getMarketDecoder,
@@ -699,7 +698,6 @@ __export(index_exports, {
699
698
  tunaSpotPositionAuthorityFilter: () => tunaSpotPositionAuthorityFilter,
700
699
  tunaSpotPositionMintAFilter: () => tunaSpotPositionMintAFilter,
701
700
  tunaSpotPositionMintBFilter: () => tunaSpotPositionMintBFilter,
702
- tunaSpotPositionMintFilter: () => tunaSpotPositionMintFilter,
703
701
  tunaSpotPositionPoolFilter: () => tunaSpotPositionPoolFilter,
704
702
  updateMarketInstruction: () => updateMarketInstruction,
705
703
  updateVaultInstruction: () => updateVaultInstruction,
@@ -1250,12 +1248,10 @@ function getTunaSpotPositionEncoder() {
1250
1248
  ["pool", (0, import_kit11.getAddressEncoder)()],
1251
1249
  ["mintA", (0, import_kit11.getAddressEncoder)()],
1252
1250
  ["mintB", (0, import_kit11.getAddressEncoder)()],
1253
- ["positionMint", (0, import_kit11.getAddressEncoder)()],
1254
1251
  ["marketMaker", getMarketMakerEncoder()],
1255
1252
  ["positionToken", getPoolTokenEncoder()],
1256
1253
  ["collateralToken", getPoolTokenEncoder()],
1257
1254
  ["flags", (0, import_kit11.getU32Encoder)()],
1258
- ["state", getTunaPositionStateEncoder()],
1259
1255
  ["amount", (0, import_kit11.getU64Encoder)()],
1260
1256
  ["loanShares", (0, import_kit11.getU64Encoder)()],
1261
1257
  ["loanFunds", (0, import_kit11.getU64Encoder)()],
@@ -1276,12 +1272,10 @@ function getTunaSpotPositionDecoder() {
1276
1272
  ["pool", (0, import_kit11.getAddressDecoder)()],
1277
1273
  ["mintA", (0, import_kit11.getAddressDecoder)()],
1278
1274
  ["mintB", (0, import_kit11.getAddressDecoder)()],
1279
- ["positionMint", (0, import_kit11.getAddressDecoder)()],
1280
1275
  ["marketMaker", getMarketMakerDecoder()],
1281
1276
  ["positionToken", getPoolTokenDecoder()],
1282
1277
  ["collateralToken", getPoolTokenDecoder()],
1283
1278
  ["flags", (0, import_kit11.getU32Decoder)()],
1284
- ["state", getTunaPositionStateDecoder()],
1285
1279
  ["amount", (0, import_kit11.getU64Decoder)()],
1286
1280
  ["loanShares", (0, import_kit11.getU64Decoder)()],
1287
1281
  ["loanFunds", (0, import_kit11.getU64Decoder)()],
@@ -1328,7 +1322,7 @@ async function fetchAllMaybeTunaSpotPosition(rpc, addresses, config) {
1328
1322
  );
1329
1323
  }
1330
1324
  function getTunaSpotPositionSize() {
1331
- return 379;
1325
+ return 346;
1332
1326
  }
1333
1327
 
1334
1328
  // src/generated/accounts/vault.ts
@@ -5959,6 +5953,18 @@ function getLiquidateTunaSpotPositionFusionInstruction(input, config) {
5959
5953
  value: input.feeRecipientAtaB ?? null,
5960
5954
  isWritable: true
5961
5955
  },
5956
+ tunaPositionOwner: {
5957
+ value: input.tunaPositionOwner ?? null,
5958
+ isWritable: true
5959
+ },
5960
+ tunaPositionOwnerAtaA: {
5961
+ value: input.tunaPositionOwnerAtaA ?? null,
5962
+ isWritable: true
5963
+ },
5964
+ tunaPositionOwnerAtaB: {
5965
+ value: input.tunaPositionOwnerAtaB ?? null,
5966
+ isWritable: true
5967
+ },
5962
5968
  pythOraclePriceFeedA: {
5963
5969
  value: input.pythOraclePriceFeedA ?? null,
5964
5970
  isWritable: false
@@ -5999,6 +6005,9 @@ function getLiquidateTunaSpotPositionFusionInstruction(input, config) {
5999
6005
  getAccountMeta(accounts.tunaPositionAtaB),
6000
6006
  getAccountMeta(accounts.feeRecipientAtaA),
6001
6007
  getAccountMeta(accounts.feeRecipientAtaB),
6008
+ getAccountMeta(accounts.tunaPositionOwner),
6009
+ getAccountMeta(accounts.tunaPositionOwnerAtaA),
6010
+ getAccountMeta(accounts.tunaPositionOwnerAtaB),
6002
6011
  getAccountMeta(accounts.pythOraclePriceFeedA),
6003
6012
  getAccountMeta(accounts.pythOraclePriceFeedB),
6004
6013
  getAccountMeta(accounts.fusionammProgram),
@@ -6014,7 +6023,7 @@ function getLiquidateTunaSpotPositionFusionInstruction(input, config) {
6014
6023
  return instruction;
6015
6024
  }
6016
6025
  function parseLiquidateTunaSpotPositionFusionInstruction(instruction) {
6017
- if (instruction.accounts.length < 22) {
6026
+ if (instruction.accounts.length < 25) {
6018
6027
  throw new Error("Not enough accounts");
6019
6028
  }
6020
6029
  let accountIndex = 0;
@@ -6023,6 +6032,10 @@ function parseLiquidateTunaSpotPositionFusionInstruction(instruction) {
6023
6032
  accountIndex += 1;
6024
6033
  return accountMeta;
6025
6034
  };
6035
+ const getNextOptionalAccount = () => {
6036
+ const accountMeta = getNextAccount();
6037
+ return accountMeta.address === TUNA_PROGRAM_ADDRESS ? void 0 : accountMeta;
6038
+ };
6026
6039
  return {
6027
6040
  programAddress: instruction.programAddress,
6028
6041
  accounts: {
@@ -6042,6 +6055,9 @@ function parseLiquidateTunaSpotPositionFusionInstruction(instruction) {
6042
6055
  tunaPositionAtaB: getNextAccount(),
6043
6056
  feeRecipientAtaA: getNextAccount(),
6044
6057
  feeRecipientAtaB: getNextAccount(),
6058
+ tunaPositionOwner: getNextAccount(),
6059
+ tunaPositionOwnerAtaA: getNextOptionalAccount(),
6060
+ tunaPositionOwnerAtaB: getNextOptionalAccount(),
6045
6061
  pythOraclePriceFeedA: getNextAccount(),
6046
6062
  pythOraclePriceFeedB: getNextAccount(),
6047
6063
  fusionammProgram: getNextAccount(),
@@ -6129,6 +6145,18 @@ function getLiquidateTunaSpotPositionOrcaInstruction(input, config) {
6129
6145
  value: input.feeRecipientAtaB ?? null,
6130
6146
  isWritable: true
6131
6147
  },
6148
+ tunaPositionOwner: {
6149
+ value: input.tunaPositionOwner ?? null,
6150
+ isWritable: true
6151
+ },
6152
+ tunaPositionOwnerAtaA: {
6153
+ value: input.tunaPositionOwnerAtaA ?? null,
6154
+ isWritable: true
6155
+ },
6156
+ tunaPositionOwnerAtaB: {
6157
+ value: input.tunaPositionOwnerAtaB ?? null,
6158
+ isWritable: true
6159
+ },
6132
6160
  pythOraclePriceFeedA: {
6133
6161
  value: input.pythOraclePriceFeedA ?? null,
6134
6162
  isWritable: false
@@ -6169,6 +6197,9 @@ function getLiquidateTunaSpotPositionOrcaInstruction(input, config) {
6169
6197
  getAccountMeta(accounts.tunaPositionAtaB),
6170
6198
  getAccountMeta(accounts.feeRecipientAtaA),
6171
6199
  getAccountMeta(accounts.feeRecipientAtaB),
6200
+ getAccountMeta(accounts.tunaPositionOwner),
6201
+ getAccountMeta(accounts.tunaPositionOwnerAtaA),
6202
+ getAccountMeta(accounts.tunaPositionOwnerAtaB),
6172
6203
  getAccountMeta(accounts.pythOraclePriceFeedA),
6173
6204
  getAccountMeta(accounts.pythOraclePriceFeedB),
6174
6205
  getAccountMeta(accounts.whirlpoolProgram),
@@ -6184,7 +6215,7 @@ function getLiquidateTunaSpotPositionOrcaInstruction(input, config) {
6184
6215
  return instruction;
6185
6216
  }
6186
6217
  function parseLiquidateTunaSpotPositionOrcaInstruction(instruction) {
6187
- if (instruction.accounts.length < 22) {
6218
+ if (instruction.accounts.length < 25) {
6188
6219
  throw new Error("Not enough accounts");
6189
6220
  }
6190
6221
  let accountIndex = 0;
@@ -6193,6 +6224,10 @@ function parseLiquidateTunaSpotPositionOrcaInstruction(instruction) {
6193
6224
  accountIndex += 1;
6194
6225
  return accountMeta;
6195
6226
  };
6227
+ const getNextOptionalAccount = () => {
6228
+ const accountMeta = getNextAccount();
6229
+ return accountMeta.address === TUNA_PROGRAM_ADDRESS ? void 0 : accountMeta;
6230
+ };
6196
6231
  return {
6197
6232
  programAddress: instruction.programAddress,
6198
6233
  accounts: {
@@ -6212,6 +6247,9 @@ function parseLiquidateTunaSpotPositionOrcaInstruction(instruction) {
6212
6247
  tunaPositionAtaB: getNextAccount(),
6213
6248
  feeRecipientAtaA: getNextAccount(),
6214
6249
  feeRecipientAtaB: getNextAccount(),
6250
+ tunaPositionOwner: getNextAccount(),
6251
+ tunaPositionOwnerAtaA: getNextOptionalAccount(),
6252
+ tunaPositionOwnerAtaB: getNextOptionalAccount(),
6215
6253
  pythOraclePriceFeedA: getNextAccount(),
6216
6254
  pythOraclePriceFeedB: getNextAccount(),
6217
6255
  whirlpoolProgram: getNextAccount(),
@@ -6738,10 +6776,6 @@ function getOpenAndIncreaseTunaSpotPositionFusionInstruction(input, config) {
6738
6776
  vaultAAta: { value: input.vaultAAta ?? null, isWritable: true },
6739
6777
  vaultBAta: { value: input.vaultBAta ?? null, isWritable: true },
6740
6778
  tunaPosition: { value: input.tunaPosition ?? null, isWritable: true },
6741
- tunaPositionMint: {
6742
- value: input.tunaPositionMint ?? null,
6743
- isWritable: false
6744
- },
6745
6779
  tunaPositionAtaA: {
6746
6780
  value: input.tunaPositionAtaA ?? null,
6747
6781
  isWritable: true
@@ -6806,7 +6840,6 @@ function getOpenAndIncreaseTunaSpotPositionFusionInstruction(input, config) {
6806
6840
  getAccountMeta(accounts.vaultAAta),
6807
6841
  getAccountMeta(accounts.vaultBAta),
6808
6842
  getAccountMeta(accounts.tunaPosition),
6809
- getAccountMeta(accounts.tunaPositionMint),
6810
6843
  getAccountMeta(accounts.tunaPositionAtaA),
6811
6844
  getAccountMeta(accounts.tunaPositionAtaB),
6812
6845
  getAccountMeta(accounts.tunaPositionOwnerAtaA),
@@ -6829,7 +6862,7 @@ function getOpenAndIncreaseTunaSpotPositionFusionInstruction(input, config) {
6829
6862
  return instruction;
6830
6863
  }
6831
6864
  function parseOpenAndIncreaseTunaSpotPositionFusionInstruction(instruction) {
6832
- if (instruction.accounts.length < 26) {
6865
+ if (instruction.accounts.length < 25) {
6833
6866
  throw new Error("Not enough accounts");
6834
6867
  }
6835
6868
  let accountIndex = 0;
@@ -6857,7 +6890,6 @@ function parseOpenAndIncreaseTunaSpotPositionFusionInstruction(instruction) {
6857
6890
  vaultAAta: getNextAccount(),
6858
6891
  vaultBAta: getNextAccount(),
6859
6892
  tunaPosition: getNextAccount(),
6860
- tunaPositionMint: getNextAccount(),
6861
6893
  tunaPositionAtaA: getNextAccount(),
6862
6894
  tunaPositionAtaB: getNextAccount(),
6863
6895
  tunaPositionOwnerAtaA: getNextOptionalAccount(),
@@ -6941,10 +6973,6 @@ function getOpenAndIncreaseTunaSpotPositionOrcaInstruction(input, config) {
6941
6973
  vaultAAta: { value: input.vaultAAta ?? null, isWritable: true },
6942
6974
  vaultBAta: { value: input.vaultBAta ?? null, isWritable: true },
6943
6975
  tunaPosition: { value: input.tunaPosition ?? null, isWritable: true },
6944
- tunaPositionMint: {
6945
- value: input.tunaPositionMint ?? null,
6946
- isWritable: false
6947
- },
6948
6976
  tunaPositionAtaA: {
6949
6977
  value: input.tunaPositionAtaA ?? null,
6950
6978
  isWritable: true
@@ -7009,7 +7037,6 @@ function getOpenAndIncreaseTunaSpotPositionOrcaInstruction(input, config) {
7009
7037
  getAccountMeta(accounts.vaultAAta),
7010
7038
  getAccountMeta(accounts.vaultBAta),
7011
7039
  getAccountMeta(accounts.tunaPosition),
7012
- getAccountMeta(accounts.tunaPositionMint),
7013
7040
  getAccountMeta(accounts.tunaPositionAtaA),
7014
7041
  getAccountMeta(accounts.tunaPositionAtaB),
7015
7042
  getAccountMeta(accounts.tunaPositionOwnerAtaA),
@@ -7032,7 +7059,7 @@ function getOpenAndIncreaseTunaSpotPositionOrcaInstruction(input, config) {
7032
7059
  return instruction;
7033
7060
  }
7034
7061
  function parseOpenAndIncreaseTunaSpotPositionOrcaInstruction(instruction) {
7035
- if (instruction.accounts.length < 26) {
7062
+ if (instruction.accounts.length < 25) {
7036
7063
  throw new Error("Not enough accounts");
7037
7064
  }
7038
7065
  let accountIndex = 0;
@@ -7060,7 +7087,6 @@ function parseOpenAndIncreaseTunaSpotPositionOrcaInstruction(instruction) {
7060
7087
  vaultAAta: getNextAccount(),
7061
7088
  vaultBAta: getNextAccount(),
7062
7089
  tunaPosition: getNextAccount(),
7063
- tunaPositionMint: getNextAccount(),
7064
7090
  tunaPositionAtaA: getNextAccount(),
7065
7091
  tunaPositionAtaB: getNextAccount(),
7066
7092
  tunaPositionOwnerAtaA: getNextOptionalAccount(),
@@ -7559,10 +7585,6 @@ function getOpenTunaSpotPositionFusionInstruction(input, config) {
7559
7585
  tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },
7560
7586
  tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },
7561
7587
  tunaPosition: { value: input.tunaPosition ?? null, isWritable: true },
7562
- tunaPositionMint: {
7563
- value: input.tunaPositionMint ?? null,
7564
- isWritable: false
7565
- },
7566
7588
  tunaPositionAtaA: {
7567
7589
  value: input.tunaPositionAtaA ?? null,
7568
7590
  isWritable: true
@@ -7592,7 +7614,6 @@ function getOpenTunaSpotPositionFusionInstruction(input, config) {
7592
7614
  getAccountMeta(accounts.tokenProgramA),
7593
7615
  getAccountMeta(accounts.tokenProgramB),
7594
7616
  getAccountMeta(accounts.tunaPosition),
7595
- getAccountMeta(accounts.tunaPositionMint),
7596
7617
  getAccountMeta(accounts.tunaPositionAtaA),
7597
7618
  getAccountMeta(accounts.tunaPositionAtaB),
7598
7619
  getAccountMeta(accounts.fusionPool),
@@ -7607,7 +7628,7 @@ function getOpenTunaSpotPositionFusionInstruction(input, config) {
7607
7628
  return instruction;
7608
7629
  }
7609
7630
  function parseOpenTunaSpotPositionFusionInstruction(instruction) {
7610
- if (instruction.accounts.length < 12) {
7631
+ if (instruction.accounts.length < 11) {
7611
7632
  throw new Error("Not enough accounts");
7612
7633
  }
7613
7634
  let accountIndex = 0;
@@ -7625,7 +7646,6 @@ function parseOpenTunaSpotPositionFusionInstruction(instruction) {
7625
7646
  tokenProgramA: getNextAccount(),
7626
7647
  tokenProgramB: getNextAccount(),
7627
7648
  tunaPosition: getNextAccount(),
7628
- tunaPositionMint: getNextAccount(),
7629
7649
  tunaPositionAtaA: getNextAccount(),
7630
7650
  tunaPositionAtaB: getNextAccount(),
7631
7651
  fusionPool: getNextAccount(),
@@ -7696,10 +7716,6 @@ function getOpenTunaSpotPositionOrcaInstruction(input, config) {
7696
7716
  tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },
7697
7717
  tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },
7698
7718
  tunaPosition: { value: input.tunaPosition ?? null, isWritable: true },
7699
- tunaPositionMint: {
7700
- value: input.tunaPositionMint ?? null,
7701
- isWritable: false
7702
- },
7703
7719
  tunaPositionAtaA: {
7704
7720
  value: input.tunaPositionAtaA ?? null,
7705
7721
  isWritable: true
@@ -7729,7 +7745,6 @@ function getOpenTunaSpotPositionOrcaInstruction(input, config) {
7729
7745
  getAccountMeta(accounts.tokenProgramA),
7730
7746
  getAccountMeta(accounts.tokenProgramB),
7731
7747
  getAccountMeta(accounts.tunaPosition),
7732
- getAccountMeta(accounts.tunaPositionMint),
7733
7748
  getAccountMeta(accounts.tunaPositionAtaA),
7734
7749
  getAccountMeta(accounts.tunaPositionAtaB),
7735
7750
  getAccountMeta(accounts.whirlpool),
@@ -7744,7 +7759,7 @@ function getOpenTunaSpotPositionOrcaInstruction(input, config) {
7744
7759
  return instruction;
7745
7760
  }
7746
7761
  function parseOpenTunaSpotPositionOrcaInstruction(instruction) {
7747
- if (instruction.accounts.length < 12) {
7762
+ if (instruction.accounts.length < 11) {
7748
7763
  throw new Error("Not enough accounts");
7749
7764
  }
7750
7765
  let accountIndex = 0;
@@ -7762,7 +7777,6 @@ function parseOpenTunaSpotPositionOrcaInstruction(instruction) {
7762
7777
  tokenProgramA: getNextAccount(),
7763
7778
  tokenProgramB: getNextAccount(),
7764
7779
  tunaPosition: getNextAccount(),
7765
- tunaPositionMint: getNextAccount(),
7766
7780
  tunaPositionAtaA: getNextAccount(),
7767
7781
  tunaPositionAtaB: getNextAccount(),
7768
7782
  whirlpool: getNextAccount(),
@@ -9767,10 +9781,10 @@ async function getLendingVaultAddress(mint) {
9767
9781
  seeds: ["vault", (0, import_kit72.getAddressEncoder)().encode(mint)]
9768
9782
  });
9769
9783
  }
9770
- async function getLendingPositionAddress(wallet, mint) {
9784
+ async function getLendingPositionAddress(authority, mint) {
9771
9785
  return await (0, import_kit72.getProgramDerivedAddress)({
9772
9786
  programAddress: TUNA_PROGRAM_ADDRESS,
9773
- seeds: ["lending_position", (0, import_kit72.getAddressEncoder)().encode(wallet), (0, import_kit72.getAddressEncoder)().encode(mint)]
9787
+ seeds: ["lending_position", (0, import_kit72.getAddressEncoder)().encode(authority), (0, import_kit72.getAddressEncoder)().encode(mint)]
9774
9788
  });
9775
9789
  }
9776
9790
  async function getTunaLpPositionAddress(positionMint) {
@@ -9779,10 +9793,10 @@ async function getTunaLpPositionAddress(positionMint) {
9779
9793
  seeds: ["tuna_position", (0, import_kit72.getAddressEncoder)().encode(positionMint)]
9780
9794
  });
9781
9795
  }
9782
- async function getTunaSpotPositionAddress(positionMint) {
9796
+ async function getTunaSpotPositionAddress(authority, pool) {
9783
9797
  return await (0, import_kit72.getProgramDerivedAddress)({
9784
9798
  programAddress: TUNA_PROGRAM_ADDRESS,
9785
- seeds: ["tuna_spot_position", (0, import_kit72.getAddressEncoder)().encode(positionMint)]
9799
+ seeds: ["tuna_spot_position", (0, import_kit72.getAddressEncoder)().encode(authority), (0, import_kit72.getAddressEncoder)().encode(pool)]
9786
9800
  });
9787
9801
  }
9788
9802
  async function getPythPriceUpdateAccountAddress(shardId, priceFeedId) {
@@ -9935,15 +9949,6 @@ function tunaSpotPositionMintBFilter(address4) {
9935
9949
  }
9936
9950
  };
9937
9951
  }
9938
- function tunaSpotPositionMintFilter(address4) {
9939
- return {
9940
- memcmp: {
9941
- offset: 139n,
9942
- bytes: (0, import_kit75.getBase58Decoder)().decode((0, import_kit75.getAddressEncoder)().encode(address4)),
9943
- encoding: "base58"
9944
- }
9945
- };
9946
- }
9947
9952
  async function fetchAllTunaSpotPositionWithFilter(rpc, ...filters) {
9948
9953
  const discriminator = (0, import_kit75.getBase58Decoder)().decode(TUNA_SPOT_POSITION_DISCRIMINATOR);
9949
9954
  const discriminatorFilter = {
@@ -10161,10 +10166,9 @@ async function createAddressLookupTableInstructions(authority, addresses, recent
10161
10166
  return { instructions: [createInstruction, extendInstruction], lookupTableAddress: pda[0] };
10162
10167
  }
10163
10168
 
10164
- // src/utils/positionMath.ts
10169
+ // src/utils/lpPositionMath.ts
10165
10170
  var import_fusionamm_core3 = require("@crypticdot/fusionamm-core");
10166
- var DEFAULT_MAX_AMOUNT_SLIPPAGE = HUNDRED_PERCENT / 2;
10167
- function getLiquidityIncreaseQuote(args) {
10171
+ function getIncreaseLpPositionQuote(args) {
10168
10172
  const { protocolFeeRate, protocolFeeRateOnCollateral, swapFeeRate, sqrtPrice, tickLowerIndex, tickUpperIndex } = args;
10169
10173
  let { collateralA, collateralB, borrowA, borrowB } = args;
10170
10174
  if (tickLowerIndex > tickUpperIndex) {
@@ -10176,7 +10180,7 @@ function getLiquidityIncreaseQuote(args) {
10176
10180
  if (args.collateralA == COMPUTED_AMOUNT && args.collateralB == COMPUTED_AMOUNT) {
10177
10181
  throw new Error("Both collateral amounts can't be set to COMPUTED_AMOUNT");
10178
10182
  }
10179
- const maxAmountSlippage = args.maxAmountSlippage > 0 ? BigInt(args.maxAmountSlippage) : BigInt(DEFAULT_MAX_AMOUNT_SLIPPAGE);
10183
+ const maxAmountSlippage = BigInt(args.maxAmountSlippage);
10180
10184
  let maxCollateralA = BigInt(collateralA);
10181
10185
  let maxCollateralB = BigInt(collateralB);
10182
10186
  const lowerSqrtPrice = (0, import_fusionamm_core3.tickIndexToSqrtPrice)(tickLowerIndex);
@@ -10292,7 +10296,7 @@ async function increaseTunaLpPositionOrcaInstructions(rpc, authority, positionMi
10292
10296
  const [mintA, mintB] = await (0, import_token_20222.fetchAllMaybeMint)(rpc, [whirlpool.data.tokenMintA, whirlpool.data.tokenMintB]);
10293
10297
  (0, import_assert.default)(mintA.exists, "Token A not found");
10294
10298
  (0, import_assert.default)(mintB.exists, "Token B not found");
10295
- const increaseAmounts = getLiquidityIncreaseQuote({
10299
+ const increaseAmounts = getIncreaseLpPositionQuote({
10296
10300
  collateralA: BigInt(args.collateralA),
10297
10301
  collateralB: BigInt(args.collateralB),
10298
10302
  borrowA: BigInt(args.borrowA),
@@ -10523,7 +10527,7 @@ async function increaseTunaLpPositionFusionInstructions(rpc, authority, position
10523
10527
  const [mintA, mintB] = await (0, import_token_20223.fetchAllMaybeMint)(rpc, [fusionPool.data.tokenMintA, fusionPool.data.tokenMintB]);
10524
10528
  (0, import_assert2.default)(mintA.exists, "Token A not found");
10525
10529
  (0, import_assert2.default)(mintB.exists, "Token B not found");
10526
- const increaseAmounts = getLiquidityIncreaseQuote({
10530
+ const increaseAmounts = getIncreaseLpPositionQuote({
10527
10531
  collateralA: BigInt(args.collateralA),
10528
10532
  collateralB: BigInt(args.collateralB),
10529
10533
  borrowA: BigInt(args.borrowA),
@@ -11637,8 +11641,9 @@ var import_kit86 = require("@solana/kit");
11637
11641
  var import_memo8 = require("@solana-program/memo");
11638
11642
  var import_token_202213 = require("@solana-program/token-2022");
11639
11643
  var import_assert11 = __toESM(require("assert"));
11640
- async function closeActiveTunaSpotPositionFusionInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
11641
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
11644
+ async function closeActiveTunaSpotPositionFusionInstructions(rpc, authority, fusionPoolAddress, args, createInstructions, cleanupInstructions) {
11645
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, fusionPoolAddress))[0];
11646
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
11642
11647
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
11643
11648
  const fusionPool = await (0, import_fusionamm_client7.fetchMaybeFusionPool)(rpc, tunaPosition.data.pool);
11644
11649
  if (!fusionPool.exists) throw new Error("FusionPool account not found");
@@ -11760,8 +11765,9 @@ var import_kit87 = require("@solana/kit");
11760
11765
  var import_memo9 = require("@solana-program/memo");
11761
11766
  var import_token_202214 = require("@solana-program/token-2022");
11762
11767
  var import_assert12 = __toESM(require("assert"));
11763
- async function closeActiveTunaSpotPositionOrcaInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
11764
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
11768
+ async function closeActiveTunaSpotPositionOrcaInstructions(rpc, authority, whirlpoolAddress, args, createInstructions, cleanupInstructions) {
11769
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, whirlpoolAddress))[0];
11770
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
11765
11771
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
11766
11772
  const whirlpool = await (0, import_whirlpools_client7.fetchMaybeWhirlpool)(rpc, tunaPosition.data.pool);
11767
11773
  if (!whirlpool.exists) throw new Error("Whirlpool account not found");
@@ -11886,11 +11892,12 @@ var import_kit88 = require("@solana/kit");
11886
11892
  var import_memo10 = require("@solana-program/memo");
11887
11893
  var import_token_202215 = require("@solana-program/token-2022");
11888
11894
  var import_assert13 = __toESM(require("assert"));
11889
- async function increaseTunaSpotPositionOrcaInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
11895
+ async function increaseTunaSpotPositionOrcaInstructions(rpc, authority, whirlpoolAddress, args, createInstructions, cleanupInstructions) {
11890
11896
  const instructions = [];
11891
11897
  if (!createInstructions) createInstructions = instructions;
11892
11898
  if (!cleanupInstructions) cleanupInstructions = instructions;
11893
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
11899
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, whirlpoolAddress))[0];
11900
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
11894
11901
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
11895
11902
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
11896
11903
  const whirlpool = await (0, import_whirlpools_client8.fetchWhirlpool)(rpc, tunaPosition.data.pool);
@@ -12041,11 +12048,12 @@ var import_kit89 = require("@solana/kit");
12041
12048
  var import_memo11 = require("@solana-program/memo");
12042
12049
  var import_token_202216 = require("@solana-program/token-2022");
12043
12050
  var import_assert14 = __toESM(require("assert"));
12044
- async function increaseTunaSpotPositionFusionInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
12051
+ async function increaseTunaSpotPositionFusionInstructions(rpc, authority, fusionPoolAddress, args, createInstructions, cleanupInstructions) {
12045
12052
  const instructions = [];
12046
12053
  if (!createInstructions) createInstructions = instructions;
12047
12054
  if (!cleanupInstructions) cleanupInstructions = instructions;
12048
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
12055
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, fusionPoolAddress))[0];
12056
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
12049
12057
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
12050
12058
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
12051
12059
  const fusionPool = await (0, import_fusionamm_client8.fetchFusionPool)(rpc, tunaPosition.data.pool);
@@ -12193,11 +12201,12 @@ var import_kit90 = require("@solana/kit");
12193
12201
  var import_memo12 = require("@solana-program/memo");
12194
12202
  var import_token_202217 = require("@solana-program/token-2022");
12195
12203
  var import_assert15 = __toESM(require("assert"));
12196
- async function decreaseTunaSpotPositionOrcaInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
12204
+ async function decreaseTunaSpotPositionOrcaInstructions(rpc, authority, whirlpoolAddress, args, createInstructions, cleanupInstructions) {
12197
12205
  const instructions = [];
12198
12206
  if (!createInstructions) createInstructions = instructions;
12199
12207
  if (!cleanupInstructions) cleanupInstructions = instructions;
12200
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
12208
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, whirlpoolAddress))[0];
12209
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
12201
12210
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
12202
12211
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
12203
12212
  const whirlpool = await (0, import_whirlpools_client9.fetchWhirlpool)(rpc, tunaPosition.data.pool);
@@ -12346,11 +12355,12 @@ var import_kit91 = require("@solana/kit");
12346
12355
  var import_memo13 = require("@solana-program/memo");
12347
12356
  var import_token_202218 = require("@solana-program/token-2022");
12348
12357
  var import_assert16 = __toESM(require("assert"));
12349
- async function decreaseTunaSpotPositionFusionInstructions(rpc, authority, positionMint, args, createInstructions, cleanupInstructions) {
12358
+ async function decreaseTunaSpotPositionFusionInstructions(rpc, authority, fusionPoolAddress, args, createInstructions, cleanupInstructions) {
12350
12359
  const instructions = [];
12351
12360
  if (!createInstructions) createInstructions = instructions;
12352
12361
  if (!cleanupInstructions) cleanupInstructions = instructions;
12353
- const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, (await getTunaSpotPositionAddress(positionMint))[0]);
12362
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, fusionPoolAddress))[0];
12363
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
12354
12364
  if (!tunaPosition.exists) throw new Error("Tuna position account not found");
12355
12365
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
12356
12366
  const fusionPool = await (0, import_fusionamm_client9.fetchFusionPool)(rpc, tunaPosition.data.pool);
@@ -12493,17 +12503,18 @@ async function decreaseTunaSpotPositionFusionInstruction(authority, tunaPosition
12493
12503
  // src/txbuilder/closeTunaSpotPosition.ts
12494
12504
  var import_token_202219 = require("@solana-program/token-2022");
12495
12505
  var import_assert17 = __toESM(require("assert"));
12496
- async function closeTunaSpotPositionInstructions(rpc, authority, positionMint) {
12497
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
12498
- const tunaPosition = await fetchTunaSpotPosition(rpc, tunaPositionAddress);
12506
+ async function closeTunaSpotPositionInstructions(rpc, authority, poolAddress) {
12507
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, poolAddress))[0];
12508
+ const tunaPosition = await fetchMaybeTunaSpotPosition(rpc, tunaPositionAddress);
12509
+ if (!tunaPosition.exists) throw new Error("Tuna position account not found");
12499
12510
  const [mintA, mintB] = await (0, import_token_202219.fetchAllMaybeMint)(rpc, [tunaPosition.data.mintA, tunaPosition.data.mintB]);
12500
12511
  (0, import_assert17.default)(mintA.exists, "Token A account not found");
12501
12512
  (0, import_assert17.default)(mintB.exists, "Token B account not found");
12502
- const ix = await closeTunaSpotPositionInstruction(authority, positionMint, mintA, mintB);
12513
+ const ix = await closeTunaSpotPositionInstruction(authority, poolAddress, mintA, mintB);
12503
12514
  return [ix];
12504
12515
  }
12505
- async function closeTunaSpotPositionInstruction(authority, positionMint, mintA, mintB) {
12506
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
12516
+ async function closeTunaSpotPositionInstruction(authority, poolAddress, mintA, mintB) {
12517
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, poolAddress))[0];
12507
12518
  const tunaPositionAtaA = (await (0, import_token_202219.findAssociatedTokenPda)({
12508
12519
  owner: tunaPositionAddress,
12509
12520
  mint: mintA.address,
@@ -12860,20 +12871,40 @@ var import_fusionamm_client11 = require("@crypticdot/fusionamm-client");
12860
12871
  var import_kit94 = require("@solana/kit");
12861
12872
  var import_memo16 = require("@solana-program/memo");
12862
12873
  var import_token_202223 = require("@solana-program/token-2022");
12863
- async function liquidateTunaSpotPositionFusionInstructions(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, withdrawPercent) {
12874
+ async function liquidateTunaSpotPositionFusionInstructions(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, createTunaPositionOwnerAta, withdrawPercent) {
12864
12875
  const instructions = [];
12865
- const positionTokenMint = tunaPosition.data.positionToken == 0 /* A */ ? mintA : mintB;
12866
- const createFeeRecipientAtaInstructions = await getCreateAtaInstructions(
12876
+ if (createTunaPositionOwnerAta) {
12877
+ const collateralTokenMint = tunaPosition.data.collateralToken == 0 /* A */ ? mintA : mintB;
12878
+ if (collateralTokenMint.address != NATIVE_MINT) {
12879
+ const createPositionOwnerAtaInstructions = await getCreateAtaInstructions(
12880
+ void 0,
12881
+ authority,
12882
+ collateralTokenMint.address,
12883
+ tunaPosition.data.authority,
12884
+ collateralTokenMint.programAddress
12885
+ );
12886
+ instructions.push(...createPositionOwnerAtaInstructions.init);
12887
+ }
12888
+ }
12889
+ const createFeeRecipientAtaAInstructions = await getCreateAtaInstructions(
12867
12890
  void 0,
12868
12891
  authority,
12869
- positionTokenMint.address,
12892
+ mintA.address,
12870
12893
  tunaConfig.data.feeRecipient,
12871
- positionTokenMint.programAddress
12894
+ mintA.programAddress
12872
12895
  );
12873
- instructions.push(...createFeeRecipientAtaInstructions.init);
12896
+ instructions.push(...createFeeRecipientAtaAInstructions.init);
12897
+ const createFeeRecipientAtaBInstructions = await getCreateAtaInstructions(
12898
+ void 0,
12899
+ authority,
12900
+ mintB.address,
12901
+ tunaConfig.data.feeRecipient,
12902
+ mintB.programAddress
12903
+ );
12904
+ instructions.push(...createFeeRecipientAtaBInstructions.init);
12874
12905
  const ix = await liquidateTunaSpotPositionFusionInstruction(
12875
12906
  authority,
12876
- tunaPosition.data.positionMint,
12907
+ tunaPosition,
12877
12908
  tunaConfig,
12878
12909
  mintA,
12879
12910
  mintB,
@@ -12885,16 +12916,25 @@ async function liquidateTunaSpotPositionFusionInstructions(authority, tunaPositi
12885
12916
  instructions.push(ix);
12886
12917
  return instructions;
12887
12918
  }
12888
- async function liquidateTunaSpotPositionFusionInstruction(authority, positionMint, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, withdrawPercent) {
12889
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
12919
+ async function liquidateTunaSpotPositionFusionInstruction(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, withdrawPercent) {
12890
12920
  const marketAddress = (await getMarketAddress(fusionPool.address))[0];
12921
+ const tunaPositionOwnerAtaA = (await (0, import_token_202223.findAssociatedTokenPda)({
12922
+ owner: tunaPosition.data.authority,
12923
+ mint: mintA.address,
12924
+ tokenProgram: mintA.programAddress
12925
+ }))[0];
12926
+ const tunaPositionOwnerAtaB = (await (0, import_token_202223.findAssociatedTokenPda)({
12927
+ owner: tunaPosition.data.authority,
12928
+ mint: mintB.address,
12929
+ tokenProgram: mintB.programAddress
12930
+ }))[0];
12891
12931
  const tunaPositionAtaA = (await (0, import_token_202223.findAssociatedTokenPda)({
12892
- owner: tunaPositionAddress,
12932
+ owner: tunaPosition.address,
12893
12933
  mint: mintA.address,
12894
12934
  tokenProgram: mintA.programAddress
12895
12935
  }))[0];
12896
12936
  const tunaPositionAtaB = (await (0, import_token_202223.findAssociatedTokenPda)({
12897
- owner: tunaPositionAddress,
12937
+ owner: tunaPosition.address,
12898
12938
  mint: mintB.address,
12899
12939
  tokenProgram: mintB.programAddress
12900
12940
  }))[0];
@@ -12949,9 +12989,12 @@ async function liquidateTunaSpotPositionFusionInstruction(authority, positionMin
12949
12989
  vaultAAta,
12950
12990
  vaultB: vaultB.address,
12951
12991
  vaultBAta,
12952
- tunaPosition: tunaPositionAddress,
12992
+ tunaPosition: tunaPosition.address,
12953
12993
  tunaPositionAtaA,
12954
12994
  tunaPositionAtaB,
12995
+ tunaPositionOwner: tunaPosition.data.authority,
12996
+ tunaPositionOwnerAtaA: tunaPosition.data.collateralToken == 0 /* A */ && mintA.address != NATIVE_MINT ? tunaPositionOwnerAtaA : void 0,
12997
+ tunaPositionOwnerAtaB: tunaPosition.data.collateralToken == 1 /* B */ && mintB.address != NATIVE_MINT ? tunaPositionOwnerAtaB : void 0,
12955
12998
  feeRecipientAtaA,
12956
12999
  feeRecipientAtaB,
12957
13000
  fusionPool: fusionPool.address,
@@ -12969,20 +13012,40 @@ var import_whirlpools_client11 = require("@orca-so/whirlpools-client");
12969
13012
  var import_kit95 = require("@solana/kit");
12970
13013
  var import_memo17 = require("@solana-program/memo");
12971
13014
  var import_token_202224 = require("@solana-program/token-2022");
12972
- async function liquidateTunaSpotPositionOrcaInstructions(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, withdrawPercent) {
13015
+ async function liquidateTunaSpotPositionOrcaInstructions(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, createTunaPositionOwnerAta, withdrawPercent) {
12973
13016
  const instructions = [];
12974
- const positionTokenMint = tunaPosition.data.positionToken == 0 /* A */ ? mintA : mintB;
12975
- const createFeeRecipientAtaInstructions = await getCreateAtaInstructions(
13017
+ if (createTunaPositionOwnerAta) {
13018
+ const collateralTokenMint = tunaPosition.data.collateralToken == 0 /* A */ ? mintA : mintB;
13019
+ if (collateralTokenMint.address != NATIVE_MINT) {
13020
+ const createPositionOwnerAtaInstructions = await getCreateAtaInstructions(
13021
+ void 0,
13022
+ authority,
13023
+ collateralTokenMint.address,
13024
+ tunaPosition.data.authority,
13025
+ collateralTokenMint.programAddress
13026
+ );
13027
+ instructions.push(...createPositionOwnerAtaInstructions.init);
13028
+ }
13029
+ }
13030
+ const createFeeRecipientAtaAInstructions = await getCreateAtaInstructions(
13031
+ void 0,
13032
+ authority,
13033
+ mintA.address,
13034
+ tunaConfig.data.feeRecipient,
13035
+ mintA.programAddress
13036
+ );
13037
+ instructions.push(...createFeeRecipientAtaAInstructions.init);
13038
+ const createFeeRecipientAtaBInstructions = await getCreateAtaInstructions(
12976
13039
  void 0,
12977
13040
  authority,
12978
- positionTokenMint.address,
13041
+ mintB.address,
12979
13042
  tunaConfig.data.feeRecipient,
12980
- positionTokenMint.programAddress
13043
+ mintB.programAddress
12981
13044
  );
12982
- instructions.push(...createFeeRecipientAtaInstructions.init);
13045
+ instructions.push(...createFeeRecipientAtaBInstructions.init);
12983
13046
  const ix = await liquidateTunaSpotPositionOrcaInstruction(
12984
13047
  authority,
12985
- tunaPosition.data.positionMint,
13048
+ tunaPosition,
12986
13049
  tunaConfig,
12987
13050
  mintA,
12988
13051
  mintB,
@@ -12994,17 +13057,26 @@ async function liquidateTunaSpotPositionOrcaInstructions(authority, tunaPosition
12994
13057
  instructions.push(ix);
12995
13058
  return instructions;
12996
13059
  }
12997
- async function liquidateTunaSpotPositionOrcaInstruction(authority, positionMint, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, withdrawPercent) {
12998
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
13060
+ async function liquidateTunaSpotPositionOrcaInstruction(authority, tunaPosition, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, withdrawPercent) {
12999
13061
  const marketAddress = (await getMarketAddress(whirlpool.address))[0];
13000
13062
  const orcaOracleAddress = (await (0, import_whirlpools_client11.getOracleAddress)(whirlpool.address))[0];
13063
+ const tunaPositionOwnerAtaA = (await (0, import_token_202224.findAssociatedTokenPda)({
13064
+ owner: tunaPosition.data.authority,
13065
+ mint: mintA.address,
13066
+ tokenProgram: mintA.programAddress
13067
+ }))[0];
13068
+ const tunaPositionOwnerAtaB = (await (0, import_token_202224.findAssociatedTokenPda)({
13069
+ owner: tunaPosition.data.authority,
13070
+ mint: mintB.address,
13071
+ tokenProgram: mintB.programAddress
13072
+ }))[0];
13001
13073
  const tunaPositionAtaA = (await (0, import_token_202224.findAssociatedTokenPda)({
13002
- owner: tunaPositionAddress,
13074
+ owner: tunaPosition.address,
13003
13075
  mint: mintA.address,
13004
13076
  tokenProgram: mintA.programAddress
13005
13077
  }))[0];
13006
13078
  const tunaPositionAtaB = (await (0, import_token_202224.findAssociatedTokenPda)({
13007
- owner: tunaPositionAddress,
13079
+ owner: tunaPosition.address,
13008
13080
  mint: mintB.address,
13009
13081
  tokenProgram: mintB.programAddress
13010
13082
  }))[0];
@@ -13061,9 +13133,12 @@ async function liquidateTunaSpotPositionOrcaInstruction(authority, positionMint,
13061
13133
  vaultAAta,
13062
13134
  vaultB: vaultB.address,
13063
13135
  vaultBAta,
13064
- tunaPosition: tunaPositionAddress,
13136
+ tunaPosition: tunaPosition.address,
13065
13137
  tunaPositionAtaA,
13066
13138
  tunaPositionAtaB,
13139
+ tunaPositionOwner: tunaPosition.data.authority,
13140
+ tunaPositionOwnerAtaA: tunaPosition.data.collateralToken == 0 /* A */ && mintA.address != NATIVE_MINT ? tunaPositionOwnerAtaA : void 0,
13141
+ tunaPositionOwnerAtaB: tunaPosition.data.collateralToken == 1 /* B */ && mintB.address != NATIVE_MINT ? tunaPositionOwnerAtaB : void 0,
13067
13142
  feeRecipientAtaA,
13068
13143
  feeRecipientAtaB,
13069
13144
  whirlpool: whirlpool.address,
@@ -13215,7 +13290,7 @@ async function openAndIncreaseTunaLpPositionOrcaInstructions(rpc, authority, whi
13215
13290
  (await getLendingVaultAddress(whirlpool.data.tokenMintA))[0],
13216
13291
  (await getLendingVaultAddress(whirlpool.data.tokenMintB))[0]
13217
13292
  ]);
13218
- const increaseAmounts = getLiquidityIncreaseQuote({
13293
+ const increaseAmounts = getIncreaseLpPositionQuote({
13219
13294
  collateralA: BigInt(args.collateralA),
13220
13295
  collateralB: BigInt(args.collateralB),
13221
13296
  borrowA: BigInt(args.borrowA),
@@ -13453,7 +13528,7 @@ async function openAndIncreaseTunaLpPositionFusionInstructions(rpc, authority, f
13453
13528
  (await getLendingVaultAddress(fusionPool.data.tokenMintA))[0],
13454
13529
  (await getLendingVaultAddress(fusionPool.data.tokenMintB))[0]
13455
13530
  ]);
13456
- const increaseAmounts = getLiquidityIncreaseQuote({
13531
+ const increaseAmounts = getIncreaseLpPositionQuote({
13457
13532
  collateralA: BigInt(args.collateralA),
13458
13533
  collateralB: BigInt(args.collateralB),
13459
13534
  borrowA: BigInt(args.borrowA),
@@ -13669,7 +13744,6 @@ async function openAndIncreaseTunaSpotPositionFusionInstructions(rpc, authority,
13669
13744
  const instructions = [];
13670
13745
  if (!createInstructions) createInstructions = instructions;
13671
13746
  if (!cleanupInstructions) cleanupInstructions = instructions;
13672
- const positionMint = await (0, import_kit98.generateKeyPairSigner)();
13673
13747
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
13674
13748
  const fusionPool = await (0, import_fusionamm_client15.fetchMaybeFusionPool)(rpc, fusionPoolAddress);
13675
13749
  if (!fusionPool.exists) throw new Error("FusionPool account not found");
@@ -13708,7 +13782,6 @@ async function openAndIncreaseTunaSpotPositionFusionInstructions(rpc, authority,
13708
13782
  createInstructions.push(...createFeeRecipientAtaBInstructions.init);
13709
13783
  const ix = await openAndIncreaseTunaSpotPositionFusionInstruction(
13710
13784
  authority,
13711
- positionMint,
13712
13785
  tunaConfig,
13713
13786
  mintA,
13714
13787
  mintB,
@@ -13719,13 +13792,10 @@ async function openAndIncreaseTunaSpotPositionFusionInstructions(rpc, authority,
13719
13792
  );
13720
13793
  instructions.push(ix);
13721
13794
  cleanupInstructions.push(...createUserAtaInstructions.cleanup);
13722
- return {
13723
- instructions,
13724
- positionMint: positionMint.address
13725
- };
13795
+ return instructions;
13726
13796
  }
13727
- async function openAndIncreaseTunaSpotPositionFusionInstruction(authority, positionMint, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, args) {
13728
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint.address))[0];
13797
+ async function openAndIncreaseTunaSpotPositionFusionInstruction(authority, tunaConfig, mintA, mintB, vaultA, vaultB, fusionPool, args) {
13798
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, fusionPool.address))[0];
13729
13799
  const marketAddress = (await getMarketAddress(fusionPool.address))[0];
13730
13800
  const tunaPositionOwnerAtaA = (await (0, import_token_202229.findAssociatedTokenPda)({
13731
13801
  owner: authority.address,
@@ -13799,7 +13869,6 @@ async function openAndIncreaseTunaSpotPositionFusionInstruction(authority, posit
13799
13869
  vaultB: vaultB.address,
13800
13870
  vaultBAta,
13801
13871
  tunaPosition: tunaPositionAddress,
13802
- tunaPositionMint: positionMint,
13803
13872
  tunaPositionAtaA,
13804
13873
  tunaPositionAtaB,
13805
13874
  tunaPositionOwnerAtaA: args.collateralToken == 0 /* A */ ? tunaPositionOwnerAtaA : void 0,
@@ -13827,7 +13896,6 @@ async function openAndIncreaseTunaSpotPositionOrcaInstructions(rpc, authority, w
13827
13896
  const instructions = [];
13828
13897
  if (!createInstructions) createInstructions = instructions;
13829
13898
  if (!cleanupInstructions) cleanupInstructions = instructions;
13830
- const positionMint = await (0, import_kit99.generateKeyPairSigner)();
13831
13899
  const tunaConfig = await fetchTunaConfig(rpc, (await getTunaConfigAddress())[0]);
13832
13900
  const whirlpool = await (0, import_whirlpools_client14.fetchMaybeWhirlpool)(rpc, whirlpoolAddress);
13833
13901
  if (!whirlpool.exists) throw new Error("Whirlpool account not found");
@@ -13866,7 +13934,6 @@ async function openAndIncreaseTunaSpotPositionOrcaInstructions(rpc, authority, w
13866
13934
  createInstructions.push(...createFeeRecipientAtaBInstructions.init);
13867
13935
  const ix = await openAndIncreaseTunaSpotPositionOrcaInstruction(
13868
13936
  authority,
13869
- positionMint,
13870
13937
  tunaConfig,
13871
13938
  mintA,
13872
13939
  mintB,
@@ -13877,13 +13944,10 @@ async function openAndIncreaseTunaSpotPositionOrcaInstructions(rpc, authority, w
13877
13944
  );
13878
13945
  instructions.push(ix);
13879
13946
  cleanupInstructions.push(...createUserAtaInstructions.cleanup);
13880
- return {
13881
- instructions,
13882
- positionMint: positionMint.address
13883
- };
13947
+ return instructions;
13884
13948
  }
13885
- async function openAndIncreaseTunaSpotPositionOrcaInstruction(authority, positionMint, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, args) {
13886
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint.address))[0];
13949
+ async function openAndIncreaseTunaSpotPositionOrcaInstruction(authority, tunaConfig, mintA, mintB, vaultA, vaultB, whirlpool, args) {
13950
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, whirlpool.address))[0];
13887
13951
  const marketAddress = (await getMarketAddress(whirlpool.address))[0];
13888
13952
  const orcaOracleAddress = (await (0, import_whirlpools_client14.getOracleAddress)(whirlpool.address))[0];
13889
13953
  const tunaPositionOwnerAtaA = (await (0, import_token_202230.findAssociatedTokenPda)({
@@ -13960,7 +14024,6 @@ async function openAndIncreaseTunaSpotPositionOrcaInstruction(authority, positio
13960
14024
  vaultB: vaultB.address,
13961
14025
  vaultBAta,
13962
14026
  tunaPosition: tunaPositionAddress,
13963
- tunaPositionMint: positionMint,
13964
14027
  tunaPositionAtaA,
13965
14028
  tunaPositionAtaB,
13966
14029
  tunaPositionOwnerAtaA: args.collateralToken == 0 /* A */ ? tunaPositionOwnerAtaA : void 0,
@@ -13982,24 +14045,17 @@ async function openAndIncreaseTunaSpotPositionOrcaInstruction(authority, positio
13982
14045
  var import_fusionamm_client16 = require("@crypticdot/fusionamm-client");
13983
14046
  var import_token_202231 = require("@solana-program/token-2022");
13984
14047
  var import_assert24 = __toESM(require("assert"));
13985
- async function openTunaSpotPositionFusionInstructions(rpc, authority, positionMint, fusionPoolAddress, args) {
14048
+ async function openTunaSpotPositionFusionInstructions(rpc, authority, fusionPoolAddress, args) {
13986
14049
  const fusionPool = await (0, import_fusionamm_client16.fetchMaybeFusionPool)(rpc, fusionPoolAddress);
13987
14050
  if (!fusionPool.exists) throw new Error("FusionPool account not found");
13988
14051
  const [mintA, mintB] = await (0, import_token_202231.fetchAllMaybeMint)(rpc, [fusionPool.data.tokenMintA, fusionPool.data.tokenMintB]);
13989
14052
  (0, import_assert24.default)(mintA.exists, "Token A account not found");
13990
14053
  (0, import_assert24.default)(mintB.exists, "Token B account not found");
13991
- const ix = await openTunaSpotPositionFusionInstruction(
13992
- authority,
13993
- positionMint,
13994
- mintA,
13995
- mintB,
13996
- fusionPoolAddress,
13997
- args
13998
- );
14054
+ const ix = await openTunaSpotPositionFusionInstruction(authority, mintA, mintB, fusionPoolAddress, args);
13999
14055
  return [ix];
14000
14056
  }
14001
- async function openTunaSpotPositionFusionInstruction(authority, positionMint, mintA, mintB, fusionPoolAddress, args) {
14002
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint.address))[0];
14057
+ async function openTunaSpotPositionFusionInstruction(authority, mintA, mintB, fusionPoolAddress, args) {
14058
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, fusionPoolAddress))[0];
14003
14059
  const tunaPositionAtaA = (await (0, import_token_202231.findAssociatedTokenPda)({
14004
14060
  owner: tunaPositionAddress,
14005
14061
  mint: mintA.address,
@@ -14017,7 +14073,6 @@ async function openTunaSpotPositionFusionInstruction(authority, positionMint, mi
14017
14073
  tokenProgramA: mintA.programAddress,
14018
14074
  tokenProgramB: mintB.programAddress,
14019
14075
  tunaPosition: tunaPositionAddress,
14020
- tunaPositionMint: positionMint,
14021
14076
  tunaPositionAtaA,
14022
14077
  tunaPositionAtaB,
14023
14078
  fusionPool: fusionPoolAddress,
@@ -14030,17 +14085,17 @@ async function openTunaSpotPositionFusionInstruction(authority, positionMint, mi
14030
14085
  var import_whirlpools_client15 = require("@orca-so/whirlpools-client");
14031
14086
  var import_token_202232 = require("@solana-program/token-2022");
14032
14087
  var import_assert25 = __toESM(require("assert"));
14033
- async function openTunaSpotPositionOrcaInstructions(rpc, authority, positionMint, whirlpoolAddress, args) {
14088
+ async function openTunaSpotPositionOrcaInstructions(rpc, authority, whirlpoolAddress, args) {
14034
14089
  const whirlpool = await (0, import_whirlpools_client15.fetchMaybeWhirlpool)(rpc, whirlpoolAddress);
14035
14090
  if (!whirlpool.exists) throw new Error("Whirlpool account not found");
14036
14091
  const [mintA, mintB] = await (0, import_token_202232.fetchAllMaybeMint)(rpc, [whirlpool.data.tokenMintA, whirlpool.data.tokenMintB]);
14037
14092
  (0, import_assert25.default)(mintA.exists, "Token A account not found");
14038
14093
  (0, import_assert25.default)(mintB.exists, "Token B account not found");
14039
- const ix = await openTunaSpotPositionOrcaInstruction(authority, positionMint, mintA, mintB, whirlpoolAddress, args);
14094
+ const ix = await openTunaSpotPositionOrcaInstruction(authority, mintA, mintB, whirlpoolAddress, args);
14040
14095
  return [ix];
14041
14096
  }
14042
- async function openTunaSpotPositionOrcaInstruction(authority, positionMint, mintA, mintB, whirlpoolAddress, args) {
14043
- const tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint.address))[0];
14097
+ async function openTunaSpotPositionOrcaInstruction(authority, mintA, mintB, whirlpoolAddress, args) {
14098
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, whirlpoolAddress))[0];
14044
14099
  const tunaPositionAtaA = (await (0, import_token_202232.findAssociatedTokenPda)({
14045
14100
  owner: tunaPositionAddress,
14046
14101
  mint: mintA.address,
@@ -14058,7 +14113,6 @@ async function openTunaSpotPositionOrcaInstruction(authority, positionMint, mint
14058
14113
  tokenProgramA: mintA.programAddress,
14059
14114
  tokenProgramB: mintB.programAddress,
14060
14115
  tunaPosition: tunaPositionAddress,
14061
- tunaPositionMint: positionMint,
14062
14116
  tunaPositionAtaA,
14063
14117
  tunaPositionAtaB,
14064
14118
  whirlpool: whirlpoolAddress,
@@ -14475,13 +14529,8 @@ async function setTunaLpPositionLimitOrdersInstruction(authority, args, position
14475
14529
  }
14476
14530
 
14477
14531
  // src/txbuilder/setTunaSpotPositionLimitOrders.ts
14478
- async function setTunaSpotPositionLimitOrdersInstruction(authority, args, positionMint, tunaPositionAddress) {
14479
- if (tunaPositionAddress === void 0) {
14480
- if (positionMint === void 0) {
14481
- throw new Error("At least one of 'positionMint' or 'tunaPositionAddress' must be provided.");
14482
- }
14483
- tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
14484
- }
14532
+ async function setTunaSpotPositionLimitOrdersInstruction(authority, poolAddress, args) {
14533
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, poolAddress))[0];
14485
14534
  return getSetTunaSpotPositionLimitOrdersInstruction({
14486
14535
  ...args,
14487
14536
  authority,
@@ -14492,13 +14541,8 @@ async function setTunaSpotPositionLimitOrdersInstruction(authority, args, positi
14492
14541
  // src/txbuilder/resetTunaSpotPosition.ts
14493
14542
  var import_token_202236 = require("@solana-program/token-2022");
14494
14543
  var import_assert28 = __toESM(require("assert"));
14495
- async function resetTunaSpotPositionInstruction(rpc, authority, args, positionMint, tunaPositionAddress) {
14496
- if (tunaPositionAddress === void 0) {
14497
- if (positionMint === void 0) {
14498
- throw new Error("At least one of 'positionMint' or 'tunaPositionAddress' must be provided.");
14499
- }
14500
- tunaPositionAddress = (await getTunaSpotPositionAddress(positionMint))[0];
14501
- }
14544
+ async function resetTunaSpotPositionInstruction(rpc, authority, poolAddress, args) {
14545
+ const tunaPositionAddress = (await getTunaSpotPositionAddress(authority.address, poolAddress))[0];
14502
14546
  const tunaPosition = await fetchTunaSpotPosition(rpc, tunaPositionAddress);
14503
14547
  const [mintA, mintB] = await (0, import_token_202236.fetchAllMaybeMint)(rpc, [tunaPosition.data.mintA, tunaPosition.data.mintB]);
14504
14548
  (0, import_assert28.default)(mintA.exists, "Token A not found");
@@ -15164,7 +15208,6 @@ async function rebalanceTunaLpPositionFusionInstruction(authority, tunaPosition,
15164
15208
  DECREASE_TUNA_SPOT_POSITION_FUSION_DISCRIMINATOR,
15165
15209
  DECREASE_TUNA_SPOT_POSITION_ORCA_DISCRIMINATOR,
15166
15210
  DEFAULT_ADDRESS,
15167
- DEFAULT_MAX_AMOUNT_SLIPPAGE,
15168
15211
  DEFAULT_MAX_SWAP_SLIPPAGE,
15169
15212
  DEFAULT_PUSH_ORACLE_PROGRAM_ID,
15170
15213
  DEPOSIT_DISCRIMINATOR,
@@ -15464,6 +15507,7 @@ async function rebalanceTunaLpPositionFusionInstruction(authority, tunaPosition,
15464
15507
  getDepositInstructionDataCodec,
15465
15508
  getDepositInstructionDataDecoder,
15466
15509
  getDepositInstructionDataEncoder,
15510
+ getIncreaseLpPositionQuote,
15467
15511
  getIncreaseTunaLpPositionFusionDiscriminatorBytes,
15468
15512
  getIncreaseTunaLpPositionFusionInstruction,
15469
15513
  getIncreaseTunaLpPositionFusionInstructionDataCodec,
@@ -15511,7 +15555,6 @@ async function rebalanceTunaLpPositionFusionInstruction(authority, tunaPosition,
15511
15555
  getLiquidateTunaSpotPositionOrcaInstructionDataCodec,
15512
15556
  getLiquidateTunaSpotPositionOrcaInstructionDataDecoder,
15513
15557
  getLiquidateTunaSpotPositionOrcaInstructionDataEncoder,
15514
- getLiquidityIncreaseQuote,
15515
15558
  getMarketAddress,
15516
15559
  getMarketCodec,
15517
15560
  getMarketDecoder,
@@ -15814,7 +15857,6 @@ async function rebalanceTunaLpPositionFusionInstruction(authority, tunaPosition,
15814
15857
  tunaSpotPositionAuthorityFilter,
15815
15858
  tunaSpotPositionMintAFilter,
15816
15859
  tunaSpotPositionMintBFilter,
15817
- tunaSpotPositionMintFilter,
15818
15860
  tunaSpotPositionPoolFilter,
15819
15861
  updateMarketInstruction,
15820
15862
  updateVaultInstruction,