@hawksightco/hawk-sdk 1.1.73 → 1.2.0
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/src/addresses.d.ts +3 -0
- package/dist/src/addresses.d.ts.map +1 -1
- package/dist/src/addresses.js +4 -1
- package/dist/src/anchor.d.ts +2 -0
- package/dist/src/anchor.d.ts.map +1 -1
- package/dist/src/anchor.js +2 -0
- package/dist/src/classes/HawkAPI.js +1 -2
- package/dist/src/classes/SimpleIxGenerator.d.ts +28 -5
- package/dist/src/classes/SimpleIxGenerator.d.ts.map +1 -1
- package/dist/src/classes/SimpleIxGenerator.js +29 -6
- package/dist/src/classes/Transactions.d.ts +34 -1
- package/dist/src/classes/Transactions.d.ts.map +1 -1
- package/dist/src/classes/Transactions.js +124 -1
- package/dist/src/classes/TxGenerator.d.ts +17 -1
- package/dist/src/classes/TxGenerator.d.ts.map +1 -1
- package/dist/src/classes/TxGenerator.js +135 -10
- package/dist/src/classes/TxGeneratorAutomations.d.ts.map +1 -1
- package/dist/src/classes/TxGeneratorAutomations.js +5 -0
- package/dist/src/functions.d.ts +10 -0
- package/dist/src/functions.d.ts.map +1 -1
- package/dist/src/functions.js +53 -1
- package/dist/src/idl/iyf-extension-idl.d.ts +166 -210
- package/dist/src/idl/iyf-extension-idl.d.ts.map +1 -1
- package/dist/src/idl/iyf-extension-idl.js +168 -212
- package/dist/src/idl/iyf-main-idl.d.ts +288 -0
- package/dist/src/idl/iyf-main-idl.d.ts.map +1 -1
- package/dist/src/idl/iyf-main-idl.js +288 -0
- package/dist/src/idl/raydium-idl.d.ts +3054 -0
- package/dist/src/idl/raydium-idl.d.ts.map +1 -0
- package/dist/src/idl/raydium-idl.js +3055 -0
- package/dist/src/ixGenerator/IyfExtensionIxGenerator.d.ts +80 -1
- package/dist/src/ixGenerator/IyfExtensionIxGenerator.d.ts.map +1 -1
- package/dist/src/ixGenerator/IyfExtensionIxGenerator.js +289 -1
- package/dist/src/ixGenerator/IyfMainIxGenerator.d.ts +31 -0
- package/dist/src/ixGenerator/IyfMainIxGenerator.d.ts.map +1 -1
- package/dist/src/ixGenerator/IyfMainIxGenerator.js +183 -0
- package/dist/src/ixGenerator/RaydiumIxGenerator.d.ts +114 -0
- package/dist/src/ixGenerator/RaydiumIxGenerator.d.ts.map +1 -0
- package/dist/src/ixGenerator/RaydiumIxGenerator.js +398 -0
- package/dist/src/pdaGenerator/RaydiumPdaGenerator.d.ts +44 -1
- package/dist/src/pdaGenerator/RaydiumPdaGenerator.d.ts.map +1 -1
- package/dist/src/pdaGenerator/RaydiumPdaGenerator.js +96 -1
- package/dist/src/types.d.ts +36 -2
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ const hawksight_1 = require("../hawksight");
|
|
|
42
42
|
const functions_1 = require("../functions");
|
|
43
43
|
const addresses_1 = require("../addresses");
|
|
44
44
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
45
|
+
const token_1 = require("@coral-xyz/anchor/dist/cjs/utils/token");
|
|
45
46
|
/**
|
|
46
47
|
* Iyf Main IX Generator
|
|
47
48
|
*/
|
|
@@ -132,6 +133,40 @@ class IyfMainIxGenerator {
|
|
|
132
133
|
return ix;
|
|
133
134
|
});
|
|
134
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Invoke iyf extension
|
|
138
|
+
*
|
|
139
|
+
* @param connection
|
|
140
|
+
* @param params
|
|
141
|
+
*/
|
|
142
|
+
iyfExtensionExecuteV2(connection_1, _a) {
|
|
143
|
+
return __awaiter(this, arguments, void 0, function* (connection, { userWallet, ix, }) {
|
|
144
|
+
// Initialize anchor
|
|
145
|
+
anchor_1.Anchor.initialize(connection);
|
|
146
|
+
// Generate user pda
|
|
147
|
+
const userPda = (0, functions_1.generateUserPda)(userWallet);
|
|
148
|
+
// Validate whether instruction is valid
|
|
149
|
+
const invalidInstruction = !ix.programId.equals(addresses_1.IYF_EXTENSION) ||
|
|
150
|
+
ix.keys.length < 2 ||
|
|
151
|
+
ix.data.length < 8 ||
|
|
152
|
+
!ix.keys[0].pubkey.equals(userPda) ||
|
|
153
|
+
!ix.keys[1].pubkey.equals(userWallet);
|
|
154
|
+
if (invalidInstruction) {
|
|
155
|
+
throw new Error('The given instruction is not a valid iyf extension v2 instruction.');
|
|
156
|
+
}
|
|
157
|
+
// Generate iyf extension instruction
|
|
158
|
+
return yield anchor_1.Anchor.instance().iyfMain
|
|
159
|
+
.methods
|
|
160
|
+
.iyfExtensionExecuteV2(ix.data)
|
|
161
|
+
.accounts({
|
|
162
|
+
userPda,
|
|
163
|
+
authority: userWallet,
|
|
164
|
+
iyfExtensionProgram: ix.programId
|
|
165
|
+
})
|
|
166
|
+
.remainingAccounts(ix.keys.slice(4))
|
|
167
|
+
.instruction();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
135
170
|
jupiterRouteIx(_a) {
|
|
136
171
|
return __awaiter(this, arguments, void 0, function* ({ connection, userWallet, userPda, sourceTokenAccount, destinationTokenAccount, destinationMint, platformFeeAccount, eventAuthority, remainingAccounts, data, slippageOutPct, quotedOutAmount_override, slippageBps, platformFeeBps, }) {
|
|
137
172
|
var _b;
|
|
@@ -348,5 +383,153 @@ class IyfMainIxGenerator {
|
|
|
348
383
|
return ix;
|
|
349
384
|
});
|
|
350
385
|
}
|
|
386
|
+
raydiumDynamicCpi(connection_1, _a) {
|
|
387
|
+
return __awaiter(this, arguments, void 0, function* (connection, { userWallet, raydiumIx, }) {
|
|
388
|
+
// Initialize anchor
|
|
389
|
+
anchor_1.Anchor.initialize(connection);
|
|
390
|
+
// Generate user pda
|
|
391
|
+
const userPda = (0, functions_1.generateUserPda)(userWallet);
|
|
392
|
+
const nftOwner = (0, functions_1.generateUserPdaLamport)(userWallet);
|
|
393
|
+
if (raydiumIx.programId == addresses_1.RAYDIUM_PROGRAM) {
|
|
394
|
+
// Define the whitelisted instructions
|
|
395
|
+
const whitelist = {
|
|
396
|
+
"open_position_with_token22_nft": 1,
|
|
397
|
+
"close_position": 0,
|
|
398
|
+
"increase_liquidity_v2": 0,
|
|
399
|
+
};
|
|
400
|
+
// Find the instruction
|
|
401
|
+
const key = Object.keys(whitelist).find(discriminator => (0, functions_1.sighashMatch)(raydiumIx.data, discriminator));
|
|
402
|
+
// Key has to return a value. Otherwise, throw error (means we try to execute ix not in the whitelist)
|
|
403
|
+
if (key === undefined) {
|
|
404
|
+
throw new Error('raydiumDynamicCpi: Instruction not in whitelist.');
|
|
405
|
+
}
|
|
406
|
+
const index = whitelist[key];
|
|
407
|
+
// Remove nft owner
|
|
408
|
+
raydiumIx.keys.splice(index, 1);
|
|
409
|
+
// Raydium dynamic cpi wrapper
|
|
410
|
+
const ix = yield anchor_1.Anchor.instance().iyfMain.methods
|
|
411
|
+
.raydiumDynamicCpi(raydiumIx.data)
|
|
412
|
+
.accounts({
|
|
413
|
+
raydiumProgram: addresses_1.RAYDIUM_PROGRAM,
|
|
414
|
+
userPda,
|
|
415
|
+
authority: userWallet,
|
|
416
|
+
nftOwner,
|
|
417
|
+
})
|
|
418
|
+
.remainingAccounts([
|
|
419
|
+
...raydiumIx.keys
|
|
420
|
+
])
|
|
421
|
+
.instruction();
|
|
422
|
+
return ix;
|
|
423
|
+
}
|
|
424
|
+
else if (raydiumIx.programId == addresses_1.IYF_EXTENSION) {
|
|
425
|
+
// Raydium dynamic cpi wrapper
|
|
426
|
+
const ix = yield anchor_1.Anchor.instance().iyfMain.methods
|
|
427
|
+
.raydiumDynamicCpi(raydiumIx.data)
|
|
428
|
+
.accounts({
|
|
429
|
+
raydiumProgram: addresses_1.RAYDIUM_PROGRAM,
|
|
430
|
+
userPda,
|
|
431
|
+
authority: raydiumIx.keys[2].pubkey,
|
|
432
|
+
nftOwner,
|
|
433
|
+
})
|
|
434
|
+
.remainingAccounts([
|
|
435
|
+
{ pubkey: addresses_1.IYF_EXTENSION, isSigner: false, isWritable: false },
|
|
436
|
+
...raydiumIx.keys.slice(4)
|
|
437
|
+
])
|
|
438
|
+
.instruction();
|
|
439
|
+
return ix;
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
throw new Error(`raydiumDynamicCpi: Invalid raydiumIx.programId: ${raydiumIx.programId}`);
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
depositMultipleLamportPdaToken(_a) {
|
|
447
|
+
return __awaiter(this, arguments, void 0, function* ({ userWallet, deposit }) {
|
|
448
|
+
const farm = addresses_1.USDC_FARM;
|
|
449
|
+
const userPda = (0, functions_1.generateUserPda)(userWallet);
|
|
450
|
+
const userPdaLamport = (0, functions_1.generateUserPdaLamport)(userWallet);
|
|
451
|
+
const amounts = deposit.map((d) => d.amount);
|
|
452
|
+
const remainingAccounts = [];
|
|
453
|
+
deposit.map((d) => {
|
|
454
|
+
const mint = d.mint;
|
|
455
|
+
const userToken = (0, functions_1.generateAta)(userWallet, d.mint);
|
|
456
|
+
const userPdaToken = (0, functions_1.generateAta)(userPdaLamport, d.mint);
|
|
457
|
+
const ownerFeeToken = (0, functions_1.generateAta)(addresses_1.SITE_FEE_OWNER, d.mint);
|
|
458
|
+
remainingAccounts.push({ pubkey: mint, isSigner: false, isWritable: true });
|
|
459
|
+
remainingAccounts.push({
|
|
460
|
+
pubkey: userToken,
|
|
461
|
+
isSigner: false,
|
|
462
|
+
isWritable: true,
|
|
463
|
+
});
|
|
464
|
+
remainingAccounts.push({
|
|
465
|
+
pubkey: userPdaToken,
|
|
466
|
+
isSigner: false,
|
|
467
|
+
isWritable: true,
|
|
468
|
+
});
|
|
469
|
+
remainingAccounts.push({
|
|
470
|
+
pubkey: ownerFeeToken,
|
|
471
|
+
isSigner: false,
|
|
472
|
+
isWritable: true,
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
const ix = yield anchor_1.Anchor.instance().iyfMain.methods
|
|
476
|
+
.depositMultipleLamportPdaToken(amounts)
|
|
477
|
+
.accounts({
|
|
478
|
+
userPda,
|
|
479
|
+
userPdaLamport,
|
|
480
|
+
payer: userWallet,
|
|
481
|
+
hsFeeOwner: addresses_1.SITE_FEE_OWNER,
|
|
482
|
+
associatedTokenProgram: token_1.ASSOCIATED_PROGRAM_ID,
|
|
483
|
+
tokenProgram: addresses_1.TOKEN_PROGRAM_ID,
|
|
484
|
+
systemProgram: web3.SystemProgram.programId,
|
|
485
|
+
})
|
|
486
|
+
.remainingAccounts(remainingAccounts)
|
|
487
|
+
.instruction();
|
|
488
|
+
return ix;
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
withdrawMultipleLamportPdaToken(_a) {
|
|
492
|
+
return __awaiter(this, arguments, void 0, function* ({ userWallet, withdraw }) {
|
|
493
|
+
const userPda = (0, functions_1.generateUserPda)(userWallet);
|
|
494
|
+
const userPdaLamport = (0, functions_1.generateUserPdaLamport)(userWallet);
|
|
495
|
+
const remainingAccounts = [];
|
|
496
|
+
withdraw.map((d) => {
|
|
497
|
+
const mint = d.mint;
|
|
498
|
+
const userToken = (0, functions_1.generateAta)(userWallet, d.mint);
|
|
499
|
+
const userPdaToken = (0, functions_1.generateAta)(userPdaLamport, d.mint);
|
|
500
|
+
const ownerFeeToken = (0, functions_1.generateAta)(addresses_1.SITE_FEE_OWNER, d.mint);
|
|
501
|
+
remainingAccounts.push({ pubkey: mint, isSigner: false, isWritable: true });
|
|
502
|
+
remainingAccounts.push({
|
|
503
|
+
pubkey: userToken,
|
|
504
|
+
isSigner: false,
|
|
505
|
+
isWritable: true,
|
|
506
|
+
});
|
|
507
|
+
remainingAccounts.push({
|
|
508
|
+
pubkey: userPdaToken,
|
|
509
|
+
isSigner: false,
|
|
510
|
+
isWritable: true,
|
|
511
|
+
});
|
|
512
|
+
remainingAccounts.push({
|
|
513
|
+
pubkey: ownerFeeToken,
|
|
514
|
+
isSigner: false,
|
|
515
|
+
isWritable: true,
|
|
516
|
+
});
|
|
517
|
+
});
|
|
518
|
+
const ix = yield anchor_1.Anchor.instance().iyfMain.methods
|
|
519
|
+
.withdrawMultipleLamportPdaToken()
|
|
520
|
+
.accounts({
|
|
521
|
+
userPda,
|
|
522
|
+
userPdaLamport,
|
|
523
|
+
payer: userWallet,
|
|
524
|
+
hsFeeOwner: addresses_1.SITE_FEE_OWNER,
|
|
525
|
+
associatedTokenProgram: token_1.ASSOCIATED_PROGRAM_ID,
|
|
526
|
+
tokenProgram: addresses_1.TOKEN_PROGRAM_ID,
|
|
527
|
+
systemProgram: web3.SystemProgram.programId,
|
|
528
|
+
})
|
|
529
|
+
.remainingAccounts(remainingAccounts)
|
|
530
|
+
.instruction();
|
|
531
|
+
return ix;
|
|
532
|
+
});
|
|
533
|
+
}
|
|
351
534
|
}
|
|
352
535
|
exports.IyfMainIxGenerator = IyfMainIxGenerator;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import * as web3 from "@solana/web3.js";
|
|
2
|
+
import { IyfMainIxGenerator } from "./IyfMainIxGenerator";
|
|
3
|
+
import { RaydiumClosePosition, RaydiumDecreaseLiquidity, RaydiumIncreaseLiquidity, RaydiumOpenPosition, RaydiumSweepDust, TxgenParams } from '../types';
|
|
4
|
+
import { IyfExtensionIxGenerator } from "./IyfExtensionIxGenerator";
|
|
5
|
+
import { SimplePdaGenerator } from "../classes/SimplePdaGenerator";
|
|
6
|
+
export type RaydiumFetch = {
|
|
7
|
+
poolStateInfo: {
|
|
8
|
+
tokenMint0: web3.PublicKey;
|
|
9
|
+
tokenMint1: web3.PublicKey;
|
|
10
|
+
tokenVault0: web3.PublicKey;
|
|
11
|
+
tokenVault1: web3.PublicKey;
|
|
12
|
+
ammConfig: web3.PublicKey;
|
|
13
|
+
observationKey: web3.PublicKey;
|
|
14
|
+
tickCurrent: number;
|
|
15
|
+
tickSpacing: number;
|
|
16
|
+
rewardInfos: {
|
|
17
|
+
tokenMint: web3.PublicKey;
|
|
18
|
+
tokenVault: web3.PublicKey;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
positionInfo?: {
|
|
22
|
+
poolId: web3.PublicKey;
|
|
23
|
+
tickLowerIndex: number;
|
|
24
|
+
tickUpperIndex: number;
|
|
25
|
+
nftMint: web3.PublicKey;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type RaydiumFetchParams = {
|
|
29
|
+
personalPosition?: web3.PublicKey;
|
|
30
|
+
poolState?: web3.PublicKey;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Meteora related instructions executed via iyf extension or iyf main
|
|
34
|
+
*/
|
|
35
|
+
export declare class RaydiumIxGenerator {
|
|
36
|
+
private iyfMain;
|
|
37
|
+
private iyfExtension;
|
|
38
|
+
private pda;
|
|
39
|
+
constructor(iyfMain: IyfMainIxGenerator, iyfExtension: IyfExtensionIxGenerator, pda: SimplePdaGenerator);
|
|
40
|
+
raydiumFetch({ personalPosition, poolState }: RaydiumFetchParams): Promise<RaydiumFetch>;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
44
|
+
* @param payer The public key of the payer for transaction fees.
|
|
45
|
+
* @param params Parameters required
|
|
46
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
47
|
+
*/
|
|
48
|
+
raydiumOpenPosition({ connection, params, fetch }: TxgenParams<RaydiumOpenPosition, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
52
|
+
* @param payer The public key of the payer for transaction fees.
|
|
53
|
+
* @param params Parameters required
|
|
54
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
55
|
+
*/
|
|
56
|
+
raydiumOpenPositionAutomation({ connection, params }: TxgenParams<RaydiumOpenPosition>): Promise<web3.TransactionInstruction>;
|
|
57
|
+
/**
|
|
58
|
+
*
|
|
59
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
60
|
+
* @param payer The public key of the payer for transaction fees.
|
|
61
|
+
* @param params Parameters required
|
|
62
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
63
|
+
*/
|
|
64
|
+
raydiumClosePosition({ connection, params, fetch }: TxgenParams<RaydiumClosePosition, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
68
|
+
* @param payer The public key of the payer for transaction fees.
|
|
69
|
+
* @param params Parameters required
|
|
70
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
71
|
+
*/
|
|
72
|
+
raydiumClosePositionAutomation({ connection, params }: TxgenParams<RaydiumOpenPosition>): Promise<web3.TransactionInstruction>;
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
76
|
+
* @param payer The public key of the payer for transaction fees.
|
|
77
|
+
* @param params Parameters required
|
|
78
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
79
|
+
*/
|
|
80
|
+
raydiumIncreaseLiquidity({ connection, params, fetch }: TxgenParams<RaydiumIncreaseLiquidity, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
84
|
+
* @param payer The public key of the payer for transaction fees.
|
|
85
|
+
* @param params Parameters required
|
|
86
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
87
|
+
*/
|
|
88
|
+
raydiumIncreaseLiquidityAutomation({ connection, params, fetch }: TxgenParams<RaydiumIncreaseLiquidity, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
92
|
+
* @param payer The public key of the payer for transaction fees.
|
|
93
|
+
* @param params Parameters required
|
|
94
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
95
|
+
*/
|
|
96
|
+
raydiumDecreaseLiquidity({ connection, params, fetch }: TxgenParams<RaydiumDecreaseLiquidity, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
100
|
+
* @param payer The public key of the payer for transaction fees.
|
|
101
|
+
* @param params Parameters required
|
|
102
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
103
|
+
*/
|
|
104
|
+
raydiumDecreaseLiquidityAutomation({ connection, params, fetch }: TxgenParams<RaydiumDecreaseLiquidity, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
* @param connection The Solana web3 connection object for blockchain interactions.
|
|
108
|
+
* @param payer The public key of the payer for transaction fees.
|
|
109
|
+
* @param params Parameters required
|
|
110
|
+
* @returns A ResponseWithStatus containing either TransactionMetadataResponse.
|
|
111
|
+
*/
|
|
112
|
+
raydiumSweepDust({ connection, params, fetch }: TxgenParams<RaydiumSweepDust, RaydiumFetch>): Promise<web3.TransactionInstruction>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=RaydiumIxGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaydiumIxGenerator.d.ts","sourceRoot":"","sources":["../../../src/ixGenerator/RaydiumIxGenerator.ts"],"names":[],"mappings":"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"}
|