@solana/transaction-messages 2.1.1-canary-20250505034302 → 2.1.1-canary-20250505171355

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.
@@ -116,16 +116,11 @@ var getBase58Decoder = () => getBaseXDecoder(alphabet2);
116
116
  var memoizedAddressTableLookupEncoder;
117
117
  function getAddressTableLookupEncoder() {
118
118
  if (!memoizedAddressTableLookupEncoder) {
119
+ const indexEncoder = codecsDataStructures.getArrayEncoder(codecsNumbers.getU8Encoder(), { size: codecsNumbers.getShortU16Encoder() });
119
120
  memoizedAddressTableLookupEncoder = codecsDataStructures.getStructEncoder([
120
121
  ["lookupTableAddress", addresses.getAddressEncoder()],
121
- [
122
- "writableIndices",
123
- codecsDataStructures.getArrayEncoder(codecsNumbers.getU8Encoder(), { size: codecsNumbers.getShortU16Encoder() })
124
- ],
125
- [
126
- "readableIndices",
127
- codecsDataStructures.getArrayEncoder(codecsNumbers.getU8Encoder(), { size: codecsNumbers.getShortU16Encoder() })
128
- ]
122
+ ["writableIndexes", indexEncoder],
123
+ ["readonlyIndexes", indexEncoder]
129
124
  ]);
130
125
  }
131
126
  return memoizedAddressTableLookupEncoder;
@@ -133,11 +128,20 @@ function getAddressTableLookupEncoder() {
133
128
  var memoizedAddressTableLookupDecoder;
134
129
  function getAddressTableLookupDecoder() {
135
130
  if (!memoizedAddressTableLookupDecoder) {
136
- memoizedAddressTableLookupDecoder = codecsDataStructures.getStructDecoder([
137
- ["lookupTableAddress", addresses.getAddressDecoder()],
138
- ["writableIndices", codecsDataStructures.getArrayDecoder(codecsNumbers.getU8Decoder(), { size: codecsNumbers.getShortU16Decoder() })],
139
- ["readableIndices", codecsDataStructures.getArrayDecoder(codecsNumbers.getU8Decoder(), { size: codecsNumbers.getShortU16Decoder() })]
140
- ]);
131
+ const indexEncoder = codecsDataStructures.getArrayDecoder(codecsNumbers.getU8Decoder(), { size: codecsNumbers.getShortU16Decoder() });
132
+ memoizedAddressTableLookupDecoder = codecsCore.transformDecoder(
133
+ codecsDataStructures.getStructDecoder([
134
+ ["lookupTableAddress", addresses.getAddressDecoder()],
135
+ ["writableIndexes", indexEncoder],
136
+ ["readonlyIndexes", indexEncoder]
137
+ ]),
138
+ (lookupTable) => "readableIndices" in lookupTable ? {
139
+ ...lookupTable,
140
+ readonlyIndexes: lookupTable.readableIndices,
141
+ // @ts-expect-error Remove when `readableIndices` and `writableIndices` are removed.
142
+ writableIndexes: lookupTable.writableIndices
143
+ } : lookupTable
144
+ );
141
145
  }
142
146
  return memoizedAddressTableLookupDecoder;
143
147
  }
@@ -512,13 +516,19 @@ function getCompiledAddressTableLookups(orderedAccounts) {
512
516
  continue;
513
517
  }
514
518
  const entry = index[account.lookupTableAddress] ||= {
519
+ /** @deprecated Remove in a future major version */
515
520
  readableIndices: [],
521
+ readonlyIndexes: [],
522
+ writableIndexes: [],
523
+ /** @deprecated Remove in a future major version */
516
524
  writableIndices: []
517
525
  };
518
526
  if (account.role === instructions.AccountRole.WRITABLE) {
527
+ entry.writableIndexes.push(account.addressIndex);
519
528
  entry.writableIndices.push(account.addressIndex);
520
529
  } else {
521
530
  entry.readableIndices.push(account.addressIndex);
531
+ entry.readonlyIndexes.push(account.addressIndex);
522
532
  }
523
533
  }
524
534
  return Object.keys(index).sort(addresses.getAddressComparator()).map((lookupTableAddress) => ({
@@ -816,7 +826,11 @@ function getAddressLookupMetas(compiledAddressTableLookups, addressesByLookupTab
816
826
  const writableMetas = [];
817
827
  for (const lookup of compiledAddressTableLookups) {
818
828
  const addresses = addressesByLookupTableAddress[lookup.lookupTableAddress];
819
- const highestIndex = Math.max(...lookup.readableIndices, ...lookup.writableIndices);
829
+ const readonlyIndexes = lookup.readonlyIndexes ?? /** @deprecated Remove in a future major version */
830
+ lookup.readableIndices;
831
+ const writableIndexes = lookup.writableIndexes ?? /** @deprecated Remove in a future major version */
832
+ lookup.writableIndices;
833
+ const highestIndex = Math.max(...readonlyIndexes, ...writableIndexes);
820
834
  if (highestIndex >= addresses.length) {
821
835
  throw new errors.SolanaError(
822
836
  errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,
@@ -827,14 +841,14 @@ function getAddressLookupMetas(compiledAddressTableLookups, addressesByLookupTab
827
841
  }
828
842
  );
829
843
  }
830
- const readOnlyForLookup = lookup.readableIndices.map((r) => ({
844
+ const readOnlyForLookup = readonlyIndexes.map((r) => ({
831
845
  address: addresses[r],
832
846
  addressIndex: r,
833
847
  lookupTableAddress: lookup.lookupTableAddress,
834
848
  role: instructions.AccountRole.READONLY
835
849
  }));
836
850
  readOnlyMetas.push(...readOnlyForLookup);
837
- const writableForLookup = lookup.writableIndices.map((w) => ({
851
+ const writableForLookup = writableIndexes.map((w) => ({
838
852
  address: addresses[w],
839
853
  addressIndex: w,
840
854
  lookupTableAddress: lookup.lookupTableAddress,