@bitgo-beta/sdk-coin-sol 7.6.4-beta.72 → 7.6.4-beta.721

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 (508) 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 +96 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +276 -0
  17. package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +13 -2
  18. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/customInstructionBuilder.js +392 -0
  20. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  21. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
  23. package/dist/cjs/src/lib/iface.d.ts +526 -0
  24. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  25. package/dist/cjs/src/lib/iface.js +7 -0
  26. package/dist/{src → cjs/src}/lib/index.d.ts +6 -0
  27. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/index.js +97 -0
  29. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
  30. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/instructionParamsFactory.js +1280 -0
  32. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  33. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  34. package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
  35. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/keyPair.js +112 -0
  37. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  38. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  39. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  42. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  45. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  47. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
  48. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
  50. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  51. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
  53. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
  54. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
  56. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +30 -0
  57. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +205 -0
  59. package/dist/cjs/src/lib/serialization/index.d.ts +5 -0
  60. package/dist/cjs/src/lib/serialization/index.d.ts.map +1 -0
  61. package/dist/cjs/src/lib/serialization/index.js +27 -0
  62. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
  63. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
  65. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
  66. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
  68. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  69. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/solInstructionFactory.js +1094 -0
  71. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
  73. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  75. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
  77. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
  79. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  80. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  81. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  82. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
  83. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  84. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  85. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  86. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  87. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  88. package/dist/cjs/src/lib/tokenExtensions.js +109 -0
  89. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  90. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  91. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  92. package/dist/{src → cjs/src}/lib/transaction.d.ts +34 -1
  93. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  94. package/dist/cjs/src/lib/transaction.js +691 -0
  95. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +42 -1
  96. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  97. package/dist/cjs/src/lib/transactionBuilder.js +462 -0
  98. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
  99. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  100. package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -0
  101. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  102. package/dist/cjs/src/lib/transferBuilder.js +81 -0
  103. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  104. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  105. package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
  106. package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
  107. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  108. package/dist/cjs/src/lib/utils.js +665 -0
  109. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  110. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  111. package/dist/cjs/src/register.d.ts +5 -0
  112. package/dist/cjs/src/register.d.ts.map +1 -0
  113. package/dist/cjs/src/register.js +29 -0
  114. package/dist/{src → cjs/src}/sol.d.ts +114 -3
  115. package/dist/cjs/src/sol.d.ts.map +1 -0
  116. package/dist/cjs/src/sol.js +1673 -0
  117. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  118. package/dist/cjs/src/solToken.d.ts.map +1 -0
  119. package/dist/cjs/src/solToken.js +79 -0
  120. package/dist/cjs/src/tsol.d.ts.map +1 -0
  121. package/dist/cjs/src/tsol.js +24 -0
  122. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  123. package/dist/cjs/test/fixtures/sol.js +1433 -0
  124. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  125. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  126. package/dist/cjs/test/resources/sol.js +320 -0
  127. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  128. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  130. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  132. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  134. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  136. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  138. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  139. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  141. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  142. package/dist/cjs/test/unit/keyPair.js +177 -0
  143. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  144. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  145. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  146. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  147. package/dist/cjs/test/unit/register.d.ts +2 -0
  148. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/register.js +65 -0
  150. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  151. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  152. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  153. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  154. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  155. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  156. package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
  157. package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
  158. package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
  159. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  160. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  162. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  163. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  164. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  165. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  166. package/dist/cjs/test/unit/sol.js +5092 -0
  167. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  168. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  169. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  170. package/dist/cjs/test/unit/solToken.js +37 -0
  171. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  172. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  174. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  175. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  176. package/dist/cjs/test/unit/tokenExtensions.js +73 -0
  177. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  178. package/dist/cjs/test/unit/transaction.js +1129 -0
  179. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  180. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  181. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  182. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  183. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  184. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  185. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  186. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
  187. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
  188. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
  189. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  190. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
  192. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  193. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  194. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +144 -0
  195. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  196. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
  198. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  199. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
  200. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  201. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  202. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  204. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  205. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  206. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  207. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  208. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  210. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  211. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  212. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  213. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  214. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  215. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  216. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  217. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  218. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  219. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  220. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  221. package/dist/cjs/test/unit/utils.js +628 -0
  222. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  223. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  224. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  225. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  226. package/dist/esm/index.d.ts +7 -0
  227. package/dist/esm/index.js +7 -0
  228. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  229. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  230. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  231. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  232. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  233. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  234. package/dist/esm/lib/confidentialTransferBuilder.d.ts +128 -0
  235. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  236. package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
  237. package/dist/esm/lib/constants.d.ts +234 -0
  238. package/dist/esm/lib/constants.d.ts.map +1 -0
  239. package/dist/esm/lib/constants.js +273 -0
  240. package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
  241. package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
  242. package/dist/esm/lib/customInstructionBuilder.js +385 -0
  243. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  244. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  245. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  246. package/dist/esm/lib/iface.d.ts +526 -0
  247. package/dist/esm/lib/iface.d.ts.map +1 -0
  248. package/dist/esm/lib/iface.js +3 -0
  249. package/dist/esm/lib/index.d.ts +28 -0
  250. package/dist/esm/lib/index.d.ts.map +1 -0
  251. package/dist/esm/lib/index.js +28 -0
  252. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  253. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  254. package/dist/esm/lib/instructionParamsFactory.js +1272 -0
  255. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  256. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  257. package/dist/esm/lib/keyPair.d.ts +32 -0
  258. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  259. package/dist/esm/lib/keyPair.js +75 -0
  260. package/dist/esm/lib/messages/index.d.ts +2 -0
  261. package/dist/esm/lib/messages/index.js +2 -0
  262. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  263. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  264. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  265. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  266. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  267. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  268. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  269. package/dist/esm/lib/scaledUiAmount.js +108 -0
  270. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  271. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  272. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  273. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  274. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  275. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  276. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  277. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  278. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  279. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +30 -0
  280. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  281. package/dist/esm/lib/serialization/compileTransactionMessage.js +202 -0
  282. package/dist/esm/lib/serialization/index.d.ts +5 -0
  283. package/dist/esm/lib/serialization/index.d.ts.map +1 -0
  284. package/dist/esm/lib/serialization/index.js +5 -0
  285. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  286. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  287. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  288. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  289. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  290. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  291. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  292. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  293. package/dist/esm/lib/solInstructionFactory.js +1088 -0
  294. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  295. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  296. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  297. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  298. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  299. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  300. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  301. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  302. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  303. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  304. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  305. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  306. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  307. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  308. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  309. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  310. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  311. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  312. package/dist/esm/lib/token2022Resolve.js +194 -0
  313. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  314. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  315. package/dist/esm/lib/tokenExtensions.js +103 -0
  316. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  317. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  318. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  319. package/dist/esm/lib/transaction.d.ts +136 -0
  320. package/dist/esm/lib/transaction.d.ts.map +1 -0
  321. package/dist/esm/lib/transaction.js +684 -0
  322. package/dist/esm/lib/transactionBuilder.d.ts +169 -0
  323. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  324. package/dist/esm/lib/transactionBuilder.js +455 -0
  325. package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
  326. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  327. package/dist/esm/lib/transactionBuilderFactory.js +218 -0
  328. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  329. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  330. package/dist/esm/lib/transferBuilder.js +74 -0
  331. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  332. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  333. package/dist/esm/lib/transferBuilderV2.js +245 -0
  334. package/dist/esm/lib/utils.d.ts +205 -0
  335. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  336. package/dist/esm/lib/utils.js +627 -0
  337. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  338. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  339. package/dist/esm/register.d.ts +5 -0
  340. package/dist/esm/register.d.ts.map +1 -0
  341. package/dist/esm/register.js +24 -0
  342. package/dist/esm/sol.d.ts +351 -0
  343. package/dist/esm/sol.d.ts.map +1 -0
  344. package/dist/esm/sol.js +1632 -0
  345. package/dist/esm/solToken.d.ts +44 -0
  346. package/dist/esm/solToken.d.ts.map +1 -0
  347. package/dist/esm/solToken.js +75 -0
  348. package/dist/esm/tsol.d.ts +11 -0
  349. package/dist/esm/tsol.js +20 -0
  350. package/package.json +37 -17
  351. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  352. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  353. package/dist/src/config/token2022StaticConfig.js +0 -50
  354. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  355. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  356. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  357. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  358. package/dist/src/lib/closeAtaBuilder.js +0 -69
  359. package/dist/src/lib/constants.d.ts.map +0 -1
  360. package/dist/src/lib/constants.js +0 -171
  361. package/dist/src/lib/customInstructionBuilder.js +0 -289
  362. package/dist/src/lib/iface.d.ts +0 -244
  363. package/dist/src/lib/iface.d.ts.map +0 -1
  364. package/dist/src/lib/iface.js +0 -7
  365. package/dist/src/lib/index.d.ts.map +0 -1
  366. package/dist/src/lib/index.js +0 -77
  367. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  368. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  369. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  370. package/dist/src/lib/keyPair.d.ts.map +0 -1
  371. package/dist/src/lib/keyPair.js +0 -63
  372. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  373. package/dist/src/lib/solInstructionFactory.js +0 -572
  374. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  375. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  376. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  377. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  378. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  379. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  380. package/dist/src/lib/token2022Config.d.ts +0 -44
  381. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  382. package/dist/src/lib/token2022Config.js +0 -27
  383. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  384. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  385. package/dist/src/lib/transaction.d.ts.map +0 -1
  386. package/dist/src/lib/transaction.js +0 -595
  387. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  388. package/dist/src/lib/transactionBuilder.js +0 -380
  389. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  390. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  391. package/dist/src/lib/transferBuilder.js +0 -70
  392. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  393. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  394. package/dist/src/lib/transferBuilderV2.js +0 -210
  395. package/dist/src/lib/utils.js +0 -589
  396. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  397. package/dist/src/register.d.ts +0 -3
  398. package/dist/src/register.d.ts.map +0 -1
  399. package/dist/src/register.js +0 -15
  400. package/dist/src/sol.d.ts.map +0 -1
  401. package/dist/src/sol.js +0 -1324
  402. package/dist/src/solToken.d.ts.map +0 -1
  403. package/dist/src/solToken.js +0 -69
  404. package/dist/src/tsol.js +0 -24
  405. package/dist/test/fixtures/sol.js +0 -1433
  406. package/dist/test/resources/sol.d.ts.map +0 -1
  407. package/dist/test/resources/sol.js +0 -320
  408. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  409. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  410. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  411. package/dist/test/unit/getBuilderFactory.js +0 -10
  412. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  413. package/dist/test/unit/instructionParamsFactory.js +0 -412
  414. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  415. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  416. package/dist/test/unit/keyPair.js +0 -177
  417. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  418. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  419. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  420. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  421. package/dist/test/unit/sol.js +0 -3180
  422. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  423. package/dist/test/unit/solInstructionFactory.js +0 -454
  424. package/dist/test/unit/solToken.d.ts.map +0 -1
  425. package/dist/test/unit/solToken.js +0 -31
  426. package/dist/test/unit/transaction.d.ts.map +0 -1
  427. package/dist/test/unit/transaction.js +0 -983
  428. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  429. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  430. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  431. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  432. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  433. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  434. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  435. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  436. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  437. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  438. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  439. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  440. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  441. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  442. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  443. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  444. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  445. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  446. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  447. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  448. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  449. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  450. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  451. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  452. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  453. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  454. package/dist/test/unit/utils.js +0 -517
  455. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  456. package/dist/test/unit/versionedTransaction.js +0 -207
  457. package/dist/tsconfig.tsbuildinfo +0 -1
  458. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  459. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  460. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  461. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  462. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  463. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  464. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  465. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  466. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  467. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  468. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  469. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  470. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  471. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  472. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  473. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  474. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  475. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  476. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  477. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  478. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  479. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  480. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  481. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  482. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  483. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  484. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  485. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  486. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  487. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  488. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  489. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  490. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  491. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  492. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  493. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  494. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  495. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  496. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  497. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  498. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  499. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  500. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  501. /package/dist/{src → esm}/index.d.ts.map +0 -0
  502. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  503. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  504. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  505. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  506. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  507. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  508. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const bs58 = __importStar(require("bs58"));
41
+ const getBuilderFactory_1 = require("../getBuilderFactory");
42
+ const src_1 = require("../../../src");
43
+ const testData = __importStar(require("../../resources/sol"));
44
+ const web3_js_1 = require("@solana/web3.js");
45
+ const COMPUTE_BUDGET_PROGRAM_ID = 'ComputeBudget111111111111111111111111111111';
46
+ /**
47
+ * Returns the on-chain instruction types of a built transaction in the order they appear
48
+ * in the compiled message, which is what the network executes. The compiled message
49
+ * includes the durable-nonce AdvanceNonceAccount instruction that web3.js serializes
50
+ * first, so a sponsored transaction with a compute unit limit, priority fee and durable
51
+ * nonce starts with [AdvanceNonceAccount, SetComputeUnitLimit, SetPriorityFee, ...].
52
+ */
53
+ function compiledInstructionTypes(tx) {
54
+ const message = tx.solTransaction.compileMessage();
55
+ return message.instructions.map((compiledInstruction) => {
56
+ const instruction = new web3_js_1.TransactionInstruction({
57
+ programId: message.accountKeys[compiledInstruction.programIdIndex],
58
+ keys: compiledInstruction.accounts.map((accountKeyIndex) => ({
59
+ pubkey: message.accountKeys[accountKeyIndex],
60
+ isSigner: message.isAccountSigner(accountKeyIndex),
61
+ isWritable: message.isAccountWritable(accountKeyIndex),
62
+ })),
63
+ data: Buffer.from(bs58.decode(compiledInstruction.data)),
64
+ });
65
+ return src_1.Utils.getInstructionType(instruction);
66
+ });
67
+ }
68
+ /**
69
+ * Returns the compute-unit limits requested by the SetComputeUnitLimit instructions of
70
+ * the built transaction.
71
+ */
72
+ function computeUnitLimits(tx) {
73
+ return tx.solTransaction.instructions
74
+ .filter((instruction) => instruction.programId.toString() === COMPUTE_BUDGET_PROGRAM_ID &&
75
+ src_1.Utils.getInstructionType(instruction) === 'SetComputeUnitLimit')
76
+ .map((instruction) => web3_js_1.ComputeBudgetInstruction.decodeSetComputeUnitLimit(instruction).units);
77
+ }
78
+ /**
79
+ * Raw transaction bytes of each builder intent below when no compute unit limit is set.
80
+ * Captured from the builders before the compute-unit-limit work, so any change to the
81
+ * no-limit build path (which must stay byte-identical) fails these comparisons.
82
+ */
83
+ const RAW_TX_WITHOUT_COMPUTE_UNIT_LIMIT = {
84
+ 'transfer builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAQHReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbqkYG1L37ZDq6w2tS3G+tFODYWdhMXF+kwlYEF+3o4nVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqfVFxksVo7gioRfc9KXiM8DXDFFshqzRNgGLqlAAADjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQQDAwEGAAQEAAAABAAJAxAnAAAAAAAAAwIAAgwCAAAA4JMEAAAAAAAFAAl0ZXN0IG1lbW8=',
85
+ 'transfer builder v2': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAMGReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbqkYG1L37ZDq6w2tS3G+tFODYWdhMXF+kwlYEF+3o4nVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAA4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEDAwMBBQAEBAAAAAQACQMQJwAAAAAAAAMCAAIMAgAAAOCTBAAAAAAA',
86
+ 'token transfer builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAUJAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6dv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbpXS8VwMObd6fTnfCKrnxvwQ5LFhipVbiG+aiTNM1eFsqRgbUvftkOrrDa1Lcb60U4NhZ2ExcX6TCVgQX7ejidUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAA0QOJ+87lKPIIYR3MxzSzEJJUDLK41Y0QDy6qLO202l4Gp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEDBAMBBwAEBAAAAAUACQMQJwAAAAAAAAgEAgYDAAoM4JMEAAAAAAAJ',
87
+ 'ata initialization builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAYJReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0EAxPE0fqi8zYGKbihafYdJgknwg8wIfK86jxD3ILOvGW/6Eon6nFlovAcYTKTZK+nk98ALlkSL/BgjW09MceFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAA0QOJ+87lKPIIYR3MxzSzEJJUDLK41Y0QDy6qLO202l4Gp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEDAwMCBwAEBAAAAAUACQMQJwAAAAAAAAQGAAEABgMIAQE=',
88
+ 'close ata builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAMFReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqfVFxksVo7gioRfc9KXiM8DXDFFshqzRNgGLqlAAAAG3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqeMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAgIDAQMABAQAAAAEAwEAAAEJ',
89
+ 'staking activate builder': 'AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAJDEXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBYnsvugEnYfm5Gbz5TLtMncgFHZ8JMpkxTTlJIzJovelv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACx+Xl4mhxH0TxI2HovJxcQ63+TJglRFzFikL1sKdr12Qah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqHYF6UCBQtoB5Hmzm24jh5bcVD2H8Z5Ck600QAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAABqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGTWE0P7tm7NDHRMga+VEKBtXuFZsxTdf9AAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBBQMDAgkABAQAAAAEAAkDECcAAAAAAAADAgABNAAAAADgkwQAAAAAAMgAAAAAAAAABqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGAgEKdAAAAABF5Xm8+SU89otH3/H7OjpcLCG6xbI8Ca4SpuBVa/CLQUXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBAAAAAAAAAAAAAAAAAAAAAEXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBBgYBBQgLBwAEAgAAAA==',
90
+ 'staking deactivate builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAUIReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fiey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96W/6Eon6nFlovAcYTKTZK+nk98ALlkSL/BgjW09MceFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxjHdMkoVmOYaR1etoteuKObS21cc1VbIQAAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAwMDAgcABAQAAAAEAAkDECcAAAAAAAAFAwEGAAQFAAAA',
91
+ 'staking delegate builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAgLReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fiey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96W/6Eon6nFlovAcYTKTZK+nk98ALlkSL/BgjW09MceFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAALH5eXiaHEfRPEjYei8nFxDrf5MmCVEXMWKQvWwp2vXZBqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGodgXpQIFC2gHkebObbiOHltxUPYfxnkKTrTRAAAAAAan1RcYx3TJKFZjmGkdXraLXrijm0ttXHNVWyEAAAAABqfVFxksVo7gioRfc9KXiM8DXDFFshqzRNgGLqlAAAAGp9UXGTWE0P7tm7NDHRMga+VEKBtXuFZsxTdf9AAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAwMDAgkABAQAAAAEAAkDECcAAAAAAAAGBgEFCAoHAAQCAAAA',
92
+ 'staking withdraw builder': 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAYJReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fiey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96W/6Eon6nFlovAcYTKTZK+nk98ALlkSL/BgjW09MceFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxjHdMkoVmOYaR1etoteuKObS21cc1VbIQAAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAan1RcZNYTQ/u2bs0MdEyBr5UQoG1e4VmzFN1/0AAAA4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEDAwMCBwAEBAAAAAQACQMQJwAAAAAAAAUFAQAGCAAMBAAAAOCTBAAAAAAA',
93
+ 'wallet initialization builder': 'AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADBUXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBb/oSifqcWWi8BxhMpNkr6eT3wAuWRIv8GCNbT0xx4W4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAABqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAADjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQICAgABNAAAAADgkwQAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEDBCQGAAAAReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0E=',
94
+ };
95
+ describe('Sol Transaction Builder compute unit limit', () => {
96
+ const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
97
+ const authAccount = new src_1.KeyPair(testData.authAccount).getKeys();
98
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
99
+ const stakeAccount = new src_1.KeyPair(testData.stakeAccount).getKeys();
100
+ const otherAccount = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
101
+ const validator = testData.validator;
102
+ const walletPK = testData.associatedTokenAccounts.accounts[0].pub;
103
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
104
+ const amount = '300000';
105
+ const tokenAmount = testData.tokenTransfers.amount.toString();
106
+ const nameUSDC = testData.tokenTransfers.nameUSDC;
107
+ const durableNonce = { walletNonceAddress: nonceAccount.pub, authWalletAddress: authAccount.pub };
108
+ const priorityFee = { amount: 10000 };
109
+ const computeUnitLimit = 200000;
110
+ const builderCases = [
111
+ {
112
+ name: 'transfer builder',
113
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'Transfer', 'Memo'],
114
+ makeBuilder: () => {
115
+ const txBuilder = factory.getTransferBuilder();
116
+ txBuilder.nonce(recentBlockHash, durableNonce);
117
+ txBuilder.sender(authAccount.pub);
118
+ txBuilder.send({ address: otherAccount.pub, amount });
119
+ txBuilder.setPriorityFee(priorityFee);
120
+ txBuilder.memo('test memo');
121
+ return txBuilder;
122
+ },
123
+ },
124
+ {
125
+ name: 'transfer builder v2',
126
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'Transfer'],
127
+ makeBuilder: () => {
128
+ const txBuilder = factory.getTransferBuilderV2();
129
+ txBuilder.nonce(recentBlockHash, durableNonce);
130
+ txBuilder.sender(authAccount.pub);
131
+ txBuilder.send({ address: otherAccount.pub, amount });
132
+ txBuilder.setPriorityFee(priorityFee);
133
+ return txBuilder;
134
+ },
135
+ },
136
+ {
137
+ name: 'token transfer builder',
138
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'TokenTransfer'],
139
+ makeBuilder: () => {
140
+ const txBuilder = factory.getTokenTransferBuilder();
141
+ txBuilder.nonce(recentBlockHash, { walletNonceAddress: nonceAccount.pub, authWalletAddress: walletPK });
142
+ txBuilder.sender(walletPK);
143
+ txBuilder.send({ address: otherAccount.pub, amount: tokenAmount, tokenName: nameUSDC });
144
+ txBuilder.setPriorityFee(priorityFee);
145
+ return txBuilder;
146
+ },
147
+ },
148
+ {
149
+ name: 'ata initialization builder',
150
+ expectedTypes: [
151
+ 'AdvanceNonceAccount',
152
+ 'SetComputeUnitLimit',
153
+ 'SetPriorityFee',
154
+ 'InitializeAssociatedTokenAccount',
155
+ ],
156
+ makeBuilder: () => {
157
+ const txBuilder = factory.getAtaInitializationBuilder();
158
+ txBuilder.nonce(recentBlockHash, durableNonce);
159
+ txBuilder.sender(authAccount.pub);
160
+ txBuilder.mint('tsol:usdc');
161
+ txBuilder.owner(authAccount.pub);
162
+ txBuilder.setPriorityFee(priorityFee);
163
+ return txBuilder;
164
+ },
165
+ },
166
+ {
167
+ // the close ATA builder does not emit a priority fee instruction
168
+ name: 'close ata builder',
169
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'CloseAssociatedTokenAccount'],
170
+ makeBuilder: () => {
171
+ const txBuilder = factory.getCloseAtaInitializationBuilder();
172
+ txBuilder.nonce(recentBlockHash, durableNonce);
173
+ txBuilder.sender(authAccount.pub);
174
+ txBuilder.accountAddress(nonceAccount.pub);
175
+ txBuilder.destinationAddress(authAccount.pub);
176
+ txBuilder.authorityAddress(authAccount.pub);
177
+ return txBuilder;
178
+ },
179
+ },
180
+ {
181
+ name: 'staking activate builder',
182
+ expectedTypes: [
183
+ 'AdvanceNonceAccount',
184
+ 'SetComputeUnitLimit',
185
+ 'SetPriorityFee',
186
+ 'Create',
187
+ 'Initialize',
188
+ 'Delegate',
189
+ ],
190
+ makeBuilder: () => {
191
+ const txBuilder = factory.getStakingActivateBuilder();
192
+ txBuilder.nonce(recentBlockHash, durableNonce);
193
+ txBuilder.sender(authAccount.pub);
194
+ txBuilder.stakingAddress(stakeAccount.pub);
195
+ txBuilder.amount(amount);
196
+ txBuilder.validator(validator.pub);
197
+ txBuilder.setPriorityFee(priorityFee);
198
+ return txBuilder;
199
+ },
200
+ },
201
+ {
202
+ name: 'staking deactivate builder',
203
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'Deactivate'],
204
+ makeBuilder: () => {
205
+ const txBuilder = factory.getStakingDeactivateBuilder();
206
+ txBuilder.nonce(recentBlockHash, durableNonce);
207
+ txBuilder.sender(authAccount.pub);
208
+ txBuilder.stakingAddress(stakeAccount.pub);
209
+ txBuilder.setPriorityFee(priorityFee);
210
+ return txBuilder;
211
+ },
212
+ },
213
+ {
214
+ name: 'staking delegate builder',
215
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'Delegate'],
216
+ makeBuilder: () => {
217
+ const txBuilder = factory.getStakingDelegateBuilder();
218
+ txBuilder.nonce(recentBlockHash, durableNonce);
219
+ txBuilder.sender(authAccount.pub);
220
+ txBuilder.stakingAddress(stakeAccount.pub);
221
+ txBuilder.validator(validator.pub);
222
+ txBuilder.setPriorityFee(priorityFee);
223
+ return txBuilder;
224
+ },
225
+ },
226
+ {
227
+ name: 'staking withdraw builder',
228
+ expectedTypes: ['AdvanceNonceAccount', 'SetComputeUnitLimit', 'SetPriorityFee', 'Withdraw'],
229
+ makeBuilder: () => {
230
+ const txBuilder = factory.getStakingWithdrawBuilder();
231
+ txBuilder.nonce(recentBlockHash, durableNonce);
232
+ txBuilder.sender(authAccount.pub);
233
+ txBuilder.stakingAddress(stakeAccount.pub);
234
+ txBuilder.amount(amount);
235
+ txBuilder.setPriorityFee(priorityFee);
236
+ return txBuilder;
237
+ },
238
+ },
239
+ {
240
+ // the wallet initialization builder is not a sponsored intent, but its parser
241
+ // accepts leading compute-budget instructions so the tx still classifies and
242
+ // round trips when a caller sets a limit
243
+ name: 'wallet initialization builder',
244
+ expectedTypes: ['SetComputeUnitLimit', 'Create', 'InitializeNonceAccount'],
245
+ makeBuilder: () => {
246
+ const txBuilder = factory.getWalletInitializationBuilder();
247
+ txBuilder.nonce(recentBlockHash);
248
+ txBuilder.sender(authAccount.pub);
249
+ txBuilder.address(nonceAccount.pub);
250
+ txBuilder.amount('300000');
251
+ return txBuilder;
252
+ },
253
+ },
254
+ ];
255
+ describe('setComputeUnitLimit validation', () => {
256
+ it('rejects limits that are not integers between 1 and 1,400,000', () => {
257
+ const txBuilder = factory.getTransferBuilder();
258
+ for (const invalid of [0, -1, 1.5, 1400001, NaN]) {
259
+ (0, should_1.default)(() => txBuilder.setComputeUnitLimit(invalid)).throwError(`Invalid compute unit limit, expected an integer between 1 and 1400000, got: ${invalid}`);
260
+ }
261
+ });
262
+ it('accepts the boundary limits 1 and 1,400,000', () => {
263
+ const txBuilder = factory.getTransferBuilder();
264
+ should_1.default.doesNotThrow(() => txBuilder.setComputeUnitLimit(1));
265
+ should_1.default.doesNotThrow(() => txBuilder.setComputeUnitLimit(1400000));
266
+ });
267
+ });
268
+ for (const { name, expectedTypes, makeBuilder } of builderCases) {
269
+ describe(name, () => {
270
+ it('builds [AdvanceNonce, SetComputeUnitLimit, SetComputeUnitPrice, ...] with a limit', async () => {
271
+ const tx = (await makeBuilder().setComputeUnitLimit(computeUnitLimit).build());
272
+ compiledInstructionTypes(tx).should.deepEqual(expectedTypes);
273
+ computeUnitLimits(tx).should.deepEqual([computeUnitLimit]);
274
+ // the instruction is recorded for explain and parsing, exactly once
275
+ tx.toJson()
276
+ .instructionsData.filter((instruction) => instruction.type === 'SetComputeUnitLimit')
277
+ .should.deepEqual([{ type: 'SetComputeUnitLimit', params: { units: computeUnitLimit } }]);
278
+ });
279
+ it('rebuilds byte-identically from raw and preserves the limit', async () => {
280
+ const tx = (await makeBuilder().setComputeUnitLimit(computeUnitLimit).build());
281
+ const rawTx = tx.toBroadcastFormat();
282
+ const rebuiltBuilder = factory.from(rawTx);
283
+ const restoredLimit = rebuiltBuilder._computeUnitLimit;
284
+ should_1.default.equal(restoredLimit, computeUnitLimit);
285
+ const rebuiltTx = (await rebuiltBuilder.build());
286
+ // the signing-phase rebuild must be byte-identical and keep exactly one
287
+ // SetComputeUnitLimit instruction with the original limit
288
+ rebuiltTx.toBroadcastFormat().should.equal(rawTx);
289
+ computeUnitLimits(rebuiltTx).should.deepEqual([computeUnitLimit]);
290
+ });
291
+ it('does not duplicate the instruction when the same builder builds twice', async () => {
292
+ const txBuilder = makeBuilder().setComputeUnitLimit(computeUnitLimit);
293
+ await txBuilder.build();
294
+ const rebuiltTx = (await txBuilder.build());
295
+ computeUnitLimits(rebuiltTx).should.deepEqual([computeUnitLimit]);
296
+ rebuiltTx
297
+ .toJson()
298
+ .instructionsData.filter((instruction) => instruction.type === 'SetComputeUnitLimit')
299
+ .should.deepEqual([{ type: 'SetComputeUnitLimit', params: { units: computeUnitLimit } }]);
300
+ });
301
+ it('leaves the transaction bytes unchanged without a limit', async () => {
302
+ const tx = (await makeBuilder().build());
303
+ tx.toBroadcastFormat().should.equal(RAW_TX_WITHOUT_COMPUTE_UNIT_LIMIT[name]);
304
+ });
305
+ });
306
+ }
307
+ describe('instruction order variants', () => {
308
+ it('places the limit first when no durable nonce is used', async () => {
309
+ const txBuilder = factory.getTransferBuilder();
310
+ txBuilder.nonce(recentBlockHash);
311
+ txBuilder.sender(authAccount.pub);
312
+ txBuilder.send({ address: otherAccount.pub, amount });
313
+ txBuilder.setPriorityFee(priorityFee);
314
+ txBuilder.setComputeUnitLimit(computeUnitLimit);
315
+ const tx = (await txBuilder.build());
316
+ compiledInstructionTypes(tx).should.deepEqual(['SetComputeUnitLimit', 'SetPriorityFee', 'Transfer']);
317
+ });
318
+ it('places the limit before the transfer when no priority fee is used', async () => {
319
+ const txBuilder = factory.getTransferBuilder();
320
+ txBuilder.nonce(recentBlockHash, durableNonce);
321
+ txBuilder.sender(authAccount.pub);
322
+ txBuilder.send({ address: otherAccount.pub, amount });
323
+ txBuilder.setComputeUnitLimit(computeUnitLimit);
324
+ const tx = (await txBuilder.build());
325
+ compiledInstructionTypes(tx).should.deepEqual(['AdvanceNonceAccount', 'SetComputeUnitLimit', 'Transfer']);
326
+ });
327
+ });
328
+ describe('signed rebuild', () => {
329
+ it('rebuilds a signed transaction byte-identically from raw with the limit', async () => {
330
+ const txBuilder = factory.getTransferBuilder();
331
+ txBuilder.nonce(recentBlockHash, durableNonce);
332
+ txBuilder.sender(authAccount.pub);
333
+ txBuilder.send({ address: otherAccount.pub, amount });
334
+ txBuilder.setPriorityFee(priorityFee);
335
+ txBuilder.setComputeUnitLimit(computeUnitLimit);
336
+ txBuilder.sign({ key: authAccount.prv });
337
+ const tx = (await txBuilder.build());
338
+ const rawTx = tx.toBroadcastFormat();
339
+ const rebuiltTx = (await factory.from(rawTx).build());
340
+ rebuiltTx.toBroadcastFormat().should.equal(rawTx);
341
+ computeUnitLimits(rebuiltTx).should.deepEqual([computeUnitLimit]);
342
+ rebuiltTx.signature.should.deepEqual(tx.signature);
343
+ });
344
+ });
345
+ });
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZVVuaXRMaW1pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvY29tcHV0ZVVuaXRMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwyQ0FBNkI7QUFDN0IsNERBQXlEO0FBQ3pELHNDQUEyRDtBQUMzRCw4REFBZ0Q7QUFDaEQsNkNBQW1GO0FBR25GLE1BQU0seUJBQXlCLEdBQUcsNkNBQTZDLENBQUM7QUFFaEY7Ozs7OztHQU1HO0FBQ0gsU0FBUyx3QkFBd0IsQ0FBQyxFQUFlO0lBQy9DLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkQsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEVBQUU7UUFDdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxnQ0FBc0IsQ0FBQztZQUM3QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7WUFDbEUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzNELE1BQU0sRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztnQkFDNUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO2dCQUNsRCxVQUFVLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQzthQUN2RCxDQUFDLENBQUM7WUFDSCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pELENBQUMsQ0FB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QUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDbEUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5pbXBvcnQgeyBLZXlQYWlyLCBVdGlscywgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3NvbCc7XG5pbXBvcnQgeyBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb24sIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24gfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5jb25zdCBDT01QVVRFX0JVREdFVF9QUk9HUkFNX0lEID0gJ0NvbXB1dGVCdWRnZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9uLWNoYWluIGluc3RydWN0aW9uIHR5cGVzIG9mIGEgYnVpbHQgdHJhbnNhY3Rpb24gaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyXG4gKiBpbiB0aGUgY29tcGlsZWQgbWVzc2FnZSwgd2hpY2ggaXMgd2hhdCB0aGUgbmV0d29yayBleGVjdXRlcy4gVGhlIGNvbXBpbGVkIG1lc3NhZ2VcbiAqIGluY2x1ZGVzIHRoZSBkdXJhYmxlLW5vbmNlIEFkdmFuY2VOb25jZUFjY291bnQgaW5zdHJ1Y3Rpb24gdGhhdCB3ZWIzLmpzIHNlcmlhbGl6ZXNcbiAqIGZpcnN0LCBzbyBhIHNwb25zb3JlZCB0cmFuc2FjdGlvbiB3aXRoIGEgY29tcHV0ZSB1bml0IGxpbWl0LCBwcmlvcml0eSBmZWUgYW5kIGR1cmFibGVcbiAqIG5vbmNlIHN0YXJ0cyB3aXRoIFtBZHZhbmNlTm9uY2VBY2NvdW50LCBTZXRDb21wdXRlVW5pdExpbWl0LCBTZXRQcmlvcml0eUZlZSwgLi4uXS5cbiAqL1xuZnVuY3Rpb24gY29tcGlsZWRJbnN0cnVjdGlvblR5cGVzKHR4OiBUcmFuc2FjdGlvbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbWVzc2FnZSA9IHR4LnNvbFRyYW5zYWN0aW9uLmNvbXBpbGVNZXNzYWdlKCk7XG4gIHJldHVybiBtZXNzYWdlLmluc3RydWN0aW9ucy5tYXAoKGNvbXBpbGVkSW5zdHJ1Y3Rpb24pID0+IHtcbiAgICBjb25zdCBpbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgIHByb2dyYW1JZDogbWVzc2FnZS5hY2NvdW50S2V5c1tjb21waWxlZEluc3RydWN0aW9uLnByb2dyYW1JZEluZGV4XSxcbiAgICAgIGtleXM6IGNvbXBpbGVkSW5zdHJ1Y3Rpb24uYWNjb3VudHMubWFwKChhY2NvdW50S2V5SW5kZXgpID0+ICh7XG4gICAgICAgIHB1YmtleTogbWVzc2FnZS5hY2NvdW50S2V5c1thY2NvdW50S2V5SW5kZXhdLFxuICAgICAgICBpc1NpZ25lcjogbWVzc2FnZS5pc0FjY291bnRTaWduZXIoYWNjb3VudEtleUluZGV4KSxcbiAgICAgICAgaXNXcml0YWJsZTogbWVzc2FnZS5pc0FjY291bnRXcml0YWJsZShhY2NvdW50S2V5SW5kZXgpLFxuICAgICAgfSkpLFxuICAgICAgZGF0YTogQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoY29tcGlsZWRJbnN0cnVjdGlvbi5kYXRhKSksXG4gICAgfSk7XG4gICAgcmV0dXJuIFV0aWxzLmdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbikgYXMgc3RyaW5nO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wdXRlLXVuaXQgbGltaXRzIHJlcXVlc3RlZCBieSB0aGUgU2V0Q29tcHV0ZVVuaXRMaW1pdCBpbnN0cnVjdGlvbnMgb2ZcbiAqIHRoZSBidWlsdCB0cmFuc2FjdGlvbi5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVVuaXRMaW1pdHModHg6IFRyYW5zYWN0aW9uKTogbnVtYmVyW10ge1xuICByZXR1cm4gdHguc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zXG4gICAgLmZpbHRlcihcbiAgICAgIChpbnN0cnVjdGlvbikgPT5cbiAgICAgICAgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvU3RyaW5nKCkgPT09IENPTVBVVEVfQlVER0VUX1BST0dSQU1fSUQgJiZcbiAgICAgICAgVXRpbHMuZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKSA9PT0gJ1NldENvbXB1dGVVbml0TGltaXQnXG4gICAgKVxuICAgIC5tYXAoKGluc3RydWN0aW9uKSA9PiBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb24uZGVjb2RlU2V0Q29tcHV0ZVVuaXRMaW1pdChpbnN0cnVjdGlvbikudW5pdHMpO1xufVxuXG4vKipcbiAqIFJhdyB0cmFuc2FjdGlvbiBieXRlcyBvZiBlYWNoIGJ1aWxkZXIgaW50ZW50IGJlbG93IHdoZW4gbm8gY29tcHV0ZSB1bml0IGxpbWl0IGlzIHNldC5cbiAqIENhcHR1cmVkIGZyb20gdGhlIGJ1aWxkZXJzIGJlZm9yZSB0aGUgY29tcHV0ZS11bml0LWxpbWl0IHdvcmssIHNvIGFueSBjaGFuZ2UgdG8gdGhlXG4gKiBuby1saW1pdCBidWlsZCBwYXRoICh3aGljaCBtdXN0IHN0YXkgYnl0ZS1pZGVudGljYWwpIGZhaWxzIHRoZXNlIGNvbXBhcmlzb25zLlxuICovXG5jb25zdCBSQVdfVFhfV0lUSE9VVF9DT01QVVRFX1VOSVRfTElNSVQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICd0cmFuc2ZlciBidWlsZGVyJzpcbiAgICAnQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUhSZVY1dlBrbFBQYUxSOS94K3pvNlhDd2h1c1d5UEFtdUVxYmdWV3Z3aTBGditoS0orcHhaYUx3SEdFeWsyU3ZwNVBmQUM1WkVpL3dZSTF0UFRISGhicWtZRzFMMzdaRHE2dzJ0UzNHK3RGT0RZV2RoTVhGK2t3bFlFRiszbzRuVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQmtadjVTRVhNdi9zcmJweXc1dm52SXpsdThYM0Vtc3NRNXM2UUFBQUFBVktVMXFaS1NFR1RTVG9jV0RhT0h4OE5iWGR2Sks3Z2VRZnFFQkJCVVNOQnFmVkZ4a3NWbzdnaW9SZmM5S1hpTThEWERGRnNocXpSTmdHTHFsQUFBRGpNdHI1TDZ2czZMWS85NlJBQmVYOS9acjZGWWRXdGh4YWxma0VzN2pRZ1FRREF3RUdBQVFFQUFBQUJBQUpBeEFuQUFBQUFBQUFBd0lBQWd3Q0FBQUE0Sk1FQUFBQUFBQUZBQWwwWlhOMElHMWxiVzg9JyxcbiAgJ3RyYW5zZmVyIGJ1aWxkZXIgdjInOlxuICAgICdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFNR1JlVjV2UGtsUFBhTFI5L3grem82WEN3aHVzV3lQQW11RXFiZ1ZXdndpMEZ2K2hLSitweFphTHdIR0V5azJTdnA1UGZBQzVaRWkvd1lJMXRQVEhIaGJxa1lHMUwzN1pEcTZ3MnRTM0crdEZPRFlXZGhNWEYra3dsWUVGKzNvNG5WQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURCa1p2NVNFWE12L3NyYnB5dzV2bnZJemx1OFgzRW1zc1E1czZRQUFBQUFhbjFSY1pMRmFPNElxRVgzUFNsNGpQQTF3eFJiSWFzMFRZQmk2cFFBQUE0ekxhK1MrcjdPaTJQL2VrUUFYbC9mMmEraFdIVnJZY1dwWDVCTE80MElFREF3TUJCUUFFQkFBQUFBUUFDUU1RSndBQUFBQUFBQU1DQUFJTUFnQUFBT0NUQkFBQUFBQUEnLFxuICAndG9rZW4gdHJhbnNmZXIgYnVpbGRlcic6XG4gICAgJ0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQVVKQUd5bUtWcU9KRVFlbUJISDY3dXU4SVNKVjRydHdUZWpMcmp3N1ZTZVc2ZHYraEtKK3B4WmFMd0hHRXlrMlN2cDVQZkFDNVpFaS93WUkxdFBUSEhoYnBYUzhWd01PYmQ2ZlRuZkNLcm54dndRNUxGaGlwVmJpRythaVROTTFlRnNxUmdiVXZmdGtPcnJEYTFMY2I2MFU0TmhaMkV4Y1g2VENWZ1FYN2VqaWRVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1HUm0vbElSY3kvK3l0dW5MRG0rZThqT1c3eGZjU2F5eERtenBBQUFBQTBRT0orODdsS1BJSVlSM014elN6RUpKVURMSzQxWTBRRHk2cUxPMjAybDRHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFBYmQ5dUhYWmFHVDJjdmhSczdyZWF3Y3RJWHRYMXMza1RxTTlZVisvd0NwNHpMYStTK3I3T2kyUC9la1FBWGwvZjJhK2hXSFZyWWNXcFg1QkxPNDBJRURCQU1CQndBRUJBQUFBQVVBQ1FNUUp3QUFBQUFBQUFnRUFnWURBQW9NNEpNRUFBQUFBQUFKJyxcbiAgJ2F0YSBpbml0aWFsaXphdGlvbiBidWlsZGVyJzpcbiAgICAnQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBWUpSZVY1dlBrbFBQYUxSOS94K3pvNlhDd2h1c1d5UEFtdUVxYmdWV3Z3aTBFQXhQRTBmcWk4ellHS2JpaGFmWWRKZ2tud2c4d0lmSzg2anhEM0lMT3ZHVy82RW9uNm5GbG92QWNZVEtUWksrbms5OEFMbGtTTC9CZ2pXMDlNY2VGdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNNbHlXUFRpU0o4YnM5RUNrVWpnMkRDMW9UbWRyL0VJUUVqbnZZMituNFdRTUdSbS9sSVJjeS8reXR1bkxEbStlOGpPVzd4ZmNTYXl4RG16cEFBQUFBMFFPSis4N2xLUElJWVIzTXh6U3pFSkpVRExLNDFZMFFEeTZxTE8yMDJsNEdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQUFiZDl1SFhaYUdUMmN2aFJzN3JlYXdjdElYdFgxczNrVHFNOVlWKy93Q3A0ekxhK1MrcjdPaTJQL2VrUUFYbC9mMmEraFdIVnJZY1dwWDVCTE80MElFREF3TUNCd0FFQkFBQUFBVUFDUU1RSndBQUFBQUFBQVFHQUFFQUJnTUlBUUU9JyxcbiAgJ2Nsb3NlIGF0YSBidWlsZGVyJzpcbiAgICAnQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBTUZSZVY1dlBrbFBQYUxSOS94K3pvNlhDd2h1c1d5UEFtdUVxYmdWV3Z3aTBGditoS0orcHhaYUx3SEdFeWsyU3ZwNVBmQUM1WkVpL3dZSTF0UFRISGhiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJxZlZGeGtzVm83Z2lvUmZjOUtYaU04RFhERkZzaHF6Uk5nR0xxbEFBQUFHM2ZiaDEyV2hrOW5MNFViTzYzbXNITFNGN1Y5Yk41RTZqUFdGZnY4QXFlTXkydmt2cSt6b3RqLzNwRUFGNWYzOW12b1ZoMWEySEZxVitRU3p1TkNCQWdJREFRTUFCQVFBQUFBRUF3RUFBQUVKJyxcbiAgJ3N0YWtpbmcgYWN0aXZhdGUgYnVpbGRlcic6XG4gICAgJ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FKREVYbGViejVKVHoyaTBmZjhmczZPbHdzSWJyRnNqd0pyaEttNEZWcjhJdEJZbnN2dWdFbllmbTVHYno1VEx0TW5jZ0ZIWjhKTXBreFRUbEpJekpvdmVsditoS0orcHhaYUx3SEdFeWsyU3ZwNVBmQUM1WkVpL3dZSTF0UFRISGhiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3WkdiK1VoRnpMLzdLMjZjc09iNTd5TTVidkY5eEpyTEVPYk9rQUFBQUN4K1hsNG1oeEgwVHhJMkhvdkp4Y1E2MytUSmdsUkZ6RmlrTDFzS2RyMTJRYWgyQmVSTjFRcW1EUTN2ZjRxZXJKVmYxTmNpbmh5SzJpa25jQUFBQUFBQnFIWUY2VUNCUXRvQjVIbXptMjRqaDViY1ZEMkg4WjVDazYwMFFBQUFBQUdwOVVYR01kMHlTaFdZNWhwSFY2MmkxNjRvNXRMYlZ4elZWc2hBQUFBQUFhbjFSY1pMRmFPNElxRVgzUFNsNGpQQTF3eFJiSWFzMFRZQmk2cFFBQUFCcWZWRnhrc1hGRWhqTWxNUFVyeGYxamE3Z2lib2YxRTQ5dlppZ0FBQUFBR3A5VVhHVFdFMFA3dG03TkRIUk1nYStWRUtCdFh1RlpzeFRkZjlBQUFBT015MnZrdnErem90ai8zcEVBRjVmMzltdm9WaDFhMkhGcVYrUVN6dU5DQkJRTURBZ2tBQkFRQUFBQUVBQWtERUNjQUFBQUFBQUFEQWdBQk5BQUFBQURna3dRQUFBQUFBTWdBQUFBQUFBQUFCcUhZRjVFM1ZDcVlORGU5L2lwNnNsVi9VMXlLZUhJcmFLU2R3QUFBQUFBR0FnRUtkQUFBQUFCRjVYbTgrU1U4OW90SDMvSDdPanBjTENHNnhiSThDYTRTcHVCVmEvQ0xRVVhsZWJ6NUpUejJpMGZmOGZzNk9sd3NJYnJGc2p3SnJoS200RlZyOEl0QkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVYbGViejVKVHoyaTBmZjhmczZPbHdzSWJyRnNqd0pyaEttNEZWcjhJdEJCZ1lCQlFnTEJ3QUVBZ0FBQUE9PScsXG4gICdzdGFraW5nIGRlYWN0aXZhdGUgYnVpbGRlcic6XG4gICAgJ0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQVVJUmVWNXZQa2xQUGFMUjkveCt6bzZYQ3dodXNXeVBBbXVFcWJnVld2d2kwRmlleSs2QVNkaCtia1p2UGxNdTB5ZHlBVWRud2t5bVRGTk9Va2pNbWk5NlcvNkVvbjZuRmxvdkFjWVRLVFpLK25rOThBTGxrU0wvQmdqVzA5TWNlRnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREJrWnY1U0VYTXYvc3JicHl3NXZudkl6bHU4WDNFbXNzUTVzNlFBQUFBQWFoMkJlUk4xUXFtRFEzdmY0cWVySlZmMU5jaW5oeUsyaWtuY0FBQUFBQUJxZlZGeGpIZE1rb1ZtT1lhUjFldG90ZXVLT2JTMjFjYzFWYklRQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFPTXkydmt2cSt6b3RqLzNwRUFGNWYzOW12b1ZoMWEySEZxVitRU3p1TkNCQXdNREFnY0FCQVFBQUFBRUFBa0RFQ2NBQUFBQUFBQUZBd0VHQUFRRkFBQUEnLFxuICAnc3Rha2luZyBkZWxlZ2F0ZSBidWlsZGVyJzpcbiAgICAnQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBZ0xSZVY1dlBrbFBQYUxSOS94K3pvNlhDd2h1c1d5UEFtdUVxYmdWV3Z3aTBGaWV5KzZBU2RoK2JrWnZQbE11MHlkeUFVZG53a3ltVEZOT1Vrak1taTk2Vy82RW9uNm5GbG92QWNZVEtUWksrbms5OEFMbGtTTC9CZ2pXMDlNY2VGdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQmtadjVTRVhNdi9zcmJweXc1dm52SXpsdThYM0Vtc3NRNXM2UUFBQUFMSDVlWGlhSEVmUlBFalllaThuRnhEcmY1TW1DVkVYTVdLUXZXd3AydlhaQnFIWUY1RTNWQ3FZTkRlOS9pcDZzbFYvVTF5S2VISXJhS1Nkd0FBQUFBQUdvZGdYcFFJRkMyZ0hrZWJPYmJpT0hsdHhVUFlmeG5rS1RyVFJBQUFBQUFhbjFSY1l4M1RKS0Zaam1Ha2RYcmFMWHJpam0wdHRYSE5WV3lFQUFBQUFCcWZWRnhrc1ZvN2dpb1JmYzlLWGlNOERYREZGc2hxelJOZ0dMcWxBQUFBR3A5VVhHVFdFMFA3dG03TkRIUk1nYStWRUtCdFh1RlpzeFRkZjlBQUFBT015MnZrdnErem90ai8zcEVBRjVmMzltdm9WaDFhMkhGcVYrUVN6dU5DQkF3TURBZ2tBQkFRQUFBQUVBQWtERUNjQUFBQUFBQUFHQmdFRkNBb0hBQVFDQUFBQScsXG4gICdzdGFraW5nIHdpdGhkcmF3IGJ1aWxkZXInOlxuICAgICdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFZSlJlVjV2UGtsUFBhTFI5L3grem82WEN3aHVzV3lQQW11RXFiZ1ZXdndpMEZpZXkrNkFTZGgrYmtadlBsTXUweWR5QVVkbndreW1URk5PVWtqTW1pOTZXLzZFb242bkZsb3ZBY1lUS1RaSytuazk4QUxsa1NML0JnalcwOU1jZUZ1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURCa1p2NVNFWE12L3NyYnB5dzV2bnZJemx1OFgzRW1zc1E1czZRQUFBQUFhaDJCZVJOMVFxbURRM3ZmNHFlckpWZjFOY2luaHlLMmlrbmNBQUFBQUFCcWZWRnhqSGRNa29WbU9ZYVIxZXRvdGV1S09iUzIxY2MxVmJJUUFBQUFBR3A5VVhHU3hXanVDS2hGOXowcGVJendOY01VV3lHck5FMkFZdXFVQUFBQWFuMVJjWk5ZVFEvdTJiczBNZEV5QnI1VVFvRzFlNFZtekZOMS8wQUFBQTR6TGErUytyN09pMlAvZWtRQVhsL2YyYStoV0hWclljV3BYNUJMTzQwSUVEQXdNQ0J3QUVCQUFBQUFRQUNRTVFKd0FBQUFBQUFBVUZBUUFHQ0FBTUJBQUFBT0NUQkFBQUFBQUEnLFxuICAnd2FsbGV0IGluaXRpYWxpemF0aW9uIGJ1aWxkZXInOlxuICAgICdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBREJVWGxlYno1SlR6MmkwZmY4ZnM2T2x3c0lickZzandKcmhLbTRGVnI4SXRCYi9vU2lmcWNXV2k4QnhoTXBOa3I2ZVQzd0F1V1JJdjhHQ05iVDB4eDRXNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFhbjFSY1pMRmFPNElxRVgzUFNsNGpQQTF3eFJiSWFzMFRZQmk2cFFBQUFCcWZWRnhrc1hGRWhqTWxNUFVyeGYxamE3Z2lib2YxRTQ5dlppZ0FBQUFEak10cjVMNnZzNkxZLzk2UkFCZVg5L1pyNkZZZFd0aHhhbGZrRXM3alFnUUlDQWdBQk5BQUFBQURna3dRQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0F3RURCQ1FHQUFBQVJlVjV2UGtsUFBhTFI5L3grem82WEN3aHVzV3lQQW11RXFiZ1ZXdndpMEU9Jyxcbn07XG5cbmRlc2NyaWJlKCdTb2wgVHJhbnNhY3Rpb24gQnVpbGRlciBjb21wdXRlIHVuaXQgbGltaXQnLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgndHNvbCcpO1xuICBjb25zdCBhdXRoQWNjb3VudCA9IG5ldyBLZXlQYWlyKHRlc3REYXRhLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IG5vbmNlQWNjb3VudCA9IG5ldyBLZXlQYWlyKHRlc3REYXRhLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBzdGFrZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3Qgb3RoZXJBY2NvdW50ID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnBydktleXMucHJ2S2V5MS5iYXNlNTggfSkuZ2V0S2V5cygpO1xuICBjb25zdCB2YWxpZGF0b3IgPSB0ZXN0RGF0YS52YWxpZGF0b3I7XG4gIGNvbnN0IHdhbGxldFBLID0gdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMF0ucHViO1xuICBjb25zdCByZWNlbnRCbG9ja0hhc2ggPSAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknO1xuICBjb25zdCBhbW91bnQgPSAnMzAwMDAwJztcbiAgY29uc3QgdG9rZW5BbW91bnQgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5hbW91bnQudG9TdHJpbmcoKTtcbiAgY29uc3QgbmFtZVVTREMgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5uYW1lVVNEQztcbiAgY29uc3QgZHVyYWJsZU5vbmNlID0geyB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsIGF1dGhXYWxsZXRBZGRyZXNzOiBhdXRoQWNjb3VudC5wdWIgfTtcbiAgY29uc3QgcHJpb3JpdHlGZWUgPSB7IGFtb3VudDogMTAwMDAgfTtcbiAgY29uc3QgY29tcHV0ZVVuaXRMaW1pdCA9IDIwMDAwMDtcblxuICBpbnRlcmZhY2UgQnVpbGRlckNhc2Uge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogZXhwZWN0ZWQgY29tcGlsZWQgaW5zdHJ1Y3Rpb24gdHlwZXMgb2YgdGhlIGJ1aWx0IHRyYW5zYWN0aW9uLCBpbiBvcmRlciAqL1xuICAgIGV4cGVjdGVkVHlwZXM6IHN0cmluZ1tdO1xuICAgIG1ha2VCdWlsZGVyOiAoKSA9PiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gIH1cblxuICBjb25zdCBidWlsZGVyQ2FzZXM6IEJ1aWxkZXJDYXNlW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ3RyYW5zZmVyIGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogWydBZHZhbmNlTm9uY2VBY2NvdW50JywgJ1NldENvbXB1dGVVbml0TGltaXQnLCAnU2V0UHJpb3JpdHlGZWUnLCAnVHJhbnNmZXInLCAnTWVtbyddLFxuICAgICAgbWFrZUJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwgZHVyYWJsZU5vbmNlKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZCh7IGFkZHJlc3M6IG90aGVyQWNjb3VudC5wdWIsIGFtb3VudCB9KTtcbiAgICAgICAgdHhCdWlsZGVyLnNldFByaW9yaXR5RmVlKHByaW9yaXR5RmVlKTtcbiAgICAgICAgdHhCdWlsZGVyLm1lbW8oJ3Rlc3QgbWVtbycpO1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd0cmFuc2ZlciBidWlsZGVyIHYyJyxcbiAgICAgIGV4cGVjdGVkVHlwZXM6IFsnQWR2YW5jZU5vbmNlQWNjb3VudCcsICdTZXRDb21wdXRlVW5pdExpbWl0JywgJ1NldFByaW9yaXR5RmVlJywgJ1RyYW5zZmVyJ10sXG4gICAgICBtYWtlQnVpbGRlcjogKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlclYyKCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIGR1cmFibGVOb25jZSk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmQoeyBhZGRyZXNzOiBvdGhlckFjY291bnQucHViLCBhbW91bnQgfSk7XG4gICAgICAgIHR4QnVpbGRlci5zZXRQcmlvcml0eUZlZShwcmlvcml0eUZlZSk7XG4gICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Rva2VuIHRyYW5zZmVyIGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogWydBZHZhbmNlTm9uY2VBY2NvdW50JywgJ1NldENvbXB1dGVVbml0TGltaXQnLCAnU2V0UHJpb3JpdHlGZWUnLCAnVG9rZW5UcmFuc2ZlciddLFxuICAgICAgbWFrZUJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YiwgYXV0aFdhbGxldEFkZHJlc3M6IHdhbGxldFBLIH0pO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldFBLKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmQoeyBhZGRyZXNzOiBvdGhlckFjY291bnQucHViLCBhbW91bnQ6IHRva2VuQW1vdW50LCB0b2tlbk5hbWU6IG5hbWVVU0RDIH0pO1xuICAgICAgICB0eEJ1aWxkZXIuc2V0UHJpb3JpdHlGZWUocHJpb3JpdHlGZWUpO1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhdGEgaW5pdGlhbGl6YXRpb24gYnVpbGRlcicsXG4gICAgICBleHBlY3RlZFR5cGVzOiBbXG4gICAgICAgICdBZHZhbmNlTm9uY2VBY2NvdW50JyxcbiAgICAgICAgJ1NldENvbXB1dGVVbml0TGltaXQnLFxuICAgICAgICAnU2V0UHJpb3JpdHlGZWUnLFxuICAgICAgICAnSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQnLFxuICAgICAgXSxcbiAgICAgIG1ha2VCdWlsZGVyOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIGR1cmFibGVOb25jZSk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLm1pbnQoJ3Rzb2w6dXNkYycpO1xuICAgICAgICB0eEJ1aWxkZXIub3duZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLnNldFByaW9yaXR5RmVlKHByaW9yaXR5RmVlKTtcbiAgICAgICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyB0aGUgY2xvc2UgQVRBIGJ1aWxkZXIgZG9lcyBub3QgZW1pdCBhIHByaW9yaXR5IGZlZSBpbnN0cnVjdGlvblxuICAgICAgbmFtZTogJ2Nsb3NlIGF0YSBidWlsZGVyJyxcbiAgICAgIGV4cGVjdGVkVHlwZXM6IFsnQWR2YW5jZU5vbmNlQWNjb3VudCcsICdTZXRDb21wdXRlVW5pdExpbWl0JywgJ0Nsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCddLFxuICAgICAgbWFrZUJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCBkdXJhYmxlTm9uY2UpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKGF1dGhBY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5hY2NvdW50QWRkcmVzcyhub25jZUFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcyhhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzdGFraW5nIGFjdGl2YXRlIGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogW1xuICAgICAgICAnQWR2YW5jZU5vbmNlQWNjb3VudCcsXG4gICAgICAgICdTZXRDb21wdXRlVW5pdExpbWl0JyxcbiAgICAgICAgJ1NldFByaW9yaXR5RmVlJyxcbiAgICAgICAgJ0NyZWF0ZScsXG4gICAgICAgICdJbml0aWFsaXplJyxcbiAgICAgICAgJ0RlbGVnYXRlJyxcbiAgICAgIF0sXG4gICAgICBtYWtlQnVpbGRlcjogKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwgZHVyYWJsZU5vbmNlKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgICAgdHhCdWlsZGVyLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLnNldFByaW9yaXR5RmVlKHByaW9yaXR5RmVlKTtcbiAgICAgICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3Rha2luZyBkZWFjdGl2YXRlIGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogWydBZHZhbmNlTm9uY2VBY2NvdW50JywgJ1NldENvbXB1dGVVbml0TGltaXQnLCAnU2V0UHJpb3JpdHlGZWUnLCAnRGVhY3RpdmF0ZSddLFxuICAgICAgbWFrZUJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwgZHVyYWJsZU5vbmNlKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5zZXRQcmlvcml0eUZlZShwcmlvcml0eUZlZSk7XG4gICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3N0YWtpbmcgZGVsZWdhdGUgYnVpbGRlcicsXG4gICAgICBleHBlY3RlZFR5cGVzOiBbJ0FkdmFuY2VOb25jZUFjY291bnQnLCAnU2V0Q29tcHV0ZVVuaXRMaW1pdCcsICdTZXRQcmlvcml0eUZlZScsICdEZWxlZ2F0ZSddLFxuICAgICAgbWFrZUJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIGR1cmFibGVOb25jZSk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc2V0UHJpb3JpdHlGZWUocHJpb3JpdHlGZWUpO1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzdGFraW5nIHdpdGhkcmF3IGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogWydBZHZhbmNlTm9uY2VBY2NvdW50JywgJ1NldENvbXB1dGVVbml0TGltaXQnLCAnU2V0UHJpb3JpdHlGZWUnLCAnV2l0aGRyYXcnXSxcbiAgICAgIG1ha2VCdWlsZGVyOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCBkdXJhYmxlTm9uY2UpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKGF1dGhBY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgICB0eEJ1aWxkZXIuc2V0UHJpb3JpdHlGZWUocHJpb3JpdHlGZWUpO1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHRoZSB3YWxsZXQgaW5pdGlhbGl6YXRpb24gYnVpbGRlciBpcyBub3QgYSBzcG9uc29yZWQgaW50ZW50LCBidXQgaXRzIHBhcnNlclxuICAgICAgLy8gYWNjZXB0cyBsZWFkaW5nIGNvbXB1dGUtYnVkZ2V0IGluc3RydWN0aW9ucyBzbyB0aGUgdHggc3RpbGwgY2xhc3NpZmllcyBhbmRcbiAgICAgIC8vIHJvdW5kIHRyaXBzIHdoZW4gYSBjYWxsZXIgc2V0cyBhIGxpbWl0XG4gICAgICBuYW1lOiAnd2FsbGV0IGluaXRpYWxpemF0aW9uIGJ1aWxkZXInLFxuICAgICAgZXhwZWN0ZWRUeXBlczogWydTZXRDb21wdXRlVW5pdExpbWl0JywgJ0NyZWF0ZScsICdJbml0aWFsaXplTm9uY2VBY2NvdW50J10sXG4gICAgICBtYWtlQnVpbGRlcjogKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuYWRkcmVzcyhub25jZUFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmFtb3VudCgnMzAwMDAwJyk7XG4gICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgZGVzY3JpYmUoJ3NldENvbXB1dGVVbml0TGltaXQgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgncmVqZWN0cyBsaW1pdHMgdGhhdCBhcmUgbm90IGludGVnZXJzIGJldHdlZW4gMSBhbmQgMSw0MDAsMDAwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGZvciAoY29uc3QgaW52YWxpZCBvZiBbMCwgLTEsIDEuNSwgMTQwMDAwMSwgTmFOXSkge1xuICAgICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLnNldENvbXB1dGVVbml0TGltaXQoaW52YWxpZCkpLnRocm93RXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgY29tcHV0ZSB1bml0IGxpbWl0LCBleHBlY3RlZCBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTQwMDAwMCwgZ290OiAke2ludmFsaWR9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgdGhlIGJvdW5kYXJ5IGxpbWl0cyAxIGFuZCAxLDQwMCwwMDAnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB0eEJ1aWxkZXIuc2V0Q29tcHV0ZVVuaXRMaW1pdCgxKSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5zZXRDb21wdXRlVW5pdExpbWl0KDE0MDAwMDApKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZm9yIChjb25zdCB7IG5hbWUsIGV4cGVjdGVkVHlwZXMsIG1ha2VCdWlsZGVyIH0gb2YgYnVpbGRlckNhc2VzKSB7XG4gICAgZGVzY3JpYmUobmFtZSwgKCkgPT4ge1xuICAgICAgaXQoJ2J1aWxkcyBbQWR2YW5jZU5vbmNlLCBTZXRDb21wdXRlVW5pdExpbWl0LCBTZXRDb21wdXRlVW5pdFByaWNlLCAuLi5dIHdpdGggYSBsaW1pdCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHggPSAoYXdhaXQgbWFrZUJ1aWxkZXIoKS5zZXRDb21wdXRlVW5pdExpbWl0KGNvbXB1dGVVbml0TGltaXQpLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25UeXBlcyh0eCkuc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZFR5cGVzKTtcbiAgICAgICAgY29tcHV0ZVVuaXRMaW1pdHModHgpLnNob3VsZC5kZWVwRXF1YWwoW2NvbXB1dGVVbml0TGltaXRdKTtcbiAgICAgICAgLy8gdGhlIGluc3RydWN0aW9uIGlzIHJlY29yZGVkIGZvciBleHBsYWluIGFuZCBwYXJzaW5nLCBleGFjdGx5IG9uY2VcbiAgICAgICAgdHgudG9Kc29uKClcbiAgICAgICAgICAuaW5zdHJ1Y3Rpb25zRGF0YS5maWx0ZXIoKGluc3RydWN0aW9uKSA9PiBpbnN0cnVjdGlvbi50eXBlID09PSAnU2V0Q29tcHV0ZVVuaXRMaW1pdCcpXG4gICAgICAgICAgLnNob3VsZC5kZWVwRXF1YWwoW3sgdHlwZTogJ1NldENvbXB1dGVVbml0TGltaXQnLCBwYXJhbXM6IHsgdW5pdHM6IGNvbXB1dGVVbml0TGltaXQgfSB9XSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JlYnVpbGRzIGJ5dGUtaWRlbnRpY2FsbHkgZnJvbSByYXcgYW5kIHByZXNlcnZlcyB0aGUgbGltaXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IG1ha2VCdWlsZGVyKCkuc2V0Q29tcHV0ZVVuaXRMaW1pdChjb21wdXRlVW5pdExpbWl0KS5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4KTtcbiAgICAgICAgY29uc3QgcmVzdG9yZWRMaW1pdCA9IChyZWJ1aWx0QnVpbGRlciBhcyB1bmtub3duIGFzIHsgX2NvbXB1dGVVbml0TGltaXQ/OiBudW1iZXIgfSkuX2NvbXB1dGVVbml0TGltaXQ7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN0b3JlZExpbWl0LCBjb21wdXRlVW5pdExpbWl0KTtcblxuICAgICAgICBjb25zdCByZWJ1aWx0VHggPSAoYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICAgIC8vIHRoZSBzaWduaW5nLXBoYXNlIHJlYnVpbGQgbXVzdCBiZSBieXRlLWlkZW50aWNhbCBhbmQga2VlcCBleGFjdGx5IG9uZVxuICAgICAgICAvLyBTZXRDb21wdXRlVW5pdExpbWl0IGluc3RydWN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIGxpbWl0XG4gICAgICAgIHJlYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLnNob3VsZC5lcXVhbChyYXdUeCk7XG4gICAgICAgIGNvbXB1dGVVbml0TGltaXRzKHJlYnVpbHRUeCkuc2hvdWxkLmRlZXBFcXVhbChbY29tcHV0ZVVuaXRMaW1pdF0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCBkdXBsaWNhdGUgdGhlIGluc3RydWN0aW9uIHdoZW4gdGhlIHNhbWUgYnVpbGRlciBidWlsZHMgdHdpY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG1ha2VCdWlsZGVyKCkuc2V0Q29tcHV0ZVVuaXRMaW1pdChjb21wdXRlVW5pdExpbWl0KTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG5cbiAgICAgICAgY29tcHV0ZVVuaXRMaW1pdHMocmVidWlsdFR4KS5zaG91bGQuZGVlcEVxdWFsKFtjb21wdXRlVW5pdExpbWl0XSk7XG4gICAgICAgIHJlYnVpbHRUeFxuICAgICAgICAgIC50b0pzb24oKVxuICAgICAgICAgIC5pbnN0cnVjdGlvbnNEYXRhLmZpbHRlcigoaW5zdHJ1Y3Rpb24pID0+IGluc3RydWN0aW9uLnR5cGUgPT09ICdTZXRDb21wdXRlVW5pdExpbWl0JylcbiAgICAgICAgICAuc2hvdWxkLmRlZXBFcXVhbChbeyB0eXBlOiAnU2V0Q29tcHV0ZVVuaXRMaW1pdCcsIHBhcmFtczogeyB1bml0czogY29tcHV0ZVVuaXRMaW1pdCB9IH1dKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnbGVhdmVzIHRoZSB0cmFuc2FjdGlvbiBieXRlcyB1bmNoYW5nZWQgd2l0aG91dCBhIGxpbWl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eCA9IChhd2FpdCBtYWtlQnVpbGRlcigpLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgICB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLnNob3VsZC5lcXVhbChSQVdfVFhfV0lUSE9VVF9DT01QVVRFX1VOSVRfTElNSVRbbmFtZV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXNjcmliZSgnaW5zdHJ1Y3Rpb24gb3JkZXIgdmFyaWFudHMnLCAoKSA9PiB7XG4gICAgaXQoJ3BsYWNlcyB0aGUgbGltaXQgZmlyc3Qgd2hlbiBubyBkdXJhYmxlIG5vbmNlIGlzIHVzZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGF1dGhBY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7IGFkZHJlc3M6IG90aGVyQWNjb3VudC5wdWIsIGFtb3VudCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZXRQcmlvcml0eUZlZShwcmlvcml0eUZlZSk7XG4gICAgICB0eEJ1aWxkZXIuc2V0Q29tcHV0ZVVuaXRMaW1pdChjb21wdXRlVW5pdExpbWl0KTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgY29tcGlsZWRJbnN0cnVjdGlvblR5cGVzKHR4KS5zaG91bGQuZGVlcEVxdWFsKFsnU2V0Q29tcHV0ZVVuaXRMaW1pdCcsICdTZXRQcmlvcml0eUZlZScsICdUcmFuc2ZlciddKTtcbiAgICB9KTtcblxuICAgIGl0KCdwbGFjZXMgdGhlIGxpbWl0IGJlZm9yZSB0aGUgdHJhbnNmZXIgd2hlbiBubyBwcmlvcml0eSBmZWUgaXMgdXNlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCBkdXJhYmxlTm9uY2UpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLnNlbmQoeyBhZGRyZXNzOiBvdGhlckFjY291bnQucHViLCBhbW91bnQgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2V0Q29tcHV0ZVVuaXRMaW1pdChjb21wdXRlVW5pdExpbWl0KTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgY29tcGlsZWRJbnN0cnVjdGlvblR5cGVzKHR4KS5zaG91bGQuZGVlcEVxdWFsKFsnQWR2YW5jZU5vbmNlQWNjb3VudCcsICdTZXRDb21wdXRlVW5pdExpbWl0JywgJ1RyYW5zZmVyJ10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2lnbmVkIHJlYnVpbGQnLCAoKSA9PiB7XG4gICAgaXQoJ3JlYnVpbGRzIGEgc2lnbmVkIHRyYW5zYWN0aW9uIGJ5dGUtaWRlbnRpY2FsbHkgZnJvbSByYXcgd2l0aCB0aGUgbGltaXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwgZHVyYWJsZU5vbmNlKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHsgYWRkcmVzczogb3RoZXJBY2NvdW50LnB1YiwgYW1vdW50IH0pO1xuICAgICAgdHhCdWlsZGVyLnNldFByaW9yaXR5RmVlKHByaW9yaXR5RmVlKTtcbiAgICAgIHR4QnVpbGRlci5zZXRDb21wdXRlVW5pdExpbWl0KGNvbXB1dGVVbml0TGltaXQpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGF1dGhBY2NvdW50LnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgcmVidWlsdFR4ID0gKGF3YWl0IGZhY3RvcnkuZnJvbShyYXdUeCkuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICByZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwocmF3VHgpO1xuICAgICAgY29tcHV0ZVVuaXRMaW1pdHMocmVidWlsdFR4KS5zaG91bGQuZGVlcEVxdWFsKFtjb21wdXRlVW5pdExpbWl0XSk7XG4gICAgICByZWJ1aWx0VHguc2lnbmF0dXJlLnNob3VsZC5kZWVwRXF1YWwodHguc2lnbmF0dXJlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=confidentialTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidentialTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/confidentialTransferBuilder.ts"],"names":[],"mappings":""}