@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.d.mts +123 -134
- package/dist/index.d.ts +123 -134
- package/dist/index.js +195 -153
- package/dist/index.mjs +196 -154
- package/package.json +2 -2
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
|
|
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 <
|
|
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 <
|
|
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 <
|
|
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 <
|
|
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 <
|
|
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 <
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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/
|
|
10169
|
+
// src/utils/lpPositionMath.ts
|
|
10165
10170
|
var import_fusionamm_core3 = require("@crypticdot/fusionamm-core");
|
|
10166
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
11641
|
-
const
|
|
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,
|
|
11764
|
-
const
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
12497
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
12498
|
-
const tunaPosition = await
|
|
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,
|
|
12513
|
+
const ix = await closeTunaSpotPositionInstruction(authority, poolAddress, mintA, mintB);
|
|
12503
12514
|
return [ix];
|
|
12504
12515
|
}
|
|
12505
|
-
async function closeTunaSpotPositionInstruction(authority,
|
|
12506
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
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
|
-
|
|
12866
|
-
|
|
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
|
-
|
|
12892
|
+
mintA.address,
|
|
12870
12893
|
tunaConfig.data.feeRecipient,
|
|
12871
|
-
|
|
12894
|
+
mintA.programAddress
|
|
12872
12895
|
);
|
|
12873
|
-
instructions.push(...
|
|
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
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
12975
|
-
|
|
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
|
-
|
|
13041
|
+
mintB.address,
|
|
12979
13042
|
tunaConfig.data.feeRecipient,
|
|
12980
|
-
|
|
13043
|
+
mintB.programAddress
|
|
12981
13044
|
);
|
|
12982
|
-
instructions.push(...
|
|
13045
|
+
instructions.push(...createFeeRecipientAtaBInstructions.init);
|
|
12983
13046
|
const ix = await liquidateTunaSpotPositionOrcaInstruction(
|
|
12984
13047
|
authority,
|
|
12985
|
-
tunaPosition
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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 =
|
|
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 =
|
|
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,
|
|
13728
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
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,
|
|
13886
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
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,
|
|
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,
|
|
14002
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
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,
|
|
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,
|
|
14094
|
+
const ix = await openTunaSpotPositionOrcaInstruction(authority, mintA, mintB, whirlpoolAddress, args);
|
|
14040
14095
|
return [ix];
|
|
14041
14096
|
}
|
|
14042
|
-
async function openTunaSpotPositionOrcaInstruction(authority,
|
|
14043
|
-
const tunaPositionAddress = (await getTunaSpotPositionAddress(
|
|
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,
|
|
14479
|
-
|
|
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,
|
|
14496
|
-
|
|
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,
|