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