@debridge-finance/solana-utils 5.3.2 → 5.4.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.
@@ -10124,6 +10124,7 @@ function parseSplAccount(dataOrInfo) {
10124
10124
  return null;
10125
10125
  }
10126
10126
  const data = "executable" in dataOrInfo ? dataOrInfo.data : dataOrInfo;
10127
+ data.subarray(0, 165); // only use static part
10127
10128
  // if (data.length === 82) return null; // token mint
10128
10129
  try {
10129
10130
  return AccountLayout$1.decode(data);
@@ -10358,7 +10359,8 @@ function parseMultipleAccounts(accounts) {
10358
10359
  let parsedSplAccount;
10359
10360
  if (account) {
10360
10361
  const owner = new PublicKey(account.owner);
10361
- if (owner.equals(TOKEN_PROGRAM_ID)) {
10362
+ if (owner.equals(TOKEN_PROGRAM_ID) ||
10363
+ owner.equals(TOKEN_2022_PROGRAM_ID)) {
10362
10364
  if (account.data instanceof buffer.Buffer) {
10363
10365
  parsedSplAccount = parseSplAccount(account.data);
10364
10366
  }
@@ -10628,18 +10630,17 @@ const DefaultAccountStateLayout = struct$1([u8$1('state')]);
10628
10630
  DefaultAccountStateLayout.span;
10629
10631
 
10630
10632
  // src/codes.ts
10631
- var SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$1 = 8078e3;
10632
- var SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$1 = 8078001;
10633
- var SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$1 = 8078004;
10634
- var SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$1 = 8078005;
10635
- var SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$1 = 8078006;
10636
- var SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS$1 = 8078007;
10637
- var SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$1 = 8078011;
10633
+ var SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$2 = 8078e3;
10634
+ var SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$2 = 8078001;
10635
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$2 = 8078004;
10636
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$2 = 8078005;
10637
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$2 = 8078006;
10638
+ var SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$2 = 8078011;
10638
10639
 
10639
10640
  // src/context.ts
10640
- function encodeValue$1(value) {
10641
+ function encodeValue$2(value) {
10641
10642
  if (Array.isArray(value)) {
10642
- const commaSeparatedValues = value.map(encodeValue$1).join(
10643
+ const commaSeparatedValues = value.map(encodeValue$2).join(
10643
10644
  "%2C%20"
10644
10645
  /* ", " */
10645
10646
  );
@@ -10659,23 +10660,23 @@ function encodeValue$1(value) {
10659
10660
  );
10660
10661
  }
10661
10662
  }
10662
- function encodeObjectContextEntry$1([key, value]) {
10663
- return `${key}=${encodeValue$1(value)}`;
10663
+ function encodeObjectContextEntry$2([key, value]) {
10664
+ return `${key}=${encodeValue$2(value)}`;
10664
10665
  }
10665
- function encodeContextObject$1(context) {
10666
- const searchParamsString = Object.entries(context).map(encodeObjectContextEntry$1).join("&");
10666
+ function encodeContextObject$2(context) {
10667
+ const searchParamsString = Object.entries(context).map(encodeObjectContextEntry$2).join("&");
10667
10668
  return btoa(searchParamsString);
10668
10669
  }
10669
- function getErrorMessage$1(code, context = {}) {
10670
+ function getErrorMessage$2(code, context = {}) {
10670
10671
  {
10671
10672
  let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \`npx @solana/errors decode -- ${code}`;
10672
10673
  if (Object.keys(context).length) {
10673
- decodingAdviceMessage += ` '${encodeContextObject$1(context)}'`;
10674
+ decodingAdviceMessage += ` '${encodeContextObject$2(context)}'`;
10674
10675
  }
10675
10676
  return `${decodingAdviceMessage}\``;
10676
10677
  }
10677
10678
  }
10678
- var SolanaError$1 = class extends Error {
10679
+ var SolanaError$2 = class extends Error {
10679
10680
  cause = this.cause;
10680
10681
  context;
10681
10682
  constructor(...[code, contextAndErrorOptions]) {
@@ -10690,7 +10691,7 @@ var SolanaError$1 = class extends Error {
10690
10691
  context = contextRest;
10691
10692
  }
10692
10693
  }
10693
- const message = getErrorMessage$1(code, context);
10694
+ const message = getErrorMessage$2(code, context);
10694
10695
  super(message, errorOptions);
10695
10696
  this.context = {
10696
10697
  __code: code,
@@ -10700,47 +10701,47 @@ var SolanaError$1 = class extends Error {
10700
10701
  }
10701
10702
  };
10702
10703
 
10703
- var padBytes$1 = (bytes, length) => {
10704
+ var padBytes$2 = (bytes, length) => {
10704
10705
  if (bytes.length >= length) return bytes;
10705
10706
  const paddedBytes = new Uint8Array(length).fill(0);
10706
10707
  paddedBytes.set(bytes);
10707
10708
  return paddedBytes;
10708
10709
  };
10709
- var fixBytes$1 = (bytes, length) => padBytes$1(bytes.length <= length ? bytes : bytes.slice(0, length), length);
10710
- function getEncodedSize$1(value, encoder) {
10710
+ var fixBytes$2 = (bytes, length) => padBytes$2(bytes.length <= length ? bytes : bytes.slice(0, length), length);
10711
+ function getEncodedSize$2(value, encoder) {
10711
10712
  return "fixedSize" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);
10712
10713
  }
10713
- function createEncoder$1(encoder) {
10714
+ function createEncoder$2(encoder) {
10714
10715
  return Object.freeze({
10715
10716
  ...encoder,
10716
10717
  encode: (value) => {
10717
- const bytes = new Uint8Array(getEncodedSize$1(value, encoder));
10718
+ const bytes = new Uint8Array(getEncodedSize$2(value, encoder));
10718
10719
  encoder.write(value, bytes, 0);
10719
10720
  return bytes;
10720
10721
  }
10721
10722
  });
10722
10723
  }
10723
- function createDecoder$1(decoder) {
10724
+ function createDecoder$2(decoder) {
10724
10725
  return Object.freeze({
10725
10726
  ...decoder,
10726
10727
  decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]
10727
10728
  });
10728
10729
  }
10729
- function isFixedSize$1(codec) {
10730
+ function isFixedSize$2(codec) {
10730
10731
  return "fixedSize" in codec && typeof codec.fixedSize === "number";
10731
10732
  }
10732
- function combineCodec$1(encoder, decoder) {
10733
- if (isFixedSize$1(encoder) !== isFixedSize$1(decoder)) {
10734
- throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$1);
10733
+ function combineCodec$2(encoder, decoder) {
10734
+ if (isFixedSize$2(encoder) !== isFixedSize$2(decoder)) {
10735
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$2);
10735
10736
  }
10736
- if (isFixedSize$1(encoder) && isFixedSize$1(decoder) && encoder.fixedSize !== decoder.fixedSize) {
10737
- throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$1, {
10737
+ if (isFixedSize$2(encoder) && isFixedSize$2(decoder) && encoder.fixedSize !== decoder.fixedSize) {
10738
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$2, {
10738
10739
  decoderFixedSize: decoder.fixedSize,
10739
10740
  encoderFixedSize: encoder.fixedSize
10740
10741
  });
10741
10742
  }
10742
- if (!isFixedSize$1(encoder) && !isFixedSize$1(decoder) && encoder.maxSize !== decoder.maxSize) {
10743
- throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$1, {
10743
+ if (!isFixedSize$2(encoder) && !isFixedSize$2(decoder) && encoder.maxSize !== decoder.maxSize) {
10744
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$2, {
10744
10745
  decoderMaxSize: decoder.maxSize,
10745
10746
  encoderMaxSize: encoder.maxSize
10746
10747
  });
@@ -10754,17 +10755,17 @@ function combineCodec$1(encoder, decoder) {
10754
10755
  write: encoder.write
10755
10756
  };
10756
10757
  }
10757
- function assertByteArrayIsNotEmptyForCodec$1(codecDescription, bytes, offset = 0) {
10758
+ function assertByteArrayIsNotEmptyForCodec$2(codecDescription, bytes, offset = 0) {
10758
10759
  if (bytes.length - offset <= 0) {
10759
- throw new SolanaError$1(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$1, {
10760
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$2, {
10760
10761
  codecDescription
10761
10762
  });
10762
10763
  }
10763
10764
  }
10764
- function assertByteArrayHasEnoughBytesForCodec$1(codecDescription, expected, bytes, offset = 0) {
10765
+ function assertByteArrayHasEnoughBytesForCodec$2(codecDescription, expected, bytes, offset = 0) {
10765
10766
  const bytesLength = bytes.length - offset;
10766
10767
  if (bytesLength < expected) {
10767
- throw new SolanaError$1(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$1, {
10768
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$2, {
10768
10769
  bytesLength,
10769
10770
  codecDescription,
10770
10771
  expected
@@ -10772,56 +10773,9 @@ function assertByteArrayHasEnoughBytesForCodec$1(codecDescription, expected, byt
10772
10773
  }
10773
10774
  }
10774
10775
 
10775
- // src/add-codec-size-prefix.ts
10776
- function addEncoderSizePrefix(encoder, prefix) {
10777
- const write = (value, bytes, offset) => {
10778
- const encoderBytes = encoder.encode(value);
10779
- offset = prefix.write(encoderBytes.length, bytes, offset);
10780
- bytes.set(encoderBytes, offset);
10781
- return offset + encoderBytes.length;
10782
- };
10783
- if (isFixedSize$1(prefix) && isFixedSize$1(encoder)) {
10784
- return createEncoder$1({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });
10785
- }
10786
- const prefixMaxSize = isFixedSize$1(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;
10787
- const encoderMaxSize = isFixedSize$1(encoder) ? encoder.fixedSize : encoder.maxSize ?? null;
10788
- const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;
10789
- return createEncoder$1({
10790
- ...encoder,
10791
- ...maxSize !== null ? { maxSize } : {},
10792
- getSizeFromValue: (value) => {
10793
- const encoderSize = getEncodedSize$1(value, encoder);
10794
- return getEncodedSize$1(encoderSize, prefix) + encoderSize;
10795
- },
10796
- write
10797
- });
10798
- }
10799
- function addDecoderSizePrefix(decoder, prefix) {
10800
- const read = (bytes, offset) => {
10801
- const [bigintSize, decoderOffset] = prefix.read(bytes, offset);
10802
- const size = Number(bigintSize);
10803
- offset = decoderOffset;
10804
- if (offset > 0 || bytes.length > size) {
10805
- bytes = bytes.slice(offset, offset + size);
10806
- }
10807
- assertByteArrayHasEnoughBytesForCodec$1("addDecoderSizePrefix", size, bytes);
10808
- return [decoder.decode(bytes), offset + size];
10809
- };
10810
- if (isFixedSize$1(prefix) && isFixedSize$1(decoder)) {
10811
- return createDecoder$1({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });
10812
- }
10813
- const prefixMaxSize = isFixedSize$1(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;
10814
- const decoderMaxSize = isFixedSize$1(decoder) ? decoder.fixedSize : decoder.maxSize ?? null;
10815
- const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;
10816
- return createDecoder$1({ ...decoder, ...maxSize !== null ? { maxSize } : {}, read });
10817
- }
10818
- function addCodecSizePrefix(codec, prefix) {
10819
- return combineCodec$1(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));
10820
- }
10821
-
10822
10776
  // src/fix-codec-size.ts
10823
- function fixEncoderSize$1(encoder, fixedBytes) {
10824
- return createEncoder$1({
10777
+ function fixEncoderSize$2(encoder, fixedBytes) {
10778
+ return createEncoder$2({
10825
10779
  fixedSize: fixedBytes,
10826
10780
  write: (value, bytes, offset) => {
10827
10781
  const variableByteArray = encoder.encode(value);
@@ -10831,30 +10785,30 @@ function fixEncoderSize$1(encoder, fixedBytes) {
10831
10785
  }
10832
10786
  });
10833
10787
  }
10834
- function fixDecoderSize$1(decoder, fixedBytes) {
10835
- return createDecoder$1({
10788
+ function fixDecoderSize$2(decoder, fixedBytes) {
10789
+ return createDecoder$2({
10836
10790
  fixedSize: fixedBytes,
10837
10791
  read: (bytes, offset) => {
10838
- assertByteArrayHasEnoughBytesForCodec$1("fixCodecSize", fixedBytes, bytes, offset);
10792
+ assertByteArrayHasEnoughBytesForCodec$2("fixCodecSize", fixedBytes, bytes, offset);
10839
10793
  if (offset > 0 || bytes.length > fixedBytes) {
10840
10794
  bytes = bytes.slice(offset, offset + fixedBytes);
10841
10795
  }
10842
- if (isFixedSize$1(decoder)) {
10843
- bytes = fixBytes$1(bytes, decoder.fixedSize);
10796
+ if (isFixedSize$2(decoder)) {
10797
+ bytes = fixBytes$2(bytes, decoder.fixedSize);
10844
10798
  }
10845
10799
  const [value] = decoder.read(bytes, 0);
10846
10800
  return [value, offset + fixedBytes];
10847
10801
  }
10848
10802
  });
10849
10803
  }
10850
- function fixCodecSize$1(codec, fixedBytes) {
10851
- return combineCodec$1(fixEncoderSize$1(codec, fixedBytes), fixDecoderSize$1(codec, fixedBytes));
10804
+ function fixCodecSize$2(codec, fixedBytes) {
10805
+ return combineCodec$2(fixEncoderSize$2(codec, fixedBytes), fixDecoderSize$2(codec, fixedBytes));
10852
10806
  }
10853
10807
 
10854
10808
  // src/assertions.ts
10855
- function assertNumberIsBetweenForCodec$1(codecDescription, min, max, value) {
10809
+ function assertNumberIsBetweenForCodec$2(codecDescription, min, max, value) {
10856
10810
  if (value < min || value > max) {
10857
- throw new SolanaError$1(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$1, {
10811
+ throw new SolanaError$2(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$2, {
10858
10812
  codecDescription,
10859
10813
  max,
10860
10814
  min,
@@ -10862,156 +10816,65 @@ function assertNumberIsBetweenForCodec$1(codecDescription, min, max, value) {
10862
10816
  });
10863
10817
  }
10864
10818
  }
10865
- function isLittleEndian$1(config) {
10819
+ function isLittleEndian$2(config) {
10866
10820
  return config?.endian === 1 /* Big */ ? false : true;
10867
10821
  }
10868
- function numberEncoderFactory$1(input) {
10869
- return createEncoder$1({
10822
+ function numberEncoderFactory$2(input) {
10823
+ return createEncoder$2({
10870
10824
  fixedSize: input.size,
10871
10825
  write(value, bytes, offset) {
10872
10826
  if (input.range) {
10873
- assertNumberIsBetweenForCodec$1(input.name, input.range[0], input.range[1], value);
10827
+ assertNumberIsBetweenForCodec$2(input.name, input.range[0], input.range[1], value);
10874
10828
  }
10875
10829
  const arrayBuffer = new ArrayBuffer(input.size);
10876
- input.set(new DataView(arrayBuffer), value, isLittleEndian$1(input.config));
10830
+ input.set(new DataView(arrayBuffer), value, isLittleEndian$2(input.config));
10877
10831
  bytes.set(new Uint8Array(arrayBuffer), offset);
10878
10832
  return offset + input.size;
10879
10833
  }
10880
10834
  });
10881
10835
  }
10882
- function numberDecoderFactory$1(input) {
10883
- return createDecoder$1({
10836
+ function numberDecoderFactory$2(input) {
10837
+ return createDecoder$2({
10884
10838
  fixedSize: input.size,
10885
10839
  read(bytes, offset = 0) {
10886
- assertByteArrayIsNotEmptyForCodec$1(input.name, bytes, offset);
10887
- assertByteArrayHasEnoughBytesForCodec$1(input.name, input.size, bytes, offset);
10888
- const view = new DataView(toArrayBuffer$1(bytes, offset, input.size));
10889
- return [input.get(view, isLittleEndian$1(input.config)), offset + input.size];
10840
+ assertByteArrayIsNotEmptyForCodec$2(input.name, bytes, offset);
10841
+ assertByteArrayHasEnoughBytesForCodec$2(input.name, input.size, bytes, offset);
10842
+ const view = new DataView(toArrayBuffer$2(bytes, offset, input.size));
10843
+ return [input.get(view, isLittleEndian$2(input.config)), offset + input.size];
10890
10844
  }
10891
10845
  });
10892
10846
  }
10893
- function toArrayBuffer$1(bytes, offset, length) {
10847
+ function toArrayBuffer$2(bytes, offset, length) {
10894
10848
  const bytesOffset = bytes.byteOffset + (offset ?? 0);
10895
10849
  const bytesLength = length ?? bytes.byteLength;
10896
10850
  return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);
10897
10851
  }
10898
- var getU32Encoder$1 = (config = {}) => numberEncoderFactory$1({
10899
- config,
10900
- name: "u32",
10901
- range: [0, Number("0xffffffff")],
10902
- set: (view, value, le) => view.setUint32(0, Number(value), le),
10903
- size: 4
10904
- });
10905
- var getU32Decoder$1 = (config = {}) => numberDecoderFactory$1({
10906
- config,
10907
- get: (view, le) => view.getUint32(0, le),
10908
- name: "u32",
10909
- size: 4
10910
- });
10911
- var getU32Codec = (config = {}) => combineCodec$1(getU32Encoder$1(config), getU32Decoder$1(config));
10912
- var getU64Encoder$1 = (config = {}) => numberEncoderFactory$1({
10852
+ var getU64Encoder$1 = (config = {}) => numberEncoderFactory$2({
10913
10853
  config,
10914
10854
  name: "u64",
10915
10855
  range: [0n, BigInt("0xffffffffffffffff")],
10916
10856
  set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),
10917
10857
  size: 8
10918
10858
  });
10919
- var getU64Decoder$1 = (config = {}) => numberDecoderFactory$1({
10859
+ var getU64Decoder$1 = (config = {}) => numberDecoderFactory$2({
10920
10860
  config,
10921
10861
  get: (view, le) => view.getBigUint64(0, le),
10922
10862
  name: "u64",
10923
10863
  size: 8
10924
10864
  });
10925
- var getU64Codec$1 = (config = {}) => combineCodec$1(getU64Encoder$1(config), getU64Decoder$1(config));
10865
+ var getU64Codec$1 = (config = {}) => combineCodec$2(getU64Encoder$1(config), getU64Decoder$1(config));
10926
10866
 
10927
- // src/array.ts
10928
- function assertValidNumberOfItemsForCodec$1(codecDescription, expected, actual) {
10929
- if (expected !== actual) {
10930
- throw new SolanaError$1(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS$1, {
10931
- actual,
10932
- codecDescription,
10933
- expected
10934
- });
10935
- }
10936
- }
10937
- function sumCodecSizes$1(sizes) {
10867
+ function sumCodecSizes$2(sizes) {
10938
10868
  return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
10939
10869
  }
10940
- function getFixedSize$1(codec) {
10941
- return isFixedSize$1(codec) ? codec.fixedSize : null;
10942
- }
10943
- function getMaxSize$1(codec) {
10944
- return isFixedSize$1(codec) ? codec.fixedSize : codec.maxSize ?? null;
10945
- }
10946
-
10947
- // src/array.ts
10948
- function getArrayEncoder$1(item, config = {}) {
10949
- const size = config.size ?? getU32Encoder$1();
10950
- const fixedSize = computeArrayLikeCodecSize$1(size, getFixedSize$1(item));
10951
- const maxSize = computeArrayLikeCodecSize$1(size, getMaxSize$1(item)) ?? void 0;
10952
- return createEncoder$1({
10953
- ...fixedSize !== null ? { fixedSize } : {
10954
- getSizeFromValue: (array) => {
10955
- const prefixSize = typeof size === "object" ? getEncodedSize$1(array.length, size) : 0;
10956
- return prefixSize + [...array].reduce((all, value) => all + getEncodedSize$1(value, item), 0);
10957
- },
10958
- maxSize
10959
- },
10960
- write: (array, bytes, offset) => {
10961
- if (typeof size === "number") {
10962
- assertValidNumberOfItemsForCodec$1("array", size, array.length);
10963
- }
10964
- if (typeof size === "object") {
10965
- offset = size.write(array.length, bytes, offset);
10966
- }
10967
- array.forEach((value) => {
10968
- offset = item.write(value, bytes, offset);
10969
- });
10970
- return offset;
10971
- }
10972
- });
10973
- }
10974
- function getArrayDecoder$1(item, config = {}) {
10975
- const size = config.size ?? getU32Decoder$1();
10976
- const itemSize = getFixedSize$1(item);
10977
- const fixedSize = computeArrayLikeCodecSize$1(size, itemSize);
10978
- const maxSize = computeArrayLikeCodecSize$1(size, getMaxSize$1(item)) ?? void 0;
10979
- return createDecoder$1({
10980
- ...fixedSize !== null ? { fixedSize } : { maxSize },
10981
- read: (bytes, offset) => {
10982
- const array = [];
10983
- if (typeof size === "object" && bytes.slice(offset).length === 0) {
10984
- return [array, offset];
10985
- }
10986
- if (size === "remainder") {
10987
- while (offset < bytes.length) {
10988
- const [value, newOffset2] = item.read(bytes, offset);
10989
- offset = newOffset2;
10990
- array.push(value);
10991
- }
10992
- return [array, offset];
10993
- }
10994
- const [resolvedSize, newOffset] = typeof size === "number" ? [size, offset] : size.read(bytes, offset);
10995
- offset = newOffset;
10996
- for (let i = 0; i < resolvedSize; i += 1) {
10997
- const [value, newOffset2] = item.read(bytes, offset);
10998
- offset = newOffset2;
10999
- array.push(value);
11000
- }
11001
- return [array, offset];
11002
- }
11003
- });
11004
- }
11005
- function getArrayCodec$1(item, config = {}) {
11006
- return combineCodec$1(getArrayEncoder$1(item, config), getArrayDecoder$1(item, config));
10870
+ function getFixedSize$2(codec) {
10871
+ return isFixedSize$2(codec) ? codec.fixedSize : null;
11007
10872
  }
11008
- function computeArrayLikeCodecSize$1(size, itemSize) {
11009
- if (typeof size !== "number") return null;
11010
- if (size === 0) return 0;
11011
- return itemSize === null ? null : itemSize * size;
10873
+ function getMaxSize$2(codec) {
10874
+ return isFixedSize$2(codec) ? codec.fixedSize : codec.maxSize ?? null;
11012
10875
  }
11013
- function getBytesEncoder$1() {
11014
- return createEncoder$1({
10876
+ function getBytesEncoder$2() {
10877
+ return createEncoder$2({
11015
10878
  getSizeFromValue: (value) => value.length,
11016
10879
  write: (value, bytes, offset) => {
11017
10880
  bytes.set(value, offset);
@@ -11019,63 +10882,24 @@ function getBytesEncoder$1() {
11019
10882
  }
11020
10883
  });
11021
10884
  }
11022
- function getBytesDecoder$1() {
11023
- return createDecoder$1({
10885
+ function getBytesDecoder$2() {
10886
+ return createDecoder$2({
11024
10887
  read: (bytes, offset) => {
11025
10888
  const slice = bytes.slice(offset);
11026
10889
  return [slice, offset + slice.length];
11027
10890
  }
11028
10891
  });
11029
10892
  }
11030
- function getBytesCodec$1() {
11031
- return combineCodec$1(getBytesEncoder$1(), getBytesDecoder$1());
11032
- }
11033
- function getTupleEncoder$1(items) {
11034
- const fixedSize = sumCodecSizes$1(items.map(getFixedSize$1));
11035
- const maxSize = sumCodecSizes$1(items.map(getMaxSize$1)) ?? void 0;
11036
- return createEncoder$1({
11037
- ...fixedSize === null ? {
11038
- getSizeFromValue: (value) => items.map((item, index) => getEncodedSize$1(value[index], item)).reduce((all, one) => all + one, 0),
11039
- maxSize
11040
- } : { fixedSize },
11041
- write: (value, bytes, offset) => {
11042
- assertValidNumberOfItemsForCodec$1("tuple", items.length, value.length);
11043
- items.forEach((item, index) => {
11044
- offset = item.write(value[index], bytes, offset);
11045
- });
11046
- return offset;
11047
- }
11048
- });
11049
- }
11050
- function getTupleDecoder$1(items) {
11051
- const fixedSize = sumCodecSizes$1(items.map(getFixedSize$1));
11052
- const maxSize = sumCodecSizes$1(items.map(getMaxSize$1)) ?? void 0;
11053
- return createDecoder$1({
11054
- ...fixedSize === null ? { maxSize } : { fixedSize },
11055
- read: (bytes, offset) => {
11056
- const values = [];
11057
- items.forEach((item) => {
11058
- const [newValue, newOffset] = item.read(bytes, offset);
11059
- values.push(newValue);
11060
- offset = newOffset;
11061
- });
11062
- return [values, offset];
11063
- }
11064
- });
11065
- }
11066
- function getTupleCodec$1(items) {
11067
- return combineCodec$1(
11068
- getTupleEncoder$1(items),
11069
- getTupleDecoder$1(items)
11070
- );
10893
+ function getBytesCodec$2() {
10894
+ return combineCodec$2(getBytesEncoder$2(), getBytesDecoder$2());
11071
10895
  }
11072
- function getStructEncoder$1(fields) {
10896
+ function getStructEncoder$2(fields) {
11073
10897
  const fieldCodecs = fields.map(([, codec]) => codec);
11074
- const fixedSize = sumCodecSizes$1(fieldCodecs.map(getFixedSize$1));
11075
- const maxSize = sumCodecSizes$1(fieldCodecs.map(getMaxSize$1)) ?? void 0;
11076
- return createEncoder$1({
10898
+ const fixedSize = sumCodecSizes$2(fieldCodecs.map(getFixedSize$2));
10899
+ const maxSize = sumCodecSizes$2(fieldCodecs.map(getMaxSize$2)) ?? void 0;
10900
+ return createEncoder$2({
11077
10901
  ...fixedSize === null ? {
11078
- getSizeFromValue: (value) => fields.map(([key, codec]) => getEncodedSize$1(value[key], codec)).reduce((all, one) => all + one, 0),
10902
+ getSizeFromValue: (value) => fields.map(([key, codec]) => getEncodedSize$2(value[key], codec)).reduce((all, one) => all + one, 0),
11079
10903
  maxSize
11080
10904
  } : { fixedSize },
11081
10905
  write: (struct, bytes, offset) => {
@@ -11086,11 +10910,11 @@ function getStructEncoder$1(fields) {
11086
10910
  }
11087
10911
  });
11088
10912
  }
11089
- function getStructDecoder$1(fields) {
10913
+ function getStructDecoder$2(fields) {
11090
10914
  const fieldCodecs = fields.map(([, codec]) => codec);
11091
- const fixedSize = sumCodecSizes$1(fieldCodecs.map(getFixedSize$1));
11092
- const maxSize = sumCodecSizes$1(fieldCodecs.map(getMaxSize$1)) ?? void 0;
11093
- return createDecoder$1({
10915
+ const fixedSize = sumCodecSizes$2(fieldCodecs.map(getFixedSize$2));
10916
+ const maxSize = sumCodecSizes$2(fieldCodecs.map(getMaxSize$2)) ?? void 0;
10917
+ return createDecoder$2({
11094
10918
  ...fixedSize === null ? { maxSize } : { fixedSize },
11095
10919
  read: (bytes, offset) => {
11096
10920
  const struct = {};
@@ -11103,57 +10927,24 @@ function getStructDecoder$1(fields) {
11103
10927
  }
11104
10928
  });
11105
10929
  }
11106
- function getStructCodec$1(fields) {
11107
- return combineCodec$1(
11108
- getStructEncoder$1(fields),
11109
- getStructDecoder$1(fields)
10930
+ function getStructCodec$2(fields) {
10931
+ return combineCodec$2(
10932
+ getStructEncoder$2(fields),
10933
+ getStructDecoder$2(fields)
11110
10934
  );
11111
10935
  }
11112
10936
 
11113
- // src/null-characters.ts
11114
- var removeNullCharacters$1 = (value) => (
11115
- // eslint-disable-next-line no-control-regex
11116
- value.replace(/\u0000/g, "")
11117
- );
11118
-
11119
- // ../text-encoding-impl/dist/index.browser.mjs
11120
- var e$1 = globalThis.TextDecoder;
11121
- var o$1 = globalThis.TextEncoder;
11122
-
11123
- // src/utf8.ts
11124
- var getUtf8Encoder$1 = () => {
11125
- let textEncoder;
11126
- return createEncoder$1({
11127
- getSizeFromValue: (value) => (textEncoder ||= new o$1()).encode(value).length,
11128
- write: (value, bytes, offset) => {
11129
- const bytesToAdd = (textEncoder ||= new o$1()).encode(value);
11130
- bytes.set(bytesToAdd, offset);
11131
- return offset + bytesToAdd.length;
11132
- }
11133
- });
11134
- };
11135
- var getUtf8Decoder$1 = () => {
11136
- let textDecoder;
11137
- return createDecoder$1({
11138
- read(bytes, offset) {
11139
- const value = (textDecoder ||= new e$1()).decode(bytes.slice(offset));
11140
- return [removeNullCharacters$1(value), bytes.length];
11141
- }
11142
- });
11143
- };
11144
- var getUtf8Codec$1 = () => combineCodec$1(getUtf8Encoder$1(), getUtf8Decoder$1());
11145
-
11146
- const tokenGroupCodec = getStructCodec$1([
11147
- ['updateAuthority', fixCodecSize$1(getBytesCodec$1(), 32)],
11148
- ['mint', fixCodecSize$1(getBytesCodec$1(), 32)],
10937
+ const tokenGroupCodec = getStructCodec$2([
10938
+ ['updateAuthority', fixCodecSize$2(getBytesCodec$2(), 32)],
10939
+ ['mint', fixCodecSize$2(getBytesCodec$2(), 32)],
11149
10940
  ['size', getU64Codec$1()],
11150
10941
  ['maxSize', getU64Codec$1()],
11151
10942
  ]);
11152
10943
  tokenGroupCodec.fixedSize;
11153
10944
 
11154
- const tokenGroupMemberCodec = getStructCodec$1([
11155
- ['mint', fixCodecSize$1(getBytesCodec$1(), 32)],
11156
- ['group', fixCodecSize$1(getBytesCodec$1(), 32)],
10945
+ const tokenGroupMemberCodec = getStructCodec$2([
10946
+ ['mint', fixCodecSize$2(getBytesCodec$2(), 32)],
10947
+ ['group', fixCodecSize$2(getBytesCodec$2(), 32)],
11157
10948
  ['memberNumber', getU64Codec$1()],
11158
10949
  ]);
11159
10950
  tokenGroupMemberCodec.fixedSize;
@@ -11594,50 +11385,552 @@ struct$1([
11594
11385
  publicKey$4('groupAddress'),
11595
11386
  ]);
11596
11387
 
11597
- /** TODO: docs */
11598
- struct$1([
11599
- u8$1('instruction'),
11600
- u8$1('decimals'),
11601
- publicKey$4('mintAuthority'),
11602
- new COptionPublicKeyLayout('freezeAuthority'),
11603
- ]);
11388
+ /** TODO: docs */
11389
+ struct$1([
11390
+ u8$1('instruction'),
11391
+ u8$1('decimals'),
11392
+ publicKey$4('mintAuthority'),
11393
+ new COptionPublicKeyLayout('freezeAuthority'),
11394
+ ]);
11395
+
11396
+ var InterestBearingMintInstruction;
11397
+ (function (InterestBearingMintInstruction) {
11398
+ InterestBearingMintInstruction[InterestBearingMintInstruction["Initialize"] = 0] = "Initialize";
11399
+ InterestBearingMintInstruction[InterestBearingMintInstruction["UpdateRate"] = 1] = "UpdateRate";
11400
+ })(InterestBearingMintInstruction || (InterestBearingMintInstruction = {}));
11401
+ struct$1([
11402
+ u8$1('instruction'),
11403
+ u8$1('interestBearingMintInstruction'),
11404
+ // TODO: Make this an optional public key
11405
+ publicKey$4('rateAuthority'),
11406
+ s16('rate'),
11407
+ ]);
11408
+ struct$1([
11409
+ u8$1('instruction'),
11410
+ u8$1('interestBearingMintInstruction'),
11411
+ s16('rate'),
11412
+ ]);
11413
+
11414
+ var MetadataPointerInstruction;
11415
+ (function (MetadataPointerInstruction) {
11416
+ MetadataPointerInstruction[MetadataPointerInstruction["Initialize"] = 0] = "Initialize";
11417
+ MetadataPointerInstruction[MetadataPointerInstruction["Update"] = 1] = "Update";
11418
+ })(MetadataPointerInstruction || (MetadataPointerInstruction = {}));
11419
+ struct$1([
11420
+ // prettier-ignore
11421
+ u8$1('instruction'),
11422
+ u8$1('metadataPointerInstruction'),
11423
+ publicKey$4('authority'),
11424
+ publicKey$4('metadataAddress'),
11425
+ ]);
11426
+ struct$1([
11427
+ // prettier-ignore
11428
+ u8$1('instruction'),
11429
+ u8$1('metadataPointerInstruction'),
11430
+ publicKey$4('metadataAddress'),
11431
+ ]);
11432
+
11433
+ // src/codes.ts
11434
+ var SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$1 = 8078e3;
11435
+ var SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$1 = 8078001;
11436
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$1 = 8078004;
11437
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$1 = 8078005;
11438
+ var SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$1 = 8078006;
11439
+ var SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS$1 = 8078007;
11440
+ var SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$1 = 8078011;
11441
+
11442
+ // src/context.ts
11443
+ function encodeValue$1(value) {
11444
+ if (Array.isArray(value)) {
11445
+ const commaSeparatedValues = value.map(encodeValue$1).join(
11446
+ "%2C%20"
11447
+ /* ", " */
11448
+ );
11449
+ return "%5B" + commaSeparatedValues + /* "]" */
11450
+ "%5D";
11451
+ } else if (typeof value === "bigint") {
11452
+ return `${value}n`;
11453
+ } else {
11454
+ return encodeURIComponent(
11455
+ String(
11456
+ value != null && Object.getPrototypeOf(value) === null ? (
11457
+ // Plain objects with no prototype don't have a `toString` method.
11458
+ // Convert them before stringifying them.
11459
+ { ...value }
11460
+ ) : value
11461
+ )
11462
+ );
11463
+ }
11464
+ }
11465
+ function encodeObjectContextEntry$1([key, value]) {
11466
+ return `${key}=${encodeValue$1(value)}`;
11467
+ }
11468
+ function encodeContextObject$1(context) {
11469
+ const searchParamsString = Object.entries(context).map(encodeObjectContextEntry$1).join("&");
11470
+ return btoa(searchParamsString);
11471
+ }
11472
+ function getErrorMessage$1(code, context = {}) {
11473
+ {
11474
+ let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \`npx @solana/errors decode -- ${code}`;
11475
+ if (Object.keys(context).length) {
11476
+ decodingAdviceMessage += ` '${encodeContextObject$1(context)}'`;
11477
+ }
11478
+ return `${decodingAdviceMessage}\``;
11479
+ }
11480
+ }
11481
+ var SolanaError$1 = class extends Error {
11482
+ cause = this.cause;
11483
+ context;
11484
+ constructor(...[code, contextAndErrorOptions]) {
11485
+ let context;
11486
+ let errorOptions;
11487
+ if (contextAndErrorOptions) {
11488
+ const { cause, ...contextRest } = contextAndErrorOptions;
11489
+ if (cause) {
11490
+ errorOptions = { cause };
11491
+ }
11492
+ if (Object.keys(contextRest).length > 0) {
11493
+ context = contextRest;
11494
+ }
11495
+ }
11496
+ const message = getErrorMessage$1(code, context);
11497
+ super(message, errorOptions);
11498
+ this.context = {
11499
+ __code: code,
11500
+ ...context
11501
+ };
11502
+ this.name = "SolanaError";
11503
+ }
11504
+ };
11505
+
11506
+ var padBytes$1 = (bytes, length) => {
11507
+ if (bytes.length >= length) return bytes;
11508
+ const paddedBytes = new Uint8Array(length).fill(0);
11509
+ paddedBytes.set(bytes);
11510
+ return paddedBytes;
11511
+ };
11512
+ var fixBytes$1 = (bytes, length) => padBytes$1(bytes.length <= length ? bytes : bytes.slice(0, length), length);
11513
+ function getEncodedSize$1(value, encoder) {
11514
+ return "fixedSize" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);
11515
+ }
11516
+ function createEncoder$1(encoder) {
11517
+ return Object.freeze({
11518
+ ...encoder,
11519
+ encode: (value) => {
11520
+ const bytes = new Uint8Array(getEncodedSize$1(value, encoder));
11521
+ encoder.write(value, bytes, 0);
11522
+ return bytes;
11523
+ }
11524
+ });
11525
+ }
11526
+ function createDecoder$1(decoder) {
11527
+ return Object.freeze({
11528
+ ...decoder,
11529
+ decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]
11530
+ });
11531
+ }
11532
+ function isFixedSize$1(codec) {
11533
+ return "fixedSize" in codec && typeof codec.fixedSize === "number";
11534
+ }
11535
+ function combineCodec$1(encoder, decoder) {
11536
+ if (isFixedSize$1(encoder) !== isFixedSize$1(decoder)) {
11537
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH$1);
11538
+ }
11539
+ if (isFixedSize$1(encoder) && isFixedSize$1(decoder) && encoder.fixedSize !== decoder.fixedSize) {
11540
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH$1, {
11541
+ decoderFixedSize: decoder.fixedSize,
11542
+ encoderFixedSize: encoder.fixedSize
11543
+ });
11544
+ }
11545
+ if (!isFixedSize$1(encoder) && !isFixedSize$1(decoder) && encoder.maxSize !== decoder.maxSize) {
11546
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH$1, {
11547
+ decoderMaxSize: decoder.maxSize,
11548
+ encoderMaxSize: encoder.maxSize
11549
+ });
11550
+ }
11551
+ return {
11552
+ ...decoder,
11553
+ ...encoder,
11554
+ decode: decoder.decode,
11555
+ encode: encoder.encode,
11556
+ read: decoder.read,
11557
+ write: encoder.write
11558
+ };
11559
+ }
11560
+ function assertByteArrayIsNotEmptyForCodec$1(codecDescription, bytes, offset = 0) {
11561
+ if (bytes.length - offset <= 0) {
11562
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY$1, {
11563
+ codecDescription
11564
+ });
11565
+ }
11566
+ }
11567
+ function assertByteArrayHasEnoughBytesForCodec$1(codecDescription, expected, bytes, offset = 0) {
11568
+ const bytesLength = bytes.length - offset;
11569
+ if (bytesLength < expected) {
11570
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH$1, {
11571
+ bytesLength,
11572
+ codecDescription,
11573
+ expected
11574
+ });
11575
+ }
11576
+ }
11577
+
11578
+ // src/add-codec-size-prefix.ts
11579
+ function addEncoderSizePrefix(encoder, prefix) {
11580
+ const write = (value, bytes, offset) => {
11581
+ const encoderBytes = encoder.encode(value);
11582
+ offset = prefix.write(encoderBytes.length, bytes, offset);
11583
+ bytes.set(encoderBytes, offset);
11584
+ return offset + encoderBytes.length;
11585
+ };
11586
+ if (isFixedSize$1(prefix) && isFixedSize$1(encoder)) {
11587
+ return createEncoder$1({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });
11588
+ }
11589
+ const prefixMaxSize = isFixedSize$1(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;
11590
+ const encoderMaxSize = isFixedSize$1(encoder) ? encoder.fixedSize : encoder.maxSize ?? null;
11591
+ const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;
11592
+ return createEncoder$1({
11593
+ ...encoder,
11594
+ ...maxSize !== null ? { maxSize } : {},
11595
+ getSizeFromValue: (value) => {
11596
+ const encoderSize = getEncodedSize$1(value, encoder);
11597
+ return getEncodedSize$1(encoderSize, prefix) + encoderSize;
11598
+ },
11599
+ write
11600
+ });
11601
+ }
11602
+ function addDecoderSizePrefix(decoder, prefix) {
11603
+ const read = (bytes, offset) => {
11604
+ const [bigintSize, decoderOffset] = prefix.read(bytes, offset);
11605
+ const size = Number(bigintSize);
11606
+ offset = decoderOffset;
11607
+ if (offset > 0 || bytes.length > size) {
11608
+ bytes = bytes.slice(offset, offset + size);
11609
+ }
11610
+ assertByteArrayHasEnoughBytesForCodec$1("addDecoderSizePrefix", size, bytes);
11611
+ return [decoder.decode(bytes), offset + size];
11612
+ };
11613
+ if (isFixedSize$1(prefix) && isFixedSize$1(decoder)) {
11614
+ return createDecoder$1({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });
11615
+ }
11616
+ const prefixMaxSize = isFixedSize$1(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;
11617
+ const decoderMaxSize = isFixedSize$1(decoder) ? decoder.fixedSize : decoder.maxSize ?? null;
11618
+ const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;
11619
+ return createDecoder$1({ ...decoder, ...maxSize !== null ? { maxSize } : {}, read });
11620
+ }
11621
+ function addCodecSizePrefix(codec, prefix) {
11622
+ return combineCodec$1(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));
11623
+ }
11624
+
11625
+ // src/fix-codec-size.ts
11626
+ function fixEncoderSize$1(encoder, fixedBytes) {
11627
+ return createEncoder$1({
11628
+ fixedSize: fixedBytes,
11629
+ write: (value, bytes, offset) => {
11630
+ const variableByteArray = encoder.encode(value);
11631
+ const fixedByteArray = variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;
11632
+ bytes.set(fixedByteArray, offset);
11633
+ return offset + fixedBytes;
11634
+ }
11635
+ });
11636
+ }
11637
+ function fixDecoderSize$1(decoder, fixedBytes) {
11638
+ return createDecoder$1({
11639
+ fixedSize: fixedBytes,
11640
+ read: (bytes, offset) => {
11641
+ assertByteArrayHasEnoughBytesForCodec$1("fixCodecSize", fixedBytes, bytes, offset);
11642
+ if (offset > 0 || bytes.length > fixedBytes) {
11643
+ bytes = bytes.slice(offset, offset + fixedBytes);
11644
+ }
11645
+ if (isFixedSize$1(decoder)) {
11646
+ bytes = fixBytes$1(bytes, decoder.fixedSize);
11647
+ }
11648
+ const [value] = decoder.read(bytes, 0);
11649
+ return [value, offset + fixedBytes];
11650
+ }
11651
+ });
11652
+ }
11653
+ function fixCodecSize$1(codec, fixedBytes) {
11654
+ return combineCodec$1(fixEncoderSize$1(codec, fixedBytes), fixDecoderSize$1(codec, fixedBytes));
11655
+ }
11656
+
11657
+ // src/assertions.ts
11658
+ function assertNumberIsBetweenForCodec$1(codecDescription, min, max, value) {
11659
+ if (value < min || value > max) {
11660
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE$1, {
11661
+ codecDescription,
11662
+ max,
11663
+ min,
11664
+ value
11665
+ });
11666
+ }
11667
+ }
11668
+ function isLittleEndian$1(config) {
11669
+ return config?.endian === 1 /* Big */ ? false : true;
11670
+ }
11671
+ function numberEncoderFactory$1(input) {
11672
+ return createEncoder$1({
11673
+ fixedSize: input.size,
11674
+ write(value, bytes, offset) {
11675
+ if (input.range) {
11676
+ assertNumberIsBetweenForCodec$1(input.name, input.range[0], input.range[1], value);
11677
+ }
11678
+ const arrayBuffer = new ArrayBuffer(input.size);
11679
+ input.set(new DataView(arrayBuffer), value, isLittleEndian$1(input.config));
11680
+ bytes.set(new Uint8Array(arrayBuffer), offset);
11681
+ return offset + input.size;
11682
+ }
11683
+ });
11684
+ }
11685
+ function numberDecoderFactory$1(input) {
11686
+ return createDecoder$1({
11687
+ fixedSize: input.size,
11688
+ read(bytes, offset = 0) {
11689
+ assertByteArrayIsNotEmptyForCodec$1(input.name, bytes, offset);
11690
+ assertByteArrayHasEnoughBytesForCodec$1(input.name, input.size, bytes, offset);
11691
+ const view = new DataView(toArrayBuffer$1(bytes, offset, input.size));
11692
+ return [input.get(view, isLittleEndian$1(input.config)), offset + input.size];
11693
+ }
11694
+ });
11695
+ }
11696
+ function toArrayBuffer$1(bytes, offset, length) {
11697
+ const bytesOffset = bytes.byteOffset + (offset ?? 0);
11698
+ const bytesLength = length ?? bytes.byteLength;
11699
+ return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);
11700
+ }
11701
+ var getU32Encoder$1 = (config = {}) => numberEncoderFactory$1({
11702
+ config,
11703
+ name: "u32",
11704
+ range: [0, Number("0xffffffff")],
11705
+ set: (view, value, le) => view.setUint32(0, Number(value), le),
11706
+ size: 4
11707
+ });
11708
+ var getU32Decoder$1 = (config = {}) => numberDecoderFactory$1({
11709
+ config,
11710
+ get: (view, le) => view.getUint32(0, le),
11711
+ name: "u32",
11712
+ size: 4
11713
+ });
11714
+ var getU32Codec = (config = {}) => combineCodec$1(getU32Encoder$1(config), getU32Decoder$1(config));
11715
+
11716
+ // src/array.ts
11717
+ function assertValidNumberOfItemsForCodec$1(codecDescription, expected, actual) {
11718
+ if (expected !== actual) {
11719
+ throw new SolanaError$1(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS$1, {
11720
+ actual,
11721
+ codecDescription,
11722
+ expected
11723
+ });
11724
+ }
11725
+ }
11726
+ function sumCodecSizes$1(sizes) {
11727
+ return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
11728
+ }
11729
+ function getFixedSize$1(codec) {
11730
+ return isFixedSize$1(codec) ? codec.fixedSize : null;
11731
+ }
11732
+ function getMaxSize$1(codec) {
11733
+ return isFixedSize$1(codec) ? codec.fixedSize : codec.maxSize ?? null;
11734
+ }
11735
+
11736
+ // src/array.ts
11737
+ function getArrayEncoder$1(item, config = {}) {
11738
+ const size = config.size ?? getU32Encoder$1();
11739
+ const fixedSize = computeArrayLikeCodecSize$1(size, getFixedSize$1(item));
11740
+ const maxSize = computeArrayLikeCodecSize$1(size, getMaxSize$1(item)) ?? void 0;
11741
+ return createEncoder$1({
11742
+ ...fixedSize !== null ? { fixedSize } : {
11743
+ getSizeFromValue: (array) => {
11744
+ const prefixSize = typeof size === "object" ? getEncodedSize$1(array.length, size) : 0;
11745
+ return prefixSize + [...array].reduce((all, value) => all + getEncodedSize$1(value, item), 0);
11746
+ },
11747
+ maxSize
11748
+ },
11749
+ write: (array, bytes, offset) => {
11750
+ if (typeof size === "number") {
11751
+ assertValidNumberOfItemsForCodec$1("array", size, array.length);
11752
+ }
11753
+ if (typeof size === "object") {
11754
+ offset = size.write(array.length, bytes, offset);
11755
+ }
11756
+ array.forEach((value) => {
11757
+ offset = item.write(value, bytes, offset);
11758
+ });
11759
+ return offset;
11760
+ }
11761
+ });
11762
+ }
11763
+ function getArrayDecoder$1(item, config = {}) {
11764
+ const size = config.size ?? getU32Decoder$1();
11765
+ const itemSize = getFixedSize$1(item);
11766
+ const fixedSize = computeArrayLikeCodecSize$1(size, itemSize);
11767
+ const maxSize = computeArrayLikeCodecSize$1(size, getMaxSize$1(item)) ?? void 0;
11768
+ return createDecoder$1({
11769
+ ...fixedSize !== null ? { fixedSize } : { maxSize },
11770
+ read: (bytes, offset) => {
11771
+ const array = [];
11772
+ if (typeof size === "object" && bytes.slice(offset).length === 0) {
11773
+ return [array, offset];
11774
+ }
11775
+ if (size === "remainder") {
11776
+ while (offset < bytes.length) {
11777
+ const [value, newOffset2] = item.read(bytes, offset);
11778
+ offset = newOffset2;
11779
+ array.push(value);
11780
+ }
11781
+ return [array, offset];
11782
+ }
11783
+ const [resolvedSize, newOffset] = typeof size === "number" ? [size, offset] : size.read(bytes, offset);
11784
+ offset = newOffset;
11785
+ for (let i = 0; i < resolvedSize; i += 1) {
11786
+ const [value, newOffset2] = item.read(bytes, offset);
11787
+ offset = newOffset2;
11788
+ array.push(value);
11789
+ }
11790
+ return [array, offset];
11791
+ }
11792
+ });
11793
+ }
11794
+ function getArrayCodec$1(item, config = {}) {
11795
+ return combineCodec$1(getArrayEncoder$1(item, config), getArrayDecoder$1(item, config));
11796
+ }
11797
+ function computeArrayLikeCodecSize$1(size, itemSize) {
11798
+ if (typeof size !== "number") return null;
11799
+ if (size === 0) return 0;
11800
+ return itemSize === null ? null : itemSize * size;
11801
+ }
11802
+ function getBytesEncoder$1() {
11803
+ return createEncoder$1({
11804
+ getSizeFromValue: (value) => value.length,
11805
+ write: (value, bytes, offset) => {
11806
+ bytes.set(value, offset);
11807
+ return offset + value.length;
11808
+ }
11809
+ });
11810
+ }
11811
+ function getBytesDecoder$1() {
11812
+ return createDecoder$1({
11813
+ read: (bytes, offset) => {
11814
+ const slice = bytes.slice(offset);
11815
+ return [slice, offset + slice.length];
11816
+ }
11817
+ });
11818
+ }
11819
+ function getBytesCodec$1() {
11820
+ return combineCodec$1(getBytesEncoder$1(), getBytesDecoder$1());
11821
+ }
11822
+ function getTupleEncoder$1(items) {
11823
+ const fixedSize = sumCodecSizes$1(items.map(getFixedSize$1));
11824
+ const maxSize = sumCodecSizes$1(items.map(getMaxSize$1)) ?? void 0;
11825
+ return createEncoder$1({
11826
+ ...fixedSize === null ? {
11827
+ getSizeFromValue: (value) => items.map((item, index) => getEncodedSize$1(value[index], item)).reduce((all, one) => all + one, 0),
11828
+ maxSize
11829
+ } : { fixedSize },
11830
+ write: (value, bytes, offset) => {
11831
+ assertValidNumberOfItemsForCodec$1("tuple", items.length, value.length);
11832
+ items.forEach((item, index) => {
11833
+ offset = item.write(value[index], bytes, offset);
11834
+ });
11835
+ return offset;
11836
+ }
11837
+ });
11838
+ }
11839
+ function getTupleDecoder$1(items) {
11840
+ const fixedSize = sumCodecSizes$1(items.map(getFixedSize$1));
11841
+ const maxSize = sumCodecSizes$1(items.map(getMaxSize$1)) ?? void 0;
11842
+ return createDecoder$1({
11843
+ ...fixedSize === null ? { maxSize } : { fixedSize },
11844
+ read: (bytes, offset) => {
11845
+ const values = [];
11846
+ items.forEach((item) => {
11847
+ const [newValue, newOffset] = item.read(bytes, offset);
11848
+ values.push(newValue);
11849
+ offset = newOffset;
11850
+ });
11851
+ return [values, offset];
11852
+ }
11853
+ });
11854
+ }
11855
+ function getTupleCodec$1(items) {
11856
+ return combineCodec$1(
11857
+ getTupleEncoder$1(items),
11858
+ getTupleDecoder$1(items)
11859
+ );
11860
+ }
11861
+ function getStructEncoder$1(fields) {
11862
+ const fieldCodecs = fields.map(([, codec]) => codec);
11863
+ const fixedSize = sumCodecSizes$1(fieldCodecs.map(getFixedSize$1));
11864
+ const maxSize = sumCodecSizes$1(fieldCodecs.map(getMaxSize$1)) ?? void 0;
11865
+ return createEncoder$1({
11866
+ ...fixedSize === null ? {
11867
+ getSizeFromValue: (value) => fields.map(([key, codec]) => getEncodedSize$1(value[key], codec)).reduce((all, one) => all + one, 0),
11868
+ maxSize
11869
+ } : { fixedSize },
11870
+ write: (struct, bytes, offset) => {
11871
+ fields.forEach(([key, codec]) => {
11872
+ offset = codec.write(struct[key], bytes, offset);
11873
+ });
11874
+ return offset;
11875
+ }
11876
+ });
11877
+ }
11878
+ function getStructDecoder$1(fields) {
11879
+ const fieldCodecs = fields.map(([, codec]) => codec);
11880
+ const fixedSize = sumCodecSizes$1(fieldCodecs.map(getFixedSize$1));
11881
+ const maxSize = sumCodecSizes$1(fieldCodecs.map(getMaxSize$1)) ?? void 0;
11882
+ return createDecoder$1({
11883
+ ...fixedSize === null ? { maxSize } : { fixedSize },
11884
+ read: (bytes, offset) => {
11885
+ const struct = {};
11886
+ fields.forEach(([key, codec]) => {
11887
+ const [value, newOffset] = codec.read(bytes, offset);
11888
+ offset = newOffset;
11889
+ struct[key] = value;
11890
+ });
11891
+ return [struct, offset];
11892
+ }
11893
+ });
11894
+ }
11895
+ function getStructCodec$1(fields) {
11896
+ return combineCodec$1(
11897
+ getStructEncoder$1(fields),
11898
+ getStructDecoder$1(fields)
11899
+ );
11900
+ }
11901
+
11902
+ // src/null-characters.ts
11903
+ var removeNullCharacters$1 = (value) => (
11904
+ // eslint-disable-next-line no-control-regex
11905
+ value.replace(/\u0000/g, "")
11906
+ );
11604
11907
 
11605
- var InterestBearingMintInstruction;
11606
- (function (InterestBearingMintInstruction) {
11607
- InterestBearingMintInstruction[InterestBearingMintInstruction["Initialize"] = 0] = "Initialize";
11608
- InterestBearingMintInstruction[InterestBearingMintInstruction["UpdateRate"] = 1] = "UpdateRate";
11609
- })(InterestBearingMintInstruction || (InterestBearingMintInstruction = {}));
11610
- struct$1([
11611
- u8$1('instruction'),
11612
- u8$1('interestBearingMintInstruction'),
11613
- // TODO: Make this an optional public key
11614
- publicKey$4('rateAuthority'),
11615
- s16('rate'),
11616
- ]);
11617
- struct$1([
11618
- u8$1('instruction'),
11619
- u8$1('interestBearingMintInstruction'),
11620
- s16('rate'),
11621
- ]);
11908
+ // ../text-encoding-impl/dist/index.browser.mjs
11909
+ var e$1 = globalThis.TextDecoder;
11910
+ var o$1 = globalThis.TextEncoder;
11622
11911
 
11623
- var MetadataPointerInstruction;
11624
- (function (MetadataPointerInstruction) {
11625
- MetadataPointerInstruction[MetadataPointerInstruction["Initialize"] = 0] = "Initialize";
11626
- MetadataPointerInstruction[MetadataPointerInstruction["Update"] = 1] = "Update";
11627
- })(MetadataPointerInstruction || (MetadataPointerInstruction = {}));
11628
- struct$1([
11629
- // prettier-ignore
11630
- u8$1('instruction'),
11631
- u8$1('metadataPointerInstruction'),
11632
- publicKey$4('authority'),
11633
- publicKey$4('metadataAddress'),
11634
- ]);
11635
- struct$1([
11636
- // prettier-ignore
11637
- u8$1('instruction'),
11638
- u8$1('metadataPointerInstruction'),
11639
- publicKey$4('metadataAddress'),
11640
- ]);
11912
+ // src/utf8.ts
11913
+ var getUtf8Encoder$1 = () => {
11914
+ let textEncoder;
11915
+ return createEncoder$1({
11916
+ getSizeFromValue: (value) => (textEncoder ||= new o$1()).encode(value).length,
11917
+ write: (value, bytes, offset) => {
11918
+ const bytesToAdd = (textEncoder ||= new o$1()).encode(value);
11919
+ bytes.set(bytesToAdd, offset);
11920
+ return offset + bytesToAdd.length;
11921
+ }
11922
+ });
11923
+ };
11924
+ var getUtf8Decoder$1 = () => {
11925
+ let textDecoder;
11926
+ return createDecoder$1({
11927
+ read(bytes, offset) {
11928
+ const value = (textDecoder ||= new e$1()).decode(bytes.slice(offset));
11929
+ return [removeNullCharacters$1(value), bytes.length];
11930
+ }
11931
+ });
11932
+ };
11933
+ var getUtf8Codec$1 = () => combineCodec$1(getUtf8Encoder$1(), getUtf8Decoder$1());
11641
11934
 
11642
11935
  var Field;
11643
11936
  (function (Field) {
@@ -14615,23 +14908,7 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14615
14908
  return (mod && mod.__esModule) ? mod : { "default": mod };
14616
14909
  };
14617
14910
  Object.defineProperty(exports, "__esModule", { value: true });
14618
- exports.struct = exports.f64 = exports.f32 = exports.i32 = exports.u32 = exports.i16 = exports.u16 = exports.i8 = exports.u8 = void 0;
14619
- exports.u64 = u64;
14620
- exports.i64 = i64;
14621
- exports.u128 = u128;
14622
- exports.i128 = i128;
14623
- exports.u256 = u256;
14624
- exports.i256 = i256;
14625
- exports.publicKey = publicKey;
14626
- exports.option = option;
14627
- exports.bool = bool;
14628
- exports.vec = vec;
14629
- exports.tagged = tagged;
14630
- exports.vecU8 = vecU8;
14631
- exports.str = str;
14632
- exports.rustEnum = rustEnum;
14633
- exports.array = array;
14634
- exports.map = map;
14911
+ exports.map = exports.array = exports.rustEnum = exports.str = exports.vecU8 = exports.tagged = exports.vec = exports.bool = exports.option = exports.publicKey = exports.i256 = exports.u256 = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.struct = exports.f64 = exports.f32 = exports.i32 = exports.u32 = exports.i16 = exports.u16 = exports.i8 = exports.u8 = void 0;
14635
14912
  const buffer_layout_1 = Layout$2;
14636
14913
  const web3_js_1 = require$$1;
14637
14914
  const bn_js_1 = __importDefault(bn.exports);
@@ -14668,21 +14945,27 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14668
14945
  function u64(property) {
14669
14946
  return new BNLayout(8, false, property);
14670
14947
  }
14948
+ exports.u64 = u64;
14671
14949
  function i64(property) {
14672
14950
  return new BNLayout(8, true, property);
14673
14951
  }
14952
+ exports.i64 = i64;
14674
14953
  function u128(property) {
14675
14954
  return new BNLayout(16, false, property);
14676
14955
  }
14956
+ exports.u128 = u128;
14677
14957
  function i128(property) {
14678
14958
  return new BNLayout(16, true, property);
14679
14959
  }
14960
+ exports.i128 = i128;
14680
14961
  function u256(property) {
14681
14962
  return new BNLayout(32, false, property);
14682
14963
  }
14964
+ exports.u256 = u256;
14683
14965
  function i256(property) {
14684
14966
  return new BNLayout(32, true, property);
14685
14967
  }
14968
+ exports.i256 = i256;
14686
14969
  class WrappedLayout extends buffer_layout_1.Layout {
14687
14970
  constructor(layout, decoder, encoder, property) {
14688
14971
  super(layout.span, property);
@@ -14703,6 +14986,7 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14703
14986
  function publicKey(property) {
14704
14987
  return new WrappedLayout((0, buffer_layout_1.blob)(32), (b) => new web3_js_1.PublicKey(b), (key) => key.toBuffer(), property);
14705
14988
  }
14989
+ exports.publicKey = publicKey;
14706
14990
  class OptionLayout extends buffer_layout_1.Layout {
14707
14991
  constructor(layout, property) {
14708
14992
  super(-1, property);
@@ -14740,9 +15024,11 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14740
15024
  function option(layout, property) {
14741
15025
  return new OptionLayout(layout, property);
14742
15026
  }
15027
+ exports.option = option;
14743
15028
  function bool(property) {
14744
15029
  return new WrappedLayout((0, buffer_layout_1.u8)(), decodeBool, encodeBool, property);
14745
15030
  }
15031
+ exports.bool = bool;
14746
15032
  function decodeBool(value) {
14747
15033
  if (value === 0) {
14748
15034
  return false;
@@ -14763,6 +15049,7 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14763
15049
  ]);
14764
15050
  return new WrappedLayout(layout, ({ values }) => values, (values) => ({ values }), property);
14765
15051
  }
15052
+ exports.vec = vec;
14766
15053
  function tagged(tag, layout, property) {
14767
15054
  const wrappedLayout = (0, buffer_layout_1.struct)([
14768
15055
  u64("tag"),
@@ -14779,6 +15066,7 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14779
15066
  }
14780
15067
  return new WrappedLayout(wrappedLayout, decodeTag, (data) => ({ tag, data }), property);
14781
15068
  }
15069
+ exports.tagged = tagged;
14782
15070
  function vecU8(property) {
14783
15071
  const length = (0, buffer_layout_1.u32)("length");
14784
15072
  const layout = (0, buffer_layout_1.struct)([
@@ -14787,20 +15075,24 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14787
15075
  ]);
14788
15076
  return new WrappedLayout(layout, ({ data }) => data, (data) => ({ data }), property);
14789
15077
  }
15078
+ exports.vecU8 = vecU8;
14790
15079
  function str(property) {
14791
15080
  return new WrappedLayout(vecU8(), (data) => data.toString("utf-8"), (s) => Buffer.from(s, "utf-8"), property);
14792
15081
  }
15082
+ exports.str = str;
14793
15083
  function rustEnum(variants, property, discriminant) {
14794
15084
  const unionLayout = (0, buffer_layout_1.union)(discriminant !== null && discriminant !== void 0 ? discriminant : (0, buffer_layout_1.u8)(), property);
14795
15085
  variants.forEach((variant, index) => unionLayout.addVariant(index, variant, variant.property));
14796
15086
  return unionLayout;
14797
15087
  }
15088
+ exports.rustEnum = rustEnum;
14798
15089
  function array(elementLayout, length, property) {
14799
15090
  const layout = (0, buffer_layout_1.struct)([
14800
15091
  (0, buffer_layout_1.seq)(elementLayout, length, "values"),
14801
15092
  ]);
14802
15093
  return new WrappedLayout(layout, ({ values }) => values, (values) => ({ values }), property);
14803
15094
  }
15095
+ exports.array = array;
14804
15096
  class MapEntryLayout extends buffer_layout_1.Layout {
14805
15097
  constructor(keyLayout, valueLayout, property) {
14806
15098
  super(keyLayout.span + valueLayout.span, property);
@@ -14831,6 +15123,7 @@ Layout$2.const = ((value, property) => new Constant(value, property));
14831
15123
  ]);
14832
15124
  return new WrappedLayout(layout, ({ values }) => new Map(values), (values) => ({ values: Array.from(values.entries()) }), property);
14833
15125
  }
15126
+ exports.map = map;
14834
15127
 
14835
15128
  } (dist$1));
14836
15129