@solana/web3.js 1.66.4 → 1.67.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/lib/index.esm.js CHANGED
@@ -421,6 +421,17 @@ class TransactionExpiredTimeoutError extends Error {
421
421
  Object.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {
422
422
  value: 'TransactionExpiredTimeoutError'
423
423
  });
424
+ class TransactionExpiredNonceInvalidError extends Error {
425
+ constructor(signature) {
426
+ super(`Signature ${signature} has expired: the nonce is no longer valid.`);
427
+ this.signature = void 0;
428
+ this.signature = signature;
429
+ }
430
+
431
+ }
432
+ Object.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {
433
+ value: 'TransactionExpiredNonceInvalidError'
434
+ });
424
435
 
425
436
  class MessageAccountKeys {
426
437
  constructor(staticAccountKeys, accountKeysFromLookups) {
@@ -1258,6 +1269,7 @@ let TransactionStatus;
1258
1269
  TransactionStatus[TransactionStatus["BLOCKHEIGHT_EXCEEDED"] = 0] = "BLOCKHEIGHT_EXCEEDED";
1259
1270
  TransactionStatus[TransactionStatus["PROCESSED"] = 1] = "PROCESSED";
1260
1271
  TransactionStatus[TransactionStatus["TIMED_OUT"] = 2] = "TIMED_OUT";
1272
+ TransactionStatus[TransactionStatus["NONCE_INVALID"] = 3] = "NONCE_INVALID";
1261
1273
  })(TransactionStatus || (TransactionStatus = {}));
1262
1274
 
1263
1275
  const DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);
@@ -1352,6 +1364,7 @@ class Transaction {
1352
1364
  this.recentBlockhash = void 0;
1353
1365
  this.lastValidBlockHeight = void 0;
1354
1366
  this.nonceInfo = void 0;
1367
+ this.minNonceContextSlot = void 0;
1355
1368
  this._message = void 0;
1356
1369
  this._json = void 0;
1357
1370
 
@@ -1367,7 +1380,14 @@ class Transaction {
1367
1380
  this.signatures = opts.signatures;
1368
1381
  }
1369
1382
 
1370
- if (Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')) {
1383
+ if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {
1384
+ const {
1385
+ minContextSlot,
1386
+ nonceInfo
1387
+ } = opts;
1388
+ this.minNonceContextSlot = minContextSlot;
1389
+ this.nonceInfo = nonceInfo;
1390
+ } else if (Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')) {
1371
1391
  const {
1372
1392
  blockhash,
1373
1393
  lastValidBlockHeight
@@ -2184,11 +2204,28 @@ async function sendAndConfirmTransaction(connection, transaction, signers, optio
2184
2204
  minContextSlot: options.minContextSlot
2185
2205
  };
2186
2206
  const signature = await connection.sendTransaction(transaction, signers, sendOptions);
2187
- const status = transaction.recentBlockhash != null && transaction.lastValidBlockHeight != null ? (await connection.confirmTransaction({
2188
- signature: signature,
2189
- blockhash: transaction.recentBlockhash,
2190
- lastValidBlockHeight: transaction.lastValidBlockHeight
2191
- }, options && options.commitment)).value : (await connection.confirmTransaction(signature, options && options.commitment)).value;
2207
+ let status;
2208
+
2209
+ if (transaction.recentBlockhash != null && transaction.lastValidBlockHeight != null) {
2210
+ status = (await connection.confirmTransaction({
2211
+ signature: signature,
2212
+ blockhash: transaction.recentBlockhash,
2213
+ lastValidBlockHeight: transaction.lastValidBlockHeight
2214
+ }, options && options.commitment)).value;
2215
+ } else if (transaction.minNonceContextSlot != null && transaction.nonceInfo != null) {
2216
+ const {
2217
+ nonceInstruction
2218
+ } = transaction.nonceInfo;
2219
+ const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;
2220
+ status = (await connection.confirmTransaction({
2221
+ minContextSlot: transaction.minNonceContextSlot,
2222
+ nonceAccountPubkey,
2223
+ nonceValue: transaction.nonceInfo.nonce,
2224
+ signature
2225
+ }, options && options.commitment)).value;
2226
+ } else {
2227
+ status = (await connection.confirmTransaction(signature, options && options.commitment)).value;
2228
+ }
2192
2229
 
2193
2230
  if (status.err) {
2194
2231
  throw new Error(`Transaction ${signature} failed (${JSON.stringify(status)})`);
@@ -2257,6 +2294,9 @@ const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');
2257
2294
 
2258
2295
  const NonceAccountLayout = BufferLayout.struct([BufferLayout.u32('version'), BufferLayout.u32('state'), publicKey('authorizedPubkey'), publicKey('nonce'), BufferLayout.struct([FeeCalculatorLayout], 'feeCalculator')]);
2259
2296
  const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;
2297
+ /**
2298
+ * A durable nonce is a 32 byte value encoded as a base58 string.
2299
+ */
2260
2300
 
2261
2301
  /**
2262
2302
  * NonceAccount class
@@ -3671,10 +3711,13 @@ function extractCommitmentFromConfig(commitmentOrConfig) {
3671
3711
  };
3672
3712
  }
3673
3713
  /**
3674
- * @internal
3714
+ * A strategy for confirming durable nonce transactions.
3675
3715
  */
3676
3716
 
3677
3717
 
3718
+ /**
3719
+ * @internal
3720
+ */
3678
3721
  function createRpcResult(result) {
3679
3722
  return union([type({
3680
3723
  jsonrpc: literal('2.0'),
@@ -5246,25 +5289,45 @@ class Connection {
5246
5289
  }
5247
5290
 
5248
5291
  assert(decodedSignature.length === 64, 'signature has invalid length');
5249
- const subscriptionCommitment = commitment || this.commitment;
5250
- let timeoutId;
5292
+
5293
+ if (typeof strategy === 'string') {
5294
+ return await this.confirmTransactionUsingLegacyTimeoutStrategy({
5295
+ commitment: commitment || this.commitment,
5296
+ signature: rawSignature
5297
+ });
5298
+ } else if ('lastValidBlockHeight' in strategy) {
5299
+ return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({
5300
+ commitment: commitment || this.commitment,
5301
+ strategy
5302
+ });
5303
+ } else {
5304
+ return await this.confirmTransactionUsingDurableNonceStrategy({
5305
+ commitment: commitment || this.commitment,
5306
+ strategy
5307
+ });
5308
+ }
5309
+ }
5310
+
5311
+ getTransactionConfirmationPromise({
5312
+ commitment,
5313
+ signature
5314
+ }) {
5251
5315
  let signatureSubscriptionId;
5252
5316
  let disposeSignatureSubscriptionStateChangeObserver;
5253
5317
  let done = false;
5254
5318
  const confirmationPromise = new Promise((resolve, reject) => {
5255
5319
  try {
5256
- signatureSubscriptionId = this.onSignature(rawSignature, (result, context) => {
5320
+ signatureSubscriptionId = this.onSignature(signature, (result, context) => {
5257
5321
  signatureSubscriptionId = undefined;
5258
5322
  const response = {
5259
5323
  context,
5260
5324
  value: result
5261
5325
  };
5262
- done = true;
5263
5326
  resolve({
5264
5327
  __type: TransactionStatus.PROCESSED,
5265
5328
  response
5266
5329
  });
5267
- }, subscriptionCommitment);
5330
+ }, commitment);
5268
5331
  const subscriptionSetupPromise = new Promise(resolveSubscriptionSetup => {
5269
5332
  if (signatureSubscriptionId == null) {
5270
5333
  resolveSubscriptionSetup();
@@ -5280,7 +5343,7 @@ class Connection {
5280
5343
  (async () => {
5281
5344
  await subscriptionSetupPromise;
5282
5345
  if (done) return;
5283
- const response = await this.getSignatureStatus(rawSignature);
5346
+ const response = await this.getSignatureStatus(signature);
5284
5347
  if (done) return;
5285
5348
 
5286
5349
  if (response == null) {
@@ -5292,11 +5355,41 @@ class Connection {
5292
5355
  value
5293
5356
  } = response;
5294
5357
 
5358
+ if (value == null) {
5359
+ return;
5360
+ }
5361
+
5295
5362
  if (value !== null && value !== void 0 && value.err) {
5296
5363
  reject(value.err);
5297
- }
5364
+ } else {
5365
+ switch (commitment) {
5366
+ case 'confirmed':
5367
+ case 'single':
5368
+ case 'singleGossip':
5369
+ {
5370
+ if (value.confirmationStatus === 'processed') {
5371
+ return;
5372
+ }
5373
+
5374
+ break;
5375
+ }
5376
+
5377
+ case 'finalized':
5378
+ case 'max':
5379
+ case 'root':
5380
+ {
5381
+ if (value.confirmationStatus === 'processed' || value.confirmationStatus === 'confirmed') {
5382
+ return;
5383
+ }
5384
+
5385
+ break;
5386
+ }
5387
+ // exhaust enums to ensure full coverage
5388
+
5389
+ case 'processed':
5390
+ case 'recent':
5391
+ }
5298
5392
 
5299
- if (value) {
5300
5393
  done = true;
5301
5394
  resolve({
5302
5395
  __type: TransactionStatus.PROCESSED,
@@ -5311,81 +5404,279 @@ class Connection {
5311
5404
  reject(err);
5312
5405
  }
5313
5406
  });
5407
+
5408
+ const abortConfirmation = () => {
5409
+ if (disposeSignatureSubscriptionStateChangeObserver) {
5410
+ disposeSignatureSubscriptionStateChangeObserver();
5411
+ disposeSignatureSubscriptionStateChangeObserver = undefined;
5412
+ }
5413
+
5414
+ if (signatureSubscriptionId) {
5415
+ this.removeSignatureListener(signatureSubscriptionId);
5416
+ signatureSubscriptionId = undefined;
5417
+ }
5418
+ };
5419
+
5420
+ return {
5421
+ abortConfirmation,
5422
+ confirmationPromise
5423
+ };
5424
+ }
5425
+
5426
+ async confirmTransactionUsingBlockHeightExceedanceStrategy({
5427
+ commitment,
5428
+ strategy: {
5429
+ lastValidBlockHeight,
5430
+ signature
5431
+ }
5432
+ }) {
5433
+ let done = false;
5314
5434
  const expiryPromise = new Promise(resolve => {
5315
- if (typeof strategy === 'string') {
5316
- let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;
5317
-
5318
- switch (subscriptionCommitment) {
5319
- case 'processed':
5320
- case 'recent':
5321
- case 'single':
5322
- case 'confirmed':
5323
- case 'singleGossip':
5324
- {
5325
- timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;
5326
- break;
5327
- }
5435
+ const checkBlockHeight = async () => {
5436
+ try {
5437
+ const blockHeight = await this.getBlockHeight(commitment);
5438
+ return blockHeight;
5439
+ } catch (_e) {
5440
+ return -1;
5328
5441
  }
5442
+ };
5329
5443
 
5330
- timeoutId = setTimeout(() => resolve({
5331
- __type: TransactionStatus.TIMED_OUT,
5332
- timeoutMs
5333
- }), timeoutMs);
5444
+ (async () => {
5445
+ let currentBlockHeight = await checkBlockHeight();
5446
+ if (done) return;
5447
+
5448
+ while (currentBlockHeight <= lastValidBlockHeight) {
5449
+ await sleep(1000);
5450
+ if (done) return;
5451
+ currentBlockHeight = await checkBlockHeight();
5452
+ if (done) return;
5453
+ }
5454
+
5455
+ resolve({
5456
+ __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED
5457
+ });
5458
+ })();
5459
+ });
5460
+ const {
5461
+ abortConfirmation,
5462
+ confirmationPromise
5463
+ } = this.getTransactionConfirmationPromise({
5464
+ commitment,
5465
+ signature
5466
+ });
5467
+ let result;
5468
+
5469
+ try {
5470
+ const outcome = await Promise.race([confirmationPromise, expiryPromise]);
5471
+
5472
+ if (outcome.__type === TransactionStatus.PROCESSED) {
5473
+ result = outcome.response;
5334
5474
  } else {
5335
- let config = strategy;
5475
+ throw new TransactionExpiredBlockheightExceededError(signature);
5476
+ }
5477
+ } finally {
5478
+ done = true;
5479
+ abortConfirmation();
5480
+ }
5336
5481
 
5337
- const checkBlockHeight = async () => {
5338
- try {
5339
- const blockHeight = await this.getBlockHeight(commitment);
5340
- return blockHeight;
5341
- } catch (_e) {
5342
- return -1;
5343
- }
5344
- };
5482
+ return result;
5483
+ }
5345
5484
 
5346
- (async () => {
5347
- let currentBlockHeight = await checkBlockHeight();
5348
- if (done) return;
5485
+ async confirmTransactionUsingDurableNonceStrategy({
5486
+ commitment,
5487
+ strategy: {
5488
+ minContextSlot,
5489
+ nonceAccountPubkey,
5490
+ nonceValue,
5491
+ signature
5492
+ }
5493
+ }) {
5494
+ let done = false;
5495
+ const expiryPromise = new Promise(resolve => {
5496
+ let currentNonceValue = nonceValue;
5497
+ let lastCheckedSlot = null;
5349
5498
 
5350
- while (currentBlockHeight <= config.lastValidBlockHeight) {
5351
- await sleep(1000);
5352
- if (done) return;
5353
- currentBlockHeight = await checkBlockHeight();
5354
- if (done) return;
5499
+ const getCurrentNonceValue = async () => {
5500
+ try {
5501
+ const {
5502
+ context,
5503
+ value: nonceAccount
5504
+ } = await this.getNonceAndContext(nonceAccountPubkey, {
5505
+ commitment,
5506
+ minContextSlot
5507
+ });
5508
+ lastCheckedSlot = context.slot;
5509
+ return nonceAccount === null || nonceAccount === void 0 ? void 0 : nonceAccount.nonce;
5510
+ } catch (e) {
5511
+ // If for whatever reason we can't reach/read the nonce
5512
+ // account, just keep using the last-known value.
5513
+ return currentNonceValue;
5514
+ }
5515
+ };
5516
+
5517
+ (async () => {
5518
+ currentNonceValue = await getCurrentNonceValue();
5519
+ if (done) return;
5520
+
5521
+ while (true // eslint-disable-line no-constant-condition
5522
+ ) {
5523
+ if (nonceValue !== currentNonceValue) {
5524
+ resolve({
5525
+ __type: TransactionStatus.NONCE_INVALID,
5526
+ slotInWhichNonceDidAdvance: lastCheckedSlot
5527
+ });
5528
+ return;
5355
5529
  }
5356
5530
 
5357
- resolve({
5358
- __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED
5359
- });
5360
- })();
5361
- }
5531
+ await sleep(2000);
5532
+ if (done) return;
5533
+ currentNonceValue = await getCurrentNonceValue();
5534
+ if (done) return;
5535
+ }
5536
+ })();
5537
+ });
5538
+ const {
5539
+ abortConfirmation,
5540
+ confirmationPromise
5541
+ } = this.getTransactionConfirmationPromise({
5542
+ commitment,
5543
+ signature
5362
5544
  });
5363
5545
  let result;
5364
5546
 
5365
5547
  try {
5366
5548
  const outcome = await Promise.race([confirmationPromise, expiryPromise]);
5367
5549
 
5368
- switch (outcome.__type) {
5369
- case TransactionStatus.BLOCKHEIGHT_EXCEEDED:
5370
- throw new TransactionExpiredBlockheightExceededError(rawSignature);
5550
+ if (outcome.__type === TransactionStatus.PROCESSED) {
5551
+ result = outcome.response;
5552
+ } else {
5553
+ var _signatureStatus;
5554
+
5555
+ // Double check that the transaction is indeed unconfirmed.
5556
+ let signatureStatus;
5371
5557
 
5372
- case TransactionStatus.PROCESSED:
5373
- result = outcome.response;
5558
+ while (true // eslint-disable-line no-constant-condition
5559
+ ) {
5560
+ var _outcome$slotInWhichN;
5561
+
5562
+ const status = await this.getSignatureStatus(signature);
5563
+
5564
+ if (status == null) {
5565
+ break;
5566
+ }
5567
+
5568
+ if (status.context.slot < ((_outcome$slotInWhichN = outcome.slotInWhichNonceDidAdvance) !== null && _outcome$slotInWhichN !== void 0 ? _outcome$slotInWhichN : minContextSlot)) {
5569
+ await sleep(400);
5570
+ continue;
5571
+ }
5572
+
5573
+ signatureStatus = status;
5374
5574
  break;
5575
+ }
5576
+
5577
+ if ((_signatureStatus = signatureStatus) !== null && _signatureStatus !== void 0 && _signatureStatus.value) {
5578
+ const commitmentForStatus = commitment || 'finalized';
5579
+ const {
5580
+ confirmationStatus
5581
+ } = signatureStatus.value;
5582
+
5583
+ switch (commitmentForStatus) {
5584
+ case 'processed':
5585
+ case 'recent':
5586
+ if (confirmationStatus !== 'processed' && confirmationStatus !== 'confirmed' && confirmationStatus !== 'finalized') {
5587
+ throw new TransactionExpiredNonceInvalidError(signature);
5588
+ }
5375
5589
 
5376
- case TransactionStatus.TIMED_OUT:
5377
- throw new TransactionExpiredTimeoutError(rawSignature, outcome.timeoutMs / 1000);
5590
+ break;
5591
+
5592
+ case 'confirmed':
5593
+ case 'single':
5594
+ case 'singleGossip':
5595
+ if (confirmationStatus !== 'confirmed' && confirmationStatus !== 'finalized') {
5596
+ throw new TransactionExpiredNonceInvalidError(signature);
5597
+ }
5598
+
5599
+ break;
5600
+
5601
+ case 'finalized':
5602
+ case 'max':
5603
+ case 'root':
5604
+ if (confirmationStatus !== 'finalized') {
5605
+ throw new TransactionExpiredNonceInvalidError(signature);
5606
+ }
5607
+
5608
+ break;
5609
+
5610
+ default:
5611
+ // Exhaustive switch.
5612
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5613
+ (_ => {})(commitmentForStatus);
5614
+
5615
+ }
5616
+
5617
+ result = {
5618
+ context: signatureStatus.context,
5619
+ value: {
5620
+ err: signatureStatus.value.err
5621
+ }
5622
+ };
5623
+ } else {
5624
+ throw new TransactionExpiredNonceInvalidError(signature);
5625
+ }
5378
5626
  }
5379
5627
  } finally {
5380
- clearTimeout(timeoutId);
5628
+ done = true;
5629
+ abortConfirmation();
5630
+ }
5381
5631
 
5382
- if (disposeSignatureSubscriptionStateChangeObserver) {
5383
- disposeSignatureSubscriptionStateChangeObserver();
5632
+ return result;
5633
+ }
5634
+
5635
+ async confirmTransactionUsingLegacyTimeoutStrategy({
5636
+ commitment,
5637
+ signature
5638
+ }) {
5639
+ let timeoutId;
5640
+ const expiryPromise = new Promise(resolve => {
5641
+ let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;
5642
+
5643
+ switch (commitment) {
5644
+ case 'processed':
5645
+ case 'recent':
5646
+ case 'single':
5647
+ case 'confirmed':
5648
+ case 'singleGossip':
5649
+ {
5650
+ timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;
5651
+ break;
5652
+ }
5384
5653
  }
5385
5654
 
5386
- if (signatureSubscriptionId) {
5387
- this.removeSignatureListener(signatureSubscriptionId);
5655
+ timeoutId = setTimeout(() => resolve({
5656
+ __type: TransactionStatus.TIMED_OUT,
5657
+ timeoutMs
5658
+ }), timeoutMs);
5659
+ });
5660
+ const {
5661
+ abortConfirmation,
5662
+ confirmationPromise
5663
+ } = this.getTransactionConfirmationPromise({
5664
+ commitment,
5665
+ signature
5666
+ });
5667
+ let result;
5668
+
5669
+ try {
5670
+ const outcome = await Promise.race([confirmationPromise, expiryPromise]);
5671
+
5672
+ if (outcome.__type === TransactionStatus.PROCESSED) {
5673
+ result = outcome.response;
5674
+ } else {
5675
+ throw new TransactionExpiredTimeoutError(signature, outcome.timeoutMs / 1000);
5388
5676
  }
5677
+ } finally {
5678
+ clearTimeout(timeoutId);
5679
+ abortConfirmation();
5389
5680
  }
5390
5681
 
5391
5682
  return result;
@@ -6441,11 +6732,11 @@ class Connection {
6441
6732
  */
6442
6733
 
6443
6734
 
6444
- async getNonceAndContext(nonceAccount, commitment) {
6735
+ async getNonceAndContext(nonceAccount, commitmentOrConfig) {
6445
6736
  const {
6446
6737
  context,
6447
6738
  value: accountInfo
6448
- } = await this.getAccountInfoAndContext(nonceAccount, commitment);
6739
+ } = await this.getAccountInfoAndContext(nonceAccount, commitmentOrConfig);
6449
6740
  let value = null;
6450
6741
 
6451
6742
  if (accountInfo !== null) {
@@ -6462,8 +6753,8 @@ class Connection {
6462
6753
  */
6463
6754
 
6464
6755
 
6465
- async getNonce(nonceAccount, commitment) {
6466
- return await this.getNonceAndContext(nonceAccount, commitment).then(x => x.value).catch(e => {
6756
+ async getNonce(nonceAccount, commitmentOrConfig) {
6757
+ return await this.getNonceAndContext(nonceAccount, commitmentOrConfig).then(x => x.value).catch(e => {
6467
6758
  throw new Error('failed to get nonce for account ' + nonceAccount.toBase58() + ': ' + e);
6468
6759
  });
6469
6760
  }
@@ -9878,6 +10169,9 @@ async function sendAndConfirmRawTransaction(connection, rawTransaction, confirma
9878
10169
  if (confirmationStrategyOrConfirmOptions && Object.prototype.hasOwnProperty.call(confirmationStrategyOrConfirmOptions, 'lastValidBlockHeight')) {
9879
10170
  confirmationStrategy = confirmationStrategyOrConfirmOptions;
9880
10171
  options = maybeConfirmOptions;
10172
+ } else if (confirmationStrategyOrConfirmOptions && Object.prototype.hasOwnProperty.call(confirmationStrategyOrConfirmOptions, 'nonceValue')) {
10173
+ confirmationStrategy = confirmationStrategyOrConfirmOptions;
10174
+ options = maybeConfirmOptions;
9881
10175
  } else {
9882
10176
  options = confirmationStrategyOrConfirmOptions;
9883
10177
  }
@@ -9905,5 +10199,5 @@ async function sendAndConfirmRawTransaction(connection, rawTransaction, confirma
9905
10199
 
9906
10200
  const LAMPORTS_PER_SOL = 1000000000;
9907
10201
 
9908
- export { Account, AddressLookupTableAccount, AddressLookupTableInstruction, AddressLookupTableProgram, Authorized, BLOCKHASH_CACHE_TIMEOUT_MS, BPF_LOADER_DEPRECATED_PROGRAM_ID, BPF_LOADER_PROGRAM_ID, BpfLoader, COMPUTE_BUDGET_INSTRUCTION_LAYOUTS, ComputeBudgetInstruction, ComputeBudgetProgram, Connection, Ed25519Program, Enum, EpochSchedule, FeeCalculatorLayout, Keypair, LAMPORTS_PER_SOL, LOOKUP_TABLE_INSTRUCTION_LAYOUTS, Loader, Lockup, MAX_SEED_LENGTH, Message, MessageAccountKeys, MessageV0, NONCE_ACCOUNT_LENGTH, NonceAccount, PACKET_DATA_SIZE, PUBLIC_KEY_LENGTH, PublicKey, SIGNATURE_LENGTH_IN_BYTES, SOLANA_SCHEMA, STAKE_CONFIG_ID, STAKE_INSTRUCTION_LAYOUTS, SYSTEM_INSTRUCTION_LAYOUTS, SYSVAR_CLOCK_PUBKEY, SYSVAR_EPOCH_SCHEDULE_PUBKEY, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY, SYSVAR_REWARDS_PUBKEY, SYSVAR_SLOT_HASHES_PUBKEY, SYSVAR_SLOT_HISTORY_PUBKEY, SYSVAR_STAKE_HISTORY_PUBKEY, Secp256k1Program, SendTransactionError, SolanaJSONRPCError, SolanaJSONRPCErrorCode, StakeAuthorizationLayout, StakeInstruction, StakeProgram, Struct, SystemInstruction, SystemProgram, Transaction, TransactionExpiredBlockheightExceededError, TransactionExpiredTimeoutError, TransactionInstruction, TransactionMessage, TransactionStatus, VALIDATOR_INFO_KEY, VERSION_PREFIX_MASK, VOTE_PROGRAM_ID, ValidatorInfo, VersionedMessage, VersionedTransaction, VoteAccount, VoteAuthorizationLayout, VoteInit, VoteInstruction, VoteProgram, clusterApiUrl, sendAndConfirmRawTransaction, sendAndConfirmTransaction };
10202
+ export { Account, AddressLookupTableAccount, AddressLookupTableInstruction, AddressLookupTableProgram, Authorized, BLOCKHASH_CACHE_TIMEOUT_MS, BPF_LOADER_DEPRECATED_PROGRAM_ID, BPF_LOADER_PROGRAM_ID, BpfLoader, COMPUTE_BUDGET_INSTRUCTION_LAYOUTS, ComputeBudgetInstruction, ComputeBudgetProgram, Connection, Ed25519Program, Enum, EpochSchedule, FeeCalculatorLayout, Keypair, LAMPORTS_PER_SOL, LOOKUP_TABLE_INSTRUCTION_LAYOUTS, Loader, Lockup, MAX_SEED_LENGTH, Message, MessageAccountKeys, MessageV0, NONCE_ACCOUNT_LENGTH, NonceAccount, PACKET_DATA_SIZE, PUBLIC_KEY_LENGTH, PublicKey, SIGNATURE_LENGTH_IN_BYTES, SOLANA_SCHEMA, STAKE_CONFIG_ID, STAKE_INSTRUCTION_LAYOUTS, SYSTEM_INSTRUCTION_LAYOUTS, SYSVAR_CLOCK_PUBKEY, SYSVAR_EPOCH_SCHEDULE_PUBKEY, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY, SYSVAR_REWARDS_PUBKEY, SYSVAR_SLOT_HASHES_PUBKEY, SYSVAR_SLOT_HISTORY_PUBKEY, SYSVAR_STAKE_HISTORY_PUBKEY, Secp256k1Program, SendTransactionError, SolanaJSONRPCError, SolanaJSONRPCErrorCode, StakeAuthorizationLayout, StakeInstruction, StakeProgram, Struct, SystemInstruction, SystemProgram, Transaction, TransactionExpiredBlockheightExceededError, TransactionExpiredNonceInvalidError, TransactionExpiredTimeoutError, TransactionInstruction, TransactionMessage, TransactionStatus, VALIDATOR_INFO_KEY, VERSION_PREFIX_MASK, VOTE_PROGRAM_ID, ValidatorInfo, VersionedMessage, VersionedTransaction, VoteAccount, VoteAuthorizationLayout, VoteInit, VoteInstruction, VoteProgram, clusterApiUrl, sendAndConfirmRawTransaction, sendAndConfirmTransaction };
9909
10203
  //# sourceMappingURL=index.esm.js.map