@bitgo-beta/sdk-coin-sol 7.6.4-beta.6 → 7.6.4-beta.600

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 (415) 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/config/token2022StaticConfig.d.ts.map +1 -0
  4. package/dist/cjs/src/config/token2022StaticConfig.js +50 -0
  5. package/dist/cjs/src/index.d.ts.map +1 -0
  6. package/dist/{src → cjs/src}/index.js +1 -1
  7. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  8. package/dist/cjs/src/lib/ataInitializationBuilder.js +201 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts +51 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  11. package/dist/cjs/src/lib/closeAtaBuilder.js +147 -0
  12. package/dist/{src → cjs/src}/lib/constants.d.ts +24 -0
  13. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  14. package/dist/cjs/src/lib/constants.js +196 -0
  15. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  17. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  18. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/explainTransactionWasm.js +264 -0
  20. package/dist/{src → cjs/src}/lib/iface.d.ts +22 -2
  21. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/iface.js +7 -0
  23. package/dist/{src → cjs/src}/lib/index.d.ts +2 -0
  24. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  25. package/dist/{src → cjs/src}/lib/index.js +10 -2
  26. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
  27. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/instructionParamsFactory.js +1081 -0
  29. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  30. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  31. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/keyPair.js +63 -0
  33. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  34. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  35. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  37. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  38. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  40. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/solInstructionFactory.js +609 -0
  42. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  44. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  45. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  46. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  48. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  50. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  52. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  53. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  54. package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/token2022Config.js +27 -0
  56. package/dist/cjs/src/lib/tokenExtensions.d.ts +31 -0
  57. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/tokenExtensions.js +112 -0
  59. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/tokenTransferBuilder.js +196 -0
  61. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  62. package/dist/cjs/src/lib/transaction.js +612 -0
  63. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  65. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +5 -0
  66. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/transactionBuilderFactory.js +209 -0
  68. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  69. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  70. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  71. package/dist/cjs/src/lib/transferBuilderV2.js +213 -0
  72. package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
  73. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/utils.js +632 -0
  75. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  77. package/dist/cjs/src/register.d.ts +5 -0
  78. package/dist/cjs/src/register.d.ts.map +1 -0
  79. package/dist/cjs/src/register.js +29 -0
  80. package/dist/{src → cjs/src}/sol.d.ts +68 -2
  81. package/dist/cjs/src/sol.d.ts.map +1 -0
  82. package/dist/cjs/src/sol.js +1533 -0
  83. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  84. package/dist/cjs/src/solToken.d.ts.map +1 -0
  85. package/dist/cjs/src/solToken.js +79 -0
  86. package/dist/cjs/src/tsol.d.ts.map +1 -0
  87. package/dist/cjs/src/tsol.js +24 -0
  88. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  89. package/dist/cjs/test/fixtures/sol.js +1433 -0
  90. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  91. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  92. package/dist/cjs/test/resources/sol.js +320 -0
  93. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  94. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  95. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  96. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  97. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  98. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  99. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  100. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  101. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  102. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  103. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  104. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  105. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  106. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  107. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  108. package/dist/cjs/test/unit/keyPair.js +177 -0
  109. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  110. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  111. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  112. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  113. package/dist/cjs/test/unit/register.d.ts +2 -0
  114. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  115. package/dist/cjs/test/unit/register.js +65 -0
  116. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  117. package/dist/cjs/test/unit/sol.js +4477 -0
  118. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  119. package/dist/cjs/test/unit/solInstructionFactory.js +501 -0
  120. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/solToken.js +37 -0
  122. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  123. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  124. package/dist/cjs/test/unit/tokenExtensions.js +32 -0
  125. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  126. package/dist/cjs/test/unit/transaction.js +1108 -0
  127. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  128. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  129. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  130. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  131. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  132. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +333 -0
  134. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  136. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  138. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  139. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  140. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  141. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  142. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  144. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  145. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  146. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  147. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +827 -0
  148. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  150. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  151. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  152. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  153. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  154. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  155. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  156. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  157. package/dist/cjs/test/unit/utils.js +557 -0
  158. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  159. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  160. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  161. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  162. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  163. package/dist/esm/config/token2022StaticConfig.js +47 -0
  164. package/dist/esm/index.d.ts +7 -0
  165. package/dist/esm/index.js +7 -0
  166. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  167. package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +1 -1
  168. package/dist/esm/lib/ataInitializationBuilder.js +161 -0
  169. package/dist/esm/lib/closeAtaBuilder.d.ts +51 -0
  170. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  171. package/dist/esm/lib/closeAtaBuilder.js +140 -0
  172. package/dist/esm/lib/constants.d.ts +164 -0
  173. package/dist/esm/lib/constants.d.ts.map +1 -0
  174. package/dist/esm/lib/constants.js +193 -0
  175. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  176. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  177. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  178. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  179. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  180. package/dist/esm/lib/iface.d.ts +264 -0
  181. package/dist/esm/lib/iface.d.ts.map +1 -0
  182. package/dist/esm/lib/iface.js +3 -0
  183. package/dist/esm/lib/index.d.ts +24 -0
  184. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  185. package/dist/esm/lib/index.js +24 -0
  186. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  187. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  188. package/dist/esm/lib/instructionParamsFactory.js +1074 -0
  189. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  190. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  191. package/dist/esm/lib/keyPair.d.ts +26 -0
  192. package/dist/esm/lib/keyPair.js +59 -0
  193. package/dist/esm/lib/messages/index.d.ts +2 -0
  194. package/dist/esm/lib/messages/index.js +2 -0
  195. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  196. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  197. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  198. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  199. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  200. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  201. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  202. package/dist/esm/lib/solInstructionFactory.js +603 -0
  203. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  204. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  205. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  206. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  207. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  208. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  209. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  210. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  211. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  212. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  213. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  214. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  215. package/dist/esm/lib/token2022Config.d.ts +44 -0
  216. package/dist/esm/lib/token2022Config.js +23 -0
  217. package/dist/esm/lib/tokenExtensions.d.ts +31 -0
  218. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  219. package/dist/esm/lib/tokenExtensions.js +105 -0
  220. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  221. package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +1 -1
  222. package/dist/esm/lib/tokenTransferBuilder.js +189 -0
  223. package/dist/esm/lib/transaction.d.ts +103 -0
  224. package/dist/esm/lib/transaction.d.ts.map +1 -0
  225. package/dist/esm/lib/transaction.js +605 -0
  226. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  227. package/dist/esm/lib/transactionBuilder.js +373 -0
  228. package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
  229. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  230. package/dist/esm/lib/transactionBuilderFactory.js +205 -0
  231. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  232. package/dist/esm/lib/transferBuilder.js +63 -0
  233. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  234. package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +1 -1
  235. package/dist/esm/lib/transferBuilderV2.js +206 -0
  236. package/dist/esm/lib/utils.d.ts +205 -0
  237. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  238. package/dist/esm/lib/utils.js +594 -0
  239. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  240. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  241. package/dist/esm/register.d.ts +5 -0
  242. package/dist/esm/register.d.ts.map +1 -0
  243. package/dist/esm/register.js +24 -0
  244. package/dist/esm/sol.d.ts +293 -0
  245. package/dist/esm/sol.d.ts.map +1 -0
  246. package/dist/esm/sol.js +1492 -0
  247. package/dist/esm/solToken.d.ts +44 -0
  248. package/dist/esm/solToken.d.ts.map +1 -0
  249. package/dist/esm/solToken.js +75 -0
  250. package/dist/esm/tsol.d.ts +11 -0
  251. package/dist/esm/tsol.js +20 -0
  252. package/package.json +35 -16
  253. package/dist/src/config/token2022StaticConfig.js +0 -50
  254. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  255. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  256. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  257. package/dist/src/lib/closeAtaBuilder.js +0 -69
  258. package/dist/src/lib/constants.d.ts.map +0 -1
  259. package/dist/src/lib/constants.js +0 -171
  260. package/dist/src/lib/customInstructionBuilder.js +0 -289
  261. package/dist/src/lib/iface.d.ts.map +0 -1
  262. package/dist/src/lib/iface.js +0 -7
  263. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  264. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  265. package/dist/src/lib/keyPair.js +0 -63
  266. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  267. package/dist/src/lib/solInstructionFactory.js +0 -572
  268. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  269. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  270. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  271. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  272. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  273. package/dist/src/lib/token2022Config.js +0 -27
  274. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  275. package/dist/src/lib/transaction.d.ts.map +0 -1
  276. package/dist/src/lib/transaction.js +0 -595
  277. package/dist/src/lib/transactionBuilder.js +0 -380
  278. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  279. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  280. package/dist/src/lib/transferBuilder.js +0 -70
  281. package/dist/src/lib/transferBuilderV2.js +0 -210
  282. package/dist/src/lib/utils.js +0 -586
  283. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  284. package/dist/src/register.d.ts +0 -3
  285. package/dist/src/register.d.ts.map +0 -1
  286. package/dist/src/register.js +0 -15
  287. package/dist/src/sol.d.ts.map +0 -1
  288. package/dist/src/sol.js +0 -1285
  289. package/dist/src/solToken.d.ts.map +0 -1
  290. package/dist/src/solToken.js +0 -69
  291. package/dist/src/tsol.js +0 -24
  292. package/dist/test/fixtures/sol.js +0 -1433
  293. package/dist/test/resources/sol.d.ts.map +0 -1
  294. package/dist/test/resources/sol.js +0 -320
  295. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  296. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  297. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  298. package/dist/test/unit/getBuilderFactory.js +0 -10
  299. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  300. package/dist/test/unit/instructionParamsFactory.js +0 -412
  301. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  302. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  303. package/dist/test/unit/keyPair.js +0 -177
  304. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  305. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  306. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  307. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  308. package/dist/test/unit/sol.js +0 -3108
  309. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  310. package/dist/test/unit/solInstructionFactory.js +0 -454
  311. package/dist/test/unit/solToken.d.ts.map +0 -1
  312. package/dist/test/unit/solToken.js +0 -31
  313. package/dist/test/unit/transaction.d.ts.map +0 -1
  314. package/dist/test/unit/transaction.js +0 -983
  315. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  316. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  317. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  318. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  319. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  320. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  321. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  322. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  323. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  324. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  325. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  326. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  327. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  328. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  329. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  330. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  331. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  332. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  333. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  334. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  335. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  336. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  337. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  338. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  339. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  340. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  341. package/dist/test/unit/utils.js +0 -517
  342. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  343. package/dist/test/unit/versionedTransaction.js +0 -207
  344. package/dist/tsconfig.tsbuildinfo +0 -1
  345. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  349. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  350. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  351. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  352. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  353. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  354. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  355. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  356. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  357. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  358. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  359. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  360. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  361. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  362. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  363. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  364. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  365. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  366. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  367. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  368. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  369. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  370. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  371. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  372. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  373. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  374. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  375. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  376. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  377. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  378. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  379. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  380. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  381. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  382. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  383. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  384. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  385. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  386. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  387. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  388. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  389. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  390. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  391. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  392. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  393. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  394. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  395. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  396. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  397. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  398. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  399. /package/dist/{src → esm}/index.d.ts.map +0 -0
  400. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  401. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  402. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  403. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  404. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  405. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  406. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  407. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  408. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  409. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  410. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  411. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  412. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  413. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  414. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  415. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilderFactory = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const ataInitializationBuilder_1 = require("./ataInitializationBuilder");
6
+ const closeAtaBuilder_1 = require("./closeAtaBuilder");
7
+ const recoverNestedAtaBuilder_1 = require("./recoverNestedAtaBuilder");
8
+ const customInstructionBuilder_1 = require("./customInstructionBuilder");
9
+ const stakingActivateBuilder_1 = require("./stakingActivateBuilder");
10
+ const stakingAuthorizeBuilder_1 = require("./stakingAuthorizeBuilder");
11
+ const stakingDeactivateBuilder_1 = require("./stakingDeactivateBuilder");
12
+ const stakingDelegateBuilder_1 = require("./stakingDelegateBuilder");
13
+ const stakingRawMsgAuthorizeBuilder_1 = require("./stakingRawMsgAuthorizeBuilder");
14
+ const stakingWithdrawBuilder_1 = require("./stakingWithdrawBuilder");
15
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
16
+ const transaction_1 = require("./transaction");
17
+ const transferBuilder_1 = require("./transferBuilder");
18
+ const transferBuilderV2_1 = require("./transferBuilderV2");
19
+ const utils_1 = require("./utils");
20
+ const walletInitializationBuilder_1 = require("./walletInitializationBuilder");
21
+ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
22
+ constructor(_coinConfig) {
23
+ super(_coinConfig);
24
+ }
25
+ /**
26
+ * Returns a proper builder for the given encoded transaction
27
+ *
28
+ * @param { string} raw - Encoded transaction in base64 string format
29
+ */
30
+ from(raw) {
31
+ (0, utils_1.validateRawTransaction)(raw);
32
+ const tx = this.parseTransaction(raw);
33
+ try {
34
+ switch (tx.type) {
35
+ case sdk_core_1.TransactionType.Send:
36
+ const uniqueInputCoins = tx.inputs
37
+ .map((input) => input.coin)
38
+ .filter((coin, index, arr) => arr.indexOf(coin) === index);
39
+ if (uniqueInputCoins.includes('sol') || uniqueInputCoins.includes('tsol')) {
40
+ return this.getTransferBuilderV2(tx);
41
+ }
42
+ else {
43
+ return this.getTokenTransferBuilder(tx);
44
+ }
45
+ case sdk_core_1.TransactionType.WalletInitialization:
46
+ return this.getWalletInitializationBuilder(tx);
47
+ case sdk_core_1.TransactionType.StakingActivate:
48
+ return this.getStakingActivateBuilder(tx);
49
+ case sdk_core_1.TransactionType.StakingDeactivate:
50
+ return this.getStakingDeactivateBuilder(tx);
51
+ case sdk_core_1.TransactionType.StakingWithdraw:
52
+ return this.getStakingWithdrawBuilder(tx);
53
+ case sdk_core_1.TransactionType.AssociatedTokenAccountInitialization:
54
+ return this.getAtaInitializationBuilder(tx);
55
+ case sdk_core_1.TransactionType.StakingAuthorize:
56
+ return this.getStakingAuthorizeBuilder(tx);
57
+ case sdk_core_1.TransactionType.StakingAuthorizeRaw:
58
+ return this.getStakingRawMsgAuthorizeBuilder(tx);
59
+ case sdk_core_1.TransactionType.StakingDelegate:
60
+ return this.getStakingDelegateBuilder(tx);
61
+ case sdk_core_1.TransactionType.CloseAssociatedTokenAccount:
62
+ return this.getCloseAtaInitializationBuilder(tx);
63
+ case sdk_core_1.TransactionType.CustomTx:
64
+ return this.getCustomInstructionBuilder(tx);
65
+ default:
66
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
67
+ }
68
+ }
69
+ catch (e) {
70
+ throw e;
71
+ }
72
+ }
73
+ /** @inheritdoc */
74
+ getWalletInitializationBuilder(tx) {
75
+ return this.initializeBuilder(tx, new walletInitializationBuilder_1.WalletInitializationBuilder(this._coinConfig));
76
+ }
77
+ /** @inheritdoc */
78
+ getTransferBuilder(tx) {
79
+ return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
80
+ }
81
+ /** @inheritdoc */
82
+ getTokenTransferBuilder(tx) {
83
+ return this.initializeBuilder(tx, new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig));
84
+ }
85
+ /**
86
+ * Returns the transfer builder V2 to create a funds transfer transaction
87
+ */
88
+ getTransferBuilderV2(tx) {
89
+ return this.initializeBuilder(tx, new transferBuilderV2_1.TransferBuilderV2(this._coinConfig));
90
+ }
91
+ /**
92
+ * Returns the staking builder to create a staking account and also a delegate in one transaction.
93
+ * once the tx reach the network it will automatically by activated on next epoch
94
+ *
95
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
96
+ *
97
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
98
+ * @returns {StakingDeactivateBuilder} - the initialized staking activate builder
99
+ */
100
+ getStakingActivateBuilder(tx) {
101
+ return this.initializeBuilder(tx, new stakingActivateBuilder_1.StakingActivateBuilder(this._coinConfig));
102
+ }
103
+ /**
104
+ * Returns the builder to create a staking deactivate transaction.
105
+ * Deactivated is set in the current epoch + cooldown
106
+ * The account's stake will ramp down to zero by that epoch, and the lamports will be available for withdrawal.
107
+ *
108
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
109
+ *
110
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
111
+ * @returns {StakingDeactivateBuilder} - the initialized staking deactivate builder
112
+ */
113
+ getStakingDeactivateBuilder(tx) {
114
+ return this.initializeBuilder(tx, new stakingDeactivateBuilder_1.StakingDeactivateBuilder(this._coinConfig));
115
+ }
116
+ /**
117
+ * Returns the builder to create a staking withdraw transaction.
118
+ * once the staking account reach 0 SOL it will not be traceable anymore by the network
119
+ *
120
+ * @see https://docs.solana.com/staking/stake-accounts#destroying-a-stake-account
121
+ *
122
+ * @param {Transaction} tx - the transaction to be used to intialize the builder
123
+ * @returns {StakingWithdrawBuilder} - the initialized staking withdraw builder
124
+ */
125
+ getStakingWithdrawBuilder(tx) {
126
+ return this.initializeBuilder(tx, new stakingWithdrawBuilder_1.StakingWithdrawBuilder(this._coinConfig));
127
+ }
128
+ /**
129
+ * Returns the builder to authorized staking account.
130
+ *
131
+ * @param {Transaction} tx - the transaction to be used to intialize the builder
132
+ * @returns {StakingAuthorizeBuilder} - the initialized staking authorize builder
133
+ */
134
+ getStakingAuthorizeBuilder(tx) {
135
+ return this.initializeBuilder(tx, new stakingAuthorizeBuilder_1.StakingAuthorizeBuilder(this._coinConfig));
136
+ }
137
+ /**
138
+ * Returns the builder to delegate staking account.
139
+ *
140
+ * @param {Transaction} tx - the transaction to be used to delegate staking account
141
+ * @returns {StakingDelegateBuilder} - the staking delegate builder
142
+ */
143
+ getStakingDelegateBuilder(tx) {
144
+ return this.initializeBuilder(tx, new stakingDelegateBuilder_1.StakingDelegateBuilder(this._coinConfig));
145
+ }
146
+ /**
147
+ * Returns the raw message builder to authorized staking account.
148
+ *
149
+ * @param {Transaction} tx - the transaction to be used to intialize the builder
150
+ * @returns {StakingWithdrawBuilder} - the initialized staking authorize builder
151
+ */
152
+ getStakingRawMsgAuthorizeBuilder(tx) {
153
+ const builder = new stakingRawMsgAuthorizeBuilder_1.StakingRawMsgAuthorizeBuilder(this._coinConfig);
154
+ if (tx) {
155
+ builder.initBuilder(tx);
156
+ }
157
+ return builder;
158
+ }
159
+ /**
160
+ * Returns the builder to create a create associated token account transaction.
161
+ */
162
+ getAtaInitializationBuilder(tx) {
163
+ return this.initializeBuilder(tx, new ataInitializationBuilder_1.AtaInitializationBuilder(this._coinConfig));
164
+ }
165
+ /**
166
+ * Returns the builder to create a close associated token account transaction.
167
+ */
168
+ getCloseAtaInitializationBuilder(tx) {
169
+ return this.initializeBuilder(tx, new closeAtaBuilder_1.CloseAtaBuilder(this._coinConfig));
170
+ }
171
+ /**
172
+ * Returns the builder to recover tokens from a nested ATA (an ATA owned by another ATA).
173
+ */
174
+ getRecoverNestedAtaBuilder(tx) {
175
+ return this.initializeBuilder(tx, new recoverNestedAtaBuilder_1.RecoverNestedAtaBuilder(this._coinConfig));
176
+ }
177
+ /**
178
+ * Returns the builder to create transactions with custom Solana instructions.
179
+ */
180
+ getCustomInstructionBuilder(tx) {
181
+ return this.initializeBuilder(tx, new customInstructionBuilder_1.CustomInstructionBuilder(this._coinConfig));
182
+ }
183
+ /**
184
+ * Initialize the builder with the given transaction
185
+ *
186
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
187
+ * @param {TransactionBuilder} builder - the builder to be initialized
188
+ * @returns {TransactionBuilder} the builder initialized
189
+ */
190
+ initializeBuilder(tx, builder) {
191
+ if (tx) {
192
+ builder.initBuilder(tx);
193
+ }
194
+ return builder;
195
+ }
196
+ /** Parse the transaction from a raw transaction
197
+ *
198
+ * @param {string} rawTransaction - the raw tx
199
+ * @returns {Transaction} parsed transaction
200
+ */
201
+ parseTransaction(rawTransaction) {
202
+ const tx = new transaction_1.Transaction(this._coinConfig);
203
+ tx.setUseTokenAddressTokenName(true);
204
+ tx.fromRawTransaction(rawTransaction);
205
+ return tx;
206
+ }
207
+ }
208
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBK0c7QUFFL0cseUVBQXNFO0FBQ3RFLHVEQUFvRDtBQUNwRCx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHFFQUFrRTtBQUNsRSx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHFFQUFrRTtBQUNsRSxtRkFBZ0Y7QUFDaEYscUVBQWtFO0FBQ2xFLGlFQUE4RDtBQUM5RCwrQ0FBNEM7QUFFNUMsdURBQW9EO0FBQ3BELDJEQUF3RDtBQUN4RCxtQ0FBaUQ7QUFDakQsK0VBQTRFO0FBRTVFLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEdBQVc7UUFDZCxJQUFBLDhCQUFzQixFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLE1BQU07eUJBQy9CLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt5QkFDMUIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7b0JBQzdELElBQUksZ0JB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QUFDO0lBQ3BGLENBQUM7SUFFRDs7T0FFRztJQUNILGdDQUFnQyxDQUFDLEVBQWdCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQTBCLENBQUMsRUFBZ0I7UUFDekMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaURBQXVCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCLENBQUMsRUFBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksbURBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUErQixFQUEyQixFQUFFLE9BQVU7UUFDN0YsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsY0FBc0I7UUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxFQUFFLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBeE1ELDhEQXdNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi9hdGFJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQ2xvc2VBdGFCdWlsZGVyIH0gZnJvbSAnLi9jbG9zZUF0YUJ1aWxkZXInO1xuaW1wb3J0IHsgUmVjb3Zlck5lc3RlZEF0YUJ1aWxkZXIgfSBmcm9tICcuL3JlY292ZXJOZXN0ZWRBdGFCdWlsZGVyJztcbmltcG9ydCB7IEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4vY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdBY3RpdmF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ0F1dGhvcml6ZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdBdXRob3JpemVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXJWMiB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyVjInO1xuaW1wb3J0IHsgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwcm9wZXIgYnVpbGRlciBmb3IgdGhlIGdpdmVuIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHsgc3RyaW5nfSByYXcgLSBFbmNvZGVkIHRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgZm9ybWF0XG4gICAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHwgU3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICBjb25zdCB1bmlxdWVJbnB1dENvaW5zID0gdHguaW5wdXRzXG4gICAgICAgICAgICAubWFwKChpbnB1dCkgPT4gaW5wdXQuY29pbilcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvaW4sIGluZGV4LCBhcnIpID0+IGFyci5pbmRleE9mKGNvaW4pID09PSBpbmRleCk7XG4gICAgICAgICAgaWYgKHVuaXF1ZUlucHV0Q29pbnMuaW5jbHVkZXMoJ3NvbCcpIHx8IHVuaXF1ZUlucHV0Q29pbnMuaW5jbHVkZXMoJ3Rzb2wnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyVjIodHgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldEF0YUluaXRpYWxpemF0aW9uQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBdXRob3JpemU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0F1dGhvcml6ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplUmF3OlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRyYW5zZmVyIGJ1aWxkZXIgVjIgdG8gY3JlYXRlIGEgZnVuZHMgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldFRyYW5zZmVyQnVpbGRlclYyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXJWMiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXJWMih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3Rha2luZyBidWlsZGVyIHRvIGNyZWF0ZSBhIHN0YWtpbmcgYWNjb3VudCBhbmQgYWxzbyBhIGRlbGVnYXRlIGluIG9uZSB0cmFuc2FjdGlvbi5cbiAgICogb25jZSB0aGUgdHggcmVhY2ggdGhlIG5ldHdvcmsgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJ5IGFjdGl2YXRlZCBvbiBuZXh0IGVwb2NoXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vY2x1c3Rlci9zdGFrZS1kZWxlZ2F0aW9uLWFuZC1yZXdhcmRzI3N0YWtlLXdhcm11cC1jb29sZG93bi13aXRoZHJhd2FsXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHRvIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyfSAtIHRoZSBpbml0aWFsaXplZCBzdGFraW5nIGFjdGl2YXRlIGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBzdGFraW5nIGRlYWN0aXZhdGUgdHJhbnNhY3Rpb24uXG4gICAqIERlYWN0aXZhdGVkIGlzIHNldCBpbiB0aGUgY3VycmVudCBlcG9jaCArIGNvb2xkb3duXG4gICAqIFRoZSBhY2NvdW50J3Mgc3Rha2Ugd2lsbCByYW1wIGRvd24gdG8gemVybyBieSB0aGF0IGVwb2NoLCBhbmQgdGhlIGxhbXBvcnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB3aXRoZHJhd2FsLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2NsdXN0ZXIvc3Rha2UtZGVsZWdhdGlvbi1hbmQtcmV3YXJkcyNzdGFrZS13YXJtdXAtY29vbGRvd24td2l0aGRyYXdhbFxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB0byBiZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1N0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcn0gLSB0aGUgaW5pdGlhbGl6ZWQgc3Rha2luZyBkZWFjdGl2YXRlIGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBzdGFraW5nIHdpdGhkcmF3IHRyYW5zYWN0aW9uLlxuICAgKiBvbmNlIHRoZSBzdGFraW5nIGFjY291bnQgcmVhY2ggMCBTT0wgaXQgd2lsbCBub3QgYmUgdHJhY2VhYmxlIGFueW1vcmUgYnkgdGhlIG5ldHdvcmtcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3Muc29sYW5hLmNvbS9zdGFraW5nL3N0YWtlLWFjY291bnRzI2Rlc3Ryb3lpbmctYS1zdGFrZS1hY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHRvIGJlIHVzZWQgdG8gaW50aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEByZXR1cm5zIHtTdGFraW5nV2l0aGRyYXdCdWlsZGVyfSAtIHRoZSBpbml0aWFsaXplZCBzdGFraW5nIHdpdGhkcmF3IGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ1dpdGhkcmF3QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBhdXRob3JpemVkIHN0YWtpbmcgYWNjb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdG8gYmUgdXNlZCB0byBpbnRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1N0YWtpbmdBdXRob3JpemVCdWlsZGVyfSAtIHRoZSBpbml0aWFsaXplZCBzdGFraW5nIGF1dGhvcml6ZSBidWlsZGVyXG4gICAqL1xuICBnZXRTdGFraW5nQXV0aG9yaXplQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0F1dGhvcml6ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0F1dGhvcml6ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBidWlsZGVyIHRvIGRlbGVnYXRlIHN0YWtpbmcgYWNjb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdG8gYmUgdXNlZCB0byBkZWxlZ2F0ZSBzdGFraW5nIGFjY291bnRcbiAgICogQHJldHVybnMge1N0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXJ9IC0gdGhlIHN0YWtpbmcgZGVsZWdhdGUgYnVpbGRlclxuICAgKi9cbiAgZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0RlbGVnYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nRGVsZWdhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByYXcgbWVzc2FnZSBidWlsZGVyIHRvIGF1dGhvcml6ZWQgc3Rha2luZyBhY2NvdW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB0byBiZSB1c2VkIHRvIGludGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcmV0dXJucyB7U3Rha2luZ1dpdGhkcmF3QnVpbGRlcn0gLSB0aGUgaW5pdGlhbGl6ZWQgc3Rha2luZyBhdXRob3JpemUgYnVpbGRlclxuICAgKi9cbiAgZ2V0U3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFN0YWtpbmdSYXdNc2dBdXRob3JpemVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJ1aWxkZXIgdG8gY3JlYXRlIGEgY3JlYXRlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGdldEF0YUluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEF0YUluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBjbG9zZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBnZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogQ2xvc2VBdGFCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENsb3NlQXRhQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byByZWNvdmVyIHRva2VucyBmcm9tIGEgbmVzdGVkIEFUQSAoYW4gQVRBIG93bmVkIGJ5IGFub3RoZXIgQVRBKS5cbiAgICovXG4gIGdldFJlY292ZXJOZXN0ZWRBdGFCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBSZWNvdmVyTmVzdGVkQXRhQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBSZWNvdmVyTmVzdGVkQXRhQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgdHJhbnNhY3Rpb25zIHdpdGggY3VzdG9tIFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gICAqL1xuICBnZXRDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdGhlIHJhdyB0eFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IHBhcnNlZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguc2V0VXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lKHRydWUpO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIHR4O1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,WAAW,CAAoB;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAelC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,GAAG,IAAI;IAc3C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAiB5D"}
@@ -0,0 +1,70 @@
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.TransferBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const utils_1 = require("./utils");
10
+ const constants_1 = require("./constants");
11
+ const assert_1 = __importDefault(require("assert"));
12
+ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ this._sendParams = [];
16
+ }
17
+ get transactionType() {
18
+ return sdk_core_1.TransactionType.Send;
19
+ }
20
+ initBuilder(tx) {
21
+ super.initBuilder(tx);
22
+ for (const instruction of this._instructionsData) {
23
+ if (instruction.type === constants_1.InstructionBuilderTypes.Transfer) {
24
+ const transferInstruction = instruction;
25
+ this.sender(transferInstruction.params.fromAddress);
26
+ this.send({
27
+ address: transferInstruction.params.toAddress,
28
+ amount: transferInstruction.params.amount,
29
+ });
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * Set a transfer
35
+ *
36
+ * @param {string} fromAddress - the sender address
37
+ * @param {string} toAddress - the receiver address
38
+ * @param {string} amount - the amount sent
39
+ * @returns {TransactionBuilder} This transaction builder
40
+ */
41
+ send({ address, amount }) {
42
+ (0, utils_1.validateAddress)(address, 'address');
43
+ if (!amount || !(0, utils_1.isValidAmount)(amount)) {
44
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
45
+ }
46
+ if (BigInt(amount) > BigInt(Number.MAX_SAFE_INTEGER)) {
47
+ throw new sdk_core_1.BuildTransactionError(`input amount ${amount} exceeds max safe int ${Number.MAX_SAFE_INTEGER}`);
48
+ }
49
+ this._sendParams.push({ address, amount });
50
+ return this;
51
+ }
52
+ /** @inheritdoc */
53
+ async buildImplementation() {
54
+ (0, assert_1.default)(this._sender, 'Sender must be set before building the transaction');
55
+ const transferData = this._sendParams.map((sendParams) => {
56
+ return {
57
+ type: constants_1.InstructionBuilderTypes.Transfer,
58
+ params: {
59
+ fromAddress: this._sender,
60
+ toAddress: sendParams.address,
61
+ amount: sendParams.amount,
62
+ },
63
+ };
64
+ });
65
+ this._instructionsData = transferData;
66
+ return await super.buildImplementation();
67
+ }
68
+ }
69
+ exports.TransferBuilder = TransferBuilder;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQThFO0FBQzlFLDZEQUEwRDtBQUUxRCxtQ0FBeUQ7QUFDekQsMkNBQXNEO0FBR3RELG9EQUE0QjtBQU81QixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBR3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO0lBSXZDLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV0QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxtQ0FBdUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxtQkFBbUIsR0FBYSxXQUFXLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDN0MsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNO2lCQUMxQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBYztRQUNsQyxJQUFBLHVCQUFlLEVBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQkFBZ0IsTUFBTSx5QkFBeUIsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUEsZ0JBQU0sRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9EQUFvRCxDQUFDLENBQUM7UUFFM0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFzQixFQUFZLEVBQUU7WUFDN0UsT0FBTztnQkFDTCxJQUFJLEVBQUUsbUNBQXVCLENBQUMsUUFBUTtnQkFDdEMsTUFBTSxFQUFFO29CQUNOLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPO29CQUM3QixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07aUJBQzFCO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUV0QyxPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBbEVELDBDQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGlzVmFsaWRBbW91bnQsIHZhbGlkYXRlQWRkcmVzcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2ZlciB9IGZyb20gJy4vaWZhY2UnO1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFBhcmFtcyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb246IFRyYW5zZmVyID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuc2VuZGVyKHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzKTtcbiAgICAgICAgdGhpcy5zZW5kKHtcbiAgICAgICAgICBhZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IGEgdHJhbnNmZXJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZyb21BZGRyZXNzIC0gdGhlIHNlbmRlciBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b0FkZHJlc3MgLSB0aGUgcmVjZWl2ZXIgYWRkcmVzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gdGhlIGFtb3VudCBzZW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZCh7IGFkZHJlc3MsIGFtb3VudCB9OiBTZW5kUGFyYW1zKTogdGhpcyB7XG4gICAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MsICdhZGRyZXNzJyk7XG4gICAgaWYgKCFhbW91bnQgfHwgIWlzVmFsaWRBbW91bnQoYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFtb3VudCwgZ290OiAnICsgYW1vdW50KTtcbiAgICB9XG4gICAgaWYgKEJpZ0ludChhbW91bnQpID4gQmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgaW5wdXQgYW1vdW50ICR7YW1vdW50fSBleGNlZWRzIG1heCBzYWZlIGludCAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuX3NlbmRQYXJhbXMubWFwKChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zKTogVHJhbnNmZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGZyb21BZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBzZW5kUGFyYW1zLmFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiBzZW5kUGFyYW1zLmFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IHRyYW5zZmVyRGF0YTtcblxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilderV2.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilderV2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAW,uBAAuB,EAA2C,MAAM,SAAS,CAAC;AAIpG,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAA4B;gBACxC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IA8BlC;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMpC;;;;;OAKG;IACH,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAiBlC;;;;;;OAMG;IACH,4BAA4B,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAmBtE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAgH5D"}
@@ -0,0 +1,213 @@
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.TransferBuilderV2 = void 0;
7
+ const transactionBuilder_1 = require("./transactionBuilder");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const utils_1 = require("./utils");
10
+ const assert_1 = __importDefault(require("assert"));
11
+ const constants_1 = require("./constants");
12
+ const lodash_1 = __importDefault(require("lodash"));
13
+ const UNSIGNED_BIGINT_MAX = BigInt('18446744073709551615');
14
+ class TransferBuilderV2 extends transactionBuilder_1.TransactionBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this._sendParams = [];
18
+ this._createAtaParams = [];
19
+ }
20
+ get transactionType() {
21
+ return sdk_core_1.TransactionType.Send;
22
+ }
23
+ initBuilder(tx) {
24
+ super.initBuilder(tx);
25
+ for (const instruction of this._instructionsData) {
26
+ if (instruction.type === constants_1.InstructionBuilderTypes.Transfer) {
27
+ const transferInstruction = instruction;
28
+ this.sender(transferInstruction.params.fromAddress);
29
+ this.send({
30
+ address: transferInstruction.params.toAddress,
31
+ amount: transferInstruction.params.amount,
32
+ });
33
+ }
34
+ else if (instruction.type === constants_1.InstructionBuilderTypes.TokenTransfer) {
35
+ const transferInstruction = instruction;
36
+ this.sender(transferInstruction.params.fromAddress);
37
+ this.send({
38
+ address: transferInstruction.params.toAddress,
39
+ amount: transferInstruction.params.amount,
40
+ tokenName: transferInstruction.params.tokenName,
41
+ });
42
+ }
43
+ else if (instruction.type === constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount) {
44
+ const ataInitInstruction = instruction;
45
+ this._createAtaParams.push({
46
+ ownerAddress: ataInitInstruction.params.ownerAddress,
47
+ tokenName: ataInitInstruction.params.tokenName,
48
+ ataAddress: ataInitInstruction.params.ataAddress,
49
+ });
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * Set a feePayer
55
+ * @param payerAddress
56
+ */
57
+ feePayer(payerAddress) {
58
+ (0, utils_1.validateAddress)(payerAddress, 'address');
59
+ this._feePayer = payerAddress;
60
+ return this;
61
+ }
62
+ /**
63
+ * Set a transfer
64
+ *
65
+ * @param {SendParams} sendParams - sendParams
66
+ * @returns {TransactionBuilder} This transaction builder
67
+ */
68
+ send(sendParams) {
69
+ (0, utils_1.validateAddress)(sendParams.address, 'address');
70
+ if (!sendParams.amount || !(0, utils_1.isValidAmount)(sendParams.amount)) {
71
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + sendParams.amount);
72
+ }
73
+ if (sendParams.tokenName && BigInt(sendParams.amount) > UNSIGNED_BIGINT_MAX) {
74
+ throw new sdk_core_1.BuildTransactionError(`input amount ${sendParams.amount} exceeds big int limit ${UNSIGNED_BIGINT_MAX}`);
75
+ }
76
+ else if (!sendParams.tokenName && BigInt(sendParams.amount) > BigInt(Number.MAX_SAFE_INTEGER)) {
77
+ throw new sdk_core_1.BuildTransactionError(`input amount ${sendParams.amount} exceeds max safe int ${Number.MAX_SAFE_INTEGER}`);
78
+ }
79
+ this._sendParams.push(sendParams);
80
+ return this;
81
+ }
82
+ /**
83
+ *
84
+ * @param {TokenAssociateRecipient} recipient - recipient of the associated token account creation
85
+ * @param {string} recipient.ownerAddress - owner of the associated token account
86
+ * @param {string} recipient.tokenName - name of the token that is intended to associate
87
+ * @returns {TransactionBuilder} This transaction builder
88
+ */
89
+ createAssociatedTokenAccount(recipient) {
90
+ (0, utils_1.validateOwnerAddress)(recipient.ownerAddress);
91
+ const token = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
92
+ let tokenAddress;
93
+ if (recipient.tokenAddress) {
94
+ tokenAddress = recipient.tokenAddress;
95
+ }
96
+ else if (token) {
97
+ tokenAddress = token.tokenAddress;
98
+ }
99
+ if (!tokenAddress) {
100
+ throw new sdk_core_1.BuildTransactionError('Invalid token name, got: ' + recipient.tokenName);
101
+ }
102
+ (0, utils_1.validateMintAddress)(tokenAddress);
103
+ this._createAtaParams.push(recipient);
104
+ return this;
105
+ }
106
+ /** @inheritdoc */
107
+ async buildImplementation() {
108
+ (0, assert_1.default)(this._sender, 'Sender must be set before building the transaction');
109
+ const sendInstructions = await Promise.all(this._sendParams.map(async (sendParams) => {
110
+ if (sendParams.tokenName) {
111
+ const coin = (0, utils_1.getSolTokenFromTokenName)(sendParams.tokenName);
112
+ let tokenAddress;
113
+ let tokenName;
114
+ let programId;
115
+ let decimals;
116
+ if (sendParams.tokenAddress && sendParams.programId && sendParams.decimalPlaces != null) {
117
+ tokenName = sendParams.tokenName;
118
+ tokenAddress = sendParams.tokenAddress;
119
+ decimals = sendParams.decimalPlaces;
120
+ programId = sendParams.programId;
121
+ }
122
+ else if (coin) {
123
+ tokenName = coin.name;
124
+ tokenAddress = coin.tokenAddress;
125
+ decimals = coin.decimalPlaces;
126
+ programId = coin.programId;
127
+ }
128
+ else {
129
+ throw new Error(`Could not determine token information for ${sendParams.tokenName}`);
130
+ }
131
+ const sourceAddress = await (0, utils_1.getAssociatedTokenAccountAddress)(tokenAddress, this._sender, false, programId);
132
+ return {
133
+ type: constants_1.InstructionBuilderTypes.TokenTransfer,
134
+ params: {
135
+ fromAddress: this._sender,
136
+ toAddress: sendParams.address,
137
+ amount: sendParams.amount,
138
+ tokenName: tokenName,
139
+ sourceAddress: sourceAddress,
140
+ tokenAddress: tokenAddress,
141
+ programId: programId,
142
+ decimalPlaces: decimals,
143
+ },
144
+ };
145
+ }
146
+ else {
147
+ return {
148
+ type: constants_1.InstructionBuilderTypes.Transfer,
149
+ params: {
150
+ fromAddress: this._sender,
151
+ toAddress: sendParams.address,
152
+ amount: sendParams.amount,
153
+ },
154
+ };
155
+ }
156
+ }));
157
+ const uniqueCreateAtaParams = lodash_1.default.uniqBy(this._createAtaParams, (recipient) => {
158
+ return recipient.ownerAddress + recipient.tokenName;
159
+ });
160
+ const createAtaInstructions = await Promise.all(uniqueCreateAtaParams.map(async (recipient) => {
161
+ const coin = (0, utils_1.getSolTokenFromTokenName)(recipient.tokenName);
162
+ let tokenAddress;
163
+ let tokenName;
164
+ let programId;
165
+ if (recipient.tokenAddress && recipient.programId) {
166
+ tokenName = recipient.tokenName;
167
+ tokenAddress = recipient.tokenAddress;
168
+ programId = recipient.programId;
169
+ }
170
+ else if (coin) {
171
+ tokenName = coin.name;
172
+ tokenAddress = coin.tokenAddress;
173
+ programId = coin.programId;
174
+ }
175
+ else {
176
+ throw new Error(`Could not determine token information for ${recipient.tokenName}`);
177
+ }
178
+ const recipientTokenAddress = await (0, utils_1.getAssociatedTokenAccountAddress)(tokenAddress, recipient.ownerAddress, false, programId);
179
+ return {
180
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
181
+ params: {
182
+ ownerAddress: recipient.ownerAddress,
183
+ tokenName: tokenName,
184
+ mintAddress: tokenAddress,
185
+ ataAddress: recipientTokenAddress,
186
+ // Match transactionBuilder fee payer selection: when a distinct fee payer
187
+ // is set (e.g. gas tank on consolidation), it must fund ATA rent — the
188
+ // token sender/authority often has no SOL.
189
+ payerAddress: this._feePayer ?? this._sender,
190
+ programId: programId,
191
+ },
192
+ };
193
+ }));
194
+ let addPriorityFeeInstruction;
195
+ // If there are createAtaInstructions, then token is involved and we need to add a priority fee instruction
196
+ if (!this._priorityFee || this._priorityFee === Number(0)) {
197
+ this._instructionsData = [...createAtaInstructions, ...sendInstructions];
198
+ }
199
+ else if (createAtaInstructions.length !== 0 ||
200
+ sendInstructions.some((instruction) => instruction.type === constants_1.InstructionBuilderTypes.TokenTransfer)) {
201
+ addPriorityFeeInstruction = {
202
+ type: constants_1.InstructionBuilderTypes.SetPriorityFee,
203
+ params: {
204
+ fee: this._priorityFee,
205
+ },
206
+ };
207
+ this._instructionsData = [addPriorityFeeInstruction, ...createAtaInstructions, ...sendInstructions];
208
+ }
209
+ return await super.buildImplementation();
210
+ }
211
+ }
212
+ exports.TransferBuilderV2 = TransferBuilderV2;
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyVjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zZmVyQnVpbGRlclYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDZEQUEwRDtBQUMxRCxtREFBOEU7QUFFOUUsbUNBT2lCO0FBRWpCLG9EQUE0QjtBQUU1QiwyQ0FBc0Q7QUFDdEQsb0RBQXVCO0FBV3ZCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFM0QsTUFBYSxpQkFBa0IsU0FBUSx1Q0FBa0I7SUFHdkQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFJckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sbUJBQW1CLEdBQWEsV0FBVyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDUixPQUFPLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVM7b0JBQzdDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTTtpQkFDMUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sbUJBQW1CLEdBQWtCLFdBQVcsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1IsT0FBTyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUM3QyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU07b0JBQ3pDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUztpQkFDaEQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztnQkFDckYsTUFBTSxrQkFBa0IsR0FBWSxXQUFXLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3pCLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWTtvQkFDcEQsU0FBUyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUM5QyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFVBQVU7aUJBQ2pELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxZQUFvQjtRQUMzQixJQUFBLHVCQUFlLEVBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLFVBQXNCO1FBQ3pCLElBQUEsdUJBQWUsRUFBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBQSxxQkFBYSxFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQ0FBa0MsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFDNUUsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdCQUFnQixVQUFVLENBQUMsTUFBTSwwQkFBMEIsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3BILENBQUM7YUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ2hHLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IsZ0JBQWdCLFVBQVUsQ0FBQyxNQUFNLHlCQUF5QixNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FDcEYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw0QkFBNEIsQ0FBQyxTQUFrQztRQUM3RCxJQUFBLDRCQUFvQixFQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFBLGdDQUF3QixFQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLFlBQVksQ0FBQztRQUNqQixJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywyQkFBMkIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUNELElBQUEsMkJBQW1CLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUEsZ0JBQU0sRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9EQUFvRCxDQUFDLENBQUM7UUFDM0UsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFzQixFQUFxQyxFQUFFO1lBQ3ZGLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLElBQUksR0FBRyxJQUFBLGdDQUF3QixFQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxZQUFvQixDQUFDO2dCQUN6QixJQUFJLFNBQWlCLENBQUM7Z0JBQ3RCLElBQUksU0FBNkIsQ0FBQztnQkFDbEMsSUFBSSxRQUE0QixDQUFDO2dCQUNqQyxJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN4RixTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztvQkFDakMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZDLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO29CQUNwQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsQ0FBQztxQkFBTSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDdEIsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ2pDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUM5QixTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RixDQUFDO2dCQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzNHLE9BQU87b0JBQ0wsSUFBSSxFQUFFLG1DQUF1QixDQUFDLGFBQWE7b0JBQzNDLE1BQU0sRUFBRTt3QkFDTixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87d0JBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTzt3QkFDN0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO3dCQUN6QixTQUFTLEVBQUUsU0FBUzt3QkFDcEIsYUFBYSxFQUFFLGFBQWE7d0JBQzVCLFlBQVksRUFBRSxZQUFZO3dCQUMxQixTQUFTLEVBQUUsU0FBUzt3QkFDcEIsYUFBYSxFQUFFLFFBQVE7cUJBQ3hCO2lCQUNGLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTztvQkFDTCxJQUFJLEVBQUUsbUNBQXVCLENBQUMsUUFBUTtvQkFDdEMsTUFBTSxFQUFFO3dCQUNOLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPO3dCQUM3QixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07cUJBQzFCO2lCQUNGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE1BQU0scUJBQXFCLEdBQUcsZ0JBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBa0MsRUFBRSxFQUFFO1lBQ25HLE9BQU8sU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQzdDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBa0MsRUFBb0IsRUFBRTtZQUN2RixNQUFNLElBQUksR0FBRyxJQUFBLGdDQUF3QixFQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzRCxJQUFJLFlBQW9CLENBQUM7WUFDekIsSUFBSSxTQUFpQixDQUFDO1lBQ3RCLElBQUksU0FBNkIsQ0FBQztZQUNsQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsRCxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDaEMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUNELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxJQUFBLHdDQUFnQyxFQUNsRSxZQUFZLEVBQ1osU0FBUyxDQUFDLFlBQVksRUFDdEIsS0FBSyxFQUNMLFNBQVMsQ0FDVixDQUFDO1lBQ0YsT0FBTztnQkFDTCxJQUFJLEVBQUUsbUNBQXVCLENBQUMsNEJBQTRCO2dCQUMxRCxNQUFNLEVBQUU7b0JBQ04sWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO29CQUNwQyxTQUFTLEVBQUUsU0FBUztvQkFDcEIsV0FBVyxFQUFFLFlBQVk7b0JBQ3pCLFVBQVUsRUFBRSxxQkFBcUI7b0JBQ2pDLDBFQUEwRTtvQkFDMUUsdUVBQXVFO29CQUN2RSwyQ0FBMkM7b0JBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPO29CQUM1QyxTQUFTLEVBQUUsU0FBUztpQkFDckI7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUkseUJBQXlDLENBQUM7UUFDOUMsMkdBQTJHO1FBQzNHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLElBQ0wscUJBQXFCLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDbEMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLG1DQUF1QixDQUFDLGFBQWEsQ0FBQyxFQUNsRyxDQUFDO1lBQ0QseUJBQXlCLEdBQUc7Z0JBQzFCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyxjQUFjO2dCQUM1QyxNQUFNLEVBQUU7b0JBQ04sR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUN2QjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLHFCQUFxQixFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBRUQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQXRORCw4Q0FzTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyxcbiAgZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lLFxuICBpc1ZhbGlkQW1vdW50LFxuICB2YWxpZGF0ZUFkZHJlc3MsXG4gIHZhbGlkYXRlTWludEFkZHJlc3MsXG4gIHZhbGlkYXRlT3duZXJBZGRyZXNzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEF0YUluaXQsIFRva2VuQXNzb2NpYXRlUmVjaXBpZW50LCBUb2tlblRyYW5zZmVyLCBUcmFuc2ZlciwgU2V0UHJpb3JpdHlGZWUgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUGFyYW1zIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICB0b2tlbkFkZHJlc3M/OiBzdHJpbmc7XG4gIHByb2dyYW1JZD86IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlcz86IG51bWJlcjtcbn1cblxuY29uc3QgVU5TSUdORURfQklHSU5UX01BWCA9IEJpZ0ludCgnMTg0NDY3NDQwNzM3MDk1NTE2MTUnKTtcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlclYyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfc2VuZFBhcmFtczogU2VuZFBhcmFtc1tdID0gW107XG4gIHByaXZhdGUgX2NyZWF0ZUF0YVBhcmFtczogVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnRbXTtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NyZWF0ZUF0YVBhcmFtcyA9IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2Zlcikge1xuICAgICAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uOiBUcmFuc2ZlciA9IGluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLnNlbmRlcih0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyk7XG4gICAgICAgIHRoaXMuc2VuZCh7XG4gICAgICAgICAgYWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2Zlcikge1xuICAgICAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uOiBUb2tlblRyYW5zZmVyID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuc2VuZGVyKHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzKTtcbiAgICAgICAgdGhpcy5zZW5kKHtcbiAgICAgICAgICBhZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lOiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50KSB7XG4gICAgICAgIGNvbnN0IGF0YUluaXRJbnN0cnVjdGlvbjogQXRhSW5pdCA9IGluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLl9jcmVhdGVBdGFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgb3duZXJBZGRyZXNzOiBhdGFJbml0SW5zdHJ1Y3Rpb24ucGFyYW1zLm93bmVyQWRkcmVzcyxcbiAgICAgICAgICB0b2tlbk5hbWU6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgIGF0YUFkZHJlc3M6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMuYXRhQWRkcmVzcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGZlZVBheWVyXG4gICAqIEBwYXJhbSBwYXllckFkZHJlc3NcbiAgICovXG4gIGZlZVBheWVyKHBheWVyQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdmFsaWRhdGVBZGRyZXNzKHBheWVyQWRkcmVzcywgJ2FkZHJlc3MnKTtcbiAgICB0aGlzLl9mZWVQYXllciA9IHBheWVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IGEgdHJhbnNmZXJcbiAgICpcbiAgICogQHBhcmFtIHtTZW5kUGFyYW1zfSBzZW5kUGFyYW1zIC0gc2VuZFBhcmFtc1xuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmQoc2VuZFBhcmFtczogU2VuZFBhcmFtcyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyhzZW5kUGFyYW1zLmFkZHJlc3MsICdhZGRyZXNzJyk7XG4gICAgaWYgKCFzZW5kUGFyYW1zLmFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChzZW5kUGFyYW1zLmFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIHNlbmRQYXJhbXMuYW1vdW50KTtcbiAgICB9XG4gICAgaWYgKHNlbmRQYXJhbXMudG9rZW5OYW1lICYmIEJpZ0ludChzZW5kUGFyYW1zLmFtb3VudCkgPiBVTlNJR05FRF9CSUdJTlRfTUFYKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBpbnB1dCBhbW91bnQgJHtzZW5kUGFyYW1zLmFtb3VudH0gZXhjZWVkcyBiaWcgaW50IGxpbWl0ICR7VU5TSUdORURfQklHSU5UX01BWH1gKTtcbiAgICB9IGVsc2UgaWYgKCFzZW5kUGFyYW1zLnRva2VuTmFtZSAmJiBCaWdJbnQoc2VuZFBhcmFtcy5hbW91bnQpID4gQmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYGlucHV0IGFtb3VudCAke3NlbmRQYXJhbXMuYW1vdW50fSBleGNlZWRzIG1heCBzYWZlIGludCAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2VuZFBhcmFtcy5wdXNoKHNlbmRQYXJhbXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7VG9rZW5Bc3NvY2lhdGVSZWNpcGllbnR9IHJlY2lwaWVudCAtIHJlY2lwaWVudCBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50IGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWNpcGllbnQub3duZXJBZGRyZXNzIC0gb3duZXIgb2YgdGhlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVjaXBpZW50LnRva2VuTmFtZSAtIG5hbWUgb2YgdGhlIHRva2VuIHRoYXQgaXMgaW50ZW5kZWQgdG8gYXNzb2NpYXRlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudChyZWNpcGllbnQ6IFRva2VuQXNzb2NpYXRlUmVjaXBpZW50KTogdGhpcyB7XG4gICAgdmFsaWRhdGVPd25lckFkZHJlc3MocmVjaXBpZW50Lm93bmVyQWRkcmVzcyk7XG4gICAgY29uc3QgdG9rZW4gPSBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUocmVjaXBpZW50LnRva2VuTmFtZSk7XG4gICAgbGV0IHRva2VuQWRkcmVzcztcbiAgICBpZiAocmVjaXBpZW50LnRva2VuQWRkcmVzcykge1xuICAgICAgdG9rZW5BZGRyZXNzID0gcmVjaXBpZW50LnRva2VuQWRkcmVzcztcbiAgICB9IGVsc2UgaWYgKHRva2VuKSB7XG4gICAgICB0b2tlbkFkZHJlc3MgPSB0b2tlbi50b2tlbkFkZHJlc3M7XG4gICAgfVxuXG4gICAgaWYgKCF0b2tlbkFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdG9rZW4gbmFtZSwgZ290OiAnICsgcmVjaXBpZW50LnRva2VuTmFtZSk7XG4gICAgfVxuICAgIHZhbGlkYXRlTWludEFkZHJlc3ModG9rZW5BZGRyZXNzKTtcblxuICAgIHRoaXMuX2NyZWF0ZUF0YVBhcmFtcy5wdXNoKHJlY2lwaWVudCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsICdTZW5kZXIgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGNvbnN0IHNlbmRJbnN0cnVjdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3NlbmRQYXJhbXMubWFwKGFzeW5jIChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zKTogUHJvbWlzZTxUcmFuc2ZlciB8IFRva2VuVHJhbnNmZXI+ID0+IHtcbiAgICAgICAgaWYgKHNlbmRQYXJhbXMudG9rZW5OYW1lKSB7XG4gICAgICAgICAgY29uc3QgY29pbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShzZW5kUGFyYW1zLnRva2VuTmFtZSk7XG4gICAgICAgICAgbGV0IHRva2VuQWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgIGxldCB0b2tlbk5hbWU6IHN0cmluZztcbiAgICAgICAgICBsZXQgcHJvZ3JhbUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGRlY2ltYWxzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHNlbmRQYXJhbXMudG9rZW5BZGRyZXNzICYmIHNlbmRQYXJhbXMucHJvZ3JhbUlkICYmIHNlbmRQYXJhbXMuZGVjaW1hbFBsYWNlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbk5hbWUgPSBzZW5kUGFyYW1zLnRva2VuTmFtZTtcbiAgICAgICAgICAgIHRva2VuQWRkcmVzcyA9IHNlbmRQYXJhbXMudG9rZW5BZGRyZXNzO1xuICAgICAgICAgICAgZGVjaW1hbHMgPSBzZW5kUGFyYW1zLmRlY2ltYWxQbGFjZXM7XG4gICAgICAgICAgICBwcm9ncmFtSWQgPSBzZW5kUGFyYW1zLnByb2dyYW1JZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvaW4pIHtcbiAgICAgICAgICAgIHRva2VuTmFtZSA9IGNvaW4ubmFtZTtcbiAgICAgICAgICAgIHRva2VuQWRkcmVzcyA9IGNvaW4udG9rZW5BZGRyZXNzO1xuICAgICAgICAgICAgZGVjaW1hbHMgPSBjb2luLmRlY2ltYWxQbGFjZXM7XG4gICAgICAgICAgICBwcm9ncmFtSWQgPSBjb2luLnByb2dyYW1JZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZXJtaW5lIHRva2VuIGluZm9ybWF0aW9uIGZvciAke3NlbmRQYXJhbXMudG9rZW5OYW1lfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHNvdXJjZUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyh0b2tlbkFkZHJlc3MsIHRoaXMuX3NlbmRlciwgZmFsc2UsIHByb2dyYW1JZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRva2VuVHJhbnNmZXIsXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgZnJvbUFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgICAgICAgdG9BZGRyZXNzOiBzZW5kUGFyYW1zLmFkZHJlc3MsXG4gICAgICAgICAgICAgIGFtb3VudDogc2VuZFBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICAgIHRva2VuTmFtZTogdG9rZW5OYW1lLFxuICAgICAgICAgICAgICBzb3VyY2VBZGRyZXNzOiBzb3VyY2VBZGRyZXNzLFxuICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHRva2VuQWRkcmVzcyxcbiAgICAgICAgICAgICAgcHJvZ3JhbUlkOiBwcm9ncmFtSWQsXG4gICAgICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IGRlY2ltYWxzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcixcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICBmcm9tQWRkcmVzczogdGhpcy5fc2VuZGVyLFxuICAgICAgICAgICAgICB0b0FkZHJlc3M6IHNlbmRQYXJhbXMuYWRkcmVzcyxcbiAgICAgICAgICAgICAgYW1vdW50OiBzZW5kUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHVuaXF1ZUNyZWF0ZUF0YVBhcmFtcyA9IF8udW5pcUJ5KHRoaXMuX2NyZWF0ZUF0YVBhcmFtcywgKHJlY2lwaWVudDogVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnQpID0+IHtcbiAgICAgIHJldHVybiByZWNpcGllbnQub3duZXJBZGRyZXNzICsgcmVjaXBpZW50LnRva2VuTmFtZTtcbiAgICB9KTtcbiAgICBjb25zdCBjcmVhdGVBdGFJbnN0cnVjdGlvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVuaXF1ZUNyZWF0ZUF0YVBhcmFtcy5tYXAoYXN5bmMgKHJlY2lwaWVudDogVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnQpOiBQcm9taXNlPEF0YUluaXQ+ID0+IHtcbiAgICAgICAgY29uc3QgY29pbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICAgICAgbGV0IHRva2VuQWRkcmVzczogc3RyaW5nO1xuICAgICAgICBsZXQgdG9rZW5OYW1lOiBzdHJpbmc7XG4gICAgICAgIGxldCBwcm9ncmFtSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlY2lwaWVudC50b2tlbkFkZHJlc3MgJiYgcmVjaXBpZW50LnByb2dyYW1JZCkge1xuICAgICAgICAgIHRva2VuTmFtZSA9IHJlY2lwaWVudC50b2tlbk5hbWU7XG4gICAgICAgICAgdG9rZW5BZGRyZXNzID0gcmVjaXBpZW50LnRva2VuQWRkcmVzcztcbiAgICAgICAgICBwcm9ncmFtSWQgPSByZWNpcGllbnQucHJvZ3JhbUlkO1xuICAgICAgICB9IGVsc2UgaWYgKGNvaW4pIHtcbiAgICAgICAgICB0b2tlbk5hbWUgPSBjb2luLm5hbWU7XG4gICAgICAgICAgdG9rZW5BZGRyZXNzID0gY29pbi50b2tlbkFkZHJlc3M7XG4gICAgICAgICAgcHJvZ3JhbUlkID0gY29pbi5wcm9ncmFtSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZXJtaW5lIHRva2VuIGluZm9ybWF0aW9uIGZvciAke3JlY2lwaWVudC50b2tlbk5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjaXBpZW50VG9rZW5BZGRyZXNzID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgICAgdG9rZW5BZGRyZXNzLFxuICAgICAgICAgIHJlY2lwaWVudC5vd25lckFkZHJlc3MsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgcHJvZ3JhbUlkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG93bmVyQWRkcmVzczogcmVjaXBpZW50Lm93bmVyQWRkcmVzcyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdG9rZW5OYW1lLFxuICAgICAgICAgICAgbWludEFkZHJlc3M6IHRva2VuQWRkcmVzcyxcbiAgICAgICAgICAgIGF0YUFkZHJlc3M6IHJlY2lwaWVudFRva2VuQWRkcmVzcyxcbiAgICAgICAgICAgIC8vIE1hdGNoIHRyYW5zYWN0aW9uQnVpbGRlciBmZWUgcGF5ZXIgc2VsZWN0aW9uOiB3aGVuIGEgZGlzdGluY3QgZmVlIHBheWVyXG4gICAgICAgICAgICAvLyBpcyBzZXQgKGUuZy4gZ2FzIHRhbmsgb24gY29uc29saWRhdGlvbiksIGl0IG11c3QgZnVuZCBBVEEgcmVudCDigJQgdGhlXG4gICAgICAgICAgICAvLyB0b2tlbiBzZW5kZXIvYXV0aG9yaXR5IG9mdGVuIGhhcyBubyBTT0wuXG4gICAgICAgICAgICBwYXllckFkZHJlc3M6IHRoaXMuX2ZlZVBheWVyID8/IHRoaXMuX3NlbmRlcixcbiAgICAgICAgICAgIHByb2dyYW1JZDogcHJvZ3JhbUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBsZXQgYWRkUHJpb3JpdHlGZWVJbnN0cnVjdGlvbjogU2V0UHJpb3JpdHlGZWU7XG4gICAgLy8gSWYgdGhlcmUgYXJlIGNyZWF0ZUF0YUluc3RydWN0aW9ucywgdGhlbiB0b2tlbiBpcyBpbnZvbHZlZCBhbmQgd2UgbmVlZCB0byBhZGQgYSBwcmlvcml0eSBmZWUgaW5zdHJ1Y3Rpb25cbiAgICBpZiAoIXRoaXMuX3ByaW9yaXR5RmVlIHx8IHRoaXMuX3ByaW9yaXR5RmVlID09PSBOdW1iZXIoMCkpIHtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbLi4uY3JlYXRlQXRhSW5zdHJ1Y3Rpb25zLCAuLi5zZW5kSW5zdHJ1Y3Rpb25zXTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY3JlYXRlQXRhSW5zdHJ1Y3Rpb25zLmxlbmd0aCAhPT0gMCB8fFxuICAgICAgc2VuZEluc3RydWN0aW9ucy5zb21lKChpbnN0cnVjdGlvbikgPT4gaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcilcbiAgICApIHtcbiAgICAgIGFkZFByaW9yaXR5RmVlSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlNldFByaW9yaXR5RmVlLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmZWU6IHRoaXMuX3ByaW9yaXR5RmVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBbYWRkUHJpb3JpdHlGZWVJbnN0cnVjdGlvbiwgLi4uY3JlYXRlQXRhSW5zdHJ1Y3Rpb25zLCAuLi5zZW5kSW5zdHJ1Y3Rpb25zXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=
@@ -197,4 +197,9 @@ export declare function validateOwnerAddress(ownerAddress: string): void;
197
197
  * @returns True if the instruction is a SolInstruction (has programId field)
198
198
  */
199
199
  export declare function isSolLegacyInstruction(instruction: SolInstruction | SolVersionedInstruction): instruction is SolInstruction;
200
+ /**
201
+ * Token-2022 transfer fee: min(amount * basisPoints / 10000, maximumFee), in raw base units.
202
+ * All math in BigInt to avoid precision loss.
203
+ */
204
+ export declare function computeTransferFee(amount: string, basisPoints: number, maximumFee: string): string;
200
205
  //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"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"}