@bitgo-beta/sdk-coin-sol 7.6.4-beta.71 → 7.6.4-beta.710

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.
Files changed (496) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/index.d.ts.map +1 -0
  4. package/dist/{src → cjs/src}/index.js +1 -1
  5. package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
  6. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  7. package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
  8. package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
  11. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +128 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +311 -0
  14. package/dist/{src → cjs/src}/lib/constants.d.ts +89 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +269 -0
  17. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  19. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  20. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
  22. package/dist/cjs/src/lib/iface.d.ts +526 -0
  23. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  24. package/dist/cjs/src/lib/iface.js +7 -0
  25. package/dist/{src → cjs/src}/lib/index.d.ts +5 -0
  26. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/index.js +93 -0
  28. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
  29. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  30. package/dist/cjs/src/lib/instructionParamsFactory.js +1220 -0
  31. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  33. package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
  34. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/keyPair.js +112 -0
  36. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  37. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  38. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  40. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  43. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  45. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  46. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
  47. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
  49. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  50. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
  52. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
  53. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  54. package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
  55. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +30 -0
  56. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  57. package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +205 -0
  58. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
  59. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
  61. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
  62. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
  63. package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
  64. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  65. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  66. package/dist/cjs/src/lib/solInstructionFactory.js +1094 -0
  67. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  68. package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
  69. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  71. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
  73. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
  75. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  77. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
  79. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  80. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  81. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  82. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  83. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  84. package/dist/cjs/src/lib/tokenExtensions.js +105 -0
  85. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  86. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  87. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  88. package/dist/{src → cjs/src}/lib/transaction.d.ts +22 -0
  89. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  90. package/dist/cjs/src/lib/transaction.js +661 -0
  91. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +9 -1
  92. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  93. package/dist/cjs/src/lib/transactionBuilder.js +388 -0
  94. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
  95. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  96. package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -0
  97. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  98. package/dist/cjs/src/lib/transferBuilder.js +81 -0
  99. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  100. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  101. package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
  102. package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
  103. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  104. package/dist/cjs/src/lib/utils.js +657 -0
  105. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  106. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  107. package/dist/cjs/src/register.d.ts +5 -0
  108. package/dist/cjs/src/register.d.ts.map +1 -0
  109. package/dist/cjs/src/register.js +29 -0
  110. package/dist/{src → cjs/src}/sol.d.ts +114 -3
  111. package/dist/cjs/src/sol.d.ts.map +1 -0
  112. package/dist/cjs/src/sol.js +1670 -0
  113. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  114. package/dist/cjs/src/solToken.d.ts.map +1 -0
  115. package/dist/cjs/src/solToken.js +79 -0
  116. package/dist/cjs/src/tsol.d.ts.map +1 -0
  117. package/dist/cjs/src/tsol.js +24 -0
  118. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  119. package/dist/cjs/test/fixtures/sol.js +1433 -0
  120. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  121. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  122. package/dist/cjs/test/resources/sol.js +320 -0
  123. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  124. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  126. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  128. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  130. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  132. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  134. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  135. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  136. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  137. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  138. package/dist/cjs/test/unit/keyPair.js +177 -0
  139. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  141. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  142. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  143. package/dist/cjs/test/unit/register.d.ts +2 -0
  144. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  145. package/dist/cjs/test/unit/register.js +65 -0
  146. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  147. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  148. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  149. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  150. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  151. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  152. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  153. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  154. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  155. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  156. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  157. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  158. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  159. package/dist/cjs/test/unit/sol.js +5038 -0
  160. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  162. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  163. package/dist/cjs/test/unit/solToken.js +37 -0
  164. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  165. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  166. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  167. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  168. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  169. package/dist/cjs/test/unit/tokenExtensions.js +58 -0
  170. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  171. package/dist/cjs/test/unit/transaction.js +1108 -0
  172. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  174. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  175. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  176. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  177. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  178. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  179. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  180. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  181. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
  182. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  183. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  184. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +144 -0
  185. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  186. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  187. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
  188. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  189. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  190. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  192. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  193. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  194. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  195. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  196. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  198. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  199. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  200. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  201. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  202. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  204. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  205. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  206. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  207. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  208. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  210. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  211. package/dist/cjs/test/unit/utils.js +628 -0
  212. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  213. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  214. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  215. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  216. package/dist/esm/index.d.ts +7 -0
  217. package/dist/esm/index.js +7 -0
  218. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  219. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  220. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  221. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  222. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  223. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  224. package/dist/esm/lib/confidentialTransferBuilder.d.ts +128 -0
  225. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  226. package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
  227. package/dist/esm/lib/constants.d.ts +227 -0
  228. package/dist/esm/lib/constants.d.ts.map +1 -0
  229. package/dist/esm/lib/constants.js +266 -0
  230. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  231. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  232. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  233. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  234. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  235. package/dist/esm/lib/iface.d.ts +526 -0
  236. package/dist/esm/lib/iface.d.ts.map +1 -0
  237. package/dist/esm/lib/iface.js +3 -0
  238. package/dist/esm/lib/index.d.ts +27 -0
  239. package/dist/esm/lib/index.d.ts.map +1 -0
  240. package/dist/esm/lib/index.js +27 -0
  241. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  242. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  243. package/dist/esm/lib/instructionParamsFactory.js +1212 -0
  244. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  245. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  246. package/dist/esm/lib/keyPair.d.ts +32 -0
  247. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  248. package/dist/esm/lib/keyPair.js +75 -0
  249. package/dist/esm/lib/messages/index.d.ts +2 -0
  250. package/dist/esm/lib/messages/index.js +2 -0
  251. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  252. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  253. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  254. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  255. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  256. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  257. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  258. package/dist/esm/lib/scaledUiAmount.js +108 -0
  259. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  260. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  261. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  262. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  263. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  264. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  265. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  266. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  267. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  268. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +30 -0
  269. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  270. package/dist/esm/lib/serialization/compileTransactionMessage.js +202 -0
  271. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  272. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  273. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  274. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  275. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  276. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  277. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  278. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  279. package/dist/esm/lib/solInstructionFactory.js +1088 -0
  280. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  281. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  282. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  283. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  284. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  285. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  286. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  287. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  288. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  289. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  290. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  291. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  292. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  293. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  294. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  295. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  296. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  297. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  298. package/dist/esm/lib/token2022Resolve.js +194 -0
  299. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  300. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  301. package/dist/esm/lib/tokenExtensions.js +99 -0
  302. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  303. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  304. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  305. package/dist/esm/lib/transaction.d.ts +125 -0
  306. package/dist/esm/lib/transaction.d.ts.map +1 -0
  307. package/dist/esm/lib/transaction.js +654 -0
  308. package/dist/esm/lib/transactionBuilder.d.ts +136 -0
  309. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  310. package/dist/esm/lib/transactionBuilder.js +381 -0
  311. package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
  312. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  313. package/dist/esm/lib/transactionBuilderFactory.js +218 -0
  314. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  315. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  316. package/dist/esm/lib/transferBuilder.js +74 -0
  317. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  318. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  319. package/dist/esm/lib/transferBuilderV2.js +245 -0
  320. package/dist/esm/lib/utils.d.ts +205 -0
  321. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  322. package/dist/esm/lib/utils.js +619 -0
  323. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  324. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  325. package/dist/esm/register.d.ts +5 -0
  326. package/dist/esm/register.d.ts.map +1 -0
  327. package/dist/esm/register.js +24 -0
  328. package/dist/esm/sol.d.ts +351 -0
  329. package/dist/esm/sol.d.ts.map +1 -0
  330. package/dist/esm/sol.js +1629 -0
  331. package/dist/esm/solToken.d.ts +44 -0
  332. package/dist/esm/solToken.d.ts.map +1 -0
  333. package/dist/esm/solToken.js +75 -0
  334. package/dist/esm/tsol.d.ts +11 -0
  335. package/dist/esm/tsol.js +20 -0
  336. package/package.json +36 -16
  337. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  338. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  339. package/dist/src/config/token2022StaticConfig.js +0 -50
  340. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  341. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  342. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  343. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  344. package/dist/src/lib/closeAtaBuilder.js +0 -69
  345. package/dist/src/lib/constants.d.ts.map +0 -1
  346. package/dist/src/lib/constants.js +0 -171
  347. package/dist/src/lib/customInstructionBuilder.js +0 -289
  348. package/dist/src/lib/iface.d.ts +0 -244
  349. package/dist/src/lib/iface.d.ts.map +0 -1
  350. package/dist/src/lib/iface.js +0 -7
  351. package/dist/src/lib/index.d.ts.map +0 -1
  352. package/dist/src/lib/index.js +0 -77
  353. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  354. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  355. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  356. package/dist/src/lib/keyPair.d.ts.map +0 -1
  357. package/dist/src/lib/keyPair.js +0 -63
  358. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  359. package/dist/src/lib/solInstructionFactory.js +0 -572
  360. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  361. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  362. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  363. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  364. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  365. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  366. package/dist/src/lib/token2022Config.d.ts +0 -44
  367. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  368. package/dist/src/lib/token2022Config.js +0 -27
  369. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  370. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  371. package/dist/src/lib/transaction.d.ts.map +0 -1
  372. package/dist/src/lib/transaction.js +0 -595
  373. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  374. package/dist/src/lib/transactionBuilder.js +0 -380
  375. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  376. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  377. package/dist/src/lib/transferBuilder.js +0 -70
  378. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  379. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  380. package/dist/src/lib/transferBuilderV2.js +0 -210
  381. package/dist/src/lib/utils.js +0 -589
  382. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  383. package/dist/src/register.d.ts +0 -3
  384. package/dist/src/register.d.ts.map +0 -1
  385. package/dist/src/register.js +0 -15
  386. package/dist/src/sol.d.ts.map +0 -1
  387. package/dist/src/sol.js +0 -1324
  388. package/dist/src/solToken.d.ts.map +0 -1
  389. package/dist/src/solToken.js +0 -69
  390. package/dist/src/tsol.js +0 -24
  391. package/dist/test/fixtures/sol.js +0 -1433
  392. package/dist/test/resources/sol.d.ts.map +0 -1
  393. package/dist/test/resources/sol.js +0 -320
  394. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  395. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  396. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  397. package/dist/test/unit/getBuilderFactory.js +0 -10
  398. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  399. package/dist/test/unit/instructionParamsFactory.js +0 -412
  400. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  401. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  402. package/dist/test/unit/keyPair.js +0 -177
  403. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  404. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  405. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  406. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  407. package/dist/test/unit/sol.js +0 -3180
  408. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  409. package/dist/test/unit/solInstructionFactory.js +0 -454
  410. package/dist/test/unit/solToken.d.ts.map +0 -1
  411. package/dist/test/unit/solToken.js +0 -31
  412. package/dist/test/unit/transaction.d.ts.map +0 -1
  413. package/dist/test/unit/transaction.js +0 -983
  414. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  415. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  416. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  417. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  418. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  419. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  420. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  421. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  422. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  423. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  424. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  425. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  426. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  427. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  428. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  429. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  430. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  431. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  432. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  433. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  434. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  435. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  436. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  437. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  438. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  439. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  440. package/dist/test/unit/utils.js +0 -517
  441. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  442. package/dist/test/unit/versionedTransaction.js +0 -207
  443. package/dist/tsconfig.tsbuildinfo +0 -1
  444. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  445. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  446. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  447. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  448. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  449. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  450. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  451. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  452. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  453. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  454. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  455. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  456. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  457. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  458. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  459. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  460. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  461. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  462. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  463. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  464. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  465. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  466. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  467. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  468. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  469. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  470. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  471. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  472. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  473. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  474. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  475. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  476. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  477. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  478. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  479. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  480. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  481. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  482. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  483. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  484. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  485. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  486. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  487. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  488. /package/dist/{src → esm}/index.d.ts.map +0 -0
  489. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  490. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  491. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  492. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  493. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  494. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  495. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  496. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2026 BitGo, Inc. All Rights Reserved.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rawToUiAmountString = rawToUiAmountString;
7
+ exports.uiAmountToRaw = uiAmountToRaw;
8
+ const DECIMAL_LITERAL_PATTERN = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/;
9
+ /**
10
+ * Parse an exact decimal string into scaled-integer parts. Rejects scientific
11
+ * notation, empty strings, NaN/Infinity, and non-numeric input.
12
+ *
13
+ * @param value The decimal literal, e.g. "0.001"; "1e-9" must be written as "0.000000001"
14
+ */
15
+ function parseDecimal(value, what) {
16
+ if (typeof value !== 'string' || !DECIMAL_LITERAL_PATTERN.test(value)) {
17
+ throw new Error(`Invalid ${what} '${value}': expected a finite decimal string`);
18
+ }
19
+ const negative = value.startsWith('-');
20
+ const unsigned = negative || value.startsWith('+') ? value.slice(1) : value;
21
+ const [intPart = '0', fracPart = ''] = unsigned.split('.');
22
+ const digits = BigInt(intPart + fracPart || '0');
23
+ return { negative, digits, scale: fracPart.length };
24
+ }
25
+ /** Render ±digits/10^scale as a normalized decimal string (no trailing zeros, no "-0"). */
26
+ function toDecimalString({ negative, digits, scale }) {
27
+ if (digits === 0n) {
28
+ return '0';
29
+ }
30
+ let s = digits.toString().padStart(scale + 1, '0');
31
+ if (scale > 0) {
32
+ s = `${s.slice(0, -scale)}.${s.slice(-scale)}`;
33
+ s = s.replace(/0+$/, '').replace(/\.$/, '');
34
+ }
35
+ return negative ? `-${s}` : s;
36
+ }
37
+ /**
38
+ * Convert a raw base-unit amount to its scaled UI denomination.
39
+ *
40
+ * Exact by construction: the result is `raw * multiplier / 10^decimals`, whose
41
+ * exact decimal expansion never exceeds `multiplier scale + decimals` fraction
42
+ * digits, so no rounding ever occurs.
43
+ *
44
+ * @param raw Amount in raw base units (integer, >= 0)
45
+ * @param multiplier The mint's UiAmountMultiplier as a decimal string (> 0)
46
+ * @param decimals The mint's decimals (>= 0)
47
+ * @returns The exact UI amount as a decimal string
48
+ * @throws if any argument is malformed, the multiplier is not positive, or raw/decimals are negative
49
+ */
50
+ function rawToUiAmountString(raw, multiplier, decimals) {
51
+ if (typeof raw !== 'bigint') {
52
+ throw new Error(`Invalid raw amount '${String(raw)}': expected a BigInt of base units`);
53
+ }
54
+ if (raw < 0n) {
55
+ throw new Error(`Invalid raw amount '${raw}': must be non-negative`);
56
+ }
57
+ if (!Number.isInteger(decimals) || decimals < 0) {
58
+ throw new Error(`Invalid decimals '${decimals}': must be a non-negative integer`);
59
+ }
60
+ const mult = parseDecimal(multiplier, 'multiplier');
61
+ if (mult.negative || mult.digits === 0n) {
62
+ throw new Error(`Invalid multiplier '${multiplier}': must be positive`);
63
+ }
64
+ // ui = raw * (multDigits / 10^multScale) / 10^decimals
65
+ // = (raw * multDigits) / 10^(multScale + decimals) — exact, terminating expansion
66
+ const numerator = raw * mult.digits;
67
+ const fractionDigits = mult.scale + decimals;
68
+ const denominator = 10n ** BigInt(fractionDigits);
69
+ const quotient = numerator / denominator;
70
+ const remainder = numerator % denominator;
71
+ if (remainder === 0n) {
72
+ return toDecimalString({ negative: false, digits: quotient, scale: 0 });
73
+ }
74
+ // The denominator IS 10^fractionDigits, so the exact fraction digits are `remainder`
75
+ // zero-padded to fractionDigits — no long division needed.
76
+ return toDecimalString({
77
+ negative: false,
78
+ digits: quotient * 10n ** BigInt(fractionDigits) + remainder,
79
+ scale: fractionDigits,
80
+ });
81
+ }
82
+ /**
83
+ * Convert a scaled UI denomination to raw base units. Inverse of
84
+ * {@link rawToUiAmountString}: flooring an exact ui string reproduces the
85
+ * original raw amount.
86
+ *
87
+ * @param uiAmount The UI amount as a decimal string (>= 0)
88
+ * @param multiplier The mint's UiAmountMultiplier as a decimal string (> 0)
89
+ * @param decimals The mint's decimals (>= 0)
90
+ * @returns The raw amount in base units, floored to the integer unit
91
+ * @throws if any argument is malformed, the ui amount is negative, or the multiplier is not positive
92
+ */
93
+ function uiAmountToRaw(uiAmount, multiplier, decimals) {
94
+ if (!Number.isInteger(decimals) || decimals < 0) {
95
+ throw new Error(`Invalid decimals '${decimals}': must be a non-negative integer`);
96
+ }
97
+ const ui = parseDecimal(uiAmount, 'uiAmount');
98
+ if (ui.negative) {
99
+ throw new Error(`Invalid uiAmount '${uiAmount}': must be non-negative`);
100
+ }
101
+ const mult = parseDecimal(multiplier, 'multiplier');
102
+ if (mult.negative || mult.digits === 0n) {
103
+ throw new Error(`Invalid multiplier '${multiplier}': must be positive`);
104
+ }
105
+ // ui = uiDigits / 10^uiScale; multiplier = multDigits / 10^multScale
106
+ // raw = (uiDigits / 10^uiScale) * 10^decimals * (10^multScale / multDigits)
107
+ // = (uiDigits * 10^(decimals + multScale)) / (multDigits * 10^uiScale)
108
+ const numerator = ui.digits * 10n ** BigInt(decimals + mult.scale);
109
+ const denominator = mult.digits * 10n ** BigInt(ui.scale);
110
+ return numerator / denominator; // floor — raw base units are integers
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGVkVWlBbW91bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NjYWxlZFVpQW1vdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUF3RUgsa0RBaUNDO0FBYUQsc0NBbUJDO0FBOUdELE1BQU0sdUJBQXVCLEdBQUcsZ0NBQWdDLENBQUM7QUFFakU7Ozs7O0dBS0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBWTtJQUMvQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssS0FBSyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUM7SUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN0RCxDQUFDO0FBRUQsMkZBQTJGO0FBQzNGLFNBQVMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxL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QU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFFBQVEsbUNBQW1DLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixRQUFRLHlCQUF5QixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsVUFBVSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsNEVBQTRFO0lBQzVFLDJFQUEyRTtJQUMzRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELE9BQU8sU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLHNDQUFzQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBCaXRHbywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qKlxuICogU29sYW5hIFRva2VuLTIwMjIgU2NhbGVkVWlBbW91bnQgY29udmVyc2lvbiB1dGlsaXRpZXMgKENTSExELTE2ODgpLlxuICpcbiAqIEEgc2NhbGVkLVVJIG1pbnQgY2FycmllcyBhIGBVaUFtb3VudE11bHRpcGxpZXJgLiBPbi1jaGFpbiAoYW5kIHRoZXJlZm9yZSBpblxuICogZXZlcnkgc2VuZC9idWlsZCBwYXRoIG9mIHRoaXMgU0RLKSBhbW91bnRzIGFyZSByYXcgYmFzZSB1bml0czsgdGhlIFVJXG4gKiBkZW5vbWluYXRpb24gaXMgYHJhdyAqIG11bHRpcGxpZXIgLyAxMF5kZWNpbWFsc2AsIG1hdGNoaW5nIHRoZSBTUExcbiAqIHRva2VuLTIwMjIgU2NhbGVkVWlBbW91bnQgZXh0ZW5zaW9uIHNlbWFudGljcy4gVGhlc2UgdXRpbGl0aWVzIGV4aXN0IGZvclxuICogZGlzcGxheSwgcmVjb25jaWxpYXRpb24sIGFuZCBiYWxhbmNlIGNvbnZlcnNpb25zIG9ubHkg4oCUIHRoZXkgbmV2ZXIgZmVlZFxuICogdHJhbnNhY3Rpb24gYnVpbGRpbmcsIHdoaWNoIHN0YXlzIHJhdy1kZW5vbWluYXRlZC5cbiAqXG4gKiBBbGwgYXJpdGhtZXRpYyBpcyBleGFjdCBzY2FsZWQtaW50ZWdlciAoQmlnSW50KSBtYXRoIOKAlCBmbG9hdHMgYXJlIG5ldmVyIHVzZWQsXG4gKiBzbyBjb252ZXJzaW9ucyBhcmUgZGV0ZXJtaW5pc3RpYyBhY3Jvc3MgcnVudGltZXMgYW5kIGxvc2Ugbm8gcHJlY2lzaW9uOlxuICogYHJhd1RvVWlBbW91bnRTdHJpbmdgIGlzIGFsd2F5cyBleGFjdCAodGhlIGRpdmlzb3IgaXMgYSBwb3dlciBvZiB0ZW4sIHNvIHRoZVxuICogZXhhY3QgZXhwYW5zaW9uIGZpdHMgd2l0aGluIGBtdWx0aXBsaWVyU2NhbGUgKyBkZWNpbWFsc2AgZnJhY3Rpb24gZGlnaXRzKS5cbiAqIGB1aUFtb3VudFRvUmF3YCBmbG9vcnMgdG8gYW4gaW50ZWdlciBudW1iZXIgb2YgYmFzZSB1bml0cyBhbmQgaXMgdGhlIGV4YWN0XG4gKiBpbnZlcnNlIG9mIGByYXdUb1VpQW1vdW50U3RyaW5nYCB3aGVuZXZlciB0aGUgdWkgc3RyaW5nIGlzIGV4YWN0LlxuICovXG5cbi8qKiBTaWduaWZpY2FuZCBhbmQgc2NhbGUgb2YgYSBkZWNpbWFsIGxpdGVyYWw6IHZhbHVlID0gwrFkaWdpdHMgLyAxMF5zY2FsZS4gKi9cbmludGVyZmFjZSBQYXJzZWREZWNpbWFsIHtcbiAgbmVnYXRpdmU6IGJvb2xlYW47XG4gIGRpZ2l0czogYmlnaW50O1xuICBzY2FsZTogbnVtYmVyO1xufVxuXG5jb25zdCBERUNJTUFMX0xJVEVSQUxfUEFUVEVSTiA9IC9eWystXT8oPzpcXGQrKD86XFwuXFxkKik/fFxcLlxcZCspJC87XG5cbi8qKlxuICogUGFyc2UgYW4gZXhhY3QgZGVjaW1hbCBzdHJpbmcgaW50byBzY2FsZWQtaW50ZWdlciBwYXJ0cy4gUmVqZWN0cyBzY2llbnRpZmljXG4gKiBub3RhdGlvbiwgZW1wdHkgc3RyaW5ncywgTmFOL0luZmluaXR5LCBhbmQgbm9uLW51bWVyaWMgaW5wdXQuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBkZWNpbWFsIGxpdGVyYWwsIGUuZy4gXCIwLjAwMVwiOyBcIjFlLTlcIiBtdXN0IGJlIHdyaXR0ZW4gYXMgXCIwLjAwMDAwMDAwMVwiXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGVjaW1hbCh2YWx1ZTogc3RyaW5nLCB3aGF0OiBzdHJpbmcpOiBQYXJzZWREZWNpbWFsIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgIURFQ0lNQUxfTElURVJBTF9QQVRURVJOLnRlc3QodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7d2hhdH0gJyR7dmFsdWV9JzogZXhwZWN0ZWQgYSBmaW5pdGUgZGVjaW1hbCBzdHJpbmdgKTtcbiAgfVxuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlLnN0YXJ0c1dpdGgoJy0nKTtcbiAgY29uc3QgdW5zaWduZWQgPSBuZWdhdGl2ZSB8fCB2YWx1ZS5zdGFydHNXaXRoKCcrJykgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlO1xuICBjb25zdCBbaW50UGFydCA9ICcwJywgZnJhY1BhcnQgPSAnJ10gPSB1bnNpZ25lZC5zcGxpdCgnLicpO1xuICBjb25zdCBkaWdpdHMgPSBCaWdJbnQoaW50UGFydCArIGZyYWNQYXJ0IHx8ICcwJyk7XG4gIHJldHVybiB7IG5lZ2F0aXZlLCBkaWdpdHMsIHNjYWxlOiBmcmFjUGFydC5sZW5ndGggfTtcbn1cblxuLyoqIFJlbmRlciDCsWRpZ2l0cy8xMF5zY2FsZSBhcyBhIG5vcm1hbGl6ZWQgZGVjaW1hbCBzdHJpbmcgKG5vIHRyYWlsaW5nIHplcm9zLCBubyBcIi0wXCIpLiAqL1xuZnVuY3Rpb24gdG9EZWNpbWFsU3RyaW5nKHsgbmVnYXRpdmUsIGRpZ2l0cywgc2NhbGUgfTogUGFyc2VkRGVjaW1hbCk6IHN0cmluZyB7XG4gIGlmIChkaWdpdHMgPT09IDBuKSB7XG4gICAgcmV0dXJuICcwJztcbiAgfVxuICBsZXQgcyA9IGRpZ2l0cy50b1N0cmluZygpLnBhZFN0YXJ0KHNjYWxlICsgMSwgJzAnKTtcbiAgaWYgKHNjYWxlID4gMCkge1xuICAgIHMgPSBgJHtzLnNsaWNlKDAsIC1zY2FsZSl9LiR7cy5zbGljZSgtc2NhbGUpfWA7XG4gICAgcyA9IHMucmVwbGFjZSgvMCskLywgJycpLnJlcGxhY2UoL1xcLiQvLCAnJyk7XG4gIH1cbiAgcmV0dXJuIG5lZ2F0aXZlID8gYC0ke3N9YCA6IHM7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHJhdyBiYXNlLXVuaXQgYW1vdW50IHRvIGl0cyBzY2FsZWQgVUkgZGVub21pbmF0aW9uLlxuICpcbiAqIEV4YWN0IGJ5IGNvbnN0cnVjdGlvbjogdGhlIHJlc3VsdCBpcyBgcmF3ICogbXVsdGlwbGllciAvIDEwXmRlY2ltYWxzYCwgd2hvc2VcbiAqIGV4YWN0IGRlY2ltYWwgZXhwYW5zaW9uIG5ldmVyIGV4Y2VlZHMgYG11bHRpcGxpZXIgc2NhbGUgKyBkZWNpbWFsc2AgZnJhY3Rpb25cbiAqIGRpZ2l0cywgc28gbm8gcm91bmRpbmcgZXZlciBvY2N1cnMuXG4gKlxuICogQHBhcmFtIHJhdyBBbW91bnQgaW4gcmF3IGJhc2UgdW5pdHMgKGludGVnZXIsID49IDApXG4gKiBAcGFyYW0gbXVsdGlwbGllciBUaGUgbWludCdzIFVpQW1vdW50TXVsdGlwbGllciBhcyBhIGRlY2ltYWwgc3RyaW5nICg+IDApXG4gKiBAcGFyYW0gZGVjaW1hbHMgVGhlIG1pbnQncyBkZWNpbWFscyAoPj0gMClcbiAqIEByZXR1cm5zIFRoZSBleGFjdCBVSSBhbW91bnQgYXMgYSBkZWNpbWFsIHN0cmluZ1xuICogQHRocm93cyBpZiBhbnkgYXJndW1lbnQgaXMgbWFsZm9ybWVkLCB0aGUgbXVsdGlwbGllciBpcyBub3QgcG9zaXRpdmUsIG9yIHJhdy9kZWNpbWFscyBhcmUgbmVnYXRpdmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhd1RvVWlBbW91bnRTdHJpbmcocmF3OiBiaWdpbnQsIG11bHRpcGxpZXI6IHN0cmluZywgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnYmlnaW50Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByYXcgYW1vdW50ICcke1N0cmluZyhyYXcpfSc6IGV4cGVjdGVkIGEgQmlnSW50IG9mIGJhc2UgdW5pdHNgKTtcbiAgfVxuICBpZiAocmF3IDwgMG4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmF3IGFtb3VudCAnJHtyYXd9JzogbXVzdCBiZSBub24tbmVnYXRpdmVgKTtcbiAgfVxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGVjaW1hbHMpIHx8IGRlY2ltYWxzIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWNpbWFscyAnJHtkZWNpbWFsc30nOiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBjb25zdCBtdWx0ID0gcGFyc2VEZWNpbWFsKG11bHRpcGxpZXIsICdtdWx0aXBsaWVyJyk7XG4gIGlmIChtdWx0Lm5lZ2F0aXZlIHx8IG11bHQuZGlnaXRzID09PSAwbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtdWx0aXBsaWVyICcke211bHRpcGxpZXJ9JzogbXVzdCBiZSBwb3NpdGl2ZWApO1xuICB9XG5cbiAgLy8gdWkgPSByYXcgKiAobXVsdERpZ2l0cyAvIDEwXm11bHRTY2FsZSkgLyAxMF5kZWNpbWFsc1xuICAvLyAgICA9IChyYXcgKiBtdWx0RGlnaXRzKSAvIDEwXihtdWx0U2NhbGUgKyBkZWNpbWFscykgICDigJQgZXhhY3QsIHRlcm1pbmF0aW5nIGV4cGFuc2lvblxuICBjb25zdCBudW1lcmF0b3IgPSByYXcgKiBtdWx0LmRpZ2l0cztcbiAgY29uc3QgZnJhY3Rpb25EaWdpdHMgPSBtdWx0LnNjYWxlICsgZGVjaW1hbHM7XG4gIGNvbnN0IGRlbm9taW5hdG9yID0gMTBuICoqIEJpZ0ludChmcmFjdGlvbkRpZ2l0cyk7XG5cbiAgY29uc3QgcXVvdGllbnQgPSBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjtcbiAgY29uc3QgcmVtYWluZGVyID0gbnVtZXJhdG9yICUgZGVub21pbmF0b3I7XG4gIGlmIChyZW1haW5kZXIgPT09IDBuKSB7XG4gICAgcmV0dXJuIHRvRGVjaW1hbFN0cmluZyh7IG5lZ2F0aXZlOiBmYWxzZSwgZGlnaXRzOiBxdW90aWVudCwgc2NhbGU6IDAgfSk7XG4gIH1cbiAgLy8gVGhlIGRlbm9taW5hdG9yIElTIDEwXmZyYWN0aW9uRGlnaXRzLCBzbyB0aGUgZXhhY3QgZnJhY3Rpb24gZGlnaXRzIGFyZSBgcmVtYWluZGVyYFxuICAvLyB6ZXJvLXBhZGRlZCB0byBmcmFjdGlvbkRpZ2l0cyDigJQgbm8gbG9uZyBkaXZpc2lvbiBuZWVkZWQuXG4gIHJldHVybiB0b0RlY2ltYWxTdHJpbmcoe1xuICAgIG5lZ2F0aXZlOiBmYWxzZSxcbiAgICBkaWdpdHM6IHF1b3RpZW50ICogMTBuICoqIEJpZ0ludChmcmFjdGlvbkRpZ2l0cykgKyByZW1haW5kZXIsXG4gICAgc2NhbGU6IGZyYWN0aW9uRGlnaXRzLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc2NhbGVkIFVJIGRlbm9taW5hdGlvbiB0byByYXcgYmFzZSB1bml0cy4gSW52ZXJzZSBvZlxuICoge0BsaW5rIHJhd1RvVWlBbW91bnRTdHJpbmd9OiBmbG9vcmluZyBhbiBleGFjdCB1aSBzdHJpbmcgcmVwcm9kdWNlcyB0aGVcbiAqIG9yaWdpbmFsIHJhdyBhbW91bnQuXG4gKlxuICogQHBhcmFtIHVpQW1vdW50IFRoZSBVSSBhbW91bnQgYXMgYSBkZWNpbWFsIHN0cmluZyAoPj0gMClcbiAqIEBwYXJhbSBtdWx0aXBsaWVyIFRoZSBtaW50J3MgVWlBbW91bnRNdWx0aXBsaWVyIGFzIGEgZGVjaW1hbCBzdHJpbmcgKD4gMClcbiAqIEBwYXJhbSBkZWNpbWFscyBUaGUgbWludCdzIGRlY2ltYWxzICg+PSAwKVxuICogQHJldHVybnMgVGhlIHJhdyBhbW91bnQgaW4gYmFzZSB1bml0cywgZmxvb3JlZCB0byB0aGUgaW50ZWdlciB1bml0XG4gKiBAdGhyb3dzIGlmIGFueSBhcmd1bWVudCBpcyBtYWxmb3JtZWQsIHRoZSB1aSBhbW91bnQgaXMgbmVnYXRpdmUsIG9yIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBwb3NpdGl2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdWlBbW91bnRUb1Jhdyh1aUFtb3VudDogc3RyaW5nLCBtdWx0aXBsaWVyOiBzdHJpbmcsIGRlY2ltYWxzOiBudW1iZXIpOiBiaWdpbnQge1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIoZGVjaW1hbHMpIHx8IGRlY2ltYWxzIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWNpbWFscyAnJHtkZWNpbWFsc30nOiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICBjb25zdCB1aSA9IHBhcnNlRGVjaW1hbCh1aUFtb3VudCwgJ3VpQW1vdW50Jyk7XG4gIGlmICh1aS5uZWdhdGl2ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1aUFtb3VudCAnJHt1aUFtb3VudH0nOiBtdXN0IGJlIG5vbi1uZWdhdGl2ZWApO1xuICB9XG4gIGNvbnN0IG11bHQgPSBwYXJzZURlY2ltYWwobXVsdGlwbGllciwgJ211bHRpcGxpZXInKTtcbiAgaWYgKG11bHQubmVnYXRpdmUgfHwgbXVsdC5kaWdpdHMgPT09IDBuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG11bHRpcGxpZXIgJyR7bXVsdGlwbGllcn0nOiBtdXN0IGJlIHBvc2l0aXZlYCk7XG4gIH1cblxuICAvLyB1aSA9IHVpRGlnaXRzIC8gMTBedWlTY2FsZTsgIG11bHRpcGxpZXIgPSBtdWx0RGlnaXRzIC8gMTBebXVsdFNjYWxlXG4gIC8vIHJhdyA9ICh1aURpZ2l0cyAvIDEwXnVpU2NhbGUpICogMTBeZGVjaW1hbHMgKiAoMTBebXVsdFNjYWxlIC8gbXVsdERpZ2l0cylcbiAgLy8gICAgID0gKHVpRGlnaXRzICogMTBeKGRlY2ltYWxzICsgbXVsdFNjYWxlKSkgLyAobXVsdERpZ2l0cyAqIDEwXnVpU2NhbGUpXG4gIGNvbnN0IG51bWVyYXRvciA9IHVpLmRpZ2l0cyAqIDEwbiAqKiBCaWdJbnQoZGVjaW1hbHMgKyBtdWx0LnNjYWxlKTtcbiAgY29uc3QgZGVub21pbmF0b3IgPSBtdWx0LmRpZ2l0cyAqIDEwbiAqKiBCaWdJbnQodWkuc2NhbGUpO1xuICByZXR1cm4gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7IC8vIGZsb29yIOKAlCByYXcgYmFzZSB1bml0cyBhcmUgaW50ZWdlcnNcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ /**
2
+ * v1 (SIMD-0296/0385) transaction config codec: bit mask + value encoding.
3
+ */
4
+ export declare const PRIORITY_FEE_BITS = 3;
5
+ export declare const COMPUTE_UNIT_LIMIT_BIT = 4;
6
+ export declare const LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = 8;
7
+ export declare const HEAP_SIZE_BIT = 16;
8
+ export type ConfigValue = {
9
+ kind: 'u32' | 'u64';
10
+ value: number | bigint;
11
+ };
12
+ export declare function encodeConfigMaskAndValues(config: {
13
+ computeUnitLimit: number | null;
14
+ heapSize: number | null;
15
+ loadedAccountsDataSizeLimit: number | null;
16
+ priorityFee: number | null;
17
+ }): {
18
+ mask: number;
19
+ values: ConfigValue[];
20
+ };
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,iBAAiB,IAAO,CAAC;AACtC,eAAO,MAAM,sBAAsB,IAAQ,CAAC;AAC5C,eAAO,MAAM,mCAAmC,IAAS,CAAC;AAC1D,eAAO,MAAM,aAAa,KAAU,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAoB1C"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * v1 (SIMD-0296/0385) transaction config codec: bit mask + value encoding.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HEAP_SIZE_BIT = exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = exports.COMPUTE_UNIT_LIMIT_BIT = exports.PRIORITY_FEE_BITS = void 0;
7
+ exports.encodeConfigMaskAndValues = encodeConfigMaskAndValues;
8
+ // Transaction config mask bits (mirror @solana/transaction-messages).
9
+ exports.PRIORITY_FEE_BITS = 0b11;
10
+ exports.COMPUTE_UNIT_LIMIT_BIT = 0b100;
11
+ exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT = 0b1000;
12
+ exports.HEAP_SIZE_BIT = 0b10000;
13
+ function encodeConfigMaskAndValues(config) {
14
+ let mask = 0;
15
+ const values = [];
16
+ if (config.priorityFee !== null) {
17
+ mask |= exports.PRIORITY_FEE_BITS;
18
+ values.push({ kind: 'u64', value: BigInt(config.priorityFee) });
19
+ }
20
+ if (config.computeUnitLimit !== null) {
21
+ mask |= exports.COMPUTE_UNIT_LIMIT_BIT;
22
+ values.push({ kind: 'u32', value: config.computeUnitLimit });
23
+ }
24
+ if (config.loadedAccountsDataSizeLimit !== null) {
25
+ mask |= exports.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT;
26
+ values.push({ kind: 'u32', value: config.loadedAccountsDataSizeLimit });
27
+ }
28
+ if (config.heapSize !== null) {
29
+ mask |= exports.HEAP_SIZE_BIT;
30
+ values.push({ kind: 'u32', value: config.heapSize });
31
+ }
32
+ return { mask, values };
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJpYWxpemF0aW9uL2NvZGVjcy92MS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFVSCw4REF5QkM7QUFqQ0Qsc0VBQXNFO0FBQ3pELFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQUEsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFFBQUEsbUNBQW1DLEdBQUcsTUFBTSxDQUFDO0FBQzdDLFFBQUEsYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUlyQyxTQUFnQix5QkFBeUIsQ0FBQyxNQUt6QztJQUNDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDakMsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSx5QkFBaUIsQ0FBQztRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSw4QkFBc0IsQ0FBQztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsMkJBQTJCLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLDJDQUFtQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLHFCQUFhLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHYxIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb24gY29uZmlnIGNvZGVjOiBiaXQgbWFzayArIHZhbHVlIGVuY29kaW5nLlxuICovXG5cbi8vIFRyYW5zYWN0aW9uIGNvbmZpZyBtYXNrIGJpdHMgKG1pcnJvciBAc29sYW5hL3RyYW5zYWN0aW9uLW1lc3NhZ2VzKS5cbmV4cG9ydCBjb25zdCBQUklPUklUWV9GRUVfQklUUyA9IDBiMTE7XG5leHBvcnQgY29uc3QgQ09NUFVURV9VTklUX0xJTUlUX0JJVCA9IDBiMTAwO1xuZXhwb3J0IGNvbnN0IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUID0gMGIxMDAwO1xuZXhwb3J0IGNvbnN0IEhFQVBfU0laRV9CSVQgPSAwYjEwMDAwO1xuXG5leHBvcnQgdHlwZSBDb25maWdWYWx1ZSA9IHsga2luZDogJ3UzMicgfCAndTY0JzsgdmFsdWU6IG51bWJlciB8IGJpZ2ludCB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyhjb25maWc6IHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7XG59KTogeyBtYXNrOiBudW1iZXI7IHZhbHVlczogQ29uZmlnVmFsdWVbXSB9IHtcbiAgbGV0IG1hc2sgPSAwO1xuICBjb25zdCB2YWx1ZXM6IENvbmZpZ1ZhbHVlW10gPSBbXTtcbiAgaWYgKGNvbmZpZy5wcmlvcml0eUZlZSAhPT0gbnVsbCkge1xuICAgIG1hc2sgfD0gUFJJT1JJVFlfRkVFX0JJVFM7XG4gICAgdmFsdWVzLnB1c2goeyBraW5kOiAndTY0JywgdmFsdWU6IEJpZ0ludChjb25maWcucHJpb3JpdHlGZWUpIH0pO1xuICB9XG4gIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCAhPT0gbnVsbCkge1xuICAgIG1hc2sgfD0gQ09NUFVURV9VTklUX0xJTUlUX0JJVDtcbiAgICB2YWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogY29uZmlnLmNvbXB1dGVVbml0TGltaXQgfSk7XG4gIH1cbiAgaWYgKGNvbmZpZy5sb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQgIT09IG51bGwpIHtcbiAgICBtYXNrIHw9IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUO1xuICAgIHZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiBjb25maWcubG9hZGVkQWNjb3VudHNEYXRhU2l6ZUxpbWl0IH0pO1xuICB9XG4gIGlmIChjb25maWcuaGVhcFNpemUgIT09IG51bGwpIHtcbiAgICBtYXNrIHw9IEhFQVBfU0laRV9CSVQ7XG4gICAgdmFsdWVzLnB1c2goeyBraW5kOiAndTMyJywgdmFsdWU6IGNvbmZpZy5oZWFwU2l6ZSB9KTtcbiAgfVxuICByZXR1cm4geyBtYXNrLCB2YWx1ZXMgfTtcbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ /**
2
+ * v1 (SIMD-0296/0385) transaction instruction codec: header + payload encoding.
3
+ */
4
+ export type CompiledInstruction = {
5
+ programAddressIndex: number;
6
+ accountIndices: number[];
7
+ data: Uint8Array;
8
+ };
9
+ /**
10
+ * Encode instruction headers (4 bytes each) then payloads for the given
11
+ * compiled instructions, appending to `buf`.
12
+ */
13
+ export declare function encodeInstructions(buf: number[], instructions: CompiledInstruction[]): void;
14
+ //# sourceMappingURL=instruction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AASF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAc3F"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * v1 (SIMD-0296/0385) transaction instruction codec: header + payload encoding.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encodeInstructions = encodeInstructions;
7
+ function pushU8(buf, v) {
8
+ buf.push(v & 0xff);
9
+ }
10
+ function pushU16LE(buf, v) {
11
+ buf.push(v & 0xff, (v >>> 8) & 0xff);
12
+ }
13
+ /**
14
+ * Encode instruction headers (4 bytes each) then payloads for the given
15
+ * compiled instructions, appending to `buf`.
16
+ */
17
+ function encodeInstructions(buf, instructions) {
18
+ for (const instruction of instructions) {
19
+ pushU8(buf, instruction.programAddressIndex);
20
+ pushU8(buf, instruction.accountIndices.length);
21
+ pushU16LE(buf, instruction.data.length);
22
+ }
23
+ for (const instruction of instructions) {
24
+ for (const idx of instruction.accountIndices) {
25
+ pushU8(buf, idx);
26
+ }
27
+ for (const b of instruction.data) {
28
+ pushU8(buf, b);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vY29kZWNzL3YxL2luc3RydWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFtQkgsZ0RBY0M7QUF6QkQsU0FBUyxNQUFNLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDdEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBYSxFQUFFLFlBQW1DO0lBQ25GLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB2MSAoU0lNRC0wMjk2LzAzODUpIHRyYW5zYWN0aW9uIGluc3RydWN0aW9uIGNvZGVjOiBoZWFkZXIgKyBwYXlsb2FkIGVuY29kaW5nLlxuICovXG5cbmV4cG9ydCB0eXBlIENvbXBpbGVkSW5zdHJ1Y3Rpb24gPSB7XG4gIHByb2dyYW1BZGRyZXNzSW5kZXg6IG51bWJlcjtcbiAgYWNjb3VudEluZGljZXM6IG51bWJlcltdO1xuICBkYXRhOiBVaW50OEFycmF5O1xufTtcblxuZnVuY3Rpb24gcHVzaFU4KGJ1ZjogbnVtYmVyW10sIHY6IG51bWJlcikge1xuICBidWYucHVzaCh2ICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTE2TEUoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmLCAodiA+Pj4gOCkgJiAweGZmKTtcbn1cblxuLyoqXG4gKiBFbmNvZGUgaW5zdHJ1Y3Rpb24gaGVhZGVycyAoNCBieXRlcyBlYWNoKSB0aGVuIHBheWxvYWRzIGZvciB0aGUgZ2l2ZW5cbiAqIGNvbXBpbGVkIGluc3RydWN0aW9ucywgYXBwZW5kaW5nIHRvIGBidWZgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSW5zdHJ1Y3Rpb25zKGJ1ZjogbnVtYmVyW10sIGluc3RydWN0aW9uczogQ29tcGlsZWRJbnN0cnVjdGlvbltdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25zKSB7XG4gICAgcHVzaFU4KGJ1ZiwgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3NJbmRleCk7XG4gICAgcHVzaFU4KGJ1ZiwgaW5zdHJ1Y3Rpb24uYWNjb3VudEluZGljZXMubGVuZ3RoKTtcbiAgICBwdXNoVTE2TEUoYnVmLCBpbnN0cnVjdGlvbi5kYXRhLmxlbmd0aCk7XG4gIH1cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGlkeCBvZiBpbnN0cnVjdGlvbi5hY2NvdW50SW5kaWNlcykge1xuICAgICAgcHVzaFU4KGJ1ZiwgaWR4KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBiIG9mIGluc3RydWN0aW9uLmRhdGEpIHtcbiAgICAgIHB1c2hVOChidWYsIGIpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,27 @@
1
+ import { encodeConfigMaskAndValues, ConfigValue } from './config';
2
+ import { CompiledInstruction } from './instruction';
3
+ export type V1MessageHeader = {
4
+ numSignerAccounts: number;
5
+ numReadonlySignerAccounts: number;
6
+ numReadonlyNonSignerAccounts: number;
7
+ };
8
+ export declare function encodeV1Message(args: {
9
+ header: V1MessageHeader;
10
+ configMask: number;
11
+ configValues: ConfigValue[];
12
+ blockhash: string;
13
+ staticAccounts: string[];
14
+ compiledInstructions: CompiledInstruction[];
15
+ }): Uint8Array;
16
+ export { encodeConfigMaskAndValues };
17
+ export type V1DecodedMessage = {
18
+ header: V1MessageHeader;
19
+ configMask: number;
20
+ configValues: ConfigValue[];
21
+ blockhash: string;
22
+ staticAccounts: string[];
23
+ compiledInstructions: CompiledInstruction[];
24
+ byteLength: number;
25
+ };
26
+ export declare function decodeV1Message(bytes: Uint8Array): V1DecodedMessage;
27
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,WAAW,EAKZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAuBxE,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,GAAG,UAAU,CA+Bb;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAUrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyBF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAwGnE"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encodeConfigMaskAndValues = void 0;
7
+ exports.encodeV1Message = encodeV1Message;
8
+ exports.decodeV1Message = decodeV1Message;
9
+ const bs58_1 = __importDefault(require("bs58"));
10
+ const web3_js_1 = require("@solana/web3.js");
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const config_1 = require("./config");
13
+ Object.defineProperty(exports, "encodeConfigMaskAndValues", { enumerable: true, get: function () { return config_1.encodeConfigMaskAndValues; } });
14
+ const instruction_1 = require("./instruction");
15
+ /**
16
+ * v1 (SIMD-0296/0385) transaction message wire encoder.
17
+ *
18
+ * Layout: [version: 0x81][header: 3 x u8][configMask: u32 LE][blockhash: 32]
19
+ * [numInstructions: u8][numStaticAccounts: u8]
20
+ * [staticAccounts: 32 x n][configValues: per mask]
21
+ * [instructionHeaders: 4 x n][instructionPayloads: per instruction]
22
+ */
23
+ function pushU8(buf, v) {
24
+ buf.push(v & 0xff);
25
+ }
26
+ function pushU32LE(buf, v) {
27
+ buf.push(v & 0xff, (v >>> 8) & 0xff, (v >>> 16) & 0xff, (v >>> 24) & 0xff);
28
+ }
29
+ function pushU64LE(buf, v) {
30
+ for (let i = 0; i < 8; i++) {
31
+ buf.push(Number((v >> BigInt(8 * i)) & 0xffn));
32
+ }
33
+ }
34
+ function encodeV1Message(args) {
35
+ const { header, configMask, configValues, blockhash, staticAccounts, compiledInstructions } = args;
36
+ let blockhashBytes;
37
+ try {
38
+ blockhashBytes = bs58_1.default.decode(blockhash);
39
+ }
40
+ catch {
41
+ throw new sdk_core_1.BuildTransactionError('Invalid recent blockhash');
42
+ }
43
+ if (blockhashBytes.length !== 32) {
44
+ throw new sdk_core_1.BuildTransactionError('Invalid recent blockhash');
45
+ }
46
+ const buf = [];
47
+ pushU8(buf, 0x81); // version
48
+ pushU8(buf, header.numSignerAccounts);
49
+ pushU8(buf, header.numReadonlySignerAccounts);
50
+ pushU8(buf, header.numReadonlyNonSignerAccounts);
51
+ pushU32LE(buf, configMask);
52
+ for (const b of blockhashBytes)
53
+ pushU8(buf, b);
54
+ pushU8(buf, compiledInstructions.length);
55
+ pushU8(buf, staticAccounts.length);
56
+ for (const account of staticAccounts) {
57
+ for (const b of new web3_js_1.PublicKey(account).toBytes())
58
+ pushU8(buf, b);
59
+ }
60
+ for (const value of configValues) {
61
+ if (value.kind === 'u64')
62
+ pushU64LE(buf, value.value);
63
+ else
64
+ pushU32LE(buf, value.value);
65
+ }
66
+ (0, instruction_1.encodeInstructions)(buf, compiledInstructions);
67
+ return new Uint8Array(buf);
68
+ }
69
+ const V1_VERSION_PREFIX = 0x81;
70
+ const KNOWN_CONFIG_MASK = config_1.PRIORITY_FEE_BITS | config_1.COMPUTE_UNIT_LIMIT_BIT | config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT | config_1.HEAP_SIZE_BIT;
71
+ const MAX_ACCOUNTS = 64;
72
+ const MAX_INSTRUCTIONS = 64;
73
+ const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
74
+ const STATIC_ACCOUNT_BYTES = 32;
75
+ function readU8(b, o) {
76
+ return b[o];
77
+ }
78
+ function readU16LE(b, o) {
79
+ return b[o] | (b[o + 1] << 8);
80
+ }
81
+ function readU32LE(b, o) {
82
+ return (b[o] | (b[o + 1] << 8) | (b[o + 2] << 16) | (b[o + 3] << 24)) >>> 0;
83
+ }
84
+ function readU64LE(b, o) {
85
+ let v = 0n;
86
+ for (let i = 0; i < 8; i++) {
87
+ v |= BigInt(b[o + i]) << BigInt(8 * i);
88
+ }
89
+ return v;
90
+ }
91
+ function ensureAvailable(b, off, size) {
92
+ if (off + size > b.length) {
93
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 message: truncated');
94
+ }
95
+ }
96
+ function decodeV1Message(bytes) {
97
+ if (!bytes || bytes.length < 42) {
98
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too short');
99
+ }
100
+ let off = 0;
101
+ if (bytes[off++] !== V1_VERSION_PREFIX) {
102
+ throw new sdk_core_1.BuildTransactionError(`Invalid v1 version prefix: 0x${bytes[0].toString(16)}`);
103
+ }
104
+ const numSignerAccounts = readU8(bytes, off++);
105
+ const numReadonlySignerAccounts = readU8(bytes, off++);
106
+ const numReadonlyNonSignerAccounts = readU8(bytes, off++);
107
+ const configMask = readU32LE(bytes, off);
108
+ off += 4;
109
+ if ((configMask & ~KNOWN_CONFIG_MASK) !== 0) {
110
+ throw new sdk_core_1.BuildTransactionError(`Unknown config mask bits: ${(configMask & ~KNOWN_CONFIG_MASK).toString(2)}`);
111
+ }
112
+ const blockhash = bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES));
113
+ off += STATIC_ACCOUNT_BYTES;
114
+ const numInstructions = readU8(bytes, off++);
115
+ const numStaticAccounts = readU8(bytes, off++);
116
+ if (numStaticAccounts > MAX_ACCOUNTS) {
117
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many static accounts');
118
+ }
119
+ if (numInstructions > MAX_INSTRUCTIONS) {
120
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many instructions');
121
+ }
122
+ if (numReadonlySignerAccounts > numSignerAccounts) {
123
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 header: readonly signers exceed signers');
124
+ }
125
+ if (numSignerAccounts + numReadonlyNonSignerAccounts > numStaticAccounts) {
126
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 header: signers + readonly non-signers exceed static accounts');
127
+ }
128
+ const staticAccounts = [];
129
+ for (let i = 0; i < numStaticAccounts; i++) {
130
+ ensureAvailable(bytes, off, STATIC_ACCOUNT_BYTES);
131
+ staticAccounts.push(bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES)));
132
+ off += STATIC_ACCOUNT_BYTES;
133
+ }
134
+ const configValues = [];
135
+ if (configMask & config_1.PRIORITY_FEE_BITS) {
136
+ ensureAvailable(bytes, off, 8);
137
+ configValues.push({ kind: 'u64', value: readU64LE(bytes, off) });
138
+ off += 8;
139
+ }
140
+ if (configMask & config_1.COMPUTE_UNIT_LIMIT_BIT) {
141
+ ensureAvailable(bytes, off, 4);
142
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
143
+ off += 4;
144
+ }
145
+ if (configMask & config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT) {
146
+ ensureAvailable(bytes, off, 4);
147
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
148
+ off += 4;
149
+ }
150
+ if (configMask & config_1.HEAP_SIZE_BIT) {
151
+ ensureAvailable(bytes, off, 4);
152
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
153
+ off += 4;
154
+ }
155
+ const headers = [];
156
+ for (let i = 0; i < numInstructions; i++) {
157
+ ensureAvailable(bytes, off, 4);
158
+ const programAddressIndex = readU8(bytes, off++);
159
+ const accountCount = readU8(bytes, off++);
160
+ const dataLength = readU16LE(bytes, off);
161
+ off += 2;
162
+ if (programAddressIndex >= numStaticAccounts) {
163
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: program index out of range');
164
+ }
165
+ if (accountCount > MAX_ACCOUNTS_PER_INSTRUCTION) {
166
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: too many accounts');
167
+ }
168
+ headers.push({ programAddressIndex, accountCount, dataLength });
169
+ }
170
+ const compiledInstructions = [];
171
+ for (const h of headers) {
172
+ ensureAvailable(bytes, off, h.accountCount);
173
+ const accountIndices = [];
174
+ for (let i = 0; i < h.accountCount; i++) {
175
+ const idx = readU8(bytes, off++);
176
+ if (idx >= numStaticAccounts) {
177
+ throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: account index out of range');
178
+ }
179
+ accountIndices.push(idx);
180
+ }
181
+ ensureAvailable(bytes, off, h.dataLength);
182
+ const data = bytes.slice(off, off + h.dataLength);
183
+ off += h.dataLength;
184
+ compiledInstructions.push({ programAddressIndex: h.programAddressIndex, accountIndices, data });
185
+ }
186
+ return {
187
+ header: { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts },
188
+ configMask,
189
+ configValues,
190
+ blockhash,
191
+ staticAccounts,
192
+ compiledInstructions,
193
+ byteLength: off,
194
+ };
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb2RlY3MvdjEvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3Q0EsMENBc0NDO0FBNkNELDBDQXdHQztBQW5PRCxnREFBd0I7QUFDeEIsNkNBQTRDO0FBQzVDLG1EQUE2RDtBQUM3RCxxQ0FPa0I7QUFzRVQsMEdBNUVQLGtDQUF5QixPQTRFTztBQXJFbEMsK0NBQXdFO0FBRXhFOzs7Ozs7O0dBT0c7QUFFSCxTQUFTLE1BQU0sQ0FBQyxHQUFhLEVBQUUsQ0FBUztJQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQVFELFNBQWdCLGVBQWUsQ0FBQyxJQU8vQjtJQUNDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRW5HLElBQUksY0FBMEIsQ0FBQztJQUMvQixJQUFJLENBQUM7UUFDSCxjQUFjLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVO0lBQzdCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM5QyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxjQUFjO1FBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLEtBQUssTUFBTSxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLG1CQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSztZQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQWUsQ0FBQyxDQUFDOztZQUMzRCxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFlLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBQSxnQ0FBa0IsRUFBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFJRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLGlCQUFpQixHQUNyQiwwQkFBaUIsR0FBRywrQkFBc0IsR0FBRyw0Q0FBbUMsR0FBRyxzQkFBYSxDQUFDO0FBQ25HLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQVloQyxTQUFTLE1BQU0sQ0FBQyxDQUFhLEVBQUUsQ0FBUztJQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxDQUFhLEVBQUUsQ0FBUztJQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLENBQWEsRUFBRSxDQUFTO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLENBQWEsRUFBRSxDQUFTO0lBQ3pDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFhLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDL0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksZ0NBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxLQUFpQjtJQUMvQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN2RCxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLENBQUMsVUFBVSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsR0FBRyxJQUFJLG9CQUFvQixDQUFDO0lBQzVCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLGlCQUFpQixHQUFHLFlBQVksRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxJQUFJLGVBQWUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxJQUFJLHlCQUF5QixHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDbEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELElBQUksaUJBQWlCLEdBQUcsNEJBQTRCLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUN6RSxNQUFNLElBQUksZ0NBQXFCLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDbEQsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRSxHQUFHLElBQUksb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDdkMsSUFBSSxVQUFVLEdBQUcsMEJBQWlCLEVBQUUsQ0FBQztRQUNuQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQixZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLFVBQVUsR0FBRywrQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELElBQUksVUFBVSxHQUFHLDRDQUFtQyxFQUFFLENBQUM7UUFDckQsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsSUFBSSxVQUFVLEdBQUcsc0JBQWEsRUFBRSxDQUFDO1FBQy9CLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFxRixFQUFFLENBQUM7SUFDckcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDVCxJQUFJLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELElBQUksWUFBWSxHQUFHLDRCQUE0QixFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxvQkFBb0IsR0FBMEIsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEIsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztRQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNqQyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksZ0NBQXFCLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUN4RixDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUU7UUFDdEYsVUFBVTtRQUNWLFlBQVk7UUFDWixTQUFTO1FBQ1QsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixVQUFVLEVBQUUsR0FBRztLQUNoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIGVuY29kZUNvbmZpZ01hc2tBbmRWYWx1ZXMsXG4gIENvbmZpZ1ZhbHVlLFxuICBQUklPUklUWV9GRUVfQklUUyxcbiAgQ09NUFVURV9VTklUX0xJTUlUX0JJVCxcbiAgTE9BREVEX0FDQ09VTlRTX0RBVEFfU0laRV9MSU1JVF9CSVQsXG4gIEhFQVBfU0laRV9CSVQsXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGVuY29kZUluc3RydWN0aW9ucywgQ29tcGlsZWRJbnN0cnVjdGlvbiB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24nO1xuXG4vKipcbiAqIHYxIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb24gbWVzc2FnZSB3aXJlIGVuY29kZXIuXG4gKlxuICogTGF5b3V0OiBbdmVyc2lvbjogMHg4MV1baGVhZGVyOiAzIHggdThdW2NvbmZpZ01hc2s6IHUzMiBMRV1bYmxvY2toYXNoOiAzMl1cbiAqICAgW251bUluc3RydWN0aW9uczogdThdW251bVN0YXRpY0FjY291bnRzOiB1OF1cbiAqICAgW3N0YXRpY0FjY291bnRzOiAzMiB4IG5dW2NvbmZpZ1ZhbHVlczogcGVyIG1hc2tdXG4gKiAgIFtpbnN0cnVjdGlvbkhlYWRlcnM6IDQgeCBuXVtpbnN0cnVjdGlvblBheWxvYWRzOiBwZXIgaW5zdHJ1Y3Rpb25dXG4gKi9cblxuZnVuY3Rpb24gcHVzaFU4KGJ1ZjogbnVtYmVyW10sIHY6IG51bWJlcikge1xuICBidWYucHVzaCh2ICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTMyTEUoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmLCAodiA+Pj4gOCkgJiAweGZmLCAodiA+Pj4gMTYpICYgMHhmZiwgKHYgPj4+IDI0KSAmIDB4ZmYpO1xufVxuZnVuY3Rpb24gcHVzaFU2NExFKGJ1ZjogbnVtYmVyW10sIHY6IGJpZ2ludCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIGJ1Zi5wdXNoKE51bWJlcigodiA+PiBCaWdJbnQoOCAqIGkpKSAmIDB4ZmZuKSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVjFNZXNzYWdlSGVhZGVyID0ge1xuICBudW1TaWduZXJBY2NvdW50czogbnVtYmVyO1xuICBudW1SZWFkb25seVNpZ25lckFjY291bnRzOiBudW1iZXI7XG4gIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVWMU1lc3NhZ2UoYXJnczoge1xuICBoZWFkZXI6IFYxTWVzc2FnZUhlYWRlcjtcbiAgY29uZmlnTWFzazogbnVtYmVyO1xuICBjb25maWdWYWx1ZXM6IENvbmZpZ1ZhbHVlW107XG4gIGJsb2NraGFzaDogc3RyaW5nO1xuICBzdGF0aWNBY2NvdW50czogc3RyaW5nW107XG4gIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW107XG59KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHsgaGVhZGVyLCBjb25maWdNYXNrLCBjb25maWdWYWx1ZXMsIGJsb2NraGFzaCwgc3RhdGljQWNjb3VudHMsIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zIH0gPSBhcmdzO1xuXG4gIGxldCBibG9ja2hhc2hCeXRlczogVWludDhBcnJheTtcbiAgdHJ5IHtcbiAgICBibG9ja2hhc2hCeXRlcyA9IGJzNTguZGVjb2RlKGJsb2NraGFzaCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmVjZW50IGJsb2NraGFzaCcpO1xuICB9XG4gIGlmIChibG9ja2hhc2hCeXRlcy5sZW5ndGggIT09IDMyKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByZWNlbnQgYmxvY2toYXNoJyk7XG4gIH1cblxuICBjb25zdCBidWY6IG51bWJlcltdID0gW107XG4gIHB1c2hVOChidWYsIDB4ODEpOyAvLyB2ZXJzaW9uXG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1TaWduZXJBY2NvdW50cyk7XG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1SZWFkb25seVNpZ25lckFjY291bnRzKTtcbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMpO1xuICBwdXNoVTMyTEUoYnVmLCBjb25maWdNYXNrKTtcbiAgZm9yIChjb25zdCBiIG9mIGJsb2NraGFzaEJ5dGVzKSBwdXNoVTgoYnVmLCBiKTtcbiAgcHVzaFU4KGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcbiAgcHVzaFU4KGJ1Ziwgc3RhdGljQWNjb3VudHMubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIHN0YXRpY0FjY291bnRzKSB7XG4gICAgZm9yIChjb25zdCBiIG9mIG5ldyBQdWJsaWNLZXkoYWNjb3VudCkudG9CeXRlcygpKSBwdXNoVTgoYnVmLCBiKTtcbiAgfVxuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNvbmZpZ1ZhbHVlcykge1xuICAgIGlmICh2YWx1ZS5raW5kID09PSAndTY0JykgcHVzaFU2NExFKGJ1ZiwgdmFsdWUudmFsdWUgYXMgYmlnaW50KTtcbiAgICBlbHNlIHB1c2hVMzJMRShidWYsIHZhbHVlLnZhbHVlIGFzIG51bWJlcik7XG4gIH1cbiAgZW5jb2RlSW5zdHJ1Y3Rpb25zKGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMpO1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbn1cblxuZXhwb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9O1xuXG5jb25zdCBWMV9WRVJTSU9OX1BSRUZJWCA9IDB4ODE7XG5jb25zdCBLTk9XTl9DT05GSUdfTUFTSyA9XG4gIFBSSU9SSVRZX0ZFRV9CSVRTIHwgQ09NUFVURV9VTklUX0xJTUlUX0JJVCB8IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUIHwgSEVBUF9TSVpFX0JJVDtcbmNvbnN0IE1BWF9BQ0NPVU5UUyA9IDY0O1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcbmNvbnN0IFNUQVRJQ19BQ0NPVU5UX0JZVEVTID0gMzI7XG5cbmV4cG9ydCB0eXBlIFYxRGVjb2RlZE1lc3NhZ2UgPSB7XG4gIGhlYWRlcjogVjFNZXNzYWdlSGVhZGVyO1xuICBjb25maWdNYXNrOiBudW1iZXI7XG4gIGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXTtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIHN0YXRpY0FjY291bnRzOiBzdHJpbmdbXTtcbiAgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXTtcbiAgYnl0ZUxlbmd0aDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gcmVhZFU4KGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dO1xufVxuZnVuY3Rpb24gcmVhZFUxNkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dIHwgKGJbbyArIDFdIDw8IDgpO1xufVxuZnVuY3Rpb24gcmVhZFUzMkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoYltvXSB8IChiW28gKyAxXSA8PCA4KSB8IChiW28gKyAyXSA8PCAxNikgfCAoYltvICsgM10gPDwgMjQpKSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIHJlYWRVNjRMRShiOiBVaW50OEFycmF5LCBvOiBudW1iZXIpOiBiaWdpbnQge1xuICBsZXQgdiA9IDBuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIHYgfD0gQmlnSW50KGJbbyArIGldKSA8PCBCaWdJbnQoOCAqIGkpO1xuICB9XG4gIHJldHVybiB2O1xufVxuXG5mdW5jdGlvbiBlbnN1cmVBdmFpbGFibGUoYjogVWludDhBcnJheSwgb2ZmOiBudW1iZXIsIHNpemU6IG51bWJlcik6IHZvaWQge1xuICBpZiAob2ZmICsgc2l6ZSA+IGIubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBtZXNzYWdlOiB0cnVuY2F0ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVjFNZXNzYWdlKGJ5dGVzOiBVaW50OEFycmF5KTogVjFEZWNvZGVkTWVzc2FnZSB7XG4gIGlmICghYnl0ZXMgfHwgYnl0ZXMubGVuZ3RoIDwgNDIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBzaG9ydCcpO1xuICB9XG4gIGxldCBvZmYgPSAwO1xuICBpZiAoYnl0ZXNbb2ZmKytdICE9PSBWMV9WRVJTSU9OX1BSRUZJWCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdjEgdmVyc2lvbiBwcmVmaXg6IDB4JHtieXRlc1swXS50b1N0cmluZygxNil9YCk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVyQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IHJlYWRVOChieXRlcywgb2ZmKyspO1xuICBjb25zdCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IGNvbmZpZ01hc2sgPSByZWFkVTMyTEUoYnl0ZXMsIG9mZik7XG4gIG9mZiArPSA0O1xuICBpZiAoKGNvbmZpZ01hc2sgJiB+S05PV05fQ09ORklHX01BU0spICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVW5rbm93biBjb25maWcgbWFzayBiaXRzOiAkeyhjb25maWdNYXNrICYgfktOT1dOX0NPTkZJR19NQVNLKS50b1N0cmluZygyKX1gKTtcbiAgfVxuICBjb25zdCBibG9ja2hhc2ggPSBiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSk7XG4gIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgY29uc3QgbnVtSW5zdHJ1Y3Rpb25zID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IG51bVN0YXRpY0FjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGlmIChudW1TdGF0aWNBY2NvdW50cyA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIG1hbnkgc3RhdGljIGFjY291bnRzJyk7XG4gIH1cbiAgaWYgKG51bUluc3RydWN0aW9ucyA+IE1BWF9JTlNUUlVDVElPTlMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBtYW55IGluc3RydWN0aW9ucycpO1xuICB9XG4gIGlmIChudW1SZWFkb25seVNpZ25lckFjY291bnRzID4gbnVtU2lnbmVyQWNjb3VudHMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIGhlYWRlcjogcmVhZG9ubHkgc2lnbmVycyBleGNlZWQgc2lnbmVycycpO1xuICB9XG4gIGlmIChudW1TaWduZXJBY2NvdW50cyArIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgPiBudW1TdGF0aWNBY2NvdW50cykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaGVhZGVyOiBzaWduZXJzICsgcmVhZG9ubHkgbm9uLXNpZ25lcnMgZXhjZWVkIHN0YXRpYyBhY2NvdW50cycpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGljQWNjb3VudHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU3RhdGljQWNjb3VudHM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBTVEFUSUNfQUNDT1VOVF9CWVRFUyk7XG4gICAgc3RhdGljQWNjb3VudHMucHVzaChiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSkpO1xuICAgIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXSA9IFtdO1xuICBpZiAoY29uZmlnTWFzayAmIFBSSU9SSVRZX0ZFRV9CSVRTKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDgpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3U2NCcsIHZhbHVlOiByZWFkVTY0TEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDg7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBDT01QVVRFX1VOSVRfTElNSVRfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBMT0FERURfQUNDT1VOVFNfREFUQV9TSVpFX0xJTUlUX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG4gIGlmIChjb25maWdNYXNrICYgSEVBUF9TSVpFX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG5cbiAgY29uc3QgaGVhZGVyczogQXJyYXk8eyBwcm9ncmFtQWRkcmVzc0luZGV4OiBudW1iZXI7IGFjY291bnRDb3VudDogbnVtYmVyOyBkYXRhTGVuZ3RoOiBudW1iZXIgfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JbnN0cnVjdGlvbnM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25zdCBwcm9ncmFtQWRkcmVzc0luZGV4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgYWNjb3VudENvdW50ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHJlYWRVMTZMRShieXRlcywgb2ZmKTtcbiAgICBvZmYgKz0gMjtcbiAgICBpZiAocHJvZ3JhbUFkZHJlc3NJbmRleCA+PSBudW1TdGF0aWNBY2NvdW50cykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogcHJvZ3JhbSBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gICAgaWYgKGFjY291bnRDb3VudCA+IE1BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT04pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IHRvbyBtYW55IGFjY291bnRzJyk7XG4gICAgfVxuICAgIGhlYWRlcnMucHVzaCh7IHByb2dyYW1BZGRyZXNzSW5kZXgsIGFjY291bnRDb3VudCwgZGF0YUxlbmd0aCB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBoIG9mIGhlYWRlcnMpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgaC5hY2NvdW50Q291bnQpO1xuICAgIGNvbnN0IGFjY291bnRJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaC5hY2NvdW50Q291bnQ7IGkrKykge1xuICAgICAgY29uc3QgaWR4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgICBpZiAoaWR4ID49IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IGFjY291bnQgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gICAgICB9XG4gICAgICBhY2NvdW50SW5kaWNlcy5wdXNoKGlkeCk7XG4gICAgfVxuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBoLmRhdGFMZW5ndGgpO1xuICAgIGNvbnN0IGRhdGEgPSBieXRlcy5zbGljZShvZmYsIG9mZiArIGguZGF0YUxlbmd0aCk7XG4gICAgb2ZmICs9IGguZGF0YUxlbmd0aDtcbiAgICBjb21waWxlZEluc3RydWN0aW9ucy5wdXNoKHsgcHJvZ3JhbUFkZHJlc3NJbmRleDogaC5wcm9ncmFtQWRkcmVzc0luZGV4LCBhY2NvdW50SW5kaWNlcywgZGF0YSB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGVhZGVyOiB7IG51bVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzIH0sXG4gICAgY29uZmlnTWFzayxcbiAgICBjb25maWdWYWx1ZXMsXG4gICAgYmxvY2toYXNoLFxuICAgIHN0YXRpY0FjY291bnRzLFxuICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zLFxuICAgIGJ5dGVMZW5ndGg6IG9mZixcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { PublicKey, TransactionInstruction } from '@solana/web3.js';
2
+ /** Supported Solana transaction versions. Only 1 (SIMD-0296/0385) is implemented. */
3
+ export type TransactionVersion = 0 | 1;
4
+ /**
5
+ * Configuration for a v1 transaction, mirroring the shared sdk-core type.
6
+ * All values are optional (null = unset); priorityFee is total lamports.
7
+ */
8
+ export interface TransactionConfig {
9
+ computeUnitLimit: number | null;
10
+ heapSize: number | null;
11
+ loadedAccountsDataSizeLimit: number | null;
12
+ priorityFee: number | null;
13
+ }
14
+ /**
15
+ * Compile a Solana transaction message and return its wire bytes.
16
+ *
17
+ * Version-aware: only `version: 1` (SIMD-0296/0385) is implemented; other
18
+ * versions throw a clear unsupported-version error until they are added.
19
+ *
20
+ * @param args - version, instructions, fee payer, recent blockhash, and config
21
+ * @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
22
+ */
23
+ export declare function compileTransactionMessage(args: {
24
+ version: TransactionVersion;
25
+ instructions: TransactionInstruction[];
26
+ feePayer: PublicKey;
27
+ recentBlockhash: string;
28
+ transactionConfig: TransactionConfig;
29
+ }): Uint8Array;
30
+ //# sourceMappingURL=compileTransactionMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compileTransactionMessage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/compileTransactionMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKpE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoLD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,GAAG,UAAU,CAqDb"}