@bitgo-beta/sdk-coin-sol 7.6.4-beta.7 → 7.6.4-beta.700

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 (443) 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 +223 -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 +93 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +212 -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/cjs/src/lib/keyPair.d.ts.map +1 -0
  34. package/dist/cjs/src/lib/keyPair.js +63 -0
  35. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  36. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  37. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  39. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  40. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  42. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  43. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  45. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  46. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/solInstructionFactory.js +1094 -0
  48. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  50. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  52. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  53. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  54. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  56. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  57. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  58. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  59. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  60. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  61. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  62. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  63. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  64. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  65. package/dist/cjs/src/lib/tokenExtensions.js +105 -0
  66. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  67. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  68. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  69. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/transaction.js +615 -0
  71. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +2 -0
  72. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  73. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  74. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
  75. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -0
  77. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  79. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  80. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  81. package/dist/cjs/src/lib/transferBuilderV2.js +254 -0
  82. package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
  83. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  84. package/dist/cjs/src/lib/utils.js +657 -0
  85. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  86. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  87. package/dist/cjs/src/register.d.ts +5 -0
  88. package/dist/cjs/src/register.d.ts.map +1 -0
  89. package/dist/cjs/src/register.js +29 -0
  90. package/dist/{src → cjs/src}/sol.d.ts +125 -3
  91. package/dist/cjs/src/sol.d.ts.map +1 -0
  92. package/dist/cjs/src/sol.js +1637 -0
  93. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  94. package/dist/cjs/src/solToken.d.ts.map +1 -0
  95. package/dist/cjs/src/solToken.js +79 -0
  96. package/dist/cjs/src/tsol.d.ts.map +1 -0
  97. package/dist/cjs/src/tsol.js +24 -0
  98. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  99. package/dist/cjs/test/fixtures/sol.js +1433 -0
  100. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  101. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  102. package/dist/cjs/test/resources/sol.js +320 -0
  103. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  104. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  106. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  107. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  108. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  109. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  110. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  112. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  113. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  114. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  115. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  116. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  117. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  118. package/dist/cjs/test/unit/keyPair.js +177 -0
  119. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  120. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  121. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  122. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  123. package/dist/cjs/test/unit/register.d.ts +2 -0
  124. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/register.js +65 -0
  126. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  127. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  128. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  129. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  130. package/dist/cjs/test/unit/sol.js +4899 -0
  131. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  132. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  133. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  134. package/dist/cjs/test/unit/solToken.js +37 -0
  135. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  136. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  138. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  139. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/tokenExtensions.js +58 -0
  141. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  142. package/dist/cjs/test/unit/transaction.js +1108 -0
  143. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  144. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  145. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  146. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  147. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  148. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  150. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  151. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  152. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
  153. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  154. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  155. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  156. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  157. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  158. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  159. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  160. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  161. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  162. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  163. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  164. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  165. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  166. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  167. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  168. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  169. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  170. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  171. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  172. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  173. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  174. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  175. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  176. package/dist/cjs/test/unit/utils.js +628 -0
  177. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  178. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  179. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  180. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  181. package/dist/esm/index.d.ts +7 -0
  182. package/dist/esm/index.js +7 -0
  183. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  184. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  185. package/dist/esm/lib/ataInitializationBuilder.js +183 -0
  186. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  187. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  188. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  189. package/dist/esm/lib/confidentialTransferBuilder.d.ts +93 -0
  190. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  191. package/dist/esm/lib/confidentialTransferBuilder.js +205 -0
  192. package/dist/esm/lib/constants.d.ts +227 -0
  193. package/dist/esm/lib/constants.d.ts.map +1 -0
  194. package/dist/esm/lib/constants.js +266 -0
  195. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  196. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  197. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  198. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  199. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  200. package/dist/esm/lib/iface.d.ts +526 -0
  201. package/dist/esm/lib/iface.d.ts.map +1 -0
  202. package/dist/esm/lib/iface.js +3 -0
  203. package/dist/esm/lib/index.d.ts +27 -0
  204. package/dist/esm/lib/index.d.ts.map +1 -0
  205. package/dist/esm/lib/index.js +27 -0
  206. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  207. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  208. package/dist/esm/lib/instructionParamsFactory.js +1212 -0
  209. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  210. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  211. package/dist/esm/lib/keyPair.d.ts +26 -0
  212. package/dist/esm/lib/keyPair.js +59 -0
  213. package/dist/esm/lib/messages/index.d.ts +2 -0
  214. package/dist/esm/lib/messages/index.js +2 -0
  215. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  216. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  217. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  218. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  219. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  220. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  221. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  222. package/dist/esm/lib/scaledUiAmount.js +108 -0
  223. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  224. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  225. package/dist/esm/lib/solInstructionFactory.js +1088 -0
  226. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  227. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  228. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  229. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  230. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  231. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  232. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  233. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  234. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  235. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  236. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  237. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  238. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  239. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  240. package/dist/esm/lib/token2022Resolve.js +194 -0
  241. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  242. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  243. package/dist/esm/lib/tokenExtensions.js +99 -0
  244. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  245. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  246. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  247. package/dist/esm/lib/transaction.d.ts +103 -0
  248. package/dist/esm/lib/transaction.d.ts.map +1 -0
  249. package/dist/esm/lib/transaction.js +608 -0
  250. package/dist/esm/lib/transactionBuilder.d.ts +130 -0
  251. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  252. package/dist/esm/lib/transactionBuilder.js +373 -0
  253. package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
  254. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  255. package/dist/esm/lib/transactionBuilderFactory.js +218 -0
  256. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  257. package/dist/esm/lib/transferBuilder.js +63 -0
  258. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  259. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  260. package/dist/esm/lib/transferBuilderV2.js +247 -0
  261. package/dist/esm/lib/utils.d.ts +205 -0
  262. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  263. package/dist/esm/lib/utils.js +619 -0
  264. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  265. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  266. package/dist/esm/register.d.ts +5 -0
  267. package/dist/esm/register.d.ts.map +1 -0
  268. package/dist/esm/register.js +24 -0
  269. package/dist/esm/sol.d.ts +349 -0
  270. package/dist/esm/sol.d.ts.map +1 -0
  271. package/dist/esm/sol.js +1596 -0
  272. package/dist/esm/solToken.d.ts +44 -0
  273. package/dist/esm/solToken.d.ts.map +1 -0
  274. package/dist/esm/solToken.js +75 -0
  275. package/dist/esm/tsol.d.ts +11 -0
  276. package/dist/esm/tsol.js +20 -0
  277. package/package.json +36 -16
  278. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  279. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  280. package/dist/src/config/token2022StaticConfig.js +0 -50
  281. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  282. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  283. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  284. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  285. package/dist/src/lib/closeAtaBuilder.js +0 -69
  286. package/dist/src/lib/constants.d.ts.map +0 -1
  287. package/dist/src/lib/constants.js +0 -171
  288. package/dist/src/lib/customInstructionBuilder.js +0 -289
  289. package/dist/src/lib/iface.d.ts +0 -244
  290. package/dist/src/lib/iface.d.ts.map +0 -1
  291. package/dist/src/lib/iface.js +0 -7
  292. package/dist/src/lib/index.d.ts.map +0 -1
  293. package/dist/src/lib/index.js +0 -77
  294. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  295. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  296. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  297. package/dist/src/lib/keyPair.js +0 -63
  298. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  299. package/dist/src/lib/solInstructionFactory.js +0 -572
  300. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  301. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  302. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  303. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  304. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  305. package/dist/src/lib/token2022Config.d.ts +0 -44
  306. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  307. package/dist/src/lib/token2022Config.js +0 -27
  308. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  309. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  310. package/dist/src/lib/transaction.d.ts.map +0 -1
  311. package/dist/src/lib/transaction.js +0 -595
  312. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  313. package/dist/src/lib/transactionBuilder.js +0 -380
  314. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  315. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  316. package/dist/src/lib/transferBuilder.js +0 -70
  317. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  318. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  319. package/dist/src/lib/transferBuilderV2.js +0 -210
  320. package/dist/src/lib/utils.js +0 -586
  321. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  322. package/dist/src/register.d.ts +0 -3
  323. package/dist/src/register.d.ts.map +0 -1
  324. package/dist/src/register.js +0 -15
  325. package/dist/src/sol.d.ts.map +0 -1
  326. package/dist/src/sol.js +0 -1285
  327. package/dist/src/solToken.d.ts.map +0 -1
  328. package/dist/src/solToken.js +0 -69
  329. package/dist/src/tsol.js +0 -24
  330. package/dist/test/fixtures/sol.js +0 -1433
  331. package/dist/test/resources/sol.d.ts.map +0 -1
  332. package/dist/test/resources/sol.js +0 -320
  333. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  334. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  335. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  336. package/dist/test/unit/getBuilderFactory.js +0 -10
  337. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  338. package/dist/test/unit/instructionParamsFactory.js +0 -412
  339. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  340. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  341. package/dist/test/unit/keyPair.js +0 -177
  342. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  343. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  344. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  345. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  346. package/dist/test/unit/sol.js +0 -3108
  347. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  348. package/dist/test/unit/solInstructionFactory.js +0 -454
  349. package/dist/test/unit/solToken.d.ts.map +0 -1
  350. package/dist/test/unit/solToken.js +0 -31
  351. package/dist/test/unit/transaction.d.ts.map +0 -1
  352. package/dist/test/unit/transaction.js +0 -983
  353. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  354. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  355. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  356. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  357. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  358. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  359. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  360. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  361. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  362. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  363. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  364. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  365. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  366. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  367. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  368. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  369. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  370. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  371. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  372. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  373. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  374. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  375. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  376. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  377. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  378. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  379. package/dist/test/unit/utils.js +0 -517
  380. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  381. package/dist/test/unit/versionedTransaction.js +0 -207
  382. package/dist/tsconfig.tsbuildinfo +0 -1
  383. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  384. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  385. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  386. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  387. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  388. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  389. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  390. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  391. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  392. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  393. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  394. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  395. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  396. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  397. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  398. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  399. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  400. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  401. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  402. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  403. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  404. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  405. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  406. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  407. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  408. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  409. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  410. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  411. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  412. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  413. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  414. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  415. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  416. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  417. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  418. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  419. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  420. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  421. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  422. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  423. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  424. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  425. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  426. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  427. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  428. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  429. /package/dist/{src → esm}/index.d.ts.map +0 -0
  430. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  431. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  432. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  433. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  434. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  435. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  436. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  437. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  438. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  439. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  440. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  441. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  442. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  443. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint-buffer-guard.d.ts","sourceRoot":"","sources":["../../../src/bigint-buffer-guard.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ // Added a lightweight runtime guard for BigInt<->Buffer conversions in @bitgo-beta/sdk-coin-sol (bigint-buffer-guard.ts) to validate input lengths and reduce misuse risk.
2
+ // It's purpose is to enforce input type/length checks around BigInt buffer operations; imported it so validations run at module load
3
+ try {
4
+ const mod = require('bigint-buffer');
5
+ const le = typeof mod.toBigIntLE === 'function' ? mod.toBigIntLE : undefined;
6
+ const be = typeof mod.toBigIntBE === 'function' ? mod.toBigIntBE : undefined;
7
+ const isBufferLike = (b) => (typeof Buffer !== 'undefined' && Buffer.isBuffer(b)) || b instanceof Uint8Array;
8
+ const byteLen = (b) => typeof Buffer !== 'undefined' && Buffer.isBuffer(b) ? b.length : b.byteLength;
9
+ const assertBuf = (b) => {
10
+ if (!isBufferLike(b))
11
+ throw new TypeError('toBigInt*: input must be Buffer/Uint8Array');
12
+ if (byteLen(b) > 1000000)
13
+ throw new RangeError('toBigInt*: buffer too large');
14
+ };
15
+ if (le)
16
+ mod.toBigIntLE = (buf) => {
17
+ assertBuf(buf);
18
+ return le(buf);
19
+ };
20
+ if (be)
21
+ mod.toBigIntBE = (buf) => {
22
+ assertBuf(buf);
23
+ return be(buf);
24
+ };
25
+ }
26
+ catch {
27
+ /* noop */
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnaW50LWJ1ZmZlci1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaWdpbnQtYnVmZmVyLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJLQUEySztBQUMzSyxxSUFBcUk7QUFFckksSUFBSSxDQUFDO0lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksVUFBVSxDQUFDO0lBRXRILE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDekIsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLENBQWdCLENBQUMsVUFBVSxDQUFDO0lBRWhHLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUU7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDeEYsSUFBSSxPQUFPLENBQUMsQ0FBUSxDQUFDLEdBQUcsT0FBUztZQUFFLE1BQU0sSUFBSSxVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUM7SUFFRixJQUFJLEVBQUU7UUFDSixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBd0IsRUFBRSxFQUFFO1lBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQUNKLElBQUksRUFBRTtRQUNKLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUF3QixFQUFFLEVBQUU7WUFDNUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUFDLE1BQU0sQ0FBQztJQUNQLFVBQVU7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRkZWQgYSBsaWdodHdlaWdodCBydW50aW1lIGd1YXJkIGZvciBCaWdJbnQ8LT5CdWZmZXIgY29udmVyc2lvbnMgaW4gQGJpdGdvLWJldGEvc2RrLWNvaW4tc29sIChiaWdpbnQtYnVmZmVyLWd1YXJkLnRzKSB0byB2YWxpZGF0ZSBpbnB1dCBsZW5ndGhzIGFuZCByZWR1Y2UgbWlzdXNlIHJpc2suXG4vLyBJdCdzIHB1cnBvc2UgaXMgdG8gZW5mb3JjZSBpbnB1dCB0eXBlL2xlbmd0aCBjaGVja3MgYXJvdW5kIEJpZ0ludCBidWZmZXIgb3BlcmF0aW9uczsgaW1wb3J0ZWQgaXQgc28gdmFsaWRhdGlvbnMgcnVuIGF0IG1vZHVsZSBsb2FkXG5cbnRyeSB7XG4gIGNvbnN0IG1vZCA9IHJlcXVpcmUoJ2JpZ2ludC1idWZmZXInKTtcbiAgY29uc3QgbGUgPSB0eXBlb2YgbW9kLnRvQmlnSW50TEUgPT09ICdmdW5jdGlvbicgPyBtb2QudG9CaWdJbnRMRSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmUgPSB0eXBlb2YgbW9kLnRvQmlnSW50QkUgPT09ICdmdW5jdGlvbicgPyBtb2QudG9CaWdJbnRCRSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBpc0J1ZmZlckxpa2UgPSAoYjogdW5rbm93bikgPT4gKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIEJ1ZmZlci5pc0J1ZmZlcihiKSkgfHwgYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk7XG5cbiAgY29uc3QgYnl0ZUxlbiA9IChiOiBhbnkpID0+XG4gICAgdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQnVmZmVyLmlzQnVmZmVyKGIpID8gYi5sZW5ndGggOiAoYiBhcyBVaW50OEFycmF5KS5ieXRlTGVuZ3RoO1xuXG4gIGNvbnN0IGFzc2VydEJ1ZiA9IChiOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFpc0J1ZmZlckxpa2UoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RvQmlnSW50KjogaW5wdXQgbXVzdCBiZSBCdWZmZXIvVWludDhBcnJheScpO1xuICAgIGlmIChieXRlTGVuKGIgYXMgYW55KSA+IDFfMDAwXzAwMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RvQmlnSW50KjogYnVmZmVyIHRvbyBsYXJnZScpO1xuICB9O1xuXG4gIGlmIChsZSlcbiAgICBtb2QudG9CaWdJbnRMRSA9IChidWY6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIGFzc2VydEJ1ZihidWYpO1xuICAgICAgcmV0dXJuIGxlKGJ1Zik7XG4gICAgfTtcbiAgaWYgKGJlKVxuICAgIG1vZC50b0JpZ0ludEJFID0gKGJ1ZjogQnVmZmVyIHwgVWludDhBcnJheSkgPT4ge1xuICAgICAgYXNzZXJ0QnVmKGJ1Zik7XG4gICAgICByZXR1cm4gYmUoYnVmKTtcbiAgICB9O1xufSBjYXRjaCB7XG4gIC8qIG5vb3AgKi9cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -20,4 +20,4 @@ __exportStar(require("./sol"), exports);
20
20
  __exportStar(require("./solToken"), exports);
21
21
  __exportStar(require("./tsol"), exports);
22
22
  __exportStar(require("./register"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErQjtBQUMvQix3Q0FBc0I7QUFDdEIsd0NBQXNCO0FBQ3RCLDZDQUEyQjtBQUMzQix5Q0FBdUI7QUFDdkIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2JpZ2ludC1idWZmZXItZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9zb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9zb2xUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3Rzb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErQjtBQUMvQix3Q0FBc0I7QUFDdEIsd0NBQXNCO0FBQ3RCLDZDQUEyQjtBQUMzQix5Q0FBdUI7QUFDdkIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2JpZ2ludC1idWZmZXItZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9zb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9zb2xUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3Rzb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
@@ -2,12 +2,13 @@ import { TransactionBuilder } from './transactionBuilder';
2
2
  import { TransactionType } from '@bitgo-beta/sdk-core';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
4
  import { Transaction } from './transaction';
5
- import { TokenAssociateRecipient } from './iface';
5
+ import { PermissionlessThawIdempotent, TokenAssociateRecipient } from './iface';
6
6
  export declare class AtaInitializationBuilder extends TransactionBuilder {
7
7
  private _tokenName;
8
8
  private _mint;
9
9
  private _owner;
10
10
  private _tokenAssociateRecipients;
11
+ private _permissionlessThawParams;
11
12
  constructor(_coinConfig: Readonly<CoinConfig>);
12
13
  protected get transactionType(): TransactionType;
13
14
  /** @inheritDoc */
@@ -41,6 +42,16 @@ export declare class AtaInitializationBuilder extends TransactionBuilder {
41
42
  * @param TokenAssociateRecipient token associate recipient info
42
43
  */
43
44
  enableToken(recipient: TokenAssociateRecipient): this;
45
+ /**
46
+ * Set a resolved sRFC-37 Token ACL permissionless-thaw instruction for an ATA enablement.
47
+ *
48
+ * The builder remains offline; callers resolve gating accounts live and pass fully materialized
49
+ * params. Multiple Token-2022 ATA enablements may each add one thaw instruction.
50
+ *
51
+ * @param {PermissionlessThawIdempotent['params']} params - resolved thaw params
52
+ * @returns {AtaInitializationBuilder} This transaction builder
53
+ */
54
+ permissionlessThaw(params: PermissionlessThawIdempotent['params']): this;
44
55
  /** @inheritdoc */
45
56
  protected buildImplementation(): Promise<Transaction>;
46
57
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ataInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/ataInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA+C,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAWzF,qBAAa,wBAAyB,SAAQ,kBAAkB;IAE9D,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,yBAAyB,CAA2C;gBAEhE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAmBlC;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAc7B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS1B;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAIhD;;;;;;OAMG;IAEH,WAAW,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IA+BrD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKxE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CA8D5D"}
@@ -0,0 +1,223 @@
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
+ exports.AtaInitializationBuilder = void 0;
40
+ const transactionBuilder_1 = require("./transactionBuilder");
41
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
42
+ const transaction_1 = require("./transaction");
43
+ const constants_1 = require("./constants");
44
+ const utils_1 = require("./utils");
45
+ const assert_1 = __importDefault(require("assert"));
46
+ const _ = __importStar(require("lodash"));
47
+ class AtaInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
48
+ constructor(_coinConfig) {
49
+ super(_coinConfig);
50
+ this._transaction = new transaction_1.Transaction(_coinConfig);
51
+ this._permissionlessThawParams = [];
52
+ this._tokenAssociateRecipients = [];
53
+ }
54
+ get transactionType() {
55
+ return sdk_core_1.TransactionType.AssociatedTokenAccountInitialization;
56
+ }
57
+ /** @inheritDoc */
58
+ initBuilder(tx) {
59
+ super.initBuilder(tx);
60
+ this._permissionlessThawParams = [];
61
+ this._tokenAssociateRecipients = [];
62
+ for (const instruction of this._instructionsData) {
63
+ if (instruction.type === constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount) {
64
+ const ataInitInstruction = instruction;
65
+ this._tokenAssociateRecipients.push({
66
+ ownerAddress: ataInitInstruction.params.ownerAddress,
67
+ tokenName: ataInitInstruction.params.tokenName,
68
+ tokenAddress: ataInitInstruction.params.mintAddress,
69
+ programId: ataInitInstruction.params.programId,
70
+ });
71
+ }
72
+ else if (instruction.type === constants_1.InstructionBuilderTypes.PermissionlessThawIdempotent) {
73
+ this._permissionlessThawParams.push(instruction.params);
74
+ }
75
+ }
76
+ }
77
+ /**
78
+ * @deprecated - Use the enableToken method instead
79
+ * Sets the mint address of the associated token account
80
+ *
81
+ * @param tokenName name of the token
82
+ */
83
+ mint(tokenName) {
84
+ if (this._tokenAssociateRecipients.length > 0) {
85
+ throw new sdk_core_1.DuplicateMethodError('Invalid method: enableToken already used');
86
+ }
87
+ const token = (0, utils_1.getSolTokenFromTokenName)(tokenName);
88
+ if (!token) {
89
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + tokenName);
90
+ }
91
+ this._mint = token.tokenAddress;
92
+ this._tokenName = token.name;
93
+ (0, utils_1.validateMintAddress)(this._mint);
94
+ return this;
95
+ }
96
+ /**
97
+ * @deprecated - Use the enableToken method instead
98
+ * Sets the owner address of the associated token account
99
+ *
100
+ * @param owner owner address of associated token account
101
+ */
102
+ owner(owner) {
103
+ if (this._tokenAssociateRecipients.length > 0) {
104
+ throw new sdk_core_1.DuplicateMethodError('Invalid method: enableToken already used');
105
+ }
106
+ this._owner = owner;
107
+ (0, utils_1.validateOwnerAddress)(owner);
108
+ return this;
109
+ }
110
+ /**
111
+ * @deprecated - Use the associatedTokenAccountRent method instead
112
+ * Used to set the minimum rent exempt amount
113
+ *
114
+ * @param rentExemptAmount minimum rent exempt amount in lamports
115
+ */
116
+ rentExemptAmount(rentExemptAmount) {
117
+ return super.associatedTokenAccountRent(rentExemptAmount);
118
+ }
119
+ /**
120
+ * Used for adding token association recipients consisting
121
+ * 1. ownerAddress: owner of the token address
122
+ * 2. tokenName: the name of token enabled that is supported by BitGo
123
+ *
124
+ * @param TokenAssociateRecipient token associate recipient info
125
+ */
126
+ enableToken(recipient) {
127
+ if (this._tokenAssociateRecipients.some((tokenAssociate) => _.isEqual(tokenAssociate, recipient))) {
128
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid duplicate recipients, got: owner ' +
129
+ recipient.ownerAddress +
130
+ ' and tokenName ' +
131
+ recipient.tokenName +
132
+ ' twice');
133
+ }
134
+ if (this._tokenName || this._mint) {
135
+ throw new sdk_core_1.DuplicateMethodError('Invalid method: single mint already used');
136
+ }
137
+ (0, utils_1.validateOwnerAddress)(recipient.ownerAddress);
138
+ let tokenAddress;
139
+ if (recipient.tokenAddress) {
140
+ tokenAddress = recipient.tokenAddress;
141
+ }
142
+ else {
143
+ const token = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
144
+ if (token) {
145
+ tokenAddress = token.tokenAddress;
146
+ }
147
+ else {
148
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + recipient.tokenName);
149
+ }
150
+ }
151
+ (0, utils_1.validateMintAddress)(tokenAddress);
152
+ this._tokenAssociateRecipients.push(recipient);
153
+ return this;
154
+ }
155
+ /**
156
+ * Set a resolved sRFC-37 Token ACL permissionless-thaw instruction for an ATA enablement.
157
+ *
158
+ * The builder remains offline; callers resolve gating accounts live and pass fully materialized
159
+ * params. Multiple Token-2022 ATA enablements may each add one thaw instruction.
160
+ *
161
+ * @param {PermissionlessThawIdempotent['params']} params - resolved thaw params
162
+ * @returns {AtaInitializationBuilder} This transaction builder
163
+ */
164
+ permissionlessThaw(params) {
165
+ this._permissionlessThawParams.push(params);
166
+ return this;
167
+ }
168
+ /** @inheritdoc */
169
+ async buildImplementation() {
170
+ (0, assert_1.default)(this._sender, 'Sender must be set before building the transaction');
171
+ if (this._tokenAssociateRecipients.length === 0) {
172
+ (0, assert_1.default)(this._mint && this._tokenName, 'Mint must be set before building the transaction');
173
+ this._owner = this._owner || this._sender;
174
+ this._tokenAssociateRecipients.push({
175
+ ownerAddress: this._owner,
176
+ tokenName: this._tokenName,
177
+ });
178
+ }
179
+ this._instructionsData = [];
180
+ await Promise.all(this._tokenAssociateRecipients.map(async (recipient) => {
181
+ let tokenAddress;
182
+ let programId;
183
+ if (recipient.tokenAddress && recipient.programId) {
184
+ tokenAddress = recipient.tokenAddress;
185
+ programId = recipient.programId;
186
+ }
187
+ else {
188
+ const token = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
189
+ if (token) {
190
+ tokenAddress = token.tokenAddress;
191
+ programId = token.programId;
192
+ }
193
+ else {
194
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token name, got: ' + recipient.tokenName);
195
+ }
196
+ }
197
+ // Use the provided ataAddress if it exists, otherwise calculate it
198
+ let ataPk = recipient.ataAddress;
199
+ if (!ataPk) {
200
+ ataPk = await (0, utils_1.getAssociatedTokenAccountAddress)(tokenAddress, recipient.ownerAddress, false, programId);
201
+ }
202
+ this._instructionsData.push({
203
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
204
+ params: {
205
+ mintAddress: tokenAddress,
206
+ ataAddress: ataPk,
207
+ ownerAddress: recipient.ownerAddress,
208
+ // Match transactionBuilder fee payer selection when a distinct fee payer is set.
209
+ payerAddress: this._feePayer ?? this._sender,
210
+ tokenName: recipient.tokenName,
211
+ programId: programId,
212
+ },
213
+ });
214
+ }));
215
+ this._instructionsData.push(...this._permissionlessThawParams.map((params) => ({
216
+ type: constants_1.InstructionBuilderTypes.PermissionlessThawIdempotent,
217
+ params,
218
+ })));
219
+ return await super.buildImplementation();
220
+ }
221
+ }
222
+ exports.AtaInitializationBuilder = AtaInitializationBuilder;
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTBEO0FBQzFELG1EQUFvRztBQUVwRywrQ0FBNEM7QUFFNUMsMkNBQXNEO0FBQ3RELG1DQUtpQjtBQUNqQixvREFBNEI7QUFDNUIsMENBQTRCO0FBRTVCLE1BQWEsd0JBQXlCLFNBQVEsdUNBQWtCO0lBVTlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxvQ0FBb0MsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLG1DQUF1QixDQUFDLDRCQUE0QixFQUFFLENBQUM7Z0JBQzlFLE1BQU0sa0JBQWtCLEdBQVksV0FBVyxDQUFDO2dCQUNoRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDO29CQUNsQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFlBQVk7b0JBQ3BELFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDOUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxXQUFXO29CQUNuRCxTQUFTLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVM7aUJBQy9DLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLG1DQUF1QixDQUFDLDRCQUE0QixFQUFFLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUUsV0FBNEMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxTQUFpQjtRQUNwQixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxJQUFJLCtCQUFvQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUEsZ0NBQXdCLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdEQUFnRCxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUEsMkJBQW1CLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSwrQkFBb0IsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFBLDRCQUFvQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsZ0JBQXdCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUVILFdBQVcsQ0FBQyxTQUFrQztRQUM1QyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLGdFQUFnRTtnQkFDOUQsU0FBUyxDQUFDLFlBQVk7Z0JBQ3RCLGlCQUFpQjtnQkFDakIsU0FBUyxDQUFDLFNBQVM7Z0JBQ25CLFFBQVEsQ0FDWCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLCtCQUFvQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELElBQUEsNEJBQW9CLEVBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0NBQXdCLEVBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnREFBZ0QsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUcsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFBLDJCQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxrQkFBa0IsQ0FBQyxNQUE4QztRQUMvRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxrREFBa0QsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBRTFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNyRCxJQUFJLFlBQW9CLENBQUM7WUFDekIsSUFBSSxTQUFpQixDQUFDO1lBQ3RCLElBQUksU0FBUyxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xELFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUNsQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxLQUFLLEdBQUcsSUFBQSxnQ0FBd0IsRUFBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVELElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQ2xDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM5QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdEQUFnRCxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUcsQ0FBQztZQUNILENBQUM7WUFFRCxtRUFBbUU7WUFDbkUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDekcsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyw0QkFBNEI7Z0JBQzFELE1BQU0sRUFBRTtvQkFDTixXQUFXLEVBQUUsWUFBWTtvQkFDekIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtvQkFDcEMsaUZBQWlGO29CQUNqRixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTztvQkFDNUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO29CQUM5QixTQUFTLEVBQUUsU0FBUztpQkFDckI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDekIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUNuQyxDQUFDLE1BQU0sRUFBZ0MsRUFBRSxDQUFDLENBQUM7WUFDekMsSUFBSSxFQUFFLG1DQUF1QixDQUFDLDRCQUE0QjtZQUMxRCxNQUFNO1NBQ1AsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVGLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUExTUQsNERBME1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBEdXBsaWNhdGVNZXRob2RFcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEF0YUluaXQsIFBlcm1pc3Npb25sZXNzVGhhd0lkZW1wb3RlbnQsIFRva2VuQXNzb2NpYXRlUmVjaXBpZW50IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzLFxuICBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUsXG4gIHZhbGlkYXRlTWludEFkZHJlc3MsXG4gIHZhbGlkYXRlT3duZXJBZGRyZXNzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIEF0YUluaXRpYWxpemF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBfdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzIGZpZWxkIGluc3RlYWRcbiAgcHJpdmF0ZSBfdG9rZW5OYW1lOiBzdHJpbmc7XG4gIC8vIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBfdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzIGZpZWxkIGluc3RlYWRcbiAgcHJpdmF0ZSBfbWludDogc3RyaW5nO1xuICAvLyBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cyBmaWVsZCBpbnN0ZWFkXG4gIHByaXZhdGUgX293bmVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50czogVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRbXTtcbiAgcHJpdmF0ZSBfcGVybWlzc2lvbmxlc3NUaGF3UGFyYW1zOiBQZXJtaXNzaW9ubGVzc1RoYXdJZGVtcG90ZW50WydwYXJhbXMnXVtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fcGVybWlzc2lvbmxlc3NUaGF3UGFyYW1zID0gW107XG4gICAgdGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzID0gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLl9wZXJtaXNzaW9ubGVzc1RoYXdQYXJhbXMgPSBbXTtcbiAgICB0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50KSB7XG4gICAgICAgIGNvbnN0IGF0YUluaXRJbnN0cnVjdGlvbjogQXRhSW5pdCA9IGluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMucHVzaCh7XG4gICAgICAgICAgb3duZXJBZGRyZXNzOiBhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm93bmVyQWRkcmVzcyxcbiAgICAgICAgICB0b2tlbk5hbWU6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgIHRva2VuQWRkcmVzczogYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy5taW50QWRkcmVzcyxcbiAgICAgICAgICBwcm9ncmFtSWQ6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudCkge1xuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ubGVzc1RoYXdQYXJhbXMucHVzaCgoaW5zdHJ1Y3Rpb24gYXMgUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudCkucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGVuYWJsZVRva2VuIG1ldGhvZCBpbnN0ZWFkXG4gICAqIFNldHMgdGhlIG1pbnQgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbk5hbWUgbmFtZSBvZiB0aGUgdG9rZW5cbiAgICovXG4gIG1pbnQodG9rZW5OYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAodGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVNZXRob2RFcnJvcignSW52YWxpZCBtZXRob2Q6IGVuYWJsZVRva2VuIGFscmVhZHkgdXNlZCcpO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZSh0b2tlbk5hbWUpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgdG9rZW4gbmFtZSwgZ290OiAnICsgdG9rZW5OYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fbWludCA9IHRva2VuLnRva2VuQWRkcmVzcztcbiAgICB0aGlzLl90b2tlbk5hbWUgPSB0b2tlbi5uYW1lO1xuICAgIHZhbGlkYXRlTWludEFkZHJlc3ModGhpcy5fbWludCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGVuYWJsZVRva2VuIG1ldGhvZCBpbnN0ZWFkXG4gICAqIFNldHMgdGhlIG93bmVyIGFkZHJlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKlxuICAgKiBAcGFyYW0gb3duZXIgb3duZXIgYWRkcmVzcyBvZiBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRcbiAgICovXG4gIG93bmVyKG93bmVyOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAodGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVNZXRob2RFcnJvcignSW52YWxpZCBtZXRob2Q6IGVuYWJsZVRva2VuIGFscmVhZHkgdXNlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9vd25lciA9IG93bmVyO1xuICAgIHZhbGlkYXRlT3duZXJBZGRyZXNzKG93bmVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgYXNzb2NpYXRlZFRva2VuQWNjb3VudFJlbnQgbWV0aG9kIGluc3RlYWRcbiAgICogVXNlZCB0byBzZXQgdGhlIG1pbmltdW0gcmVudCBleGVtcHQgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSByZW50RXhlbXB0QW1vdW50IG1pbmltdW0gcmVudCBleGVtcHQgYW1vdW50IGluIGxhbXBvcnRzXG4gICAqL1xuICByZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudChyZW50RXhlbXB0QW1vdW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBhZGRpbmcgdG9rZW4gYXNzb2NpYXRpb24gcmVjaXBpZW50cyBjb25zaXN0aW5nXG4gICAqICAxLiBvd25lckFkZHJlc3M6IG93bmVyIG9mIHRoZSB0b2tlbiBhZGRyZXNzXG4gICAqICAyLiB0b2tlbk5hbWU6IHRoZSBuYW1lIG9mIHRva2VuIGVuYWJsZWQgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgQml0R29cbiAgICpcbiAgICogIEBwYXJhbSBUb2tlbkFzc29jaWF0ZVJlY2lwaWVudCB0b2tlbiBhc3NvY2lhdGUgcmVjaXBpZW50IGluZm9cbiAgICovXG5cbiAgZW5hYmxlVG9rZW4ocmVjaXBpZW50OiBUb2tlbkFzc29jaWF0ZVJlY2lwaWVudCk6IHRoaXMge1xuICAgIGlmICh0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMuc29tZSgodG9rZW5Bc3NvY2lhdGUpID0+IF8uaXNFcXVhbCh0b2tlbkFzc29jaWF0ZSwgcmVjaXBpZW50KSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIGR1cGxpY2F0ZSByZWNpcGllbnRzLCBnb3Q6IG93bmVyICcgK1xuICAgICAgICAgIHJlY2lwaWVudC5vd25lckFkZHJlc3MgK1xuICAgICAgICAgICcgYW5kIHRva2VuTmFtZSAnICtcbiAgICAgICAgICByZWNpcGllbnQudG9rZW5OYW1lICtcbiAgICAgICAgICAnIHR3aWNlJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3Rva2VuTmFtZSB8fCB0aGlzLl9taW50KSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlTWV0aG9kRXJyb3IoJ0ludmFsaWQgbWV0aG9kOiBzaW5nbGUgbWludCBhbHJlYWR5IHVzZWQnKTtcbiAgICB9XG4gICAgdmFsaWRhdGVPd25lckFkZHJlc3MocmVjaXBpZW50Lm93bmVyQWRkcmVzcyk7XG4gICAgbGV0IHRva2VuQWRkcmVzczogc3RyaW5nO1xuICAgIGlmIChyZWNpcGllbnQudG9rZW5BZGRyZXNzKSB7XG4gICAgICB0b2tlbkFkZHJlc3MgPSByZWNpcGllbnQudG9rZW5BZGRyZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICB0b2tlbkFkZHJlc3MgPSB0b2tlbi50b2tlbkFkZHJlc3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIHRva2VuIG5hbWUsIGdvdDogJyArIHJlY2lwaWVudC50b2tlbk5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YWxpZGF0ZU1pbnRBZGRyZXNzKHRva2VuQWRkcmVzcyk7XG5cbiAgICB0aGlzLl90b2tlbkFzc29jaWF0ZVJlY2lwaWVudHMucHVzaChyZWNpcGllbnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIHJlc29sdmVkIHNSRkMtMzcgVG9rZW4gQUNMIHBlcm1pc3Npb25sZXNzLXRoYXcgaW5zdHJ1Y3Rpb24gZm9yIGFuIEFUQSBlbmFibGVtZW50LlxuICAgKlxuICAgKiBUaGUgYnVpbGRlciByZW1haW5zIG9mZmxpbmU7IGNhbGxlcnMgcmVzb2x2ZSBnYXRpbmcgYWNjb3VudHMgbGl2ZSBhbmQgcGFzcyBmdWxseSBtYXRlcmlhbGl6ZWRcbiAgICogcGFyYW1zLiBNdWx0aXBsZSBUb2tlbi0yMDIyIEFUQSBlbmFibGVtZW50cyBtYXkgZWFjaCBhZGQgb25lIHRoYXcgaW5zdHJ1Y3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudFsncGFyYW1zJ119IHBhcmFtcyAtIHJlc29sdmVkIHRoYXcgcGFyYW1zXG4gICAqIEByZXR1cm5zIHtBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgcGVybWlzc2lvbmxlc3NUaGF3KHBhcmFtczogUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudFsncGFyYW1zJ10pOiB0aGlzIHtcbiAgICB0aGlzLl9wZXJtaXNzaW9ubGVzc1RoYXdQYXJhbXMucHVzaChwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICBpZiAodGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXNzZXJ0KHRoaXMuX21pbnQgJiYgdGhpcy5fdG9rZW5OYW1lLCAnTWludCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICB0aGlzLl9vd25lciA9IHRoaXMuX293bmVyIHx8IHRoaXMuX3NlbmRlcjtcblxuICAgICAgdGhpcy5fdG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRzLnB1c2goe1xuICAgICAgICBvd25lckFkZHJlc3M6IHRoaXMuX293bmVyLFxuICAgICAgICB0b2tlbk5hbWU6IHRoaXMuX3Rva2VuTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbXTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3Rva2VuQXNzb2NpYXRlUmVjaXBpZW50cy5tYXAoYXN5bmMgKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGxldCBwcm9ncmFtSWQ6IHN0cmluZztcbiAgICAgICAgaWYgKHJlY2lwaWVudC50b2tlbkFkZHJlc3MgJiYgcmVjaXBpZW50LnByb2dyYW1JZCkge1xuICAgICAgICAgIHRva2VuQWRkcmVzcyA9IHJlY2lwaWVudC50b2tlbkFkZHJlc3M7XG4gICAgICAgICAgcHJvZ3JhbUlkID0gcmVjaXBpZW50LnByb2dyYW1JZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHRva2VuQWRkcmVzcyA9IHRva2VuLnRva2VuQWRkcmVzcztcbiAgICAgICAgICAgIHByb2dyYW1JZCA9IHRva2VuLnByb2dyYW1JZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCB0b2tlbiBuYW1lLCBnb3Q6ICcgKyByZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGF0YUFkZHJlc3MgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgY2FsY3VsYXRlIGl0XG4gICAgICAgIGxldCBhdGFQayA9IHJlY2lwaWVudC5hdGFBZGRyZXNzO1xuICAgICAgICBpZiAoIWF0YVBrKSB7XG4gICAgICAgICAgYXRhUGsgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyh0b2tlbkFkZHJlc3MsIHJlY2lwaWVudC5vd25lckFkZHJlc3MsIGZhbHNlLCBwcm9ncmFtSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YS5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgbWludEFkZHJlc3M6IHRva2VuQWRkcmVzcyxcbiAgICAgICAgICAgIGF0YUFkZHJlc3M6IGF0YVBrLFxuICAgICAgICAgICAgb3duZXJBZGRyZXNzOiByZWNpcGllbnQub3duZXJBZGRyZXNzLFxuICAgICAgICAgICAgLy8gTWF0Y2ggdHJhbnNhY3Rpb25CdWlsZGVyIGZlZSBwYXllciBzZWxlY3Rpb24gd2hlbiBhIGRpc3RpbmN0IGZlZSBwYXllciBpcyBzZXQuXG4gICAgICAgICAgICBwYXllckFkZHJlc3M6IHRoaXMuX2ZlZVBheWVyID8/IHRoaXMuX3NlbmRlcixcbiAgICAgICAgICAgIHRva2VuTmFtZTogcmVjaXBpZW50LnRva2VuTmFtZSxcbiAgICAgICAgICAgIHByb2dyYW1JZDogcHJvZ3JhbUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YS5wdXNoKFxuICAgICAgLi4udGhpcy5fcGVybWlzc2lvbmxlc3NUaGF3UGFyYW1zLm1hcChcbiAgICAgICAgKHBhcmFtcyk6IFBlcm1pc3Npb25sZXNzVGhhd0lkZW1wb3RlbnQgPT4gKHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5QZXJtaXNzaW9ubGVzc1RoYXdJZGVtcG90ZW50LFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,55 @@
1
+ import { TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ export declare class CloseAtaBuilder extends TransactionBuilder {
6
+ protected _closeAtaEntries: {
7
+ accountAddress: string;
8
+ destinationAddress: string;
9
+ authorityAddress: string;
10
+ programId?: string;
11
+ }[];
12
+ private _apiMode;
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ protected get transactionType(): TransactionType;
15
+ /**
16
+ * Sets the ATA account address to close (single-ATA API, backward compatible).
17
+ * Cannot be mixed with addCloseAtaInstruction().
18
+ */
19
+ accountAddress(accountAddress: string): this;
20
+ /**
21
+ * Sets the destination address for rent SOL (single-ATA API, backward compatible).
22
+ * Cannot be mixed with addCloseAtaInstruction().
23
+ */
24
+ destinationAddress(destinationAddress: string): this;
25
+ /**
26
+ * Sets the authority address / ATA owner (single-ATA API, backward compatible).
27
+ * Cannot be mixed with addCloseAtaInstruction().
28
+ */
29
+ authorityAddress(authorityAddress: string): this;
30
+ /** Sets the SPL token program used by the close instruction. */
31
+ programId(programId: string): this;
32
+ /**
33
+ * Throws if the bulk-ATA API has already been used on this builder.
34
+ */
35
+ private _assertSingleAtaApiUsable;
36
+ /**
37
+ * Ensures a single entry exists in _closeAtaEntries for the legacy API.
38
+ */
39
+ private _ensureSingleEntry;
40
+ /**
41
+ * Add an ATA to close in this transaction (for bulk closure).
42
+ * Cannot be mixed with the single-ATA API (accountAddress/destinationAddress/authorityAddress).
43
+ *
44
+ * @param accountAddress - the ATA address to close
45
+ * @param destinationAddress - where rent SOL goes (root wallet address)
46
+ * @param authorityAddress - ATA owner who must sign
47
+ * @param programId - SPL token program owning the ATA; omitted for legacy SPL
48
+ */
49
+ addCloseAtaInstruction(accountAddress: string, destinationAddress: string, authorityAddress: string, programId?: string): this;
50
+ /** @inheritDoc */
51
+ initBuilder(tx: Transaction): void;
52
+ /** @inheritdoc */
53
+ protected buildImplementation(): Promise<Transaction>;
54
+ }
55
+ //# sourceMappingURL=closeAtaBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closeAtaBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/closeAtaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,qBAAa,eAAgB,SAAQ,kBAAkB;IAErD,SAAS,CAAC,gBAAgB,EAAE;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,EAAE,CAAM;IAOT,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAS5C;;;OAGG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;IASpD;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAShD,gEAAgE;IAChE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASlC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAMjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;;OAQG;IACH,sBAAsB,CACpB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAyBP,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAkBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CA2B5D"}
@@ -0,0 +1,162 @@
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.CloseAtaBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const constants_1 = require("./constants");
10
+ const transaction_1 = require("./transaction");
11
+ const transactionBuilder_1 = require("./transactionBuilder");
12
+ const utils_1 = require("./utils");
13
+ const MIX_API_ERROR_MESSAGE = 'Cannot mix single-ATA API (accountAddress/destinationAddress/authorityAddress) with bulk-ATA API (addCloseAtaInstruction)';
14
+ class CloseAtaBuilder extends transactionBuilder_1.TransactionBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ // Unified storage for all close entries (single or bulk)
18
+ this._closeAtaEntries = [];
19
+ // Which API has been used on this builder instance. Locks in on first call so we can
20
+ // reject attempts to mix the legacy single-ATA setters with the bulk addCloseAtaInstruction().
21
+ // After initBuilder(): remains undefined for a single parsed close (either API may extend/edit);
22
+ // set to 'bulk' when the parsed tx had multiple closes so legacy setters cannot partially
23
+ // overwrite entry[0] while leaving other parsed entries in place.
24
+ this._apiMode = undefined;
25
+ this._transaction = new transaction_1.Transaction(_coinConfig);
26
+ }
27
+ get transactionType() {
28
+ return sdk_core_1.TransactionType.CloseAssociatedTokenAccount;
29
+ }
30
+ /**
31
+ * Sets the ATA account address to close (single-ATA API, backward compatible).
32
+ * Cannot be mixed with addCloseAtaInstruction().
33
+ */
34
+ accountAddress(accountAddress) {
35
+ this._assertSingleAtaApiUsable();
36
+ (0, utils_1.validateAddress)(accountAddress, 'accountAddress');
37
+ this._apiMode = 'single';
38
+ this._ensureSingleEntry();
39
+ this._closeAtaEntries[0].accountAddress = accountAddress;
40
+ return this;
41
+ }
42
+ /**
43
+ * Sets the destination address for rent SOL (single-ATA API, backward compatible).
44
+ * Cannot be mixed with addCloseAtaInstruction().
45
+ */
46
+ destinationAddress(destinationAddress) {
47
+ this._assertSingleAtaApiUsable();
48
+ (0, utils_1.validateAddress)(destinationAddress, 'destinationAddress');
49
+ this._apiMode = 'single';
50
+ this._ensureSingleEntry();
51
+ this._closeAtaEntries[0].destinationAddress = destinationAddress;
52
+ return this;
53
+ }
54
+ /**
55
+ * Sets the authority address / ATA owner (single-ATA API, backward compatible).
56
+ * Cannot be mixed with addCloseAtaInstruction().
57
+ */
58
+ authorityAddress(authorityAddress) {
59
+ this._assertSingleAtaApiUsable();
60
+ (0, utils_1.validateAddress)(authorityAddress, 'authorityAddress');
61
+ this._apiMode = 'single';
62
+ this._ensureSingleEntry();
63
+ this._closeAtaEntries[0].authorityAddress = authorityAddress;
64
+ return this;
65
+ }
66
+ /** Sets the SPL token program used by the close instruction. */
67
+ programId(programId) {
68
+ this._assertSingleAtaApiUsable();
69
+ (0, utils_1.validateAddress)(programId, 'programId');
70
+ this._apiMode = 'single';
71
+ this._ensureSingleEntry();
72
+ this._closeAtaEntries[0].programId = programId;
73
+ return this;
74
+ }
75
+ /**
76
+ * Throws if the bulk-ATA API has already been used on this builder.
77
+ */
78
+ _assertSingleAtaApiUsable() {
79
+ if (this._apiMode === 'bulk') {
80
+ throw new sdk_core_1.BuildTransactionError(MIX_API_ERROR_MESSAGE);
81
+ }
82
+ }
83
+ /**
84
+ * Ensures a single entry exists in _closeAtaEntries for the legacy API.
85
+ */
86
+ _ensureSingleEntry() {
87
+ if (this._closeAtaEntries.length === 0) {
88
+ this._closeAtaEntries.push({ accountAddress: '', destinationAddress: '', authorityAddress: '' });
89
+ }
90
+ }
91
+ /**
92
+ * Add an ATA to close in this transaction (for bulk closure).
93
+ * Cannot be mixed with the single-ATA API (accountAddress/destinationAddress/authorityAddress).
94
+ *
95
+ * @param accountAddress - the ATA address to close
96
+ * @param destinationAddress - where rent SOL goes (root wallet address)
97
+ * @param authorityAddress - ATA owner who must sign
98
+ * @param programId - SPL token program owning the ATA; omitted for legacy SPL
99
+ */
100
+ addCloseAtaInstruction(accountAddress, destinationAddress, authorityAddress, programId) {
101
+ if (this._apiMode === 'single') {
102
+ throw new sdk_core_1.BuildTransactionError(MIX_API_ERROR_MESSAGE);
103
+ }
104
+ (0, utils_1.validateAddress)(accountAddress, 'accountAddress');
105
+ (0, utils_1.validateAddress)(destinationAddress, 'destinationAddress');
106
+ (0, utils_1.validateAddress)(authorityAddress, 'authorityAddress');
107
+ if (programId) {
108
+ (0, utils_1.validateAddress)(programId, 'programId');
109
+ }
110
+ if (accountAddress === destinationAddress) {
111
+ throw new sdk_core_1.BuildTransactionError('Account address to close cannot be the same as the destination address');
112
+ }
113
+ if (this._closeAtaEntries.some((entry) => entry.accountAddress === accountAddress)) {
114
+ throw new sdk_core_1.BuildTransactionError('Duplicate ATA address: ' + accountAddress);
115
+ }
116
+ this._apiMode = 'bulk';
117
+ this._closeAtaEntries.push({ accountAddress, destinationAddress, authorityAddress, programId });
118
+ return this;
119
+ }
120
+ /** @inheritDoc */
121
+ initBuilder(tx) {
122
+ super.initBuilder(tx);
123
+ for (const instruction of this._instructionsData) {
124
+ if (instruction.type === constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount) {
125
+ const ataCloseInstruction = instruction;
126
+ this._closeAtaEntries.push({
127
+ accountAddress: ataCloseInstruction.params.accountAddress,
128
+ destinationAddress: ataCloseInstruction.params.destinationAddress,
129
+ authorityAddress: ataCloseInstruction.params.authorityAddress,
130
+ programId: ataCloseInstruction.params.programId,
131
+ });
132
+ }
133
+ }
134
+ if (this._closeAtaEntries.length > 1) {
135
+ this._apiMode = 'bulk';
136
+ }
137
+ }
138
+ /** @inheritdoc */
139
+ async buildImplementation() {
140
+ (0, assert_1.default)(this._closeAtaEntries.length > 0, 'At least one ATA must be specified before building the transaction');
141
+ for (const entry of this._closeAtaEntries) {
142
+ (0, assert_1.default)(entry.accountAddress, 'Account Address must be set before building the transaction');
143
+ (0, assert_1.default)(entry.destinationAddress, 'Destination Address must be set before building the transaction');
144
+ (0, assert_1.default)(entry.authorityAddress, 'Authority Address must be set before building the transaction');
145
+ if (entry.accountAddress === entry.destinationAddress) {
146
+ throw new sdk_core_1.BuildTransactionError('Account address to close cannot be the same as the destination address');
147
+ }
148
+ }
149
+ this._instructionsData = this._closeAtaEntries.map((entry) => ({
150
+ type: constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount,
151
+ params: {
152
+ accountAddress: entry.accountAddress,
153
+ destinationAddress: entry.destinationAddress,
154
+ authorityAddress: entry.authorityAddress,
155
+ ...(entry.programId ? { programId: entry.programId } : {}),
156
+ },
157
+ }));
158
+ return await super.buildImplementation();
159
+ }
160
+ }
161
+ exports.CloseAtaBuilder = CloseAtaBuilder;
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2VBdGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jbG9zZUF0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQThFO0FBRTlFLG9EQUE0QjtBQUM1QiwyQ0FBc0Q7QUFFdEQsK0NBQTRDO0FBQzVDLDZEQUEwRDtBQUMxRCxtQ0FBMEM7QUFJMUMsTUFBTSxxQkFBcUIsR0FDekIsMkhBQTJILENBQUM7QUFFOUgsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQWdCckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFoQnJCLHlEQUF5RDtRQUMvQyxxQkFBZ0IsR0FLcEIsRUFBRSxDQUFDO1FBRVQscUZBQXFGO1FBQ3JGLCtGQUErRjtRQUMvRixpR0FBaUc7UUFDakcsMEZBQTBGO1FBQzFGLGtFQUFrRTtRQUMxRCxhQUFRLEdBQWdDLFNBQVMsQ0FBQztRQUl4RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQywyQkFBMkIsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLGNBQXNCO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUEsdUJBQWUsRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBQyxr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cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEF0YUNsb3NlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgdmFsaWRhdGVBZGRyZXNzIH0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgQ2xvc2VBdGFBcGlNb2RlID0gJ3NpbmdsZScgfCAnYnVsayc7XG5cbmNvbnN0IE1JWF9BUElfRVJST1JfTUVTU0FHRSA9XG4gICdDYW5ub3QgbWl4IHNpbmdsZS1BVEEgQVBJIChhY2NvdW50QWRkcmVzcy9kZXN0aW5hdGlvbkFkZHJlc3MvYXV0aG9yaXR5QWRkcmVzcykgd2l0aCBidWxrLUFUQSBBUEkgKGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24pJztcblxuZXhwb3J0IGNsYXNzIENsb3NlQXRhQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIFVuaWZpZWQgc3RvcmFnZSBmb3IgYWxsIGNsb3NlIGVudHJpZXMgKHNpbmdsZSBvciBidWxrKVxuICBwcm90ZWN0ZWQgX2Nsb3NlQXRhRW50cmllczoge1xuICAgIGFjY291bnRBZGRyZXNzOiBzdHJpbmc7XG4gICAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmc7XG4gICAgYXV0aG9yaXR5QWRkcmVzczogc3RyaW5nO1xuICAgIHByb2dyYW1JZD86IHN0cmluZztcbiAgfVtdID0gW107XG5cbiAgLy8gV2hpY2ggQVBJIGhhcyBiZWVuIHVzZWQgb24gdGhpcyBidWlsZGVyIGluc3RhbmNlLiBMb2NrcyBpbiBvbiBmaXJzdCBjYWxsIHNvIHdlIGNhblxuICAvLyByZWplY3QgYXR0ZW1wdHMgdG8gbWl4IHRoZSBsZWdhY3kgc2luZ2xlLUFUQSBzZXR0ZXJzIHdpdGggdGhlIGJ1bGsgYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbigpLlxuICAvLyBBZnRlciBpbml0QnVpbGRlcigpOiByZW1haW5zIHVuZGVmaW5lZCBmb3IgYSBzaW5nbGUgcGFyc2VkIGNsb3NlIChlaXRoZXIgQVBJIG1heSBleHRlbmQvZWRpdCk7XG4gIC8vIHNldCB0byAnYnVsaycgd2hlbiB0aGUgcGFyc2VkIHR4IGhhZCBtdWx0aXBsZSBjbG9zZXMgc28gbGVnYWN5IHNldHRlcnMgY2Fubm90IHBhcnRpYWxseVxuICAvLyBvdmVyd3JpdGUgZW50cnlbMF0gd2hpbGUgbGVhdmluZyBvdGhlciBwYXJzZWQgZW50cmllcyBpbiBwbGFjZS5cbiAgcHJpdmF0ZSBfYXBpTW9kZTogQ2xvc2VBdGFBcGlNb2RlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEFUQSBhY2NvdW50IGFkZHJlc3MgdG8gY2xvc2UgKHNpbmdsZS1BVEEgQVBJLCBiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICogQ2Fubm90IGJlIG1peGVkIHdpdGggYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbigpLlxuICAgKi9cbiAgYWNjb3VudEFkZHJlc3MoYWNjb3VudEFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Fzc2VydFNpbmdsZUF0YUFwaVVzYWJsZSgpO1xuICAgIHZhbGlkYXRlQWRkcmVzcyhhY2NvdW50QWRkcmVzcywgJ2FjY291bnRBZGRyZXNzJyk7XG4gICAgdGhpcy5fYXBpTW9kZSA9ICdzaW5nbGUnO1xuICAgIHRoaXMuX2Vuc3VyZVNpbmdsZUVudHJ5KCk7XG4gICAgdGhpcy5fY2xvc2VBdGFFbnRyaWVzWzBdLmFjY291bnRBZGRyZXNzID0gYWNjb3VudEFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgcmVudCBTT0wgKHNpbmdsZS1BVEEgQVBJLCBiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICogQ2Fubm90IGJlIG1peGVkIHdpdGggYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbigpLlxuICAgKi9cbiAgZGVzdGluYXRpb25BZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fYXNzZXJ0U2luZ2xlQXRhQXBpVXNhYmxlKCk7XG4gICAgdmFsaWRhdGVBZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcywgJ2Rlc3RpbmF0aW9uQWRkcmVzcycpO1xuICAgIHRoaXMuX2FwaU1vZGUgPSAnc2luZ2xlJztcbiAgICB0aGlzLl9lbnN1cmVTaW5nbGVFbnRyeSgpO1xuICAgIHRoaXMuX2Nsb3NlQXRhRW50cmllc1swXS5kZXN0aW5hdGlvbkFkZHJlc3MgPSBkZXN0aW5hdGlvbkFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXV0aG9yaXR5IGFkZHJlc3MgLyBBVEEgb3duZXIgKHNpbmdsZS1BVEEgQVBJLCBiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICogQ2Fubm90IGJlIG1peGVkIHdpdGggYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbigpLlxuICAgKi9cbiAgYXV0aG9yaXR5QWRkcmVzcyhhdXRob3JpdHlBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9hc3NlcnRTaW5nbGVBdGFBcGlVc2FibGUoKTtcbiAgICB2YWxpZGF0ZUFkZHJlc3MoYXV0aG9yaXR5QWRkcmVzcywgJ2F1dGhvcml0eUFkZHJlc3MnKTtcbiAgICB0aGlzLl9hcGlNb2RlID0gJ3NpbmdsZSc7XG4gICAgdGhpcy5fZW5zdXJlU2luZ2xlRW50cnkoKTtcbiAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXNbMF0uYXV0aG9yaXR5QWRkcmVzcyA9IGF1dGhvcml0eUFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgU1BMIHRva2VuIHByb2dyYW0gdXNlZCBieSB0aGUgY2xvc2UgaW5zdHJ1Y3Rpb24uICovXG4gIHByb2dyYW1JZChwcm9ncmFtSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Fzc2VydFNpbmdsZUF0YUFwaVVzYWJsZSgpO1xuICAgIHZhbGlkYXRlQWRkcmVzcyhwcm9ncmFtSWQsICdwcm9ncmFtSWQnKTtcbiAgICB0aGlzLl9hcGlNb2RlID0gJ3NpbmdsZSc7XG4gICAgdGhpcy5fZW5zdXJlU2luZ2xlRW50cnkoKTtcbiAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXNbMF0ucHJvZ3JhbUlkID0gcHJvZ3JhbUlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBpZiB0aGUgYnVsay1BVEEgQVBJIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBvbiB0aGlzIGJ1aWxkZXIuXG4gICAqL1xuICBwcml2YXRlIF9hc3NlcnRTaW5nbGVBdGFBcGlVc2FibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FwaU1vZGUgPT09ICdidWxrJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihNSVhfQVBJX0VSUk9SX01FU1NBR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIGEgc2luZ2xlIGVudHJ5IGV4aXN0cyBpbiBfY2xvc2VBdGFFbnRyaWVzIGZvciB0aGUgbGVnYWN5IEFQSS5cbiAgICovXG4gIHByaXZhdGUgX2Vuc3VyZVNpbmdsZUVudHJ5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jbG9zZUF0YUVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXMucHVzaCh7IGFjY291bnRBZGRyZXNzOiAnJywgZGVzdGluYXRpb25BZGRyZXNzOiAnJywgYXV0aG9yaXR5QWRkcmVzczogJycgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBBVEEgdG8gY2xvc2UgaW4gdGhpcyB0cmFuc2FjdGlvbiAoZm9yIGJ1bGsgY2xvc3VyZSkuXG4gICAqIENhbm5vdCBiZSBtaXhlZCB3aXRoIHRoZSBzaW5nbGUtQVRBIEFQSSAoYWNjb3VudEFkZHJlc3MvZGVzdGluYXRpb25BZGRyZXNzL2F1dGhvcml0eUFkZHJlc3MpLlxuICAgKlxuICAgKiBAcGFyYW0gYWNjb3VudEFkZHJlc3MgLSB0aGUgQVRBIGFkZHJlc3MgdG8gY2xvc2VcbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uQWRkcmVzcyAtIHdoZXJlIHJlbnQgU09MIGdvZXMgKHJvb3Qgd2FsbGV0IGFkZHJlc3MpXG4gICAqIEBwYXJhbSBhdXRob3JpdHlBZGRyZXNzIC0gQVRBIG93bmVyIHdobyBtdXN0IHNpZ25cbiAgICogQHBhcmFtIHByb2dyYW1JZCAtIFNQTCB0b2tlbiBwcm9ncmFtIG93bmluZyB0aGUgQVRBOyBvbWl0dGVkIGZvciBsZWdhY3kgU1BMXG4gICAqL1xuICBhZGRDbG9zZUF0YUluc3RydWN0aW9uKFxuICAgIGFjY291bnRBZGRyZXNzOiBzdHJpbmcsXG4gICAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsXG4gICAgYXV0aG9yaXR5QWRkcmVzczogc3RyaW5nLFxuICAgIHByb2dyYW1JZD86IHN0cmluZ1xuICApOiB0aGlzIHtcbiAgICBpZiAodGhpcy5fYXBpTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoTUlYX0FQSV9FUlJPUl9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUFkZHJlc3MoYWNjb3VudEFkZHJlc3MsICdhY2NvdW50QWRkcmVzcycpO1xuICAgIHZhbGlkYXRlQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MsICdkZXN0aW5hdGlvbkFkZHJlc3MnKTtcbiAgICB2YWxpZGF0ZUFkZHJlc3MoYXV0aG9yaXR5QWRkcmVzcywgJ2F1dGhvcml0eUFkZHJlc3MnKTtcbiAgICBpZiAocHJvZ3JhbUlkKSB7XG4gICAgICB2YWxpZGF0ZUFkZHJlc3MocHJvZ3JhbUlkLCAncHJvZ3JhbUlkJyk7XG4gICAgfVxuXG4gICAgaWYgKGFjY291bnRBZGRyZXNzID09PSBkZXN0aW5hdGlvbkFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FjY291bnQgYWRkcmVzcyB0byBjbG9zZSBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY2xvc2VBdGFFbnRyaWVzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS5hY2NvdW50QWRkcmVzcyA9PT0gYWNjb3VudEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdEdXBsaWNhdGUgQVRBIGFkZHJlc3M6ICcgKyBhY2NvdW50QWRkcmVzcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYXBpTW9kZSA9ICdidWxrJztcbiAgICB0aGlzLl9jbG9zZUF0YUVudHJpZXMucHVzaCh7IGFjY291bnRBZGRyZXNzLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGF1dGhvcml0eUFkZHJlc3MsIHByb2dyYW1JZCB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KSB7XG4gICAgICAgIGNvbnN0IGF0YUNsb3NlSW5zdHJ1Y3Rpb246IEF0YUNsb3NlID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuX2Nsb3NlQXRhRW50cmllcy5wdXNoKHtcbiAgICAgICAgICBhY2NvdW50QWRkcmVzczogYXRhQ2xvc2VJbnN0cnVjdGlvbi5wYXJhbXMuYWNjb3VudEFkZHJlc3MsXG4gICAgICAgICAgZGVzdGluYXRpb25BZGRyZXNzOiBhdGFDbG9zZUluc3RydWN0aW9uLnBhcmFtcy5kZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzczogYXRhQ2xvc2VJbnN0cnVjdGlvbi5wYXJhbXMuYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBwcm9ncmFtSWQ6IGF0YUNsb3NlSW5zdHJ1Y3Rpb24ucGFyYW1zLnByb2dyYW1JZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9jbG9zZUF0YUVudHJpZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5fYXBpTW9kZSA9ICdidWxrJztcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGFzc2VydCh0aGlzLl9jbG9zZUF0YUVudHJpZXMubGVuZ3RoID4gMCwgJ0F0IGxlYXN0IG9uZSBBVEEgbXVzdCBiZSBzcGVjaWZpZWQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLl9jbG9zZUF0YUVudHJpZXMpIHtcbiAgICAgIGFzc2VydChlbnRyeS5hY2NvdW50QWRkcmVzcywgJ0FjY291bnQgQWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICBhc3NlcnQoZW50cnkuZGVzdGluYXRpb25BZGRyZXNzLCAnRGVzdGluYXRpb24gQWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICBhc3NlcnQoZW50cnkuYXV0aG9yaXR5QWRkcmVzcywgJ0F1dGhvcml0eSBBZGRyZXNzIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcblxuICAgICAgaWYgKGVudHJ5LmFjY291bnRBZGRyZXNzID09PSBlbnRyeS5kZXN0aW5hdGlvbkFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWNjb3VudCBhZGRyZXNzIHRvIGNsb3NlIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSB0aGlzLl9jbG9zZUF0YUVudHJpZXMubWFwKFxuICAgICAgKGVudHJ5KTogQXRhQ2xvc2UgPT4gKHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBhY2NvdW50QWRkcmVzczogZW50cnkuYWNjb3VudEFkZHJlc3MsXG4gICAgICAgICAgZGVzdGluYXRpb25BZGRyZXNzOiBlbnRyeS5kZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzczogZW50cnkuYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICAuLi4oZW50cnkucHJvZ3JhbUlkID8geyBwcm9ncmFtSWQ6IGVudHJ5LnByb2dyYW1JZCB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxufVxuIl19