@huma-finance/sdk 0.0.75-beta.981 → 0.0.75-beta.984

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.
@@ -3,5 +3,13 @@ import { SolanaChainEnum } from '@huma-finance/shared';
3
3
  import { HumaSolanaContext } from '../../helpers';
4
4
  export declare function extractWritableAccounts(tx: Transaction): PublicKey[];
5
5
  export type HeliusPriorityLevel = 'Min' | 'Low' | 'Medium' | 'High' | 'VeryHigh' | 'UnsafeMax';
6
- export declare function buildOptimalTransaction(tx: Transaction, txAccounts: PublicKey[], context: HumaSolanaContext, heliusPriorityLevel?: HeliusPriorityLevel): Promise<Transaction>;
7
- export declare function buildOptimalTransactionFromConnection(tx: Transaction, txAccounts: PublicKey[], connection: Connection, chainId: SolanaChainEnum, signer: PublicKey, heliusPriorityLevel?: HeliusPriorityLevel, heliusApiKey?: string | null): Promise<Transaction>;
6
+ export declare function buildOptimalTransaction(tx: Transaction, txAccounts: PublicKey[], context: HumaSolanaContext, heliusPriorityLevel?: HeliusPriorityLevel): Promise<{
7
+ tx: Transaction;
8
+ unitsConsumed: number | undefined;
9
+ fee: number | undefined;
10
+ }>;
11
+ export declare function buildOptimalTransactionFromConnection(tx: Transaction, txAccounts: PublicKey[], connection: Connection, chainId: SolanaChainEnum, signer: PublicKey, heliusPriorityLevel?: HeliusPriorityLevel, heliusApiKey?: string | null): Promise<{
12
+ tx: Transaction;
13
+ unitsConsumed: number | undefined;
14
+ fee: number | undefined;
15
+ }>;
@@ -45,24 +45,38 @@ async function getPriorityFeeEstimate(priorityLevel, tx, txAccounts, chainEnum,
45
45
  return null;
46
46
  }
47
47
  }
48
+ /**
49
+ * Check if a given instruction is a SetComputeUnitLimit instruction
50
+ * See https://github.com/solana-program/compute-budget/blob/main/clients/js/src/generated/programs/computeBudget.ts#L29
51
+ */
52
+ function isSetComputeLimitInstruction(ix) {
53
+ return (ix.programId.equals(ComputeBudgetProgram.programId) && ix.data[0] === 2 // opcode for setComputeUnitLimit is 2
54
+ );
55
+ }
48
56
  async function buildOptimalTransactionImpl(tx, txAccounts, connection, chainEnum, signer, heliusPriority = 'Medium', heliusApiKey) {
49
- // Calculate compute unit limit
50
- const testInstructions = [
51
- ComputeBudgetProgram.setComputeUnitLimit({ units: 1400000 }),
52
- ...tx.instructions,
53
- ];
54
- const testTransaction = new VersionedTransaction(new TransactionMessage({
55
- instructions: testInstructions,
56
- payerKey: signer,
57
- recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
58
- }).compileToV0Message([]));
59
- const rpcResponse = await connection.simulateTransaction(testTransaction, {
60
- replaceRecentBlockhash: true,
61
- sigVerify: false,
62
- });
63
- const { unitsConsumed } = rpcResponse.value;
64
- if (unitsConsumed) {
65
- tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitLimit({ units: unitsConsumed * 1.2 }));
57
+ let unitsConsumed;
58
+ const computeLimitIndex = tx.instructions.findIndex(isSetComputeLimitInstruction);
59
+ // Calculate compute unit limit if it doesn't exist
60
+ if (computeLimitIndex === -1) {
61
+ const testInstructions = [
62
+ ComputeBudgetProgram.setComputeUnitLimit({ units: 1400000 }),
63
+ ...tx.instructions,
64
+ ];
65
+ const testTransaction = new VersionedTransaction(new TransactionMessage({
66
+ instructions: testInstructions,
67
+ payerKey: signer,
68
+ recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
69
+ }).compileToV0Message([]));
70
+ const rpcResponse = await connection.simulateTransaction(testTransaction, {
71
+ replaceRecentBlockhash: true,
72
+ sigVerify: false,
73
+ });
74
+ unitsConsumed = rpcResponse.value.unitsConsumed;
75
+ if (unitsConsumed) {
76
+ tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitLimit({
77
+ units: unitsConsumed * 1.2,
78
+ }));
79
+ }
66
80
  }
67
81
  // Calculate compute unit priority fee
68
82
  const heliusPriorityFeeEstimateRes = await getPriorityFeeEstimate(heliusPriority, tx, txAccounts, chainEnum, heliusApiKey);
@@ -71,7 +85,7 @@ async function buildOptimalTransactionImpl(tx, txAccounts, connection, chainEnum
71
85
  tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitPrice({
72
86
  microLamports: chosenFee,
73
87
  }));
74
- return tx;
88
+ return { tx, unitsConsumed, fee: chosenFee };
75
89
  }
76
90
  export async function buildOptimalTransaction(tx, txAccounts, context, heliusPriorityLevel) {
77
91
  return buildOptimalTransactionImpl(tx, txAccounts, context.connection, context.chainId, context.publicKey, heliusPriorityLevel, context.heliusApiKey);
@@ -1 +1 @@
1
- {"version":3,"file":"buildOptimalTransaction.js","sourceRoot":"","sources":["../../../src/utils/solana/buildOptimalTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildOptimalTransaction.js","sourceRoot":"","sources":["../../../src/utils/solana/buildOptimalTransaction.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huma-finance/sdk",
3
- "version": "0.0.75-beta.981+a3e08e0",
3
+ "version": "0.0.75-beta.984+6489f74",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "@ethersproject/bignumber": "^5.6.0",
29
29
  "@ethersproject/constants": "^5.7.0",
30
30
  "@ethersproject/contracts": "^5.7.0",
31
- "@huma-finance/shared": "^0.0.75-beta.981+a3e08e0",
31
+ "@huma-finance/shared": "^0.0.75-beta.984+6489f74",
32
32
  "@irys/sdk": "^0.2.11",
33
33
  "axios": "^1.4.0",
34
34
  "bignumber.js": "^9.1.1",
@@ -113,5 +113,5 @@
113
113
  "optionalDependencies": {
114
114
  "encoding": "^0.1.13"
115
115
  },
116
- "gitHead": "a3e08e02260985afd93671044fb6f3154d2b3d6f"
116
+ "gitHead": "6489f7486bb63b2bc021539cd339260b601e1c49"
117
117
  }