@hawksightco/hawk-sdk 1.3.265 → 1.3.266
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/addresses.d.ts +37 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/addresses.js +84 -0
- package/dist/anchor.d.ts +22 -0
- package/dist/anchor.d.ts.map +1 -0
- package/dist/anchor.js +121 -0
- package/dist/classes/AltStorage.d.ts +29 -0
- package/dist/classes/AltStorage.d.ts.map +1 -0
- package/dist/classes/AltStorage.js +58 -0
- package/dist/classes/Atomicity.d.ts +34 -0
- package/dist/classes/Atomicity.d.ts.map +1 -0
- package/dist/classes/Atomicity.js +110 -0
- package/dist/classes/Client.d.ts +35 -0
- package/dist/classes/Client.d.ts.map +1 -0
- package/dist/classes/Client.js +66 -0
- package/dist/classes/CombineTransactions.d.ts +11 -0
- package/dist/classes/CombineTransactions.d.ts.map +1 -0
- package/dist/classes/CombineTransactions.js +58 -0
- package/dist/classes/CreateTxMetadata.d.ts +100 -0
- package/dist/classes/CreateTxMetadata.d.ts.map +1 -0
- package/dist/classes/CreateTxMetadata.js +415 -0
- package/dist/classes/General.d.ts +87 -0
- package/dist/classes/General.d.ts.map +1 -0
- package/dist/classes/General.js +176 -0
- package/dist/classes/GeneralUtility.d.ts +79 -0
- package/dist/classes/GeneralUtility.d.ts.map +1 -0
- package/dist/classes/GeneralUtility.js +121 -0
- package/dist/classes/HawkAPI.d.ts +122 -0
- package/dist/classes/HawkAPI.d.ts.map +1 -0
- package/dist/classes/HawkAPI.js +169 -0
- package/dist/classes/Health.d.ts +29 -0
- package/dist/classes/Health.d.ts.map +1 -0
- package/dist/classes/Health.js +48 -0
- package/dist/classes/JupiterAlts.d.ts +37 -0
- package/dist/classes/JupiterAlts.d.ts.map +1 -0
- package/dist/classes/JupiterAlts.js +114 -0
- package/dist/classes/JupiterSwap.d.ts +21 -0
- package/dist/classes/JupiterSwap.d.ts.map +1 -0
- package/dist/classes/JupiterSwap.js +40 -0
- package/dist/classes/Logging.d.ts +13 -0
- package/dist/classes/Logging.d.ts.map +1 -0
- package/dist/classes/Logging.js +50 -0
- package/dist/classes/MultiTransaction.d.ts +75 -0
- package/dist/classes/MultiTransaction.d.ts.map +1 -0
- package/dist/classes/MultiTransaction.js +296 -0
- package/dist/classes/RaydiumSDK.d.ts +67 -0
- package/dist/classes/RaydiumSDK.d.ts.map +1 -0
- package/dist/classes/RaydiumSDK.js +206 -0
- package/dist/classes/Search.d.ts +100 -0
- package/dist/classes/Search.d.ts.map +1 -0
- package/dist/classes/Search.js +216 -0
- package/dist/classes/SimpleIxGenerator.d.ts +57 -0
- package/dist/classes/SimpleIxGenerator.d.ts.map +1 -0
- package/dist/classes/SimpleIxGenerator.js +62 -0
- package/dist/classes/SimplePdaGenerator.d.ts +28 -0
- package/dist/classes/SimplePdaGenerator.d.ts.map +1 -0
- package/dist/classes/SimplePdaGenerator.js +33 -0
- package/dist/classes/Transaction.d.ts +229 -0
- package/dist/classes/Transaction.d.ts.map +1 -0
- package/dist/classes/Transaction.js +643 -0
- package/dist/classes/Transaction2.d.ts +107 -0
- package/dist/classes/Transaction2.d.ts.map +1 -0
- package/dist/classes/Transaction2.js +249 -0
- package/dist/classes/Transaction3.d.ts +165 -0
- package/dist/classes/Transaction3.d.ts.map +1 -0
- package/dist/classes/Transaction3.js +416 -0
- package/dist/classes/TransactionBatchExecute.d.ts +163 -0
- package/dist/classes/TransactionBatchExecute.d.ts.map +1 -0
- package/dist/classes/TransactionBatchExecute.js +466 -0
- package/dist/classes/TransactionBatchExecute2.d.ts +99 -0
- package/dist/classes/TransactionBatchExecute2.d.ts.map +1 -0
- package/dist/classes/TransactionBatchExecute2.js +357 -0
- package/dist/classes/Transactions.d.ts +586 -0
- package/dist/classes/Transactions.d.ts.map +1 -0
- package/dist/classes/Transactions.js +7667 -0
- package/dist/classes/TxGenerator.d.ts +350 -0
- package/dist/classes/TxGenerator.d.ts.map +1 -0
- package/dist/classes/TxGenerator.js +1957 -0
- package/dist/classes/TxGeneratorAutomations.d.ts +186 -0
- package/dist/classes/TxGeneratorAutomations.d.ts.map +1 -0
- package/dist/classes/TxGeneratorAutomations.js +897 -0
- package/dist/classes/Util.d.ts +87 -0
- package/dist/classes/Util.d.ts.map +1 -0
- package/dist/classes/Util.js +148 -0
- package/dist/classes/account-cache/AccountCache.d.ts +54 -0
- package/dist/classes/account-cache/AccountCache.d.ts.map +1 -0
- package/dist/classes/account-cache/AccountCache.js +143 -0
- package/dist/classes/account-cache/MintCache.d.ts +33 -0
- package/dist/classes/account-cache/MintCache.d.ts.map +1 -0
- package/dist/classes/account-cache/MintCache.js +47 -0
- package/dist/classes/account-cache/TokenCache.d.ts +33 -0
- package/dist/classes/account-cache/TokenCache.d.ts.map +1 -0
- package/dist/classes/account-cache/TokenCache.js +47 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +96 -0
- package/dist/functions.d.ts +514 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +1636 -0
- package/dist/hawksight.d.ts +53 -0
- package/dist/hawksight.d.ts.map +1 -0
- package/dist/hawksight.js +328 -0
- package/dist/hsToMeteora.d.ts +31 -0
- package/dist/hsToMeteora.d.ts.map +1 -0
- package/dist/hsToMeteora.js +3175 -0
- package/dist/idl/iyf-extension-idl.d.ts +14583 -0
- package/dist/idl/iyf-extension-idl.d.ts.map +1 -0
- package/dist/idl/iyf-extension-idl.js +14578 -0
- package/dist/idl/iyf-extension-wrapper.d.ts +112 -0
- package/dist/idl/iyf-extension-wrapper.d.ts.map +1 -0
- package/dist/idl/iyf-extension-wrapper.js +2 -0
- package/dist/idl/iyf-main-idl.d.ts +12078 -0
- package/dist/idl/iyf-main-idl.d.ts.map +1 -0
- package/dist/idl/iyf-main-idl.js +12073 -0
- package/dist/idl/iyf-main-wrapper.d.ts +112 -0
- package/dist/idl/iyf-main-wrapper.d.ts.map +1 -0
- package/dist/idl/iyf-main-wrapper.js +2 -0
- package/dist/idl/jupiter-idl.d.ts +3063 -0
- package/dist/idl/jupiter-idl.d.ts.map +1 -0
- package/dist/idl/jupiter-idl.js +3061 -0
- package/dist/idl/meteora-idl.d.ts +7371 -0
- package/dist/idl/meteora-idl.d.ts.map +1 -0
- package/dist/idl/meteora-idl.js +7372 -0
- package/dist/idl/orca-idl.d.ts +3833 -0
- package/dist/idl/orca-idl.d.ts.map +1 -0
- package/dist/idl/orca-idl.js +3834 -0
- package/dist/idl/raydium-idl.d.ts +3054 -0
- package/dist/idl/raydium-idl.d.ts.map +1 -0
- package/dist/idl/raydium-idl.js +3055 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/ixGenerator/IyfExtensionIxGenerator.d.ts +126 -0
- package/dist/ixGenerator/IyfExtensionIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/IyfExtensionIxGenerator.js +467 -0
- package/dist/ixGenerator/IyfMainIxGenerator.d.ts +330 -0
- package/dist/ixGenerator/IyfMainIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/IyfMainIxGenerator.js +1239 -0
- package/dist/ixGenerator/MeteoraDlmmIxGenerator.d.ts +685 -0
- package/dist/ixGenerator/MeteoraDlmmIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/MeteoraDlmmIxGenerator.js +3005 -0
- package/dist/ixGenerator/OrcaIxGenerator.d.ts +119 -0
- package/dist/ixGenerator/OrcaIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/OrcaIxGenerator.js +438 -0
- package/dist/ixGenerator/RaydiumIxGenerator.d.ts +99 -0
- package/dist/ixGenerator/RaydiumIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/RaydiumIxGenerator.js +558 -0
- package/dist/ixGenerator/UtilIxGenerator.d.ts +20 -0
- package/dist/ixGenerator/UtilIxGenerator.d.ts.map +1 -0
- package/dist/ixGenerator/UtilIxGenerator.js +25 -0
- package/dist/meteora/index.d.ts +2 -0
- package/dist/meteora/index.d.ts.map +1 -0
- package/dist/meteora/index.js +17 -0
- package/dist/meteora/liquidityStrategy.d.ts +408 -0
- package/dist/meteora/liquidityStrategy.d.ts.map +1 -0
- package/dist/meteora/liquidityStrategy.js +1325 -0
- package/dist/meteora.d.ts +669 -0
- package/dist/meteora.d.ts.map +1 -0
- package/dist/meteora.js +1932 -0
- package/dist/orca.d.ts +57 -0
- package/dist/orca.d.ts.map +1 -0
- package/dist/orca.js +123 -0
- package/dist/pdaGenerator/HawksightPdaGenerator.d.ts +29 -0
- package/dist/pdaGenerator/HawksightPdaGenerator.d.ts.map +1 -0
- package/dist/pdaGenerator/HawksightPdaGenerator.js +75 -0
- package/dist/pdaGenerator/MeteoraPdaGenerator.d.ts +76 -0
- package/dist/pdaGenerator/MeteoraPdaGenerator.d.ts.map +1 -0
- package/dist/pdaGenerator/MeteoraPdaGenerator.js +166 -0
- package/dist/pdaGenerator/OrcaPdaGenerator.d.ts +23 -0
- package/dist/pdaGenerator/OrcaPdaGenerator.d.ts.map +1 -0
- package/dist/pdaGenerator/OrcaPdaGenerator.js +68 -0
- package/dist/pdaGenerator/RaydiumPdaGenerator.d.ts +49 -0
- package/dist/pdaGenerator/RaydiumPdaGenerator.d.ts.map +1 -0
- package/dist/pdaGenerator/RaydiumPdaGenerator.js +114 -0
- package/dist/pdaGenerator/UtilPdaGenerator.d.ts +8 -0
- package/dist/pdaGenerator/UtilPdaGenerator.d.ts.map +1 -0
- package/dist/pdaGenerator/UtilPdaGenerator.js +51 -0
- package/dist/types.d.ts +1104 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +95 -0
- package/package.json +6 -5
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.Transaction3 = void 0;
|
|
46
|
+
///
|
|
47
|
+
/// I call this the weirdshit class. I don't understand the full mechanism why.
|
|
48
|
+
/// The difference between `Transaction3` and `Transaction` class is its name.
|
|
49
|
+
/// This file is just the exact copy of `Transaction` class except this comment.
|
|
50
|
+
///
|
|
51
|
+
/// I will keep this class for now. I just want this thing to compile with our
|
|
52
|
+
/// front-end. This class is meant to isolate the compile error we're experiencing.
|
|
53
|
+
/// But the moment I created this file, everything worked like WTF? Maybe it's
|
|
54
|
+
/// just a "typescript" shit or something. Some undocumented bug...
|
|
55
|
+
///
|
|
56
|
+
/// Therefore I'll keep this for now...
|
|
57
|
+
///
|
|
58
|
+
const client = __importStar(require("@hawksightco/swagger-client"));
|
|
59
|
+
const web3 = __importStar(require("@solana/web3.js"));
|
|
60
|
+
const bn_js_1 = require("bn.js");
|
|
61
|
+
const functions_1 = require("../functions");
|
|
62
|
+
const Logging_1 = require("./Logging");
|
|
63
|
+
/**
|
|
64
|
+
* Represents a transaction object in Solana using the web3.js library.
|
|
65
|
+
* This class encapsulates the logic for creating, signing, and verifying signatures of transactions.
|
|
66
|
+
*/
|
|
67
|
+
class Transaction3 {
|
|
68
|
+
get txMessage() {
|
|
69
|
+
return this._txMessage;
|
|
70
|
+
}
|
|
71
|
+
get versionedTransaction() {
|
|
72
|
+
return this._versionedTransaction;
|
|
73
|
+
}
|
|
74
|
+
get priorityFeeEstimate() {
|
|
75
|
+
return this._priorityFeeEstimate;
|
|
76
|
+
}
|
|
77
|
+
/** The blockhash of a recent ledger entry */
|
|
78
|
+
get recentBlockhash() {
|
|
79
|
+
return this.latestBlockhash.blockhash;
|
|
80
|
+
}
|
|
81
|
+
get instructions() {
|
|
82
|
+
return this._instructions;
|
|
83
|
+
}
|
|
84
|
+
/** last valid block height */
|
|
85
|
+
get lastValidBlockHeight() {
|
|
86
|
+
return this.latestBlockhash.lastValidBlockHeight;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Constructs a new Transaction object.
|
|
90
|
+
*
|
|
91
|
+
* @param payerKey PublicKey of the transaction payer
|
|
92
|
+
* @param instructions Array of TransactionInstruction to be executed in this transaction
|
|
93
|
+
* @param recentBlockhash The blockhash of a recent ledger entry
|
|
94
|
+
* @param alts Address lookup tables that optimize account address storage
|
|
95
|
+
*/
|
|
96
|
+
constructor(txMetadataResponse, payerKey, latestBlockhash, alts, generalUtility, _mainIxs = []) {
|
|
97
|
+
this.txMetadataResponse = txMetadataResponse;
|
|
98
|
+
this.payerKey = payerKey;
|
|
99
|
+
this.latestBlockhash = latestBlockhash;
|
|
100
|
+
this.alts = alts;
|
|
101
|
+
this.generalUtility = generalUtility;
|
|
102
|
+
/** Estimated fee in SOL for priority fee when addPriorityFee() method is called. */
|
|
103
|
+
this._priorityFeeEstimate = "";
|
|
104
|
+
txMetadataResponse.payer = payerKey.toBase58();
|
|
105
|
+
let mainIxs;
|
|
106
|
+
if (_mainIxs.length > 0) {
|
|
107
|
+
mainIxs = _mainIxs;
|
|
108
|
+
txMetadataResponse.mainInstructions = mainIxs.map(ix => {
|
|
109
|
+
const accounts = ix.keys.map(meta => {
|
|
110
|
+
return {
|
|
111
|
+
pubkey: meta.pubkey.toString(),
|
|
112
|
+
isSigner: meta.isSigner,
|
|
113
|
+
isWritable: meta.isWritable,
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
accounts,
|
|
118
|
+
programId: ix.programId.toString(),
|
|
119
|
+
data: ix.data.toString('base64'),
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Construct main instructions
|
|
125
|
+
mainIxs = txMetadataResponse.mainInstructions.map((ix) => {
|
|
126
|
+
return new web3.TransactionInstruction({
|
|
127
|
+
keys: ix.accounts.map((meta) => {
|
|
128
|
+
return {
|
|
129
|
+
pubkey: new web3.PublicKey(meta.pubkey),
|
|
130
|
+
isSigner: meta.isSigner,
|
|
131
|
+
isWritable: meta.isWritable,
|
|
132
|
+
};
|
|
133
|
+
}),
|
|
134
|
+
programId: new web3.PublicKey(ix.programId),
|
|
135
|
+
data: Buffer.from(ix.data, "base64"),
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
this._instructions = [...mainIxs];
|
|
140
|
+
const [txMessage, versionedTransaction] = this.buildTransaction(latestBlockhash);
|
|
141
|
+
this._txMessage = txMessage;
|
|
142
|
+
this._versionedTransaction = versionedTransaction;
|
|
143
|
+
this.requiredSigners = this.getRequiredSigners();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Signs the transaction with provided signers.
|
|
147
|
+
*
|
|
148
|
+
* @param signers Array of Signer objects whose private keys will be used to sign the transaction.
|
|
149
|
+
* @param idempotent Boolean indicating whether signing should be idempotent (default is false).
|
|
150
|
+
* @throws Error if a signer is not required or has already signed the transaction when not idempotent.
|
|
151
|
+
*/
|
|
152
|
+
sign(signers, idempotent = false) {
|
|
153
|
+
// First validate all signers
|
|
154
|
+
signers.forEach((signer) => {
|
|
155
|
+
const key = signer.publicKey.toString();
|
|
156
|
+
if (typeof this.requiredSigners[key] !== "boolean") {
|
|
157
|
+
throw new Error(`Key ${key} is not a required signer!`);
|
|
158
|
+
}
|
|
159
|
+
if (!idempotent && this.requiredSigners[key]) {
|
|
160
|
+
throw new Error(`Key ${key} has already been signed by required signer!`);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// If all signers are valid and the process is idempotent or they haven't signed yet, update and sign
|
|
164
|
+
signers.forEach((signer) => {
|
|
165
|
+
const key = signer.publicKey.toString();
|
|
166
|
+
this.requiredSigners[key] = true;
|
|
167
|
+
});
|
|
168
|
+
this.versionedTransaction.sign(signers);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Add a signature on the transaction with provided signature.
|
|
172
|
+
*
|
|
173
|
+
* @param publicKey The public key of the signer
|
|
174
|
+
* @param signature A signature of the signed transaction
|
|
175
|
+
* @throws Error if a signer is not required or has already signed the transaction.
|
|
176
|
+
*/
|
|
177
|
+
addSignature(publicKey, signature) {
|
|
178
|
+
const key = publicKey.toBase58();
|
|
179
|
+
if (typeof this.requiredSigners[key] !== "boolean") {
|
|
180
|
+
throw new Error(`Key ${key} is not a required signer!`);
|
|
181
|
+
}
|
|
182
|
+
if (this.requiredSigners[key]) {
|
|
183
|
+
throw new Error(`Key ${key} has already been signed by required signer!`);
|
|
184
|
+
}
|
|
185
|
+
this.requiredSigners[key] = true;
|
|
186
|
+
this.versionedTransaction.addSignature(publicKey, signature);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Checks if all required signers have signed the transaction.
|
|
190
|
+
*
|
|
191
|
+
* @returns Boolean indicating whether all required signers have signed.
|
|
192
|
+
*/
|
|
193
|
+
isSignedByRequiredSigners() {
|
|
194
|
+
return Object.values(this.requiredSigners).every((isSigned) => isSigned);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Add priority fee instructions (compute budget)
|
|
198
|
+
*
|
|
199
|
+
* This method adds priority fee instructions to the transaction based on the specified
|
|
200
|
+
* priority level and compute unit limit. It ensures that the total fee does not exceed
|
|
201
|
+
* the specified maximum priority fee (in SOL) if provided.
|
|
202
|
+
*
|
|
203
|
+
* @param connection - The connection to the Solana cluster.
|
|
204
|
+
* @param computeUnitLimit - The limit on the number of compute units.
|
|
205
|
+
* @param fixedPriority - If true, a fixed priority fee is used; if false, the fee is based on priority level.
|
|
206
|
+
* @param priorityLevelOrPriorityFee - The priority level for the fee estimation or the fixed priority fee.
|
|
207
|
+
* @param maxPriorityFee - The maximum priority fee in SOL (optional, only applicable when fixedPriority is false).
|
|
208
|
+
* @returns An array of transaction instructions.
|
|
209
|
+
*/
|
|
210
|
+
addPriorityFeeIx(connection_1, computeUnitLimit_1) {
|
|
211
|
+
return __awaiter(this, arguments, void 0, function* (connection, computeUnitLimit, fixedPriority = false, priorityLevelOrPriorityFee, maxPriorityFee) {
|
|
212
|
+
(0, Logging_1.Log)(`addPriorityFeeIx`);
|
|
213
|
+
// First, remove any existing priority fee instructions
|
|
214
|
+
this.removePriorityFeeIxs();
|
|
215
|
+
let totalPriorityFeeLamports;
|
|
216
|
+
if (fixedPriority && typeof priorityLevelOrPriorityFee === 'number') {
|
|
217
|
+
// For fixed priority, directly use the provided fixed priority fee
|
|
218
|
+
totalPriorityFeeLamports = priorityLevelOrPriorityFee - 5000;
|
|
219
|
+
}
|
|
220
|
+
else if (typeof priorityLevelOrPriorityFee === 'string') {
|
|
221
|
+
// Convert maxPriorityFee from SOL to lamports (1 SOL = 1_000_000_000 lamports)
|
|
222
|
+
const maxPriorityFeeLamports = maxPriorityFee !== undefined ? maxPriorityFee * 1000000000 : undefined;
|
|
223
|
+
// Get fee estimate by simulating the transaction
|
|
224
|
+
const startTime = new Date().getTime() / 1000;
|
|
225
|
+
(0, Logging_1.Log)(`addPriorityFeeIx: Starting getFeeEstimate function`);
|
|
226
|
+
let estimate = yield (0, functions_1.getFeeEstimate)(this.generalUtility, priorityLevelOrPriorityFee, this.txMetadataResponse);
|
|
227
|
+
(0, Logging_1.Log)(`addPriorityFeeIx: Starting getFeeEstimate function: Elapsed Time: ${(new Date().getTime() / 1000) - startTime}`);
|
|
228
|
+
// If priority is set to default or medium, we multiply estimate by 2 to increase its chance on blockchain.
|
|
229
|
+
if (priorityLevelOrPriorityFee === client.PriorityLevel.Default || priorityLevelOrPriorityFee === client.PriorityLevel.Medium) {
|
|
230
|
+
estimate = estimate * 2;
|
|
231
|
+
}
|
|
232
|
+
// Calculate the total fee in lamports
|
|
233
|
+
totalPriorityFeeLamports = new bn_js_1.BN(estimate).mul(new bn_js_1.BN(computeUnitLimit)).div(new bn_js_1.BN(1000000)).toNumber();
|
|
234
|
+
// If maxPriorityFee is defined and it is less than the total calculated fee, cap it
|
|
235
|
+
if (maxPriorityFeeLamports !== undefined && totalPriorityFeeLamports > maxPriorityFeeLamports) {
|
|
236
|
+
totalPriorityFeeLamports = maxPriorityFeeLamports - 5000;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
throw new Error('Invalid parameters');
|
|
241
|
+
}
|
|
242
|
+
// Convert the total priority fee back to microLamports per compute unit
|
|
243
|
+
const priorityFeePerUnitMicroLamports = new bn_js_1.BN(totalPriorityFeeLamports).mul(new bn_js_1.BN(1000000)).div(new bn_js_1.BN(computeUnitLimit)).toNumber();
|
|
244
|
+
// Create priority fee instructions for the transaction
|
|
245
|
+
const priorityFeeIxs = [
|
|
246
|
+
web3.ComputeBudgetProgram.setComputeUnitLimit({
|
|
247
|
+
units: computeUnitLimit,
|
|
248
|
+
}),
|
|
249
|
+
web3.ComputeBudgetProgram.setComputeUnitPrice({
|
|
250
|
+
microLamports: priorityFeePerUnitMicroLamports,
|
|
251
|
+
}),
|
|
252
|
+
];
|
|
253
|
+
// Store the total priority fee in lamports
|
|
254
|
+
this._priorityFeeEstimate = totalPriorityFeeLamports.toString();
|
|
255
|
+
// Append priority fee instructions at the beginning
|
|
256
|
+
this._instructions.unshift(...priorityFeeIxs);
|
|
257
|
+
// Rebuild versioned transaction with the latest blockhash
|
|
258
|
+
const blockhash = yield connection.getLatestBlockhash();
|
|
259
|
+
this.buildTransaction(blockhash);
|
|
260
|
+
return priorityFeeIxs;
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Gets the compute unit limit from a transaction simulation.
|
|
265
|
+
*
|
|
266
|
+
* This function simulates a transaction and calculates the compute unit limit
|
|
267
|
+
* based on the simulation results. If an additional compute limit is provided,
|
|
268
|
+
* it is added to the units consumed in the simulation. Otherwise, the units
|
|
269
|
+
* consumed are increased by 10%.
|
|
270
|
+
*
|
|
271
|
+
* @param {web3.Connection} connection - The connection object to the Solana cluster.
|
|
272
|
+
* @param {number} [additionalComputeLimit] - Optional additional compute limit to add to the units consumed.
|
|
273
|
+
* @returns {Promise<number>} - A promise that resolves to the total compute unit limit.
|
|
274
|
+
* @throws {Error} - Throws an error if the transaction simulation fails.
|
|
275
|
+
*/
|
|
276
|
+
getComputeUnitLimit(connection, additionalComputeLimit) {
|
|
277
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
+
const simulation = yield this.simulateTransaction(connection);
|
|
279
|
+
if (simulation.err !== null) {
|
|
280
|
+
if (simulation.logs === null) {
|
|
281
|
+
(0, Logging_1.Log)(simulation.err);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
for (const log of simulation.logs) {
|
|
285
|
+
(0, Logging_1.Log)(log);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
throw new Error(`Transaction simulation error. See logs above.`);
|
|
289
|
+
}
|
|
290
|
+
const totalUnitLimit = additionalComputeLimit ? simulation.unitsConsumed + additionalComputeLimit : Math.round(simulation.unitsConsumed * 1.1);
|
|
291
|
+
return totalUnitLimit;
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Simulate transaction
|
|
296
|
+
*
|
|
297
|
+
* @param connection
|
|
298
|
+
* @returns
|
|
299
|
+
*/
|
|
300
|
+
simulateTransaction(connection_1) {
|
|
301
|
+
return __awaiter(this, arguments, void 0, function* (connection, signers = []) {
|
|
302
|
+
const testInstructions = [
|
|
303
|
+
...this.instructions,
|
|
304
|
+
];
|
|
305
|
+
if (this.findSetComputeUnitLimitIndex(testInstructions) === -1) {
|
|
306
|
+
testInstructions.unshift(web3.ComputeBudgetProgram.setComputeUnitLimit({ units: 1400000 }));
|
|
307
|
+
}
|
|
308
|
+
if (this.findSetComputeUnitPriceIndex(testInstructions) === -1) {
|
|
309
|
+
testInstructions.unshift(web3.ComputeBudgetProgram.setComputeUnitPrice({
|
|
310
|
+
// CU * CU PRICE -> 1400000 * feeEstimate.priorityFeeEstimate
|
|
311
|
+
microLamports: 100000,
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
const testVersionedTxn = new web3.VersionedTransaction(new web3.TransactionMessage({
|
|
315
|
+
instructions: testInstructions,
|
|
316
|
+
payerKey: this.payerKey,
|
|
317
|
+
recentBlockhash: web3.PublicKey.default.toString(),
|
|
318
|
+
}).compileToV0Message(this.alts));
|
|
319
|
+
if (signers.length > 0) {
|
|
320
|
+
testVersionedTxn.sign(signers);
|
|
321
|
+
}
|
|
322
|
+
const simulation = yield connection.simulateTransaction(testVersionedTxn, {
|
|
323
|
+
replaceRecentBlockhash: true,
|
|
324
|
+
sigVerify: false,
|
|
325
|
+
});
|
|
326
|
+
if (simulation.value.unitsConsumed === undefined) {
|
|
327
|
+
throw new Error("Unable to calculate compute budget.");
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
err: simulation.value.err,
|
|
331
|
+
logs: simulation.value.logs,
|
|
332
|
+
accounts: simulation.value.accounts,
|
|
333
|
+
unitsConsumed: simulation.value.unitsConsumed,
|
|
334
|
+
returnData: simulation.value.returnData,
|
|
335
|
+
};
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Builds transaction object
|
|
340
|
+
*/
|
|
341
|
+
buildTransaction(latestBlockhash) {
|
|
342
|
+
this.latestBlockhash = latestBlockhash;
|
|
343
|
+
this._txMessage = new web3.TransactionMessage({
|
|
344
|
+
payerKey: this.payerKey,
|
|
345
|
+
instructions: this.instructions,
|
|
346
|
+
recentBlockhash: this.recentBlockhash,
|
|
347
|
+
});
|
|
348
|
+
this._versionedTransaction = new web3.VersionedTransaction(this.txMessage.compileToV0Message(this.alts));
|
|
349
|
+
return [this._txMessage, this._versionedTransaction];
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Gathers the public keys of all parties required to sign the transaction.
|
|
353
|
+
*
|
|
354
|
+
* @returns A record of signer public keys mapped to a boolean indicating whether they have signed.
|
|
355
|
+
*/
|
|
356
|
+
getRequiredSigners() {
|
|
357
|
+
const signerKeys = this.instructions.flatMap((ix) => ix.keys
|
|
358
|
+
.filter((meta) => meta.isSigner)
|
|
359
|
+
.map((meta) => meta.pubkey.toString()));
|
|
360
|
+
const result = {};
|
|
361
|
+
signerKeys.forEach((key) => (result[key] = false));
|
|
362
|
+
return result;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Find setComputeUnitLimit index within the instructions
|
|
366
|
+
*/
|
|
367
|
+
findSetComputeUnitLimitIndex(instructions) {
|
|
368
|
+
let _instructions = [];
|
|
369
|
+
if (instructions !== undefined) {
|
|
370
|
+
_instructions = instructions;
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
_instructions = this.instructions;
|
|
374
|
+
}
|
|
375
|
+
return _instructions.findIndex((ix) => {
|
|
376
|
+
const isComputeBudgetProgram = ix.programId.toString() ===
|
|
377
|
+
"ComputeBudget111111111111111111111111111111";
|
|
378
|
+
const isSetComputeLimitIx = ix.data[0] === 2;
|
|
379
|
+
return isComputeBudgetProgram && isSetComputeLimitIx;
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Find setComputeUnitPrice index within the instructions
|
|
384
|
+
*/
|
|
385
|
+
findSetComputeUnitPriceIndex(instructions) {
|
|
386
|
+
let _instructions = [];
|
|
387
|
+
if (instructions !== undefined) {
|
|
388
|
+
_instructions = instructions;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
_instructions = this.instructions;
|
|
392
|
+
}
|
|
393
|
+
return _instructions.findIndex((ix) => {
|
|
394
|
+
const isComputeBudgetProgram = ix.programId.toString() ===
|
|
395
|
+
"ComputeBudget111111111111111111111111111111";
|
|
396
|
+
const isSetComputeUnitPriceIx = ix.data[0] === 3;
|
|
397
|
+
return isComputeBudgetProgram && isSetComputeUnitPriceIx;
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Remove priority fee instructions
|
|
402
|
+
*/
|
|
403
|
+
removePriorityFeeIxs() {
|
|
404
|
+
while (true) {
|
|
405
|
+
const setComputeUnitLimitIxIndex = this.findSetComputeUnitLimitIndex();
|
|
406
|
+
const setComputeUnitPriceIxIndex = this.findSetComputeUnitPriceIndex();
|
|
407
|
+
if (setComputeUnitLimitIxIndex !== -1)
|
|
408
|
+
this._instructions.splice(setComputeUnitLimitIxIndex, 1);
|
|
409
|
+
if (setComputeUnitPriceIxIndex !== -1)
|
|
410
|
+
this._instructions.splice(setComputeUnitPriceIxIndex, 1);
|
|
411
|
+
if (setComputeUnitLimitIxIndex && setComputeUnitPriceIxIndex)
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
exports.Transaction3 = Transaction3;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import * as web3 from '@solana/web3.js';
|
|
2
|
+
import { JupiterAlts } from './JupiterAlts';
|
|
3
|
+
/**
|
|
4
|
+
* Dummy signers
|
|
5
|
+
*/
|
|
6
|
+
export type DummySigners = Record<string, web3.Keypair>;
|
|
7
|
+
/**
|
|
8
|
+
* Transaction batch
|
|
9
|
+
*/
|
|
10
|
+
export type Batch = {
|
|
11
|
+
addressLookupTables: web3.PublicKey[];
|
|
12
|
+
instructions: web3.PublicKey[];
|
|
13
|
+
signers: web3.Keypair;
|
|
14
|
+
};
|
|
15
|
+
export type TransactionBatchExecuteParams = {
|
|
16
|
+
lookupTableAddresses: web3.PublicKey[];
|
|
17
|
+
instructions: web3.TransactionInstruction[];
|
|
18
|
+
payer: web3.Keypair;
|
|
19
|
+
connection: web3.Connection;
|
|
20
|
+
signers: web3.Keypair[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Executes transactions in batches
|
|
24
|
+
*/
|
|
25
|
+
export declare class TransactionBatchExecute {
|
|
26
|
+
protected lookupTableAddresses: web3.PublicKey[];
|
|
27
|
+
protected instructions: web3.TransactionInstruction[];
|
|
28
|
+
protected payer: web3.Keypair;
|
|
29
|
+
protected connection: web3.Connection;
|
|
30
|
+
protected signers: web3.Keypair[];
|
|
31
|
+
protected jupiterAlts?: JupiterAlts | undefined;
|
|
32
|
+
protected readonly MAX_SIZE = 1232;
|
|
33
|
+
/**
|
|
34
|
+
* Downloaded address lookup table accounts
|
|
35
|
+
*/
|
|
36
|
+
protected alts: web3.AddressLookupTableAccount[];
|
|
37
|
+
/**
|
|
38
|
+
* Map of public keys to address lookup table
|
|
39
|
+
*/
|
|
40
|
+
protected pubkeyToAlt: Record<string, web3.AddressLookupTableAccount>;
|
|
41
|
+
/**
|
|
42
|
+
* Creates an instance of TransactionExecute class
|
|
43
|
+
*
|
|
44
|
+
* @param lookupTableAddresses Address lookup table addresses to be used by batch of transactions
|
|
45
|
+
* @param instructions Array of instructions to be batched into transactions
|
|
46
|
+
* @param payer Payer that will pay for the batch of transactions
|
|
47
|
+
* @param connection Connection to mainnet
|
|
48
|
+
* @param signers Required signers to fulfill the transactions
|
|
49
|
+
*/
|
|
50
|
+
constructor(lookupTableAddresses: web3.PublicKey[], instructions: web3.TransactionInstruction[], payer: web3.Keypair, connection: web3.Connection, signers?: web3.Keypair[], jupiterAlts?: JupiterAlts | undefined);
|
|
51
|
+
/**
|
|
52
|
+
* Download all jupiter alts (overridable)
|
|
53
|
+
*/
|
|
54
|
+
protected jupiterDownloadAlts(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Find alt by pubkeys (overridable)
|
|
57
|
+
*/
|
|
58
|
+
protected jupiterFindAltByPubkeys(pubkeys: web3.PublicKey[]): Promise<web3.PublicKey[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Downoad address lookup table from given cluster
|
|
61
|
+
*/
|
|
62
|
+
protected downloadAlts(): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Downoad address lookup table from given cluster
|
|
65
|
+
*/
|
|
66
|
+
protected downloadAlts2(lookupTableAddresses: web3.PublicKey[]): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Map public key to alt
|
|
69
|
+
*
|
|
70
|
+
* @param pubkeys
|
|
71
|
+
*/
|
|
72
|
+
private mapPubkeyToAlt;
|
|
73
|
+
/**
|
|
74
|
+
* Get list of lookup tables to download
|
|
75
|
+
*/
|
|
76
|
+
private getListOfAltsToDownload;
|
|
77
|
+
/**
|
|
78
|
+
* Filter lookup tables
|
|
79
|
+
*/
|
|
80
|
+
private filterLookupTables;
|
|
81
|
+
/**
|
|
82
|
+
* Get public keys from instruction
|
|
83
|
+
* @returns
|
|
84
|
+
*/
|
|
85
|
+
private getPubkeyFromInstruction;
|
|
86
|
+
/**
|
|
87
|
+
* Override signers (in case that signers are set to empty array)
|
|
88
|
+
*
|
|
89
|
+
* @param signers
|
|
90
|
+
*/
|
|
91
|
+
setSigners(signers: web3.Keypair[]): void;
|
|
92
|
+
/**
|
|
93
|
+
* Find missing signers
|
|
94
|
+
*/
|
|
95
|
+
findMissingSigners(): web3.PublicKey[];
|
|
96
|
+
/**
|
|
97
|
+
* Returns list of public keys that are required to sign the batch of transaction
|
|
98
|
+
*/
|
|
99
|
+
findRequiredSigningPubkeys(): web3.PublicKey[];
|
|
100
|
+
/**
|
|
101
|
+
* Generate dummy signers needed for simulation
|
|
102
|
+
*
|
|
103
|
+
* @returns
|
|
104
|
+
*/
|
|
105
|
+
generateDummySigners(): DummySigners;
|
|
106
|
+
/**
|
|
107
|
+
* Generate instruction that has modified signers for simulation purposes
|
|
108
|
+
*/
|
|
109
|
+
generateSimulationIxs(): [web3.TransactionInstruction[], DummySigners];
|
|
110
|
+
/**
|
|
111
|
+
* Builds a batch of executable transaction instructions
|
|
112
|
+
*/
|
|
113
|
+
buildBatch(): Promise<web3.TransactionInstruction[][]>;
|
|
114
|
+
/**
|
|
115
|
+
* Build versioned transactions from given batches of transactions
|
|
116
|
+
*
|
|
117
|
+
* @param batches
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
buildV0Transactions(batches: web3.TransactionInstruction[][]): Promise<web3.VersionedTransaction[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Split transactions
|
|
123
|
+
*
|
|
124
|
+
* @param simulationIxs
|
|
125
|
+
* @param dummySigners
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
protected splitToTransactions(simulationIxs: web3.TransactionInstruction[], dummySigners: DummySigners): Promise<web3.TransactionInstruction[][]>;
|
|
129
|
+
/**
|
|
130
|
+
* Calculate transaction size
|
|
131
|
+
*
|
|
132
|
+
* @param batch
|
|
133
|
+
*/
|
|
134
|
+
protected calculateTransactionSize(latestBlockhash: web3.BlockhashWithExpiryBlockHeight, batch: web3.TransactionInstruction[], dummySigners: DummySigners): number;
|
|
135
|
+
/**
|
|
136
|
+
* Find required signers from instructions
|
|
137
|
+
*
|
|
138
|
+
* @param ixs
|
|
139
|
+
* @param dummySigners
|
|
140
|
+
*/
|
|
141
|
+
protected findRequiredSignersFromIxs(ixs: web3.TransactionInstruction[]): web3.PublicKey[];
|
|
142
|
+
/**
|
|
143
|
+
* Find required signers from batch
|
|
144
|
+
*
|
|
145
|
+
* @param ixs
|
|
146
|
+
* @param dummySigners
|
|
147
|
+
*/
|
|
148
|
+
private findRequiredSignersFromBatch;
|
|
149
|
+
/**
|
|
150
|
+
* Find signing keypairs from signers defined in instruction
|
|
151
|
+
*
|
|
152
|
+
* @param batch
|
|
153
|
+
* @returns
|
|
154
|
+
*/
|
|
155
|
+
private findSigningKeypairFromIxs;
|
|
156
|
+
/**
|
|
157
|
+
* Find required address lookup table addresses for given batch of instructions
|
|
158
|
+
*
|
|
159
|
+
* @param batch
|
|
160
|
+
*/
|
|
161
|
+
private findRequiredAltsForBatch;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=TransactionBatchExecute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionBatchExecute.d.ts","sourceRoot":"","sources":["../../src/classes/TransactionBatchExecute.ts"],"names":[],"mappings":"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"}
|