@hawksightco/hawk-sdk 0.0.38 → 0.0.40
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.
|
@@ -63,6 +63,16 @@ export declare class Transaction {
|
|
|
63
63
|
isSignedByRequiredSigners(): boolean;
|
|
64
64
|
/**
|
|
65
65
|
* Add priority fee instructions (compute budget)
|
|
66
|
+
*
|
|
67
|
+
* This method adds priority fee instructions to the transaction based on the specified
|
|
68
|
+
* priority level and compute unit limit. It ensures that the total fee does not exceed
|
|
69
|
+
* the specified maximum priority fee (in SOL) if provided.
|
|
70
|
+
*
|
|
71
|
+
* @param connection - The connection to the Solana cluster.
|
|
72
|
+
* @param priorityLevel - The priority level for the fee estimation.
|
|
73
|
+
* @param computeUnitLimit - The limit on the number of compute units.
|
|
74
|
+
* @param maxPriorityFee - The maximum priority fee in SOL (optional).
|
|
75
|
+
* @returns An array of transaction instructions.
|
|
66
76
|
*/
|
|
67
77
|
addPriorityFeeIx(connection: web3.Connection, priorityLevel: client.PriorityLevel, computeUnitLimit: number, maxPriorityFee?: number): Promise<web3.TransactionInstruction[]>;
|
|
68
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/classes/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,qBAAa,WAAW;IA+CpB,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B;IACxD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS;IACjC,OAAO,CAAC,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE;IAC/C,OAAO,CAAC,cAAc;IAlDxB,2FAA2F;IAC3F,OAAO,CAAC,UAAU,CAA0B;IAC5C,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAEvC;IAED,+DAA+D;IAC/D,OAAO,CAAC,qBAAqB,CAA4B;IACzD,IAAI,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAEpD;IAED,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElD,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAc;IAC1C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,6CAA6C;IAC7C,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,yEAAyE;IACzE,OAAO,CAAC,aAAa,CAAgC;IACrD,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAEhD;IAED,8BAA8B;IAC9B,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;;;OAOG;gBAEQ,kBAAkB,EAAE,2BAA2B,EAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,EACzB,eAAe,EAAE,IAAI,CAAC,8BAA8B,EACnD,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,EACvC,cAAc,EAAE,cAAc;IAyBxC;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAuB/D;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAcpE;;;;OAIG;IACH,yBAAyB,IAAI,OAAO;IAIpC
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/classes/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,qBAAa,WAAW;IA+CpB,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B;IACxD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS;IACjC,OAAO,CAAC,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE;IAC/C,OAAO,CAAC,cAAc;IAlDxB,2FAA2F;IAC3F,OAAO,CAAC,UAAU,CAA0B;IAC5C,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAEvC;IAED,+DAA+D;IAC/D,OAAO,CAAC,qBAAqB,CAA4B;IACzD,IAAI,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAEpD;IAED,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElD,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAc;IAC1C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,6CAA6C;IAC7C,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,yEAAyE;IACzE,OAAO,CAAC,aAAa,CAAgC;IACrD,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAEhD;IAED,8BAA8B;IAC9B,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;;;OAOG;gBAEQ,kBAAkB,EAAE,2BAA2B,EAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,EACzB,eAAe,EAAE,IAAI,CAAC,8BAA8B,EACnD,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,EACvC,cAAc,EAAE,cAAc;IAyBxC;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAuB/D;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAcpE;;;;OAIG;IACH,yBAAyB,IAAI,OAAO;IAIpC;;;;;;;;;;;;OAYG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAiDzC;;;;;;;;;;;;OAYG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;;;OAKG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,GAC1B,OAAO,CAAC,4BAA4B,CAAC;IAsCxC;;OAEG;IACH,gBAAgB,CACd,eAAe,EAAE,IAAI,CAAC,8BAA8B,GACnD,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAcvD;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAgBpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAgBpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAW7B"}
|
|
@@ -150,6 +150,16 @@ class Transaction {
|
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
152
|
* Add priority fee instructions (compute budget)
|
|
153
|
+
*
|
|
154
|
+
* This method adds priority fee instructions to the transaction based on the specified
|
|
155
|
+
* priority level and compute unit limit. It ensures that the total fee does not exceed
|
|
156
|
+
* the specified maximum priority fee (in SOL) if provided.
|
|
157
|
+
*
|
|
158
|
+
* @param connection - The connection to the Solana cluster.
|
|
159
|
+
* @param priorityLevel - The priority level for the fee estimation.
|
|
160
|
+
* @param computeUnitLimit - The limit on the number of compute units.
|
|
161
|
+
* @param maxPriorityFee - The maximum priority fee in SOL (optional).
|
|
162
|
+
* @returns An array of transaction instructions.
|
|
153
163
|
*/
|
|
154
164
|
addPriorityFeeIx(connection, priorityLevel, computeUnitLimit, maxPriorityFee) {
|
|
155
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -157,24 +167,28 @@ class Transaction {
|
|
|
157
167
|
this.removePriorityFeeIxs();
|
|
158
168
|
// Then get fee estimate by simulating the transaction
|
|
159
169
|
const estimate = yield (0, functions_1.getFeeEstimate)(this.generalUtility, priorityLevel, this.txMetadataResponse);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
170
|
+
// Convert maxPriorityFee from SOL to lamports (1 SOL = 1_000_000_000 lamports)
|
|
171
|
+
const maxPriorityFeeLamports = maxPriorityFee !== undefined ? maxPriorityFee * 1000000000 : undefined;
|
|
172
|
+
// Calculate the total fee in lamports
|
|
173
|
+
let totalPriorityFeeLamports = new bn_js_1.BN(estimate).mul(new bn_js_1.BN(computeUnitLimit)).div(new bn_js_1.BN(1000000)).toNumber();
|
|
174
|
+
// If maxPriorityFee is defined and it is less than the total calculated fee, cap it
|
|
175
|
+
if (maxPriorityFeeLamports !== undefined && totalPriorityFeeLamports > maxPriorityFeeLamports) {
|
|
176
|
+
totalPriorityFeeLamports = maxPriorityFeeLamports;
|
|
177
|
+
}
|
|
178
|
+
// Convert the total priority fee back to microLamports per compute unit
|
|
179
|
+
const priorityFeePerUnitMicroLamports = new bn_js_1.BN(totalPriorityFeeLamports).mul(new bn_js_1.BN(1000000)).div(new bn_js_1.BN(computeUnitLimit)).toNumber();
|
|
180
|
+
// Create priority fee instructions for transaction
|
|
164
181
|
const priorityFeeIxs = [
|
|
165
182
|
web3.ComputeBudgetProgram.setComputeUnitLimit({
|
|
166
183
|
units: computeUnitLimit,
|
|
167
184
|
}),
|
|
168
185
|
web3.ComputeBudgetProgram.setComputeUnitPrice({
|
|
169
186
|
// CU * CU PRICE -> 1400000 * feeEstimate.priorityFeeEstimate
|
|
170
|
-
microLamports:
|
|
187
|
+
microLamports: priorityFeePerUnitMicroLamports,
|
|
171
188
|
}),
|
|
172
189
|
];
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
.div(new bn_js_1.BN(1000000))
|
|
176
|
-
.add(new bn_js_1.BN(5000))
|
|
177
|
-
.toNumber() / 1000000000).toString();
|
|
190
|
+
// Store the total priority fee in lamports
|
|
191
|
+
this._priorityFeeEstimate = totalPriorityFeeLamports.toString();
|
|
178
192
|
// Append priority fee instruction at the beginning
|
|
179
193
|
this._instructions.unshift(...priorityFeeIxs);
|
|
180
194
|
// Rebuild versioned transaction
|