@chainlink/ccip-sdk 0.90.2 → 0.91.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.
Files changed (202) hide show
  1. package/README.md +35 -26
  2. package/dist/aptos/exec.d.ts +4 -5
  3. package/dist/aptos/exec.d.ts.map +1 -1
  4. package/dist/aptos/exec.js +5 -14
  5. package/dist/aptos/exec.js.map +1 -1
  6. package/dist/aptos/hasher.d.ts +18 -0
  7. package/dist/aptos/hasher.d.ts.map +1 -1
  8. package/dist/aptos/hasher.js +18 -0
  9. package/dist/aptos/hasher.js.map +1 -1
  10. package/dist/aptos/index.d.ts +127 -28
  11. package/dist/aptos/index.d.ts.map +1 -1
  12. package/dist/aptos/index.js +199 -70
  13. package/dist/aptos/index.js.map +1 -1
  14. package/dist/aptos/logs.d.ts +18 -0
  15. package/dist/aptos/logs.d.ts.map +1 -1
  16. package/dist/aptos/logs.js +21 -3
  17. package/dist/aptos/logs.js.map +1 -1
  18. package/dist/aptos/send.d.ts +22 -5
  19. package/dist/aptos/send.d.ts.map +1 -1
  20. package/dist/aptos/send.js +23 -15
  21. package/dist/aptos/send.js.map +1 -1
  22. package/dist/aptos/token.d.ts +6 -0
  23. package/dist/aptos/token.d.ts.map +1 -1
  24. package/dist/aptos/token.js +6 -0
  25. package/dist/aptos/token.js.map +1 -1
  26. package/dist/aptos/types.d.ts +16 -1
  27. package/dist/aptos/types.d.ts.map +1 -1
  28. package/dist/aptos/types.js +13 -0
  29. package/dist/aptos/types.js.map +1 -1
  30. package/dist/aptos/utils.d.ts +1 -1
  31. package/dist/aptos/utils.js +1 -1
  32. package/dist/chain.d.ts +185 -99
  33. package/dist/chain.d.ts.map +1 -1
  34. package/dist/chain.js +38 -15
  35. package/dist/chain.js.map +1 -1
  36. package/dist/commits.d.ts +4 -10
  37. package/dist/commits.d.ts.map +1 -1
  38. package/dist/commits.js +2 -1
  39. package/dist/commits.js.map +1 -1
  40. package/dist/evm/const.d.ts +5 -0
  41. package/dist/evm/const.d.ts.map +1 -1
  42. package/dist/evm/const.js +5 -0
  43. package/dist/evm/const.js.map +1 -1
  44. package/dist/evm/errors.d.ts +5 -0
  45. package/dist/evm/errors.d.ts.map +1 -1
  46. package/dist/evm/errors.js +6 -1
  47. package/dist/evm/errors.js.map +1 -1
  48. package/dist/evm/hasher.d.ts +16 -2
  49. package/dist/evm/hasher.d.ts.map +1 -1
  50. package/dist/evm/hasher.js +17 -3
  51. package/dist/evm/hasher.js.map +1 -1
  52. package/dist/evm/index.d.ts +176 -31
  53. package/dist/evm/index.d.ts.map +1 -1
  54. package/dist/evm/index.js +312 -154
  55. package/dist/evm/index.js.map +1 -1
  56. package/dist/evm/logs.d.ts +20 -0
  57. package/dist/evm/logs.d.ts.map +1 -0
  58. package/dist/evm/logs.js +194 -0
  59. package/dist/evm/logs.js.map +1 -0
  60. package/dist/evm/messages.d.ts +11 -2
  61. package/dist/evm/messages.d.ts.map +1 -1
  62. package/dist/evm/messages.js +4 -2
  63. package/dist/evm/messages.js.map +1 -1
  64. package/dist/evm/offchain.d.ts +7 -2
  65. package/dist/evm/offchain.d.ts.map +1 -1
  66. package/dist/evm/offchain.js +12 -7
  67. package/dist/evm/offchain.js.map +1 -1
  68. package/dist/execution.d.ts +19 -62
  69. package/dist/execution.d.ts.map +1 -1
  70. package/dist/execution.js +28 -31
  71. package/dist/execution.js.map +1 -1
  72. package/dist/extra-args.d.ts +35 -5
  73. package/dist/extra-args.d.ts.map +1 -1
  74. package/dist/extra-args.js +10 -5
  75. package/dist/extra-args.js.map +1 -1
  76. package/dist/gas.d.ts +6 -8
  77. package/dist/gas.d.ts.map +1 -1
  78. package/dist/gas.js +7 -9
  79. package/dist/gas.js.map +1 -1
  80. package/dist/hasher/common.d.ts +3 -2
  81. package/dist/hasher/common.d.ts.map +1 -1
  82. package/dist/hasher/common.js +2 -2
  83. package/dist/hasher/common.js.map +1 -1
  84. package/dist/hasher/hasher.d.ts +8 -2
  85. package/dist/hasher/hasher.d.ts.map +1 -1
  86. package/dist/hasher/hasher.js +8 -3
  87. package/dist/hasher/hasher.js.map +1 -1
  88. package/dist/hasher/merklemulti.d.ts +11 -9
  89. package/dist/hasher/merklemulti.d.ts.map +1 -1
  90. package/dist/hasher/merklemulti.js +17 -16
  91. package/dist/hasher/merklemulti.js.map +1 -1
  92. package/dist/index.d.ts +16 -8
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +17 -7
  95. package/dist/index.js.map +1 -1
  96. package/dist/requests.d.ts +39 -25
  97. package/dist/requests.d.ts.map +1 -1
  98. package/dist/requests.js +42 -35
  99. package/dist/requests.js.map +1 -1
  100. package/dist/selectors.d.ts +1 -1
  101. package/dist/solana/cleanup.d.ts +14 -10
  102. package/dist/solana/cleanup.d.ts.map +1 -1
  103. package/dist/solana/cleanup.js +35 -33
  104. package/dist/solana/cleanup.js.map +1 -1
  105. package/dist/solana/exec.d.ts +19 -11
  106. package/dist/solana/exec.d.ts.map +1 -1
  107. package/dist/solana/exec.js +86 -163
  108. package/dist/solana/exec.js.map +1 -1
  109. package/dist/solana/hasher.d.ts +7 -2
  110. package/dist/solana/hasher.d.ts.map +1 -1
  111. package/dist/solana/hasher.js +7 -2
  112. package/dist/solana/hasher.js.map +1 -1
  113. package/dist/solana/index.d.ts +202 -84
  114. package/dist/solana/index.d.ts.map +1 -1
  115. package/dist/solana/index.js +367 -252
  116. package/dist/solana/index.js.map +1 -1
  117. package/dist/solana/offchain.d.ts +8 -18
  118. package/dist/solana/offchain.d.ts.map +1 -1
  119. package/dist/solana/offchain.js +29 -83
  120. package/dist/solana/offchain.js.map +1 -1
  121. package/dist/solana/patchBorsh.d.ts +5 -1
  122. package/dist/solana/patchBorsh.d.ts.map +1 -1
  123. package/dist/solana/patchBorsh.js +57 -46
  124. package/dist/solana/patchBorsh.js.map +1 -1
  125. package/dist/solana/send.d.ts +28 -10
  126. package/dist/solana/send.d.ts.map +1 -1
  127. package/dist/solana/send.js +44 -77
  128. package/dist/solana/send.js.map +1 -1
  129. package/dist/solana/types.d.ts +22 -1
  130. package/dist/solana/types.d.ts.map +1 -1
  131. package/dist/solana/types.js +12 -1
  132. package/dist/solana/types.js.map +1 -1
  133. package/dist/solana/utils.d.ts +58 -4
  134. package/dist/solana/utils.d.ts.map +1 -1
  135. package/dist/solana/utils.js +110 -7
  136. package/dist/solana/utils.js.map +1 -1
  137. package/dist/sui/hasher.d.ts +18 -0
  138. package/dist/sui/hasher.d.ts.map +1 -1
  139. package/dist/sui/hasher.js +18 -0
  140. package/dist/sui/hasher.js.map +1 -1
  141. package/dist/sui/index.d.ts +99 -12
  142. package/dist/sui/index.d.ts.map +1 -1
  143. package/dist/sui/index.js +108 -19
  144. package/dist/sui/index.js.map +1 -1
  145. package/dist/sui/types.d.ts +6 -0
  146. package/dist/sui/types.d.ts.map +1 -1
  147. package/dist/sui/types.js +5 -0
  148. package/dist/sui/types.js.map +1 -1
  149. package/dist/supported-chains.d.ts +2 -1
  150. package/dist/supported-chains.d.ts.map +1 -1
  151. package/dist/supported-chains.js.map +1 -1
  152. package/dist/types.d.ts +127 -16
  153. package/dist/types.d.ts.map +1 -1
  154. package/dist/types.js +18 -0
  155. package/dist/types.js.map +1 -1
  156. package/dist/utils.d.ts +67 -46
  157. package/dist/utils.d.ts.map +1 -1
  158. package/dist/utils.js +143 -21
  159. package/dist/utils.js.map +1 -1
  160. package/package.json +13 -9
  161. package/src/aptos/exec.ts +7 -18
  162. package/src/aptos/hasher.ts +18 -0
  163. package/src/aptos/index.ts +288 -110
  164. package/src/aptos/logs.ts +21 -3
  165. package/src/aptos/send.ts +25 -22
  166. package/src/aptos/token.ts +6 -0
  167. package/src/aptos/types.ts +26 -2
  168. package/src/aptos/utils.ts +1 -1
  169. package/src/chain.ts +243 -108
  170. package/src/commits.ts +6 -7
  171. package/src/evm/const.ts +5 -0
  172. package/src/evm/errors.ts +6 -1
  173. package/src/evm/hasher.ts +20 -4
  174. package/src/evm/index.ts +416 -214
  175. package/src/evm/logs.ts +255 -0
  176. package/src/evm/messages.ts +11 -5
  177. package/src/evm/offchain.ts +13 -4
  178. package/src/execution.ts +40 -32
  179. package/src/extra-args.ts +38 -6
  180. package/src/gas.ts +7 -9
  181. package/src/hasher/common.ts +3 -2
  182. package/src/hasher/hasher.ts +12 -4
  183. package/src/hasher/merklemulti.ts +17 -16
  184. package/src/index.ts +29 -23
  185. package/src/requests.ts +64 -46
  186. package/src/selectors.ts +1 -1
  187. package/src/solana/cleanup.ts +49 -34
  188. package/src/solana/exec.ts +128 -272
  189. package/src/solana/hasher.ts +13 -4
  190. package/src/solana/index.ts +483 -356
  191. package/src/solana/offchain.ts +32 -102
  192. package/src/solana/patchBorsh.ts +65 -50
  193. package/src/solana/send.ts +52 -111
  194. package/src/solana/types.ts +44 -3
  195. package/src/solana/utils.ts +143 -19
  196. package/src/sui/hasher.ts +18 -0
  197. package/src/sui/index.ts +143 -31
  198. package/src/sui/types.ts +6 -0
  199. package/src/supported-chains.ts +2 -1
  200. package/src/types.ts +130 -18
  201. package/src/utils.ts +168 -26
  202. package/tsconfig.json +2 -1
@@ -1,13 +1,14 @@
1
- import util from 'util';
1
+ import { Buffer } from 'buffer';
2
2
  import { Program } from '@coral-xyz/anchor';
3
3
  import { NATIVE_MINT, createApproveInstruction, getAccount, getAssociatedTokenAddressSync, } from '@solana/spl-token';
4
- import { ComputeBudgetProgram, PublicKey, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
4
+ import { PublicKey, } from '@solana/web3.js';
5
5
  import BN from 'bn.js';
6
6
  import { zeroPadValue } from 'ethers';
7
7
  import { SolanaChain } from "./index.js";
8
- import { toLeArray } from "../utils.js";
8
+ import { ChainFamily } from "../types.js";
9
+ import { toLeArray, util } from "../utils.js";
9
10
  import { IDL as CCIP_ROUTER_IDL } from "./idl/1.6.0/CCIP_ROUTER.js";
10
- import { bytesToBuffer, simulateTransaction, simulationProvider } from "./utils.js";
11
+ import { bytesToBuffer, simulationProvider } from "./utils.js";
11
12
  function anyToSvmMessage(message) {
12
13
  const feeTokenPubkey = message.feeToken ? new PublicKey(message.feeToken) : PublicKey.default;
13
14
  const svmMessage = {
@@ -27,8 +28,17 @@ function anyToSvmMessage(message) {
27
28
  };
28
29
  return svmMessage;
29
30
  }
30
- export async function getFee(connection, router, destChainSelector, message) {
31
- const program = new Program(CCIP_ROUTER_IDL, new PublicKey(router), simulationProvider(connection));
31
+ /**
32
+ * Gets the fee for sending a CCIP message on Solana.
33
+ * @param ctx - Context object containing the Solana connection and logger.
34
+ * @param router - Router program address.
35
+ * @param destChainSelector - Destination chain selector.
36
+ * @param message - CCIP message to send.
37
+ * @returns Fee amount in native tokens.
38
+ */
39
+ export async function getFee(ctx, router, destChainSelector, message) {
40
+ const { connection, logger = console } = ctx;
41
+ const program = new Program(CCIP_ROUTER_IDL, new PublicKey(router), simulationProvider(ctx));
32
42
  // Get router config to find feeQuoter
33
43
  const [configPda] = PublicKey.findProgramAddressSync([Buffer.from('config')], program.programId);
34
44
  const configAccount = await connection.getAccountInfo(configPda);
@@ -42,7 +52,7 @@ export async function getFee(connection, router, destChainSelector, message) {
42
52
  if (message.feeToken &&
43
53
  message.feeToken !== PublicKey.default.toBase58() &&
44
54
  message.feeToken !== linkTokenMint.toBase58()) {
45
- console.warn('feeToken is not default nor link =', linkTokenMint.toBase58());
55
+ logger.warn('feeToken is not default nor link =', linkTokenMint.toBase58());
46
56
  }
47
57
  // Convert feeToken to PublicKey (default to native SOL if not specified)
48
58
  const feeTokenPubkey = message.feeToken && message.feeToken !== PublicKey.default.toBase58()
@@ -66,7 +76,7 @@ export async function getFee(connection, router, destChainSelector, message) {
66
76
  .flat()
67
77
  .map((pubkey) => ({ pubkey, isWritable: false, isSigner: false }));
68
78
  // Call getFee method
69
- const result = await program.methods
79
+ const result = (await program.methods
70
80
  .getFee(new BN(destChainSelector), svmMessage)
71
81
  .accounts({
72
82
  config: configPda,
@@ -78,7 +88,7 @@ export async function getFee(connection, router, destChainSelector, message) {
78
88
  feeQuoterLinkTokenConfig: feeQuoterLinkTokenConfigPda,
79
89
  })
80
90
  .remainingAccounts(remainingAccounts)
81
- .view();
91
+ .view());
82
92
  if (!result?.amount) {
83
93
  throw new Error(`Invalid fee result from router: ${util.inspect(result)}`);
84
94
  }
@@ -93,11 +103,9 @@ async function deriveAccountsCcipSend({ router, destChainSelector, message, send
93
103
  let stage = 'Start';
94
104
  let tokenIndex = 0;
95
105
  const [configPDA] = PublicKey.findProgramAddressSync([Buffer.from('config')], router.programId);
96
- // read-only copy of router which avoids signing every simulation
97
- const roProgram = new Program(router.idl, router.programId, simulationProvider(connection, sender));
98
106
  do {
99
107
  // Create the transaction instruction for the deriveAccountsCcipSend method
100
- const response = (await roProgram.methods
108
+ const response = (await router.methods
101
109
  .deriveAccountsCcipSend({
102
110
  destChainSelector: new BN(destChainSelector.toString()),
103
111
  ccipSendCaller: sender,
@@ -148,67 +156,36 @@ async function deriveAccountsCcipSend({ router, destChainSelector, message, send
148
156
  tokenIndexes: Buffer.from(tokenIndices),
149
157
  };
150
158
  }
151
- export async function simulateAndSendTxs(connection, feePayer, instructions, addressLookupTableAccounts) {
152
- let computeUnitLimit;
153
- const simulated = (await simulateTransaction({
154
- connection,
155
- payerKey: feePayer.publicKey,
156
- instructions,
157
- addressLookupTableAccounts,
158
- })).unitsConsumed || 0;
159
- if (simulated > 200000)
160
- computeUnitLimit = Math.ceil(simulated * 1.1);
161
- const txMsg = new TransactionMessage({
162
- payerKey: feePayer.publicKey,
163
- recentBlockhash: (await connection.getLatestBlockhash('confirmed')).blockhash,
164
- instructions: [
165
- ...(computeUnitLimit
166
- ? [ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit })]
167
- : []),
168
- ...instructions,
169
- ],
170
- });
171
- const messageV0 = txMsg.compileToV0Message(addressLookupTableAccounts);
172
- const tx = new VersionedTransaction(messageV0);
173
- const signed = await feePayer.signTransaction(tx);
174
- let hash;
175
- for (let attempt = 0;; attempt++) {
176
- try {
177
- hash = await connection.sendTransaction(signed);
178
- await connection.confirmTransaction(hash, 'confirmed');
179
- return hash;
180
- }
181
- catch (error) {
182
- if (attempt >= 3)
183
- throw error;
184
- console.error(`sendTransaction failed attempt=${attempt + 1}/3:`, error);
185
- }
186
- }
187
- }
188
- export async function ccipSend(router, destChainSelector, message, opts) {
189
- const connection = router.provider.connection;
190
- let wallet;
191
- if (!(wallet = router.provider.wallet)) {
192
- throw new Error('ccipSend called without signer wallet');
193
- }
159
+ /**
160
+ * Generates unsigned instructions for sending a message with CCIP on Solana
161
+ * @param ctx - Context containing connection and logger.
162
+ * @param sender - Wallet to pay transaction fees.
163
+ * @param router - Router program instance.
164
+ * @param destChainSelector - Destination chain selector.
165
+ * @param message - CCIP message with fee.
166
+ * @param opts - Optional parameters for approval.
167
+ * @returns Solana unsigned txs (instructions and lookup tables)
168
+ */
169
+ export async function generateUnsignedCcipSend(ctx, sender, router, destChainSelector, message, opts) {
194
170
  const amountsToApprove = (message.tokenAmounts ?? []).reduce((acc, { token, amount }) => ({ ...acc, [token]: (acc[token] ?? 0n) + amount }), {});
195
171
  if (message.feeToken && message.feeToken !== PublicKey.default.toBase58()) {
196
172
  amountsToApprove[message.feeToken] = (amountsToApprove[message.feeToken] ?? 0n) + message.fee;
197
173
  }
174
+ const program = new Program(CCIP_ROUTER_IDL, router, simulationProvider(ctx, sender));
198
175
  const approveIxs = [];
199
176
  for (const [token, amount] of Object.entries(amountsToApprove)) {
200
- const approveIx = await approveRouterSpender(connection, wallet.publicKey, new PublicKey(token), router.programId, opts?.approveMax ? undefined : amount);
177
+ const approveIx = await approveRouterSpender(ctx, sender, new PublicKey(token), router, opts?.approveMax ? undefined : amount);
201
178
  if (approveIx)
202
179
  approveIxs.push(approveIx);
203
180
  }
204
181
  const svmMessage = anyToSvmMessage(message);
205
182
  const { addressLookupTableAccounts, accounts, tokenIndexes } = await deriveAccountsCcipSend({
206
- router,
183
+ router: program,
207
184
  destChainSelector,
208
- sender: wallet.publicKey,
185
+ sender,
209
186
  message: svmMessage,
210
187
  });
211
- const sendIx = await router.methods
188
+ const sendIx = await program.methods
212
189
  .ccipSend(new BN(destChainSelector), svmMessage, tokenIndexes)
213
190
  .accountsStrict({
214
191
  config: accounts[0].pubkey,
@@ -232,24 +209,14 @@ export async function ccipSend(router, destChainSelector, message, opts) {
232
209
  })
233
210
  .remainingAccounts(accounts.slice(18))
234
211
  .instruction();
235
- let hash;
236
- try {
237
- // first try to serialize and send a single tx containing approve and send ixs
238
- hash = await simulateAndSendTxs(connection, wallet, [...approveIxs, sendIx], addressLookupTableAccounts);
239
- }
240
- catch (err) {
241
- if (!approveIxs.length ||
242
- !(err instanceof Error) ||
243
- !['encoding overruns Uint8Array', 'too large'].some((e) => err.message.includes(e)))
244
- throw err;
245
- // if serialization fails, send approve txs separately
246
- for (const approveIx of approveIxs)
247
- await simulateAndSendTxs(connection, wallet, [approveIx]);
248
- hash = await simulateAndSendTxs(connection, wallet, [sendIx], addressLookupTableAccounts);
249
- }
250
- return { hash };
212
+ return {
213
+ family: ChainFamily.Solana,
214
+ mainIndex: approveIxs.length,
215
+ instructions: [...approveIxs, sendIx],
216
+ lookupTables: addressLookupTableAccounts,
217
+ };
251
218
  }
252
- async function approveRouterSpender(connection, owner, token, router, amount) {
219
+ async function approveRouterSpender({ connection, logger = console }, owner, token, router, amount) {
253
220
  // Get the current account info to check existing delegation (or create if needed)
254
221
  const mintInfo = await connection.getAccountInfo(token);
255
222
  if (!mintInfo)
@@ -266,7 +233,7 @@ async function approveRouterSpender(connection, owner, token, router, amount) {
266
233
  return;
267
234
  // Approve the spender to use tokens from the user's account
268
235
  const approveIx = createApproveInstruction(accountInfo.address, spender, owner, amount ?? BigInt(Number.MAX_SAFE_INTEGER), undefined, mintInfo.owner);
269
- console.info('Approving', amount ?? BigInt(Number.MAX_SAFE_INTEGER), 'of', token.toBase58(), 'tokens to router', router.toBase58());
236
+ logger.info('Approving', amount ?? BigInt(Number.MAX_SAFE_INTEGER), 'of', token.toBase58(), 'tokens to router', router.toBase58());
270
237
  return approveIx;
271
238
  }
272
239
  //# sourceMappingURL=send.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/solana/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/solana/send.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,25 @@
1
+ import type { AddressLookupTableAccount, PublicKey, Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
1
2
  import type { SVMExtraArgsV1 } from '../extra-args.ts';
2
- import type { CCIPMessage_V1_6 } from '../types.ts';
3
+ import type { CCIPMessage_V1_6, ChainFamily } from '../types.ts';
4
+ /** Solana-specific CCIP v1.6 message type with SVM extra args. */
3
5
  export type CCIPMessage_V1_6_Solana = CCIPMessage_V1_6 & SVMExtraArgsV1;
6
+ /**
7
+ * Contains unsigned data for a Solana transaction.
8
+ * instructions - array of instructions; may or may not fit in a single transaction
9
+ * mainIndex - index of the main instruction in the array
10
+ * lookupTables - array of lookupTables to be used in *main* transaction
11
+ */
12
+ export type UnsignedSolanaTx = {
13
+ family: typeof ChainFamily.Solana;
14
+ instructions: TransactionInstruction[];
15
+ mainIndex?: number;
16
+ lookupTables?: AddressLookupTableAccount[];
17
+ };
18
+ /** Minimal Solana wallet interface (anchor.Wallet=) */
19
+ export type Wallet = {
20
+ readonly publicKey: PublicKey;
21
+ signTransaction<T extends Transaction | VersionedTransaction>(tx: T): Promise<T>;
22
+ };
23
+ /** Typeguard for Solana Wallet */
24
+ export declare function isWallet(wallet: unknown): wallet is Wallet;
4
25
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEhE,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,WAAW,CAAC,MAAM,CAAA;IACjC,YAAY,EAAE,sBAAsB,EAAE,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAA;CAC3C,CAAA;AAED,uDAAuD;AACvD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjF,CAAA;AAED,kCAAkC;AAClC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAY1D"}
@@ -1,2 +1,13 @@
1
- export {};
1
+ /** Typeguard for Solana Wallet */
2
+ export function isWallet(wallet) {
3
+ return (typeof wallet === 'object' &&
4
+ wallet !== null &&
5
+ 'publicKey' in wallet &&
6
+ 'signTransaction' in wallet &&
7
+ typeof wallet.publicKey === 'object' &&
8
+ wallet.publicKey !== null &&
9
+ 'toBase58' in wallet.publicKey &&
10
+ typeof wallet.publicKey.toBase58 === 'function' &&
11
+ typeof wallet.signTransaction === 'function');
12
+ }
2
13
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAiCA,kCAAkC;AAClC,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,WAAW,IAAI,MAAM;QACrB,iBAAiB,IAAI,MAAM;QAC3B,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,SAAS,KAAK,IAAI;QACzB,UAAU,IAAI,MAAM,CAAC,SAAS;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU;QAC/C,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,CAC7C,CAAA;AACH,CAAC"}
@@ -1,11 +1,37 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { type AddressLookupTableAccount, type Connection, type Signer, type Transaction, type TransactionInstruction, PublicKey, VersionedTransaction } from '@solana/web3.js';
2
3
  import { type BytesLike } from 'ethers';
3
- import type { Log_ } from '../types.ts';
4
+ import type { Log_, WithLogger } from '../types.ts';
5
+ import type { UnsignedSolanaTx, Wallet } from './types.ts';
6
+ /**
7
+ * Generates a hex-encoded discriminator for a Solana event.
8
+ * @param eventName - Name of the event.
9
+ * @returns Hex-encoded discriminator string.
10
+ */
11
+ export declare function hexDiscriminator(eventName: string): string;
12
+ /**
13
+ * Converts bytes to a Node.js Buffer.
14
+ * @param bytes - Bytes to convert.
15
+ * @returns Node.js Buffer.
16
+ */
4
17
  export declare function bytesToBuffer(bytes: BytesLike): Buffer;
18
+ /**
19
+ * Waits for a Solana transaction to reach finalized status.
20
+ * @param connection - Solana connection instance.
21
+ * @param signature - Transaction signature to wait for.
22
+ * @param intervalMs - Polling interval in milliseconds.
23
+ * @param maxAttempts - Maximum polling attempts before timeout.
24
+ */
5
25
  export declare function waitForFinalization(connection: Connection, signature: string, intervalMs?: number, maxAttempts?: number): Promise<void>;
26
+ /**
27
+ * Converts a camelCase string to snake_case.
28
+ * @param str - String to convert.
29
+ * @returns snake_case formatted string.
30
+ */
6
31
  export declare function camelToSnakeCase(str: string): string;
7
32
  type ParsedLog = Pick<Log_, 'topics' | 'index' | 'address' | 'data'> & {
8
33
  data: string;
34
+ level: number;
9
35
  };
10
36
  /**
11
37
  * Utility function to parse Solana logs with proper address and topic extraction.
@@ -26,12 +52,23 @@ type ParsedLog = Pick<Log_, 'topics' | 'index' | 'address' | 'data'> & {
26
52
  * @returns Array of parsed log objects from all programs in the transaction
27
53
  */
28
54
  export declare function parseSolanaLogs(logs: readonly string[]): ParsedLog[];
55
+ /**
56
+ * Extracts error information from Solana transaction logs.
57
+ * @param logs_ - Raw log strings or parsed log objects.
58
+ * @returns Parsed error info with program and error details.
59
+ */
29
60
  export declare function getErrorFromLogs(logs_: readonly string[] | readonly Pick<Log_, 'address' | 'index' | 'data' | 'topics'>[] | null): {
30
61
  program: string;
31
62
  [k: string]: string;
32
63
  } | undefined;
33
- export declare function simulateTransaction({ connection, payerKey, computeUnitsOverride, ...rest }: {
64
+ /**
65
+ * Simulates a Solana transaction to estimate compute units.
66
+ * @param params - Simulation parameters including connection and payer.
67
+ * @returns Simulation result with estimated compute units.
68
+ */
69
+ export declare function simulateTransaction({ connection, logger }: {
34
70
  connection: Connection;
71
+ } & WithLogger, { payerKey, computeUnitsOverride, ...rest }: {
35
72
  payerKey: PublicKey;
36
73
  computeUnitsOverride?: number;
37
74
  addressLookupTableAccounts?: AddressLookupTableAccount[];
@@ -43,16 +80,33 @@ export declare function simulateTransaction({ connection, payerKey, computeUnits
43
80
  /**
44
81
  * Used as `provider` in anchor's `Program` constructor, to support `.view()` simulations
45
82
  * without * requiring a full AnchorProvider with wallet
46
- * @param connection - Connection to the Solana network
83
+ * @param ctx - Context object containing connection and logger
47
84
  * @param feePayer - Fee payer for the simulated transaction
48
85
  * @returns Value returned by the simulated method
49
86
  */
50
- export declare function simulationProvider(connection: Connection, feePayer?: PublicKey): {
87
+ export declare function simulationProvider(ctx: {
88
+ connection: Connection;
89
+ } & WithLogger, feePayer?: PublicKey): {
51
90
  connection: Connection;
52
91
  wallet: {
53
92
  publicKey: PublicKey;
54
93
  };
55
94
  simulate: (tx: Transaction | VersionedTransaction, _signers?: Signer[]) => Promise<import("@solana/web3.js").SimulatedTransactionResponse>;
56
95
  };
96
+ /**
97
+ * Sign, simulate, send and confirm as many instructions as possible on each transaction
98
+ * @param ctx - Context object containing connection and logger
99
+ * @param wallet - Wallet to sign and pay for txs
100
+ * @param unsignedTx - instructions to sign and send
101
+ * - instructions - Instructions to send; they may not fit all in a single transaction,
102
+ * in which case they will be split into multiple transactions
103
+ * - mainIndex - Index of the main instruction
104
+ * - lookupTables - lookupTables to be used for main instruction
105
+ * @param computeUnits - max computeUnits limit to be used for main instruction
106
+ * @returns - signature of successful transaction including main instruction
107
+ */
108
+ export declare function simulateAndSendTxs(ctx: {
109
+ connection: Connection;
110
+ } & WithLogger, wallet: Wallet, { instructions, mainIndex, lookupTables }: Omit<UnsignedSolanaTx, 'family'>, computeUnits?: number): Promise<string>;
57
111
  export {};
58
112
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,MAAM,EAEX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAE3B,SAAS,EAGT,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAM,EAChB,WAAW,SAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAwCpE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,GAC/F;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,CA0DtD;AAED,wBAAsB,mBAAmB,CAAC,EACxC,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,SAAS,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,0BAA0B,CAAC,EAAE,yBAAyB,EAAE,CAAA;CACzD,GAAG,CAAC;IAAE,YAAY,EAAE,sBAAsB,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,WAAW,GAAG,oBAAoB,CAAA;CAAE,CAAC,mEA0D5F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,QAAQ,GAAE,SAA6D;;;;;mBAOhD,WAAW,GAAG,oBAAoB,aAAa,MAAM,EAAE;EAO/E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,MAAM,EAEX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAE3B,SAAS,EAGT,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAM,EAChB,WAAW,SAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAyCpE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,GAC/F;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,CA0DtD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,UAAU,EAAE,MAAgB,EAAE,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EACzE,EACE,QAAQ,EACR,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,0BAA0B,CAAC,EAAE,yBAAyB,EAAE,CAAA;CACzD,GAAG,CAAC;IAAE,YAAY,EAAE,sBAAsB,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,WAAW,GAAG,oBAAoB,CAAA;CAAE,CAAC,mEA2D9F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EAC5C,QAAQ,GAAE,SAA6D;;;;;mBAOhD,WAAW,GAAG,oBAAoB,aAAa,MAAM,EAAE;EAM/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EAC5C,MAAM,EAAE,MAAM,EACd,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAC3E,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CA6DjB"}
@@ -1,9 +1,31 @@
1
+ import { Buffer } from 'buffer';
2
+ import { eventDiscriminator } from '@coral-xyz/anchor';
1
3
  import { ComputeBudgetProgram, PublicKey, SendTransactionError, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
2
4
  import { dataLength, dataSlice, hexlify } from 'ethers';
3
5
  import { getDataBytes, sleep } from "../utils.js";
6
+ /**
7
+ * Generates a hex-encoded discriminator for a Solana event.
8
+ * @param eventName - Name of the event.
9
+ * @returns Hex-encoded discriminator string.
10
+ */
11
+ export function hexDiscriminator(eventName) {
12
+ return hexlify(eventDiscriminator(eventName));
13
+ }
14
+ /**
15
+ * Converts bytes to a Node.js Buffer.
16
+ * @param bytes - Bytes to convert.
17
+ * @returns Node.js Buffer.
18
+ */
4
19
  export function bytesToBuffer(bytes) {
5
20
  return Buffer.from(getDataBytes(bytes).buffer);
6
21
  }
22
+ /**
23
+ * Waits for a Solana transaction to reach finalized status.
24
+ * @param connection - Solana connection instance.
25
+ * @param signature - Transaction signature to wait for.
26
+ * @param intervalMs - Polling interval in milliseconds.
27
+ * @param maxAttempts - Maximum polling attempts before timeout.
28
+ */
7
29
  export async function waitForFinalization(connection, signature, intervalMs = 500, maxAttempts = 500) {
8
30
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
9
31
  const status = await connection.getSignatureStatuses([signature]);
@@ -15,6 +37,11 @@ export async function waitForFinalization(connection, signature, intervalMs = 50
15
37
  }
16
38
  throw new Error(`Transaction ${signature} not finalized after timeout`);
17
39
  }
40
+ /**
41
+ * Converts a camelCase string to snake_case.
42
+ * @param str - String to convert.
43
+ * @returns snake_case formatted string.
44
+ */
18
45
  export function camelToSnakeCase(str) {
19
46
  return str
20
47
  .replace(/([A-Z]+)([A-Z][a-z]|$)/g, (_, p1, p2) => {
@@ -81,11 +108,17 @@ export function parseSolanaLogs(logs) {
81
108
  index: i,
82
109
  address: currentProgram,
83
110
  data: logData,
111
+ level: programStack.length,
84
112
  });
85
113
  }
86
114
  }
87
115
  return results;
88
116
  }
117
+ /**
118
+ * Extracts error information from Solana transaction logs.
119
+ * @param logs_ - Raw log strings or parsed log objects.
120
+ * @returns Parsed error info with program and error details.
121
+ */
89
122
  export function getErrorFromLogs(logs_) {
90
123
  if (!logs_?.length)
91
124
  return;
@@ -134,7 +167,12 @@ export function getErrorFromLogs(logs_) {
134
167
  };
135
168
  }
136
169
  }
137
- export async function simulateTransaction({ connection, payerKey, computeUnitsOverride, ...rest }) {
170
+ /**
171
+ * Simulates a Solana transaction to estimate compute units.
172
+ * @param params - Simulation parameters including connection and payer.
173
+ * @returns Simulation result with estimated compute units.
174
+ */
175
+ export async function simulateTransaction({ connection, logger = console }, { payerKey, computeUnitsOverride, ...rest }) {
138
176
  // Add max compute units for simulation
139
177
  const maxComputeUnits = 1_400_000;
140
178
  const recentBlockhash = '11111111111111111111111111111112';
@@ -172,7 +210,7 @@ export async function simulateTransaction({ connection, payerKey, computeUnitsOv
172
210
  };
173
211
  const result = await connection.simulateTransaction(tx, config);
174
212
  if (result.value.err) {
175
- console.debug('Simulation results:', {
213
+ logger.debug('Simulation results:', {
176
214
  logs: result.value.logs,
177
215
  unitsConsumed: result.value.unitsConsumed,
178
216
  returnData: result.value.returnData,
@@ -191,21 +229,86 @@ export async function simulateTransaction({ connection, payerKey, computeUnitsOv
191
229
  /**
192
230
  * Used as `provider` in anchor's `Program` constructor, to support `.view()` simulations
193
231
  * without * requiring a full AnchorProvider with wallet
194
- * @param connection - Connection to the Solana network
232
+ * @param ctx - Context object containing connection and logger
195
233
  * @param feePayer - Fee payer for the simulated transaction
196
234
  * @returns Value returned by the simulated method
197
235
  */
198
- export function simulationProvider(connection, feePayer = new PublicKey('11111111111111111111111111111112')) {
236
+ export function simulationProvider(ctx, feePayer = new PublicKey('11111111111111111111111111111112')) {
199
237
  return {
200
- connection,
238
+ connection: ctx.connection,
201
239
  wallet: {
202
240
  publicKey: feePayer,
203
241
  },
204
- simulate: async (tx, _signers) => simulateTransaction({
205
- connection,
242
+ simulate: async (tx, _signers) => simulateTransaction(ctx, {
206
243
  payerKey: feePayer,
207
244
  tx,
208
245
  }),
209
246
  };
210
247
  }
248
+ /**
249
+ * Sign, simulate, send and confirm as many instructions as possible on each transaction
250
+ * @param ctx - Context object containing connection and logger
251
+ * @param wallet - Wallet to sign and pay for txs
252
+ * @param unsignedTx - instructions to sign and send
253
+ * - instructions - Instructions to send; they may not fit all in a single transaction,
254
+ * in which case they will be split into multiple transactions
255
+ * - mainIndex - Index of the main instruction
256
+ * - lookupTables - lookupTables to be used for main instruction
257
+ * @param computeUnits - max computeUnits limit to be used for main instruction
258
+ * @returns - signature of successful transaction including main instruction
259
+ */
260
+ export async function simulateAndSendTxs(ctx, wallet, { instructions, mainIndex, lookupTables }, computeUnits) {
261
+ const { connection } = ctx;
262
+ let mainHash;
263
+ for (let [start, end] = [0, instructions.length]; start < instructions.length; [start, end] = [end, instructions.length]) {
264
+ let computeUnitLimit, lastErr, addressLookupTableAccounts, ixs, includesMain;
265
+ do {
266
+ ixs = instructions.slice(start, end);
267
+ includesMain = mainIndex != null && start <= mainIndex && mainIndex < end;
268
+ addressLookupTableAccounts = includesMain ? lookupTables : undefined;
269
+ try {
270
+ const simulated = (await simulateTransaction(ctx, {
271
+ payerKey: wallet.publicKey,
272
+ instructions: ixs,
273
+ addressLookupTableAccounts,
274
+ })).unitsConsumed || 0;
275
+ if (simulated <= 200000) {
276
+ computeUnitLimit = undefined;
277
+ }
278
+ else if (!includesMain || computeUnits == null || simulated <= computeUnits) {
279
+ computeUnitLimit = Math.ceil(simulated * 1.1);
280
+ }
281
+ else {
282
+ throw new Error(`Main simulation exceeds specified computeUnits limit. simulated=${simulated}, limit=${computeUnits}`);
283
+ }
284
+ break;
285
+ }
286
+ catch (err) {
287
+ lastErr = err;
288
+ end--; // truncate until finding a slice which fits (both computeUnits and tx size limits)
289
+ }
290
+ } while (end > start);
291
+ if (end <= start)
292
+ throw lastErr;
293
+ const blockhash = await connection.getLatestBlockhash('confirmed');
294
+ const txMsg = new TransactionMessage({
295
+ payerKey: wallet.publicKey,
296
+ recentBlockhash: blockhash.blockhash,
297
+ instructions: [
298
+ ...(computeUnitLimit
299
+ ? [ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit })]
300
+ : []),
301
+ ...ixs,
302
+ ],
303
+ });
304
+ const messageV0 = txMsg.compileToV0Message(addressLookupTableAccounts);
305
+ const tx = new VersionedTransaction(messageV0);
306
+ const signed = await wallet.signTransaction(tx);
307
+ const signature = await connection.sendTransaction(signed);
308
+ await connection.confirmTransaction({ signature, ...blockhash }, 'confirmed');
309
+ if (includesMain)
310
+ mainHash = signature;
311
+ }
312
+ return mainHash;
313
+ }
211
314
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"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"}