@solana/web3.js 2.0.0-development → 2.0.0-experimental.0108bc7
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/dist/index.browser.cjs +16 -2
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +2 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +1359 -116
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +2 -0
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +16 -2
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +2 -0
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +33 -16
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/rpc-default-config.d.ts.map +1 -0
- package/dist/types/rpc-integer-overflow-error.d.ts.map +1 -0
- package/dist/types/rpc-request-coalescer.d.ts.map +1 -0
- package/dist/types/rpc-request-deduplication.d.ts.map +1 -0
- package/dist/types/rpc-transport.d.ts.map +1 -0
- package/dist/types/rpc.d.ts.map +1 -0
- package/package.json +13 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../build-scripts/env-shim.ts","../../../node_modules/.pnpm/fast-stable-stringify@1.0.0/node_modules/fast-stable-stringify/index.js","../src/index.ts","../../instructions/src/roles.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.2/node_modules/@metaplex-foundation/umi-serializers/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/bytes.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/fixSerializer.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/baseX.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/base58.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/nullCharacters.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/utf8.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/common.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/utils.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/u32.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.2/node_modules/@metaplex-foundation/umi-serializers/src/utils.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.2/node_modules/@metaplex-foundation/umi-serializers/src/string.ts","../../keys/src/base58.ts","../../keys/src/guard.ts","../../keys/src/key-pair.ts","../../keys/src/pubkey.ts","../src/rpc.ts","../../rpc-core/src/params-patcher.ts","../../rpc-core/src/response-patcher-allowed-numeric-values.ts","../../rpc-core/src/response-patcher.ts","../../rpc-core/src/rpc-methods/index.ts","../../rpc-transport/src/json-rpc-errors.ts","../../rpc-transport/src/json-rpc-message-id.ts","../../rpc-transport/src/json-rpc-message.ts","../../rpc-transport/src/json-rpc.ts","../../fetch-impl/src/index.browser.ts","../../rpc-transport/src/transports/http/http-transport-errors.ts","../../rpc-transport/src/transports/http/http-transport-headers.ts","../../rpc-transport/src/transports/http/http-transport.ts","../src/rpc-default-config.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":["AccountRole","mergeBytes","bytesArr","totalLength","reduce","total","arr","length","result","Uint8Array","offset","forEach","set","padBytes","bytes","paddedBytes","fill","fixBytes","slice","DeserializingEmptyBufferError","Error","constructor","serializer","name","NotEnoughBytesError","expected","actual","fixSerializer","fixedBytes","description","fixedSize","maxSize","serialize","value","deserialize","buffer","InvalidBaseStringError","base","cause","message","baseX","alphabet","baseBigInt","BigInt","match","RegExp","chars","trailIndex","findIndex","c","leadingZeroes","Array","from","tailChars","base10Number","baseXPower","i","indexOf","tailBytes","unshift","Number","concat","n","repeat","sum","byte","join","base58","removeNullCharacters","replace","utf8","TextEncoder","encode","TextDecoder","decode","Endian","NumberOutOfRangeError","RangeError","min","max","numberFactory","input","littleEndian","defaultDescription","size","options","endian","Little","range","assertRange","ArrayBuffer","DataView","assertEnoughBytes","view","toDataView","get","toArrayBuffer","array","byteOffset","byteLength","u32","le","setUint32","getUint32","getSizeDescription","string","encoding","contentBytes","lengthBytes","lengthBigInt","lengthOffset","contentBuffer","contentOffset","e","__DEV__","index_browser_default","fastStableStringify","normalizeHeaders"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA,QAAI,cAAc,OAAO,UAAU;AACnC,QAAI,UAAU,OAAO,QAAQ,SAAS,KAAK;AACzC,UAAI,OAAO,CAAC;AACZ,eAAS,QAAQ,KAAK;AACrB,aAAK,KAAK,IAAI;AAAA,MACf;AACA,aAAO;AAAA,IACR;AAED,aAAS,UAAU,KAAK,aAAa;AACpC,UAAI,GAAG,KAAK,KAAK,MAAM,KAAK,SAAS;AACrC,UAAI,QAAQ,MAAM;AACjB,eAAO;AAAA,MACR;AACA,UAAI,QAAQ,OAAO;AAClB,eAAO;AAAA,MACR;AACA,cAAQ,OAAO,KAAK;AAAA,QACnB,KAAK;AACJ,cAAI,QAAQ,MAAM;AACjB,mBAAO;AAAA,UACR,WAAW,IAAI,UAAU,OAAO,IAAI,WAAW,YAAY;AAC1D,mBAAO,UAAU,IAAI,OAAO,GAAG,WAAW;AAAA,UAC3C,OAAO;AACN,oBAAQ,YAAY,KAAK,GAAG;AAC5B,gBAAI,UAAU,kBAAkB;AAC/B,oBAAM;AACN,oBAAM,IAAI,SAAS;AACnB,mBAAI,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,uBAAO,UAAU,IAAI,CAAC,GAAG,IAAI,IAAI;AAAA,cAClC;AACA,kBAAI,MAAM,IAAI;AACb,uBAAO,UAAU,IAAI,CAAC,GAAG,IAAI;AAAA,cAC9B;AACA,qBAAO,MAAM;AAAA,YACd,WAAW,UAAU,mBAAmB;AAEvC,qBAAO,QAAQ,GAAG,EAAE,KAAK;AACzB,oBAAM,KAAK;AACX,oBAAM;AACN,kBAAI;AACJ,qBAAO,IAAI,KAAK;AACf,sBAAM,KAAK,CAAC;AACZ,0BAAU,UAAU,IAAI,GAAG,GAAG,KAAK;AACnC,oBAAI,YAAY,QAAW;AAC1B,sBAAI,KAAK;AACR,2BAAO;AAAA,kBACR;AACA,yBAAO,KAAK,UAAU,GAAG,IAAI,MAAM;AAAA,gBACpC;AACA;AAAA,cACD;AACA,qBAAO,MAAM,MAAM;AAAA,YACpB,OAAO;AACN,qBAAO,KAAK,UAAU,GAAG;AAAA,YAC1B;AAAA,UACD;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,cAAc,OAAO;AAAA,QAC7B,KAAK;AACJ,iBAAO,KAAK,UAAU,GAAG;AAAA,QAC1B;AACC,iBAAO,SAAS,GAAG,IAAI,MAAM;AAAA,MAC/B;AAAA,IACD;AAEA,WAAO,UAAU,SAAS,KAAK;AAC9B,UAAI,YAAY,UAAU,KAAK,KAAK;AACpC,UAAI,cAAc,QAAW;AAC5B,eAAO,KAAI;AAAA,MACZ;AAAA,IACD;AAAA;AAAA;;;ACxEA;;;;ACIO,IAAK,cAAL,kBAAKA,iBAAL;AAEHA,eAAAA,aAAA,iBAAA;EAA0B,CAAA,IAA1B;AACAA,eAAAA,aAAA,iBAAA;EAA0B,CAAA,IAA1B;AACAA,eAAAA,aAAA,UAAA;EAA0B,CAAA,IAA1B;AACAA,eAAAA,aAAA,UAAA;EAA0B,CAAA,IAA1B;AALQ,SAAAA;AAAA,GAAA,eAAA,CAAA,CAAA;AAQZ,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAKrB,SAAS,yBAAyB,MAAgC;AACrE,SAAO,OAAO,CAAC;AACnB;AAKO,SAAS,wBAAwB,MAAgC;AACpE,SAAO,OAAO,CAAC;AACnB;AAEO,SAAS,aAAa,MAAsF;AAC/G,SAAO,QAAQ;AACnB;AAEO,SAAS,eAAe,MAA+E;AAC1G,UAAQ,OAAO,yBAAyB;AAC5C;AAYO,SAAS,WAAW,OAAoB,OAAiC;AAC5E,SAAO,QAAQ;AACnB;AAKO,SAAS,oBAAoB,MAAgC;AAChE,SAAO,OAAO;AAClB;AAKO,SAAS,sBAAsB,MAAgC;AAClE,SAAO,OAAO;AAClB;;;;;;AC/DA;;;ACAA;;;ACAA;AAIaC,IAAAA,aAAcC,cAAuC;AAChE,QAAMC,cAAcD,SAASE,OAAO,CAACC,OAAOC,QAAQD,QAAQC,IAAIC,QAAQ,CAAC;AACzE,QAAMC,SAAS,IAAIC,WAAWN,WAAW;AACzC,MAAIO,SAAS;AACbR,WAASS,QAASL,SAAQ;AACxBE,WAAOI,IAAIN,KAAKI,MAAM;AACtBA,cAAUJ,IAAIC;EAChB,CAAC;AACD,SAAOC;AACT;IAOaK,WAAW,CAACC,OAAmBP,WAA+B;AACzE,MAAIO,MAAMP,UAAUA;AAAQ,WAAOO;AACnC,QAAMC,cAAc,IAAIN,WAAWF,MAAM,EAAES,KAAK,CAAC;AACjDD,cAAYH,IAAIE,KAAK;AACrB,SAAOC;AACT;AAQO,IAAME,WAAW,CAACH,OAAmBP,WAC1CM,SAASC,MAAMI,MAAM,GAAGX,MAAM,GAAGA,MAAM;;;AClCzC;AACO,IAAMY,gCAAN,cAA4CC,MAAM;EAGvDC,YAAYC,YAAoB;AAC9B,UAAO,eAAcA,+CAA+C;AAH7DC,gCAAe;EAIxB;AACF;AAGO,IAAMC,sBAAN,cAAkCJ,MAAM;EAG7CC,YACEC,YACAG,UACAC,QACA;AACA,UACG,eAAcJ,wBAAwBG,uBAAuBC,SAAS;AARlEH,gCAAe;EAUxB;AACF;;;;ACTO,SAASI,cACdL,YACAM,YACAC,aACkB;AAClB,SAAO;IACLA,aACEA,eAAgB,SAAQD,eAAeN,WAAWO;IACpDC,WAAWF;IACXG,SAASH;IACTI,WAAYC,WAAahB,SAASK,WAAWU,UAAUC,KAAK,GAAGL,UAAU;IACzEM,aAAa,CAACC,QAAoBzB,SAAS,MAAM;AAE/CyB,eAASA,OAAOjB,MAAMR,QAAQA,SAASkB,UAAU;AAEjD,UAAIO,OAAO5B,SAASqB,YAAY;AAC9B,cAAM,IAAIJ,oBACR,iBACAI,YACAO,OAAO5B,MAAM;MAEjB;AAEA,UAAIe,WAAWQ,cAAc,MAAM;AACjCK,iBAASlB,SAASkB,QAAQb,WAAWQ,SAAS;MAChD;AAEA,YAAM,CAACG,KAAK,IAAIX,WAAWY,YAAYC,QAAQ,CAAC;AAChD,aAAO,CAACF,OAAOvB,SAASkB,UAAU;IACpC;;AAEJ;;;AC5CA;;;;;;ACAA;AACO,IAAMQ,yBAAN,cAAqChB,MAAM;EAKhDC,YAAYY,OAAeI,MAAcC,OAAe;AACtD,UAAMC,UAAW,6BAA4BF,cAAcJ;AAC3D,UAAMM,OAAO;AANNhB,gCAAe;AAOtB,SAAKe,QAAQA;EACf;AACF;;;ACHaE,IAAAA,QAASC,cAAyC;AAC7D,QAAMJ,OAAOI,SAASlC;AACtB,QAAMmC,aAAaC,OAAON,IAAI;AAC9B,SAAO;IACLR,aAAc,OAAMQ;IACpBP,WAAW;IACXC,SAAS;IACTC,UAAUC,OAA2B;AAEnC,UAAI,CAACA,MAAMW,MAAM,IAAIC,OAAQ,KAAIJ,aAAa,CAAC,GAAG;AAChD,cAAM,IAAIL,uBAAuBH,OAAOI,IAAI;MAC9C;AACA,UAAIJ,UAAU;AAAI,eAAO,IAAIxB,WAAU;AAGvC,YAAMqC,QAAQ,CAAC,GAAGb,KAAK;AACvB,UAAIc,aAAaD,MAAME,UAAWC,OAAMA,MAAMR,SAAS,CAAC,CAAC;AACzDM,mBAAaA,eAAe,KAAKD,MAAMvC,SAASwC;AAChD,YAAMG,gBAAgBC,MAAMJ,UAAU,EAAE/B,KAAK,CAAC;AAC9C,UAAI+B,eAAeD,MAAMvC;AAAQ,eAAOE,WAAW2C,KAAKF,aAAa;AAGrE,YAAMG,YAAYP,MAAM5B,MAAM6B,UAAU;AACxC,UAAIO,eAAe;AACnB,UAAIC,aAAa;AACjB,eAASC,IAAIH,UAAU9C,SAAS,GAAGiD,KAAK,GAAGA,KAAK,GAAG;AACjDF,wBAAgBC,aAAaZ,OAAOF,SAASgB,QAAQJ,UAAUG,CAAC,CAAC,CAAC;AAClED,sBAAcb;MAChB;AAGA,YAAMgB,YAAY,CAAA;AAClB,aAAOJ,eAAe,IAAI;AACxBI,kBAAUC,QAAQC,OAAON,eAAe,IAAI,CAAC;AAC7CA,wBAAgB;MAClB;AACA,aAAO7C,WAAW2C,KAAKF,cAAcW,OAAOH,SAAS,CAAC;;IAExDxB,YAAYC,QAAQzB,SAAS,GAAqB;AAChD,UAAIyB,OAAO5B,WAAW;AAAG,eAAO,CAAC,IAAI,CAAC;AAGtC,YAAMO,QAAQqB,OAAOjB,MAAMR,MAAM;AACjC,UAAIqC,aAAajC,MAAMkC,UAAWc,OAAMA,MAAM,CAAC;AAC/Cf,mBAAaA,eAAe,KAAKjC,MAAMP,SAASwC;AAChD,YAAMG,gBAAgBT,SAAS,CAAC,EAAEsB,OAAOhB,UAAU;AACnD,UAAIA,eAAejC,MAAMP;AAAQ,eAAO,CAAC2C,eAAef,OAAO5B,MAAM;AAGrE,UAAI+C,eAAexC,MAChBI,MAAM6B,UAAU,EAChB3C,OAAO,CAAC4D,KAAKC,SAASD,MAAM,OAAOrB,OAAOsB,IAAI,GAAG,EAAE;AAGtD,YAAMZ,YAAY,CAAA;AAClB,aAAOC,eAAe,IAAI;AACxBD,kBAAUM,QAAQlB,SAASmB,OAAON,eAAeZ,UAAU,CAAC,CAAC;AAC7DY,wBAAgBZ;MAClB;AAEA,aAAO,CAACQ,gBAAgBG,UAAUa,KAAK,EAAE,GAAG/B,OAAO5B,MAAM;IAC3D;;AAEJ;;;;IChEa4D,SAA6B3B,MACxC,4DAA4D;;;ACR9D;AAIO,IAAM4B,uBAAwBnC;;EAEnCA,MAAMoC,QAAQ,WAAW,EAAE;;;;;ACEtB,IAAMC,OAA2B;EACtCzC,aAAa;EACbC,WAAW;EACXC,SAAS;EACTC,UAAUC,OAAe;AACvB,WAAO,IAAIsC,YAAW,EAAGC,OAAOvC,KAAK;;EAEvCC,YAAYC,QAAQzB,SAAS,GAAG;AAC9B,UAAMuB,QAAQ,IAAIwC,YAAW,EAAGC,OAAOvC,OAAOjB,MAAMR,MAAM,CAAC;AAC3D,WAAO,CAAC0D,qBAAqBnC,KAAK,GAAGE,OAAO5B,MAAM;EACpD;AACF;;;ACnBA;;;ACKA;AA8BA,IAAYoE;CAGX,SAHWA,SAAM;AAANA,EAAAA,QAAM,QAAA,IAAA;AAANA,EAAAA,QAAM,KAAA,IAAA;AAAA,GAANA,WAAAA,SAAM,CAAA,EAAA;;;ACnClB;AACO,IAAMC,wBAAN,cAAoCC,WAAW;EAGpDxD,YACEC,YACAwD,KACAC,KACArD,QACA;AACA,UACG,eAAcJ,6CAA6CwD,WAAWC,YAAYrD,SAAS;AATvFH,gCAAe;EAWxB;AACF;;;;ACeO,SAASyD,cAAcC,OAOT;AACnB,MAAIC;AACJ,MAAIC,qBAA6BF,MAAM1D;AAEvC,MAAI0D,MAAMG,OAAO,GAAG;AAClBF,mBACE,EAAE,YAAYD,MAAMI,YAAYJ,MAAMI,QAAQC,WAAWX,OAAOY;AAClEJ,0BAAsBD,eAAe,SAAS;EAChD;AAEA,SAAO;IACLrD,aAAaoD,MAAMI,QAAQxD,eAAesD;IAC1CrD,WAAWmD,MAAMG;IACjBrD,SAASkD,MAAMG;IACfpD,UAAUC,OAAoC;AAC5C,UAAIgD,MAAMO,OAAO;AACfC,oBAAYR,MAAM1D,MAAM0D,MAAMO,MAAM,CAAC,GAAGP,MAAMO,MAAM,CAAC,GAAGvD,KAAK;MAC/D;AACA,YAAME,SAAS,IAAIuD,YAAYT,MAAMG,IAAI;AACzCH,YAAMrE,IAAI,IAAI+E,SAASxD,MAAM,GAAGF,OAAOiD,YAAY;AACnD,aAAO,IAAIzE,WAAW0B,MAAM;;IAE9BD,YAAYpB,OAAOJ,SAAS,GAA8B;AACxD,YAAMQ,QAAQJ,MAAMI,MAAMR,QAAQA,SAASuE,MAAMG,IAAI;AACrDQ,wBAAkB,MAAM1E,OAAO+D,MAAMG,IAAI;AACzC,YAAMS,OAAOC,WAAW5E,KAAK;AAC7B,aAAO,CAAC+D,MAAMc,IAAIF,MAAMX,YAAY,GAAGxE,SAASuE,MAAMG,IAAI;IAC5D;;AAEJ;AAQO,IAAMY,gBAAiBC,WAC5BA,MAAM9D,OAAOjB,MAAM+E,MAAMC,YAAYD,MAAME,aAAaF,MAAMC,UAAU;AAE7DJ,IAAAA,aAAcG,WACzB,IAAIN,SAASK,cAAcC,KAAK,CAAC;AAE5B,IAAMR,cAAc,CACzBnE,YACAwD,KACAC,KACA9C,UACG;AACH,MAAIA,QAAQ6C,OAAO7C,QAAQ8C,KAAK;AAC9B,UAAM,IAAIH,sBAAsBtD,YAAYwD,KAAKC,KAAK9C,KAAK;EAC7D;AACF;AAEO,IAAM2D,oBAAoB,CAC/BtE,YACAR,OACAW,aACG;AACH,MAAIX,MAAMP,WAAW,GAAG;AACtB,UAAM,IAAIY,8BAA8BG,UAAU;EACpD;AACA,MAAIR,MAAMP,SAASkB,UAAU;AAC3B,UAAM,IAAID,oBAAoBF,YAAYG,UAAUX,MAAMP,MAAM;EAClE;AACF;;;;ACjGO,IAAM6F,MAAM,CACjBf,UAAmC,CAAA,MAEnCL,cAAc;EACZzD,MAAM;EACN6D,MAAM;EACNI,OAAO,CAAC,GAAG5B,OAAO,YAAY,CAAC;EAC/BhD,KAAK,CAACiF,MAAM5D,OAAOoE,OAAOR,KAAKS,UAAU,GAAG1C,OAAO3B,KAAK,GAAGoE,EAAE;EAC7DN,KAAK,CAACF,MAAMQ,OAAOR,KAAKU,UAAU,GAAGF,EAAE;EACvChB;AACF,CAAC;;;;ACyBI,SAASmB,mBACdpB,MACQ;AACR,SAAO,OAAOA,SAAS,WAAWA,KAAKvD,cAAe,GAAEuD;AAC1D;;;;ACFO,SAASqB,OACdpB,UAAmC,CAAA,GACf;AACpB,QAAMD,OAAOC,QAAQD,QAAQgB,IAAG;AAChC,QAAMM,WAAWrB,QAAQqB,YAAYpC;AACrC,QAAMzC,cACJwD,QAAQxD,eACP,UAAS6E,SAAS7E,gBAAgB2E,mBAAmBpB,IAAI;AAE5D,MAAIA,SAAS,YAAY;AACvB,WAAO;MAAE,GAAGsB;MAAU7E;;EACxB;AAEA,MAAI,OAAOuD,SAAS,UAAU;AAC5B,WAAOzD,cAAc+E,UAAUtB,MAAMvD,WAAW;EAClD;AAEA,SAAO;IACLA;IACAC,WAAW;IACXC,SAAS;IACTC,WAAYC,WAAkB;AAC5B,YAAM0E,eAAeD,SAAS1E,UAAUC,KAAK;AAC7C,YAAM2E,cAAcxB,KAAKpD,UAAU2E,aAAapG,MAAM;AACtD,aAAON,WAAW,CAAC2G,aAAaD,YAAY,CAAC;;IAE/CzE,aAAa,CAACC,QAAoBzB,SAAS,MAAM;AAC/C,UAAIyB,OAAOjB,MAAMR,MAAM,EAAEH,WAAW,GAAG;AACrC,cAAM,IAAIY,8BAA8B,QAAQ;MAClD;AACA,YAAM,CAAC0F,cAAcC,YAAY,IAAI1B,KAAKlD,YAAYC,QAAQzB,MAAM;AACpE,YAAMH,SAASqD,OAAOiD,YAAY;AAClCnG,eAASoG;AACT,YAAMC,gBAAgB5E,OAAOjB,MAAMR,QAAQA,SAASH,MAAM;AAC1D,UAAIwG,cAAcxG,SAASA,QAAQ;AACjC,cAAM,IAAIiB,oBAAoB,UAAUjB,QAAQwG,cAAcxG,MAAM;MACtE;AACA,YAAM,CAAC0B,OAAO+E,aAAa,IAAIN,SAASxE,YAAY6E,aAAa;AACjErG,gBAAUsG;AACV,aAAO,CAAC/E,OAAOvB,MAAM;IACvB;;AAEJ;;;;ACnFA,SAAS,6BAAkC,8BAAA;AAMpC,MAAA;AAGH;;MAEI,6BAAA,SAAA;MAEI,6BAA6B,SAAS;MAEtC;AACF,YAAA,IAAA,MAAA,+DAAA;IACE;AACJ,UAAA,QAAA,OAAA,UAAA,4BAAA;AAEA,UAAM,WAAQ,MAAO;AACrB,QAAA,aAAiB,IAAA;AACjB,YAAI,IAAA,MAAa,gFAAI,UAAA;IACjB;EAA0G,SAC9GuG,IAAA;AACJ,UAAA,IAAE,MAAA,KAAA,mEAAA;MACE,OAAMA;IAAkF,CAAA;EAC7E;AACV;AAET,SAAA,6BAAA,QAAA;AAEO,SAAS,OAAA;IAKZ,aAAc,QAAA,gBAAAC,WAAA,8BAAA;IACV,UAAA;IACA,MAAA;EAAU,CAAA;AACJ;AAEd,SAAA,oCAAA;AAEO,SAAS,IAAA,KAAA,SAAA,MAAA;IACZ,WAAW;IACP,mBAAW;IACX,eAAA;IACA,SAAA;IACA,aAAS;IACT,OAAA;EAAa,CAAA,EACb;AAAO;;ACnDf,MAAA,CAAA,WAAS,iBAAwB;AAC7B,UAAoB,IAAA;MAEhB;IAAU;EACN;AAEJ;AAER,IAAA;AAEA,eAAI,wBAAA,QAAA;AACJ,MAAA,0BAAe,QAAwB;AACnC,4BAAI,IAA0B,QAAW,CAAA,YAAA;AACrC,aAAA;QACI;;QACiB;QAA6B,CAAA,QAAA,QAAA;MAAA,EAAO,MAAC,MAAQ;AACzD,gBAAM,wBAAM,KAAA;MACT,CAAA,EAAA,KAAA,MAAS;AACZ,gBACK,wBAAM,IAAA;MACR,CAAA;IAAsC,CAAA;EACzC;AAEb,MAAA,OAAA,0BAAA,WAAA;AACA,WAAI;EACA,OAAA;AACJ,WAAO,MAAA;EACH;AAAa;AAErB,eAAA,iCAAA;AAEA,wBAAsB;AAClB,MAAA,OAAA,WAAsB,WAAA,eAAA,OAAA,WAAA,OAAA,QAAA,gBAAA,YAAA;AACtB,UAAI,IAAO,MAAA,iDAAuD;EAE9D;AACJ,MAAA,CAAA,MAAA,wBAAA,WAAA,OAAA,MAAA,GAAA;AACA,UAAM,IAAM,MAAA,kEAAoD;EAE5D;AAAkF;AAE1F,eAAA,+BAAA;AAEA,wBAAsB;AAClB,MAAA,OAAA,WAAsB,WAAA,eAAA,OAAA,WAAA,OAAA,QAAA,cAAA,YAAA;AACtB,UAAI,IAAO,MAAA,6CAA4C;EAEnD;AAA6D;;AC7CrE,QAAA,+BAAgE;AAC5D,QAAM,UAAA,MAAA,OAAA,OAAA;;IAC8B;;;IAChB;;;IACE,CAAA,QAAA,QAAA;EAAA;AAEtB,SAAA;AACA;;ACNJ,QAAA,6BAAsB;AAClB,MAAA,UAAM,SAAA,YAA6B,UAAA,UAAA,SAAA,WAAA;AACnC,UAAI,IAAA,MAAU,iDAAkD;EAE5D;AACJ,QAAA,iBAAA,MAAA,OAAA,OAAA,UAAA,OAAA,SAAA;AACA,QAAM,CAAA,oBAAiB,IAAM,6BAA+B,EAAA,YAAS,IAAA,WAAA,cAAA,CAAA;AACrE,SAAO;AACP;;;ACXJ;;;;ACOI,SAAI,UAAM,OAAa,SAAG,mBAAA;AACtB,MAAA,MAAO,QAAM,KAAA,GAAA;AAAA,WAAK,MAAS;MAE3B,CAAA,SAAA,OAAA,UAAA,SAAA,CAAA,GAAA,SAAA,EAAA,GAAA,iBAAA;IACJ;EACI,WAAM,OAAO,UAAA,YAAA,UAAA,MAAA;AACb,UAAA,MAAW,CAAA;AACP,eAAI,YAAiB,OAAA;AACjB,UAAA,OAAI,UAAY,eAAgB,KAAA,OAAY,QAAG,GAAS;AAC5D,YAAA,QAAA,IAAA,UAAA,MAAA,QAAA,GAAA,CAAA,GAAA,SAAA,QAAA,GAAA,iBAAA;MACJ;IACA;AACJ,WAAA;EAII,WAAI,OAAA,UAAsB,UAAQ;AAC9B,QAAA,sBAAkB,QAAc,OAAA,oBAAA,QAAA,CAAA,OAAA,mBAAA;AACpC,wBAAA,SAAA,KAAA;IACA;AACJ,WAAO,OAAA,KAAA;EACH,OAAA;AACJ,WAAA;EACJ;AAEO;AACH,SAAO,4BAAsB,QAAA,mBAAiB;AAClD,SAAA,UAAA,QAAA,CAAA,GAAA,iBAAA;;;ACxBI,IACA,2BAAgB;EAAA,gBAAA;;IAEoD,CAAA,SAAA,QAAA,UAAA,QAAA,4BAAA;;IAGhE,CAAC,SAAS,QAAQ,UAAU,QAAQ,cAAA;IAAoB,CAAA,SAAA,QAAA,UAAA,QAAA,oBAAA;;IAGxD,CAAC,SAAS,QAAQ,UAAU,QAAQ,eAAe,UAAU;IAC7D,CAAC,SAAS,QAAQ,UAAU,QAAQ,eAAA,UAAqB;IACzD,CAAC,SAAS,QAAQ,UAAU,QAAQ,qBAAmB,UAAU;IACjE,CAAA,SAAA,QAAA,UAAA,QAAA,mBAAA,UAAA;IAAA;MAEI;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACJ;IACA;IAAA;MAEI;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACJ;IACA;IACA,CAAC,SAAS,QAAQ,UAAU,QAAQ,cAAc,kBAAkB,SAAS,sBAAa;IAAA,CAAA,SAAA,QAAA,UAAA,QAAA,cAAA,kBAAA,SAAA,aAAA;;IAE5C,CAAA,SAAA,QAAA,UAAA,QAAA,UAAA;;IAG9C,CAAC,SAAS,QAAQ,UAAU,QAAQ,oBAAiB;IAAA,CAAA,SAAA,QAAA,UAAA,QAAA,iBAAA;;IAE0B,CAAA,SAAA,QAAA,UAAA,QAAA,SAAA,cAAA,oBAAA;;IAG/E,CAAC,SAAS,QAAQ,UAAU,QAAQ,oBAAa;IAAA,CAAA,SAAA,QAAA,UAAA,QAAA,aAAA;;IAGjD,CAAC,SAAS,QAAQ,UAAU,QAAQ,YAAS;IACjD,CAAA,SAAA,QAAA,UAAA,QAAA,SAAA,kBAAA,mBAAA;EACA;EACA,cAAA,CAAA,CAAA,CAAA;EACA,oBAAA,CAAA,CAAA,kBAA+B,YAAkB,CAAA;EACjD,6BAAyB,CAAA,CAAA,kBAAA,kBAAA,CAAA;EAAA,yBACX;IACV,CAAC,SAAS,kBAAkB,UAAU;IAC1C,CAAA,SAAA,kBAAA,UAAA;EACA;EAAgB,gBACH;IACT,CAAC,QAAQ,oBAAoB,kBAAkB,cAAA;IAC/C,CAAC,QAAQ,oBAAA,kBAAqB,iBAAgC,UAAA;IAC9D,CAAC,QAAQ,qBAAqB,kBAAkB,cAAA;IAChD,CAAC,QAAQ,qBAAW,kBAAkB,iBAAY,UAAA;IAClD,CAAC,QAAQ,WAAA,kBAAqB,YAAkB;IAChD,CAAC,QAAQ,qBAAqB,kBAAkB,OAAA;IAChD,CAAC,QAAQ,qBAAqB,kBAAkB,gBAAgB,kBAAkB,gBAAY;IAC9F,CAAC,QAAA,qBAA0B,kBAAA,gBAAuB,kBAAkB,YAAmB,gBAAgB;IACvG,CAAC,eAAe,WAAW,uBAAuB,kBAAkB,mBAAmB,gBAAgB;IACvG,CAAC,eAAe,WAAW,uBAAgB,kBAAkB,mBAAgB,gBAAA;IAC7E,CAAC,eAAe,WAAW,gBAAgB,kBAAkB,gBAAY;IACzE,CAAC,eAAe,WAAW,gBAAU,kBAAA,YAA2B,gBAAA;IAChE,CAAC,eAAe,WAAW,UAAU,2BAAA;IACrC,CAAC,eAAe,WAAW,UAAU,6BAAuB;IAChE,CAAA,eAAA,WAAA,UAAA,uBAAA;EACA;EAAiB,iBACD;IACZ,CAAC,WAAA,kBAAc,YAAkB;IACrC,CAAA,cAAA,kBAAA,YAAA;EACJ;;AC9EI,SAAO,uBACK,UAAY,UAAS;AAErC,SAAA,SAAA,OAAA,CAAA,YAAA,QAAA,CAAA,MAAA,oBAAA,OAAA,aAAA,YAAA,QAAA,CAAA,MAAA,QAAA,EAAA,IAAA,CAAA,YAAA,QAAA,MAAA,CAAA,CAAA;AAEA;AACI,SAAI,WAAc,OAAK,iBAAG;AACtB,MAAA,MAAO,QAAM,KAAK,GAAA;AACd,WAAA,MAAM,IAAA,CAAA,SAAA,OAAsB;AAC5B,YAAA,sBAA0B,uBAAmB,iBAAA,EAAA;AAChD,aAAA,WAAA,SAAA,mBAAA;IACL,CAAA;EACI,WAAM,OAAO,UAAA,YAAA,UAAA,MAAA;AACb,UAAA,MAAY,CAAA;AACR,eAAM,CAAA,UAAA,UAAsB,KAAA,OAAA,QAAA,KAAuB,GAAA;AACnD,YAAI,sBAAsB,uBAAY,iBAAmB,QAAA;AAC7D,UAAA,QAAA,IAAA,WAAA,YAAA,mBAAA;IACA;AACJ,WAAA;EACqB,WAAA,OAAA,UAAA;;EAKjB,gBAAO,WACT;EAIE,OAAA,UAAc,KAAK,GAAA;AACvB,WAAO,OAAA,KAAA;EACH,OAAA;AACJ,WAAA;EACJ;AAEO;AAIH,SAAM,8BAA+B,aAAA,YAAyB;AAC9D,QAAA,kBAAiB,aAAa,yBAAqB,UAAA,IAAA;AACvD,SAAA,WAAA,aAAA,mBAAA,CAAA,CAAA;;ACUI,SAAO,mBAA2C,QAAA;AAAA,SAC9C,IAAA,MAAA,CAAA,GAAiB;IACb,iBAAO;AACX,aAAA;IACA;IACI,iBAAO;AACX,aAAA;IACA;IAGI,OAAA,MAAW;AACX,YAAM,CAAA,GAAA,CAAA,IAAA;AACN,YAAA,aACO,EAAA,SAGkD;AACrD,aAAA,YAAM,WAAA;AACN,cAAM,wBAAS,QAAA;AAAA,cACX,SAAA;UACA;UAGJ,wBAAA,CAAA,SAAA,UAAA,sBAAA,YAAA,SAAA,KAAA,IAAA;QACA;AAAO,eACH;UACA;UACA;UACJ,mBAAA,CAAA,gBAAA,8BAAA,aAAA,UAAA;QACJ;MACJ;IACH;EACL,CAAA;;;;;A9B5FO,IAAMA,WAA2B,uBAAO,MAAwD;A+B4BhG,IAAM,qBAAN,cAAiC,MAAM;EAG1C,YAAY,SAAoC;AAC5C,UAAM,uBAAuB,QAAQ,UAAU,QAAQ,SAAS;AAChE,UAAM,kBAAkB,MAAM,KAAK,WAAW;AAC9C,SAAK,OAAO,QAAQ;AACpB,SAAK,OAAO,QAAQ;EACxB;EACA,IAAI,OAAO;AACP,WAAO;EACX;AACJ;ACzCA,IAAI,iBAAiB;AACd,SAAS,mBAAmB;AAC/B,QAAM,KAAK;AACX,oBAAkB,iBAAiB,KAAK,OAAO;AAC/C,SAAO;AACX;ACHO,SAAS,qBAA8B,QAAgB,QAAiB;AAC3E,SAAO;IACH,IAAI,iBAAiB;IACrB,SAAS;IACT;IACA;EACJ;AACJ;ACCA,SAAS,wBACL,WACA,gBAC4B;AAC5B,SAAO;IACH,MAAM,KAAK,SAA2C;AAClD,YAAM,EAAE,YAAY,QAAQ,kBAAkB,IAAI;AAClD,YAAM,UAAU,qBAAqB,YAAY,MAAM;AACvD,YAAM,WAAW,MAAM,UAAU,UAAoC;QACjE;QACA,QAAQ,SAAS;MACrB,CAAC;AACD,UAAI,WAAW,UAAU;AACrB,cAAM,IAAI,mBAAmB,SAAS,KAAK;MAC/C,OAAO;AACH,eAAQ,oBAAoB,kBAAkB,SAAS,MAAM,IAAI,SAAS;MAC9E;IACJ;EACJ;AACJ;AAEA,SAAS,UAAuB,WAAqD;AACjF,SAAO,IAAI,MAAM,UAAU,KAAK;IAC5B,iBAAiB;AACb,aAAO;IACX;IACA,iBAAiB;AACb,aAAO;IACX;IACA,IAAI,QAAQ,GAAG,UAAU;AACrB,aAAO,YAAa,WAAsB;AACtC,cAAM,aAAa,EAAE,SAAS;AAC9B,cAAM,mBAAmB,QAAQ,IAAI,QAAQ,YAAY,QAAQ;AACjE,cAAM,aAAa,mBACb,iBAAiB,GAAG,SAAS,IAC7B,EAAE,YAAY,QAAQ,UAAU;AACtC,eAAO,wBAAwB,WAAW,UAAU;MACxD;IACJ;EACJ,CAAC;AACL;AAEO,SAAS,cAA2B,WAAqD;AAC5F,SAAO,UAAU,SAAS;AAC9B;ACtDA,IAAOC,IAAQ,WAAW;ACKnB,IAAM,kBAAN,cAA8B,MAAM;EAEvC,YAAY,SAAiC;AACzC,UAAM,eAAe,QAAQ,gBAAgB,QAAQ,SAAS;AAC9D,UAAM,kBAAkB,MAAM,KAAK,WAAW;AAC9C,SAAK,aAAa,QAAQ;EAC9B;EACA,IAAI,OAAO;AACP,WAAO;EACX;AACJ;AC2BA,IAAM,qBAA8C;EAChD,QAAQ;EACR,kBAAkB;EAClB,gBAAgB;AACpB;AAEA,IAAM,oBAA6C;EAC/C,kBAAkB;EAClB,mBAAmB;EACnB,kCAAkC;EAClC,iCAAiC;EACjC,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,MAAM;EACN,KAAK;EACL,QAAQ;EACR,MAAM;EACN,cAAc;EACd,QAAQ;EACR,sBAAsB;;;;EAItB,SAAS;EACT,IAAI;EACJ,SAAS;EACT,qBAAqB;EACrB,SAAS;EACT,KAAK;AACT;AAEO,SAAS,kCACZ,SAC4C;AAC5C,QAAM,aAAa,OAAO,KAAK,OAAO,EAAE,OAAO,CAAA,eAAc;AACzD,UAAM,sBAAsB,WAAW,YAAY;AACnD,WACI,mBAAmB,WAAW,YAAY,CAAC,MAAM,QACjD,kBAAkB,WAAW,YAAY,CAAC,MAAM,QAChD,oBAAoB,WAAW,QAAQ,KACvC,oBAAoB,WAAW,MAAM;EAE7C,CAAC;AACD,MAAI,WAAW,SAAS,GAAG;AACvB,UAAM,IAAI;MACN,GAAG,WAAW,SAAS,IAAI,sBAAsB,iCACxC,WAAW,KAAK,MAAM;IAEnC;EACJ;AACJ;AAMO,SAAS,iBACZ,SACiD;AACjD,QAAM,MAA8B,CAAC;AACrC,aAAW,cAAc,SAAS;AAC9B,QAAI,WAAW,YAAY,CAAC,IAAI,QAAQ,UAAU;EACtD;AACA,SAAO;AACX;ACxFO,SAAS,oBAAoB,EAAE,mBAAmB,SAAS,IAAI,GAA0B;AAC5F,MAAID,YAAW,SAAS;AACpB,sCAAkC,OAAO;EAC7C;AACA,QAAM,QAAQ;AACd,MAAIA,YAAW,qBAAqB,MAAM;AACtC,YAAQ;MACJ;IAEJ;EACJ;AACA,QAAM,gBAAgB,WAAW,iBAAiB,OAAO;AACzD,SAAO,eAAe,gBAA2B;IAC7C;IACA;EACJ,GAAqD;AACjD,UAAM,OAAO,KAAK,UAAU,OAAO;AACnC,UAAM,cAAc;MAChB;MACA;MACA,SAAS;QACL,GAAG;;QAEH,QAAQ;QACR,kBAAkB,KAAK,OAAO,SAAS;QACvC,gBAAgB;MACpB;MACA,QAAQ;MACR;IACJ;AACA,UAAM,WAAW,MAAM,EAAU,KAAK,WAAW;AACjD,QAAI,CAAC,SAAS,IAAI;AACd,YAAM,IAAI,gBAAgB;QACtB,SAAS,SAAS;QAClB,YAAY,SAAS;MACzB,CAAC;IACL;AACA,WAAQ,MAAM,SAAS,KAAK;EAChC;AACJ;;;AC1DA;;;ACAA;AAAO,IAAM,oCAAN,cAAgD,MAAM;AAAA,EAIzD,YAAY,YAAoB,SAA8B,OAAe;AACzE,UAAM,eAAe,OAAO,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;AAC/F,QAAI,UAAU;AACd,UAAM,YAAY,cAAc;AAChC,UAAM,gBAAgB,cAAc;AACpC,QAAI,aAAa,KAAK,iBAAiB,IAAI;AACvC,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,OAAO;AACH,gBAAU,cAAc;AAAA,IAC5B;AACA,UAAM,OACF,QAAQ,SAAS,IACX,QACK,MAAM,CAAC,EACP,IAAI,cAAa,OAAO,aAAa,WAAW,IAAI,cAAc,QAAS,EAC3E,KAAK,GAAG,IACb;AACV;AAAA,MACI,OAAO,6BAA6B,0BAC7B,OAAO,cAAc,WAAW,YAAY;AAAA,IAGvD;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO;AACP,WAAO;AAAA,EACX;AACJ;;;ADlCO,IAAM,qBAAwE;AAAA,EACjF,kBAAkB,YAAY,SAAS,OAAO;AAC1C,UAAM,IAAI,kCAAkC,YAAY,SAAS,KAAK;AAAA,EAC1E;AACJ;;;AbFO,SAAS,gBAAgB,QAAiF;AAC7G,SAAO,cAAgC;AAAA,IACnC,GAAG;AAAA,IACH,KAAK,mBAAmB,kBAAkB;AAAA,EAC9C,CAAC;AACL;;;AeXA;;;ACAA;AAUO,SAAS,qCACZ,WACA,qBACa;AACb,MAAI;AACJ,SAAO,eAAe,yBAClB,QACkB;AAClB,UAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,UAAM,mBAAmB,oBAAoB,OAAO;AACpD,QAAI,qBAAqB,QAAW;AAChC,aAAO,MAAM,UAAU,MAAM;AAAA,IACjC;AACA,QAAI,CAAC,qCAAqC;AACtC,cAAQ,QAAQ,EAAE,KAAK,MAAM;AACzB,8CAAsC;AAAA,MAC1C,CAAC;AACD,4CAAsC,CAAC;AAAA,IAC3C;AACA,QAAI,oCAAoC,gBAAgB,KAAK,MAAM;AAC/D,YAAM,kBAAkB,IAAI,gBAAgB;AAC5C,0CAAoC,gBAAgB,IAAI;AAAA,QACpD;AAAA,QACA,cAAc;AAAA,QACd,iBAAiB,UAAqB;AAAA,UAClC,GAAG;AAAA,UACH,QAAQ,gBAAgB;AAAA,QAC5B,CAAC;AAAA,MACL;AAAA,IACJ;AACA,UAAM,mBAAmB,oCAAoC,gBAAgB;AAC7E,qBAAiB;AACjB,QAAI,QAAQ;AACR,YAAM,kBAAkB,iBAAiB;AACzC,aAAO,MAAM,IAAI,QAAmB,CAAC,SAAS,WAAW;AACrD,cAAM,cAAc,CAACD,OAAoC;AACrD,iBAAO,oBAAoB,SAAS,WAAW;AAC/C,2BAAiB,gBAAgB;AACjC,cAAI,iBAAiB,iBAAiB,GAAG;AACrC,kBAAM,kBAAkB,iBAAiB;AACzC,4BAAgB,MAAM;AAAA,UAC1B;AACA,gBAAM,aAAa,IAAI,aAAcA,GAAE,OAAuB,QAAQ,YAAY;AAClF,iBAAO,UAAU;AAAA,QACrB;AACA,eAAO,iBAAiB,SAAS,WAAW;AAC5C,wBAAgB,KAAK,OAAO,EAAE,QAAQ,MAAM;AACxC,iBAAO,oBAAoB,SAAS,WAAW;AAAA,QACnD,CAAC;AAAA,MACL,CAAC;AAAA,IACL,OAAO;AACH,aAAQ,MAAM,iBAAiB;AAAA,IACnC;AAAA,EACJ;AACJ;;;AChEA;AAEA,mCAAgC;AAEzB,SAAS,oCAAoC,SAAsC;AACtF,MAAI,WAAW,QAAQ,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAC1E;AAAA,EACJ;AACA,MAAI,aAAa,WAAW,QAAQ,YAAY,SAAS,YAAY,WAAW,YAAY,SAAS;AACjG,eAAO,6BAAAG,SAAoB,CAAC,QAAQ,QAAQ,QAAQ,MAAM,CAAC;AAAA,EAC/D;AACJ;;;AFFA,SAASC,kBACL,SACiD;AACjD,QAAM,MAA8B,CAAC;AACrC,aAAW,cAAc,SAAS;AAC9B,QAAI,WAAW,YAAY,CAAC,IAAI,QAAQ,UAAU;AAAA,EACtD;AACA,SAAO;AACX;AAEO,SAAS,0BAA0B,QAAkE;AACxG,SAAO;AAAA,IACH,oBAAoB;AAAA,MAChB,GAAG;AAAA,MACH,SAAS;AAAA,QACL,GAAI,OAAO,UAAUA,kBAAiB,OAAO,OAAO,IAAI;AAAA,QACxD,GAAI;AAAA;AAAA,UAEA,iBAAiB,MAAM,yBAAiB;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,IACD;AAAA,EACJ;AACJ","sourcesContent":["// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV`\nexport const __DEV__ = /* @__PURE__ */ (() => (process as any)['en' + 'v'].NODE_ENV === 'development')();\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from './rpc';\nexport * from './rpc-transport';\n","/**\n * Quick primer on bitwise operations: https://stackoverflow.com/a/1436448/802047\n */\n\nexport enum AccountRole {\n // Bitflag guide: is signer ⌄⌄ is writable\n WRITABLE_SIGNER = /* 3 */ 0b11, // prettier-ignore\n READONLY_SIGNER = /* 2 */ 0b10, // prettier-ignore\n WRITABLE = /* 1 */ 0b01, // prettier-ignore\n READONLY = /* 0 */ 0b00, // prettier-ignore\n}\n\nconst IS_SIGNER_BITMASK = 0b10;\nconst IS_WRITABLE_BITMASK = 0b01;\n\nexport function downgradeRoleToNonSigner(role: AccountRole.READONLY_SIGNER): AccountRole.READONLY;\nexport function downgradeRoleToNonSigner(role: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole {\n return role & ~IS_SIGNER_BITMASK;\n}\n\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE): AccountRole.READONLY;\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE_SIGNER): AccountRole.READONLY_SIGNER;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole {\n return role & ~IS_WRITABLE_BITMASK;\n}\n\nexport function isSignerRole(role: AccountRole): role is AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER {\n return role >= AccountRole.READONLY_SIGNER;\n}\n\nexport function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE | AccountRole.WRITABLE_SIGNER {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\n\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE_SIGNER, roleB: AccountRole): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.READONLY_SIGNER): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY, roleB: AccountRole.READONLY): AccountRole.READONLY; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {\n return roleA | roleB;\n}\n\nexport function upgradeRoleToSigner(role: AccountRole.READONLY): AccountRole.READONLY_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole {\n return role | IS_SIGNER_BITMASK;\n}\n\nexport function upgradeRoleToWritable(role: AccountRole.READONLY): AccountRole.WRITABLE;\nexport function upgradeRoleToWritable(role: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole {\n return role | IS_WRITABLE_BITMASK;\n}\n","export * from '@metaplex-foundation/umi-serializers-core';\nexport * from '@metaplex-foundation/umi-serializers-encodings';\nexport * from '@metaplex-foundation/umi-serializers-numbers';\nexport { array } from './array.mjs';\nexport { bitArray } from './bitArray.mjs';\nexport { bool } from './bool.mjs';\nexport { bytes } from './bytes.mjs';\nexport { dataEnum } from './dataEnum.mjs';\nexport { EnumDiscriminatorOutOfRangeError, InvalidArrayLikeRemainderSizeError, InvalidDataEnumVariantError, InvalidNumberOfItemsError, InvalidScalarEnumVariantError, UnrecognizedArrayLikeSerializerSizeError } from './errors.mjs';\nexport { map } from './map.mjs';\nexport { nullable } from './nullable.mjs';\nexport { option } from './option.mjs';\nexport { publicKey } from './publicKey.mjs';\nexport { scalarEnum } from './scalarEnum.mjs';\nexport { set } from './set.mjs';\nexport { string } from './string.mjs';\nexport { struct } from './struct.mjs';\nexport { tuple } from './tuple.mjs';\nexport { unit } from './unit.mjs';\nexport { maxSerializerSizes } from './maxSerializerSizes.mjs';\nexport { sumSerializerSizes } from './sumSerializerSizes.mjs';\n//# sourceMappingURL=index.mjs.map\n","export { fixBytes, mergeBytes, padBytes } from './bytes.mjs';\nexport { DeserializingEmptyBufferError, ExpectedFixedSizeSerializerError, NotEnoughBytesError } from './errors.mjs';\nexport { fixSerializer } from './fixSerializer.mjs';\nexport { mapSerializer } from './mapSerializer.mjs';\nexport { reverseSerializer } from './reverseSerializer.mjs';\n//# sourceMappingURL=index.mjs.map\n","/**\n * Concatenates an array of `Uint8Array`s into a single `Uint8Array`.\n * @category Utils\n */\nexport const mergeBytes = (bytesArr: Uint8Array[]): Uint8Array => {\n const totalLength = bytesArr.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n bytesArr.forEach((arr) => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\n\n/**\n * Pads a `Uint8Array` with zeroes to the specified length.\n * If the array is longer than the specified length, it is returned as-is.\n * @category Utils\n */\nexport const padBytes = (bytes: Uint8Array, length: number): Uint8Array => {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\n\n/**\n * Fixes a `Uint8Array` to the specified length.\n * If the array is longer than the specified length, it is truncated.\n * If the array is shorter than the specified length, it is padded with zeroes.\n * @category Utils\n */\nexport const fixBytes = (bytes: Uint8Array, length: number): Uint8Array =>\n padBytes(bytes.slice(0, length), length);\n","/** @category Errors */\nexport class DeserializingEmptyBufferError extends Error {\n readonly name: string = 'DeserializingEmptyBufferError';\n\n constructor(serializer: string) {\n super(`Serializer [${serializer}] cannot deserialize empty buffers.`);\n }\n}\n\n/** @category Errors */\nexport class NotEnoughBytesError extends Error {\n readonly name: string = 'NotEnoughBytesError';\n\n constructor(\n serializer: string,\n expected: bigint | number,\n actual: bigint | number\n ) {\n super(\n `Serializer [${serializer}] expected ${expected} bytes, got ${actual}.`\n );\n }\n}\n\n/** @category Errors */\nexport class ExpectedFixedSizeSerializerError extends Error {\n readonly name: string = 'ExpectedFixedSizeSerializerError';\n\n constructor(message?: string) {\n message ??= 'Expected a fixed-size serializer, got a variable-size one.';\n super(message);\n }\n}\n","import { fixBytes } from './bytes';\nimport { Serializer } from './common';\nimport { NotEnoughBytesError } from './errors';\n\n/**\n * Creates a fixed-size serializer from a given serializer.\n *\n * @param serializer - The serializer to wrap into a fixed-size serializer.\n * @param fixedBytes - The fixed number of bytes to read.\n * @param description - A custom description for the serializer.\n *\n * @category Serializers\n */\nexport function fixSerializer<T, U extends T = T>(\n serializer: Serializer<T, U>,\n fixedBytes: number,\n description?: string\n): Serializer<T, U> {\n return {\n description:\n description ?? `fixed(${fixedBytes}, ${serializer.description})`,\n fixedSize: fixedBytes,\n maxSize: fixedBytes,\n serialize: (value: T) => fixBytes(serializer.serialize(value), fixedBytes),\n deserialize: (buffer: Uint8Array, offset = 0) => {\n // Slice the buffer to the fixed size.\n buffer = buffer.slice(offset, offset + fixedBytes);\n // Ensure we have enough bytes.\n if (buffer.length < fixedBytes) {\n throw new NotEnoughBytesError(\n 'fixSerializer',\n fixedBytes,\n buffer.length\n );\n }\n // If the nested serializer is fixed-size, pad and truncate the buffer accordingly.\n if (serializer.fixedSize !== null) {\n buffer = fixBytes(buffer, serializer.fixedSize);\n }\n // Deserialize the value using the nested serializer.\n const [value] = serializer.deserialize(buffer, 0);\n return [value, offset + fixedBytes];\n },\n };\n}\n","export { base10 } from './base10.mjs';\nexport { base16 } from './base16.mjs';\nexport { base58 } from './base58.mjs';\nexport { base64 } from './base64.mjs';\nexport { baseX } from './baseX.mjs';\nexport { InvalidBaseStringError } from './errors.mjs';\nexport { padNullCharacters, removeNullCharacters } from './nullCharacters.mjs';\nexport { utf8 } from './utf8.mjs';\n//# sourceMappingURL=index.mjs.map\n","/** @category Errors */\nexport class InvalidBaseStringError extends Error {\n readonly name: string = 'InvalidBaseStringError';\n\n readonly cause?: Error;\n\n constructor(value: string, base: number, cause?: Error) {\n const message = `Expected a string of base ${base}, got [${value}].`;\n super(message);\n this.cause = cause;\n }\n}\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { InvalidBaseStringError } from './errors';\n\n/**\n * A string serializer that uses a custom alphabet.\n * This can be used to create serializers for base58, base64, etc.\n * @category Serializers\n */\nexport const baseX = (alphabet: string): Serializer<string> => {\n const base = alphabet.length;\n const baseBigInt = BigInt(base);\n return {\n description: `base${base}`,\n fixedSize: null,\n maxSize: null,\n serialize(value: string): Uint8Array {\n // Check if the value is valid.\n if (!value.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new InvalidBaseStringError(value, base);\n }\n if (value === '') return new Uint8Array();\n\n // Handle leading zeroes.\n const chars = [...value];\n let trailIndex = chars.findIndex((c) => c !== alphabet[0]);\n trailIndex = trailIndex === -1 ? chars.length : trailIndex;\n const leadingZeroes = Array(trailIndex).fill(0);\n if (trailIndex === chars.length) return Uint8Array.from(leadingZeroes);\n\n // From baseX to base10.\n const tailChars = chars.slice(trailIndex);\n let base10Number = 0n;\n let baseXPower = 1n;\n for (let i = tailChars.length - 1; i >= 0; i -= 1) {\n base10Number += baseXPower * BigInt(alphabet.indexOf(tailChars[i]));\n baseXPower *= baseBigInt;\n }\n\n // From base10 to bytes.\n const tailBytes = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n return Uint8Array.from(leadingZeroes.concat(tailBytes));\n },\n deserialize(buffer, offset = 0): [string, number] {\n if (buffer.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n const bytes = buffer.slice(offset);\n let trailIndex = bytes.findIndex((n) => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, buffer.length];\n\n // From bytes to base10.\n let base10Number = bytes\n .slice(trailIndex)\n .reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = [];\n while (base10Number > 0n) {\n tailChars.unshift(alphabet[Number(base10Number % baseBigInt)]);\n base10Number /= baseBigInt;\n }\n\n return [leadingZeroes + tailChars.join(''), buffer.length];\n },\n };\n};\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { baseX } from './baseX';\n\n/**\n * A string serializer that uses base58 encoding.\n * @category Serializers\n */\nexport const base58: Serializer<string> = baseX(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\n","/**\n * Removes null characters from a string.\n * @category Utils\n */\nexport const removeNullCharacters = (value: string) =>\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, '');\n\n/**\n * Pads a string with null characters at the end.\n * @category Utils\n */\nexport const padNullCharacters = (value: string, chars: number) =>\n value.padEnd(chars, '\\u0000');\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { removeNullCharacters } from './nullCharacters';\n\n/**\n * A string serializer that uses UTF-8 encoding\n * using the native `TextEncoder` API.\n * @category Serializers\n */\nexport const utf8: Serializer<string> = {\n description: 'utf8',\n fixedSize: null,\n maxSize: null,\n serialize(value: string) {\n return new TextEncoder().encode(value);\n },\n deserialize(buffer, offset = 0) {\n const value = new TextDecoder().decode(buffer.slice(offset));\n return [removeNullCharacters(value), buffer.length];\n },\n};\n","export { Endian } from './common.mjs';\nexport { NumberOutOfRangeError } from './errors.mjs';\nexport { f32 } from './f32.mjs';\nexport { f64 } from './f64.mjs';\nexport { i8 } from './i8.mjs';\nexport { i16 } from './i16.mjs';\nexport { i32 } from './i32.mjs';\nexport { i64 } from './i64.mjs';\nexport { i128 } from './i128.mjs';\nexport { u8 } from './u8.mjs';\nexport { u16 } from './u16.mjs';\nexport { u32 } from './u32.mjs';\nexport { u64 } from './u64.mjs';\nexport { u128 } from './u128.mjs';\nexport { shortU16 } from './shortU16.mjs';\n//# sourceMappingURL=index.mjs.map\n","import {\n BaseSerializerOptions,\n Serializer,\n} from '@metaplex-foundation/umi-serializers-core';\n\n/**\n * Defines a serializer for numbers and bigints.\n * @category Serializers\n */\nexport type NumberSerializer =\n | Serializer<number>\n | Serializer<number | bigint, bigint>;\n\n/**\n * Defines the options for u8 and i8 serializers.\n * @category Serializers\n */\nexport type SingleByteNumberSerializerOptions = BaseSerializerOptions;\n\n/**\n * Defines the options for number serializers that use more than one byte.\n * @category Serializers\n */\nexport type NumberSerializerOptions = BaseSerializerOptions & {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/**\n * Defines the endianness of a number serializer.\n * @category Serializers\n */\nexport enum Endian {\n Little = 'le',\n Big = 'be',\n}\n","/** @category Errors */\nexport class NumberOutOfRangeError extends RangeError {\n readonly name: string = 'NumberOutOfRangeError';\n\n constructor(\n serializer: string,\n min: number | bigint,\n max: number | bigint,\n actual: number | bigint\n ) {\n super(\n `Serializer [${serializer}] expected number to be between ${min} and ${max}, got ${actual}.`\n );\n }\n}\n","import {\n DeserializingEmptyBufferError,\n NotEnoughBytesError,\n Serializer,\n} from '@metaplex-foundation/umi-serializers-core';\nimport {\n Endian,\n NumberSerializer,\n NumberSerializerOptions,\n SingleByteNumberSerializerOptions,\n} from './common';\nimport { NumberOutOfRangeError } from './errors';\n\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => number;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): Serializer<number>;\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => bigint;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): Serializer<number | bigint, bigint>;\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => number | bigint;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): NumberSerializer {\n let littleEndian: boolean | undefined;\n let defaultDescription: string = input.name;\n\n if (input.size > 1) {\n littleEndian =\n !('endian' in input.options) || input.options.endian === Endian.Little;\n defaultDescription += littleEndian ? '(le)' : '(be)';\n }\n\n return {\n description: input.options.description ?? defaultDescription,\n fixedSize: input.size,\n maxSize: input.size,\n serialize(value: number | bigint): Uint8Array {\n if (input.range) {\n assertRange(input.name, input.range[0], input.range[1], value);\n }\n const buffer = new ArrayBuffer(input.size);\n input.set(new DataView(buffer), value, littleEndian);\n return new Uint8Array(buffer);\n },\n deserialize(bytes, offset = 0): [number | bigint, number] {\n const slice = bytes.slice(offset, offset + input.size);\n assertEnoughBytes('i8', slice, input.size);\n const view = toDataView(slice);\n return [input.get(view, littleEndian), offset + input.size];\n },\n } as NumberSerializer;\n}\n\n/**\n * Helper function to ensure that the array buffer is converted properly from a uint8array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n * @param {Uint8Array} array Uint8array that's being converted into an array buffer\n * @returns {ArrayBuffer} An array buffer that's necessary to construct a data view\n */\nexport const toArrayBuffer = (array: Uint8Array): ArrayBuffer =>\n array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset);\n\nexport const toDataView = (array: Uint8Array): DataView =>\n new DataView(toArrayBuffer(array));\n\nexport const assertRange = (\n serializer: string,\n min: number | bigint,\n max: number | bigint,\n value: number | bigint\n) => {\n if (value < min || value > max) {\n throw new NumberOutOfRangeError(serializer, min, max, value);\n }\n};\n\nexport const assertEnoughBytes = (\n serializer: string,\n bytes: Uint8Array,\n expected: number\n) => {\n if (bytes.length === 0) {\n throw new DeserializingEmptyBufferError(serializer);\n }\n if (bytes.length < expected) {\n throw new NotEnoughBytesError(serializer, expected, bytes.length);\n }\n};\n","import { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { NumberSerializerOptions } from './common';\nimport { numberFactory } from './utils';\n\nexport const u32 = (\n options: NumberSerializerOptions = {}\n): Serializer<number> =>\n numberFactory({\n name: 'u32',\n size: 4,\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, Number(value), le),\n get: (view, le) => view.getUint32(0, le),\n options,\n });\n","import { ExpectedFixedSizeSerializerError } from '@metaplex-foundation/umi-serializers-core';\nimport { ArrayLikeSerializerSize } from './arrayLikeSerializerSize';\nimport {\n InvalidArrayLikeRemainderSizeError,\n UnrecognizedArrayLikeSerializerSizeError,\n} from './errors';\nimport { sumSerializerSizes } from './sumSerializerSizes';\n\nexport function getResolvedSize(\n size: ArrayLikeSerializerSize,\n childrenSizes: (number | null)[],\n bytes: Uint8Array,\n offset: number\n): [number | bigint, number] {\n if (typeof size === 'number') {\n return [size, offset];\n }\n\n if (typeof size === 'object') {\n return size.deserialize(bytes, offset);\n }\n\n if (size === 'remainder') {\n const childrenSize = sumSerializerSizes(childrenSizes);\n if (childrenSize === null) {\n throw new ExpectedFixedSizeSerializerError(\n 'Serializers of \"remainder\" size must have fixed-size items.'\n );\n }\n const remainder = bytes.slice(offset).length;\n if (remainder % childrenSize !== 0) {\n throw new InvalidArrayLikeRemainderSizeError(remainder, childrenSize);\n }\n return [remainder / childrenSize, offset];\n }\n\n throw new UnrecognizedArrayLikeSerializerSizeError(size);\n}\n\nexport function getSizeDescription(\n size: ArrayLikeSerializerSize | string\n): string {\n return typeof size === 'object' ? size.description : `${size}`;\n}\n\nexport function getSizeFromChildren(\n size: ArrayLikeSerializerSize,\n childrenSizes: (number | null)[]\n): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n const childrenSize = sumSerializerSizes(childrenSizes);\n return childrenSize === null ? null : childrenSize * size;\n}\n\nexport function getSizePrefix(\n size: ArrayLikeSerializerSize,\n realSize: number\n): Uint8Array {\n return typeof size === 'object' ? size.serialize(realSize) : new Uint8Array();\n}\n","import {\n BaseSerializerOptions,\n DeserializingEmptyBufferError,\n NotEnoughBytesError,\n Serializer,\n fixSerializer,\n mergeBytes,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { utf8 } from '@metaplex-foundation/umi-serializers-encodings';\nimport {\n NumberSerializer,\n u32,\n} from '@metaplex-foundation/umi-serializers-numbers';\nimport { getSizeDescription } from './utils';\n\n/**\n * Defines the options for string serializers.\n * @category Serializers\n */\nexport type StringSerializerOptions = BaseSerializerOptions & {\n /**\n * The size of the string. It can be one of the following:\n * - a {@link NumberSerializer} that prefixes the string with its size.\n * - a fixed number of bytes.\n * - or `'variable'` to use the rest of the buffer.\n * @defaultValue `u32()`\n */\n size?: NumberSerializer | number | 'variable';\n /**\n * The string serializer to use for encoding and decoding the content.\n * @defaultValue `utf8`\n */\n encoding?: Serializer<string>;\n};\n\n/**\n * Creates a string serializer.\n *\n * @param options - A set of options for the serializer.\n * @category Serializers\n */\nexport function string(\n options: StringSerializerOptions = {}\n): Serializer<string> {\n const size = options.size ?? u32();\n const encoding = options.encoding ?? utf8;\n const description =\n options.description ??\n `string(${encoding.description}; ${getSizeDescription(size)})`;\n\n if (size === 'variable') {\n return { ...encoding, description };\n }\n\n if (typeof size === 'number') {\n return fixSerializer(encoding, size, description);\n }\n\n return {\n description,\n fixedSize: null,\n maxSize: null,\n serialize: (value: string) => {\n const contentBytes = encoding.serialize(value);\n const lengthBytes = size.serialize(contentBytes.length);\n return mergeBytes([lengthBytes, contentBytes]);\n },\n deserialize: (buffer: Uint8Array, offset = 0) => {\n if (buffer.slice(offset).length === 0) {\n throw new DeserializingEmptyBufferError('string');\n }\n const [lengthBigInt, lengthOffset] = size.deserialize(buffer, offset);\n const length = Number(lengthBigInt);\n offset = lengthOffset;\n const contentBuffer = buffer.slice(offset, offset + length);\n if (contentBuffer.length < length) {\n throw new NotEnoughBytesError('string', length, contentBuffer.length);\n }\n const [value, contentOffset] = encoding.deserialize(contentBuffer);\n offset += contentOffset;\n return [value, offset];\n },\n };\n}\n","import { base58, Serializer, string } from '@metaplex-foundation/umi-serializers';\n\nexport type Base58EncodedAddress<TAddress extends string = string> = TAddress & {\n readonly __base58EncodedAddress: unique symbol;\n};\n\nexport function assertIsBase58EncodedAddress(\n putativeBase58EncodedAddress: string\n): asserts putativeBase58EncodedAddress is Base58EncodedAddress<typeof putativeBase58EncodedAddress> {\n try {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeBase58EncodedAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeBase58EncodedAddress.length > 44\n ) {\n throw new Error('Expected input string to decode to a byte array of length 32.');\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58.serialize(putativeBase58EncodedAddress);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);\n }\n } catch (e) {\n throw new Error(`\\`${putativeBase58EncodedAddress}\\` is not a base-58 encoded address`, {\n cause: e,\n });\n }\n}\n\nexport function getBase58EncodedAddressCodec(\n config?: Readonly<{\n description: string;\n }>\n): Serializer<Base58EncodedAddress> {\n return string({\n description: config?.description ?? (__DEV__ ? 'A 32-byte account address' : ''),\n encoding: base58,\n size: 32,\n }) as unknown as Serializer<Base58EncodedAddress>;\n}\n\nexport function getBase58EncodedAddressComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","function assertIsSecureContext() {\n if (__BROWSER__ && !globalThis.isSecureContext) {\n // TODO: Coded error.\n throw new Error(\n 'Cryptographic operations are only allowed in secure browser contexts. Read more ' +\n 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts'\n );\n }\n}\n\nlet cachedEd25519Decision: PromiseLike<boolean> | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<boolean> {\n if (cachedEd25519Decision === undefined) {\n cachedEd25519Decision = new Promise(resolve => {\n subtle\n .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n .catch(() => {\n resolve((cachedEd25519Decision = false));\n })\n .then(() => {\n resolve((cachedEd25519Decision = true));\n });\n });\n }\n if (typeof cachedEd25519Decision === 'boolean') {\n return cachedEd25519Decision;\n } else {\n return await cachedEd25519Decision;\n }\n}\n\nexport async function assertKeyGenerationIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n // TODO: Coded error.\n throw new Error('No key generation implementation could be found');\n }\n if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n // TODO: Coded error.\n throw new Error('This runtime does not support the generation of Ed25519 keypairs');\n }\n}\n\nexport async function assertKeyExporterIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n // TODO: Coded error.\n throw new Error('No key export implementation could be found');\n }\n}\n\nexport async function assertSigningCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n // TODO: Coded error.\n throw new Error('No signing implementation could be found');\n }\n}\n\nexport async function assertVerificationCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n // TODO: Coded error.\n throw new Error('No signature verification implementation could be found');\n }\n}\n","import { assertKeyGenerationIsAvailable } from './guard';\n\nexport async function generateKeyPair(): Promise<CryptoKeyPair> {\n await assertKeyGenerationIsAvailable();\n const keyPair = await crypto.subtle.generateKey(\n /* algorithm */ 'Ed25519', // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20\n /* extractable */ false, // Prevents the bytes of the private key from being visible to JS.\n /* allowed uses */ ['sign', 'verify']\n );\n return keyPair as CryptoKeyPair;\n}\n","import { Base58EncodedAddress, getBase58EncodedAddressCodec } from './base58';\nimport { assertKeyExporterIsAvailable } from './guard';\n\nexport async function getBase58EncodedAddressFromPublicKey(publicKey: CryptoKey): Promise<Base58EncodedAddress> {\n await assertKeyExporterIsAvailable();\n if (publicKey.type !== 'public' || publicKey.algorithm.name !== 'Ed25519') {\n // TODO: Coded error.\n throw new Error('The `CryptoKey` must be an `Ed25519` public key');\n }\n const publicKeyBytes = await crypto.subtle.exportKey('raw', publicKey);\n const [base58EncodedAddress] = getBase58EncodedAddressCodec().deserialize(new Uint8Array(publicKeyBytes));\n return base58EncodedAddress;\n}\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","type IntegerOverflowHandler = (keyPath: (number | string)[], value: bigint) => void;\ntype Patched<T> = T extends object ? { [Property in keyof T]: Patched<T[Property]> } : T extends bigint ? number : T;\n// FIXME(https://github.com/microsoft/TypeScript/issues/33014)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TypescriptBug33014 = any;\n\nfunction visitNode<T>(value: T, keyPath: (number | string)[], onIntegerOverflow?: IntegerOverflowHandler): Patched<T> {\n if (Array.isArray(value)) {\n return value.map((element, ii) =>\n visitNode(element, [...keyPath, ii], onIntegerOverflow)\n ) as TypescriptBug33014;\n } else if (typeof value === 'object' && value !== null) {\n const out = {} as TypescriptBug33014;\n for (const propName in value) {\n if (Object.prototype.hasOwnProperty.call(value, propName)) {\n out[propName] = visitNode(value[propName], [...keyPath, propName], onIntegerOverflow);\n }\n }\n return out as TypescriptBug33014;\n } else if (typeof value === 'bigint') {\n // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // downcasting `bigints` to `numbers`.\n if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) {\n onIntegerOverflow(keyPath, value);\n }\n return Number(value) as TypescriptBug33014;\n } else {\n return value as TypescriptBug33014;\n }\n}\n\nexport function patchParamsForSolanaLabsRpc<T>(params: T, onIntegerOverflow?: IntegerOverflowHandler): Patched<T> {\n return visitNode(params, [], onIntegerOverflow);\n}\n","import { KeyPath } from './response-patcher';\nimport { KEYPATH_WILDCARD } from './response-patcher-types';\nimport { createSolanaRpcApi } from './rpc-methods';\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nexport const ALLOWED_NUMERIC_KEYPATHS: Partial<\n Record<keyof ReturnType<typeof createSolanaRpcApi>, readonly KeyPath[]>\n> = {\n getAccountInfo: [\n // parsed AddressTableLookup account\n ['value', 'data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['value', 'data', 'parsed', 'info', 'slashPenalty'],\n ['value', 'data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 token account\n ['value', 'data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['value', 'data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['value', 'data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['value', 'data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n [\n 'value',\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'olderTransferFee',\n 'transferFeeBasisPoints',\n ],\n [\n 'value',\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'newerTransferFee',\n 'transferFeeBasisPoints',\n ],\n ['value', 'data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'preUpdateAverageRate'],\n ['value', 'data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n // parsed Token/Token22 mint account\n ['value', 'data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['value', 'data', 'parsed', 'info', 'numRequiredSigners'],\n ['value', 'data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['value', 'data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['value', 'data', 'parsed', 'info', 'exemptionThreshold'],\n ['value', 'data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['value', 'data', 'parsed', 'info', 'commission'],\n ['value', 'data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n ],\n getBlockTime: [[]],\n getInflationReward: [[KEYPATH_WILDCARD, 'commission']],\n getRecentPerformanceSamples: [[KEYPATH_WILDCARD, 'samplePeriodSecs']],\n getTokenLargestAccounts: [\n ['value', KEYPATH_WILDCARD, 'decimals'],\n ['value', KEYPATH_WILDCARD, 'uiAmount'],\n ],\n getTransaction: [\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'index'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['transaction', 'message', 'addressTableLookups', KEYPATH_WILDCARD, 'writableIndexes', KEYPATH_WILDCARD],\n ['transaction', 'message', 'addressTableLookups', KEYPATH_WILDCARD, 'readonlyIndexes', KEYPATH_WILDCARD],\n ['transaction', 'message', 'instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['transaction', 'message', 'instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['transaction', 'message', 'header', 'numReadonlySignedAccounts'],\n ['transaction', 'message', 'header', 'numReadonlyUnsignedAccounts'],\n ['transaction', 'message', 'header', 'numRequiredSignatures'],\n ],\n getVoteAccounts: [\n ['current', KEYPATH_WILDCARD, 'commission'],\n ['delinquent', KEYPATH_WILDCARD, 'commission'],\n ],\n};\n","import { ALLOWED_NUMERIC_KEYPATHS } from './response-patcher-allowed-numeric-values';\nimport { KEYPATH_WILDCARD, KeyPathWildcard } from './response-patcher-types';\nimport { createSolanaRpcApi } from './rpc-methods';\n\nexport type KeyPath = ReadonlyArray<KeyPathWildcard | number | string | KeyPath>;\n// FIXME(https://github.com/microsoft/TypeScript/issues/33014)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TypescriptBug33014 = any;\n\nfunction getNextAllowedKeypaths(keyPaths: readonly KeyPath[], property: number | string) {\n return keyPaths\n .filter(keyPath => (keyPath[0] === KEYPATH_WILDCARD && typeof property === 'number') || keyPath[0] === property)\n .map(keyPath => keyPath.slice(1));\n}\n\nfunction visitNode<T>(value: unknown, allowedKeypaths: readonly KeyPath[]): T {\n if (Array.isArray(value)) {\n return value.map((element, ii) => {\n const nextAllowedKeypaths = getNextAllowedKeypaths(allowedKeypaths, ii);\n return visitNode(element, nextAllowedKeypaths);\n }) as TypescriptBug33014;\n } else if (typeof value === 'object' && value !== null) {\n const out = {} as TypescriptBug33014;\n for (const [propName, innerValue] of Object.entries(value)) {\n const nextAllowedKeypaths = getNextAllowedKeypaths(allowedKeypaths, propName);\n out[propName] = visitNode(innerValue, nextAllowedKeypaths);\n }\n return out as TypescriptBug33014;\n } else if (\n typeof value === 'number' &&\n // The presence of an allowed keypath on the route to this value implies it's allowlisted;\n // Upcast the value to `bigint` unless an allowed keypath is present.\n allowedKeypaths.length === 0 &&\n // Only try to upcast an Integer to `bigint`\n Number.isInteger(value)\n ) {\n // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // upcasting `numbers` to `bigints`.\n return BigInt(value) as TypescriptBug33014;\n } else {\n return value as TypescriptBug33014;\n }\n}\n\nexport function patchResponseForSolanaLabsRpc<T>(\n rawResponse: unknown,\n methodName?: keyof ReturnType<typeof createSolanaRpcApi>\n): T {\n const allowedKeypaths = methodName ? ALLOWED_NUMERIC_KEYPATHS[methodName] : undefined;\n return visitNode(rawResponse, allowedKeypaths ?? []);\n}\n","import { IRpcApi, RpcRequest } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { patchParamsForSolanaLabsRpc } from '../params-patcher';\nimport { patchResponseForSolanaLabsRpc } from '../response-patcher';\nimport { GetAccountInfoApi } from './getAccountInfo';\nimport { GetBalanceApi } from './getBalance';\nimport { GetBlockHeightApi } from './getBlockHeight';\nimport { GetBlockProductionApi } from './getBlockProduction';\nimport { GetBlocksApi } from './getBlocks';\nimport { GetBlockTimeApi } from './getBlockTime';\nimport { GetEpochInfoApi } from './getEpochInfo';\nimport { GetEpochScheduleApi } from './getEpochSchedule';\nimport { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';\nimport { GetInflationRewardApi } from './getInflationReward';\nimport { GetLatestBlockhashApi } from './getLatestBlockhash';\nimport { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';\nimport { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';\nimport { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';\nimport { GetSignaturesForAddressApi } from './getSignaturesForAddress';\nimport { GetSlotApi } from './getSlot';\nimport { GetSlotLeadersApi } from './getSlotLeaders';\nimport { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';\nimport { GetSupplyApi } from './getSupply';\nimport { GetTokenLargestAccountsApi } from './getTokenLargestAccounts';\nimport { GetTransactionApi } from './getTransaction';\nimport { GetTransactionCountApi } from './getTransactionCount';\nimport { GetVoteAccountsApi } from './getVoteAccounts';\nimport { IsBlockhashValidApi } from './isBlockhashValid';\nimport { MinimumLedgerSlotApi } from './minimumLedgerSlot';\n\ntype Config = Readonly<{\n onIntegerOverflow?: (methodName: string, keyPath: (number | string)[], value: bigint) => void;\n}>;\n\nexport type SolanaRpcMethods = GetAccountInfoApi &\n GetBalanceApi &\n GetBlockHeightApi &\n GetBlockProductionApi &\n GetBlocksApi &\n GetBlockTimeApi &\n GetEpochInfoApi &\n GetEpochScheduleApi &\n GetFirstAvailableBlockApi &\n GetInflationRewardApi &\n GetLatestBlockhashApi &\n GetMaxRetransmitSlotApi &\n GetMaxShredInsertSlotApi &\n GetRecentPerformanceSamplesApi &\n GetSignaturesForAddressApi &\n GetSlotApi &\n GetSlotLeadersApi &\n GetStakeMinimumDelegationApi &\n GetSupplyApi &\n GetTokenLargestAccountsApi &\n GetTransactionApi &\n GetTransactionCountApi &\n GetVoteAccountsApi &\n IsBlockhashValidApi &\n MinimumLedgerSlotApi;\n\nexport function createSolanaRpcApi(config?: Config): IRpcApi<SolanaRpcMethods> {\n return new Proxy({} as IRpcApi<SolanaRpcMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TMethodName extends keyof IRpcApi<SolanaRpcMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<IRpcApi<SolanaRpcMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof SolanaRpcMethods;\n return function (\n ...rawParams: Parameters<\n SolanaRpcMethods[TMethodName] extends CallableFunction ? SolanaRpcMethods[TMethodName] : never\n >\n ): RpcRequest<ReturnType<SolanaRpcMethods[TMethodName]>> {\n const handleIntegerOverflow = config?.onIntegerOverflow;\n const params = patchParamsForSolanaLabsRpc(\n rawParams,\n handleIntegerOverflow\n ? (keyPath, value) => handleIntegerOverflow(methodName, keyPath, value)\n : undefined\n );\n return {\n methodName,\n params,\n responseProcessor: rawResponse => patchResponseForSolanaLabsRpc(rawResponse, methodName),\n };\n };\n },\n });\n}\n","// Keep in sync with https://github.com/solana-labs/solana/blob/master/rpc-client-api/src/custom_error.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJsonRpcErrorCode = {\n JSON_RPC_INVALID_PARAMS: -32602,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n} as const;\ntype SolanaJsonRpcErrorCodeEnum = (typeof SolanaJsonRpcErrorCode)[keyof typeof SolanaJsonRpcErrorCode];\n\ntype SolanaJsonRpcErrorDetails = Readonly<{\n code: number;\n data?: unknown;\n message: string;\n}>;\n\nexport class SolanaJsonRpcError extends Error {\n readonly code: SolanaJsonRpcErrorCodeEnum;\n readonly data: unknown;\n constructor(details: SolanaJsonRpcErrorDetails) {\n super(`JSON-RPC 2.0 error (${details.code}): ${details.message}`);\n Error.captureStackTrace(this, this.constructor);\n this.code = details.code as SolanaJsonRpcErrorCodeEnum;\n this.data = details.data;\n }\n get name() {\n return 'SolanaJsonRpcError';\n }\n}\n","let _nextMessageId = 0;\nexport function getNextMessageId() {\n const id = _nextMessageId;\n _nextMessageId = (_nextMessageId + 1) % Number.MAX_SAFE_INTEGER;\n return id;\n}\n","import { getNextMessageId } from './json-rpc-message-id';\n\nexport function createJsonRpcMessage<TParams>(method: string, params: TParams) {\n return {\n id: getNextMessageId(),\n jsonrpc: '2.0',\n method,\n params,\n };\n}\n","import { SolanaJsonRpcError } from './json-rpc-errors';\nimport { createJsonRpcMessage } from './json-rpc-message';\nimport { PendingRpcRequest, Rpc, RpcConfig, RpcRequest, SendOptions } from './json-rpc-types';\n\ninterface IHasIdentifier {\n readonly id: number;\n}\ntype JsonRpcResponse<TResponse> = IHasIdentifier &\n Readonly<{ result: TResponse } | { error: { code: number; message: string; data?: unknown } }>;\n\nfunction createPendingRpcRequest<TRpcMethods, TResponse>(\n rpcConfig: RpcConfig<TRpcMethods>,\n pendingRequest: RpcRequest<TResponse>\n): PendingRpcRequest<TResponse> {\n return {\n async send(options?: SendOptions): Promise<TResponse> {\n const { methodName, params, responseProcessor } = pendingRequest;\n const payload = createJsonRpcMessage(methodName, params);\n const response = await rpcConfig.transport<JsonRpcResponse<unknown>>({\n payload,\n signal: options?.abortSignal,\n });\n if ('error' in response) {\n throw new SolanaJsonRpcError(response.error);\n } else {\n return (responseProcessor ? responseProcessor(response.result) : response.result) as TResponse;\n }\n },\n };\n}\n\nfunction makeProxy<TRpcMethods>(rpcConfig: RpcConfig<TRpcMethods>): Rpc<TRpcMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const methodName = p.toString();\n const createRpcRequest = Reflect.get(target, methodName, receiver);\n const newRequest = createRpcRequest\n ? createRpcRequest(...rawParams)\n : { methodName, params: rawParams };\n return createPendingRpcRequest(rpcConfig, newRequest);\n };\n },\n }) as Rpc<TRpcMethods>;\n}\n\nexport function createJsonRpc<TRpcMethods>(rpcConfig: RpcConfig<TRpcMethods>): Rpc<TRpcMethods> {\n return makeProxy(rpcConfig);\n}\n","export default globalThis.fetch;\n","type SolanaHttpErrorDetails = Readonly<{\n statusCode: number;\n message: string;\n}>;\n\nexport class SolanaHttpError extends Error {\n readonly statusCode: number;\n constructor(details: SolanaHttpErrorDetails) {\n super(`HTTP error (${details.statusCode}): ${details.message}`);\n Error.captureStackTrace(this, this.constructor);\n this.statusCode = details.statusCode;\n }\n get name() {\n return 'SolanaHttpError';\n }\n}\n","export type AllowedHttpRequestHeaders = Readonly<\n { [headerName: string]: string } & {\n // Someone can still sneak a forbidden header past Typescript if they do something like\n // fOo-BaR, but at that point they deserve the runtime failure.\n [K in DisallowedHeaders | ForbiddenHeaders as\n | K // `Foo-Bar`\n | Capitalize<Lowercase<K>> // `Foo-bar`\n | Lowercase<K> // `foo-bar`\n | Uncapitalize<K> // `foo-Bar`\n // `FOO-BAR`\n | Uppercase<K>]?: never;\n }\n>;\n// These are headers that we simply don't allow the developer to override because they're\n// fundamental to the operation of the JSON-RPC transport.\ntype DisallowedHeaders = 'Accept' | 'Content-Length' | 'Content-Type' | 'Solana-Client';\ntype ForbiddenHeaders =\n | 'Accept-Charset'\n | 'Accept-Encoding'\n | 'Access-Control-Request-Headers'\n | 'Access-Control-Request-Method'\n | 'Connection'\n | 'Content-Length'\n | 'Cookie'\n | 'Date'\n | 'DNT'\n | 'Expect'\n | 'Host'\n | 'Keep-Alive'\n | 'Origin'\n | 'Permissions-Policy'\n // No currently available Typescript technique allows you to match on a prefix.\n // | 'Proxy-'\n // | 'Sec-'\n | 'Referer'\n | 'TE'\n | 'Trailer'\n | 'Transfer-Encoding'\n | 'Upgrade'\n | 'Via';\n\n// These are headers which are fundamental to the JSON-RPC transport, and must not be modified.\nconst DISALLOWED_HEADERS: Record<string, boolean> = {\n accept: true,\n 'content-length': true,\n 'content-type': true,\n};\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS: Record<string, boolean> = {\n 'accept-charset': true,\n 'accept-encoding': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n 'permissions-policy': true,\n // No currently available Typescript technique allows you to match on a prefix.\n // 'proxy-':true,\n // 'sec-':true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n via: true,\n};\n\nexport function assertIsAllowedHttpRequestHeaders(\n headers: Record<string, string>\n): asserts headers is AllowedHttpRequestHeaders {\n const badHeaders = Object.keys(headers).filter(headerName => {\n const lowercaseHeaderName = headerName.toLowerCase();\n return (\n DISALLOWED_HEADERS[headerName.toLowerCase()] === true ||\n FORBIDDEN_HEADERS[headerName.toLowerCase()] === true ||\n lowercaseHeaderName.startsWith('proxy-') ||\n lowercaseHeaderName.startsWith('sec-')\n );\n });\n if (badHeaders.length > 0) {\n throw new Error(\n `${badHeaders.length > 1 ? 'These headers are' : 'This header is'} forbidden: ` +\n `\\`${badHeaders.join('`, `')}\\`. Learn more at ` +\n 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.'\n );\n }\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers, such as those defined\n * in the `DisallowedHeaders` type.\n */\nexport function normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n","import type { Agent as NodeHttpAgent } from 'node:http';\nimport type { Agent as NodeHttpsAgent } from 'node:https';\n\nimport fetchImpl from 'fetch-impl';\n\nimport { IRpcTransport } from '../transport-types';\nimport { SolanaHttpError } from './http-transport-errors';\nimport {\n AllowedHttpRequestHeaders,\n assertIsAllowedHttpRequestHeaders,\n normalizeHeaders,\n} from './http-transport-headers';\n\ntype Config = Readonly<{\n headers?: AllowedHttpRequestHeaders;\n httpAgentNodeOnly?: NodeHttpAgent | NodeHttpsAgent | ((parsedUrl: URL) => NodeHttpAgent | NodeHttpsAgent);\n url: string;\n}>;\n\nexport function createHttpTransport({ httpAgentNodeOnly, headers, url }: Config): IRpcTransport {\n if (__DEV__ && headers) {\n assertIsAllowedHttpRequestHeaders(headers);\n }\n const agent = __NODEJS__ ? httpAgentNodeOnly : undefined;\n if (__DEV__ && httpAgentNodeOnly != null) {\n console.warn(\n 'createHttpTransport(): The `httpAgentNodeOnly` config you supplied has been ' +\n 'ignored; HTTP agents are only usable in Node environments.'\n );\n }\n const customHeaders = headers && normalizeHeaders(headers);\n return async function makeHttpRequest<TResponse>({\n payload,\n signal,\n }: Parameters<IRpcTransport>[0]): Promise<TResponse> {\n const body = JSON.stringify(payload);\n const requestInfo = {\n agent,\n body,\n headers: {\n ...customHeaders,\n // Keep these headers lowercase so they will override any user-supplied headers above.\n accept: 'application/json',\n 'content-length': body.length.toString(),\n 'content-type': 'application/json; charset=utf-8',\n },\n method: 'POST',\n signal,\n };\n const response = await fetchImpl(url, requestInfo);\n if (!response.ok) {\n throw new SolanaHttpError({\n message: response.statusText,\n statusCode: response.status,\n });\n }\n return (await response.json()) as TResponse;\n };\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../build-scripts/env-shim.ts","../../../node_modules/.pnpm/fast-stable-stringify@1.0.0/node_modules/fast-stable-stringify/index.js","../src/index.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/bytes.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/fixSerializer.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.2/node_modules/@metaplex-foundation/umi-serializers-core/src/mapSerializer.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/baseX.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/base58.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/nullCharacters.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.2/node_modules/@metaplex-foundation/umi-serializers-encodings/src/utf8.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/index.mjs","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/common.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/utils.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/u8.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/u32.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.2/node_modules/@metaplex-foundation/umi-serializers-numbers/src/shortU16.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/errors.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/sumSerializerSizes.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/utils.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/array.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/bytes.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/string.ts","../../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.5/node_modules/@metaplex-foundation/umi-serializers/src/struct.ts","../../assertions/src/subtle-crypto.ts","../../addresses/src/base58.ts","../../addresses/src/program-derived-address.ts","../../addresses/src/vendor/noble/ed25519.ts","../../addresses/src/curve.ts","../../addresses/src/public-key.ts","../../instructions/src/roles.ts","../../keys/src/key-pair.ts","../../keys/src/signatures.ts","../../transactions/dist/index.browser.js","../src/rpc.ts","../../rpc-core/src/params-patcher.ts","../../rpc-core/src/response-patcher-allowed-numeric-values.ts","../../rpc-core/src/response-patcher.ts","../../rpc-core/src/rpc-methods/index.ts","../../rpc-transport/src/json-rpc-errors.ts","../../rpc-transport/src/json-rpc-message-id.ts","../../rpc-transport/src/json-rpc-message.ts","../../rpc-transport/src/json-rpc.ts","../../fetch-impl/src/index.browser.ts","../../rpc-transport/src/transports/http/http-transport-errors.ts","../../rpc-transport/src/transports/http/http-transport-headers.ts","../../rpc-transport/src/transports/http/http-transport.ts","../src/rpc-default-config.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":["mergeBytes","bytesArr","totalLength","reduce","total","arr","length","result","Uint8Array","offset","forEach","set","padBytes","bytes","paddedBytes","fill","fixBytes","slice","DeserializingEmptyBufferError","Error","constructor","serializer","name","NotEnoughBytesError","expected","actual","ExpectedFixedSizeSerializerError","message","fixSerializer","fixedBytes","description","fixedSize","maxSize","serialize","value","deserialize","buffer","mapSerializer","unmap","map","InvalidBaseStringError","base","cause","baseX","alphabet","baseBigInt","BigInt","match","RegExp","chars","trailIndex","findIndex","c","leadingZeroes","Array","from","tailChars","base10Number","baseXPower","i","indexOf","tailBytes","unshift","Number","concat","n","repeat","sum","byte","join","base58","removeNullCharacters","replace","utf8","TextEncoder","encode","TextDecoder","decode","Endian","NumberOutOfRangeError","RangeError","min","max","numberFactory","input","littleEndian","defaultDescription","size","options","endian","Little","range","assertRange","ArrayBuffer","DataView","assertEnoughBytes","view","toDataView","get","toArrayBuffer","array","byteOffset","byteLength","u8","setUint8","getUint8","u32","le","setUint32","getUint32","shortU16","ii","alignedValue","nextSevenBits","byteCount","byteIndex","currentByte","InvalidNumberOfItemsError","InvalidArrayLikeRemainderSizeError","remainderSize","itemSize","UnrecognizedArrayLikeSerializerSizeError","JSON","stringify","sumSerializerSizes","sizes","all","getResolvedSize","childrenSizes","childrenSize","remainder","getSizeDescription","getSizeFromChildren","getSizePrefix","realSize","item","v","resolvedSize","newOffset","values","push","byteSerializer","contentBytes","lengthBytes","lengthBigInt","lengthOffset","contentBuffer","contentOffset","string","encoding","struct","fields","fieldDescriptions","String","field","fieldBytes","key","__DEV__","e","AccountRole","AccountRole2","IS_WRITABLE_BITMASK","isSignerRole","isWritableRole","mergeRoles","visitNode","index_browser_default","fastStableStringify","normalizeHeaders"],"mappings":"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","sourcesContent":["// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV`\nexport const __DEV__ = /* @__PURE__ */ (() => (process as any)['en' + 'v'].NODE_ENV === 'development')();\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","export * from '@metaplex-foundation/umi-serializers-core';\nexport * from '@metaplex-foundation/umi-serializers-encodings';\nexport * from '@metaplex-foundation/umi-serializers-numbers';\nexport { array } from './array.mjs';\nexport { bitArray } from './bitArray.mjs';\nexport { bool } from './bool.mjs';\nexport { bytes } from './bytes.mjs';\nexport { dataEnum } from './dataEnum.mjs';\nexport { EnumDiscriminatorOutOfRangeError, InvalidArrayLikeRemainderSizeError, InvalidDataEnumVariantError, InvalidNumberOfItemsError, InvalidScalarEnumVariantError, UnrecognizedArrayLikeSerializerSizeError } from './errors.mjs';\nexport { map } from './map.mjs';\nexport { nullable } from './nullable.mjs';\nexport { option } from './option.mjs';\nexport { publicKey } from './publicKey.mjs';\nexport { scalarEnum } from './scalarEnum.mjs';\nexport { set } from './set.mjs';\nexport { string } from './string.mjs';\nexport { struct } from './struct.mjs';\nexport { tuple } from './tuple.mjs';\nexport { unit } from './unit.mjs';\nexport { maxSerializerSizes } from './maxSerializerSizes.mjs';\nexport { sumSerializerSizes } from './sumSerializerSizes.mjs';\n//# sourceMappingURL=index.mjs.map\n","export { fixBytes, mergeBytes, padBytes } from './bytes.mjs';\nexport { DeserializingEmptyBufferError, ExpectedFixedSizeSerializerError, NotEnoughBytesError } from './errors.mjs';\nexport { fixSerializer } from './fixSerializer.mjs';\nexport { mapSerializer } from './mapSerializer.mjs';\nexport { reverseSerializer } from './reverseSerializer.mjs';\n//# sourceMappingURL=index.mjs.map\n","/**\n * Concatenates an array of `Uint8Array`s into a single `Uint8Array`.\n * @category Utils\n */\nexport const mergeBytes = (bytesArr: Uint8Array[]): Uint8Array => {\n const totalLength = bytesArr.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n bytesArr.forEach((arr) => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\n\n/**\n * Pads a `Uint8Array` with zeroes to the specified length.\n * If the array is longer than the specified length, it is returned as-is.\n * @category Utils\n */\nexport const padBytes = (bytes: Uint8Array, length: number): Uint8Array => {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\n\n/**\n * Fixes a `Uint8Array` to the specified length.\n * If the array is longer than the specified length, it is truncated.\n * If the array is shorter than the specified length, it is padded with zeroes.\n * @category Utils\n */\nexport const fixBytes = (bytes: Uint8Array, length: number): Uint8Array =>\n padBytes(bytes.slice(0, length), length);\n","/** @category Errors */\nexport class DeserializingEmptyBufferError extends Error {\n readonly name: string = 'DeserializingEmptyBufferError';\n\n constructor(serializer: string) {\n super(`Serializer [${serializer}] cannot deserialize empty buffers.`);\n }\n}\n\n/** @category Errors */\nexport class NotEnoughBytesError extends Error {\n readonly name: string = 'NotEnoughBytesError';\n\n constructor(\n serializer: string,\n expected: bigint | number,\n actual: bigint | number\n ) {\n super(\n `Serializer [${serializer}] expected ${expected} bytes, got ${actual}.`\n );\n }\n}\n\n/** @category Errors */\nexport class ExpectedFixedSizeSerializerError extends Error {\n readonly name: string = 'ExpectedFixedSizeSerializerError';\n\n constructor(message?: string) {\n message ??= 'Expected a fixed-size serializer, got a variable-size one.';\n super(message);\n }\n}\n","import { fixBytes } from './bytes';\nimport { Serializer } from './common';\nimport { NotEnoughBytesError } from './errors';\n\n/**\n * Creates a fixed-size serializer from a given serializer.\n *\n * @param serializer - The serializer to wrap into a fixed-size serializer.\n * @param fixedBytes - The fixed number of bytes to read.\n * @param description - A custom description for the serializer.\n *\n * @category Serializers\n */\nexport function fixSerializer<T, U extends T = T>(\n serializer: Serializer<T, U>,\n fixedBytes: number,\n description?: string\n): Serializer<T, U> {\n return {\n description:\n description ?? `fixed(${fixedBytes}, ${serializer.description})`,\n fixedSize: fixedBytes,\n maxSize: fixedBytes,\n serialize: (value: T) => fixBytes(serializer.serialize(value), fixedBytes),\n deserialize: (buffer: Uint8Array, offset = 0) => {\n // Slice the buffer to the fixed size.\n buffer = buffer.slice(offset, offset + fixedBytes);\n // Ensure we have enough bytes.\n if (buffer.length < fixedBytes) {\n throw new NotEnoughBytesError(\n 'fixSerializer',\n fixedBytes,\n buffer.length\n );\n }\n // If the nested serializer is fixed-size, pad and truncate the buffer accordingly.\n if (serializer.fixedSize !== null) {\n buffer = fixBytes(buffer, serializer.fixedSize);\n }\n // Deserialize the value using the nested serializer.\n const [value] = serializer.deserialize(buffer, 0);\n return [value, offset + fixedBytes];\n },\n };\n}\n","import { Serializer } from './common';\n\n/**\n * Converts a serializer A to a serializer B by mapping their values.\n * @category Serializers\n */\nexport function mapSerializer<NewFrom, OldFrom, To extends NewFrom & OldFrom>(\n serializer: Serializer<OldFrom, To>,\n unmap: (value: NewFrom) => OldFrom\n): Serializer<NewFrom, To>;\nexport function mapSerializer<\n NewFrom,\n OldFrom,\n NewTo extends NewFrom = NewFrom,\n OldTo extends OldFrom = OldFrom\n>(\n serializer: Serializer<OldFrom, OldTo>,\n unmap: (value: NewFrom) => OldFrom,\n map: (value: OldTo, buffer: Uint8Array, offset: number) => NewTo\n): Serializer<NewFrom, NewTo>;\nexport function mapSerializer<\n NewFrom,\n OldFrom,\n NewTo extends NewFrom = NewFrom,\n OldTo extends OldFrom = OldFrom\n>(\n serializer: Serializer<OldFrom, OldTo>,\n unmap: (value: NewFrom) => OldFrom,\n map?: (value: OldTo, buffer: Uint8Array, offset: number) => NewTo\n): Serializer<NewFrom, NewTo> {\n return {\n description: serializer.description,\n fixedSize: serializer.fixedSize,\n maxSize: serializer.maxSize,\n serialize: (value: NewFrom) => serializer.serialize(unmap(value)),\n deserialize: (buffer: Uint8Array, offset = 0) => {\n const [value, length] = serializer.deserialize(buffer, offset);\n return map\n ? [map(value, buffer, offset), length]\n : [value as any, length];\n },\n };\n}\n","export { base10 } from './base10.mjs';\nexport { base16 } from './base16.mjs';\nexport { base58 } from './base58.mjs';\nexport { base64 } from './base64.mjs';\nexport { baseX } from './baseX.mjs';\nexport { InvalidBaseStringError } from './errors.mjs';\nexport { padNullCharacters, removeNullCharacters } from './nullCharacters.mjs';\nexport { utf8 } from './utf8.mjs';\n//# sourceMappingURL=index.mjs.map\n","/** @category Errors */\nexport class InvalidBaseStringError extends Error {\n readonly name: string = 'InvalidBaseStringError';\n\n readonly cause?: Error;\n\n constructor(value: string, base: number, cause?: Error) {\n const message = `Expected a string of base ${base}, got [${value}].`;\n super(message);\n this.cause = cause;\n }\n}\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { InvalidBaseStringError } from './errors';\n\n/**\n * A string serializer that uses a custom alphabet.\n * This can be used to create serializers for base58, base64, etc.\n * @category Serializers\n */\nexport const baseX = (alphabet: string): Serializer<string> => {\n const base = alphabet.length;\n const baseBigInt = BigInt(base);\n return {\n description: `base${base}`,\n fixedSize: null,\n maxSize: null,\n serialize(value: string): Uint8Array {\n // Check if the value is valid.\n if (!value.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new InvalidBaseStringError(value, base);\n }\n if (value === '') return new Uint8Array();\n\n // Handle leading zeroes.\n const chars = [...value];\n let trailIndex = chars.findIndex((c) => c !== alphabet[0]);\n trailIndex = trailIndex === -1 ? chars.length : trailIndex;\n const leadingZeroes = Array(trailIndex).fill(0);\n if (trailIndex === chars.length) return Uint8Array.from(leadingZeroes);\n\n // From baseX to base10.\n const tailChars = chars.slice(trailIndex);\n let base10Number = 0n;\n let baseXPower = 1n;\n for (let i = tailChars.length - 1; i >= 0; i -= 1) {\n base10Number += baseXPower * BigInt(alphabet.indexOf(tailChars[i]));\n baseXPower *= baseBigInt;\n }\n\n // From base10 to bytes.\n const tailBytes = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n return Uint8Array.from(leadingZeroes.concat(tailBytes));\n },\n deserialize(buffer, offset = 0): [string, number] {\n if (buffer.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n const bytes = buffer.slice(offset);\n let trailIndex = bytes.findIndex((n) => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, buffer.length];\n\n // From bytes to base10.\n let base10Number = bytes\n .slice(trailIndex)\n .reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = [];\n while (base10Number > 0n) {\n tailChars.unshift(alphabet[Number(base10Number % baseBigInt)]);\n base10Number /= baseBigInt;\n }\n\n return [leadingZeroes + tailChars.join(''), buffer.length];\n },\n };\n};\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { baseX } from './baseX';\n\n/**\n * A string serializer that uses base58 encoding.\n * @category Serializers\n */\nexport const base58: Serializer<string> = baseX(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\n","/**\n * Removes null characters from a string.\n * @category Utils\n */\nexport const removeNullCharacters = (value: string) =>\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, '');\n\n/**\n * Pads a string with null characters at the end.\n * @category Utils\n */\nexport const padNullCharacters = (value: string, chars: number) =>\n value.padEnd(chars, '\\u0000');\n","import type { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { removeNullCharacters } from './nullCharacters';\n\n/**\n * A string serializer that uses UTF-8 encoding\n * using the native `TextEncoder` API.\n * @category Serializers\n */\nexport const utf8: Serializer<string> = {\n description: 'utf8',\n fixedSize: null,\n maxSize: null,\n serialize(value: string) {\n return new TextEncoder().encode(value);\n },\n deserialize(buffer, offset = 0) {\n const value = new TextDecoder().decode(buffer.slice(offset));\n return [removeNullCharacters(value), buffer.length];\n },\n};\n","export { Endian } from './common.mjs';\nexport { NumberOutOfRangeError } from './errors.mjs';\nexport { f32 } from './f32.mjs';\nexport { f64 } from './f64.mjs';\nexport { i8 } from './i8.mjs';\nexport { i16 } from './i16.mjs';\nexport { i32 } from './i32.mjs';\nexport { i64 } from './i64.mjs';\nexport { i128 } from './i128.mjs';\nexport { u8 } from './u8.mjs';\nexport { u16 } from './u16.mjs';\nexport { u32 } from './u32.mjs';\nexport { u64 } from './u64.mjs';\nexport { u128 } from './u128.mjs';\nexport { shortU16 } from './shortU16.mjs';\n//# sourceMappingURL=index.mjs.map\n","import {\n BaseSerializerOptions,\n Serializer,\n} from '@metaplex-foundation/umi-serializers-core';\n\n/**\n * Defines a serializer for numbers and bigints.\n * @category Serializers\n */\nexport type NumberSerializer =\n | Serializer<number>\n | Serializer<number | bigint, bigint>;\n\n/**\n * Defines the options for u8 and i8 serializers.\n * @category Serializers\n */\nexport type SingleByteNumberSerializerOptions = BaseSerializerOptions;\n\n/**\n * Defines the options for number serializers that use more than one byte.\n * @category Serializers\n */\nexport type NumberSerializerOptions = BaseSerializerOptions & {\n /**\n * Whether the serializer should use little-endian or big-endian encoding.\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/**\n * Defines the endianness of a number serializer.\n * @category Serializers\n */\nexport enum Endian {\n Little = 'le',\n Big = 'be',\n}\n","/** @category Errors */\nexport class NumberOutOfRangeError extends RangeError {\n readonly name: string = 'NumberOutOfRangeError';\n\n constructor(\n serializer: string,\n min: number | bigint,\n max: number | bigint,\n actual: number | bigint\n ) {\n super(\n `Serializer [${serializer}] expected number to be between ${min} and ${max}, got ${actual}.`\n );\n }\n}\n","import {\n DeserializingEmptyBufferError,\n NotEnoughBytesError,\n Serializer,\n} from '@metaplex-foundation/umi-serializers-core';\nimport {\n Endian,\n NumberSerializer,\n NumberSerializerOptions,\n SingleByteNumberSerializerOptions,\n} from './common';\nimport { NumberOutOfRangeError } from './errors';\n\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => number;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): Serializer<number>;\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => bigint;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): Serializer<number | bigint, bigint>;\nexport function numberFactory(input: {\n name: string;\n size: number;\n range?: [number | bigint, number | bigint];\n set: (view: DataView, value: number | bigint, littleEndian?: boolean) => void;\n get: (view: DataView, littleEndian?: boolean) => number | bigint;\n options: SingleByteNumberSerializerOptions | NumberSerializerOptions;\n}): NumberSerializer {\n let littleEndian: boolean | undefined;\n let defaultDescription: string = input.name;\n\n if (input.size > 1) {\n littleEndian =\n !('endian' in input.options) || input.options.endian === Endian.Little;\n defaultDescription += littleEndian ? '(le)' : '(be)';\n }\n\n return {\n description: input.options.description ?? defaultDescription,\n fixedSize: input.size,\n maxSize: input.size,\n serialize(value: number | bigint): Uint8Array {\n if (input.range) {\n assertRange(input.name, input.range[0], input.range[1], value);\n }\n const buffer = new ArrayBuffer(input.size);\n input.set(new DataView(buffer), value, littleEndian);\n return new Uint8Array(buffer);\n },\n deserialize(bytes, offset = 0): [number | bigint, number] {\n const slice = bytes.slice(offset, offset + input.size);\n assertEnoughBytes('i8', slice, input.size);\n const view = toDataView(slice);\n return [input.get(view, littleEndian), offset + input.size];\n },\n } as NumberSerializer;\n}\n\n/**\n * Helper function to ensure that the array buffer is converted properly from a uint8array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n * @param {Uint8Array} array Uint8array that's being converted into an array buffer\n * @returns {ArrayBuffer} An array buffer that's necessary to construct a data view\n */\nexport const toArrayBuffer = (array: Uint8Array): ArrayBuffer =>\n array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset);\n\nexport const toDataView = (array: Uint8Array): DataView =>\n new DataView(toArrayBuffer(array));\n\nexport const assertRange = (\n serializer: string,\n min: number | bigint,\n max: number | bigint,\n value: number | bigint\n) => {\n if (value < min || value > max) {\n throw new NumberOutOfRangeError(serializer, min, max, value);\n }\n};\n\nexport const assertEnoughBytes = (\n serializer: string,\n bytes: Uint8Array,\n expected: number\n) => {\n if (bytes.length === 0) {\n throw new DeserializingEmptyBufferError(serializer);\n }\n if (bytes.length < expected) {\n throw new NotEnoughBytesError(serializer, expected, bytes.length);\n }\n};\n","import { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { SingleByteNumberSerializerOptions } from './common';\nimport { numberFactory } from './utils';\n\nexport const u8 = (\n options: SingleByteNumberSerializerOptions = {}\n): Serializer<number> =>\n numberFactory({\n name: 'u8',\n size: 1,\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, Number(value)),\n get: (view) => view.getUint8(0),\n options,\n });\n","import { Serializer } from '@metaplex-foundation/umi-serializers-core';\nimport { NumberSerializerOptions } from './common';\nimport { numberFactory } from './utils';\n\nexport const u32 = (\n options: NumberSerializerOptions = {}\n): Serializer<number> =>\n numberFactory({\n name: 'u32',\n size: 4,\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, Number(value), le),\n get: (view, le) => view.getUint32(0, le),\n options,\n });\n","/* eslint-disable no-bitwise */\nimport {\n BaseSerializerOptions,\n Serializer,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { assertRange } from './utils';\n\n/**\n * Defines the options for the shortU16 serializer.\n * @category Serializers\n */\nexport type ShortU16SerializerOptions = BaseSerializerOptions;\n\n/**\n * Same as u16, but serialized with 1 to 3 bytes.\n *\n * If the value is above 0x7f, the top bit is set and the remaining\n * value is stored in the next bytes. Each byte follows the same\n * pattern until the 3rd byte. The 3rd byte, if needed, uses\n * all 8 bits to store the last byte of the original value.\n *\n * @category Serializers\n */\nexport const shortU16 = (\n options: ShortU16SerializerOptions = {}\n): Serializer<number> => ({\n description: options.description ?? 'shortU16',\n fixedSize: null,\n maxSize: 3,\n serialize: (value: number): Uint8Array => {\n assertRange('shortU16', 0, 65535, value);\n const bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = value >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n bytes[ii - 1] |= 0b10000000;\n }\n }\n return new Uint8Array(bytes);\n },\n deserialize: (bytes: Uint8Array, offset = 0): [number, number] => {\n let value = 0;\n let byteCount = 0;\n while (\n ++byteCount // eslint-disable-line no-plusplus\n ) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n});\n","/** @category Errors */\nexport class InvalidNumberOfItemsError extends Error {\n readonly name = 'InvalidNumberOfItemsError';\n\n constructor(\n serializer: string,\n expected: number | bigint,\n actual: number | bigint\n ) {\n super(`Expected [${serializer}] to have ${expected} items, got ${actual}.`);\n }\n}\n\n/** @category Errors */\nexport class InvalidArrayLikeRemainderSizeError extends Error {\n readonly name = 'InvalidArrayLikeRemainderSizeError';\n\n constructor(remainderSize: number | bigint, itemSize: number | bigint) {\n super(\n `The remainder of the buffer (${remainderSize} bytes) cannot be split into chunks of ${itemSize} bytes. ` +\n `Serializers of \"remainder\" size must have a remainder that is a multiple of its item size. ` +\n `In other words, ${remainderSize} modulo ${itemSize} should be equal to zero.`\n );\n }\n}\n\n/** @category Errors */\nexport class UnrecognizedArrayLikeSerializerSizeError extends Error {\n readonly name = 'UnrecognizedArrayLikeSerializerSizeError';\n\n constructor(size: never) {\n super(`Unrecognized array-like serializer size: ${JSON.stringify(size)}`);\n }\n}\n\n/** @category Errors */\nexport class InvalidDataEnumVariantError extends Error {\n readonly name = 'InvalidDataEnumVariantError';\n\n constructor(invalidVariant: string, validVariants: string[]) {\n super(\n `Invalid data enum variant. ` +\n `Expected one of [${validVariants.join(', ')}], ` +\n `got \"${invalidVariant}\".`\n );\n }\n}\n\n/** @category Errors */\nexport class InvalidScalarEnumVariantError extends Error {\n readonly name = 'InvalidScalarEnumVariantError';\n\n constructor(\n invalidVariant: string | number | bigint,\n validVariants: string[],\n min: number | bigint,\n max: number | bigint\n ) {\n super(\n `Invalid scalar enum variant. ` +\n `Expected one of [${validVariants.join(', ')}] ` +\n `or a number between ${min} and ${max}, ` +\n `got \"${invalidVariant}\".`\n );\n }\n}\n\n/** @category Errors */\nexport class EnumDiscriminatorOutOfRangeError extends RangeError {\n readonly name = 'EnumDiscriminatorOutOfRangeError';\n\n constructor(\n discriminator: number | bigint,\n min: number | bigint,\n max: number | bigint\n ) {\n super(\n `Enum discriminator out of range. ` +\n `Expected a number between ${min} and ${max}, got ${discriminator}.`\n );\n }\n}\n","export function sumSerializerSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce(\n (all, size) => (all === null || size === null ? null : all + size),\n 0 as number | null\n );\n}\n","import { ExpectedFixedSizeSerializerError } from '@metaplex-foundation/umi-serializers-core';\nimport { ArrayLikeSerializerSize } from './arrayLikeSerializerSize';\nimport {\n InvalidArrayLikeRemainderSizeError,\n UnrecognizedArrayLikeSerializerSizeError,\n} from './errors';\nimport { sumSerializerSizes } from './sumSerializerSizes';\n\nexport function getResolvedSize(\n size: ArrayLikeSerializerSize,\n childrenSizes: (number | null)[],\n bytes: Uint8Array,\n offset: number\n): [number | bigint, number] {\n if (typeof size === 'number') {\n return [size, offset];\n }\n\n if (typeof size === 'object') {\n return size.deserialize(bytes, offset);\n }\n\n if (size === 'remainder') {\n const childrenSize = sumSerializerSizes(childrenSizes);\n if (childrenSize === null) {\n throw new ExpectedFixedSizeSerializerError(\n 'Serializers of \"remainder\" size must have fixed-size items.'\n );\n }\n const remainder = bytes.slice(offset).length;\n if (remainder % childrenSize !== 0) {\n throw new InvalidArrayLikeRemainderSizeError(remainder, childrenSize);\n }\n return [remainder / childrenSize, offset];\n }\n\n throw new UnrecognizedArrayLikeSerializerSizeError(size);\n}\n\nexport function getSizeDescription(\n size: ArrayLikeSerializerSize | string\n): string {\n return typeof size === 'object' ? size.description : `${size}`;\n}\n\nexport function getSizeFromChildren(\n size: ArrayLikeSerializerSize,\n childrenSizes: (number | null)[]\n): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n const childrenSize = sumSerializerSizes(childrenSizes);\n return childrenSize === null ? null : childrenSize * size;\n}\n\nexport function getSizePrefix(\n size: ArrayLikeSerializerSize,\n realSize: number\n): Uint8Array {\n return typeof size === 'object' ? size.serialize(realSize) : new Uint8Array();\n}\n","import {\n BaseSerializerOptions,\n ExpectedFixedSizeSerializerError,\n Serializer,\n mergeBytes,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { u32 } from '@metaplex-foundation/umi-serializers-numbers';\nimport { ArrayLikeSerializerSize } from './arrayLikeSerializerSize';\nimport { InvalidNumberOfItemsError } from './errors';\nimport {\n getResolvedSize,\n getSizeDescription,\n getSizeFromChildren,\n getSizePrefix,\n} from './utils';\n\n/**\n * Defines the options for array serializers.\n * @category Serializers\n */\nexport type ArraySerializerOptions = BaseSerializerOptions & {\n /**\n * The size of the array.\n * @defaultValue `u32()`\n */\n size?: ArrayLikeSerializerSize;\n};\n\n/**\n * Creates a serializer for an array of items.\n *\n * @param item - The serializer to use for the array's items.\n * @param options - A set of options for the serializer.\n * @category Serializers\n */\nexport function array<T, U extends T = T>(\n item: Serializer<T, U>,\n options: ArraySerializerOptions = {}\n): Serializer<T[], U[]> {\n const size = options.size ?? u32();\n if (size === 'remainder' && item.fixedSize === null) {\n throw new ExpectedFixedSizeSerializerError(\n 'Serializers of \"remainder\" size must have fixed-size items.'\n );\n }\n return {\n description:\n options.description ??\n `array(${item.description}; ${getSizeDescription(size)})`,\n fixedSize: getSizeFromChildren(size, [item.fixedSize]),\n maxSize: getSizeFromChildren(size, [item.maxSize]),\n serialize: (value: T[]) => {\n if (typeof size === 'number' && value.length !== size) {\n throw new InvalidNumberOfItemsError('array', size, value.length);\n }\n return mergeBytes([\n getSizePrefix(size, value.length),\n ...value.map((v) => item.serialize(v)),\n ]);\n },\n deserialize: (bytes: Uint8Array, offset = 0) => {\n if (typeof size === 'object' && bytes.slice(offset).length === 0) {\n return [[], offset];\n }\n const [resolvedSize, newOffset] = getResolvedSize(\n size,\n [item.fixedSize],\n bytes,\n offset\n );\n offset = newOffset;\n const values: U[] = [];\n for (let i = 0; i < resolvedSize; i += 1) {\n const [value, newOffset] = item.deserialize(bytes, offset);\n values.push(value);\n offset = newOffset;\n }\n return [values, offset];\n },\n };\n}\n","import {\n BaseSerializerOptions,\n DeserializingEmptyBufferError,\n NotEnoughBytesError,\n Serializer,\n fixSerializer,\n mergeBytes,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { NumberSerializer } from '@metaplex-foundation/umi-serializers-numbers';\nimport { getSizeDescription } from './utils';\n\n/**\n * Defines the options for bytes serializers.\n * @category Serializers\n */\nexport type BytesSerializerOptions = BaseSerializerOptions & {\n /**\n * The size of the buffer. It can be one of the following:\n * - a {@link NumberSerializer} that prefixes the buffer with its size.\n * - a fixed number of bytes.\n * - or `'variable'` to use the rest of the buffer.\n * @defaultValue `'variable'`\n */\n size?: NumberSerializer | number | 'variable';\n};\n\n/**\n * Creates a serializer that passes the buffer as-is.\n *\n * @param options - A set of options for the serializer.\n * @category Serializers\n */\nexport function bytes(\n options: BytesSerializerOptions = {}\n): Serializer<Uint8Array> {\n const size = options.size ?? 'variable';\n const description =\n options.description ?? `bytes(${getSizeDescription(size)})`;\n\n const byteSerializer: Serializer<Uint8Array> = {\n description,\n fixedSize: null,\n maxSize: null,\n serialize: (value: Uint8Array) => new Uint8Array(value),\n deserialize: (bytes: Uint8Array, offset = 0) => {\n const slice = bytes.slice(offset);\n return [slice, offset + slice.length];\n },\n };\n\n if (size === 'variable') {\n return byteSerializer;\n }\n\n if (typeof size === 'number') {\n return fixSerializer(byteSerializer, size, description);\n }\n\n return {\n description,\n fixedSize: null,\n maxSize: null,\n serialize: (value: Uint8Array) => {\n const contentBytes = byteSerializer.serialize(value);\n const lengthBytes = size.serialize(contentBytes.length);\n return mergeBytes([lengthBytes, contentBytes]);\n },\n deserialize: (buffer: Uint8Array, offset = 0) => {\n if (buffer.slice(offset).length === 0) {\n throw new DeserializingEmptyBufferError('bytes');\n }\n const [lengthBigInt, lengthOffset] = size.deserialize(buffer, offset);\n const length = Number(lengthBigInt);\n offset = lengthOffset;\n const contentBuffer = buffer.slice(offset, offset + length);\n if (contentBuffer.length < length) {\n throw new NotEnoughBytesError('bytes', length, contentBuffer.length);\n }\n const [value, contentOffset] = byteSerializer.deserialize(contentBuffer);\n offset += contentOffset;\n return [value, offset];\n },\n };\n}\n","import {\n BaseSerializerOptions,\n DeserializingEmptyBufferError,\n NotEnoughBytesError,\n Serializer,\n fixSerializer,\n mergeBytes,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { utf8 } from '@metaplex-foundation/umi-serializers-encodings';\nimport {\n NumberSerializer,\n u32,\n} from '@metaplex-foundation/umi-serializers-numbers';\nimport { getSizeDescription } from './utils';\n\n/**\n * Defines the options for string serializers.\n * @category Serializers\n */\nexport type StringSerializerOptions = BaseSerializerOptions & {\n /**\n * The size of the string. It can be one of the following:\n * - a {@link NumberSerializer} that prefixes the string with its size.\n * - a fixed number of bytes.\n * - or `'variable'` to use the rest of the buffer.\n * @defaultValue `u32()`\n */\n size?: NumberSerializer | number | 'variable';\n /**\n * The string serializer to use for encoding and decoding the content.\n * @defaultValue `utf8`\n */\n encoding?: Serializer<string>;\n};\n\n/**\n * Creates a string serializer.\n *\n * @param options - A set of options for the serializer.\n * @category Serializers\n */\nexport function string(\n options: StringSerializerOptions = {}\n): Serializer<string> {\n const size = options.size ?? u32();\n const encoding = options.encoding ?? utf8;\n const description =\n options.description ??\n `string(${encoding.description}; ${getSizeDescription(size)})`;\n\n if (size === 'variable') {\n return { ...encoding, description };\n }\n\n if (typeof size === 'number') {\n return fixSerializer(encoding, size, description);\n }\n\n return {\n description,\n fixedSize: null,\n maxSize: null,\n serialize: (value: string) => {\n const contentBytes = encoding.serialize(value);\n const lengthBytes = size.serialize(contentBytes.length);\n return mergeBytes([lengthBytes, contentBytes]);\n },\n deserialize: (buffer: Uint8Array, offset = 0) => {\n if (buffer.slice(offset).length === 0) {\n throw new DeserializingEmptyBufferError('string');\n }\n const [lengthBigInt, lengthOffset] = size.deserialize(buffer, offset);\n const length = Number(lengthBigInt);\n offset = lengthOffset;\n const contentBuffer = buffer.slice(offset, offset + length);\n if (contentBuffer.length < length) {\n throw new NotEnoughBytesError('string', length, contentBuffer.length);\n }\n const [value, contentOffset] = encoding.deserialize(contentBuffer);\n offset += contentOffset;\n return [value, offset];\n },\n };\n}\n","import {\n BaseSerializerOptions,\n Serializer,\n mergeBytes,\n} from '@metaplex-foundation/umi-serializers-core';\nimport { sumSerializerSizes } from './sumSerializerSizes';\n\n/**\n * Get the name and serializer of each field in a struct.\n * @category Serializers\n */\nexport type StructToSerializerTuple<T extends object, U extends T> = Array<\n {\n [K in keyof T]: [K, Serializer<T[K], U[K]>];\n }[keyof T]\n>;\n\n/**\n * Defines the options for struct serializers.\n * @category Serializers\n */\nexport type StructSerializerOptions = BaseSerializerOptions;\n\n/**\n * Creates a serializer for a custom object.\n *\n * @param fields - The name and serializer of each field.\n * @param options - A set of options for the serializer.\n * @category Serializers\n */\nexport function struct<T extends object, U extends T = T>(\n fields: StructToSerializerTuple<T, U>,\n options: StructSerializerOptions = {}\n): Serializer<T, U> {\n const fieldDescriptions = fields\n .map(([name, serializer]) => `${String(name)}: ${serializer.description}`)\n .join(', ');\n return {\n description: options.description ?? `struct(${fieldDescriptions})`,\n fixedSize: sumSerializerSizes(fields.map(([, field]) => field.fixedSize)),\n maxSize: sumSerializerSizes(fields.map(([, field]) => field.maxSize)),\n serialize: (struct: T) => {\n const fieldBytes = fields.map(([key, serializer]) =>\n serializer.serialize(struct[key])\n );\n return mergeBytes(fieldBytes);\n },\n deserialize: (bytes: Uint8Array, offset = 0) => {\n const struct: Partial<U> = {};\n fields.forEach(([key, serializer]) => {\n const [value, newOffset] = serializer.deserialize(bytes, offset);\n offset = newOffset;\n struct[key] = value;\n });\n return [struct as U, offset];\n },\n };\n}\n","function assertIsSecureContext() {\n if (__BROWSER__ && !globalThis.isSecureContext) {\n // TODO: Coded error.\n throw new Error(\n 'Cryptographic operations are only allowed in secure browser contexts. Read more ' +\n 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts'\n );\n }\n}\n\nlet cachedEd25519Decision: PromiseLike<boolean> | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<boolean> {\n if (cachedEd25519Decision === undefined) {\n cachedEd25519Decision = new Promise(resolve => {\n subtle\n .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n .catch(() => {\n resolve((cachedEd25519Decision = false));\n })\n .then(() => {\n resolve((cachedEd25519Decision = true));\n });\n });\n }\n if (typeof cachedEd25519Decision === 'boolean') {\n return cachedEd25519Decision;\n } else {\n return await cachedEd25519Decision;\n }\n}\n\nexport async function assertDigestCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.digest !== 'function') {\n // TODO: Coded error.\n throw new Error('No digest implementation could be found');\n }\n}\n\nexport async function assertKeyGenerationIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n // TODO: Coded error.\n throw new Error('No key generation implementation could be found');\n }\n if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n // TODO: Coded error.\n throw new Error(\n 'This runtime does not support the generation of Ed25519 key pairs.\\n\\nInstall and ' +\n 'import `@solana/webcrypto-ed25519-polyfill` before generating keys in ' +\n 'environments that do not support Ed25519.\\n\\nFor a list of runtimes that ' +\n 'currently support Ed25519 operations, visit ' +\n 'https://github.com/WICG/webcrypto-secure-curves/issues/20'\n );\n }\n}\n\nexport async function assertKeyExporterIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n // TODO: Coded error.\n throw new Error('No key export implementation could be found');\n }\n}\n\nexport async function assertSigningCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n // TODO: Coded error.\n throw new Error('No signing implementation could be found');\n }\n}\n\nexport async function assertVerificationCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n // TODO: Coded error.\n throw new Error('No signature verification implementation could be found');\n }\n}\n","import { base58, Serializer, string } from '@metaplex-foundation/umi-serializers';\n\nexport type Base58EncodedAddress<TAddress extends string = string> = TAddress & {\n readonly __base58EncodedAddress: unique symbol;\n};\n\nexport function assertIsBase58EncodedAddress(\n putativeBase58EncodedAddress: string\n): asserts putativeBase58EncodedAddress is Base58EncodedAddress<typeof putativeBase58EncodedAddress> {\n try {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeBase58EncodedAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeBase58EncodedAddress.length > 44\n ) {\n throw new Error('Expected input string to decode to a byte array of length 32.');\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58.serialize(putativeBase58EncodedAddress);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);\n }\n } catch (e) {\n throw new Error(`\\`${putativeBase58EncodedAddress}\\` is not a base-58 encoded address`, {\n cause: e,\n });\n }\n}\n\nexport function getBase58EncodedAddressCodec(\n config?: Readonly<{\n description: string;\n }>\n): Serializer<Base58EncodedAddress> {\n return string({\n description: config?.description ?? (__DEV__ ? 'A 32-byte account address' : ''),\n encoding: base58,\n size: 32,\n }) as unknown as Serializer<Base58EncodedAddress>;\n}\n\nexport function getBase58EncodedAddressComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n","import { assertDigestCapabilityIsAvailable } from '@solana/assertions';\n\nimport { Base58EncodedAddress, getBase58EncodedAddressCodec } from './base58';\nimport { compressedPointBytesAreOnCurve } from './curve';\n\ntype PDAInput = Readonly<{\n programAddress: Base58EncodedAddress;\n seeds: Seed[];\n}>;\ntype Seed = string | Uint8Array;\n\nconst MAX_SEED_LENGTH = 32;\nconst MAX_SEEDS = 16;\nconst PDA_MARKER_BYTES = [\n // The string 'ProgramDerivedAddress'\n 80, 114, 111, 103, 114, 97, 109, 68, 101, 114, 105, 118, 101, 100, 65, 100, 100, 114, 101, 115, 115,\n] as const;\n\n// TODO: Coded error.\nclass PointOnCurveError extends Error {}\n\nasync function createProgramDerivedAddress({ programAddress, seeds }: PDAInput): Promise<Base58EncodedAddress> {\n await assertDigestCapabilityIsAvailable();\n if (seeds.length > MAX_SEEDS) {\n // TODO: Coded error.\n throw new Error(`A maximum of ${MAX_SEEDS} seeds may be supplied when creating an address`);\n }\n let textEncoder: TextEncoder;\n const seedBytes = seeds.reduce((acc, seed, ii) => {\n const bytes = typeof seed === 'string' ? (textEncoder ||= new TextEncoder()).encode(seed) : seed;\n if (bytes.byteLength > MAX_SEED_LENGTH) {\n // TODO: Coded error.\n throw new Error(`The seed at index ${ii} exceeds the maximum length of 32 bytes`);\n }\n acc.push(...bytes);\n return acc;\n }, [] as number[]);\n const base58EncodedAddressCodec = getBase58EncodedAddressCodec();\n const programAddressBytes = base58EncodedAddressCodec.serialize(programAddress);\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...seedBytes, ...programAddressBytes, ...PDA_MARKER_BYTES])\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n if (await compressedPointBytesAreOnCurve(addressBytes)) {\n // TODO: Coded error.\n throw new PointOnCurveError('Invalid seeds; point must fall off the Ed25519 curve');\n }\n return base58EncodedAddressCodec.deserialize(addressBytes)[0];\n}\n\nexport async function getProgramDerivedAddress({ programAddress, seeds }: PDAInput): Promise<\n Readonly<{\n bumpSeed: number;\n pda: Base58EncodedAddress;\n }>\n> {\n let bumpSeed = 255;\n while (bumpSeed > 0) {\n try {\n return {\n bumpSeed,\n pda: await createProgramDerivedAddress({\n programAddress,\n seeds: [...seeds, new Uint8Array([bumpSeed])],\n }),\n };\n } catch (e) {\n if (e instanceof PointOnCurveError) {\n bumpSeed--;\n } else {\n throw e;\n }\n }\n }\n // TODO: Coded error.\n throw new Error('Unable to find a viable program address bump seed');\n}\n","/**!\n * noble-ed25519\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Paul Miller (https://paulmillr.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the “Software”), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nconst D = 37095705934669439343138083508754565189542113879843219016388785533085940283555n;\nconst P = 57896044618658097711785492504343953926634992332820282019728792003956564819949n; // 2n ** 255n - 19n; ed25519 is twisted edwards curve\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\n\n// mod division\nfunction mod(a: bigint): bigint {\n const r = a % P;\n return r >= 0n ? r : P + r;\n}\nfunction pow2(x: bigint, power: bigint): bigint {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n}\nfunction pow_2_252_3(x: bigint): bigint {\n // x^(2^252-3) unrolled util for square root\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return pow_p_5_8;\n}\nfunction uvRatio(u: bigint, v: bigint): bigint | null {\n // for sqrt comp\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7); // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n) x = mod(-x); // edIsNegative\n if (!useRoot1 && !useRoot2) {\n return null;\n }\n return x;\n}\n// https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.3\nexport function pointIsOnCurve(y: bigint, lastByte: number): boolean {\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(D * y2 + 1n);\n const x = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (x === null) {\n return false;\n }\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (x === 0n && isLastByteOdd) {\n return false;\n }\n return true;\n}\n","import { pointIsOnCurve } from './vendor/noble/ed25519';\n\nfunction byteToHex(byte: number): string {\n const hexString = byte.toString(16);\n if (hexString.length === 1) {\n return `0${hexString}`;\n } else {\n return hexString;\n }\n}\n\nfunction decompressPointBytes(bytes: Uint8Array): bigint {\n const hexString = bytes.reduce((acc, byte, ii) => `${byteToHex(ii === 31 ? byte & ~0x80 : byte)}${acc}`, '');\n const integerLiteralString = `0x${hexString}`;\n return BigInt(integerLiteralString);\n}\n\nexport async function compressedPointBytesAreOnCurve(bytes: Uint8Array): Promise<boolean> {\n if (bytes.byteLength !== 32) {\n return false;\n }\n const y = decompressPointBytes(bytes);\n return pointIsOnCurve(y, bytes[31]);\n}\n","import { assertKeyExporterIsAvailable } from '@solana/assertions';\n\nimport { Base58EncodedAddress, getBase58EncodedAddressCodec } from './base58';\n\nexport async function getBase58EncodedAddressFromPublicKey(publicKey: CryptoKey): Promise<Base58EncodedAddress> {\n await assertKeyExporterIsAvailable();\n if (publicKey.type !== 'public' || publicKey.algorithm.name !== 'Ed25519') {\n // TODO: Coded error.\n throw new Error('The `CryptoKey` must be an `Ed25519` public key');\n }\n const publicKeyBytes = await crypto.subtle.exportKey('raw', publicKey);\n const [base58EncodedAddress] = getBase58EncodedAddressCodec().deserialize(new Uint8Array(publicKeyBytes));\n return base58EncodedAddress;\n}\n","/**\n * Quick primer on bitwise operations: https://stackoverflow.com/a/1436448/802047\n */\n\nexport enum AccountRole {\n // Bitflag guide: is signer ⌄⌄ is writable\n WRITABLE_SIGNER = /* 3 */ 0b11, // prettier-ignore\n READONLY_SIGNER = /* 2 */ 0b10, // prettier-ignore\n WRITABLE = /* 1 */ 0b01, // prettier-ignore\n READONLY = /* 0 */ 0b00, // prettier-ignore\n}\n\nconst IS_SIGNER_BITMASK = 0b10;\nconst IS_WRITABLE_BITMASK = 0b01;\n\nexport function downgradeRoleToNonSigner(role: AccountRole.READONLY_SIGNER): AccountRole.READONLY;\nexport function downgradeRoleToNonSigner(role: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole {\n return role & ~IS_SIGNER_BITMASK;\n}\n\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE): AccountRole.READONLY;\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE_SIGNER): AccountRole.READONLY_SIGNER;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole {\n return role & ~IS_WRITABLE_BITMASK;\n}\n\nexport function isSignerRole(role: AccountRole): role is AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER {\n return role >= AccountRole.READONLY_SIGNER;\n}\n\nexport function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE | AccountRole.WRITABLE_SIGNER {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\n\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE_SIGNER, roleB: AccountRole): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.READONLY_SIGNER): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY, roleB: AccountRole.READONLY): AccountRole.READONLY; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {\n return roleA | roleB;\n}\n\nexport function upgradeRoleToSigner(role: AccountRole.READONLY): AccountRole.READONLY_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole {\n return role | IS_SIGNER_BITMASK;\n}\n\nexport function upgradeRoleToWritable(role: AccountRole.READONLY): AccountRole.WRITABLE;\nexport function upgradeRoleToWritable(role: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole {\n return role | IS_WRITABLE_BITMASK;\n}\n","import { assertKeyGenerationIsAvailable } from '@solana/assertions';\n\nexport async function generateKeyPair(): Promise<CryptoKeyPair> {\n await assertKeyGenerationIsAvailable();\n const keyPair = await crypto.subtle.generateKey(\n /* algorithm */ 'Ed25519', // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20\n /* extractable */ false, // Prevents the bytes of the private key from being visible to JS.\n /* allowed uses */ ['sign', 'verify']\n );\n return keyPair as CryptoKeyPair;\n}\n","import { assertSigningCapabilityIsAvailable, assertVerificationCapabilityIsAvailable } from '@solana/assertions';\n\nexport type Ed25519Signature = Uint8Array & { readonly __ed25519Signature: unique symbol };\n\nexport async function signBytes(key: CryptoKey, data: Uint8Array): Promise<Ed25519Signature> {\n await assertSigningCapabilityIsAvailable();\n const signedData = await crypto.subtle.sign('Ed25519', key, data);\n return new Uint8Array(signedData) as Ed25519Signature;\n}\n\nexport async function verifySignature(key: CryptoKey, signature: Ed25519Signature, data: Uint8Array): Promise<boolean> {\n await assertVerificationCapabilityIsAvailable();\n return await crypto.subtle.verify('Ed25519', key, signature, data);\n}\n","import { base58, struct, array, bytes, shortU16, mapSerializer, string, u8 } from '@metaplex-foundation/umi-serializers';\nimport { getBase58EncodedAddressFromPublicKey, getBase58EncodedAddressComparator, getBase58EncodedAddressCodec } from '@solana/addresses';\nimport { signBytes } from '@solana/keys';\n\n// ../build-scripts/env-shim.ts\nvar __DEV__ = /* @__PURE__ */ (() => process[\"env\"].NODE_ENV === \"development\")();\n\n// src/unsigned-transaction.ts\nfunction getUnsignedTransaction(transaction) {\n if (\"signatures\" in transaction) {\n const {\n signatures: _,\n // eslint-disable-line @typescript-eslint/no-unused-vars\n ...unsignedTransaction\n } = transaction;\n return unsignedTransaction;\n } else {\n return transaction;\n }\n}\n\n// src/blockhash.ts\nfunction assertIsBlockhash(putativeBlockhash) {\n try {\n if (\n // Lowest value (32 bytes of zeroes)\n putativeBlockhash.length < 32 || // Highest value (32 bytes of 255)\n putativeBlockhash.length > 44\n ) {\n throw new Error(\"Expected input string to decode to a byte array of length 32.\");\n }\n const bytes3 = base58.serialize(putativeBlockhash);\n const numBytes = bytes3.byteLength;\n if (numBytes !== 32) {\n throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${numBytes}`);\n }\n } catch (e) {\n throw new Error(`\\`${putativeBlockhash}\\` is not a blockhash`, {\n cause: e\n });\n }\n}\nfunction setTransactionLifetimeUsingBlockhash(blockhashLifetimeConstraint, transaction) {\n if (\"lifetimeConstraint\" in transaction && transaction.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash && transaction.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight) {\n return transaction;\n }\n const out = {\n ...getUnsignedTransaction(transaction),\n lifetimeConstraint: blockhashLifetimeConstraint\n };\n Object.freeze(out);\n return out;\n}\n\n// src/create-transaction.ts\nfunction createTransaction({\n version\n}) {\n const out = {\n instructions: [],\n version\n };\n Object.freeze(out);\n return out;\n}\n\n// ../instructions/dist/index.browser.js\nvar AccountRole = /* @__PURE__ */ ((AccountRole2) => {\n AccountRole2[AccountRole2[\"WRITABLE_SIGNER\"] = /* 3 */\n 3] = \"WRITABLE_SIGNER\";\n AccountRole2[AccountRole2[\"READONLY_SIGNER\"] = /* 2 */\n 2] = \"READONLY_SIGNER\";\n AccountRole2[AccountRole2[\"WRITABLE\"] = /* 1 */\n 1] = \"WRITABLE\";\n AccountRole2[AccountRole2[\"READONLY\"] = /* 0 */\n 0] = \"READONLY\";\n return AccountRole2;\n})(AccountRole || {});\nvar IS_WRITABLE_BITMASK = 1;\nfunction isSignerRole(role) {\n return role >= 2;\n}\nfunction isWritableRole(role) {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\nfunction mergeRoles(roleA, roleB) {\n return roleA | roleB;\n}\n\n// src/durable-nonce.ts\nvar RECENT_BLOCKHASHES_SYSVAR_ADDRESS = \"SysvarRecentB1ockHashes11111111111111111111\";\nvar SYSTEM_PROGRAM_ADDRESS = \"11111111111111111111111111111111\";\nfunction assertIsDurableNonceTransaction(transaction) {\n if (!isDurableNonceTransaction(transaction)) {\n throw new Error(\"Transaction is not a durable nonce transaction\");\n }\n}\nfunction createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress) {\n return {\n accounts: [\n { address: nonceAccountAddress, role: AccountRole.WRITABLE },\n {\n address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS,\n role: AccountRole.READONLY\n },\n { address: nonceAuthorityAddress, role: AccountRole.READONLY_SIGNER }\n ],\n data: new Uint8Array([4, 0, 0, 0]),\n programAddress: SYSTEM_PROGRAM_ADDRESS\n };\n}\nfunction isAdvanceNonceAccountInstruction(instruction) {\n return instruction.programAddress === SYSTEM_PROGRAM_ADDRESS && // Test for `AdvanceNonceAccount` instruction data\n instruction.data != null && isAdvanceNonceAccountInstructionData(instruction.data) && // Test for exactly 3 accounts\n instruction.accounts?.length === 3 && // First account is nonce account address\n instruction.accounts[0].address != null && instruction.accounts[0].role === AccountRole.WRITABLE && // Second account is recent blockhashes sysvar\n instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS && instruction.accounts[1].role === AccountRole.READONLY && // Third account is nonce authority account\n instruction.accounts[2].address != null && instruction.accounts[2].role === AccountRole.READONLY_SIGNER;\n}\nfunction isAdvanceNonceAccountInstructionData(data) {\n return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0;\n}\nfunction isDurableNonceTransaction(transaction) {\n return \"lifetimeConstraint\" in transaction && typeof transaction.lifetimeConstraint.nonce === \"string\" && transaction.instructions[0] != null && isAdvanceNonceAccountInstruction(transaction.instructions[0]);\n}\nfunction setTransactionLifetimeUsingDurableNonce({\n nonce,\n nonceAccountAddress,\n nonceAuthorityAddress\n}, transaction) {\n const isAlreadyDurableNonceTransaction = isDurableNonceTransaction(transaction);\n if (isAlreadyDurableNonceTransaction && transaction.lifetimeConstraint.nonce === nonce && transaction.instructions[0].accounts[0].address === nonceAccountAddress && transaction.instructions[0].accounts[2].address === nonceAuthorityAddress) {\n return transaction;\n }\n const out = {\n ...getUnsignedTransaction(transaction),\n instructions: [\n createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress),\n ...isAlreadyDurableNonceTransaction ? transaction.instructions.slice(1) : transaction.instructions\n ],\n lifetimeConstraint: {\n nonce\n }\n };\n Object.freeze(out);\n return out;\n}\n\n// src/fee-payer.ts\nfunction setTransactionFeePayer(feePayer, transaction) {\n if (\"feePayer\" in transaction && feePayer === transaction.feePayer) {\n return transaction;\n }\n const out = {\n ...getUnsignedTransaction(transaction),\n feePayer\n };\n Object.freeze(out);\n return out;\n}\n\n// src/instructions.ts\nfunction appendTransactionInstruction(instruction, transaction) {\n const out = {\n ...getUnsignedTransaction(transaction),\n instructions: [...transaction.instructions, instruction]\n };\n Object.freeze(out);\n return out;\n}\nfunction prependTransactionInstruction(instruction, transaction) {\n const out = {\n ...getUnsignedTransaction(transaction),\n instructions: [instruction, ...transaction.instructions]\n };\n Object.freeze(out);\n return out;\n}\nfunction upsert(addressMap, address, update) {\n addressMap[address] = update(addressMap[address] ?? { role: AccountRole.READONLY });\n}\nvar TYPE = Symbol(\"AddressMapTypeProperty\");\nfunction getAddressMapFromInstructions(feePayer, instructions) {\n const addressMap = {\n [feePayer]: { [TYPE]: 0 /* FEE_PAYER */, role: AccountRole.WRITABLE_SIGNER }\n };\n const addressesOfInvokedPrograms = /* @__PURE__ */ new Set();\n for (const instruction of instructions) {\n upsert(addressMap, instruction.programAddress, (entry) => {\n addressesOfInvokedPrograms.add(instruction.programAddress);\n if (TYPE in entry) {\n if (isWritableRole(entry.role)) {\n switch (entry[TYPE]) {\n case 0 /* FEE_PAYER */:\n throw new Error(\n `This transaction includes an address (\\`${instruction.programAddress}\\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`\n );\n default:\n throw new Error(\n `This transaction includes an address (\\`${instruction.programAddress}\\`) which is both invoked and marked writable. Program addresses may not be writable.`\n );\n }\n }\n if (entry[TYPE] === 2 /* STATIC */) {\n return entry;\n }\n }\n return { [TYPE]: 2 /* STATIC */, role: AccountRole.READONLY };\n });\n let addressComparator;\n if (!instruction.accounts) {\n continue;\n }\n for (const account of instruction.accounts) {\n upsert(addressMap, account.address, (entry) => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n address: _,\n ...accountMeta\n } = account;\n if (TYPE in entry) {\n switch (entry[TYPE]) {\n case 0 /* FEE_PAYER */:\n return entry;\n case 1 /* LOOKUP_TABLE */: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if (\"lookupTableAddress\" in accountMeta) {\n const shouldReplaceEntry = (\n // Consider using the new LOOKUP_TABLE if its address is different...\n entry.lookupTableAddress !== accountMeta.lookupTableAddress && // ...and sorts before the existing one.\n (addressComparator || (addressComparator = getBase58EncodedAddressComparator()))(\n accountMeta.lookupTableAddress,\n entry.lookupTableAddress\n ) < 0\n );\n if (shouldReplaceEntry) {\n return {\n [TYPE]: 1 /* LOOKUP_TABLE */,\n ...accountMeta,\n role: nextRole\n };\n }\n } else if (isSignerRole(accountMeta.role)) {\n return {\n [TYPE]: 2 /* STATIC */,\n role: nextRole\n };\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole\n };\n } else {\n return entry;\n }\n }\n case 2 /* STATIC */: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if (\n // Check to see if this address represents a program that is invoked\n // in this transaction.\n addressesOfInvokedPrograms.has(account.address)\n ) {\n if (isWritableRole(accountMeta.role)) {\n throw new Error(\n `This transaction includes an address (\\`${account.address}\\`) which is both invoked and marked writable. Program addresses may not be writable.`\n );\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole\n };\n } else {\n return entry;\n }\n } else if (\"lookupTableAddress\" in accountMeta && // Static accounts can be 'upgraded' to lookup table accounts as\n // long as they are not require to sign the transaction.\n !isSignerRole(entry.role)) {\n return {\n ...accountMeta,\n [TYPE]: 1 /* LOOKUP_TABLE */,\n role: nextRole\n };\n } else {\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole\n };\n } else {\n return entry;\n }\n }\n }\n }\n }\n if (\"lookupTableAddress\" in accountMeta) {\n return {\n ...accountMeta,\n [TYPE]: 1 /* LOOKUP_TABLE */\n };\n } else {\n return {\n ...accountMeta,\n [TYPE]: 2 /* STATIC */\n };\n }\n });\n }\n }\n return addressMap;\n}\nfunction getOrderedAccountsFromAddressMap(addressMap) {\n let addressComparator;\n const orderedAccounts = Object.entries(addressMap).sort(([leftAddress, leftEntry], [rightAddress, rightEntry]) => {\n if (leftEntry[TYPE] !== rightEntry[TYPE]) {\n if (leftEntry[TYPE] === 0 /* FEE_PAYER */) {\n return -1;\n } else if (rightEntry[TYPE] === 0 /* FEE_PAYER */) {\n return 1;\n } else if (leftEntry[TYPE] === 2 /* STATIC */) {\n return -1;\n } else if (rightEntry[TYPE] === 2 /* STATIC */) {\n return 1;\n }\n }\n const leftIsSigner = isSignerRole(leftEntry.role);\n if (leftIsSigner !== isSignerRole(rightEntry.role)) {\n return leftIsSigner ? -1 : 1;\n }\n const leftIsWritable = isWritableRole(leftEntry.role);\n if (leftIsWritable !== isWritableRole(rightEntry.role)) {\n return leftIsWritable ? -1 : 1;\n }\n addressComparator || (addressComparator = getBase58EncodedAddressComparator());\n if (leftEntry[TYPE] === 1 /* LOOKUP_TABLE */ && rightEntry[TYPE] === 1 /* LOOKUP_TABLE */ && leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress) {\n return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);\n } else {\n return addressComparator(leftAddress, rightAddress);\n }\n }).map(([address, addressMeta]) => ({\n address,\n ...addressMeta\n }));\n return orderedAccounts;\n}\nfunction getCompiledAddressTableLookups(orderedAccounts) {\n var _a;\n const index = {};\n for (const account of orderedAccounts) {\n if (!(\"lookupTableAddress\" in account)) {\n continue;\n }\n const entry = index[_a = account.lookupTableAddress] || (index[_a] = {\n readableIndices: [],\n writableIndices: []\n });\n if (account.role === AccountRole.WRITABLE) {\n entry.writableIndices.push(account.addressIndex);\n } else {\n entry.readableIndices.push(account.addressIndex);\n }\n }\n return Object.keys(index).sort(getBase58EncodedAddressComparator()).map((lookupTableAddress) => ({\n lookupTableAddress,\n ...index[lookupTableAddress]\n }));\n}\n\n// src/compile-header.ts\nfunction getCompiledMessageHeader(orderedAccounts) {\n let numReadonlyNonSignerAccounts = 0;\n let numReadonlySignerAccounts = 0;\n let numSignerAccounts = 0;\n for (const account of orderedAccounts) {\n if (\"lookupTableAddress\" in account) {\n break;\n }\n const accountIsWritable = isWritableRole(account.role);\n if (isSignerRole(account.role)) {\n numSignerAccounts++;\n if (!accountIsWritable) {\n numReadonlySignerAccounts++;\n }\n } else if (!accountIsWritable) {\n numReadonlyNonSignerAccounts++;\n }\n }\n return {\n numReadonlyNonSignerAccounts,\n numReadonlySignerAccounts,\n numSignerAccounts\n };\n}\n\n// src/compile-instructions.ts\nfunction getAccountIndex(orderedAccounts) {\n const out = {};\n for (const [index, account] of orderedAccounts.entries()) {\n out[account.address] = index;\n }\n return out;\n}\nfunction getCompiledInstructions(instructions, orderedAccounts) {\n const accountIndex = getAccountIndex(orderedAccounts);\n return instructions.map(({ accounts, data, programAddress }) => {\n return {\n programAddressIndex: accountIndex[programAddress],\n ...accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[address]) } : null,\n ...data ? { data } : null\n };\n });\n}\n\n// src/compile-lifetime-token.ts\nfunction getCompiledLifetimeToken(lifetimeConstraint) {\n if (\"nonce\" in lifetimeConstraint) {\n return lifetimeConstraint.nonce;\n }\n return lifetimeConstraint.blockhash;\n}\n\n// src/compile-static-accounts.ts\nfunction getCompiledStaticAccounts(orderedAccounts) {\n const firstLookupTableAccountIndex = orderedAccounts.findIndex((account) => \"lookupTableAddress\" in account);\n const orderedStaticAccounts = firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex);\n return orderedStaticAccounts.map(({ address }) => address);\n}\n\n// src/message.ts\nfunction compileMessage(transaction) {\n const addressMap = getAddressMapFromInstructions(transaction.feePayer, transaction.instructions);\n const orderedAccounts = getOrderedAccountsFromAddressMap(addressMap);\n return {\n ...transaction.version !== \"legacy\" ? { addressTableLookups: getCompiledAddressTableLookups(orderedAccounts) } : null,\n header: getCompiledMessageHeader(orderedAccounts),\n instructions: getCompiledInstructions(transaction.instructions, orderedAccounts),\n lifetimeToken: getCompiledLifetimeToken(transaction.lifetimeConstraint),\n staticAccounts: getCompiledStaticAccounts(orderedAccounts),\n version: transaction.version\n };\n}\nfunction getAddressTableLookupCodec() {\n return struct(\n [\n [\n \"lookupTableAddress\",\n getBase58EncodedAddressCodec(\n __DEV__ ? {\n description: \"The address of the address lookup table account from which instruction addresses should be looked up\"\n } : void 0\n )\n ],\n [\n \"writableIndices\",\n array(u8(), {\n ...__DEV__ ? {\n description: \"The indices of the accounts in the lookup table that should be loaded as writeable\"\n } : null,\n size: shortU16()\n })\n ],\n [\n \"readableIndices\",\n array(u8(), {\n ...__DEV__ ? {\n description: \"The indices of the accounts in the lookup table that should be loaded as read-only\"\n } : void 0,\n size: shortU16()\n })\n ]\n ],\n __DEV__ ? {\n description: \"A pointer to the address of an address lookup table, along with the readonly/writeable indices of the addresses that should be loaded from it\"\n } : void 0\n );\n}\nfunction getMessageHeaderCodec() {\n return struct(\n [\n [\n \"numSignerAccounts\",\n u8(\n __DEV__ ? {\n description: \"The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction\"\n } : void 0\n )\n ],\n [\n \"numReadonlySignerAccounts\",\n u8(\n __DEV__ ? {\n description: \"The expected number of addresses in the static address list belonging to accounts that are required to sign this transaction, but may not be writable\"\n } : void 0\n )\n ],\n [\n \"numReadonlyNonSignerAccounts\",\n u8(\n __DEV__ ? {\n description: \"The expected number of addresses in the static address list belonging to accounts that are neither signers, nor writable\"\n } : void 0\n )\n ]\n ],\n __DEV__ ? {\n description: \"The transaction message header containing counts of the signer, readonly-signer, and readonly-nonsigner account addresses\"\n } : void 0\n );\n}\nfunction getInstructionCodec() {\n return mapSerializer(\n struct([\n [\n \"programAddressIndex\",\n u8(\n __DEV__ ? {\n description: \"The index of the program being called, according to the well-ordered accounts list for this transaction\"\n } : void 0\n )\n ],\n [\n \"accountIndices\",\n array(\n u8({\n description: __DEV__ ? \"The index of an account, according to the well-ordered accounts list for this transaction\" : \"\"\n }),\n {\n description: __DEV__ ? \"An optional list of account indices, according to the well-ordered accounts list for this transaction, in the order in which the program being called expects them\" : \"\",\n size: shortU16()\n }\n )\n ],\n [\n \"data\",\n bytes({\n description: __DEV__ ? \"An optional buffer of data passed to the instruction\" : \"\",\n size: shortU16()\n })\n ]\n ]),\n (value) => {\n if (value.accountIndices !== void 0 && value.data !== void 0) {\n return value;\n }\n return {\n ...value,\n accountIndices: value.accountIndices ?? [],\n data: value.data ?? new Uint8Array(0)\n };\n },\n (value) => {\n if (value.accountIndices.length && value.data.byteLength) {\n return value;\n }\n const { accountIndices, data, ...rest } = value;\n return {\n ...rest,\n ...accountIndices.length ? { accountIndices } : null,\n ...data.byteLength ? { data } : null\n };\n }\n );\n}\n\n// src/serializers/unimplemented.ts\nfunction getError(type, name) {\n const functionSuffix = name + type[0].toUpperCase() + type.slice(1);\n return new Error(\n `No ${type} exists for ${name}. Use \\`get${functionSuffix}()\\` if you need a ${type}, and \\`get${name}Codec()\\` if you need to both encode and decode ${name}`\n );\n}\nfunction getUnimplementedDecoder(name) {\n return () => {\n throw getError(\"decoder\", name);\n };\n}\n\n// src/serializers/transaction-version.ts\nvar VERSION_FLAG_MASK = 128;\nvar BASE_CONFIG = {\n description: __DEV__ ? \"A single byte that encodes the version of the transaction\" : \"\",\n fixedSize: null,\n maxSize: 1\n};\nfunction deserialize(bytes3, offset = 0) {\n const firstByte = bytes3[offset];\n if ((firstByte & VERSION_FLAG_MASK) === 0) {\n return [\"legacy\", offset];\n } else {\n const version = firstByte ^ VERSION_FLAG_MASK;\n return [version, offset + 1];\n }\n}\nfunction serialize(value) {\n if (value === \"legacy\") {\n return new Uint8Array();\n }\n if (value < 0 || value > 127) {\n throw new Error(`Transaction version must be in the range [0, 127]. \\`${value}\\` given.`);\n }\n return new Uint8Array([value | VERSION_FLAG_MASK]);\n}\nfunction getTransactionVersionCodec() {\n return {\n ...BASE_CONFIG,\n deserialize,\n serialize\n };\n}\n\n// src/serializers/message.ts\nvar BASE_CONFIG2 = {\n description: __DEV__ ? \"The wire format of a Solana transaction message\" : \"\",\n fixedSize: null,\n maxSize: null\n};\nfunction serialize2(compiledMessage) {\n if (compiledMessage.version === \"legacy\") {\n return struct(getPreludeStructSerializerTuple()).serialize(compiledMessage);\n } else {\n return mapSerializer(\n struct([\n ...getPreludeStructSerializerTuple(),\n [\"addressTableLookups\", getAddressTableLookupsSerializer()]\n ]),\n (value) => {\n if (value.version === \"legacy\") {\n return value;\n }\n return {\n ...value,\n addressTableLookups: value.addressTableLookups ?? []\n };\n }\n ).serialize(compiledMessage);\n }\n}\nfunction getPreludeStructSerializerTuple() {\n return [\n [\"version\", getTransactionVersionCodec()],\n [\"header\", getMessageHeaderCodec()],\n [\n \"staticAccounts\",\n array(getBase58EncodedAddressCodec(), {\n description: __DEV__ ? \"A compact-array of static account addresses belonging to this transaction\" : \"\",\n size: shortU16()\n })\n ],\n [\n \"lifetimeToken\",\n string({\n description: __DEV__ ? \"A 32-byte token that specifies the lifetime of this transaction (eg. a recent blockhash, or a durable nonce)\" : \"\",\n encoding: base58,\n size: 32\n })\n ],\n [\n \"instructions\",\n array(getInstructionCodec(), {\n description: __DEV__ ? \"A compact-array of instructions belonging to this transaction\" : \"\",\n size: shortU16()\n })\n ]\n ];\n}\nfunction getAddressTableLookupsSerializer() {\n return array(getAddressTableLookupCodec(), {\n ...__DEV__ ? { description: \"A compact array of address table lookups belonging to this transaction\" } : null,\n size: shortU16()\n });\n}\nfunction getCompiledMessageEncoder() {\n return {\n ...BASE_CONFIG2,\n deserialize: getUnimplementedDecoder(\"CompiledMessage\"),\n serialize: serialize2\n };\n}\n\n// src/signatures.ts\nasync function getCompiledMessageSignature(message, secretKey) {\n const wireMessageBytes = getCompiledMessageEncoder().serialize(message);\n const signature = await signBytes(secretKey, wireMessageBytes);\n return signature;\n}\nasync function signTransaction(keyPair, transaction) {\n const compiledMessage = compileMessage(transaction);\n const [signerPublicKey, signature] = await Promise.all([\n getBase58EncodedAddressFromPublicKey(keyPair.publicKey),\n getCompiledMessageSignature(compiledMessage, keyPair.privateKey)\n ]);\n const nextSignatures = {\n ...\"signatures\" in transaction ? transaction.signatures : null,\n ...{ [signerPublicKey]: signature }\n };\n const out = {\n ...transaction,\n signatures: nextSignatures\n };\n Object.freeze(out);\n return out;\n}\n\n// src/compile-transaction.ts\nfunction getCompiledTransaction(transaction) {\n const compiledMessage = compileMessage(transaction);\n let signatures;\n if (\"signatures\" in transaction) {\n signatures = [];\n for (let ii = 0; ii < compiledMessage.header.numSignerAccounts; ii++) {\n signatures[ii] = transaction.signatures[compiledMessage.staticAccounts[ii]] ?? new Uint8Array(Array(64).fill(0));\n }\n } else {\n signatures = Array(compiledMessage.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));\n }\n return {\n compiledMessage,\n signatures\n };\n}\n\n// src/serializers/transaction.ts\nvar BASE_CONFIG3 = {\n description: __DEV__ ? \"The wire format of a Solana transaction\" : \"\",\n fixedSize: null,\n maxSize: null\n};\nfunction serialize3(transaction) {\n const compiledTransaction = getCompiledTransaction(transaction);\n return struct([\n [\n \"signatures\",\n array(bytes({ size: 64 }), {\n ...__DEV__ ? { description: \"A compact array of 64-byte, base-64 encoded Ed25519 signatures\" } : null,\n size: shortU16()\n })\n ],\n [\"compiledMessage\", getCompiledMessageEncoder()]\n ]).serialize(compiledTransaction);\n}\nfunction getTransactionEncoder() {\n return {\n ...BASE_CONFIG3,\n deserialize: getUnimplementedDecoder(\"CompiledMessage\"),\n serialize: serialize3\n };\n}\n\n// src/wire-transaction.ts\nfunction getBase64EncodedWireTransaction(transaction) {\n const wireTransactionBytes = getTransactionEncoder().serialize(transaction);\n {\n return btoa(String.fromCharCode(...wireTransactionBytes));\n }\n}\n\nexport { appendTransactionInstruction, assertIsBlockhash, assertIsDurableNonceTransaction, createTransaction, getBase64EncodedWireTransaction, prependTransactionInstruction, setTransactionFeePayer, setTransactionLifetimeUsingBlockhash, setTransactionLifetimeUsingDurableNonce, signTransaction };\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","type IntegerOverflowHandler = (keyPath: (number | string)[], value: bigint) => void;\ntype Patched<T> = T extends object ? { [Property in keyof T]: Patched<T[Property]> } : T extends bigint ? number : T;\n// FIXME(https://github.com/microsoft/TypeScript/issues/33014)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TypescriptBug33014 = any;\n\nfunction visitNode<T>(value: T, keyPath: (number | string)[], onIntegerOverflow?: IntegerOverflowHandler): Patched<T> {\n if (Array.isArray(value)) {\n return value.map((element, ii) =>\n visitNode(element, [...keyPath, ii], onIntegerOverflow)\n ) as TypescriptBug33014;\n } else if (typeof value === 'object' && value !== null) {\n const out = {} as TypescriptBug33014;\n for (const propName in value) {\n if (Object.prototype.hasOwnProperty.call(value, propName)) {\n out[propName] = visitNode(value[propName], [...keyPath, propName], onIntegerOverflow);\n }\n }\n return out as TypescriptBug33014;\n } else if (typeof value === 'bigint') {\n // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // downcasting `bigints` to `numbers`.\n if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) {\n onIntegerOverflow(keyPath, value);\n }\n return Number(value) as TypescriptBug33014;\n } else {\n return value as TypescriptBug33014;\n }\n}\n\nexport function patchParamsForSolanaLabsRpc<T>(params: T, onIntegerOverflow?: IntegerOverflowHandler): Patched<T> {\n return visitNode(params, [], onIntegerOverflow);\n}\n","import { KeyPath } from './response-patcher';\nimport { KEYPATH_WILDCARD } from './response-patcher-types';\nimport { createSolanaRpcApi } from './rpc-methods';\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nexport const ALLOWED_NUMERIC_KEYPATHS: Partial<\n Record<keyof ReturnType<typeof createSolanaRpcApi>, readonly KeyPath[]>\n> = {\n getAccountInfo: [\n // parsed AddressTableLookup account\n ['value', 'data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['value', 'data', 'parsed', 'info', 'slashPenalty'],\n ['value', 'data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 token account\n ['value', 'data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['value', 'data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['value', 'data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['value', 'data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n [\n 'value',\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'olderTransferFee',\n 'transferFeeBasisPoints',\n ],\n [\n 'value',\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'newerTransferFee',\n 'transferFeeBasisPoints',\n ],\n ['value', 'data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'preUpdateAverageRate'],\n ['value', 'data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n // parsed Token/Token22 mint account\n ['value', 'data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['value', 'data', 'parsed', 'info', 'numRequiredSigners'],\n ['value', 'data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['value', 'data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['value', 'data', 'parsed', 'info', 'exemptionThreshold'],\n ['value', 'data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['value', 'data', 'parsed', 'info', 'commission'],\n ['value', 'data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n ],\n getBlockTime: [[]],\n getClusterNodes: [\n [KEYPATH_WILDCARD, 'featureSet'],\n [KEYPATH_WILDCARD, 'shredVersion'],\n ],\n getInflationGovernor: [['initial'], ['foundation'], ['foundationTerm'], ['taper'], ['terminal']],\n getInflationRate: [['foundation'], ['total'], ['validator']],\n getInflationReward: [[KEYPATH_WILDCARD, 'commission']],\n getMultipleAccounts: [\n // parsed AddressTableLookup account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'slashPenalty'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 token account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n [\n 'value',\n KEYPATH_WILDCARD,\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'olderTransferFee',\n 'transferFeeBasisPoints',\n ],\n [\n 'value',\n KEYPATH_WILDCARD,\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'newerTransferFee',\n 'transferFeeBasisPoints',\n ],\n [\n 'value',\n KEYPATH_WILDCARD,\n 'data',\n 'parsed',\n 'info',\n 'extensions',\n KEYPATH_WILDCARD,\n 'state',\n 'preUpdateAverageRate',\n ],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n // parsed Token/Token22 mint account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'numRequiredSigners'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'exemptionThreshold'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'commission'],\n ['value', KEYPATH_WILDCARD, 'data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n ],\n getRecentPerformanceSamples: [[KEYPATH_WILDCARD, 'samplePeriodSecs']],\n getTokenAccountBalance: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTokenLargestAccounts: [\n ['value', KEYPATH_WILDCARD, 'decimals'],\n ['value', KEYPATH_WILDCARD, 'uiAmount'],\n ],\n getTokenSupply: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTransaction: [\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'index'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['meta', 'innerInstructions', KEYPATH_WILDCARD, 'instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['transaction', 'message', 'addressTableLookups', KEYPATH_WILDCARD, 'writableIndexes', KEYPATH_WILDCARD],\n ['transaction', 'message', 'addressTableLookups', KEYPATH_WILDCARD, 'readonlyIndexes', KEYPATH_WILDCARD],\n ['transaction', 'message', 'instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['transaction', 'message', 'instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['transaction', 'message', 'header', 'numReadonlySignedAccounts'],\n ['transaction', 'message', 'header', 'numReadonlyUnsignedAccounts'],\n ['transaction', 'message', 'header', 'numRequiredSignatures'],\n ],\n getVersion: [['feature-set']],\n getVoteAccounts: [\n ['current', KEYPATH_WILDCARD, 'commission'],\n ['delinquent', KEYPATH_WILDCARD, 'commission'],\n ],\n};\n","import { ALLOWED_NUMERIC_KEYPATHS } from './response-patcher-allowed-numeric-values';\nimport { KEYPATH_WILDCARD, KeyPathWildcard } from './response-patcher-types';\nimport { createSolanaRpcApi } from './rpc-methods';\n\nexport type KeyPath = ReadonlyArray<KeyPathWildcard | number | string | KeyPath>;\n// FIXME(https://github.com/microsoft/TypeScript/issues/33014)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TypescriptBug33014 = any;\n\nfunction getNextAllowedKeypaths(keyPaths: readonly KeyPath[], property: number | string) {\n return keyPaths\n .filter(keyPath => (keyPath[0] === KEYPATH_WILDCARD && typeof property === 'number') || keyPath[0] === property)\n .map(keyPath => keyPath.slice(1));\n}\n\nfunction visitNode<T>(value: unknown, allowedKeypaths: readonly KeyPath[]): T {\n if (Array.isArray(value)) {\n return value.map((element, ii) => {\n const nextAllowedKeypaths = getNextAllowedKeypaths(allowedKeypaths, ii);\n return visitNode(element, nextAllowedKeypaths);\n }) as TypescriptBug33014;\n } else if (typeof value === 'object' && value !== null) {\n const out = {} as TypescriptBug33014;\n for (const [propName, innerValue] of Object.entries(value)) {\n const nextAllowedKeypaths = getNextAllowedKeypaths(allowedKeypaths, propName);\n out[propName] = visitNode(innerValue, nextAllowedKeypaths);\n }\n return out as TypescriptBug33014;\n } else if (\n typeof value === 'number' &&\n // The presence of an allowed keypath on the route to this value implies it's allowlisted;\n // Upcast the value to `bigint` unless an allowed keypath is present.\n allowedKeypaths.length === 0 &&\n // Only try to upcast an Integer to `bigint`\n Number.isInteger(value)\n ) {\n // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // upcasting `numbers` to `bigints`.\n return BigInt(value) as TypescriptBug33014;\n } else {\n return value as TypescriptBug33014;\n }\n}\n\nexport function patchResponseForSolanaLabsRpc<T>(\n rawResponse: unknown,\n methodName?: keyof ReturnType<typeof createSolanaRpcApi>\n): T {\n const allowedKeypaths = methodName ? ALLOWED_NUMERIC_KEYPATHS[methodName] : undefined;\n return visitNode(rawResponse, allowedKeypaths ?? []);\n}\n","import { IRpcApi, RpcRequest } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { patchParamsForSolanaLabsRpc } from '../params-patcher';\nimport { patchResponseForSolanaLabsRpc } from '../response-patcher';\nimport { GetAccountInfoApi } from './getAccountInfo';\nimport { GetBalanceApi } from './getBalance';\nimport { GetBlockCommitmentApi } from './getBlockCommitment';\nimport { GetBlockHeightApi } from './getBlockHeight';\nimport { GetBlockProductionApi } from './getBlockProduction';\nimport { GetBlocksApi } from './getBlocks';\nimport { GetBlocksWithLimitApi } from './getBlocksWithLimit';\nimport { GetBlockTimeApi } from './getBlockTime';\nimport { GetClusterNodesApi } from './getClusterNodes';\nimport { GetEpochInfoApi } from './getEpochInfo';\nimport { GetEpochScheduleApi } from './getEpochSchedule';\nimport { GetFeeForMessageApi } from './getFeeForMessage';\nimport { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';\nimport { GetGenesisHashApi } from './getGenesisHash';\nimport { GetHealthApi } from './getHealth';\nimport { GetHighestSnapshotSlotApi } from './getHighestSnapshotSlot';\nimport { GetIdentityApi } from './getIdentity';\nimport { GetInflationGovernorApi } from './getInflationGovernor';\nimport { GetInflationRateApi } from './getInflationRate';\nimport { GetInflationRewardApi } from './getInflationReward';\nimport { GetLargestAccountsApi } from './getLargestAccounts';\nimport { GetLatestBlockhashApi } from './getLatestBlockhash';\nimport { GetLeaderScheduleApi } from './getLeaderSchedule';\nimport { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';\nimport { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';\nimport { GetMinimumBalanceForRentExemptionApi } from './getMinimumBalanceForRentExemption';\nimport { GetMultipleAccountsApi } from './getMultipleAccounts';\nimport { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';\nimport { GetRecentPrioritizationFeesApi } from './getRecentPrioritizationFees';\nimport { GetSignaturesForAddressApi } from './getSignaturesForAddress';\nimport { GetSignatureStatusesApi } from './getSignatureStatuses';\nimport { GetSlotApi } from './getSlot';\nimport { GetSlotLeaderApi } from './getSlotLeader';\nimport { GetSlotLeadersApi } from './getSlotLeaders';\nimport { GetStakeActivationApi } from './getStakeActivation';\nimport { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';\nimport { GetSupplyApi } from './getSupply';\nimport { GetTokenAccountBalanceApi } from './getTokenAccountBalance';\nimport { GetTokenLargestAccountsApi } from './getTokenLargestAccounts';\nimport { GetTokenSupplyApi } from './getTokenSupply';\nimport { GetTransactionApi } from './getTransaction';\nimport { GetTransactionCountApi } from './getTransactionCount';\nimport { GetVersionApi } from './getVersion';\nimport { GetVoteAccountsApi } from './getVoteAccounts';\nimport { IsBlockhashValidApi } from './isBlockhashValid';\nimport { MinimumLedgerSlotApi } from './minimumLedgerSlot';\nimport { RequestAirdropApi } from './requestAirdrop';\nimport { SendTransactionApi } from './sendTransaction';\n\ntype Config = Readonly<{\n onIntegerOverflow?: (methodName: string, keyPath: (number | string)[], value: bigint) => void;\n}>;\n\nexport type SolanaRpcMethods = GetAccountInfoApi &\n GetBalanceApi &\n GetBlockCommitmentApi &\n GetBlockHeightApi &\n GetBlockProductionApi &\n GetBlocksApi &\n GetBlocksWithLimitApi &\n GetBlockTimeApi &\n GetClusterNodesApi &\n GetEpochInfoApi &\n GetEpochScheduleApi &\n GetFeeForMessageApi &\n GetFirstAvailableBlockApi &\n GetGenesisHashApi &\n GetHealthApi &\n GetHighestSnapshotSlotApi &\n GetIdentityApi &\n GetInflationGovernorApi &\n GetInflationRateApi &\n GetInflationRewardApi &\n GetLargestAccountsApi &\n GetLatestBlockhashApi &\n GetLeaderScheduleApi &\n GetMaxRetransmitSlotApi &\n GetMaxShredInsertSlotApi &\n GetMinimumBalanceForRentExemptionApi &\n GetMultipleAccountsApi &\n GetRecentPerformanceSamplesApi &\n GetRecentPrioritizationFeesApi &\n GetSignaturesForAddressApi &\n GetSignatureStatusesApi &\n GetSlotApi &\n GetSlotLeaderApi &\n GetSlotLeadersApi &\n GetStakeActivationApi &\n GetStakeMinimumDelegationApi &\n GetSupplyApi &\n GetTokenAccountBalanceApi &\n GetTokenLargestAccountsApi &\n GetTokenSupplyApi &\n GetTransactionApi &\n GetTransactionCountApi &\n GetVersionApi &\n GetVoteAccountsApi &\n IsBlockhashValidApi &\n MinimumLedgerSlotApi &\n RequestAirdropApi &\n SendTransactionApi;\n\nexport type { Commitment } from './common';\n\nexport function createSolanaRpcApi(config?: Config): IRpcApi<SolanaRpcMethods> {\n return new Proxy({} as IRpcApi<SolanaRpcMethods>, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get<TMethodName extends keyof IRpcApi<SolanaRpcMethods>>(\n ...args: Parameters<NonNullable<ProxyHandler<IRpcApi<SolanaRpcMethods>>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof SolanaRpcMethods;\n return function (\n ...rawParams: Parameters<\n SolanaRpcMethods[TMethodName] extends CallableFunction ? SolanaRpcMethods[TMethodName] : never\n >\n ): RpcRequest<ReturnType<SolanaRpcMethods[TMethodName]>> {\n const handleIntegerOverflow = config?.onIntegerOverflow;\n const params = patchParamsForSolanaLabsRpc(\n rawParams,\n handleIntegerOverflow\n ? (keyPath, value) => handleIntegerOverflow(methodName, keyPath, value)\n : undefined\n );\n return {\n methodName,\n params,\n responseProcessor: rawResponse => patchResponseForSolanaLabsRpc(rawResponse, methodName),\n };\n };\n },\n });\n}\n","// Keep in sync with https://github.com/solana-labs/solana/blob/master/rpc-client-api/src/custom_error.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJsonRpcErrorCode = {\n JSON_RPC_INVALID_PARAMS: -32602,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n} as const;\ntype SolanaJsonRpcErrorCodeEnum = (typeof SolanaJsonRpcErrorCode)[keyof typeof SolanaJsonRpcErrorCode];\n\ntype SolanaJsonRpcErrorDetails = Readonly<{\n code: number;\n data?: unknown;\n message: string;\n}>;\n\nexport class SolanaJsonRpcError extends Error {\n readonly code: SolanaJsonRpcErrorCodeEnum;\n readonly data: unknown;\n constructor(details: SolanaJsonRpcErrorDetails) {\n super(`JSON-RPC 2.0 error (${details.code}): ${details.message}`);\n Error.captureStackTrace(this, this.constructor);\n this.code = details.code as SolanaJsonRpcErrorCodeEnum;\n this.data = details.data;\n }\n get name() {\n return 'SolanaJsonRpcError';\n }\n}\n","let _nextMessageId = 0;\nexport function getNextMessageId() {\n const id = _nextMessageId;\n _nextMessageId = (_nextMessageId + 1) % Number.MAX_SAFE_INTEGER;\n return id;\n}\n","import { getNextMessageId } from './json-rpc-message-id';\n\nexport function createJsonRpcMessage<TParams>(method: string, params: TParams) {\n return {\n id: getNextMessageId(),\n jsonrpc: '2.0',\n method,\n params,\n };\n}\n","import { SolanaJsonRpcError } from './json-rpc-errors';\nimport { createJsonRpcMessage } from './json-rpc-message';\nimport { PendingRpcRequest, Rpc, RpcConfig, RpcRequest, SendOptions } from './json-rpc-types';\n\ninterface IHasIdentifier {\n readonly id: number;\n}\ntype JsonRpcResponse<TResponse> = IHasIdentifier &\n Readonly<{ result: TResponse } | { error: { code: number; message: string; data?: unknown } }>;\n\nfunction createPendingRpcRequest<TRpcMethods, TResponse>(\n rpcConfig: RpcConfig<TRpcMethods>,\n pendingRequest: RpcRequest<TResponse>\n): PendingRpcRequest<TResponse> {\n return {\n async send(options?: SendOptions): Promise<TResponse> {\n const { methodName, params, responseProcessor } = pendingRequest;\n const payload = createJsonRpcMessage(methodName, params);\n const response = await rpcConfig.transport<JsonRpcResponse<unknown>>({\n payload,\n signal: options?.abortSignal,\n });\n if ('error' in response) {\n throw new SolanaJsonRpcError(response.error);\n } else {\n return (responseProcessor ? responseProcessor(response.result) : response.result) as TResponse;\n }\n },\n };\n}\n\nfunction makeProxy<TRpcMethods>(rpcConfig: RpcConfig<TRpcMethods>): Rpc<TRpcMethods> {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n return function (...rawParams: unknown[]) {\n const methodName = p.toString();\n const createRpcRequest = Reflect.get(target, methodName, receiver);\n const newRequest = createRpcRequest\n ? createRpcRequest(...rawParams)\n : { methodName, params: rawParams };\n return createPendingRpcRequest(rpcConfig, newRequest);\n };\n },\n }) as Rpc<TRpcMethods>;\n}\n\nexport function createJsonRpc<TRpcMethods>(rpcConfig: RpcConfig<TRpcMethods>): Rpc<TRpcMethods> {\n return makeProxy(rpcConfig);\n}\n","export default globalThis.fetch;\n","type SolanaHttpErrorDetails = Readonly<{\n statusCode: number;\n message: string;\n}>;\n\nexport class SolanaHttpError extends Error {\n readonly statusCode: number;\n constructor(details: SolanaHttpErrorDetails) {\n super(`HTTP error (${details.statusCode}): ${details.message}`);\n Error.captureStackTrace(this, this.constructor);\n this.statusCode = details.statusCode;\n }\n get name() {\n return 'SolanaHttpError';\n }\n}\n","export type AllowedHttpRequestHeaders = Readonly<\n { [headerName: string]: string } & {\n // Someone can still sneak a forbidden header past Typescript if they do something like\n // fOo-BaR, but at that point they deserve the runtime failure.\n [K in DisallowedHeaders | ForbiddenHeaders as\n | K // `Foo-Bar`\n | Capitalize<Lowercase<K>> // `Foo-bar`\n | Lowercase<K> // `foo-bar`\n | Uncapitalize<K> // `foo-Bar`\n // `FOO-BAR`\n | Uppercase<K>]?: never;\n }\n>;\n// These are headers that we simply don't allow the developer to override because they're\n// fundamental to the operation of the JSON-RPC transport.\ntype DisallowedHeaders = 'Accept' | 'Content-Length' | 'Content-Type' | 'Solana-Client';\ntype ForbiddenHeaders =\n | 'Accept-Charset'\n | 'Accept-Encoding'\n | 'Access-Control-Request-Headers'\n | 'Access-Control-Request-Method'\n | 'Connection'\n | 'Content-Length'\n | 'Cookie'\n | 'Date'\n | 'DNT'\n | 'Expect'\n | 'Host'\n | 'Keep-Alive'\n | 'Origin'\n | 'Permissions-Policy'\n // No currently available Typescript technique allows you to match on a prefix.\n // | 'Proxy-'\n // | 'Sec-'\n | 'Referer'\n | 'TE'\n | 'Trailer'\n | 'Transfer-Encoding'\n | 'Upgrade'\n | 'Via';\n\n// These are headers which are fundamental to the JSON-RPC transport, and must not be modified.\nconst DISALLOWED_HEADERS: Record<string, boolean> = {\n accept: true,\n 'content-length': true,\n 'content-type': true,\n};\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS: Record<string, boolean> = {\n 'accept-charset': true,\n 'accept-encoding': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n 'permissions-policy': true,\n // No currently available Typescript technique allows you to match on a prefix.\n // 'proxy-':true,\n // 'sec-':true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n via: true,\n};\n\nexport function assertIsAllowedHttpRequestHeaders(\n headers: Record<string, string>\n): asserts headers is AllowedHttpRequestHeaders {\n const badHeaders = Object.keys(headers).filter(headerName => {\n const lowercaseHeaderName = headerName.toLowerCase();\n return (\n DISALLOWED_HEADERS[headerName.toLowerCase()] === true ||\n FORBIDDEN_HEADERS[headerName.toLowerCase()] === true ||\n lowercaseHeaderName.startsWith('proxy-') ||\n lowercaseHeaderName.startsWith('sec-')\n );\n });\n if (badHeaders.length > 0) {\n throw new Error(\n `${badHeaders.length > 1 ? 'These headers are' : 'This header is'} forbidden: ` +\n `\\`${badHeaders.join('`, `')}\\`. Learn more at ` +\n 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.'\n );\n }\n}\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers, such as those defined\n * in the `DisallowedHeaders` type.\n */\nexport function normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n","import type { Agent as NodeHttpAgent } from 'node:http';\nimport type { Agent as NodeHttpsAgent } from 'node:https';\n\nimport fetchImpl from 'fetch-impl';\n\nimport { IRpcTransport } from '../transport-types';\nimport { SolanaHttpError } from './http-transport-errors';\nimport {\n AllowedHttpRequestHeaders,\n assertIsAllowedHttpRequestHeaders,\n normalizeHeaders,\n} from './http-transport-headers';\n\ntype Config = Readonly<{\n headers?: AllowedHttpRequestHeaders;\n httpAgentNodeOnly?: NodeHttpAgent | NodeHttpsAgent | ((parsedUrl: URL) => NodeHttpAgent | NodeHttpsAgent);\n url: string;\n}>;\n\nexport function createHttpTransport({ httpAgentNodeOnly, headers, url }: Config): IRpcTransport {\n if (__DEV__ && headers) {\n assertIsAllowedHttpRequestHeaders(headers);\n }\n const agent = __NODEJS__ ? httpAgentNodeOnly : undefined;\n if (__DEV__ && httpAgentNodeOnly != null) {\n console.warn(\n 'createHttpTransport(): The `httpAgentNodeOnly` config you supplied has been ' +\n 'ignored; HTTP agents are only usable in Node environments.'\n );\n }\n const customHeaders = headers && normalizeHeaders(headers);\n return async function makeHttpRequest<TResponse>({\n payload,\n signal,\n }: Parameters<IRpcTransport>[0]): Promise<TResponse> {\n const body = JSON.stringify(payload);\n const requestInfo = {\n agent,\n body,\n headers: {\n ...customHeaders,\n // Keep these headers lowercase so they will override any user-supplied headers above.\n accept: 'application/json',\n 'content-length': body.length.toString(),\n 'content-type': 'application/json; charset=utf-8',\n },\n method: 'POST',\n signal,\n };\n const response = await fetchImpl(url, requestInfo);\n if (!response.ok) {\n throw new SolanaHttpError({\n message: response.statusText,\n statusCode: response.status,\n });\n }\n return (await response.json()) as TResponse;\n };\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\n\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return getRpcTransportWithRequestCoalescing(\n createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }),\n getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
|